{"version":3,"file":"kendo.dataviz.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendodataviz","js","this","breakpoints","EVENT","defaultBreakpoints","small","medium","large","mediaQuery","query","Object","assign","kendo","defaults","mediaQueryList","window","matchMedia","onEnterCallbacks","onLeaveCallbacks","onChangeHandlers","kendoMediaQuery","onChangeHandler","ev","forEach","cb","matches","addEventListener","onChange","push","onEnter","media","MediaQueryListEvent","onLeave","destroy","removeEventListener","createMediaQuery","packageMetadata","name","productName","productCodes","publishDate","version","replace","licensingDocsUrl","$","undefined$1","Template","cultures","extend","each","isArray","Array","noop","math","Math","JSON","support","percentRegExp","formatRegExp","boxShadowRegExp","numberRegExp","MONTH","HOUR","ZONE","WEEKDAY","QUARTER","DATE_FIELD_MAP","G","y","q","Q","M","L","d","E","c","e","h","H","k","K","m","s","a","t","x","X","z","Z","NAME_TYPES","month","type","minLength","standAlone","quarter","weekday","dayperiod","era","FUNCTION","STRING","NUMBER","OBJECT","NULL","BOOLEAN","UNDEFINED","PREFIX","ARIA_LABELLEDBY","ARIA_LABEL","getterCache","setterCache","slice","cssPropertiesNames","noDepricateExtend","src","copyIsArray","copy","options","clone","target","arguments","i","length","deep","jQuery","isPlainObject","Class","proto","member","fn","base","that","subclass","init","apply","prototype","constructor","_initOptions","deepExtend","isPresent","value","isBlank","isString","isNumeric","isNaN","parseFloat","isDate","getTime","isFunction","preventDefault","_defaultPrevented","isDefaultPrevented","Observable","_events","bind","eventName","handlers","one","idx","original","handler","eventNames","handlersIsFunction","unbind","first","unshift","trigger","events","sender","call","splice","compilePart","part","stringPart","split","join","charAt","rest","substring","argumentNameRegExp","encodeRegExp","escapedCurlyRegExp","curlyRegExp","escapedSharpRegExp","sharpRegExp","zeros","pad","number","digits","end","getHiddenDimensions","element","includeMargin","width","height","css","appendTo","outerWidth","outerHeight","remove","wrapResize","autosize","shouldCorrectWidth","_outerWidth","_outerHeight","parent","wrapper","closest","calculateFromHidden","hasClass","visible","is","wrapperStyle","style","elementHeight","display","position","test","add","show","hide","destination","deepExtendOne","source","property","propValue","propType","propInit","destProp","ObservableArray","data","LazyObservableArray","DataSource","HierarchicalDataSource","RegExp","ArrayBuffer","HTMLElement","Date","testRx","agent","rxs","dflt","rx","hasOwnProperty","toCamelCase","str","strMatch","g1","toUpperCase","getComputedStyles","properties","computedStyle","styles","document","defaultView","getComputedStyle","getPropertyValue","currentStyle","size","paramName","useWithBlock","render","template","html","compile","parts","settings","argumentName","match","functionBody","Function","_slotCount","floor","debugTemplates","Error","format","console","warn","gap","indent","rep","escapable","meta","toString","quote","string","lastIndex","charCodeAt","key","holder","v","partial","mind","toJSON","isFinite","String","valueOf","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","Number","Boolean","stringify","replacer","space","dateFormatRegExp","standardFormatRegExp","literalRegExp","commaRegExp","EMPTY","POINT","SHARP","ZERO","EN","objectToString","findCulture","culture","numberFormat","getCulture","current","pattern","decimals","groupSize","percent","symbol","currency","abbr","calendars","standard","days","names","namesAbbr","namesShort","months","AM","PM","patterns","D","F","g","T","u","Y","firstDay","twoDigitYearMax","cultureName","indexOf","calendar","groupInteger","start","integer","integerLength","newGroupSize","decimalIndex","groupSizes","shift","reverse","round","precision","negative","toFixed","min","fmt","date","minutes","result","sign","getDate","getDay","getMonth","getFullYear","getHours","getMinutes","getSeconds","getMilliseconds","getTimezoneOffset","abs","formatDate","isCurrency","isPercent","customPrecision","formatAndPrecision","fraction","ch","hasGroup","hasNegativeFormat","sharpIndex","zeroIndex","hasZero","hasSharp","currencyIndex","decimal","literals","replacement","toLocaleString","exec","toLowerCase","toExponential","quoteChar","literal","lastIndexOf","rounded","max","formatNumber","values","index","placeholderFormat","parseInt","_extractFormat","_activeElement","activeElement","documentElement","_round","nonBreakingSpaceRegExp","spaceRegExp","exponentRegExp","shortTimeZoneRegExp","longTimeZoneRegExp","dateRegExp","offsetRegExp","FORMATS_SEQUENCE","STANDARD_FORMATS","exact3","outOfRange","designatorPredicate","designator","mapDesignators","designators","map","lowerArray","array","lowerLocalInfo","localInfo","newLocalInfo","parseExact","strict","shouldUnpadZeros","count","pmHour","UTC","amDesignators","pmDesignators","hoursOffset","minutesOffset","lookAhead","longestDesignatorLength","from","sort","b","getNumber","rg","valueIdx","isInteger","unpadZero","substr","getIndexByName","lower","subLength","nameLength","subValue","matchLength","matchIdx","checkLiteral","year","day","hours","seconds","milliseconds","defaultYear","_lowerDays","_lowerMonths","setHours","adjustDST","setFullYear","internalParseDate","formats","tzoffset","offset","parseMicrosoftFormatOffset","timezone","convert","cultureFormats","formatIdx","concat","getDefaultFormats","parseDate","parseExactDate","percentSymbol","_scrollbar","scrollbar","refresh","div","createElement","cssText","innerHTML","body","appendChild","offsetWidth","scrollWidth","removeChild","isRtl","table","tbodyInnerHtml","touch","docStyle","transitions","transforms","elementProto","hasHW3D","WebKitCSSMatrix","cssFlexbox","prefix","hasTransitions","lowPrefix","event","devicePixelRatio","screenWidth","screen","availWidth","innerWidth","screenHeight","availHeight","innerHeight","detectOS","ua","minorVersion","os","notAndroidPhone","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","webkit","navigator","device","browser","majorVersion","flatVersion","cordova","PhoneGap","appMode","standalone","location","protocol","mobileOS","userAgent","wpDevicePixelRatio","hasNativeScrolling","delayedClick","attr","mouseAndTouchPresent","detectBrowser","edge","safari","opera","msie","mozilla","documentMode","chromiumEdge","detectClipboardAccess","commands","queryCommandSupported","cut","paste","clipboard","zoomLevel","ie11WidthCorrection","docEl","scrollHeight","clientHeight","clientWidth","top","cssClass","docElement","addClass","eventCapture","input","placeholder","propertyChangeEvent","types","setAttribute","cssFloat","stableSort","sorted","field","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","selector","nodeList","querySelectorAll","parentNode","pushState","history","hashChange","customElements","mobileChrome","crios","msPointers","MSPointerEvent","pointers","PointerEvent","kineticScrollNeeded","effects","prepareAnimationOptions","duration","complete","teardown","completeCallback","animate","instance","queue","promise","enabled","Element","dequeue","disable","promiseShim","enable","animatedPromise","kendoStop","clearQueue","gotoEnd","stop","kendoAnimate","kendoAddClass","classes","toggleClass","kendoRemoveClass","kendoToggleClass","toggle","ampRegExp","ltRegExp","quoteRegExp","aposRegExp","gtRegExp","eventTarget","touches","originalEvent","changedTouches","elementFromPoint","clientX","clientY","callback","on","mousedown","mouseup","mousemove","mousecancel","click","resize","localUrlRe","widgets","_widgetRegisteredCallbacks","ui","fx","mobile","dataviz","drawing","spreadsheet","messages","keys","INSERT","DELETE","BACKSPACE","TAB","ENTER","ESC","LEFT","UP","RIGHT","DOWN","END","HOME","SPACEBAR","PAGEUP","PAGEDOWN","F2","F10","F12","NUMPAD_PLUS","NUMPAD_MINUS","NUMPAD_DOT","ns","getShadows","shadow","radius","blur","left","right","bottom","wrap","autowidth","percentage","windowOuterWidth","removeClass","percentWidth","percentHeight","forceDimensions","isScrollable","dataset","className","overflow","scrollLeft","el","mozila","browserVersion","obj","toHyphens","getOffset","positioned","pageYOffset","pageXOffset","parseEffects","directions","down","up","in","out","htmlEncode","unescape","decodeURIComponent","error","_","m1","m2","fromCharCode","isLocalUrl","url","expr","expression","safe","members","wrapExpression","exprToArray","filter","getter","fields","setter","innerSetter","val","prop","props","pop","accessor","get","set","guid","random","id","chars","roleSelector","role","directiveSelector","directives","selectors","triggeredByInput","tagName","onWidgetRegistered","len","logToConsole","message","suppressLog","log","Widget","KendoLicensing","validatePackage","_showWatermarkOverlay","addWatermarkOverlay","dataSource","componentTypes","componentType","_hasBindingTarget","kendoBindingTarget","_tabindex","TABINDEX","tabindex","removeAttr","setOptions","_clearCssClasses","_setEvents","_applyCssClasses","force","getSize","currentSize","_size","_resize","dimensions","setSize","removeData","_destroy","validFill","widgetName","protoOptions","__proto__","cssProperties","propertyDictionary","_altname","getValidClass","widget","propName","fillMode","fill","_ariaLabel","labelId","inputElm","inputId","labelElm","ariaLabel","ariaLabelledBy","_generateLabelId","newOptions","currentOptions","themeColor","label","DataBoundWidget","dataItems","flatView","domElement","offsetHeight","notify","templateRegExp","jsonRegExp","jsonFormatRegExp","dashRegExp","parseOption","option","getAttribute","parse","parseOptions","containmentComparer","contains","resizableWidget","inArray","initWidget","roles","fullPath","widgetKeyRegExp","nodeType","widgetKey","isEmptyObject","rolesFromNamespaces","namespaces","find","addBack","widgetsArray","makeArray","widgetInstance","progress","container","leftRight","webkitCorrection","containerScrollLeft","mask","scrollTop","opacity","loading","prependTo","plugin","register","widgetEntry","args","method","ContainerNullObject","nullObject","MobileWidget","autoApplyNS","kendoDestroy","view","viewElement","viewHasNativeScrolling","useNativeScrolling","eq","focusable","isTabIndexNotNaN","nodeName","disabled","href","pseudos","parents","themes","views","touchScroller","elements","useNative","Scroller","kendoMobileScroller","suites","elementData","onResize","setTimeout","unbindResize","off","attrValue","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","kendoFocusable","MOUSE_EVENTS","MouseEventNormalizer","setupMouseMute","mouseTrap","bustClick","captureMouse","stopPropagation","muteMouse","clearTimeout","mouseTrapTimeoutID","unMuteMouse","eventMap","move","cancel","MSPointerEnter","MSPointerLeave","orig","fix","special","delegateType","bindType","handle","ret","related","relatedTarget","handleObj","origType","getEventMap","eventRegEx","applyEventMap","keyDownHandler","kendoKeydown","preventKendoKeydown","kendoJQuery","context","rootjQuery","search","touchstart","touchend","keyDownCallBack","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","Sun","Mon","Tue","Wed","Thu","Fri","Sat","ruleToDate","rule","targetDay","ourDay","time","cache","getUTCDay","setUTCDate","findRule","utcTime","rules","zone","grep","to","zoneAndRule","zones","zoneRules","until","findZone","info","fromOffset","toOffset","diff","tempToOffset","fromLocalOffset","toLocalOffset","toLocalDate","MS_PER_MINUTE","MS_PER_DAY","setDayOfWeek","dir","setDate","dayOfWeek","firstDayOfMonth","calcWeekInYear","weekStartDay","firstWeekInYear","newDate","addDays","moveDateToWeekStart","diffInMS","toInvariantTime","setTime","ignoreDST","difference","today","staticDate","addYear","currentDate","addLiteral","lastPart","isHour12","startsWith","text","searchString","isInDateRange","msValue","msMin","msMax","isInTimeRange","isToday","nextDay","previousDay","toUtcTime","MS_PER_HOUR","splitDateFormat","specifier","patternLength","formatLength","nameType","datePattern","replaceAll","hour12","dateFieldName","dateFields","dateFormatNames","lastDayOfMonth","last","timeOffset","weekInYear","prevWeekDate","nextWeekDate","weekNumber","firstDayOfYear","lastDayOfYear","nextYear","previousYear","stripWhitespace","createNodeIterator","iterator","NodeFilter","SHOW_TEXT","node","FILTER_ACCEPT","FILTER_REJECT","nextNode","referenceNode","textContent","trim","childNodes","child","nodeValue","animationFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","animationQueue","queueAnimation","runNextAnimation","parseQueryStringParams","params","paramParts","elementUnderCursor","client","wheelDeltaY","jQueryEvent","delta","deltaY","wheelDelta","detail","axis","VERTICAL_AXIS","throttle","delay","timeout","lastExecTime","throttled","elapsed","caret","rangeElement","isPosition","selectionStart","focus","setSelectionRange","selectionEnd","selection","createTextRange","collapse","moveStart","moveEnd","select","rangeDuplicated","duplicate","moveToBookmark","createRange","getBookmark","setEndPoint","antiForgeryTokens","tokens","csrf_token","csrf_param","cycleForm","form","firstElement","lastElement","keyCode","shiftKey","focusElement","scrollTopPositions","scrollableParents","parentsUntil","setActive","focusNextElement","focussable","getWidgetFocusableElement","nextFocusable","addAttribute","attribute","removeAttribute","toggleAttribute","matchesMedia","_bootstrapToMedia","bootstrapMedia","xs","sm","md","lg","xl","fileGroupMap","audio","video","image","txt","presentation","programming","pdf","config","zip","getFileGroup","extension","withPrefix","fileTypeMap","groups","getFileSizeMessage","pow","selectorFromClasses","themeColorValues","fillValues","shapeValues","sizeValues","roundedValues","positionModeValues","resizeValues","overflowValues","layoutFlowValues","defaultValues","registerCssClass","shorthand","registerCssClasses","arr","fillModeValues","registerValues","j","newValues","currentValue","dict","widgetValues","validValue","widgetProperties","overridePrefix","registerPrefix","propertyToCssClassMap","getValidCssClass","applyStylesFromKendoAttributes","styleProps","styleProp","currentElement","$currentElement","kendoAttr","whenAll","resolveValues","remaining","deferred","Deferred","failed","rejectContexts","rejectValues","resolveContexts","updateFunc","contexts","notifyWith","done","fail","resolveWith","postToProxy","dataURI","fileName","proxyURL","proxyTarget","action","contentType","base64","submit","fileSaver","downloadAttribute","saveAsBlob","blob","atob","Uint8Array","Blob","buffer","msSaveBlob","saveAsDataURI","URL","createObjectURL","download","createEvent","initMouseEvent","dispatchEvent","revokeObjectURL","saveAs","save","forceProxy","proxyModelSetters","observable","defineProperty","dirty","getSeriesColors","series","colors","item","isElement","HTMLDocument","setDefaults","path","curr","DEBUG_KENDO_TEMPLATES","class2type","_i","setScriptKey","showBanner","scaleProperties","scale","scalex","scaley","scale3d","translateProperties","translate","translatex","translatey","translate3d","hasZoom","zoom","matrix3dRegExp","cssParamsRegExp","translateXRegExp","oldEffectsRegExp","singleEffectRegExp","unitRegExp","transformProps","transform2d","transform2units","rotate","skew","cssPrefix","PX","AUTO","WIDTH","HEIGHT","HIDDEN","ORIGIN","ABORT_ID","OVERFLOW","TRANSLATE","POSITION","COMPLETE_CALLBACK","TRANSITION","TRANSFORM","BACKFACE","PERSPECTIVE","DEFAULT_PERSPECTIVE","TRANSFORM_PERSPECTIVE","transition","vertical","modifier","horizontal","stopQueue","animationProperty","transformValue","step","elem","now","curProxy","cur","parseInteger","parseCSS","strip3DTransforms","normalizeCSS","lowerKey","isTransformed","transformation","cssValues","transform","computed","atan2","exclusive","ease","mirror","redirectedEffect","effect","$1","$2","direction","effectBody","timeoutID","oldKeys","stopTransitionCalled","stopTransition","speeds","merge","acc","propertyName","uniqueSort","unique","taskKeys","retainPosition","EffectSet","restore","run","jdx","children","childrenLength","setReverse","addRestoreProperties","prepare","effectName","reset","setup","resolve","restoreCallback","effectClass","effectSet","parsedEffects","capitalize","useTransition","multiple","single","isFixed","originalPosition","dX","dY","marginLeft","marginTop","Effect","_direction","_additionalEffects","_reverse","play","additional","_duration","compositeRun","_complete","shouldHide","word","createEffect","definition","opt1","opt2","opt3","theDirection","FOUR_DIRECTIONS","IN_OUT","createToggleEffect","defaultStart","defaultEnd","startValue","_startValue","endValue","_endValue","_shouldHide","startDataValue","divisor","tmp","previous","previousDivisor","slideIn","margin","origin","setLength","oldLength","realLength","TRANSFER_START_STATE","outerBox","box","innerBox","currentScale","fillScale","transformOrigin","CLIPS","ROTATIONS","clipInHalf","_container","rotation","zIndex","_clipInHalf","clip","append","face","_face","temporary","back","temp","reverseDirection","faceClone","backClone","staticPage","turningPage","transformStyle","RESTORE_OVERFLOW","_before","_after","transitionClass","_previous","_transitionClass","beforeTransition","afterTransition","_both","_element","_containerClass","containerClass","completeProxy","isAbsolute","both","Animation","_tickProxy","_tick","_started","tick","onEnd","onCancel","Transition","timePassed","startDate","moveTo","movable","initial","_easeProxy","moveAxis","easeOutExpo","easeOutBack","inner","outer","fitScale","CHANGE","SAME","BROKEN_BACK_NAV","hashStrip","absoluteURL","pathPrefix","host","hashDelimiter","bang","locationHash","stripRoot","root","HistoryAdapter","forward","replaceLocation","PushStateAdapter","navigate","title","replaceState","normalize","pathname","change","normalizeCurrent","fixedUrl","hash","hashBang","fixHash","fixBang","HashAdapter","_id","_interval","setInterval","clearInterval","History","adapter","createAdapter","historyLength","locations","_checkUrl","silent","_navigate","backCalled","decode","newLength","navigatingInExisting","prev","backButtonPressed","INIT","ROUTE_MISSING","BACK","optionalParam","namedParam","splatParam","escapeRegExp","namedParamReplace","optional","stripUrl","Route","route","ignoreCase","routeToRegExp","_callback","queryStringParams","_back","worksWith","Router","routes","_urlChangedProxy","_sameProxy","_backProxy","backProxy","urlChangedProxy","_urlChanged","same","_same","initEventObject","logic","or","identity","and","operatorsMap","isnullorempty","isnotnullorempty","doesnotcontain","doesnotendwith","doesnotstartwith","endswith","gt","gte","isempty","isnotempty","isnotnull","isnull","lt","lte","neq","startswith","transformFilter","operator","accentFoldingFiltering","itemProp","toLocaleLowerCase","typedGetter","convertValue","op","transformCompositeFilter","combiner","filters","extendAccentFolding","reduce","NEWLINE","DOUBLELINE","odataFilters","odataFiltersVersionFour","mappers","pageSize","page","useVersionFour","toOdataFilter","$filter","orderby","order","$orderby","skip","$skip","take","$top","defaultDataType","read","dataType","useOdataFour","stripMetadata","hex16","createBoundary","createDelimeter","boundary","close","createCommand","transport","httpVerb","command","transportUrl","commandPrefix","getOperationHeader","changeset","changeId","header","processCollection","colection","skipContent","requestBody","getBoundary","collection","content","getOperations","schemas","odata","results","total","transports","jsonp","update","create","parameterMap","$inlinecount","$format","batch","$count","colections","batchURL","headers","updated","destroyed","created","createBatchRequest","collections","ajax","success","response","responses","responseText","changeBody","status","code","marker","jsonModel","responseMarkers","markerIndex","models","passed","parseBatchResponse","XmlDataReader","model","errors","serialize","modelBase","Model","idField","xpathToMember","modelInstance","evaluate","record","_parse","xmlParse","xml","parseDOM","parsedNode","attributes","attributeCount","firstChild","nextSibling","intermediateResult","tree","parseXML","raw","readers","CREATE","READ","UPDATE","DESTROY","SYNC","GET","ERROR","REQUESTSTART","PROGRESS","REQUESTEND","ITEMSLOADED","ITEMLOAD","crud","o","objectKeys","ObservableObject","wrapAll","_loadPromises","_loadedNodes","at","serializeFunctions","json","object","isGroup","items","_loading","nodes","omitChangeEvent","howMany","omitCache","thisArg","reduceRight","every","some","empty","Symbol","_parent","eventHandler","_notifyChange","ownKeys","ignoreObjectKeys","filteredObjectKeys","protoKeys","getPrototypeOf","isPrimitiveType","getOwnPropertyNames","f","_handlers","uid","shouldSerialize","_set","composite","paths","isSetPrevented","isObservableArray","isDataSource","equal","xtype","parsers","boolean","default","_initializers","dirtyFields","_defaultId","fieldName","getFieldByName","editable","accept","isNew","originalName","functionFields","nullable","defaultValue","Comparer","compare","localeCompare","combine","comparers","StableComparer","asc","valueA","valueB","__position","desc","operators","textOp","impl","ignore","getMatchRegexp","esc","doesnotmatch","Query","normalizeSort","descriptor","descriptors","sortFields","sorts","sortObject","filterExpr","noEval","filterExprNoEval","expressions","fieldFunctions","operatorFunctions","operatorMap","equals","isequalto","equalto","ne","notequals","isnotequalto","notequalto","notequal","islessthan","lessthan","less","le","islessthanorequalto","lessthanequal","isgreaterthan","greaterthan","greater","isgreaterthanorequalto","greaterthanequal","ge","notsubstringof","normalizeOperator","normalizeFilter","compareDescriptor","f1","f2","normalizeDescriptor","fieldComparer","normalizeGroup","skipItemSorting","aggregates","normalizeGroupWithoutCompare","groupValueComparer","calculateAggregate","accumulator","state","aggr","functionName","aggregate","functions","compareFilters","expr1","expr2","filters1","filters2","toArray","range","inPlace","orderBy","orderByDescending","comparer","compiled","group","allData","getFilteredData","groupPaging","groupAllData","cachedFilteredData","hasSubgroups","itemCount","subgroupCount","groupBy","_sortForGrouping","groupValue","_sortGroups","sum","isNumber","average","process","groupDescriptorsWithoutSort","customGroupSort","groupDescriptors","anyGroupDescriptorHasCompare","groupDescriptorsWithoutCompare","normalizedSort","filterCallback","flatGroups","groupDescriptor","virtual","LocalTransport","RemoteTransport","Cache","parameters","operation","_store","clear","serializeRecords","getters","originalFieldNames","fieldNames","setters","convertRecords","convertGroup","wrapDataAccess","originalFunction","converter","wrapDataAccessBase","store","inmemory","DataReader","schema","dataFunction","_dataAccessFunction","groupsFunction","serializeFunction","serializeGetters","fromName","_wrapDataAccessBase","fillLastGroup","originalGroup","newGroup","currOriginal","currentNew","mergeGroups","dest","indexFunction","groupsLength","indexFn","groupIndex","itemIndex","flattenGroups","wrapGroupItems","eachGroupItems","func","replaceInRanges","ranges","replaceInRange","replaceWithObservable","serverGrouping","viewIndex","indexOfPristineModel","indexOfModel","fieldNameFromModel","convertFilterDescriptorsField","convertDescriptorsField","_map","_prefetch","_data","_pristineData","_ranges","_view","_pristineTotal","_destroyed","_pageSize","_page","_sort","_sortFields","_filter","_group","_aggregate","_total","_groupPaging","_groupsState","_shouldDetachObservableParents","Transport","pushCreate","_pushCreate","pushUpdate","_pushUpdate","pushDestroy","_pushDestroy","offlineStorage","_storage","getItem","localStorage","setItem","reader","_detachObservableParents","_observe","_online","serverSorting","serverPaging","serverFiltering","serverAggregates","inPlaceSort","online","sync","offlineData","_isGrouped","_isServerGrouped","_isServerGroupPaged","_isGroupPaged","_push","_readData","_flatData","useRanges","getByUid","_getByUid","_storeData","_addRange","_process","_observeView","insert","_createNewModel","_wrapInEmptyGroup","_insertModelInRange","pushInsert","rangeSpan","_getCurrentRangeSpan","pushed","autoSync","pristine","pristineData","_updatePristineForModel","_removeItems","itemsToRemove","removePristine","shouldRemovePristine","found","_eachItem","_removePristineForModel","pushMove","_moveItems","moved","dataItem","hasGroups","_pushInDestroyed","removeModel","_removeModelFromRanges","notFetched","promises","_sendSubmit","_send","when","then","changedItems","_accept","_syncEnd","_change","cancelChanges","_cancelModel","_changesCanceled","_markOfflineUpdatesAsDirty","__state__","hasChanges","serverGroup","_handleCustomErrors","_executeOnPristineForModel","_eachPristineItem","_pristineForModel","_modelCanceled","_submit","reject","_promise","converted","_params","_queueRequest","isPrevented","_dequeueRequest","_readAggregates","replaceSubset","_serverGroupsTotal","_aggregateResult","itemIds","_skip","endless","_changeHandler","updatePristine","timestamp","_timeStamp","outerStart","outerEnd","_sortRanges","_groupsFlat","_appendToGroupsFlat","_updateOuterRangesLength","_getGroupByUid","xhr","errorThrown","isExcelExportRequest","_requestInProgress","_pending","_shouldWrap","_updateTotalForAction","_operationsForUpdatedFields","updatedFields","_updatedFields","operations","stringified","partialUpdate","_preventPartialUpdate","_calculateAggregates","_take","currentRangeStart","_clearEmptyGroups","_queryProcess","resultData","dataToAggregate","_setView","_setFilterTotal","_mergeState","_currentRangeStart","moreItemsCount","_hasExpandedSubGroups","_findGroupedRange","itemsLength","groupCount","itemsToSkip","taken","_fetchGroupItems","_fetchingGroupItems","skipped","includeParents","excludeHeader","currentItems","_expandedSubGroupItemsCount","includeCurrentItems","subGroup","endSpecified","groupItemsSkip","firstItem","lastItem","expandedSubGroupItemsCount","groupItemCount","getGroupItems","subgroups","_composeItemsFilter","findSubgroups","_timeout","_groupItemsSuccessHandler","totalField","totalCount","_updateRangePristineData","countAdded","_currentRequestTimeStamp","_skipRequestsInProgress","indexOfCurrentGroup","currentGroup","dataLength","indexes","rangesLength","_containsSubGroup","_cloneGroup","subgroup","currentSubGroup","filterTotal","setDefaultValue","fetch","_query","next","totalPages","_pageableQueryOptions","getGroupsFlat","groupsTotal","includeExpanded","_calculateGroupsTotal","itemsField","ignoreState","_groupsTotal","countGroupRange","_emptyAggregates","ceil","inRange","_findRange","lastRange","firstItemUid","enableRequestsInProgress","pageSkip","_processRangeData","_originalPageSkip","_originalSize","_adjustPageSkip","_groupRangeExists","_rangeExists","prefetch","skipIdx","takeIdx","startIndex","endIndex","rangeData","rangeEnd","processed","flatData","prevRangeEnd","remote","groupMapOptions","isGroupPaged","startField","endField","_mergeGroups","_getRangesMismatch","mismatch","prevGroup","eventData","_omitPrefetch","paging","sorting","filtering","_prefetchSuccessHandler","_multiplePrefetch","prevRange","_getPrevRange","_getNextRange","availableItemsCount","_removeModelFromRange","_updateRangesLength","mismatchFound","mismatchLength","lengthDifference","rangeLength","transportOptions","fieldIndex","cells","cell","tbody","tBodies","rows","fieldCount","inferTable","optgroup","firstField","secondField","specified","inferSelect","Node","hasChildren","childrenField","childrenOptions","hasChildrenObject","_childrenOptions","_initChildren","_loaded","_updateChildrenField","loaded","level","_childrenLoaded","load","_matchFilter","dataMethod","_attachBubbleHandlers","_hierarchicalFilter","_childrenLoading","isLoading","_markHierarchicalQuery","_updateHierarchicalFilter","_find","inferList","list","textChild","textField","urlField","spriteCssClassField","imageUrlField","_dataSource","Buffer","viewSize","disablePrefetch","_prefetching","_reset","_syncWithDataSource","setViewSize","_recalculate","itemPresent","dataOffset","prefetchThreshold","midPageThreshold","nextMidRange","nextPageThreshold","nextFullRange","pullBackThreshold","previousMidRange","previousFullRange","_goToRange","nextRange","syncDataSource","prefetchOffset","expanding","_expanding","_syncPending","_firstItemUid","BatchBuffer","batchSize","batchBuffer","endreached","prefetching","prefetched","encode","binders","VALUE","SOURCE","EVENTS","CHECKED","deleteExpando","Binding","dependencies","_access","_parents","dependency","currentSource","EventBinding","TemplateBinding","Binder","bindings","binding","TypedBinder","parsedValue","_parseValue","dataSourceBinding","bindingName","_dataBinding","dataBinding","_dataBound","dataBound","_itemChange","itemChange","bindElement","_ns","removedItems","unbindElementTree","all","addedItems","hds","addedDataItems","multiselect","Select","MultiSelect","DropDownTree","treeview","retrievePrimitiveValues","dataValueField","readonly","dataFormat","invisible","valueUpdate","_initChange","autoBind","valueField","valueAttr","innerText","cloneNode","reference","insertBefore","unbindElementChildren","checked","selectedIndex","selected","valueIndex","valuePrimitive","sourceValue","optionIndex","optionValue","check","_range","floatingLabel","readOnly","_valueIsObservableObject","_valueIsObservableArray","_source","valueLength","sourceItem","dataTextField","isObservableObject","cascadeFrom","listView","bound","_preselect","dropdowntree","oldValues","selectedNode","nonPrimitiveValues","_isMultipleSelection","_getAllChecked","removeIndex","newValue","old","arraySplice","selectedValue","gantt","_isBound","scheduler","grid","badge","addLength","shifted","shiftedLength","BindingTarget","toDestroy","hasValue","hasSource","hasEvents","hasChecked","hasCss","widgetBinding","WidgetBindingTarget","specificBinders","applyBinding","binder","keyValueRegExp","whiteSpaceRegExp","parseBindings","token","colonIndex","createBindings","childrenCopy","unbindElement","bindingTargetForRole","dom","destroyWidget","bindingTarget","destroyWidgets","namespace","observableHierarchy","recursiveRead","TRANSITION_START","TRANSITION_END","SHOW","HIDE","sizzleErrorRegExp","SHOW_START","SAME_VIEW_REQUESTED","VIEW_SHOW","VIEW_TYPE_DETERMINED","AFTER","classNames","View","renderOnInit","_createElement","wrapInSections","_renderSections","_wrap","_evalTemplate","evalTemplate","_useWithBlock","_fragments","detachOnHide","detachOnDestroy","notInitialized","_eachFragment","ViewClone","triggerBeforeShow","triggerBeforeHide","showStart","showEnd","hideEnd","detach","purge","fragments","methodName","getElementById","contents","replaceWith","_wrapper","_createContent","_createHeader","_createFooter","contentSelector","contentElement","footer","Layout","containers","_createContainer","showIn","ViewContainer","Fragment","attach","transitionRegExp","running","after","locationID","theTransition","transitionData","parseTransition","ViewEngine","sandbox","_hideViews","rootView","layouts","viewContainer","showView","remoteViewURLPrefix","_findViewElement","reload","_createView","urlPath","wrapInner","_locate","_findViewElementById","_createSpaView","_createMobileView","defaultTransition","loader","getLayout","getLayoutProxy","modelScope","viewOptions","isJQueryPromise","isNativePromise","catch","signalr","hub","invoke","callbacks","_crud","server","OS","invalidZeroEvents","DEFAULT_MIN_HOLD","DEFAULT_THRESHOLD","PRESS","HOLD","SELECT","START","MOVE","CANCEL","TAP","DOUBLETAP","RELEASE","GESTURECHANGE","GESTUREEND","GESTURETAP","THRESHOLD","api","mouse","pointer","ENABLE_GLOBAL_SURFACE","touchDelta","touch1","touch2","x1","y1","x2","y2","dx","dy","center","distance","sqrt","getTouches","currentTarget","identifier","pointerId","TouchAxis","_updateLocationData","startLocation","velocity","timeStamp","timeDelta","initialDelta","Touch","userEvents","touchInfo","useClickAsTap","threshold","initialTouch","pressEvent","_clicks","supportDoubleTap","_moved","_finished","press","_holdTimeout","_hold","minHold","_trigger","_tap","_clickTimeout","preventMove","_shouldNotMove","_withinIgnoreThreshold","UserEvents","dispose","_start","endTime","activeTouches","isMoved","startTime","xDelta","yDelta","withEachUpEvent","downEvents","_maxTouches","multiTouch","allowSelection","captureUpIfMoved","fastTap","eventNS","surface","ownerDocument","pressed","defaultAction","touchAction","preventDragEvent","surfaceElement","preventIfMovingProxy","preventIfMoving","_isMoved","_disposeAll","capture","_isMultiTouch","_apiCall","_maxTouchesReached","_select","which","_move","_eachTouch","_end","_click","pageX","pageY","matchingTouch","ClickMoveClick","_downStarted","_down","_downTarget","_up","currentMilestone","_preventCancel","clickMoveClick","defaultThreshold","lastDropTarget","$window","draggables","dropTargets","dropAreas","KEYUP","DRAGSTART","DRAG","DRAGEND","DRAGCANCEL","HINTDESTROYED","DRAGENTER","DRAGLEAVE","DROP","numericCssPropery","within","containerBoundaries","minX","minY","TapCapture","_press","_release","attachEvent","captureNext","cancelCapture","PaneDimension","forcedEnabled","measure","scrollSize","makeVirtual","_virtualMin","_virtualMax","virtualSize","outOfBounds","forceEnabled","getTotal","rescale","scaledTotal","minScale","centerOffset","PaneDimensions","forcedMinScale","maxScale","newScale","centerCoordinates","PaneAxis","dimension","dragMove","resistance","translateAxis","Pane","elastic","gesturestart","gesture","gesturechange","coordinates","previousGesture","previousCenter","scaleDelta","offsetX","offsetY","scaleWith","TRANSFORM_STYLE","Movable","webkitTransformOrigin","_saveCoordinates","by","scaleTo","newCoordinates","destroyDroppable","groupName","droppables","DropTarget","draggable","dropTarget","_over","_out","_drop","dropped","destroyGroup","_cache","DropTargetArea","Draggable","_activated","_startClickMoveClick","_drag","_onCancel","hold","_afterEndHandler","_afterEnd","_captureEscape","cursorOffset","holdToDrag","showHintOnHold","autoScroll","preventOsHoldFeatures","cancelHold","_updateHint","boundaries","hintOffset","hint","_shouldIgnoreTarget","ignoreSelector","_hint","currentTargetOffset","cursorElement","_elementUnderCursor","_cursorElement","_scrollableParent","findScrollableParent","_lastEvent","_processMovement","autoScrollVelocity","scrollableViewPort","_scrollCompenstation","_scrollVelocity","_scrollInterval","_autoScroll","_withDropTarget","targetElement","compensation","yIsScrollable","xIsScrollable","isRootNode","scrollableRoot","yInBounds","xInBounds","_cancel","initialTarget","targets","areas","theTarget","theFilter","targetLen","areaLen","checkTarget","mouseX","mouseY","rect","AUTO_SCROLL_AREA","utils","RELEASECLASS","REFRESHCLASS","SCROLL","ZoomSnapBack","tapCapture","DragInertia","freeze","_moveTo","paneAxis","_snapBack","velocityMultiplier","friction","snapBack","AnimatedScroller","_updateCoordinates","setCoordinates","setCallback","ScrollBar","controlsId","elementSize","scrollMovable","alwaysVisible","paneSize","sizeRatio","_ariaValue","visibility","_native","prepend","scrollElement","fixedContainer","avoidScrolling","velocityX","velocityY","horizontalSwipe","verticalSwipe","pane","zoomSnapBack","animatedScroller","scrollTo","mousewheelScrolling","_wheelScroll","pulled","_initAxis","_wheelEnd","_wheel","_wheelY","pullToRefresh","_initPullToRefresh","ctrlKey","_wheelTimeout","pullOffset","visibleScrollHints","pullTemplate","releaseTemplate","refreshTemplate","contentResized","_scale","zoomOut","animatedScrollTo","pullHandled","refreshHint","hintContainer","yinertia","xinertia","_paneChange","_dragEnd","scrollBar","elementId","OPEN","CLOSE","DEACTIVATE","ACTIVATE","CENTER","TOP","BOTTOM","ABSOLUTE","BODY","LOCATION","VISIBLE","EFFECTS","ACTIVE","ACTIVECHILDREN","DOCUMENT_ELEMENT","WINDOW","NS","Popup","parentPopup","collisions","collision","downEvent","anchor","_hovered","scrollArea","animation","open","_animationClose","_mousedownProxy","_mousedown","_resizeProxy","toggleTarget","toggleEvent","viewport","copyAnchorStyles","modal","adjustSize","omitOriginOffsets","_hideActiveClass","_closing","_toggleResize","fixed","_shouldCorrectWidth","listbox","_resizeOnWrap","flipped","_position","_openAnimation","_addActiveClass","_location","skipEffects","openEffects","closeEffects","popup","_resizeTimeout","_scrollableParents","_fit","viewPortSize","output","_flip","anchorSize","boxSize","siblingContainer","parentZIndex","viewportOffset","viewportWidth","viewportHeight","isWindow","origins","positions","siblings","_align","pos","offsetParent","offsets","flipPos","wrapperHeight","appendToOffset","verticalOrigin","horizontalOrigin","verticalPosition","horizontalPosition","anchorOffset","anchorWidth","anchorHeight","tabKeyTrapNS","TabKeyTrap","trap","_keepInTrap","removeTrap","shouldTrap","_focusableElements","sortedElements","_sortFocusableElements","_nextFocusable","_focus","tabIndex","attrName","_haveSelectionRange","contentWindow","elementType","HTMLBase","stylingOptions","_addClasses","previouslyAddedClasses","outerHTML","KI_PREFFIX","KSVG_PREFFIX","FLIP_PREFIX","FLIP_HORIZONTAL","FLIP_VERTICAL","ICON_TYPES","svg","HTMLSvgIcon","font","HTMLFontIcon","FLIP_CLASSES","HTMLBaseIcon","flip","iconClass","_className","icon","currentIconClass","includes","svgElm","regex","iconNameMatch","svgIcons","viewBox","xmlns","renderIcon","iconType","getIconRenderer","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","userOutlineIcon","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","FontIcon","_icon","SvgIcon","DOCUMENT","ARIAIDSUFFIX","DESCRIBEDBY","CONTENTLOAD","KCONTENTFRAME","TEMPLATE","autoHide","callout","IFRAMETEMPLATE","POSITIONS","REVERSE","DIRCLASSES","DIMENSIONS","restoreTitle","restoreTitleAttributeForElement","saveTitleAttributeForElement","saveTitleAttributes","TooltipBase","_isShownOnMouseEnter","_showOn","showOn","_keydown","showAfter","hideAfter","_saveTitle","_show","_isShownOnClick","_isShownOnFocus","_recalculatePopupDimensions","_positionCallout","elementOffset","offsetAmount","_offset","arrow","arrowWidth","isTopLeft","isFlipped","marginRule","_addDescribedBy","ariaId","describedBy","_removeDescribedBy","arrayAttr","finalArray","finalDescribedbyAttr","tooltipId","currentDescribedBy","_openPopup","Tooltip","_documentKeyDownHandler","_documentKeyDown","_mouseenter","_mouseleave","_blur","_appendContent","iframe","contentOptions","showIframe","_ajaxRequest","_verifyContentLoaded","resources","_initPopup","activate","_closeButtonClick","_closePopup","util","createPromise","promiseAll","extendStatic","namedColors","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","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","matchNamedColor","color","colorNames","regexp","BaseColor","toHSV","toRGB","toHex","toBytes","toCss","toCssRgba","rgb","toDisplay","parseColor","other","NaN","c1","c2","r","Bytes","RGB","ref","HSV","toHSL","l","HSL","hex","alpha","n","p","hue2rgb","alphaFromHex","Color","this$1$1","resolvedColor","resolveColor","formatRegex","re","processor","channels","normalizeByte","padDigit","brightness","percBrightness","isDark","fromBytes","fromRGB","fromHSV","fromHSL","LRUCache","_length","put","entry","_head","_tail","newer","older","REPLACE_REGEX","normalizeText","objectKey","hashKey","defaultMeasureBox","DEFAULT_OPTIONS","baselineMarkerSize","TextMetrics","baseline","cacheKey","cachedResult","measureBox","baselineMarker","_baselineMarker","textStr","offsetTop","measureText","kendoDrawingUtil","kendoUtil","supportBrowser","HasObservers","Class$$1","observers","_observers","addObserver","removeObserver","_suspended","observer","optionsChange","geometryChange","suspend","resume","_observerField","append$1$1","second","arabicToRoman","roman","defined","defId","definitionId","DEG_TO_RAD","PI","MAX_NUM","MAX_VALUE","MIN_NUM","deg","radians","KEY_STR","encodeBase64","utfInput","hi","low","encodeUTF8","chr1","chr2","chr3","enc1","enc2","enc3","enc4","eventCoordinates","eventElement","isTransparent","limitValue","mergeSort","cmp","ai","bi","rad","degrees","power","valueOrDefault","bindEvents","getBoundingClientRect","clientTop","clientLeft","elementStyles","stylesArray","getPixels","size$1","unbindEvents","elementPadding","paddingLeft","paddingTop","Matrix","multiplyCopy","matrix","invert","det","separator","unit","angle","cos","sin","scaleX","scaleY","IDENTITY","matrixRegexp","transformMatrix","matrixString","parseMatrix","elementScale","parentElement","parentMatrix","toString$1","OptionsStore","HasObservers$$1","parentObj","_clear","wrapped","setAccessor","getAccessor","withAccessors","TBase","capitalized","defineAccessors","toMatrix","Point","superclass","staticAccessors","originPoint","translateWith","point","scaleCopy","transformCopy","distanceTo","doRound","arg0","arg1","arguments$1","maxX","maxY","minPoint","maxPoint","defineProperties","Size","Rect","cornerRadius","setOrigin","setCornerRadius","getOrigin","getCornerRadius","topLeft","bottomRight","topRight","bottomLeft","bbox","tl","tr","br","bl","fromPoints","expand","expandCopy","containsPoint","_isOnPath","rectOuter","rectInner","union","intersect","rect1","rect2","Transformation","_matrix","_optionsChange","multiply","transform$1","Element$1","prototypeAccessors","parentTransform","currentTransform","combinedMatrix","elementMatrix","clippedBBox","_clippedBBox","transformedPoint","_hasFill","_containsPoint","_hasStroke","stroke","ellipseExtremeAngles","ry","extremeX","extremeY","PI_DIV_2","Circle$2","Circle","setCenter","setRadius","getCenter","pointAt","_pointAt","extremeAngles","currentPointX","currentPointY","currentPoint","pointDistance","paintable","anonymous","newFill","IDENTITY_MATRIX_HASH","measurable","matrixHash","_bboxCache","_matrixHash","_bbox","strokeWidth","geometryAccessor","withGeometry","defineGeometryAccessors","geometry","rawBBox","_geometry","PRECISION","close$1","tolerance","closeOrLess","pow$1","Arc$2","Arc","radiusX","radiusY","startAngle","endAngle","anticlockwise","xRotation","radian","curvePoints","interval","_arcInterval","intervalAngle","subIntervalsCount","subIntervalAngle","currentAngle","nextAngle","points","_intervalCurvePoints","cp1","cp2","p2","endPoint","currentAngleX","bboxStartAngle","currentAngleY","oldStart","p1","p1Derivative","_derivativeAt","p2Derivative","angleRad","pointRadius","startPoint","intersection","p0","p3","s1x","s2x","s1y","s2y","nx","ny","lineIntersection","calculateAngle","inAngleRange","largeArc","swipe","arcParameters","cosine","sine","xT","yT","xt2","yt2","rx2","ry2","constT","cxT","cyT","cx","cy","uX","uY","vX","vY","acos","angleCosine","signEndAngle","normalizeArcParameters","ElementsArray","_splice","_add","_remove","_clearObserver","_setObserver","GeometryElementsArray","ElementsArray$$1","isOutOfEndPoint","controlPoint","calculateCurveAt","t1","toCubicPolynomial","ComplexNumber","real","img","cNumber","addConstant","negate","multiplyConstant","nthRoot","rad$$1","nthR","isReal","numberSign$1","solveCubicEquation","squareRoot","solveQuadraticEquation","y3","z1","z2","b3a","hasRootsInRange","rootField","polynomial","roots","lineIntersectionsCount","intersects","pointAccessor","withPoints","definePointAccessors","Segment","controlIn","controlOut","bboxTo","toSegment","segmentAnchor","toSegmentAnchor","_curveBoundingBox","_lineBoundingBox","extremesX","_curveExtremesFor","extremesY","xLimits","arrayLimits","yLimits","extremes","_curveExtremes","x3","x4","t2","_intersectionsTo","segment","intersectionsCount","rayIntersection","curveIntersectionsCount","_isOnCurveTo","endSegment","p4","rotatedPoints","_isOnLineTo","_isOnPathTo","WEIGHT","EXTREMUM_ALLOWED_DEVIATION","removeDuplicates","lineFunction","getControlPoints","tangent","xField","yField","restrict","switchOrientation","calculateFunction","isLine","getTangent","monotonic","isMonotonicByField","invertAxis","numberSign","secondCP","secondControlPoint","oldXField","firstCP","firstControlPoint","restrictControlPoint","cp","xValue","yValue","ShapeMap","isRelative","lineTo","curveTo","toLineParamaters","arcTo","lastControlIn","previousCommand","segments","reflectionPoint","cubicControlPoints","quadraticToCubicControlPoints","isVertical","insertPosition","third","scaledPoint","SEGMENT_REGEX","SPLIT_REGEX","parsePath","pathInstance","closePath","parseParameters","elementsBoundingBox","applyTransform","boundingBox","elementBoundingBox","elementsClippedBoundingBox","SPACE","Path","lineJoin","point$$1","lastSegment","arc","_addArcSegments","closed","segmentStart","segmentEnd","currentType","print","pathWidth","segmentBox","MultiPath","fromRect","curveFromPoints","pointsIn","initialControlPoint","lastControlPoint","controlPoints","cp0","controlPoints$1","controlPoints$2","tangent$2","pointsToCurve","fromArc","prototypeAccessors$1","toPath","Text","Image$1","Image","_rect","traversable","traverse","Group","childrenChange","_reparent","insertAt","removeAt","newParent","translateToPoint","transofrm","alignStart","align","sizeField","alignStartReverse","alignContent","justifyContent","alignItems","spacing","orientation","lineSpacing","revers","forEachReverse","Group$$1","_fieldMap","_initMap","fieldMap","groupsSizeField","groupAxis","groupsAxis","justifyAlign","reflow","elementStart","groupBox","_initGroups","groupsSize","ref$1","groupOrigin","elementOrigin","groupStart","arrangeElements","groupIdx","lineSize","bboxes","scaledStart","newStart","_newGroup","addGroup","_addToGroup","Rect$2","Rect$$1","alignElements","alignment","stackElements","stackAxis","otherAxis","previousBBox","createStackElements","wrapElements","stacks","maxSize","stack","stackSize","addElementToStack","getStacks","startElement","elementIdx","StopsArray","optionsAccessor","GradientStop","arg","defineOptionsAccessors","Gradient","stops","_createStops","_userSpace","userSpace","addStop","removeStop","LinearGradient","RadialGradient","_radius","_fallbackFill","fallbackFill","instance$1","easingFunctions","swing","linear","easeOutElastic","asin","AnimationFactory","_items","_options","easing","finish","abort","loop","_stopped","wallTime","easingPosition","PathParser","BaseNode","srcElement","observe","removeSelf","invalidate","Surface$2","Observable$$1","Surface","_kendoExportVisual","exportVisual","_handler","_mousemove","_visual","_enableTracking","draw","domNode","_kendoNode","suspendTracking","_suspendedTracking","resumeTracking","_elementOffset","padding","_surfacePoint","coord","inverseTransform","renderAttr","renderAllAttr","attrs","renderStyle","NODE_MAP","SVG_NS","NONE","styleAttr","replaceStyleAttr","restoreStyleAttr","styleString","applyStyle","renderSVG","testFragment","testContainer","hasParser","DOMParser","namespaceURI","chartDoc","parseFromString","importedDoc","adoptNode","renderSVG$1","DefinitionMap","isDefinition","BaseNode$$1","definitions","clearDefinitions","childNode","createDefinitions","attachTo","setElement","childElement","renderChildren","updateDefinition","accessibilityOptionsChange","allAttr","toggleAttr","allCss","classList","mapTransform","renderTransform","transformChange","mapStyle","cursor","renderOpacity","renderId","renderClassName","renderRole","renderAriaLabel","renderAriaRoleDescription","ariaRoleDescription","renderAriaChecked","ariaChecked","hasDefinitions","definitionChange","refUrl","renderDefinitions","mapDefinitions","skipBaseHref","baseHref","baseUrl","getElementsByTagName","hashIndex","GradientStopNode","Node$$1","renderOffset","GradientNode","loadStops","stopNode","mapCoordinates","renderCoordinates","mapSpace","LinearGradientNode","GradientNode$$1","RadialGradientNode","ClipNode","renderClipRule","DefinitionNode","definitionMap","addDefinitions","removeDefinitions","createDefinition","addDefinition","mapItem","removeDefinition","RootNode","defs","firstElementChild","DASH_ARRAYS","dot","dash","longdash","dashdot","longdashdot","longdashdotdot","SOLID","BUTT","ATTRIBUTE_MAP","PathNode","renderData","mapFill","mapStroke","undefined","renderLinecap","dashType","renderDashType","renderStroke","dashArray","lineCap","renderFill","ArcNode","PathNode$$1","CircleNode","GroupNode","ImageNode","mapPosition","mapSource","renderPosition","renderSource","MultiPathNode","RectNode","ENTITY_REGEX","decodeEntities","TextNode","setY","renderContent","renderTextAnchor","rtl","renderPaintOrder","paintOrder","Surface$3","BaseSurface","_root","_template","_rootElement","ctm","getScreenCTM","alignToScreen","mouseover","mouseout","visual","svgStyles","NODE_MAP$2","Node$2","initClip","clearClip","setClip","ctx","beginPath","renderPoints","setTransform","loadElements","cors","setOpacity","globalAlpha","opactity","GroupNode$2","renderTo","RootNode$2","canvas","getContext","invalidateHandler","_invalidate","_rescale","_devicePixelRatio","fixedScale","clearRect","QuadRoot","shapes","shape","_quadNode","pointShapes","QuadNode","QuadRoot$$1","inBounds","nodeRect","nodeBottomRight","inserted","halfWidth","halfHeight","ROOT_SIZE","ShapesQuadTree","initRoots","rootMap","rootElements","pointShape","sectorRoot","assignZindex","zIndexComparer","levelWeight","_zIndex","bboxChange","_insertShape","elementsArray","_insert","sectors","getSectors","inRoot","bottomX","bottomY","SurfaceCursor","renderPath","prevOut","bezierCurveTo","_resetCursor","_shapeCursor","_current","_defaultCursor","_getCursor","_setCursor","PathNode$2","setLineDash","setLineCap","setLineJoin","setFill","setStroke","hasFill","setGradientFill","fillStyle","gradient","createLinearGradient","createRadialGradient","addColorStop","addGradientStops","strokeStyle","lineWidth","mozDash","webkitLineDash","ArcNode$2","CircleNode$2","ImageNode$2","onLoad","onError","crossOrigin","onload","onerror","drawImage","MultiPathNode$2","RectNode$2","TextNode$2","textAlign","strokeText","fillText","instance$2","support$1","Surface$4","_mouseTrackHandler","_trackMouse","_searchTree","_cursor","rootElement","loadingStates","resolveDataURL","toDataURL","currentShape","_currentShape","hasDocument","SurfaceFactory","implementation","hasFeature","preferred","exportGroup","rootGroup","exportRoot","svg$1","slice$1$1","thing","KENDO_PSEUDO_ELEMENT","KENDO_BULLET_TYPE","IMAGE_CACHE","nodeInfo","microsoft","TextRect","Text$$1","_pdfRect","setCSS","cloneNodes","$el","$clone","dive","canvases","canvas$$1","parseBackgroundImage","tok_linear_gradient","tok_percent","tok_length","tok_keyword","tok_angle","tok_whitespace","tok_popen","tok_pclose","tok_comma","tok_url","tok_content","cache1","cache2","tok","skip_ws","read_stop","to1","to2","num","parseAngle","read_linear_gradient","read_url","splitProperty","last$$1","in_paren","in_string","looking_at","getFontURL","getFontHeight","getFontFaces","doc","styleSheets","doStylesheet","ss","cssRules","ex","styleSheet","family","bold","italic","findFonts","addRule","addRules","incCounter","inc","resetCounter","doCounters","def","updateCounters","counterReset","counterIncrement","parseColor$1","whenImagesAreActuallyLoaded","pending","images","cacheImages","urls","getComputedStyle$1","bg","alphaNumeral","pushNodeInfo","decoration","createsStackingContext","_stackingContext","popNodeInfo","updateClipbox","_clipbox","pseudoElt","defa","pleaseSetPropertyValue","important","setProperty","getBorder","side","saveStyle","getBorderRadius","sanitizeRadius","getContentBox","wt","wr","wb","wl","radiansToDegrees","setTransform$1","setClipping","clipPath","addArcToPath","adjustBorderRadiusForBox","rTL","rTR","rBR","rBL","tl_x","tl_y","tr_x","tr_y","br_x","br_y","bl_x","bl_y","elementRoundBox","bt","bb","pt","pr","pb","pl","roundBox","rTL0","rTR0","rBR0","rBL0","formatCounter","evalPseudoElementContent","displayCounter","getAllCounters","getCounter","getCssText","_renderWithPseudoElements","fake","pseudo","saveClass","_renderElement","kind","place","psel","backgroundColor","textOverflow","saveTextOverflow","backgroundImage","backgroundRepeat","backgroundPosition","backgroundOrigin","backgroundSize","boxes","innerbox","getClientRects","tableBorderLeft","tableBorderTop","tableBox","firstCellBox","adjustBoxes","drawOneBox","_avoidLinks","selectNodeContents","_pdfLink","listStyleType","listStylePosition","_drawBullet","bullet","boxSizing","renderElement","elementIndex","drawBullet","clipit","isFormField","exportDOMVisual","wrap$$1","maybeRenderWidget","bulletType","rectSize","circle","maybeRenderBullet","renderContents","drawEdge","Wtop","Wleft","Wright","rl","rr","transform$$1","drawRoundCorner","ri","drawOneBackground","background","drawBackgroundImage","pxlen","scaledAngle","atan","implicit","img_width","img_height","renderBG","aspect_ratio","orgBox","rewX","rewY","repeatX","isFirst","isLast","drawBackground","shouldDrawLeft","shouldDrawRight","inv","renderImage","zIndexSort","sa","sb","za","zb","pa","renderFormField","tag","renderCheckbox","whiteSpace","selectedOptions","getSelectedOption","serializer","XMLSerializer","serializeToString","svg$$1","serializeSVG","floats","renderText","floating","fontSize","lineHeight","isJustified","columnCount","textTransform","estimateLineLength","prevLineBottom","underline","lineThrough","overline","underlineOffset","forEachRect","underlinePos","drawTextLine","doChunk","selectNode","clientRects","actuallyGetRangeBoundingRect","rectangles","Infinity","origStart","setStart","setEnd","findEOL","eol","startOffset","cc","drawText","textBox","ypos","getTransform","main","_dom_zIndex","groupInStackingContext","mmul","a1","b1","d1","e1","a2","b2","d2","exportImage","surfaceOptions","exportSVG","vAlign","vStack","vWrap","fit","drawDOM","defineFont","doOne","cls","avoidLinks","forceBreak","forcePageBreak","hasPaperSize","paperSize","paperOptions","getPaperOptions","pageWidth","pageHeight","hasMargin","multiPage","_ignoreMargin","makeTemplate","pages","_destructive","adjust","tfoot","ol","li","paddingRight","beforePageBreak","doPageBreak","splitElement","makePage","pageNum","keepTogether","tableLayout","bottomPadding","bottomBorder","saveAdjust","breakAtElement","fall","fallsOnMargin","splitText","firstInParent","colgroup","thead","gridHead","querySelector","repeatHeaders","setStartBefore","setEndBefore","extractContents","preventBulletOnListItem","pageClassName","available","nextnode","findEOP","endOffset","handlePageBreaks","canceled","TOOLTIP_CLOSE_TEMPLATE","SurfaceTooltip","_tooltipOptions","popupOptions","_openPopupHandler","_bindEvents","hideDelay","_showHandler","_showEvent","_surfaceLeaveHandler","_surfaceLeave","_mouseleaveHandler","_mousemoveHandler","_hideClick","_tooltipLeave","getPopup","shared","_tooltipShape","tooltip","_updateContent","tooltipOffset","_instance","surfaceOffset","_showTimeout","_autoHide","_measure","_closeButton","_popupRelatedTarget","DrawingSurface","_triggerInstanceHandler","_triggerInstanceEvent","_bindHandler","hideTooltip","_tooltip","showTooltip","geometryTransform","__common_getter_js","ARC","AXIS_LABEL_CLICK","BLACK","CIRCLE","CROSS","DATE","DEFAULT_FONT","DEFAULT_PRECISION","FORMAT_REGEX","INSIDE","MIN_VALUE","NOTE_CLICK","NOTE_HOVER","NOTE_LEAVE","OUTSIDE","ROUNDED_RECT","TRIANGLE","WHITE","constants","ARROW_UP","ARROW_DOWN","ARROW_LEFT","ARROW_RIGHT","ARIA_ACTIVE_DESCENDANT","COORD_PRECISION","DEFAULT_HEIGHT","DEFAULT_WIDTH","ESCAPE","HIGHLIGHT_ZINDEX","INHERIT","SQUARE","RECT","DEFAULT_SERIES_OPACITY","POINTER","HORIZONTAL","VERTICAL","classArray","SPACE_REGEX","alignPathToPixel","clockwise","angle1","angle2","isObject","styleValue","SIZE_STYLES_REGEX","isSizeField","getSpacing","defaultSpacing","TemplateService","getTemplate","userImplementation","HashMap","Map","TRIGGER","InstanceObserver","handlerMap","callObserver","fnName","requiresHandlers","FontLoader","setDefaultOptions","fetchFonts","fonts","depth","loadFonts","Promise","preloadFonts","addClasses","svgElement","createElementNS","sparseArrayLimits","autoTextColor","DELETED","LegacySet","_index","_values","has","delete","SetWrapper","Set","Matrix$1","row","col","line","includeEmpty","transpose","va","vb","inverse","augment","imax","argmax","returned","i$1","j$1","k$1","i$2","j$2","STRING$1","eventName$1","eventArgs","autoMajorUnit","relativeValue","theta","cosT","sinT","onCircle","Box","targetBox","wrapPoint","arrayPoint","snapTo","alignTo","targetCenter","shrink","dw","dh","unpad","getHash","overlaps","r1","rotatePoint","r2","r3","r4","toRect","hasSize","sizeFunc","Ring","innerRadius","middle","newRadius","radianAngle","ax","ay","adjacentBox","sector","midAndle","midPoint","hw","hh","ca","vector","startVector","endVector","dist","getBBox","angles","allAngles","numericComparer","startAngleIndex","endAngleIndex","Sector","ShapeBuilder","createRing","innerEnd","ChartElement","initUserOptions","currentChild","getRoot","getSender","service","getService","chartService","translateChildren","childrenCount","renderVisual","createVisual","addVisual","createAnimation","renderComplete","chartElement","appendVisual","childVisual","noclip","clipRoot","stackRoot","stackVisual","isStackRoot","visuals","sibling","matched","hasHighlight","highlight","createHighlight","toggleHighlight","customVisual","_highlight","highlightOptions","highlightVisualArgs","category","runningTotal","toggleFocusHighlight","accessibility","focusHighlight","_focusHighlight","highlightColor","focusHighlightOptions","border","createFocusHighlight","createGradientOverlay","gradientOptions","overlay","createGradient","supportsPointInactiveOpacity","BoxElement","shrinkToFit","hasSetSize","borderWidth","reflowPaddingBox","paddingBox","contentBox","hasBox","visualStyle","ShapeElement","pointData","getElement","borderRadius","visualOptions","accessibilityOptions","RADIAL","GRADIENTS","glass","sharpBevel","roundedBevel","roundedGlass","supportVML","sharpGlass","bubbleShadow","boxDiff","RootElement","rootOptions","gradients","currentBox","createBackground","drawingGradient","hashCode","usedSpace","currentStops","currentStop","innerRadialStops","cleanGradients","FloatElement","_initDirection","elementAxis","groupSizeField","elementSizeField","groupSpacing","elementSpacing","vSpacing","reflowChildren","groupOptions","maxGroupElementsSize","groupsCount","groupsStart","groupElements","groupElementsCount","elementSize$$1","groupElementStart","elementBox","groupElementsSize","DrawingText","rectToBox","ROWS_SPLIT_REGEX","TextBox","_initContainer","_autoReflow","floatElement","textOptions","rowIdx","visualFn","_boxReflow","visualBox","visualContext","normalBox","rotatedBox","rotationTransform","getDefaultVisual","boxCenter","Title","_textBox","collapseVerticalMargins","prevBox","buildTitle","defaultOptions","titleOptions","orderTitles","titles","AxisLabel","alignRotation","rotationMatrix","rotationOrigin","alignAxis","distanceAxis","axisAnchor","alignEnd","distanceLeft","distanceRight","alignCenter","Note","childAlias","noteTemplate","auto","aliasFor","wrapperBox","lineStart","linePoints","createLine","defaultVisual","over","current$1","IntlService","FORMAT_REPLACE_REGEX","FormatService","intlService","_intlService","formatString","intl","localeAuto","locale","current$2","ChartService","chart","isPannable","pannable","lock","DomEventsBuilder","services","createAxisTick","tickOptions","tickX","tickY","createAxisGridLine","gridLine","lineEnd","Axis","labels","majorTickSize","minorTickSize","minorTicks","minorTickType","majorTicks","majorTickType","initFields","_deferLabels","createLabels","createTitle","createNotes","labelsRange","labelsCount","normalizeLabelRotation","labelOptions","clearLabels","autoRotateLabels","labelContext","createAxisLabel","clearTitle","lineBox","axisX","axisY","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","axes","slotX","slotY","getSlot","createPlotBandLabel","bandRect","textbox","labelTemplate","createGridLines","minorGridLines","majorGridLines","axisLineVisible","linePos","lineOptions","sizeFn","titleSize","maxLabelSize","labelSize","arrangeTitle","arrangeLabels","arrangeNotes","getLabelsTickPositions","labelTickIndex","labelsBetweenTicks","tickIx","firstTickPosition","nextTickPosition","positionStart","positionEnd","positionLabel","labelBox","labelOffset","labelX","labelY","autoRotateLabelAngle","slotWidth","limit","labelAngle","idx$1","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","axisDir","axisOrigin","pointOffset","scaleToDelta","rawScale","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","weeks","absoluteDateDiff","addTicks","ticks","toDate","startOfWeek","daysToSubtract","addDuration","dateValue","roundedDate","setMinutes","tzDiff","addHours","setSeconds","setMilliseconds","floorDate","ceilDate","dateComparer","dateDiff","toTime","dateEquals","timeIndex","baseUnit","dateIndex","baseUnitStep","parseDates","dates","CategoryAxis","_ticks","categoriesHash","categories","srcCategories","definedMin","definedMax","rangeIndices","totalRange","roundedRange","_seriesMax","scaleOptions","hideOutOfRangeLabels","valueAxis","firstLabel","getTicks","labelTicks","tickIndices","stepSize","indices","getTickPositions","_hash","hasMinor","filterOutOfRangePositions","slotBox","singleSlot","limitSlot","limittedSlot","categoryIndex","pointCategoryIndex","getCategory","totalIndex","categoryAt","categoriesCount","translateRange","scaleRange","limitedRangeIndices","minDelta","maxDelta","zoomRange","totalMin","totalMax","hideOutOfRangeNotes","pan","pointsRange","diffStart","diffEnd","rangeMin","rangeMax","_categoriesMap","currentRangeIndices","totalLimit","totalRangeIndices","indexCategories","map$$1","COORDINATE_LIMIT","DateLabelFormats","ZERO_THRESHOLD","BASE_UNITS","FIT","categoryRange","clearCache","EmptyDateRange","displayIndices","displayRange","valuesCount","dateAt","DateRange","roundToBaseUnit","lowerEnd","roundToTotalStep","expandEnd","justifyEnd","valueStart","displayStart","valueEnd","displayEnd","_indices","minIdx","maxIdx","upper","roundedStep","autoBaseUnit","startUnit","startStep","unitSteps","nextStep","categoryLimits","span","autoBaseUnitSteps","maxDateGroups","autoUnit","autoUnitIx","units","totalUnits","initUnit","lastCategory","minDiff","categoryIx","defaultBaseUnit","DateCategoryAxis","dataRange","_parsed","panning","userSetBaseUnit","userSetBaseUnitStep","maxDivisions","safeOptions","forecast","_forecast","before","divisionOptions","dataRangeOptions","divisionRange","rangeLabels","isEmpty","totalLimits","panRange","datesRange","indicesRange","autoBaseUnitStep","maxDiff","rangeDiff","baseUnitIndex","stepIndex","createRangeLabels","arrangeRangeLabels","position$1","autoRotateRangeLabels","hideOverlappingLabels","firstRangeLabel","lastRangeLabel","rangeLabel","unitFormat","dateFormats","createLabel","rotateLabel","dateRange","limitCoordinate","MIN_VALUE_RANGE$1","NumericAxis","autoOptions","narrowRange","autoMin","narrow","axisMin","autoAxisMin","autoMax","axisMax","autoAxisMax","roundToMajorUnit","remainderClose","autoAxisOptions","totalOptions","totalAxisOptions","userOptions","userSetMin","userSetMax","clearNullValues","userSetLimits","axisOptions","totalMajorUnit","getDivisions","stepValue","divisions","skipStep","getValue","isValidRange","ratio","remainder","DateValueAxis","timeUnits","baseUnitTime","userMajorUnit","actualUnits","unitsToAdd","head","tail","applyDefaults","axisCrossingValues","limittedRange","MIN_VALUE_RANGE$2","LogarithmicAxis","logMaxRemainder","autoAxisMax$1","autoAxisMin$1","throwNegativeValuesError","initRange","logMin","logMax","floorMax","traverseMajorTicksPositions","tickPosition","traverseMinorTicksPositions","minorOptions","_minorIntervalOptions","minorStep","GridLinesMixin","majorAngles","minorAngles","skipMajor","majorGridLineAngles","renderMajorGridLines","minorGridLineAngles","renderMinorGridLines","renderGridLines","radiusCallback","gridLineAngles","skipAngles","divs","intervals","altAxisVisible","RadarCategoryAxis","reflowLabels","skipOption","stepOption","divCount","divAngle","majorIntervals","minorIntervals","minorAngle","minorRadius","band","plotBandSlot","ring","totalDivs","slotAngle","fromValue","slotStart","PolarAxis","instanceOptions","RadarNumericAxisMixin","polarAxis","bandStyle","plotBandPoints","innerPoints","outerPoints","innerCircle","outerCircle","radarMajorGridLinePositions","radarMinorGridLinePositions","tickRadius","angleIx","angularDistance","gamma","beta","axisType","RadarNumericAxis","minorSkipStep","RadarLogarithmicAxis","CurveProcessor","dataPoints","tangent$1","Gradients","convertableToNumber","cycleUp","cycleDown","cycleIndex","field$1","getAriaTemplate","ariaTemplate","ariaContent","hasClasses","interpolateValue","mousewheelDelta","iconElement","iconOptions","predicate","createHashSet","supported","defaultErrorHandler","lteDateIndex","sortedDates","high","SASS_THEMES","ExportMixin","skipLegacy","exportPDF","imageDataURL","Point2D","Box2D","mwDelta","BAR_GAP","BAR_SPACING","BLACK$$1","SANS","SANS11","SANS12","SANS16","TRANSPARENT","WHITE$$1","lineSeriesLegendItem","areaSeriesLegendItem","areaNoMarkersSeriesLegendItem","markers","legendItem","areaSeries","rangeAreaSeries","boxPlotSeries","outliersField","meanField","_brightness","downColor","whiskers","mean","median","bulletSeries","lineSeries","radarAreaSeries","radarLineSeries","waterfallSeries","funnelSeries","pyramidSeries","trendlineSeriesDefaults","trendline","seriesDefaults","area","rangeArea","verticalRangeArea","bar","boxPlot","bubble","candlestick","column","heatmap","pie","donut","funnel","pyramid","horizontalWaterfall","ohlc","radarArea","radarLine","radarColumn","polarArea","polarLine","polarScatter","rangeBar","rangeColumn","scatter","scatterLine","verticalArea","verticalBoxPlot","verticalBullet","verticalLine","waterfall","linearTrendline","exponentialTrendline","logarithmicTrendline","polynomialTrendline","powerTrendline","movingAverageTrendline","chartBaseTheme","axisDefaults","categoryAxis","subtitle","legend","SERIES_COLORS","autoTheme","unsetColor","theme","hook","seriesTemplate","mapColor","varName","queryStyle","setInactiveOpacity","seriesTypes","inactiveOpacity","defaultFont","titleFont","paneTitleFont","labelFont","seriesPos","TEXT","SERIES","gaugeBaseTheme","diagramBaseTheme","shapeDefaults","hover","handles","selectable","connectionDefaults","tools","registerTheme","themeName","gauge","diagram","treeMap","fuse","arr1","arr2","inactiveItems","errorBars","chartArea","seriesColors","crosshair","rangePlaceholderColor","connectorDefaults","thumb","connectors","INACTIVE","INACTIVE_SHAPE","AXIS","PRIMARY","DIAGRAM_HOVER","noteStyle","sass","datavizConstants","GeometryPoint","GeometryCircle","ChartAxis","_axis","findAxisByName","ChartPane","chartsVisual","chartContainer","_pane","ChartPlotArea","_plotArea","backgroundVisual","_bgVisual","countNumbers","Aggregates","sumOrNull","avg","getField","SeriesBinder","_valueFields","_otherFields","_nullValue","_undefinedValue","valueFields","otherFields","_makeValue","canonicalFields","bindPoint","pointIx","fieldData","_bindFromArray","srcValueFields","sourceFields","srcPointFields","_bindFromObject","initialValue","srcFields","srcFieldName","sourceFieldName","percentRegex","standardDeviationRegex","ErrorRangeCalculator","errorValue","initGlobalRanges","deviationMatch","valueGetter","createValueGetter","getAverage","deviation","getStandardDeviation","errorRange","globalRange","standardError","getStandardError","getErrorRange","pointValue","percentValue","isSample","squareDifferenceSum","INITIAL_ANIMATION_DURATION","FADEIN","BORDER_BRIGHTNESS","START_SCALE","ERROR_LOW_FIELD","ERROR_HIGH_FIELD","X_ERROR_LOW_FIELD","X_ERROR_HIGH_FIELD","Y_ERROR_LOW_FIELD","Y_ERROR_HIGH_FIELD","INTERPOLATE","GAP","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","LEGEND_ITEM_HOVER","LEGEND_ITEM_LEAVE","SERIES_CLICK","SERIES_HOVER","SERIES_OVER","SERIES_LEAVE","PLOT_AREA_CLICK","PLOT_AREA_HOVER","PLOT_AREA_LEAVE","DRAG_END","DRAG_START","ZOOM_START","ZOOM","ZOOM_END","SELECT_START","SELECT_END","RENDER","SHOW_TOOLTIP","HIDE_TOOLTIP","PANE_RENDER","CHART_POINT_ROLE","CHART_POINT_CLASSNAME","CHART_POINT_ROLE_DESCRIPTION","LEGEND_ITEM_ROLE","LEGEND_ITEM_CLASSNAME","LEGEND_ITEM_ARIA_ROLE_DESCRIPTION","LOGARITHMIC","CATEGORY","INSIDE_END","INSIDE_BASE","OUTSIDE_END","MOUSEWHEEL","MOUSEWHEEL_DELAY","DRILLDOWN","DRILLDOWN_FIELD","MIN_MOVING_AVERAGE_PERIOD","GLASS","TOOLTIP_OFFSET","LINE_MARKER_SIZE","MOUSEWHEEL_ZOOM_RATE","ErrorBarBase","endCaps","valueBox","getAxis","centerBox","capsWidth","getCapsWidth","capValue","capStart","capEnd","createDefaultVisual","CategoricalErrorBar","seriesValueAxis","anyHasZIndex","appendIfNotNull","areNumbers","segmentVisible","pointVisibility","bindSegments","seriesCount","equalsIgnoreCase","evalOptions","dryRun","needsEval","excluded","filterSeriesByType","currentSeries","dateCache","WeakMap","parseDateCategory","hasGradientOverlay","isDateAxis","sampleCategory","dateCategory","singleItemOrArray","AREA_REGEX","hasValue$1","findNext","pointHasValue","outPoint","getter$$1","hasItem","createOutOfRangePoints","hasMinPoint","hasMaxPoint","missingValues","seriesMissingValues","_outOfRangeMinPoint","_outOfRangeMaxPoint","CategoricalChart","seriesCategoryAxis","valueAxisRanges","categoryPoints","seriesPoints","seriesOptions","_evalSeries","traverseDataPoints","addValue","pointOptions","seriesIx","pointType","invertAxes","plotValue","isStacked100","otherValues","categorySum","otherStack","plotRange","isStacked","positive","prevValue","isStackedBar","defaultStack","isNonGroupStack","otherValue","categoryAxisCrossingValue","stackLimits","axisName","stackName","pIx","updateStackRange","chartSeries","limitsCache","limits","errorTotals","addErrorBar","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","seriesIx$1","currentCategory","seriesIx$2","outOfRangePoint","formatPointValue","PointEventsMixin","NoteMixin","createNote","LinePoint","tooltipTracking","_rendered","createMarker","createLabelElement","getLabelText","formatValue","getAriaLabelText","markerBorder","markerBox","_childBox","childBox","reflowLabel","noteTargetBox","defaultColor","highlightVisual","halfSize","markerOptions","tooltipAnchor","clipBox","verticalAlign","horizontalAlign","overlapsBox","unclipElements","focusVisual","clearFocusFromVisual","getIndex","LineSegment","toGeometryPoints","segmentVisual","coords","getNearestPoint","StepLineMixin","calculateStepPoints","stepAxis","stepDir","previousPoint","toGeometryPoint","stepPoint","lintPoint","StepLineSegment","SplineSegment","curve","LineChartMixin","renderSegments","_segments","sortedPoints","sortPoints","pointCount","createSegment","_addSegment","nearestPoint","allPoints","nearestPointDistance","ClipAnimation","_setEnd","setX","ClipAnimationMixin","_setChildrenAnimation","animationPoints","LineChart","AreaSegment","prevSegment","stackPoints","createFill","createStroke","strokeSegments","_strokeSegments","createStrokeSegments","segmentsFromPoints","stackSegments","createStackSegments","hasStackSegment","fillSegments","hasStackSegments","fillToAxes","fillPath","crossingValue","endSlot","firstPoint","lastPoint","StepAreaSegment","SplineAreaSegment","curveProcessor","AreaChart","previousSegment","_gapStackPoints","_stackPoints","stackPoint","startIdx","endIdx","currentSeriesIx","_previousSegmentPoint","gapStackPoint","_createGapStackPoint","segmentIx","seriesIdx","AxisGroupRangeTracker","axisRanges","chartAxisRanges","chartRange","BarLabel","alignToClipBox","parentBox","addAccessibilityAttributesToVisual","AccessibilityAttributesMixin","Bar","rectVisual","createRect","strokeOpacity","getBorderColor","baseColor","borderColor","ClusterLayout","slots","slotSize","StackWrap","positionAxis","BarChart","clusterType","stackType","stackOrDefault","negativeColor","cluster","getStackWrap","stackWrap","stackGroup","wraps","_stackGroup","zeroSlot","_setAnimationOptions","pointVisual","Candlestick","ocSlot","lhSlot","realBody","mid","lines","reflowNote","_mainVisual","mainVisual","createOverlay","createBody","createLines","drawLines","lineStyle","normalColor","meanPoints","medianPoints","whiskerPoints","CandlestickChart","splitValue","BoxPlot","whiskerSlot","boxSlot","q1","q3","reflowBoxSlot","reflowWhiskerSlot","medianSlot","meanSlot","calcMeanPoints","calcWhiskerPoints","calcMedianPoints","renderOutliers","outliers","outerFence","outlierValue","markersBorder","reflowOutliers","VerticalBoxPlot","BoxPlotChart","filterOutliers","ScatterErrorBar","seriesAxes","ScatterChart","_initFields","xAxisRanges","yAxisRanges","valueErrorField","lowField","highField","createMissingValue","xAxisName","xAxis","yAxisName","yAxis","xAxisRange","yAxisRange","namedXAxes","namedYAxes","Bubble","highlightGroup","BubbleChart","_maxSize","negativeValues","updateBubblesSize","pointsCount","animationOptions","minR","minSize","maxR","minArea","areaRatio","Target","Bullet","targetValueSlot","targetSlotX","targetSlotY","targetSlot","bodyVisual","BulletChart","seriesItem","wrapData","bulletOptions","BaseTooltip","getStyle","pointColor","paddingBottom","tooltipOptions","CrosshairTooltip","formatService","initAxisName","showAt","stickyMode","formattedValue","getAnchor","ref_options","Crosshair","moveLine","getBox","dim","axisLineBox","currentAxis","ChartContainer","shouldClip","_clipBox","chartsBox","clipRect","unclipLabels","charts","ID","appendAxis","appendAxisAt","appendChart","removeAxis","removeChart","allAxes","vGridLines","hGridLines","notifyRender","axisValueField","length$1","axis$1","lineBox$1","paneIndex","PlotAreaBase","initSeries","crosshairs","originalOptions","originalSeries","_bindCache","createPanes","createCrosshairs","cached","paneDefaults","paneOptions","panes","panesLength","currentPane","crosshairOptions","currentCrosshair","removeCrosshairs","hideCrosshairs","findPane","matchingPane","findPointPane","axisToRemove","filteredAxes","chartToRemove","filteredCharts","addToLegend","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","alignAxisTo","targetAxis","targetCrossingValue","slotEdge","targetEdge","axisBox","alignAxes","xAnchor","yAnchor","xAnchorCrossings","yAnchorCrossings","leftAnchors","rightAnchors","topAnchors","bottomAnchors","paneId","paneAnchor","anchorCrossings","_overlap","_mirrored","paneYAnchor","pane$1","paneId$1","visible$1","anchor$1","anchorCrossings$1","shrinkAxisWidth","axisGroupBox","overflowX","shrinkAxisHeight","shrinked","overflowY","fitAxes","paneBox","currentAxis$1","reflowPaneAxes","autoRotateAxisLabels","groupedAxes","rotated","allPaneAxes","chartPane","remainingHeight","autoHeightPanes","percents","currentPane$1","currentPane$2","backgroundBox","axesCount","axisA","axisB","chartsBoxes","addBackgroundPaths","multipath","backgroundContainsPoint","pointsByCategoryIndex","pointsBySeriesIndex","seriesIndex","filterPoints","pointsByPointIndex","pointIndex","pointsBySeriesName","findPoint","paneByPoint","detachAxisGroupLabels","labelAxisCount","labelAxis","createLabelAxis","onAxis","isTrendline","trendlineFactory","createTrendlineSeries","modifiedSeries","forSeries","seriesByName","for","trendlineSeries","getFirstPoint","getPointBelow","_getNextPoint","_pointsByVertical","getPointAbove","getPointToTheRight","_pointsByHorizontal","getPointToTheLeft","getPointsFunc","increment","nextIndex","loopPoints","basePoint","isSingleAxis","PlotAreaEventsMixin","_dispatchEvent","SeriesAggregator","defaultAggregates","seriesFields","_seriesFields","rootAggregate","_series","_binder","fieldAggregate","canonicalName","aggregatePoints","srcPoints","_bindPoints","firstDataItem","srcValues","_bindField","setValue","DefaultAggregates","seriesType","RangeBar","fromOptions","toOptions","labelFrom","labelTo","RangeBarChart","plotLimits","RangeLinePoint","RangeAreaPoint","initLabelsFormat","fromPoint","toPoint","copyFields","fromBox","toBox","positionLabels","fromLabelPosition","toLabelPosition","RangeAreaSegment","toPoints","fromSegments","fromPath","SplineRangeAreaSegment","createCurveSegments","StepRangeAreaSegment","RangeAreaChart","fromSlot","toSlot","OHLCPoint","oPoints","cPoints","lhPoints","oSlot","cSlot","OHLCChart","WaterfallSegment","WaterfallChart","createSegments","totalCategories","summary","prevPoint","registry","calculateSlope","sourceValues","slope","intercept","xy","xMin","xMax","checkAllPositive","getTrendlineData","valueMapper","currentRange","valueGetter$1","valueGetter$2","calculateMovingAverage","period","averagePoints","lastValue","valueGetter$3","MIN_ORDER","MAX_ORDER","calculatePolynomial","X$$1","Y$$1","coefficients","Xt","B","linearRegression","valueGetter$4","valueGetter$5","seriesValues","exp","getData","categoryField","getData$1","getData$2","calculatePoints","getData$3","getData$4","getData$5","AREA_SERIES","OUT_OF_RANGE_SERIES","CategoricalPlotArea","namedCategoryAxes","valueAxisRangeTracker","_seriesPointsCache","_currentPointsCache","stack100","createCategoryAxes","aggregateCategories","createCategoryAxesLabels","createCharts","createValueAxes","filterSeries","trendlineAggregateForecast","srcSeries","aggregateSeries","paneSeries","visibleSeries","groupSeriesByCategoryAxis","groupIx","createChartGroup","createAreaChart","createRangeAreaChart","createBarChart","createRangeBarChart","createBulletChart","createCandlestickChart","createBoxPlotChart","createOHLCChart","createWaterfallChart","createLineChart","processedSeries","axisPane","outOfRangePoints","clearSeriesPointsCache","seriesSourcePoints","dateAxis","srcData","aggregator","categoryItem","categoryIdx","categoriesToAdd","defaultPaneName","stackableChartOptions","anyStackedSeries","categoryAxes","axisSeries","groupSeries","firstSeries","barChart","rangeColumnChart","bulletChart","lineChart","areaChart","rangeAreaChart","waterfallChart","axisRequiresRounding","categoryAxisName","categoryAxisIndex","centeredSeries","seriesAxis","aggregatedAxis","primaryAxis","tracker","defaultRange","baseOptions","defaultAxisRange","eventType","_eventCoordinates","pointPane","updateAxisOptions","_siblingsBySeriesIndex","_siblingsByPointIndex","_getSeriesCompareFn","_isInStackedSeries","sortableSeries","stackableSeries","targetOptions","axesOptions","Highlight","_points","arrayPoints","togglePointHighlight","toggleHandler","isHighlighted","acceptKey","mouseKey","altKey","toChartAxisRanges","Pannable","_active","_panAxes","updatedAxes","ZoomSelection","marquee","_marquee","marqueeColor","removeElement","setStyles","zoomPane","_zoomPane","_zoomPaneClipBox","_selectionPosition","elementOffset$$1","selectionPosition","_updateAxisRanges","limitValue$1","valueOrDefault$1","MousewheelZoom","rate","updateRanges","LegendLayout","DEFAULT_MARKER_SIZE","LegendItemMarker","markerHighlightOptions","ChartElement$1","rootBackground","Point$1","Box$1","BoxElement$1","ShapeElement$1","MarkerLineArea","LegendItemLine","centerY","createHighlightLine","createHighlightMarker","highlightLine","highlightMarker","LegendItemSquare","LegendItem","createContainer","markerWrap","createMarkerArea","_marker","_createMarker","_createLine","_createMarkerLine","_createSquare","_highlightOptions","_line","_markerLineArea","_square","_highlightMarkers","_toggleHighlight","_restoreMarkers","eventSink","_itemOverlay","_legendItemHover","_unsetActivePoint","CUSTOM","Legend","createContainers","createLegendTitle","createItems","userAlign","hasTitle","itemsContainer","innerElement","markersOptions","itemOptions","hasItems","getItems","legendBox","containerCustomReflow","containerReflow","alignTarget","containerBox","createTitleLayout","appendTitleLayoutContent","layout","PlotAreaFactory","_registry","trendlines","createDiv","closestHandle","Selection","_dateAxis","initOptions","createElements","onPane","leftMask","rightMask","leftHandle","rightHandle","selectionStyles","leftHandleHeight","rightHandleHeight","borderLeftWidth","borderRightWidth","mousewheel","_mousewheelHandler","_mousewheel","_domEvents","tap","_gesturestart","_gesturechange","gestureend","_gestureend","_mwTimeout","_state","_rangeEventArgs","_value","_pointInPane","modelCoords","_toModelCoordinates","bodyRect","inBody","moveTarget","oldRange","rightClick","_slot","leftMaskWidth","rightMaskWidth","toValue","zDir","relative","SharedTooltip","tooltipPoints","_slotAnchor","_defaultAnchor","categoryText","categoryFormat","slotCenter","BarChartAnimation","fromScale","BubbleAnimation","FadeInAnimation","fadeTo","PieAnimation","ScatterLineChart","missingValue","getScatterTrendlineData","samplingInterval","valueGetter$6","scatterValueGetter","xValueLimits","valueGetter$7","logValueGetter","valueGetter$8","scatterRegistry","getData$6","getData$7","getData$8","getData$9","getData$10","getData$11","XYPlotArea","xAxisRangeTracker","yAxisRangeTracker","filteredSeries","createScatterChart","createScatterLineChart","createBubbleChart","createAxes","xAxisOptions","yAxisOptions","createXYAxis","inferredDate","namedAxes","isLog","typeSamples","seriesAxisName","firstPointValue","xAxesOptions","yAxesOptions","axisPane$1","xValues","yValues","updateAxisOptions$1","PieSegment","labelText","themeLabels","animationDelay","labelsOptions","labelsDistance","lp","labelHeight","labelWidth","createSegmentVisual","borderOptions","singleSegment","tooltipAlignment","RAD_30","RAD_60","PieChartMixin","createLegendItem","legendOptions","pointVisible","legendItems","PieChart","colorsCount","anglePerValue","constantAngle","explode","evalSegmentOptions","segmentOptions","seriesConfigs","minWidth","halfMinWidth","defaultPadding","newBox","newBoxCenter","leftSideLabels","rightSideLabels","seriesConfig","labelComparator","leftLabelsReflow","rightLabelsReflow","distances","distanceBetweenLabels","distributeLabels","lr","firstBox","secondBox","_takeDistance","amount","boxX","labelDistance","boxY","hAlignLabel","_connectorLines","connectorsColor","connectorLine","centerPoint","sr","crossing","pointInCircle","autoFit","pieCenter","bboxBottom","reverseValue","originalX","sector_center","uat","ub","PiePlotArea","createPieChart","pieChart","DonutSegment","DonutChart","holeSize","totalSize","seriesWithoutSize","currentSeries$1","DonutPlotArea","createDonutChart","donutChart","PolarPlotAreaBase","createPolarAxis","createValueAxis","axisDefaultRange","valueAxisOptions","valueAxisBox","heightDiff","PolarScatterChart","valueRadius","PolarLineChart","SplinePolarAreaSegment","_polarAxisCenter","PolarAreaSegment","centerSegment","PolarAreaChart","_hasMissingValuesGap","xComparer","PolarPlotArea","scatterChart","RadarLineChart","seriesSegments","groupBySeriesIx","isFirstDataPoint","isLastDataPoint","SplineRadarAreaSegment","RadarAreaSegment","RadarAreaChart","RadarSegment","RadarClusterLayout","slotSector","RadarStackLayout","childSector","RadarBarChart","RadarPlotArea","_hasBarCharts","_isStacked100","chartOptions","FunnelSegment","chartBox","createPath","FunnelChart","labelPadding","dynamicSlopeReflow","totalHeight","firstSegment","maxSegment","lastUpperSide","previousOffset","previousHeight","nextSegment","nextPercentage","segmentSpacing","constantSlopeReflow","decreasingWidth","neckRatio","finalNarrow","dynamicSlope","dynamicHeight","PyramidChart","FunnelPlotArea","createChart","chartType","HeatmapPoint","labelColor","isRoundRect","halfBorderWidth","HeatmapChart","setRange","minLightnessOffset","hsl","colorScale","indexX","indexY","xRange","yRange","ref$2","xIndex","yIndex","xIn","yIn","HeatmapPlotArea","bindCategories","createAxisLabels","xCategories","yCategories","createHeatmapChart","firstCategory","updateAxisOptions$2","normalizedOffset","axisXItems","_getPointAxisXIndex","targetXValue","compareValues","_getPointAxisYIndex","axisYItems","targetYValue","_getPointAxisIndex","findIndex","axisItem","COLOR","FIRST","MAX","MIN","NOTE_TEXT","errorLow","errorHigh","AXIS_NAMES","MOUSEMOVE","CONTEXTMENU","MOUSELEAVE","KEYDOWN","FOCUS","BLUR","Chart","themeOptions","_initElement","_originalOptions","_theme","_initTheme","_focusState","_initHandlers","_initSurface","fontLoaded","_redraw","_attachEvents","_setElementClass","seriesCopies","aliases","alias","resolveAxisAliases","applySeriesColors","_selections","_destroySelections","_setupSelection","_noTransitionsRedraw","paneName","_model","findPaneByName","findPaneByIndex","seriesName","categoryName","pointByCategoryName","togglePointsHighlight","_sharedTooltip","_surfaceWrap","renderAs","_destroySurface","_surfaceMouseenterHandler","_surfaceMouseleaveHandler","_getModel","_destroyView","_setElementAccessibilityAttributes","_legend","_createTooltip","_createPannable","_createZoomSelection","_createMousewheelZoom","triggerPaneRender","_navState","_cancelDomEvents","_redrawFocusHighlight","ref_focusState","legendInFocus","preserveHighlight","_focusElement","_getFocusedLegendItem","description","exportOptions","clearMissingValues","_pannable","zoomable","_zoomSelection","_mousewheelZoom","_toggleDragZoomEvents","allowDrag","allowZoom","_dragZoomEnabled","_touchAction","_toggleDomEvents","drag","domEvents","toggleDrag","toggleZoom","_createSharedTooltip","themeAxisDefaults","mapAxisOptions","axisColor","applyAxisDefaults","seriesLength","commonDefaults","themeSeriesDefaults","commonThemeDefaults","cleanupNestedSeriesDefaults","applySeriesDefaults","seriesColor","_createPlotArea","_modelOptions","skipSeries","selections","_selectStart","_selectEnd","_clickHandler","_keydownHandler","_focusHandler","_blurHandler","_mousedownHandler","_mouseover","_mouseout","_toDocumentCoordinates","_updateDrilldownPoint","_resetDrilldownPoint","_focusPoint","_startDrilldown","_focusLegendItem","obj$1","_shouldAttachMouseMove","_hoveredPoint","_plotAreaHovered","_hasInactiveOpacity","_activeChartInstance","_applySeriesOpacity","_updateSeriesOpacity","_stopChartHandlers","_gestureDistance","_clearFocusedElement","_zooming","mousewheelZoom","previousGestureDistance","_drawingChartElement","leave","_startNavigation","_suppressHover","ranges$1","_endNavigation","_mousewheelZoomRate","totalDelta","chartEvent","_getChartElement","_elementPadding","_padding","drawingElement","sharedTooltip","_startHover","_trackSharedTooltip","_propagateClick","handlingTap","_isLegendBeforeChart","legendPosition","_preventInitialPointFocus","_focusFirstLegendItem","_focusFirstPoint","focusedElement","isLegendBeforeChart","_navigatePoints","_navigateLegend","_hideTooltip","focusState","moveFocus","focusedPoint","_displayTooltip","cycleFunc","focusedLegendItemIndex","_hasFocus","_focusChart","omitHighlight","_setElementActiveDescendant","_showSeriesInactiveOpacity","_showInactiveOpacity","_clearElementActiveDescendant","_pseudoFocusedElement","_createPseudoFocusedElement","pseudoElement","_hideInactiveOpacity","activePoint","_activePoint","_updateHoveredPoint","_displayInactiveOpacity","multipleSeries","highlightPoints","chartInstance","_chartInstanceFromPoint","inactivePoints","_getInactivePoints","_getInactiveOpacityForSeries","_getAllPointsOfType","hoveredPoint","drilldown","_drilldownState","resetOpacity","currSeries","defaultOpacity","_getDefaultOpacityForSeries","activeSeries","hasDefaultInactiveOpacity","hasInactiveOpacity","defaultInactiveOpacity","_mouseMoveTrackHandler","_mouseMoveTracking","seriesPoint","_trackCrosshairs","overPlotArea","_tooltipCategoryIx","_sharedHighlight","pointArgs","hoverArgs","hideElements","keepTooltipOpen","_deferRedraw","_clearRedrawTimeout","_redrawTimeout","bindCategoryAxisFromSeries","uniqueCategories","seriesOnAxis","hasCategoryBinding","seriesWithData","categorySamples","_isBindable","transitionsState","updateMouseMoveHandler","applyOptions","setDirection","setIntlService","noTransitionsRedraw","DATA_FIELDS","fieldValue","originalValue","nullValue","BREADCRUMB","ARIA_HIDDEN","CLICK","DOT","breadcrumbStyles","textboxWrapper","link","delimiter","rootItem","rootLink","overflowIcon","focused","hidden","inputWrapper","Breadcrumb","_editable","bindToLocation","_resizeHandler","navigational","rootIcon","delimiterIcon","rootTitle","_update","_generateSegments","_split","_path","previousDomItems","prevAll","previousItems","_getItems","isRoot","_edit","oldValue","shouldRestoreValue","isEnter","isEsc","isNavigational","canNavigate","_wrapperKeydown","_wrapperClick","_wrapperFocus","_wrapperBlur","elementIsInput","isLastSegment","isOnlyRoot","showIcon","showText","itemClass","linkClass","renderDelimiter","itemTemplate","iconElm","delimiterElm","encoded","linkElm","linkClasses","getLinkClasses","_displayOverflowIcons","_shrinkItems","lastHidden","delimiterWidth","availableWidth","_showItem","overlayWidth","_stretchItems","trail","ChartBreadcrumb","_attachChartEvents","_renderBreadcrumb","breadcrumb","_onChartDrilldown","_onChartDrilldownLevelChange","resetDrilldownLevel","getKendoChart","breadcrumbElement","_onBreadcrumbClick","KendoChart","MOUSELEAVE_NS","DRILLDOWN_LEVEL_CHANGE","DATABOUND","LEAVE","ChartInstanceObserver","legendItemClick","_seriesVisibility","SeriesVisibilityState","_initDataSource","_bindSeries","_bindCategories","_getThemeOptions","_sourceSeries","setDataSource","_hasDataSource","_onDataChanged","_dataChangeHandler","_hasData","_destroyCrosshairTooltips","findSeries","ChartSeries","findSeriesByName","_createSeries","findSeriesByIndex","originalChartArea","_seriesOptions","_initChart","_createChart","_isRtl","_onInit","_initTooltip","tooltips","_crosshairTooltips","_getCrosshairTooltip","_showTooltip","_onRender","_copyMembers","_tooltipleave","_onLegendItemClick","_legendItemClick","_onDrilldown","drilldownSeriesFactory","resolved","_onDrilldownData","drilldownSeries","_bindData","groupedSeries","grouped","seriesVisibility","applyByGroup","applyByIndex","seriesData","_groupIx","categoriesData","_bindCategoryAxis","proxyMembers","createProxyMember","nameTemplate","seriesClone","legacyTemplate","groupNameTemplate","_groupValue","PDFMixin","persistSeriesVisibility","saveState","geom","mobileScrollerSelector","_mobileScroller","_closeTooltipHandler","_closeTooltip","_clearShowTimeout","sharedTemplate","colspan","colorMarker","nameColumn","sharedTemplateIterator","_ensureElement","showTimeout","fakeContainer","normalizeStyle","_sharedContent","_pointContent","forceHide","_hideElement","fadeOut","always","tooltipTemplate","xLow","xHigh","yLow","yHigh","_chart","_filterPoints","_clearFields","toggleVisibility","_filterData","ChartLegend","mapFn","sortAsc","y0","sortSource","sortTarget","sortLinks","targetLinks","sourceLinks","calcLayer","maxDepth","Sankey$1","nodesOptions","links","nodeWidth","nodePadding","targetColumnIndex","loops","autoLayout","calculate","connectLinksToNodes","calculateNodeValues","circularLinks","calculateNodeHeights","columns","calculateNodeDepths","calculateNodeColumns","calculateNodeBreadths","applyNodesOffset","calculateLinkBreadths","nodesMap","sourceId","targetId","currDepth","currentNodes","nodesLength","currentHeight","eachNode","columnWidth","layer","x0","kSize","uncurlLinksToRight","uncurlLinksToLeft","kValue","targetTopPos","arrangeNodesVertically","sourceTopPos","arrangeUp","arrangeDown","yPos","currentY","link$1","calculateSankey","rotationDirection","p1x","p1y","p2x","p2y","p3x","p3y","expression1","expression2","SankeyElement","SankeyElement$$1","nodeColor","nodeColors","resolveNodeOptions","nodeOptions","Link","xC","BEFORE","Label","totalWidth","nodeBox","textSizeBox","goesOutside","textY","textOrigin","textRect","resolveLabelOptions","Title$1","Title$$1","drawingRect","sortData","areaBackground","areaOpacity","LINK","NODE","Sankey","_setOptions","_initResizeObserver","_destroyResizeObserver","_initSurfaceElement","_createSurface","ResizeObserver","entries","contentRect","_resizeObserver","mouseenter","mouseleave","currentTheme","setLinksOpacity","linksVisuals","linkOptions","setLinksInactivityOpacity","linkValue","targetType","isLink","isNode","isLegendItem","highlightLinks","nodeVisual","nodesVisuals","tooltipTimeOut","tooltipShown","followPointer","tooltipElType","mouseEvent","isLeft","isTop","tooltipData","popupOffset","popupAlign","nextDelay","_destroySurfaceElement","disconnect","_getSize","_render","titleBox","calcOptions","sankeyOptions","disableAutoLayout","sankeyBox","legendArea","titleHeight","calculatedNodes","sankey","nodeEl","nodeOps","nodeInstance","labelVisual","permutation","columnsLength","crosses","link1","link2","f3","f4","linksLength","lNext","nextLink","crossesValue","minCrosses","bestResult","sankeyContext","titleVisual","visualNodes","sortedLinks","sourceNode","targetNode","linkOps","colorType","resolveLinkOptions","linkVisual","diagramWidth","textOps","legendVisual","createSankeyData","linksMap","existingValue","nodesId","nodesArray","linksArray","tooltipContentWrapStyle","TootipText","Square","TooltipTemplates","SankeyTooltip","setContent","setPosition","offsetOption","ContentTemplates","KendoSankey","_initSankey","strokeColor","_createSankey","tooltipShow","tooltipHide","nodeTemplate","linkTemplate","currentTemplate","tooltipUnits","DrawingGroup","DrawingPath","ANGULAR_SPEED","ARROW_POINTER","BAR_POINTER","DEFAULT_LINE_WIDTH","DEGREE","LINEAR","RADIAL_POINTER","RADIAL_RANGE_POINTER","Path$1","buildLabelElement","styleGeometry","styleBox","getRange","Gauge","contextService","pointerValue","_setValueOptions","_draw","_visuals","allValues","arrayValues","_toggleTransitions","_surfaceSize","gaugeArea","_createGaugeArea","_createModel","_gaugeAreaMargin","areaGeometry","_surfaceElement","defaultSize","_defaultSize","Path$2","Group$2","renderAxisTick","tickRenderOptions","renderTicks","tickGroup","LinearScale","renderLabels","scaleLine","renderLine","scaleTicks","renderRanges","linePath","Pointer","_oldValue","repaint","LinearPointer","track","pointerBox","pointerRangeBox","trackBox","trackSize","pointerHalfSize","getElementOptions","_margin","ArrowLinearPointerAnimation","toScale","translateX","translateY","Path$3","ArrowLinearPointer","pointerShape","elementOptions","BarLinearPointerAnimation","newPoints","oldPoints","speed","Group$3","Path$4","BarLinearPointer","minSlot","sizeAxis","pointerPath","oldShape","renderTrack","trackOptions","Group$1","LinearGauge","bboxX","bboxY","_shrinkScaleWidth","_getBox","_alignElements","_shrinkElements","_buildVisual","scaleElements","pointerType","plotAreaBox","scaleBox","GEO_ARC_ADJUST_ANGLE","Path$5","Group$5","drawTicks","tickAngles","getRadiusX","tickStart","tickEnd","rangeSegment","RadialScale","renderArc","labelElements","repositionRanges","hasRanges","ticksSize","labelsGroup","rangeDistance","isInside","hasLabelElements","setRadiusX","setRadiusY","paddingWidth","paddingHeight","labelPos","labelElement","prevLabelPos","labelTransform","rangeRadius","getRangeRadius","rangeSegments","segmentsCount","rangeGeom","tickArc","majorTickAngles","allTicks","_tickDifference","minorTickAngles","normalizeTickAngles","tickCount","repositionTicks","minor","newPoint","xDiff","yDiff","RadialPointerAnimation","newAngle","oldAngle","Group$6","Path$6","RadialPointer","setAngle","_renderNeedle","_renderCap","capSize","cap","needleColor","needlePath","capColor","Group$4","RadialGauge","_initialPlotArea","alignScale","_buildPointers","midDiff","oldDiff","getDiff","staleFlag","getPlotBox","scaleArc","plotBbox","plotBox","plotBoxCenter","paddingX","paddingY","pointersArr","ArcScale","rangeLineCap","placeholderRangeAngle","geometry$$1","setEndAngle","setStartAngle","addRange","RangePointerAnimation","startColor","currentColor","RangePointer","rangeColor","ArcGauge","centerLabelPosition","yLimit","CircularGauge","lowerName","_createInstance","_copyFields","gaugeType","_gaugeType","RadialGaugeWidget","LinearGaugeWidget","ArcGaugeWidget","_centerTemplate","_centerElement","centerTemplate","centerElement","_getCenterElement","CircularGaugeWidget","createExportMethod","exportMethods","numberRegex","alphanumericRegex","getNext","Encoding","quietZoneLength","addQuietZone","initValue","addData","addCheckSum","invalidCharacterError","character","encodings","code39Base","minBaseUnitLength","addStart","addCharacter","pushCheckSum","prepareValues","charData","characterMap","addBase","code39ExtendedBase","addExtended","extendedMappings","shiftCharacters","dataCharacter","specialAsciiCodes","shiftValuesAsciiCodes","code39","checkSumMod","minRatio","maxRatio","gapWidth","splitCharacter","patternString","minBaseUnit","minHeight","getBaseUnit","getBaseWidth","characterLength","addPattern","addCharacterGap","patternMappings","w","W","A","C","I","J","N","O","P","R","S","U","V","code39extended","SHIFT0","SHIFT1","SHIFT2","SHIFT3","code93","cCheckSumTotal","kCheckSumTotal","setBaseUnit","TERMINATION_BAR","checkValues","_getCheckValues","checksum","_findCharacterByValue","cValue","wightedSum","weightedValue","code93extended","state128","encoding","state128AB","FNC4","states","_initMoves","isCode","encodingState","_moves","maxLength","numberMatch","_moveFNC","_shiftState","_moveState","fnc","previousState","SHIFT","states128","next4","dependentStates","_initSubStates","subState","_getSubState","_initSubState","_pushStart","pushData","subStates","_getAll","FNC1","startState","startAI","endAI","nextStart","separatorLength","regexSeparators","getBySeparator","getByLength","validate","getAI","unsupportedAIError","applicationIdentifiers","multiKey","ids","code128Base","_initStates","checkSum","getNextState","STOP","code128a","code128b","code128c","code128","msiBase","checkSumLength","checkSums","checkSumType","Modulo10","evenSum","oddSum","odd","Modulo11","checkValue","weightedSum","Modulo11Modulo10","mod11Value","Modulo10Modulo10","mod10Value","msimod10","msimod11","msimod1110","msimod1010","code11","kCheckSumMinLength","DASH_VALUE","DASH","getWeightedSum","postnet","VALID_CODE_LENGTHS","DIGIT_SEPARATOR","baseHeight","ean13","calculateChecksum","leftKey","leftPart","rightPart","addPieces","addSide","keyTable","arrToAdd","limitedHeight","even","ean8","Barcode","surfaceWrap","textToDisplay","textMargin","barHeight","_getBackground","_getText","_bandsGroup","_getBands","_textbox","terminator","NUMERIC","ALPHA_NUMERIC","BYTE","powersOfTwo","powersOfTwoResult","generatorPolynomials","irregularAlignmentPatternsStartDistance","versionsCodewordsInformation","totalDataCodewords","errorCodewordsPerBlock","finderPattern","alignmentPattern","errorCorrectionPatterns","paddingCodewords","maskPatternConditions","alphaPattern","alphaRegex","alphaNumericRegex","byteRegex","crossPattern","squarePattern","toDecimal","toBitsString","splitInto","QRDataMode","getVersionIndex","getBitsCharacterCount","bitsInCharacterCount","getModeCountString","modeIndicator","getStringBitsLength","modes","inputLength","mod3","characters","mode","modeInstances","FreeCellVisitor","startColumn","getNextCell","getNextRemainderCell","fillFunctionCell","matrices","bit","fillDataCell","fillData","blocks","block","codewordIdx","cellVisitor","blockIdx","padDataString","dataString","dataBitsCount","terminatorIndex","paddingCodewordIndex","xorPolynomials","multiplyPolynomials","multiplyByConstant","generatePowersOfTwo","firstPolynomial","secondPolynomial","generateGeneratorPolynomials","generateErrorCodewords","errorCodewordsCount","generator","generatorPolynomial","steps","errorCodewords","getBlocks","dataStream","versionCodewordsInformation","dataBlock","blockCodewordsCount","groupBlocksCount","messagePolynomial","codeword","codewordStart","dataBlocks","errorBlocks","versionGroups","chooseMode","minNumericBeforeAlpha","minNumericBeforeByte","minAlphaBeforeByte","previousMode","modeString","numeric","numericMatch","alphaMatch","alphaNumeric","alphaNumericMatch","getModes","nextMode","getDataCodewordsCount","getVersion","dataCodewordsCount","errorCorrectionLevel","getDataString","encodeFormatInformation","encodedString","encodeBCH","codeLength","generatorNumber","polynomialLength","valueNumber","valueString","dividePolynomials","numberX","numberY","yLength","xLength","getNumberAt","initMatrices","modules","addFormatInformation","encodeVersionInformation","addVersionInformation","quotient","mod","addCentricPattern","addFinderSeparator","nextX","nextY","addFinderPatterns","addAlignmentPatterns","startDistance","addTimingFunctions","scoreMaskMatrixes","scores","previousBits","darkModules","adjacentSameBits","scoreFinderPatternOccurance","scoreAdjacentSameBits","calculateDarkModulesRatioScore","rowColumn","adjacentBits","mod5","EncodingResult","IsoEncoder","getEncodingResult","inputString","UTF8Encoder","encodingMode","utfBOM","initialModeCountStringLength","encodeCharacter","bytesCount","getBytesCount","bc","significantOnes","QRCodeDataEncoder","encodeData","encodingResult","versionInformation","optimalMatrix","QRCodeDefaults","DEFAULT_SIZE","QUIET_ZONE_LENGTH","DEFAULT_ERROR_CORRECTION_LEVEL","DEFAULT_BACKGROUND","DEFAULT_DARK_MODULE_COLOR","MIN_BASE_UNIT_SIZE","QRCode","quietZoneSize","contentSize","errorCorrection","_calculateBaseUnit","_renderBackground","_renderMatrix","_hasCustomLogo","_renderLogo","_isSwiss","_renderSwissCode","qrSize","imageRect","logoSize","_getLogoSize","logoUrl","imageUrl","crossSize","crossOffset","_renderShape","matrixSize","defautLogoSize","QRCodeFunctions","QRCodeFields","FadeOutAnimation","_initialOpacity","NavigatorHint","chartPadding","scroll","minPos","clearHideTimeout","_visible","tooltipStyle","borderTopWidth","_hideTimeout","_hideAnimation","NAVIGATOR_PANE","NAVIGATOR_AXIS","DEFAULT_PANE","Navigator","chartObserver","clean","_redrawSelf","initSelection","mainAxis","axisClone","ClonedObject","selectStart","selectEnd","filterAxes","redrawSlaves","slavePanes","navigatorAxis","naviRange","inNavigator","liveDrag","showHint","readSelection","ref_selection_options","_zoom","fromIx","toIx","_zoomEnd","__navi","naviOptions","attachAxes","attachSeries","valueAxes","justifyAxis","_collapse","autoBindElements","user","navigatorSeries","dateField","StockChart","stockDefaults","destroyNavigator","_fullRedraw","_dirty","partialRedraw","_seriesCount","copyNavigatorCategories","KendoStockChart","StockInstanceObserver","navigatorFilter","navigatorCreated","_initNavigatorOptions","navigatorOptions","isTouch","isFirefox","hasServerFiltering","hasSelect","dummyAxis","buildFilter","_onNavigatorCreated","_navigator","_initNavigatorDataSource","dsOptions","_navigatorDataChangedHandler","_onNavigatorDataChanged","_navigatorDataSource","_bindNavigatorSeries","naviCategories","axesLength","_removeNavigatorDataSource","_onNavigatorFilter","navigatorDataSource","SharedTooltip$1","NO_CROSSHAIR","wrapNumber","Sparkline","_initialWidth","stage","displayState","_autoWidth","inline","_calculateWidth","currentChart","pointWidth","normalizeOptions","KendoSparkline","SparklineTooltip","renderPos","renderSize","sqr","romanToArabic","memoize","isUnicodeLetter","RX_UNICODE_LETTER","withExit","Return","Location","lat","lng","DISTANCE_ITERATIONS","DISTANCE_CONVERGENCE","DISTANCE_PRECISION","FORMAT","loc","datum","greatCircleTo","bearing","datums","WGS84","fromLat","fromLng","dToR","azimuthFrom","azimuthTo","prevLambda","sinLambda","cosLambda","sino","cosA2","coso","cos2om","sigma","U1","sinU1","cosU1","U2","sinU2","cosU2","lambda","converged","sinA","u2","deltao","fromLngLat","ll","fromLatLng","Extent","nw","se","containsAny","locs","include","includeAll","edges","sw","extent","World","Attribution","_extent","_itemText","inZoomLevel","_inZoomLevel","minZoom","maxZoom","inArea","_inArea","button","BUTTONS","_keyroot","panStep","_pan","ZoomControl","zoomStep","PI_DIV_4","Mercator","MAX_LNG","MAX_LAT","INVERSE_ITERATIONS","INVERSE_CONVERGENCE","centralMeridian","clamp","proj","lng0","_projectLat","ecc","ts","con","_inverseY","ecch","phi","dphi","SphericalMercator","Equirectangular","EPSG3857","_proj","_tm","_itm","toLocation","crs","EPSG3395","EPSG4326","projections","layers","Layer","_beforeReset","_panEnd","_activate","_updateAttribution","_deactivate","_applyExtent","_setVisibility","matchMinZoom","matchMaxZoom","inside","attribution","ShapeLayer","_initRoot","_markers","_dataChange","_translateSurface","_load","_clearMarkers","_loader","GeoJSONLoader","shapeCreated","cancelled","featureCreated","_panning","locationToView","locator","defaultStyle","unwrap","_loadGeometryTo","_featureCreated","_shapeCreated","_loadPolygon","_setLineFill","_loadPoint","_loadShape","rings","_buildPolygon","geojson","features","geometries","BubbleLayer","locationField","opt","scaleType","_scaleType","_createSymbol","_drawSymbol","scales","symbols","SqrtScale","domain","_domain","domainRange","outputRange","_ratio","rel","geo","square","drawingUtil","TileLayer","subdomains","viewType","_viewType","locationToLayer","viewOrigin","tileTitle","_updateView","TileView","extentToPoint","pool","TilePool","tileSize","urlTemplate","_center","_viewOrigin","pointToTileIndex","tileCount","firstTileIndex","indexToPoint","subdomainText","subdomainIndex","_tileTitle","tile","createTile","currentIndex","tileOptions","wrapIndex","roundPoint","subdomain","errorUrlTemplate","wrapValue","ImageTile","errorUrl","urlResult","urlOptions","quadkey","_create","maxDist","BingLayer","_scheme","_onMetadata","_fetchMetadata","imagerySet","uriScheme","resourceSets","resource","imageUrlSubdomains","zoomMin","zoomMax","_addAttribution","BingView","imageryProviders","coverageAreas","tileQuadKey","digit","quadKey","bing","MarkerLayer","_markerClick","titleField","_addOne","Marker","addTo","getLocation","getTitle","renderTooltip","contentTemplate","contentUrl","_getOrigin","_initScroller","_initMarkers","_initControls","_initLayers","controls","layerDefaults","markerDefaults","wraparound","scroller","zoomControl","_setExtent","_getExtent","_layerSize","layerToLocation","viewToLocation","eventOffset","eventToView","eventToLayer","eventToLocation","_setOrigin","_origin","layerWidth","layerHeight","_zoomAround","pivot","_createAttribution","_createNavigator","_createZoomControl","_createControlElement","defaultPos","posSelector","_navigatorPan","_navigatorCenter","bounds","_virtualSize","_scrollEnd","_zoomControlChange","_scroll","_scaleStart","_doubleTap","_scrollOffset","_panComplete","_panEndTS","_scaleToZoom","gestureCenter","centerLocation","tiles","_resetScroller","xBounds","yBounds","_renderLayers","scrollWrap","toZoom","fromZoom","Utils","isNearZero","isDefined","isUndefined","isBoolean","isType","simpleExtend","initArray","serializePoints","res","deserializePoints","randomInteger","DFT","getMatrixAngle","getMatrixScaling","findAngle","sngXComp","sngYComp","findRadian","thisRef","what","fold","constraint","bisort","sortfunc","Easing","Ticker","adapters","lastTime","_this","timerDelegate","onTimerEvent","addAdapter","onComplete","removeHandler","caller","onStep","seekTo","seekFromTo","intervalId","initState","propagate","movement","Range","rangeIntegerScale","EPSILON","plus","minus","times","lengthSquared","middleOf","toPolar","useDegrees","factor","halfpi","Polar","isOnLine","o1","u1","inflate","PathDefiner","rotatedBounds","staicPoint","adornerCenter","thisCenter","scaled","rectBottomRight","intersectLine","start1","end1","start2","end2","isSegment","tangensdiff","Empty","Intersect","rectWithLine","rects","reverseAngle","RectAlign","alignValues","_singleAlign","_left","_right","stretch","_stretch","_top","_middle","_bottom","alignCalc","applyRect","fromSVGMatrix","vm","fromMatrixVector","fromList","translation","scaling","nums","MatrixVector","fromMatrix","randomId","Geometry","_distanceToLineSquared","pt1","pt2","vx","vy","distanceToLine","distanceToPolyline","minimum","HashTable","_buckets","_createGetBucket","_bucketExists","containsKey","hashId","hashes","_hashes","bucket","ht","_hashString","_objectHashId","_hashId","Dictionary","dictionary","_hashTable","forEachValue","forEachKey","Queue","enqueue","kv","outgoing","incoming","weight","associatedShape","shortForm","isVirtual","isIsolated","isLinkedTo","getComplement","getChildren","getParents","balance","adjacentTo","removeLink","hasLinkTo","degree","incidentWith","getLinksWith","getNeighbors","neighbors","connection","sourceFound","targetFound","associatedConnection","getCommonNode","isBridging","v1","v2","getNodes","changeSource","changeTarget","changesNodes","oldSource","oldTarget","directTo","createReverseEdge","reversed","Graph","idOrDiagram","_nodeMap","_hasCachedRelationships","cacheRelationships","forceRebuild","assignLevels","startNode","visited","getConnectedComponents","componentIndex","setItemIndices","componentId","_collectConnectedNodes","components","addNodeAndOutgoings","setIds","nodeIndex","nextId","calcBounds","getSpanningTree","_addNode","levelCount","ni","cn","newLink","addLink","treeLevels","takeRandomNode","excludedNodes","incidenceLessThan","isHealthy","hasNode","sourceOrLink","addExistingLink","foundSource","getNode","addNode","foundTarget","removeAllLinks","hasLink","linkOrId","nodeOrId","_removeNode","removeNode","areConnected","n1","n2","layoutRect","newNode","newLinks","saveMapping","nodeMap","linkMap","nOriginal","nCopy","linkOriginal","linkCopy","linearize","addIds","depthFirstTraversal","foundNode","_dftIterator","breadthFirstTraversal","_stronglyConnectedComponents","excludeSingleItems","lowLinks","connected","component","findCycles","isAcyclic","isSubGraph","otherArray","thisArray","makeAcyclic","oneNode","rev","intensityCatalog","flowIntensity","catalogEqualIntensity","intensity","sourceStack","targetStack","targetLink","sources","si","sourceLink","ril","vertexOrder","kk","reversedEdges","Predefined","EightGraph","Mindmap","ThreeGraph","BinaryTree","levels","createBalancedTree","Linear","Tree","siblingsCount","Forest","trees","createBalancedForest","Workflow","Grid","graphString","previousLink","graph","lin","_addShape","kendoDiagram","undoable","addShape","_addConnection","connect","createDiagramFromGraph","doLayout","randomSize","gli","sourceShape","targetShape","SpringLayout","layoutGraph","limitToView","shi","news","counter","lastAdded","treeCount","createRandomConnectedGraph","nodeCount","maxIncidence","isTree","poolNode","randomAdditions","randomDiagram","shapeCount","normalVariable","Markers","none","arrowStart","filledCircle","arrowEnd","diffNumericOptions","Scale","Translation","toMatrixVector","Length","Rotation","CompositeTransform","_transform","_renderTransform","rotateMatrix","scaleMatrix","translatePoint","AutoSizeableMixin","_setScale","originWidth","_originWidth","originHeight","_originHeight","_setTranslate","_initSize","autoSize","_updateSize","_diffNumericOptions","_originSize","drawingContainer","_hover","_measured","_boundingBox","VisualBase","normalizeDrawingOptions","_fill","getColor","_stroke","strokeOptions","fillOptions","GradientClass","TextBlock","_textColor","_font","_initText","fontFamily","fontOptions","fontStyle","fontWeight","sizeChanged","Rectangle","_initPath","_setPosition","_drawPath","sizeOptions","sizeOptionsOrDefault","MarkerBase","_transformToPath","CircleMarker","positionMarker","targetSegment","ArrowMarker","_linePoints","MarkerPathMixin","_getPath","_normalizeMarkerOptions","startCap","endCap","_removeMarker","_createMarkers","markerType","_positionMarker","_capMap","_redrawMarker","pathChange","pathOptions","pathCapType","optionsCap","_redrawMarkers","_createElements","_setData","Line","Polyline","_updatePath","_pointsDiffer","currentPoints","differ","_initImage","_childrenChange","toFront","toBack","_reorderChildren","toIndex","drawingChildren","fixedPosition","childBoundingBox","_includeInBBox","toDrawingRect","_initCircle","circleOptions","_circle","Canvas","_translate","_viewBox","clearHtml","drawingOptions","Cursors","grip","cross","south","east","west","north","rowresize","colresize","HIT_TEST_DISTANCE","ITEMBOUNDSCHANGE","ROTATED","TARGET","HANDLE_NAMES","PositionAdapter","layoutState","froms","tos","subjects","getShapeById","LayoutUndoUnit","initialState","finalState","_initialState","_finalState","undo","setState","redo","conn","ticker","CompositeUnit","undoUnit","ConnectionEditUnit","redoSource","redoTarget","_redoSource","_redoTarget","_undoSource","_undoTarget","_updateConnector","updateModel","ConnectionEditUndoUnit","undoSource","undoTarget","DeleteConnectionUnit","targetConnector","DeleteShapeUnit","TransformUnit","undoStates","adorner","redoStates","refreshBounds","AddConnectionUnit","AddShapeUnit","deselect","PanUndoUnit","initialPosition","finalPosition","finalPos","RotateUnit","undoRotates","redoRotates","redoAngle","_angle","_innerBounds","_initialize","ToFrontUnit","initialIndices","_toIndex","ToBackUnit","UndoRedoService","capacity","begin","commit","execute","_restart","addCompositeItem","EmptyTool","toolService","tryActivate","getCursor","ScrollerTool","tool","scrollable","movableCanvas","virtualScroll","noMeta","hoveredItem","hoveredAdorner","_hoveredConnector","scrollPos","_storePan","PointerTool","selectSingle","_hitTest","_resizingAdorner","isDragHandle","connections","undoRedoService","SelectionTool","isSelected","selectArea","ConnectionTool","connector","_createConnection","_c","canDrag","connectionHandle","_connectionManipulation","_removeHover","activeConnection","_cachedTouchTarget","cachedTouchTarget","sourceConnector","Shape","getConnector","_syncConnectionChanges","_connectorsAdorner","ConnectionEditTool","isActive","handleName","testKey","ToolService","activeTool","_updateHoveredItem","_activateTool","_updateCursor","updateHovered","keyDown","metaKey","toRemove","_triggerRemove","_syncChanges","_destroyToolBar","_discardNewConnection","selectAll","wheel","zoomRate","zoomOptions","setTool","addToSelection","newConnection","disabledShape","hit","selectedConnections","_selectedItems","Connection","_hitTestItems","_hitTestElements","shapeHit","connectionHit","hitTestShapeConnectors","mainLayer","ConnectionRouterBase","LinearConnectionRouter","hitTest","getBounds","PolylineRouter","CascadingRouter","SAME_SIDE_DISTANCE_RATIO","routePoints","_connectorPoints","_floatingPoints","_resolvedSourceConnector","_resolvedTargetConnector","sourcePoint","targetPoint","_connectorSides","boundsPoint","secondarySign","_connectorSide","sideDistance","minSide","shapeBounds","sides","_sameSideDistance","pointX","pointY","sourceConnectorSide","targetConnectorSide","deltaX","sameSideDistance","shiftX","shiftY","cascadeStartHorizontal","_startHorizontal","sourceSide","AdornerBase","_adorners","ConnectionEditAdorner","_ts","sp","tp","spVisual","epVisual","_initialSource","_initialTarget","sourcePointDistance","targetPointDistance","sourceHandle","targetHandle","modelToLayer","ConnectorsAdorner","_refreshHandler","ctr","_clearVisual","ConnectorVisual","_keepCachedTouchTarget","visualChildren","ResizingAdorner","_manipulating","_initSelection","_createHandles","_internalChange","_rotatedHandler","_resizable","_handleOptions","_bounds","handleBounds","handlesCount","_getHandleBounds","_rotationOffset","_startAngle","_rotates","_positions","initialRotates","initialStates","handleOptions","_sp","_cp","_lp","shapeStates","visibleHandles","dragging","newBounds","staticPoint","dtl","dbr","changed","_truncateAngle","_rotating","shouldSnap","thr","_truncateDistance","hitToOppositeSide","_displaceBounds","newCenter","oldBounds","_truncatePositionToGuides","ruler","truncatePositionToGuides","_truncateSizeToGuides","truncateSizeToGuides","snap","snapOptions","snapAngle","snapSize","_diffStates","_syncShapeChanges","rotationThumb","_rotationThumbBounds","Selector","_ep","_adorn","visualBounds","modelToView","_visualBounds","HyperTree","LayoutBase","subtype","nodeDistance","iterations","horizontalSeparation","verticalSeparation","underneathVerticalTopOffset","underneathHorizontalOffset","underneathVerticalSeparation","componentSpacingX","componentSpacingY","layerSeparation","layeredIterations","startRadialAngle","endRadialAngle","radialSeparation","radialFirstLevelSeparation","keepComponentsInOneRadialLayout","ignoreContainers","layoutContainerChildren","ignoreInvisible","animateTransitions","gridLayoutComponents","maxWidth","startX","resultLinkSet","resultNodeSet","moveToOffset","boundingRect","currentWidth","deltax","deltay","nodeBounds","newpoints","currentHorizontalOffset","transferOptions","DiagramToHyperTreeAdapter","shapeMap","edgeMap","finalNodes","finalLinks","ignoredConnections","ignoredShapes","hyperMap","hyperTree","finalGraph","_renormalizeShapes","_renormalizeConnections","mapConnection","mapShape","getEdge","listToRoot","containerGraph","parentContainer","firstNonIgnorableContainer","isContainer","_isIgnorableItem","isContainerConnection","isDescendantOf","scope","isIgnorableItem","isCollapsed","_isVisible","_isTop","isShapeMapped","leastCommonAncestor","al","xa","xb","_isCollapsed","sink","sinkNode","areConnectedAlready","newEdge","finalNodeSet","LayoutState","initialTemperature","temperature","guessBounds","_expectedBounds","refineStage","_repulsion","_attraction","_shake","rho","_InverseSquareForce","wn","hn","wm","hm","_SquareForce","squareSize","TreeLayoutProcessor","treeGraph","layoutSwitch","layoutLeft","setChildrenDirection","setChildrenLayout","TreeDirection","Width","arrange","layoutRight","layoutUp","layoutDown","treeDirection","layoutRadialTree","previousRoot","calculateAngularWidth","radialLayout","Angle","tipOverTree","startFromLevel","aw","diameter","sectorAngle","sortChildren","basevalue","nl","normalizeAngle","deltaTheta","deltaThetaHalf","parentSector","childAngleFraction","setPolarLocation","BoundingRectangle","includeStart","rootDirection","rootLayout","childrenLayout","givenSize","shapeWidth","shapeHeight","AngleToParent","SectorAngle","pp","childrenwidth","selfLocation","male","female","leftcount","tipOverTreeStartLevel","TreeLayout","layoutComponents","getTree","getTreeForRoot","LayeredLayout","_initRuntimeProperties","downstreamLinkCount","upstreamLinkCount","uBaryCenter","dBaryCenter","upstreamPriority","downstreamPriority","gridPosition","_prepare","targetLayer","layerMap","layerCount","sortedNodes","o2","o1layer","o2layer","minLayer","linksTo","_dummify","_optimizeCrossings","_swapPairs","arrangeNodes","_moveThingsAround","_dedummify","setMinDist","minDist","layerIndex","minDistances","getMinDist","i1","i2","placeLeftToRight","leftClasses","leftPos","classNodes","placeLeft","POSITIVE_INFINITY","rightSibling","nodeLeftClass","upNodes","downNodes","neighbor","intDiv","placeRightToLeft","rightClasses","rightPos","placeRight","NEGATIVE_INFINITY","leftSibling","nodeRightClass","_getLeftWing","leftWing","computeClasses","_getRightWing","rightWing","wingPair","currentWing","wing","ndsinl","_nodesInLink","vnode","wings","classIndex","_isVerticalLayout","_isHorizontalLayout","_isIncreasingLayout","_gridPositionComparer","currentNode","currDown","downNode","placed","sequenceStart","virtualStartIndex","_firstVirtualNode","virtualStart","sequence","_sequencer","virtualEnd","nextVirtualNode","virtualEndIndex","adjustDirections","fromLayerIndex","layerIncrement","maximumHeight","prevBridge","prevBridgeTarget","nextBridge","nextBridgeTarget","getNeighborOnLayer","clayer","j1","j2","_sequenceSingle","combineSequences","pair","leftHeap","_positionDescendingComparer","rightHeap","_positionAscendingComparer","leftRes","rightRes","leftClass","_getComposite","rightClass","it","layoutLayer","gridPos","iconsidered","considered","n1Priority","n2Priority","nodeGridPos","nodeBaryCenter","calcBaryCenter","nodePriority","moveRight","moveLeft","calcDownData","calcUpData","priority","rightNode","rightNodePriority","leftNode","leftNodePriority","mapVirtualNode","nodeToLinkMap","linkToNodeMap","addLinkBetweenLayers","upLayer","downLayer","oLayer","dLayer","oPos","dPos","depthOfDumminess","dedum","prevLink","moves","iter","optimizeLayerCrossings","presorted","n1BaryCenter","n2BaryCenter","compareByIndex","compareValue","inode","maxIterations","downwards","secondPass","hasSwapped","calcCrossings","memCrossings","crossBefore","countLinksCrossingBetweenTwoLayers","node1","node2","node1GridPos","node2GridPos","crossAfter","ulayer","dlayer","n11","n12","n21","n22","l1","l2","crossings","n11gp","n12gp","numerator","denominator","graphOrNodes","diagramOrGraphOrNodes","GraphAdapter","KBUTTONICON","HTMLButton","_textElement","spriteCssClass","newSpan","renderButton","NEXT","DISABLEDSTATE","ARIA_DISABLED","MENU_CLICK","DIRECTIONS","cssClasses","baseItem","IMAGE_TEMPLATE","SPRITE_TEMPLATE","ICON_TEMPLATE","TEXT_TEMPLATE","ITEM_TEMPLATE","LINK_TEMPLATE","findFocusableSibling","getSibling","candidate","ButtonMenu","mainButton","_clickHandlers","_renderList","_renderListItem","menuItem","attributesId","_renderItemButton","class","_hide","_popup","_popupOpenHandler","_popupCloseHandler","_popupExpandHandler","adjustPopupWidth","listItemKeydown","destroyPopup","ARIA_EXPANDED","DISABLED","FOCUSSTATE","SplitButton","_renderButtons","_renderMenu","_enable","_aria","arrowIcon","labelSuffix","wrapperId","arrowButton","_getAppearanceClasses","_mainButton","_arrowButton","menu","kendoButtonMenu","menuOpen","menuOpenHandler","menuClose","menuCloseHandler","menuClick","computedWidth","soft","DropDownButton","iconTemplate","svgIconTemplate","Badge","_content","_appearance","cutoutBorder","roundings","full","sizes","_classNames","_text","_themeColor","_shape","_sizes","_fillMode","_rounded","_roundings","_cutoutBorder","_updateClassNames","keepClassNames","sizeAbbr","roundedAbbr","iconTemplateFunction","MOUSEDOWN","MOUSEUP","FOCUSEDSTATE","ACTIVESTATE","Button","_badge","_removeActive","_addActive","_isNativeButton","err","badgeEelement","badgeOptions","TOGGLE","ARIA_PRESSED","SELECTED","ToggleButton","_selected","KBUTTON","SINGLE","MULTIPLE","ButtonGroup","selectedIndices","_buttons","_renderItems","preventKeyNav","badgeEl","getKendoToggleButton","getKendoButton","_toggleIndex","_resetIndexes","_addButton","btn","_keyDown","buttonGroup","focusableItems","_decorateButtons","buttons","excludedNodesRegExp","MENU","LINK_SELECTOR","ICON_SELECTOR","LAST","TIMER","IMAGE","ZINDEX","POINTERDOWN","allPointers","TOUCHSTART","MOUSEENTER","RESIZE","POPUP_ID_ATTR","POPUP_OPENER_ATTR","KENDOPOPUP","HOVERSTATE","menuSelector","animationContainerSelector","childAnimationContainerSelector","popupSelector","allItemsSelector","itemSelector","availableItemsSelector","exclusionSelector","scrollButtonSelector","touchPointerTypes","ROLE","imageAttr","rendering","wrapperCssClass","firstLevel","itemCssAttributes","imageCssAttributes","imgAttributes","contentCssAttributes","contentAttr","defaultClasses","textClass","groupAttributes","expanded","groupCssClass","groupWrapperCssClass","updateItemClasses","elm","updateArrow","updateFirstLast","getArrowIconName","updateHasAriaPopup","parentLi","getParentLiItems","storeItemSelectEventHandler","selectHandler","getItemSelectEventHandler","setItemData","popupOpenerSelector","popupGroupSelector","getChildPopups","currentPopup","overflowWrapper","childPopupOpener","opener","popupId","popupParentItem","popupElement","itemPopup","parentsScroll","scrollDirection","isPointerTouch","removeSpacesBetweenItems","ul","Menu","_accessors","_templates","_updateClasses","_wrapGroups","_animations","nextItemZIndex","_initOverflow","_attachMenuEventsHandlers","openOnClick","clicked","_ariaId","closeOnClick","hoverDelay","popupCollision","_initData","_overflowWrapper","_checkActiveProxy","_checkActiveElement","_preventClose","_toggleHover","_removeHoverItem","_mouseleavePopup","_mouseenterPopup","_documentClickHandler","_documentClick","_detachMenuEventsHandlers","backwardBtn","forwardBtn","isHorizontal","_openedPopups","_scrollWrapper","templates","scrollButton","_initScrolling","initialWidth","initialCssWidth","_setOverflowWrapperWidth","_toggleScrollButtons","_popupsWrapper","wrapperCssWidth","wrapperWidth","menuWidth","borders","_reinitOverflow","_destroyOverflow","popupWrapper","popupParentLi","mouseWheelDistance","backward","backwardDouble","forwardDouble","scrolling","touchEvents","scrollValue","mouseenterHandler","mousedownHandler","_closeChildPopups","currentScroll","_toggleDisabled","attemptGetItem","referenceItem","_childPopupElement","insertAfter","plain","groupData","renderGroup","itemElement","renderItem","parentItems","_openAfterLoad","visiblePopups","closePopup","_timerTimeout","overflowPopup","_getPopup","_triggerEvent","windowHeight","maxHeight","nextZindex","parentHorizontal","parseDirection","getEffectDirection","kendoPopup","deactivate","_popupOpen","_configurePopupOverflow","_initPopupScrolling","popupOpener","_wrapPopupElement","groupId","skipMouseEvents","_initPopupScrollButtons","scrollButtons","_closeParentPopups","_keyTriggered","_setPopupHeight","popups","_initialHeight","popupOuterHeight","popupOffsetTop","bottomScrollbar","dontClearClose","_isRootItem","_forceClose","_closurePrevented","hoverItem","_hoverItem","_findRootParent","hasFocus","oldHoverItem","_oldHoverItem","_itemHasChildren","pointerTouch","isParentClosing","delegateTarget","rootMenuItems","subMenuItems","toElement","stopImmediatePropagation","_closePopups","rootPopup","groupParent","innerPopup","_innerPopup","openHandle","childGroup","childGroupVisible","shouldCloseTheRootItem","formNode","targetHref","sampleHref","isLocalLink","isTargetLink","_lastClickedElement","handled","_triggerSelect","childPopupId","_parentsUntil","enterKey","overflowMenuParents","itemSelectEventData","_getEventData","isSelectItemDefaultPrevented","isSelectDefaultPrevented","_moveHover","belongsToVertical","_itemBelongsToVertival","_itemDown","_itemUp","_itemEsc","_moveHoverToRoot","menuIsVertical","nextItem","_scrollToItem","_itemRight","parentItem","nextAll","_itemLeft","itemPosition","scrollDir","currentScrollOffset","itemSize","itemOffset","ulSize","scrollButtonSize","_unbindDataSource","_bindDataSource","_errorHandler","_error","findByUid","itemsToUpdate","updateProxy","_updateItem","removeProxy","_removeItem","_appendItems","nextElement","_fieldAccessor","fieldBindings","fieldAccessor","contentHtml","renderItems","itemWrapper","sprite","dataContentField","ContextMenu","_wire","closes","alignToAnchor","_showProxy","_closeProxy","_triggerFocusOnActivate","_focusMenu","_configurePopupScrolling","_setPopupWidth","windowWidth","popupOuterWidth","popupOffsetLeft","_closeTimeoutProxy","_eventOrigin","_targetChild","_closeHandler","sameTarget","containment","normalClick","_preventProxy","contextMenuElement","_triggerProxy","not","TOOLBAR","BUTTON_GROUP","SPLIT_BUTTON","MENU_BUTTON","SPACER_CLASS","STATE_SELECTED","STATE_HIDDEN","FORCE_HIDDEN","GROUP_START","GROUP_END","MENU_LINK","MENU_ITEM","OVERFLOW_ANCHOR","TEMPLATE_ITEM","TOOLBAR_TOOL","MENU_LINK_TOGGLE","DROPDOWNLIST","INPUT_BUTTON","KFOCUS","TABINDEX_MINUS_1","ARIA_CHECKED","SPACER","SEPARATOR","INPUT","GROUP","DATA_UID","DATA_ROLE_SELECTOR","DATA_TOGGLE_SELECTOR","DATA_ROLE_BUTTONMENU","KENDO_FOCUSABLE","OVERFLOW_OPEN","OVERFLOW_CLOSE","OVERFLOW_NEVER","OVERFLOW_AUTO","OVERFLOW_ALWAYS","KENDO_UID_ATTR","NOTHING","COMMA","UID","K_DROP_DOWN_BUTTON","K_SPLIT_BUTTON","K_TOGGLE_BUTTON","K_BUTTON_GROUP","toolbar","WIDGET_TYPES","splitButton","dropDownButton","popupButton","TOOLBAR_TOOLS_CLASSES","ColorPicker","Switch","SAFE_COMPONENTS","POPUP_BUTTON_TEMPLATE","ToolBar","resizable","_extendToolsOptions","_tabIndex","_shrink","overflowAnchor","_toggleOverflowAnchor","navigateOnTab","evaluateTemplates","overflowMenu","chooser","_getUid","_getItem","buttonsPopupItem","getSelectedFromGroup","parentGroupEl","templateEl","toolbarEl","_groupVisibleButtons","_resetTabIndex","_getAllItems","parentGroup","toggleTools","conditions","condition","toToggle","_processOptions","overflowTemplate","_addTemplate","_addCustomWidget","_addDefaultTool","_addSpacer","_addSeparator","_addAttributes","overflowComponent","_addMenuItem","componentOptions","_addToolbarTool","menuitem","togglable","menuButtons","_onMenuItemSelect","_addPopupButton","widgetElement","popupComponent","commandOn","overflowSeparator","spacer","inputsInTemplate","popupRef","hasButtons","primary","_attachWidgetEvents","_resetOpen","extensions","_focusIn","_focusOut","_onClick","_onToggle","_onSelect","_onOpen","_onClose","_childrenWidth","childrenWidth","flatMap","_mapTool","parentMessages","defaultTools","knownUid","uidSelector","buttonsPopups","_getNextElement","focusableItem","visibleBtns","_hideItem","_showMenuItem","_hideMenuItem","templateItem","isOverflowAnchor","_keyDeactivateTemplate","_keyActivateTemplate","_keyOpenOverflow","_keyFocusFirst","_keyFocusLast","_keyFocusNext","innerFocusable","innerWidget","_mapAttributes","toolOptions","dialog","toggleCondition","_mapComponent","componentMessages","componentPlaceholder","_menuItemSelect","shouldSelect","twin","menuEl","overflowItem","_processInner","parentUid","rootUid","_renderOverflow","horizontalDirection","kendoButton","uploadWrapper","files","toFocus","containerWidth","popupBtnElements","commandElement","visibleCommands","itemOuterWidth","hiddenCommands","firstFocusable","Item","OverflowButton","TemplateItem","ToolBarButton","registerComponent","ToggleInputBase","_initSettings","RENDER_INPUT","inputMethod","wrapperClass","HTMLInput","labelPosition","inputClass","labelEl","labelClass","optionalClass","optionalText","wrapperHtml","HTMLCheckBox","HTMLRadioButton","renderCheckBox","renderRadioButton","CheckBox","FOCUSED","STATEDISABLED","STATEREADONLY","FloatingLabel","widgetWrapper","floatCheck","inputInner","kendo$h","$$3","isFunction$1","_floatingLabel","_label","_unwrapFloating","_floatingLabelContainer","removeFloating","beforeElm","FOCUSABLE","ACTION_SHEET_BOTTOM","ACTION_SHEET_FULLSCREEN","ACTIONABLE_BUTTON_SELECTOR","ACTIONSHEET_TITLE_ID","hexColor","HEADER_TEMPLATE","closeButton","defaultItem","iconSize","iconColor","defaultActionButton","ActionSheet","_hasItems","_hasActionButtons","actionButtons","_mapItems","_mapActionButtons","_applyAria","_tabKeyTrap","clickEvent","_clickProxy","fullscreen","footerTemplate","headerTemplate","adaptive","focusOnActivate","defaultItemsMapper","defaultActionButtonsMapper","positionClass","ACTION_SHEET","actionsheetTitleId","popupAnimation","_openHandler","closeButtonPressed","_closeButtonPressed","groupedItems","itemsByGroup","currentItem","topItems","bottomItems","_createItems","contentContainer","hideOverflowContent","inlineStyles","_createActionButtons","actionButtonElement","actionsContainer","_footer","_header","altTarget","_elementHeight","isFullScreen","_focusFirstFocusableElement","firstFocusableElement","_focusLastFocusableElement","lastFocusableElement","_isActionableButton","_triggerAction","isButtonKeyTrigger","allFocusables","lastFocusable","actionButton","percentageUnitsRegex","HOVER","KSELECTED","LOADING","LIST_UL","FIXED_GROUP_HEADER","ITEMSELECTOR","CASCADE","DATA_BINDING","DATA_BOUND","SELECTED_ITEM_CHANGE","HIDDENCLASS","isIE","quotRegExp","alternativeNames","ComboBox","DropDownList","MultiColumnComboBox","ARIA_ACTIVEDESCENDANT","ARIA_BUSY","ARIA_SELECTED","GROUP_ROW_SEL","List","_isSelect","adaptiveMode","largeMQL","mediumMQL","smallMQL","_listSize","_filterHeader","_columnsHeader","_noData","_initValue","noDataTemplate","noData","_renderFooter","_renderNoData","_inputLabel","_focused","_floatCheck","_refreshFloatingLabel","filterTemplate","actionSheetFilterTemplate","_isFilterEnabled","filterInput","filterTitle","$header","columnsHeader","colGroup","currentColumn","columnsHeaderTemplate","currentWidthInt","widthStyle","footerEl","_listOptions","changeEventOption","_listChange","listBoundHandler","_listBound","focusedElm","labelledBy","_activateItem","_deactivateItem","groupTemplate","fixedGroupTemplate","listSize","_initList","opts","skipValueUpdate","listOptions","selectedItemChange","VirtualList","_hasActionSheet","StaticList","_setListValue","_updateSelectionState","_listMousedown","_hideClear","_showClear","_clearValue","_clearText","_accessor","_customOption","enforceMinLength","highlightFirst","_clearFilter","_filterSource","isMultiColumnFiltering","filterFields","resetPageSettings","removed","removeFiltersForField","_clearFilterExpressions","newExpression","_pushFilterExpression","isValidFilterExpr","_cascading","setDSFilter","dataSourceState","filtersToRemove","_toggleNoData","_toggleHeader","_allowOpening","_old","_ignoreCase","widgetOptions","fromFilter","_buildExpression","_open","_clearButton","clearButton","_inputValue","_typingTimeout","_emptySearch","_searchByWord","_form","_resetHandler","selectedDataItems","autocomplete","suggest","_userTriggered","_isValueChanged","unifyType","_valueBeforeCascade","_oldIndex","isFiltered","_typing","typing","_dataValue","_offsetHeight","_height","isMccb","_adjustListWidth","autoWidth","_onCloseButtonPressed","_focusItem","noFocusedItem","scrollToIndex","_calculateGroupPadding","groupHeader","_calculatePopupHeight","_calculateColumnsHeaderPadding","_refreshScroll","enableYScroll","_resizePopup","_createPopup","_createActionSheet","_addFilterHeader","popupFilter","_cachedFilterValue","_removeFilterHeader","_removeStaticHeader","_postCreatePopup","_onActionSheetCreate","listViewValue","_clean","tagList","_toggle","preventFocus","touchEnabled","MSPointers","_prevent","_triggerCascade","_cascadeTriggered","_cascadedValue","userTriggered","_triggerChange","_requestStartHandler","_requestEndHandler","requireValueMapper","_initial","_initialIndex","_parentWidget","_cascadeSelect","_cascadeValue","_accessorInput","_accessorSelect","_custom","_syncValueAndText","custom","_hideBusy","_busy","_arrowIcon","_showBusy","_request","_requestEnd","_firstItem","focusFirst","_lastItem","focusLast","_nextItem","focusNext","_prevItem","focusPrev","_getNormalizedDataItem","isIndex","hasOptionLabel","optionLabel","getElementIndex","dataItemByIndex","_getNormalizedSelectCandidate","normalizedCandidate","moveIndex","selectCandidate","_fetch","_get","activeFilter","shouldTrigger","focusout","scrollWith","_fetchData","dataText","dataValue","htmlElement","formId","_shouldPreventDefaultReset","_removeDataItems","_dataItems","_cascade","_cascadeHandlerProxy","_cascadeHandler","_cascadeFilterRequests","_selectedValue","_toggleCascadeOnFocus","valueBeforeCascade","_clearSelection","_cascadeChange","filterValue","cascadeFromParentField","cascadeFromField","cascadeOnCustomValue","currentHandler","STATIC_LIST_NS","aria","_touchHandlers","_optionID","_selectedIndices","_getter","_createOnScrollProxy","_fixedHeader","startY","endY","tapPosition","_touchTriggered","_triggerClick","_scrollId","itemOffsetTop","itemOffsetHeight","contentScrollTop","contentOffsetHeight","bottomDistance","_getValues","_valueGetter","hasCandidate","focusIndex","skipUpdate","_skipUpdate","singleSelection","uiSelectedIndices","added","filtered","_deselectFiltered","_deselect","_valueComparer","_valueDeferred","_valueIndices","_onScroll","_renderHeader","_valueExpr","normalized","_valueType","_dataItemPosition","valueExpr","templateText","_normalizeIndices","newIndices","_firstVisibleItem","itemHeight","childElementCount","lastChild","previousSibling","isGrouped","visibleItem","_renderItem","itemRole","notFirstItem","hasColumns","altRow","isLastGroupedItem","_renderColumns","cspCompliantHtml","dataContext","_lastDSFilter","skipUpdateOnBind","isItemChange","itemsToMatch","selectedLength","unchanged","mapChangedItems","_bound","LIST_ITEM","TABLE_ITEM","GROUPITEM","LISTBOUND","ITEMCHANGE","VIRTUAL_LIST_NS","lastFrom","isPrimitive","placeholderTemplate","renderedColumns","widthValue","renderColumns","webkitTransform","isActivePromise","mockList","contentClasses","_fetching","TABLE_LIST","_selectedDataItems","_selectedIndexes","_rangesList","_promisesList","_triggerListBound","_selectable","listScreens","oppositeBuffer","mapValueTo","_selectProxy","_deferValueSet","mute","_selectingValue","_highlightSelectedItems","_getElementByDataItem","_mute","_createList","_removeSelectedDataItem","_forcePrefetch","_prefetchByValue","_checkValuesOrder","_removedAddedIndexes","dataView","_dataView","forSelection","mapValueToIndex","mapValueToDataItem","checkboxes","valueMapperOptions","_getIndecies","deferredRange","existingRange","isEmptyList","_activeDeferred","_getSkip","_findDataItem","_getRange","triggerEvent","_getElementByIndex","_focusedIndex","_getElementLocation","_screenHeight","heightContainer","isAlreadySelected","prefetchStarted","_selectDeferred","_deselectCurrentValues","_listCreated","_lastScrollTop","hasData","setScreenHeight","yPosition","yDownPostion","screenEnd","_generateItems","_saveInitialRanges","reorder","_buildValueGetter","_setHeight","getList","_listItems","_whenChanged","_reorderList","padHeight","lastRequestedRange","lastRangeStart","rangeStart","flatGroup","groupLength","_getterDeferred","firstItemIndex","_indexConstraint","currentVisibleGroup","firstVisibleDataItemIndex","firstVisibleDataItem","firstVisibleGroup","fixedGroupText","_itemMapper","listType","_currentGroup","_getDataItemsCollection","lastScrollTop","_listIndex","theValidator","downThreshold","upThreshold","listValidator","theNew","currentOffset","list2","range2","reshift","_bufferSizes","opposite","buffers","selectedIndexes","removedindexesCounter","_deselectSingleItem","oldSkip","nsFocusEvent","READONLY","ARIA_READONLY","CLICKEVENTS","HOVEREVENTS","STATE_FILTER","STATE_ACCEPT","_focusInputHandler","_focusInput","_optionLabel","_inputTemplate","_prev","_word","_span","_mobile","_attachAriaActiveDescendant","_textAccessor","_optionLabelText","_allowFilterPaste","valueTemplate","optionLabelTemplate","_arrow","_focusFilter","_resizeFilterInput","originalPrevent","isInputActive","_optionLabelDataItem","loweredText","_valueSetter","_assignInstance","_buildOptions","optionLabelValue","initialIndex","_presetValue","_selectValue","_filterPaste","_search","_attachFocusHandlers","_focusinHandler","_focusoutHandler","isIFrame","_wrapperMousedown","dropDownWrapper","_keypress","isPopupVisible","_getElementDataItem","_matchText","_shuffleData","splitIndex","optionDataItem","_selectNext","oldFocusedItem","isInLoop","sameCharsOnly","_last","normalizeIndex","charCode","compareElement","jQueryCandidate","_resetOptionLabel","focusedItem","additionalClass","keepState","arrowBtn","SELECTOR","DOMelement","accesskey","unselectable","optionLabelText","ARIASELECTED","CHANGING","UNSELECT","UNSELECTING","MID","SPLITEND","SPLITSTART","RANGESTART","RANGEEND","INPUTSELECTOR_ICONSSELECTOR_FONT","INPUTSELECTOR_ICONSSELECTOR_SVG","INPUTSELECTOR_SVG_PARTS","INPUTSELECTOR","supportEventDelegation","Selectable","dragToSelect","selectableClass","_lastActive","inputSelectors","ignoreOverlapped","addIdToRanges","toggleable","_isElement","selectedClass","whichCode","buttonCode","_allowSelection","_lastRange","compareElements","selectRange","_firstSelectee","_notify","_unselect","_isActivated","useAllItems","_selectElement","_invalidateSelectables","rangeSelectedAttr","_currentlyActive","toSelect","_collidesWithActiveElement","marqueeRect","activeElementRect","activeElements","elemRect","tempRect","selectElement","selectedRanges","rangeId","mapLocation","selectedSingleItems","preventNotify","_allowPreventDefault","allowPaste","resetTouchEvents","continuousItems","RangeSelectable","cellSelectorValid","_mouseEnter","TOUCHEND","_mouseLeave","resetOnStart","cellSelector","preventFlagUpdate","tables","lastCell","firstCell","clearVariables","clearStartEnd","selectFrom","selectTo","_useStart","_useEnd","_clearFlags","toDateObject","toCompare","elementPosition","firstRect","secondRect","selectableMode","asLowerString","extractFormat","transitionOrigin","cellTemplate","dateString","emptyCellTemplate","otherMonthCellTemplate","weekNumberTemplate","KEYDOWN_NS","SLIDE","CENTURY","NAVIGATE","OTHERMONTH","EMPTYCELL","CELLSELECTOR","CELLSELECTORVALID","FOCUS_WITH_NS","MOUSEENTER_WITH_NS","PREVARROW","NEXTARROW","decade","century","HEADERSELECTOR","Calendar","disableDates","getDisabledExpr","_viewWrapper","hasFooter","_today","mousetoggle","_isSingleSelection","_focusView","focusOnNav","_isRangeSelection","rangeSelectable","_setCurrent","_selectDates","restrictValue","_addClassProxy","_cell","todayString","toDateString","getToday","_cellByDate","_removeClassProxy","selectDates","allowReverse","centuryCellsFormat","showOtherMonthDays","weekColumnHeader","navigateTo","parentViews","classic","actionAttr","linksSelector","modern","_destroySelectable","_title","_table","_bindTable","_option","navigateToPast","navigateToFuture","navigateUp","navigateDown","isEqualDate","currentView","_oldTable","future","viewWrapper","_changeView","isWeekColumnVisible","_animate","_visualizeSelectedDatesInView","_selectCell","validSelectedDates","datesUnique","_validateValue","createDate","isInRange","selectedDates","selectableOptions","_onRelatedTarget","_restoreSelection","_preventChange","startInRange","endInRange","visibleRange","_visibleRange","_dateInViews","initialRange","useEnd","useStart","_toggleSelection","_cellsBySelector","_addSelectedCellsToArray","_rangeSelection","currentCell","toDateCell","daysDifference","fromDate","daysBetweenTwoDates","addDaysToArray","currentDateIndex","_dateInView","firstDateInView","_isNavigatable","cellIndex","isDisabled","lastDateInView","prevent","lastActive","_todayClick","_keyboardToggleSelection","focusedDate","_nextNavigatable","_keyboardRangeSelection","focusedCell","navigatableDate","_horizontal","viewWidth","_vertical","_selectedCell","isBigger","value1","value2","isEqualMonth","isTodayDisabled","todayClass","_todayClass","executeTemplate","_updateAria","valueType","firstVisibleDay","calendarInfo","tzOffsetBefore","resultDATE","tzOffsetDiff","getCalendarInfo","navigateUrl","showHeader","hasUrl","currentCalendar","firstDayIdx","shiftArray","shortNames","perRow","build","weekNumberBuild","date1","date2","month1","year1","month2","year2","calendarMonths","namesFull","setMonth","minYear","maxYear","modular","cellsPerRow","otherMonthTemplate","multiplier","endDate","fromDateUTC","endDateUTC","numberOfDays","dateObject","disabledDates","convertDatesArray","createDisabledExpr","isEqualDatePart","viewsEnum","extendStatics","setPrototypeOf","__extends","TypeError","__","Direction","cloneDate","hour","addMonths","expectedMonth","Day","isEqual","expected","timezones","zoneOffset","ruleOffset","CURRENT_UTC_TIME","zoneRule","currentRule","NO_TZ_INFO","formatMessage","flattenValues","getZoneRules","_a","addMinutes","dayAbbr","monthAbbr","padNumber","isZoneMissingHour","prevHour","shiftZoneMissingHour","utcDate","dstOffset","convertTimezoneUTC","utcLocal","fromTimezone","toTimezone","baseDiff","midDate","midOffset","ZonedDate","_utcDate","tzOffset","timezoneOffset","localDate","_localDate","enumerable","configurable","fromLocalDate","shiftZone","fixedOffset","adjDate","fromUTCDate","toUTCDate","addTime","utcMid","utcResult","stripTime","getUTCMilliseconds","ms","setUTCMilliseconds","sec","setUTCSeconds","setUTCMinutes","setUTCHours","setUTCMonth","setUTCFullYear","toISOString","timeString","toTimeString","formatOffset","abbrev","abbrTimezone","locales","toLocaleDateString","toLocaleTimeString","toUTCString","toPrimitive","getVarDate","formatUTC","DateInputInteractionMode","Mask","partMap","Constants","Key","padZero","dateSymbolMap","parseToInt","_b","setYears","areDatePartsEqualTo","isValidDate","SHORT_PATTERN_LENGTH_REGEXP","DateObject","formatPlaceholder","cycleTime","_d","_e","autoCorrectParts","leadingZero","typedMonthPart","knownParts","_partiallyInvalidDate","invalidDateParts","startDateOffset","sampleFormat","dateFormatString","setExisting","resetInvalidDate","localeId","cldrKeys","cldr","numbers","monthNames","allFormattedMonths","dayPeriods","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","rawInputValue","rawTextValue","isDeleting","originalFormat","isInCaretMode","dateParts","datePartsLiterals","datePartIndex","flatDateParts","datePart","parseResult","switchToNext","resetPart","hasInvalidDatePart","resetLeadingZero","rawValueStartsWithLiteral","rawValueEndsWithLiteral","endsWith","rawValueHasConsecutiveLiterals","baseDate","baseFormat","replaced","basePrefix","baseSuffix","suffix","convertedBaseFormat","hasFixedFormat","datePartStartIndex","segmentLength","formatToTextLengthDiff","parsedDate","matchMonth","dayPeriod","matchDayPeriod","isZeroCurrentChar","isAbbrMonth","incrementLeadingZero","partPattern","patternValue","currentMaxLength","tryParse","middleNumber","candidateDateString","autoCorrectedPrefixAndSuffix","isCurrentCharParsable","monthNumber","peekedValue","peek","peekedDateString","peekedDate","patternSatisfied","datePartValue","textToParse","month_1","valueCandidate","symbolMap","hasLeadingZero","setLeadingZero","getLeadingZero","twoDigitYear","cropTwoDigitYear","centuryBase","getNormalizedCenturyBase","peekValue","typedChar","monthAsNum","lowerChart","am","pm","dateFormatParts","partLength","returnValue","resultText","resultFormat","processTextSymbolsEnded","ignoreFormatSymbolsCount","formatSymbolIndex","formatSymbolIndexModifier","resetInvalidDatePart","shouldResetInvalidDate","modifyDateSymbolWithOffset","partIndex","segmentPart","maskPartIndex","KeyCode","defaultPrevented","TOUCH_START","MOUSE_DOWN","MOUSE_UP","KEY_DOWN","PASTE","MOUSE_SCROLL","MOUSE_WHEEL","VALUE_CHANGE","INPUT_END","BLUR_END","FOCUS_END","defaultDateInputOptions","hasPlaceholder","millisecond","minute","selectNearestSegmentOnFocus","selectPreviousSegmentOnBackspace","enableMouseWheel","allowCaretMode","autoSwitchParts","autoSwitchKeys","autoFill","DateInput","_super","currentText","currentFormat","interactionMode","None","previousElementSelection","createDateObject","setTextAndFormat","forceUpdate","onElementDragStart","onElementDrop","onElementClick","onElementMouseDown","onElementMouseUp","onElementInput","onElementKeyDown","onElementFocus","onElementBlur","onElementChange","onElementPaste","onElementMouseWheel","setDateObjectOptions","getDateObjectOptions","resetLocale","Caret","selectNearestSegment","mouseDownStarted","focusedPriorToMouseDown","switchedPartOnPreviousKeyAction","selectionPresent","placeholderToggled","setSelection","selectionByIndex","triggerInput","isPasteInProgress","updateOnPaste","keyDownEvent","isBackspaceKey","isDeleteKey","originalInteractionMode","hasCaret","restorePreviousInputEventState","oldExistingDateValue","oldDateValue","oldText","newText","formatPattern","keyEvent","oldTextSeparator","oldSegmentText","newSegmentText","deletedSymbol","approximateStringMatching","previousElementValue","elementValue","navigationOnly","parsePartsResults","switchPart","parsePartResult","symbolForSelection","lastParseResult","lastParseResultHasNoValue","parsingFailedOnDelete","newExistingDateValue","hasExistingDateValueChanged","newDateValue","currentSelection","diffChar","forceUpdateWithSelection","switchDateSegment","selectionBySymbol","tryTriggerValueChange","triggerInputEnd","triggerFocus","refreshElementValue","triggerFocusEnd","triggerBlur","triggerBlurEnd","triggerChange","triggerKeyDown","keyEventMatchesAutoSwitchKeys","isTabKey","getStepFromSymbol","shouldPreventDefault","modifyDateSegmentValue","triggerMouseWheel","inputFormat","oldDateObjectValue","writeValue","displayFormat","currentSymbol","symbolCandidate","previousFormatSymbol","msDigits","triggerValueChange","elementValueLength","selectionOffset","setElementValue","restorePreviousElementValue","restorePreviousElementSelection","verifyValue","getDateObject","showPlaceholder","newElementValue","selectDateSegment","keyObject","DateInputCommon","STATEINVALID","buildKeys","cultureInfo","getCultureFormat","skipStyling","_validationIcon","dateInputInstance","inputEnd","_blinkInvalidState","keydown","_emptyMask","_formElement","_hasDateInput","_bindInput","_unbindInput","_addInvalidState","_invalidStateTimeout","_removeInvalidState","_paste","DIV","parseFormats","DateView","bigScreenMQL","smallScreenMQL","omitPopup","dateDiv","_dateViewID","_calendar","popupHovered","selectIsClicked","disabledDate","DatePicker","_initialOptions","_createDateView","_createDateViewProxy","dateView","_createDateInput","_oldText","ARIATemplate","dateInput","_updateARIA","_dateIcon","_dateInput","_navigateCalendarHandler","_navigateCalendar","_isReset","dateChanged","valueUpdated","textFormatted","_setCalendarAttribute","isSameType","optionsValue","_ariaTemplate","$$1","addInputPrefixSuffixContainers","prefixInsertBefore","suffixInsertAfter","prefixContainer","suffixContainer","prefixOptions","suffixOptions","hasPrefixContent","hasSuffixContent","layoutFlow","containerOrientation","INPUT_SEPARATOR","_prefixContainer","_suffixContainer","placeholderSupported","SPIN","INTEGER_REGEXP","NumericTextBox","inputType","isStep","_focusout","_arrows","_validation","_input","_focusin","selectValue","restrictDecimals","spinners","selectOnFocus","upArrowText","downArrowText","_toggleText","_upArrowEventHandler","_downArrowEventHandler","_spin","_upArrow","_downArrow","_keyup","_inputHandler","_placeholder","_arrowsWrap","_adjust","arrows","_spinning","buttonHtml","release","_focusing","groupRegExp","extractRegExp","_format","caretPosition","_getFactorValue","_culture","accessKey","_numPadDot","_cachedCaret","_step","decimalSeparator","minInvalid","_isPasted","_numericRegex","fractionRule","_separator","_floatRegExp","truncate","isNotNull","DOMElement","INVALIDMSG","invalidMsgRegExp","INVALIDINPUT","VALIDINPUT","VALIDATIONSUMMARY","INVALIDLABEL","MESSAGEBOX","ARIAINVALID","emailRegExp","ALLOWED_URL_PROTOCOLS","CHECKBOXSELECTOR","NUMBERINPUTSELECTOR","NAME","FORM","NOVALIDATE","VALIDATE","VALIDATE_INPUT","patternMatcher","hasAttribute","parseHtml","parseHTML","searchForMessageContainer","isLabelFor","validator","allowSubmit","validateOnInit","SUMMARYTEMPLATE","Validator","resolvers","ruleResolvers","resolveRules","validateAttributeSelector","_errorTemplate","errorTemplate","_summaryTemplate","validationSummary","_inputSelector","_checkboxSelector","_errors","_isValidated","_validateOnInit","required","email","dateCompare","captcha","noNameCheckbox","namedCheckbox","checkbox","radio","raise","matcher","isValidated","isValid","getCaptchaId","_validating","_checkElement","validateOnBlur","_allowSubmit","validateInput","inputs","invalid","showValidationSummary","valid","_checkValidity","lbl","_findMessageContainer","messageText","_extractMessage","messageLabel","wasValid","isInputInner","lblId","_decorateMessageContainer","prevElement","_inputWrapper","inputWrap","inputLabel","errorId","_associateMessageContainer","hideMessages","_disassociateMessageContainers","hideValidationSummary","locators","messageLocators","locate","decorate","ruleKey","nonDefaultMessage","customMessage","_getInputNames","_errorsByName","inputNames","_renderSummary","_summaryClick","errorsList","nameSpecialCharRegExp","EQUAL_SET","specialRules","fieldType","createAttributes","ruleName","validation","DATATYPE","BINDING","stringRule","attributeName","addIdAttribute","kendoEditors","editors","kendoNumericTextBox","editorOptions","kendoDatePicker","kendoTextBox","kendoCheckBox","renderHiddenForMvcCheckbox","convertItems","kendoEditor","editor","tagElement","getEditorTag","mobileEditors","addValidationRules","modelField","shouldRenderHidden","Editable","_isMobile","_validateProxy","_validate","clearContainer","skipFocus","isHidden","isCustomEditor","isKendoEditor","preventChangeTrigger","_validationEventInProgress","bindAttribute","bindingRegex","validatable","modelFields","bindAttr","isAntiForgeryToken","antiForgeryTokenName","convertToValueBinding","queueMicrotask","_focusEditor","MODAL_NS","KWINDOW","KWINDOWTITLE","KWINDOWTITLEBAR","KWINDOWCONTENT","KWINDOWRESIZEHANDLES","KOVERLAY","KWINDOWMINIMIZED","LOADINGICONCLASS","KHOVERSTATE","KFOCUSEDSTATE","MAXIMIZEDSTATE","INLINE_FLEX","KHIDDEN","CURSOR","REFRESH","RESIZESTART","RESIZEEND","RESTORE","DATADOCOVERFLOWRULE","MINIMIZE_MAXIMIZEICONSELECTORS","KPINICONCLASSSELECTOR","KUNPINICONCLASSSELECTOR","PIN_UNPINICONCLASSSELECTOR","TITLEBAR_BUTTONSSELECTOR","REFRESHICONSELECTOR","WINDOWEVENTSHANDLED","zero","SIZE","toInt","constrain","executableScript","getPosition","offsetLeft","parentOverflowX","parentOverflowY","Window","windowContent","globalWindow","suppressActions","actions","_createWindow","_dimensions","_footerTemplate","_footerMessages","minTop","minLeft","maxTop","maxLeft","_overlay","_buttonEnter","_buttonLeave","_windowActionHandler","_keydownContent","_draggable","pinned","pin","_onDocumentResize","sizeClass","contentBoxSizing","lrBorderWidth","tbBorderWidth","_isPinned","_updateBoundaries","containmentTop","containmentLeft","_animationOptions","resizing","toggleMaximization","resizeHandle","WindowResizing","WindowDragging","dragHandle","_actions","windowSpecificCommands","icons","maximize","cachedOptions","_containerScrollTop","_containerScrollLeft","_enableDocumentScrolling","fade","autoFocus","isMaximized","isMinimized","_closable","_close","newWidth","newHeight","unpin","minimize","preventScroll","_stopDocumentScrolling","_actionForIcon","_modals","windowInstance","windowElements","modals","_object","newTop","newLeft","documentWindow","_scrollIsAppended","titleBar","titleElement","titlebar","scrollContainer","otherModalsVisible","showOptions","Fade","overlayFx","fadeIn","_removeOverlay","suppressAnimation","hideOverlay","hideOptions","systemTriggered","lastModal","_actionable","_shouldFocus","avoidFocus","currentWindow","containmentContext","openAnimation","originalZIndex","windowObject","zIndexNew","windowTop","restoreOptions","_sizingAction","actionId","_storeOverflowRule","$body","$html","_restoreOverflowRule","$element","_isOverflowStored","overflowRule","win","wnd","contentFrame","_triggerRefresh","_ajaxComplete","_loadingIconTimeout","_ajaxError","_ajaxSuccess","_showLoading","iframeSrcAttributes","_preventDragging","dragstart","dragend","addOverlay","removeOverlay","dragcancel","iconName","resizeDirection","initialSize","containerOffset","wrapperPosition","relativeElMarginLeft","relativeElMarginTop","_relativeElMarginLeft","_relativeElMarginTop","windowBottom","windowRight","leftRtlOffset","scrollOffset","newWindowTop","initialWindowPosition","initialPointerPosition","_finishDrag","CASCADING","MAXINT","ITEMROTATE","PAN","TRANSFORMED","MOUSEWHEEL_NS","BUTTON_TEMPLATE","DefaultConnectors","defaultButtons","imageClass","isAutoConnector","closestConnector","resCtr","minimumDistance","indicesOfItems","extra","DiagramElement","serializable","_contentVisual","_updateContentVisual","_createContentVisual","elementTemplate","_canSelect","Connector","shapeId","tempStr","updateOptionsFromModel","createShapeVisual","updateBounds","_createConnectors","_setOptionsFromModel","modelOptions","filterShapeDataItem","redrawVisual","_isEditable","_redrawVisual","syncChanges","_suspendModelRefresh","_resumeModelRefresh","_rotate","_alignContent","contentVisual","containerRect","aligner","contentBounds","alignedBounds","_transformedBounds","_rotatedBounds","_setBounds","_triggerBoundsChange","_layouting","refreshConnections","cloneDataItem","deselected","_internalSelection","_selectionChanged","deltaAngle","newPosition","sc","cons","nameOrPoint","_transformPoint","boundsChange","shapeOptions","shapeVisual","_visualOptions","_updateConnectors","_showConnectors","rotatedPoint","visualTemplate","_initRouter","_sourcePoint","_targetPoint","_setSource","_setTarget","definers","fromConnector","toConnector","dataMap","_dataMap","fromX","fromY","toX","toY","filterConnectionDataItem","connectionsDataSource","clearField","shapeSource","defaultConnector","_removeFromSourceConnector","_clearSourceConnector","_setFromOptions","sourceDefiner","_sourceDefiner","shapeTarget","_removeFromTargetConnector","_clearTargetConnector","_setToOptions","targetDefiner","_targetDefiner","connectorName","setNewTarget","inactiveItem","_inactiveShapeItems","_deferredConnectionUpdates","onActivate","alignToPath","midIdx","_router","pts","_resolveConnectors","_refreshPath","sourceConnectors","targetConnectors","_resolveAutoConnectors","minNonConflictSource","minNonConflictTarget","minSource","minTarget","sourceIdx","targetIdx","minNonConflict","_testRoutePoints","router","passRoute","exclude","_getRouteExclude","_shapesQuadTree","hitTestRect","_isPointInsideShape","boundsX","boundsY","Diagram","_initElements","_extendLayoutOptions","_initDefaults","_interactionDefaults","_initCanvas","adornerLayer","_createHandlers","_clipboard","pauseMouseHandlers","_fetchFreshData","_createGlobalToolBar","_createOptionElements","toolBar","DiagramToolBar","_toolBarClick","createShape","createModel","_createShape","edit","createConnection","_connectionsDataMap","addConnection","editModel","editorType","cancelEdit","shapeEditors","shapeTemplate","connectionSelectorHandler","connectionSelector","connectionEditors","connectionTemplate","PopupEditor","_editArgs","_getEditDataSource","_destroyEditor","saveEdit","userShapeDefaults","copyDefaultOptions","canvasContainer","viewPort","_userEvents","_dragStart","_gestureStart","_gestureChange","_gestureEnd","doubleTap","_mouseMove","_mouseDown","_mouseUp","_syncHandler","_pauseMouseHandlers","_eventPositions","_meta","_createToolBar","ctrlPressed","origEvent","documentToModel","initialCenter","_gesture","_initialCenter","documentToView","updateZoom","_getValidZoom","zoomedPoint","_panTransform","_updateAdorners","pointPosition","shapesLength","_createShapes","_createConnections","_findConnectionTarget","destroyScroller","_destroyGlobalToolBar","_parseBounds","splitDiagramElements","_removeShapeDataItem","_removeConnectionDataItem","_getDiagramItems","_fixOrdering","bringIntoView","newPan","_zoomMainLayer","alignShapes","_getPan","_copyOffset","copied","mapping","_updateCopiedConnection","sourceConnection","di","_containerOffset","viewToDocument","viewToModel","_transformWithMatrix","_matrixInvert","_layerMatrix","layerToModel","_layerMatrixInvert","viewPoint","modelToDocument","setConnectionsDataSource","_connectionDataSource","_redrawConnections","getShapeByModelId","getShapeByModelUid","getConnectionByModelId","getConnectionByModelUid","_transformMainLayer","_finishPan","_storeViewMatrix","_storeLayerMatrix","canvasTransform","shapePos","conPos","removedConnections","_removeShape","_removeConnection","recursive","_removeShapeConnections","_addDataItem","_addDataItemByUid","_addDataItems","parentShape","_refreshSource","_bindingRoots","_addItem","preventClosing","singleToolBar","popupZIndex","popupWidth","popupHeight","connectionBounds","_normalizePointZoom","InactiveItemsCollection","undone","redone","_loadingShapes","_loadingConnections","ds","_shapesRefreshHandler","_shapesRequestStartHandler","_shapesErrorHandler","_refreshShapes","_shapesRequestStart","_treeDataSource","_connectionsRefreshHandler","_connectionsRequestStartHandler","_connectionsErrorHandler","_refreshConnections","_connectionsRequestStart","_connectionsError","_shouldRefresh","_removeShapes","_updateShapes","_syncShapes","_rebindShapesAndConnections","_addShapes","_addConnections","_removeConnections","_updateConnections","_addConnectionDataItem","_validateConnector","adorners","_refresh","viewRect","clipWrap","deferredConnectionUpdates","_tools","createToolBar","createTools","appendTools","createPopup","getKendoPopup","_toolBar","kendoToolBar","getKendoToolBar","createTool","toolName","_setAttributes","editTool","deleteTool","rotateAnticlockwiseTool","_appendGroup","_rotateGroup","rotateClockwiseTool","createShapeTool","_createGroup","createConnectionTool","undoTool","_historyGroup","redoTool","_getAttributes","selectedElements","selectedElemens","rotateClockwise","rotateAnticlockwise","Editor","_getFields","createEditable","formContent","_renderTemplate","_renderFields","_cancelClick","_attachButtonEvents","_createButton","_cancelClickHandler","_updateClickHandler","_updateClick","_editUpdateClickHandler","kendoDropDownList","InactiveItem","deffered","_testRect","overlapsBounds","childIdx","shapeIdx","boundsChangeHandler","_boundsChange","rootSize","xIdx","yIdx","mainOptions","ITEM_CREATED","MOUSEOVER_NS","TreeMap","_setLayout","colorField","_layout","SliceAndDice","SliceAndDiceView","Squarified","SquarifiedView","_onDataChange","_wrapItem","htmlSize","compute","_setColors","createRoot","_colorIdx","colorRange","minRGBtoDecimal","rgbToDecimal","maxRGBtoDecimal","isDarker","colorBrightness","rgbColor","colorByIndex","buildColorFromRGB","colorsByLength","leafNodes","_contentSize","renderHeight","_removeActiveState","_resizeItems","setItemSize","leaf","layoutChildren","parentArea","totalArea","itemsArea","minimumSideValue","layoutHorizontal","squarify","initElement","computeDim","worstAspectRatio","newCoords","layoutRow","layoutLast","layoutV","layoutH","layoutVertical","layoutChange","areaSum","maxArea","rootCoord","newRootCoord","_totalArea","ans","_createTitle","_compile","_createWrap","rootWrap","_createLeaf","_createTile","_tileColorBrightness","_itemCoordinates","titleTemplate","sliceAndDice","minColor","maxColor","currentStep","decimalToRgb","colorLength","colorToRGB","rgbToHex"],"sources":["kendo.dataviz.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :\n typeof define === 'function' && define.amd ? define(['jquery'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendodataviz = global.kendodataviz || {}, global.kendodataviz.js = factory()));\n})(this, (function () {\n let breakpoints;\n const EVENT = \"change\";\n\n const defaultBreakpoints = {\n small: \"(max-width: 500px)\",\n medium: \"(min-width: 500.1px) and (max-width: 768px)\",\n large: \"(min-width: 768.1px)\",\n };\n\n function createMediaQuery(query) {\n let mediaQueryList = window.matchMedia(query);\n let onEnterCallbacks = [];\n let onLeaveCallbacks = [];\n let onChangeHandlers = [];\n let kendoMediaQuery = { mediaQueryList };\n\n const onChangeHandler = (ev) => {\n onChangeHandlers.forEach((cb) => cb(ev));\n\n if (ev.matches) {\n onEnterCallbacks.forEach((cb) => cb(ev));\n } else {\n onLeaveCallbacks.forEach((cb) => cb(ev));\n }\n };\n\n mediaQueryList.addEventListener(EVENT, onChangeHandler);\n\n const onChange = (cb) => {\n onChangeHandlers.push(cb);\n return kendoMediaQuery;\n };\n\n const onEnter = (cb) => {\n onEnterCallbacks.push(cb);\n\n if (mediaQueryList.matches) {\n const media = mediaQueryList.media;\n const matches = true;\n\n const ev = new MediaQueryListEvent(EVENT, {\n media,\n matches,\n });\n\n cb(ev);\n }\n\n return kendoMediaQuery;\n };\n\n const onLeave = (cb) => {\n onLeaveCallbacks.push(cb);\n return kendoMediaQuery;\n };\n\n const destroy = () => {\n if (mediaQueryList) {\n mediaQueryList.removeEventListener(EVENT, onChangeHandler);\n }\n onEnterCallbacks = null;\n onLeaveCallbacks = null;\n onChangeHandlers = null;\n mediaQueryList = null;\n kendoMediaQuery = null;\n };\n\n kendoMediaQuery.onChange = onChange;\n kendoMediaQuery.onEnter = onEnter;\n kendoMediaQuery.onLeave = onLeave;\n kendoMediaQuery.destroy = destroy;\n\n return kendoMediaQuery;\n }\n\n function mediaQuery(query) {\n if (!query) {\n return;\n }\n\n breakpoints =\n breakpoints ||\n Object.assign({}, defaultBreakpoints, kendo.defaults.breakpoints);\n\n if (query in breakpoints) {\n query = breakpoints[query];\n }\n\n return createMediaQuery(query);\n }\n\n var __meta__$X = {\n id: \"core\",\n name: \"Core\",\n category: \"framework\",\n description: \"The core of the Kendo framework.\"\n };\n\n var packageMetadata = {\n name: '@progress/kendo-ui',\n productName: 'Kendo UI',\n productCodes: ['KENDOUICOMPLETE', 'KENDOUI', 'UIASPCORE', 'KENDOMVC', 'KENDOUIMVC'],\n publishDate: 0,\n version: '2024.2.514'.replace(/^\\s+|\\s+$/g, ''),\n licensingDocsUrl: 'https://docs.telerik.com/kendo-ui/intro/installation/using-license-code?utm_medium=product&utm_source=kendojquery&utm_campaign=kendo-ui-jquery-purchase-license-keys-warning'\n };\n\n\n (function($, window, undefined$1) {\n var kendo = window.kendo = window.kendo || { cultures: {} },\n extend = $.extend,\n each = $.each,\n isArray = Array.isArray,\n noop = $.noop,\n math = Math,\n Template,\n JSON = window.JSON || {},\n support = {},\n percentRegExp = /%/,\n formatRegExp = /\\{(\\d+)(:[^\\}]+)?\\}/g,\n boxShadowRegExp = /(\\d+(?:\\.?)\\d*)px\\s*(\\d+(?:\\.?)\\d*)px\\s*(\\d+(?:\\.?)\\d*)px\\s*(\\d+)?/i,\n numberRegExp = /^(\\+|-?)\\d+(\\.?)\\d*$/,\n MONTH = \"month\",\n HOUR = \"hour\",\n ZONE = \"zone\",\n WEEKDAY = \"weekday\",\n QUARTER = \"quarter\",\n 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 \"a\": \"dayperiod\",\n \"t\": \"dayperiod\",\n \"x\": ZONE,\n \"X\": ZONE,\n \"z\": ZONE,\n \"Z\": ZONE\n },\n 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 FUNCTION = \"function\",\n STRING = \"string\",\n NUMBER = \"number\",\n OBJECT = \"object\",\n NULL = \"null\",\n BOOLEAN = \"boolean\",\n UNDEFINED = \"undefined\",\n PREFIX = \"prefix\",\n ARIA_LABELLEDBY = \"aria-labelledby\",\n ARIA_LABEL = \"aria-label\",\n LABELIDPART = \"_label\",\n getterCache = {},\n setterCache = {},\n slice = [].slice,\n cssPropertiesNames = [ \"themeColor\", \"fillMode\", \"shape\", \"size\", \"rounded\", \"positionMode\" ],\n // avoid extending the depricated properties in latest verions of jQuery\n noDepricateExtend = function() {\n var src, copyIsArray, copy, name, options, clone,\n target = arguments[ 0 ] || {},\n i = 1,\n length = arguments.length,\n deep = false;\n\n // Handle a deep copy situation\n if ( typeof target === \"boolean\" ) {\n deep = target;\n\n // skip the boolean and the target\n target = arguments[ i ] || {};\n i++;\n }\n\n // Handle case when target is a string or something (possible in deep copy)\n if ( typeof target !== \"object\" && typeof target !== \"function\") {\n target = {};\n }\n\n // extend jQuery itself if only one argument is passed\n if ( i === length ) {\n target = this;\n i--;\n }\n\n for ( ; i < length; i++ ) {\n\n // Only deal with non-null/undefined values\n if ( ( options = arguments[ i ] ) != null ) {\n\n // Extend the base object\n for ( name in options ) {\n // filters, concat and : properties are depricated in the jQuery 3.3.0\n // accessing these properties throw a warning when jQuery migrate is included\n if (name == \"filters\" || name == \"concat\" || name == \":\") {\n continue;\n }\n src = target[ name ];\n copy = options[ name ];\n\n // Prevent never-ending loop\n if ( target === copy ) {\n continue;\n }\n\n // Recurse if we're merging plain objects or arrays\n if ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n ( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n if ( copyIsArray ) {\n copyIsArray = false;\n clone = src && Array.isArray( src ) ? src : [];\n\n } else {\n clone = src && jQuery.isPlainObject( src ) ? src : {};\n }\n\n // Never move original objects, clone them\n target[ name ] = noDepricateExtend( deep, clone, copy );\n\n // Don't bring in undefined values\n } else if ( copy !== undefined$1 ) {\n target[ name ] = copy;\n }\n }\n }\n }\n\n // Return the modified object\n return target;\n };\n\n kendo.version = \"2024.2.514\".replace(/^\\s+|\\s+$/g, '');\n\n function Class() {}\n\n Class.extend = function(proto) {\n var base = function() {},\n member,\n that = this,\n subclass = proto && proto.init ? proto.init : function() {\n that.apply(this, arguments);\n },\n fn;\n\n base.prototype = that.prototype;\n fn = subclass.fn = subclass.prototype = new base();\n\n for (member in proto) {\n if (proto[member] != null && proto[member].constructor === Object) {\n // Merge object members\n fn[member] = extend(true, {}, base.prototype[member], proto[member]);\n } else {\n fn[member] = proto[member];\n }\n }\n\n fn.constructor = subclass;\n subclass.extend = that.extend;\n\n return subclass;\n };\n\n Class.prototype._initOptions = function(options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n const isPresent = kendo.isPresent = (value) => value !== null && value !== undefined$1;\n const isBlank = kendo.isBlank = (value) => value === null || value === undefined$1;\n const isString = kendo.isString = (value) => typeof value === 'string';\n const isNumeric = kendo.isNumeric = (value) => !isNaN(value - parseFloat(value));\n const isDate = kendo.isDate = (value) => value && value.getTime;\n const isFunction = kendo.isFunction = (value) => typeof value === 'function';\n\n var preventDefault = function() {\n this._defaultPrevented = true;\n };\n\n var isDefaultPrevented = function() {\n return this._defaultPrevented === true;\n };\n\n var Observable = Class.extend({\n init: function() {\n this._events = {};\n },\n\n bind: function(eventName, handlers, one) {\n var that = this,\n idx,\n eventNames = typeof eventName === STRING ? [eventName] : eventName,\n length,\n original,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n if (handlers === undefined$1) {\n for (idx in eventName) {\n that.bind(idx, eventName[idx]);\n }\n return that;\n }\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n 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 handler.original = original;\n }\n events = that._events[eventName] = that._events[eventName] || [];\n events.push(handler);\n }\n }\n\n return that;\n },\n\n one: function(eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n },\n\n first: function(eventName, handlers) {\n var 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 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: function(eventName, e) {\n var that = this,\n events = that._events[eventName],\n idx,\n length;\n\n if (events) {\n e = e || {};\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: function(eventName, handler) {\n var that = this,\n events = that._events[eventName],\n idx;\n\n if (eventName === undefined$1) {\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\n\n function compilePart(part, stringPart) {\n if (stringPart) {\n return \"'\" +\n part.split(\"'\").join(\"\\\\'\")\n .split('\\\\\"').join('\\\\\\\\\\\\\"')\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/\\t/g, \"\\\\t\") + \"'\";\n } else {\n var first = part.charAt(0),\n rest = part.substring(1);\n\n if (first === \"=\") {\n return \"+(\" + rest + \")+\";\n } else if (first === \":\") {\n return \"+$kendoHtmlEncode(\" + rest + \")+\";\n } else {\n return \";\" + part + \";$kendoOutput+=\";\n }\n }\n }\n\n var argumentNameRegExp = /^\\w+/,\n encodeRegExp = /\\$\\{([^}]*)\\}/g,\n escapedCurlyRegExp = /\\\\\\}/g,\n curlyRegExp = /__CURLY__/g,\n escapedSharpRegExp = /\\\\#/g,\n sharpRegExp = /__SHARP__/g,\n zeros = [\"\", \"0\", \"00\", \"000\", \"0000\"];\n\n Template = {\n paramName: \"data\", // name of the parameter of the generated template\n useWithBlock: true, // whether to wrap the template in a with() block\n render: function(template, data) {\n var idx,\n length,\n html = \"\";\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n html += template(data[idx]);\n }\n\n return html;\n },\n compile: function(template, options) {\n var settings = extend({}, this, options),\n paramName = settings.paramName,\n argumentName = paramName.match(argumentNameRegExp)[0],\n useWithBlock = settings.useWithBlock,\n functionBody = \"var $kendoOutput, $kendoHtmlEncode = kendo.htmlEncode;\",\n fn,\n parts,\n idx;\n\n if (isFunction(template)) {\n return template;\n }\n\n functionBody += useWithBlock ? \"with(\" + paramName + \"){\" : \"\";\n\n functionBody += \"$kendoOutput=\";\n\n parts = template\n .replace(escapedCurlyRegExp, \"__CURLY__\")\n .replace(encodeRegExp, \"#=$kendoHtmlEncode($1)#\")\n .replace(curlyRegExp, \"}\")\n .replace(escapedSharpRegExp, \"__SHARP__\")\n .split(\"#\");\n\n for (idx = 0; idx < parts.length; idx ++) {\n functionBody += compilePart(parts[idx], idx % 2 === 0);\n }\n\n functionBody += useWithBlock ? \";}\" : \";\";\n\n functionBody += \"return $kendoOutput;\";\n\n functionBody = functionBody.replace(sharpRegExp, \"#\");\n\n try {\n // This function evaluation is required for legacy support of the Kendo Template syntax - non CSP compliant.\n fn = new Function(argumentName, functionBody);\n fn._slotCount = Math.floor(parts.length / 2);\n return fn;\n } catch (e) {\n if (kendo.debugTemplates) {\n window.console.warn(`Invalid template:'${template}' Generated code:'${functionBody}'`);\n } else {\n throw new Error(kendo.format(\"Invalid template:'{0}' Generated code:'{1}'\", template, functionBody));\n }\n }\n }\n };\n\n function pad(number, digits, end) {\n number = number + \"\";\n digits = digits || 2;\n end = digits - number.length;\n\n if (end) {\n return zeros[digits].substring(0, end) + number;\n }\n\n return number;\n }\n\n //JSON stringify\n (function() {\n var escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = {\n \"\\b\": \"\\\\b\",\n \"\\t\": \"\\\\t\",\n \"\\n\": \"\\\\n\",\n \"\\f\": \"\\\\f\",\n \"\\r\": \"\\\\r\",\n \"\\\"\": '\\\\\"',\n \"\\\\\": \"\\\\\\\\\"\n },\n rep,\n toString = {}.toString;\n\n\n if (typeof Date.prototype.toJSON !== FUNCTION) {\n\n Date.prototype.toJSON = function() {\n var that = this;\n\n return isFinite(that.valueOf()) ?\n pad(that.getUTCFullYear(), 4) + \"-\" +\n pad(that.getUTCMonth() + 1) + \"-\" +\n pad(that.getUTCDate()) + \"T\" +\n pad(that.getUTCHours()) + \":\" +\n pad(that.getUTCMinutes()) + \":\" +\n pad(that.getUTCSeconds()) + \"Z\" : null;\n };\n\n String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function() {\n return this.valueOf();\n };\n }\n\n function quote(string) {\n escapable.lastIndex = 0;\n return escapable.test(string) ? \"\\\"\" + string.replace(escapable, function(a) {\n var c = meta[a];\n return typeof c === STRING ? c :\n \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n }) + \"\\\"\" : \"\\\"\" + string + \"\\\"\";\n }\n\n function str(key, holder) {\n var i,\n k,\n v,\n length,\n mind = gap,\n partial,\n value = holder[key],\n type;\n\n if (value && typeof value === OBJECT && typeof value.toJSON === FUNCTION) {\n value = value.toJSON(key);\n }\n\n if (typeof rep === FUNCTION) {\n value = rep.call(holder, key, value);\n }\n\n type = typeof value;\n if (type === STRING) {\n return quote(value);\n } else if (type === NUMBER) {\n return isFinite(value) ? String(value) : NULL;\n } else if (type === BOOLEAN || type === NULL) {\n return String(value);\n } else if (type === OBJECT) {\n if (!value) {\n return NULL;\n }\n gap += indent;\n partial = [];\n if (toString.apply(value) === \"[object Array]\") {\n length = value.length;\n for (i = 0; i < length; i++) {\n partial[i] = str(i, value) || NULL;\n }\n v = partial.length === 0 ? \"[]\" : gap ?\n \"[\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"]\" :\n \"[\" + partial.join(\",\") + \"]\";\n gap = mind;\n return v;\n }\n if (rep && typeof rep === OBJECT) {\n length = rep.length;\n for (i = 0; i < length; i++) {\n if (typeof rep[i] === STRING) {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? \": \" : \":\") + v);\n }\n }\n }\n } else {\n for (k in value) {\n if (Object.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? \": \" : \":\") + v);\n }\n }\n }\n }\n\n v = partial.length === 0 ? \"{}\" : gap ?\n \"{\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"}\" :\n \"{\" + partial.join(\",\") + \"}\";\n gap = mind;\n return v;\n }\n }\n\n if (typeof JSON.stringify !== FUNCTION) {\n JSON.stringify = function(value, replacer, space) {\n var i;\n gap = \"\";\n indent = \"\";\n\n if (typeof space === NUMBER) {\n for (i = 0; i < space; i += 1) {\n indent += \" \";\n }\n\n } else if (typeof space === STRING) {\n indent = space;\n }\n\n rep = replacer;\n if (replacer && typeof replacer !== FUNCTION && (typeof replacer !== OBJECT || typeof replacer.length !== NUMBER)) {\n throw new Error(\"JSON.stringify\");\n }\n\n return str(\"\", { \"\": value });\n };\n }\n })();\n\n // Date and Number formatting\n (function() {\n var dateFormatRegExp = /EEEE|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|HH|H|hh|h|mm|m|fff|ff|f|tt|ss|s|zzz|zz|z|\"[^\"]*\"|'[^']*'/g,\n standardFormatRegExp = /^(n|c|p|e)(\\d*)$/i,\n literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g,\n commaRegExp = /\\,/g,\n EMPTY = \"\",\n POINT = \".\",\n COMMA = \",\",\n SHARP = \"#\",\n ZERO = \"0\",\n PLACEHOLDER = \"??\",\n EN = \"en-US\",\n objectToString = {}.toString;\n\n //cultures\n kendo.cultures = kendo.cultures || {}; // Ensure cultures object exists\n kendo.cultures[\"en-US\"] = {\n name: EN,\n numberFormat: {\n pattern: [\"-n\"],\n decimals: 2,\n \",\": \",\",\n \".\": \".\",\n groupSize: [3],\n percent: {\n pattern: [\"-n %\", \"n %\"],\n decimals: 2,\n \",\": \",\",\n \".\": \".\",\n groupSize: [3],\n symbol: \"%\"\n },\n currency: {\n name: \"US Dollar\",\n abbr: \"USD\",\n pattern: [\"($n)\", \"$n\"],\n decimals: 2,\n \",\": \",\",\n \".\": \".\",\n groupSize: [3],\n symbol: \"$\"\n }\n },\n calendars: {\n standard: {\n days: {\n names: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n namesAbbr: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n namesShort: [ \"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\" ]\n },\n months: {\n names: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n namesAbbr: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n },\n AM: [ \"AM\", \"am\", \"AM\" ],\n PM: [ \"PM\", \"pm\", \"PM\" ],\n patterns: {\n d: \"M/d/yyyy\",\n D: \"dddd, MMMM dd, yyyy\",\n F: \"dddd, MMMM dd, yyyy h:mm:ss tt\",\n g: \"M/d/yyyy h:mm tt\",\n G: \"M/d/yyyy h:mm:ss tt\",\n m: \"MMMM dd\",\n M: \"MMMM dd\",\n s: \"yyyy'-'MM'-'ddTHH':'mm':'ss\",\n t: \"h:mm tt\",\n T: \"h:mm:ss tt\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\",\n y: \"MMMM, yyyy\",\n Y: \"MMMM, yyyy\"\n },\n \"/\": \"/\",\n \":\": \":\",\n firstDay: 0,\n twoDigitYearMax: 2029\n }\n }\n };\n\n\n function findCulture(culture) {\n if (culture) {\n if (culture.numberFormat) {\n return culture;\n }\n\n if (typeof culture === STRING) {\n var cultures = kendo.cultures;\n return cultures[culture] || cultures[culture.split(\"-\")[0]] || null;\n }\n\n return null;\n }\n\n return null;\n }\n\n function getCulture(culture) {\n if (culture) {\n culture = findCulture(culture);\n }\n\n return culture || kendo.cultures.current;\n }\n\n function appendDesignatorsToCultures(calendars) {\n // Don't ask. It's temporary.\n if ((calendars.standard.AM && calendars.standard.AM.length)\n && (calendars.standard.PM && calendars.standard.PM.length)\n && (calendars.standard.AM.indexOf(\"PMA0\") < 0)\n && (calendars.standard.AM.indexOf(\"AM\") > -1 || calendars.standard.PM.indexOf(\"PM\") > -1)) {\n calendars.standard.AM.push(\"a\", \"A\", \"PMa\", \"PMA\", \"PMa0\", \"PMA0\");\n calendars.standard.PM.push(\"p\", \"P\", \"AMp\", \"AMP\", \"AMp0\", \"AMP0\");\n }\n }\n\n kendo.culture = function(cultureName) {\n var cultures = kendo.cultures, culture;\n\n if (cultureName !== undefined$1) {\n culture = findCulture(cultureName) || cultures[EN];\n culture.calendar = culture.calendars.standard;\n cultures.current = culture;\n } else {\n appendDesignatorsToCultures(cultures.current.calendars);\n return cultures.current;\n }\n };\n\n kendo.findCulture = findCulture;\n kendo.getCulture = getCulture;\n\n //set current culture to en-US.\n kendo.culture(EN);\n\n function formatDate(date, format, culture) {\n culture = getCulture(culture);\n\n var calendar = culture.calendars.standard,\n days = calendar.days,\n months = calendar.months;\n\n format = format.pattern || calendar.patterns[format] || format;\n\n return format.replace(dateFormatRegExp, function(match) {\n var minutes;\n var result;\n var sign;\n\n if (match === \"d\") {\n result = date.getDate();\n } else if (match === \"dd\") {\n result = pad(date.getDate());\n } else if (match === \"ddd\") {\n result = days.namesAbbr[date.getDay()];\n } else if (match === \"dddd\" || match === \"EEEE\") {\n result = days.names[date.getDay()];\n } else if (match === \"M\") {\n result = date.getMonth() + 1;\n } else if (match === \"MM\") {\n result = pad(date.getMonth() + 1);\n } else if (match === \"MMM\") {\n result = months.namesAbbr[date.getMonth()];\n } else if (match === \"MMMM\") {\n result = months.names[date.getMonth()];\n } else if (match === \"yy\") {\n result = pad(date.getFullYear() % 100);\n } else if (match === \"yyyy\") {\n result = pad(date.getFullYear(), 4);\n } else if (match === \"h\" ) {\n result = date.getHours() % 12 || 12;\n } else if (match === \"hh\") {\n result = pad(date.getHours() % 12 || 12);\n } else if (match === \"H\") {\n result = date.getHours();\n } else if (match === \"HH\") {\n result = pad(date.getHours());\n } else if (match === \"m\") {\n result = date.getMinutes();\n } else if (match === \"mm\") {\n result = pad(date.getMinutes());\n } else if (match === \"s\") {\n result = date.getSeconds();\n } else if (match === \"ss\") {\n result = pad(date.getSeconds());\n } else if (match === \"f\") {\n result = math.floor(date.getMilliseconds() / 100);\n } else if (match === \"ff\") {\n result = date.getMilliseconds();\n if (result > 99) {\n result = math.floor(result / 10);\n }\n result = pad(result);\n } else if (match === \"fff\") {\n result = pad(date.getMilliseconds(), 3);\n } else if (match === \"tt\" || match === \"aa\") {\n result = date.getHours() < 12 ? calendar.AM[0] : calendar.PM[0];\n } else if (match === \"zzz\") {\n minutes = date.getTimezoneOffset();\n sign = minutes < 0;\n\n result = math.abs(minutes / 60).toString().split(\".\")[0];\n minutes = math.abs(minutes) - (result * 60);\n\n result = (sign ? \"+\" : \"-\") + pad(result);\n result += \":\" + pad(minutes);\n } else if (match === \"zz\" || match === \"z\") {\n result = date.getTimezoneOffset() / 60;\n sign = result < 0;\n\n result = math.abs(result).toString().split(\".\")[0];\n result = (sign ? \"+\" : \"-\") + (match === \"zz\" ? pad(result) : result);\n }\n\n return result !== undefined$1 ? result : match.slice(1, match.length - 1);\n });\n }\n\n //number formatting\n function formatNumber(number, format, culture) {\n culture = getCulture(culture);\n\n var numberFormat = culture.numberFormat,\n decimal = numberFormat[POINT],\n precision = numberFormat.decimals,\n pattern = numberFormat.pattern[0],\n literals = [],\n symbol,\n isCurrency, isPercent,\n customPrecision,\n formatAndPrecision,\n negative = number < 0,\n integer,\n fraction,\n integerLength,\n fractionLength,\n replacement = EMPTY,\n value = EMPTY,\n idx,\n length,\n ch,\n hasGroup,\n hasNegativeFormat,\n decimalIndex,\n sharpIndex,\n zeroIndex,\n hasZero, hasSharp,\n percentIndex,\n currencyIndex,\n startZeroIndex,\n start = -1,\n end;\n\n //return empty string if no number\n if (number === undefined$1) {\n return EMPTY;\n }\n\n if (!isFinite(number)) {\n return number;\n }\n\n //if no format then return number.toString() or number.toLocaleString() if culture.name is not defined\n if (!format) {\n return culture.name.length ? number.toLocaleString() : number.toString();\n }\n\n formatAndPrecision = standardFormatRegExp.exec(format);\n\n // standard formatting\n if (formatAndPrecision) {\n format = formatAndPrecision[1].toLowerCase();\n\n isCurrency = format === \"c\";\n isPercent = format === \"p\";\n\n if (isCurrency || isPercent) {\n //get specific number format information if format is currency or percent\n numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;\n decimal = numberFormat[POINT];\n precision = numberFormat.decimals;\n symbol = numberFormat.symbol;\n pattern = numberFormat.pattern[negative ? 0 : 1];\n }\n\n customPrecision = formatAndPrecision[2];\n\n if (customPrecision) {\n precision = +customPrecision;\n }\n\n //return number in exponential format\n if (format === \"e\") {\n var exp = customPrecision ? number.toExponential(precision) : number.toExponential(); // toExponential() and toExponential(undefined) differ in FF #653438.\n\n return exp.replace(POINT, numberFormat[POINT]);\n }\n\n // multiply if format is percent\n if (isPercent) {\n number *= 100;\n }\n\n number = round(number, precision);\n negative = number < 0;\n number = number.split(POINT);\n\n integer = number[0];\n fraction = number[1];\n\n //exclude \"-\" if number is negative.\n if (negative) {\n integer = integer.substring(1);\n }\n\n value = groupInteger(integer, 0, integer.length, numberFormat);\n\n if (fraction) {\n value += decimal + fraction;\n }\n\n if (format === \"n\" && !negative) {\n return value;\n }\n\n number = EMPTY;\n\n for (idx = 0, length = pattern.length; idx < length; idx++) {\n ch = pattern.charAt(idx);\n\n if (ch === \"n\") {\n number += value;\n } else if (ch === \"$\" || ch === \"%\") {\n number += symbol;\n } else {\n number += ch;\n }\n }\n\n return number;\n }\n\n //custom formatting\n //\n //separate format by sections.\n\n if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\n format = format.replace(literalRegExp, function(match) {\n var quoteChar = match.charAt(0).replace(\"\\\\\", \"\"),\n literal = match.slice(1).replace(quoteChar, \"\");\n\n literals.push(literal);\n\n return PLACEHOLDER;\n });\n }\n\n format = format.split(\";\");\n if (negative && format[1]) {\n //get negative format\n format = format[1];\n hasNegativeFormat = true;\n } else if (number === 0 && format[2]) {\n //format for zeros\n format = format[2];\n if (format.indexOf(SHARP) == -1 && format.indexOf(ZERO) == -1) {\n //return format if it is string constant.\n return format;\n }\n } else {\n format = format[0];\n }\n\n percentIndex = format.indexOf(\"%\");\n currencyIndex = format.indexOf(\"$\");\n\n isPercent = percentIndex != -1;\n isCurrency = currencyIndex != -1;\n\n //multiply number if the format has percent\n if (isPercent) {\n number *= 100;\n }\n\n if (isCurrency && format[currencyIndex - 1] === \"\\\\\") {\n format = format.split(\"\\\\\").join(\"\");\n isCurrency = false;\n }\n\n if (isCurrency || isPercent) {\n //get specific number format information if format is currency or percent\n numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;\n decimal = numberFormat[POINT];\n precision = numberFormat.decimals;\n symbol = numberFormat.symbol;\n }\n\n hasGroup = format.indexOf(COMMA) > -1;\n if (hasGroup) {\n format = format.replace(commaRegExp, EMPTY);\n }\n\n decimalIndex = format.indexOf(POINT);\n length = format.length;\n\n if (decimalIndex != -1) {\n fraction = number.toString().split(\"e\");\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 zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n hasZero = zeroIndex > -1;\n hasSharp = sharpIndex > -1;\n idx = fraction.length;\n\n if (!hasZero && !hasSharp) {\n format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n length = format.length;\n decimalIndex = -1;\n idx = 0;\n }\n\n if (hasZero && zeroIndex > sharpIndex) {\n idx = zeroIndex;\n } else if (sharpIndex > zeroIndex) {\n if (hasSharp && idx > sharpIndex) {\n var rounded = round(number, sharpIndex, negative);\n\n while (rounded.charAt(rounded.length - 1) === ZERO && sharpIndex > 0 && sharpIndex > zeroIndex) {\n sharpIndex--;\n\n rounded = round(number, sharpIndex, negative);\n }\n\n idx = sharpIndex;\n } else if (hasZero && idx < zeroIndex) {\n idx = zeroIndex;\n }\n }\n }\n\n number = round(number, idx, negative);\n\n sharpIndex = format.indexOf(SHARP);\n startZeroIndex = zeroIndex = format.indexOf(ZERO);\n\n //define the index of the first digit placeholder\n if (sharpIndex == -1 && zeroIndex != -1) {\n start = zeroIndex;\n } else if (sharpIndex != -1 && zeroIndex == -1) {\n start = sharpIndex;\n } else {\n start = sharpIndex > zeroIndex ? zeroIndex : sharpIndex;\n }\n\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\n\n //define the index of the last digit placeholder\n if (sharpIndex == -1 && zeroIndex != -1) {\n end = zeroIndex;\n } else if (sharpIndex != -1 && zeroIndex == -1) {\n end = sharpIndex;\n } else {\n end = sharpIndex > zeroIndex ? sharpIndex : zeroIndex;\n }\n\n if (start == length) {\n end = start;\n }\n\n if (start != -1) {\n value = number.toString().split(POINT);\n integer = value[0];\n fraction = value[1] || EMPTY;\n\n integerLength = integer.length;\n fractionLength = fraction.length;\n\n if (negative && (number * -1) >= 0) {\n negative = false;\n }\n\n number = format.substring(0, start);\n\n if (negative && !hasNegativeFormat) {\n number += \"-\";\n }\n\n for (idx = start; idx < length; idx++) {\n ch = format.charAt(idx);\n\n if (decimalIndex == -1) {\n if (end - idx < integerLength) {\n number += integer;\n break;\n }\n } else {\n if (zeroIndex != -1 && zeroIndex < 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 ? 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)), numberFormat);\n }\n\n if (end >= start) {\n number += format.substring(end + 1);\n }\n\n //replace symbol placeholders\n if (isCurrency || isPercent) {\n value = EMPTY;\n for (idx = 0, length = number.length; idx < length; idx++) {\n ch = number.charAt(idx);\n value += (ch === \"$\" || ch === \"%\") ? symbol : ch;\n }\n number = value;\n }\n\n length = literals.length;\n\n if (length) {\n for (idx = 0; idx < length; idx++) {\n number = number.replace(PLACEHOLDER, literals[idx]);\n }\n }\n }\n\n return number;\n }\n\n var groupInteger = function(number, start, end, numberFormat) {\n var decimalIndex = number.indexOf(numberFormat[POINT]);\n var groupSizes = numberFormat.groupSize.slice();\n var groupSize = groupSizes.shift();\n var integer, integerLength;\n var idx, parts, value;\n var newGroupSize;\n\n end = decimalIndex !== -1 ? decimalIndex : end + 1;\n\n integer = number.substring(start, end);\n integerLength = integer.length;\n\n if (integerLength >= groupSize) {\n idx = integerLength;\n parts = [];\n\n while (idx > -1) {\n value = integer.substring(idx - groupSize, idx);\n if (value) {\n parts.push(value);\n }\n idx -= groupSize;\n newGroupSize = groupSizes.shift();\n groupSize = newGroupSize !== undefined$1 ? newGroupSize : groupSize;\n\n if (groupSize === 0) {\n if (idx > 0) {\n parts.push(integer.substring(0, idx));\n }\n break;\n }\n }\n\n integer = parts.reverse().join(numberFormat[COMMA]);\n number = number.substring(0, start) + integer + number.substring(end);\n }\n\n return number;\n };\n\n var round = function(value, precision, negative) {\n precision = precision || 0;\n\n value = value.toString().split('e');\n value = Math.round(+(value[0] + 'e' + (value[1] ? (+value[1] + precision) : precision)));\n\n if (negative) {\n value = -value;\n }\n\n value = value.toString().split('e');\n value = +(value[0] + 'e' + (value[1] ? (+value[1] - precision) : -precision));\n\n return value.toFixed(Math.min(precision, 20));\n };\n\n var toString = function(value, fmt, culture) {\n if (fmt) {\n if (objectToString.call(value) === \"[object Date]\") {\n return formatDate(value, fmt, culture);\n } else if (typeof value === NUMBER) {\n return formatNumber(value, fmt, culture);\n }\n }\n\n return value !== undefined$1 ? value : \"\";\n };\n\n kendo.format = function(fmt) {\n var values = arguments;\n\n return fmt.replace(formatRegExp, function(match, index, placeholderFormat) {\n var value = values[parseInt(index, 10) + 1];\n\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\");\n });\n };\n\n kendo._extractFormat = function(format) {\n if (format.slice(0,3) === \"{0:\") {\n format = format.slice(3, format.length - 1);\n }\n\n return format;\n };\n\n kendo._activeElement = function() {\n try {\n return document.activeElement;\n } catch (e) {\n return document.documentElement.activeElement;\n }\n };\n\n kendo._round = round;\n kendo._outerWidth = function(element, includeMargin, calculateFromHidden) {\n element = $(element);\n if (calculateFromHidden) {\n return getHiddenDimensions(element, includeMargin).width;\n }\n\n return $(element).outerWidth(includeMargin || false) || 0;\n };\n kendo._outerHeight = function(element, includeMargin, calculateFromHidden) {\n element = $(element);\n if (calculateFromHidden) {\n return getHiddenDimensions(element, includeMargin).height;\n }\n\n return $(element).outerHeight(includeMargin || false) || 0;\n };\n kendo.toString = toString;\n })();\n\n\n (function() {\n var nonBreakingSpaceRegExp = /\\u00A0/g,\n spaceRegExp = /\\s/g,\n exponentRegExp = /[eE][\\-+]?[0-9]+/,\n shortTimeZoneRegExp = /[+|\\-]\\d{1,2}/,\n longTimeZoneRegExp = /[+|\\-]\\d{1,2}:?\\d{2}/,\n dateRegExp = /^\\/Date\\((.*?)\\)\\/$/,\n offsetRegExp = /[+-]\\d*/,\n FORMATS_SEQUENCE = [ [], [ \"G\", \"g\", \"F\" ], [ \"D\", \"d\", \"y\", \"m\", \"T\", \"t\" ] ],\n STANDARD_FORMATS = [\n [\n \"yyyy-MM-ddTHH:mm:ss.fffffffzzz\",\n \"yyyy-MM-ddTHH:mm:ss.fffffff\",\n \"yyyy-MM-ddTHH:mm:ss.fffzzz\",\n \"yyyy-MM-ddTHH:mm:ss.fff\",\n \"ddd MMM dd yyyy HH:mm:ss\",\n \"yyyy-MM-ddTHH:mm:sszzz\",\n \"yyyy-MM-ddTHH:mmzzz\",\n \"yyyy-MM-ddTHH:mmzz\",\n \"yyyy-MM-ddTHH:mm:ss\",\n \"yyyy-MM-dd HH:mm:ss\",\n \"yyyy/MM/dd HH:mm:ss\"\n ], [\n \"yyyy-MM-ddTHH:mm\",\n \"yyyy-MM-dd HH:mm\",\n \"yyyy/MM/dd HH:mm\"\n ], [\n \"yyyy/MM/dd\",\n \"yyyy-MM-dd\",\n \"HH:mm:ss\",\n \"HH:mm\"\n ]\n ],\n numberRegExp = {\n 2: /^\\d{1,2}/,\n 3: /^\\d{1,3}/,\n 4: /^\\d{4}/,\n exact3: /^\\d{3}/\n },\n objectToString = {}.toString;\n\n function outOfRange(value, start, end) {\n return !(value >= start && value <= end);\n }\n\n function designatorPredicate(designator) {\n return designator.charAt(0);\n }\n\n function mapDesignators(designators) {\n return $.map(designators, designatorPredicate);\n }\n\n //if date's day is different than the typed one - adjust\n function adjustDST(date, hours) {\n if (!hours && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n }\n }\n\n function lowerArray(data) {\n var idx = 0,\n length = data.length,\n array = [];\n\n for (; idx < length; idx++) {\n array[idx] = (data[idx] + \"\").toLowerCase();\n }\n\n return array;\n }\n\n function lowerLocalInfo(localInfo) {\n var newLocalInfo = {}, property;\n\n for (property in localInfo) {\n newLocalInfo[property] = lowerArray(localInfo[property]);\n }\n\n return newLocalInfo;\n }\n\n function unpadZero(value) {\n return value.replace(/^0*/, '');\n }\n\n function parseExact(value, format, culture, strict, shouldUnpadZeros) {\n if (!value) {\n return null;\n }\n\n var lookAhead = function(match) {\n var i = 0;\n while (format[idx] === match) {\n i++;\n idx++;\n }\n if (i > 0) {\n idx -= 1;\n }\n return i;\n },\n longestDesignatorLength = (designators) => Array.from(designators).sort((a, b) => b.length - a.length)[0].length,\n getNumber = function(size) {\n var rg, match, part = \"\";\n if (size === 2) {\n for (let i = 0; i <= size; i++) {\n part += value[valueIdx + i] || \"\";\n }\n }\n\n // If the value comes in the form of 021, 022, 023 we must trim the leading zero otherwise the result will be 02 in all three cases instead of 21/22/23.\n if (shouldUnpadZeros && part.match(numberRegExp.exact3) && Number.isInteger(Number(part)) && Number(part) > 0) {\n part = unpadZero(part);\n } else {\n part = value.substr(valueIdx, size);\n }\n\n rg = numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}');\n match = part.match(rg);\n\n if (match) {\n match = match[0];\n valueIdx += match.length;\n return parseInt(match, 10);\n }\n return null;\n },\n getIndexByName = function(names, lower, subLength) {\n var 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 = value.substr(valueIdx, subLength || nameLength); // The `subLength` is part of the appendDesignatorsToCultures logic.\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 valueIdx += matchLength;\n return matchIdx + 1;\n }\n\n return null;\n },\n checkLiteral = function() {\n var result = false;\n if (value.charAt(valueIdx) === format[idx]) {\n valueIdx++;\n result = true;\n }\n return result;\n },\n calendar = culture.calendars.standard,\n year = null,\n month = null,\n day = null,\n hours = null,\n minutes = null,\n seconds = null,\n milliseconds = null,\n idx = 0,\n valueIdx = 0,\n literal = false,\n date = new Date(),\n twoDigitYearMax = calendar.twoDigitYearMax || 2029,\n defaultYear = date.getFullYear(),\n ch, count, length, pattern,\n pmHour, UTC, matches,\n amDesignators, pmDesignators,\n hoursOffset, minutesOffset,\n hasTime, match;\n\n if (!format) {\n format = \"d\"; //shord date format\n }\n\n //if format is part of the patterns get real format\n pattern = calendar.patterns[format];\n if (pattern) {\n format = pattern;\n }\n\n format = format.split(\"\");\n length = format.length;\n\n for (; idx < length; idx++) {\n ch = format[idx];\n\n if (literal) {\n if (ch === \"'\") {\n literal = false;\n } else {\n checkLiteral();\n }\n } else {\n if (ch === \"d\") {\n count = lookAhead(\"d\");\n if (!calendar._lowerDays) {\n calendar._lowerDays = lowerLocalInfo(calendar.days);\n }\n\n if (day !== null && count > 2) {\n continue;\n }\n\n day = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerDays[count == 3 ? \"namesAbbr\" : \"names\"], true);\n\n if (day === null || outOfRange(day, 1, 31)) {\n return null;\n }\n } else if (ch === \"M\") {\n count = lookAhead(\"M\");\n if (!calendar._lowerMonths) {\n calendar._lowerMonths = lowerLocalInfo(calendar.months);\n }\n month = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerMonths[count == 3 ? 'namesAbbr' : 'names'], true);\n\n if (month === null || outOfRange(month, 1, 12)) {\n return null;\n }\n month -= 1; //because month is zero based\n } else if (ch === \"y\") {\n count = lookAhead(\"y\");\n year = getNumber(count);\n\n if (year === null) {\n return null;\n }\n\n if (count == 2) {\n if (typeof twoDigitYearMax === \"string\") {\n twoDigitYearMax = defaultYear + parseInt(twoDigitYearMax, 10);\n }\n\n year = (defaultYear - defaultYear % 100) + year;\n if (year > twoDigitYearMax) {\n year -= 100;\n }\n }\n } else if (ch === \"h\" ) {\n lookAhead(\"h\");\n hours = getNumber(2);\n if (hours == 12) {\n hours = 0;\n }\n if (hours === null || outOfRange(hours, 0, 11)) {\n return null;\n }\n } else if (ch === \"H\") {\n lookAhead(\"H\");\n hours = getNumber(2);\n if (hours === null || outOfRange(hours, 0, 23)) {\n return null;\n }\n } else if (ch === \"m\") {\n lookAhead(\"m\");\n minutes = getNumber(2);\n if (minutes === null || outOfRange(minutes, 0, 59)) {\n return null;\n }\n } else if (ch === \"s\") {\n lookAhead(\"s\");\n seconds = getNumber(2);\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return null;\n }\n } else if (ch === \"f\") {\n count = lookAhead(\"f\");\n\n match = value.substr(valueIdx, count).match(numberRegExp[3]);\n milliseconds = getNumber(count); //move value index position\n\n if (milliseconds !== null) {\n milliseconds = parseFloat(\"0.\" + match[0], 10);\n milliseconds = kendo._round(milliseconds, 3);\n milliseconds *= 1000;\n }\n\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n return null;\n }\n\n } else if (ch === \"t\") {\n count = lookAhead(\"t\");\n amDesignators = calendar.AM;\n pmDesignators = calendar.PM;\n\n if (count === 1) {\n amDesignators = mapDesignators(amDesignators);\n pmDesignators = mapDesignators(pmDesignators);\n }\n\n pmHour = getIndexByName(pmDesignators, false, longestDesignatorLength(pmDesignators));\n if (!pmHour && !getIndexByName(amDesignators, false, longestDesignatorLength(amDesignators))) {\n return null;\n }\n }\n else if (ch === \"z\") {\n UTC = true;\n count = lookAhead(\"z\");\n\n if (value.substr(valueIdx, 1) === \"Z\") {\n checkLiteral();\n continue;\n }\n\n matches = value.substr(valueIdx, 6)\n .match(count > 2 ? longTimeZoneRegExp : shortTimeZoneRegExp);\n\n if (!matches) {\n return null;\n }\n\n matches = matches[0].split(\":\");\n\n hoursOffset = matches[0];\n minutesOffset = matches[1];\n\n if (!minutesOffset && hoursOffset.length > 3) { //(+|-)[hh][mm] format is used\n valueIdx = hoursOffset.length - 2;\n minutesOffset = hoursOffset.substring(valueIdx);\n hoursOffset = hoursOffset.substring(0, valueIdx);\n }\n\n hoursOffset = parseInt(hoursOffset, 10);\n if (outOfRange(hoursOffset, -12, 13)) {\n return null;\n }\n\n if (count > 2) {\n minutesOffset = matches[0][0] + minutesOffset;\n minutesOffset = parseInt(minutesOffset, 10);\n if (isNaN(minutesOffset) || outOfRange(minutesOffset, -59, 59)) {\n return null;\n }\n }\n } else if (ch === \"'\") {\n literal = true;\n checkLiteral();\n } else if (!checkLiteral()) {\n return null;\n }\n }\n }\n\n // if more characters follow, assume wrong format\n // https://github.com/telerik/kendo-ui-core/issues/3476\n if (strict && !/^\\s*$/.test(value.substr(valueIdx))) {\n return null;\n }\n\n hasTime = hours !== null || minutes !== null || seconds || null;\n\n if (year === null && month === null && day === null && hasTime) {\n year = defaultYear;\n month = date.getMonth();\n day = date.getDate();\n } else {\n if (year === null) {\n year = defaultYear;\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;\n }\n\n value = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n } else {\n value = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n adjustDST(value, hours);\n }\n\n if (year < 100) {\n value.setFullYear(year);\n }\n\n if (value.getDate() !== day && UTC === undefined$1) {\n return null;\n }\n\n return value;\n }\n\n function parseMicrosoftFormatOffset(offset) {\n var sign = offset.substr(0, 1) === \"-\" ? -1 : 1;\n\n offset = offset.substring(1);\n offset = (parseInt(offset.substr(0, 2), 10) * 60) + parseInt(offset.substring(2), 10);\n\n return sign * offset;\n }\n\n function getDefaultFormats(culture) {\n var length = math.max(FORMATS_SEQUENCE.length, STANDARD_FORMATS.length);\n var calendar = culture.calendar || culture.calendars.standard;\n var patterns = calendar.patterns;\n var cultureFormats, formatIdx, idx;\n var formats = [];\n\n for (idx = 0; idx < length; idx++) {\n cultureFormats = FORMATS_SEQUENCE[idx];\n for (formatIdx = 0; formatIdx < cultureFormats.length; formatIdx++) {\n formats.push(patterns[cultureFormats[formatIdx]]);\n }\n formats = formats.concat(STANDARD_FORMATS[idx]);\n }\n\n return formats;\n }\n\n function internalParseDate(value, formats, culture, strict, shouldUnpadZeros) {\n if (objectToString.call(value) === \"[object Date]\") {\n return value;\n }\n\n var idx = 0;\n var date = null;\n var length;\n var tzoffset;\n\n if (value && value.indexOf(\"/D\") === 0) {\n date = dateRegExp.exec(value);\n if (date) {\n date = date[1];\n tzoffset = offsetRegExp.exec(date.substring(1));\n\n date = new Date(parseInt(date, 10));\n\n if (tzoffset) {\n tzoffset = parseMicrosoftFormatOffset(tzoffset[0]);\n date = kendo.timezone.apply(date, 0);\n date = kendo.timezone.convert(date, 0, -1 * tzoffset);\n }\n\n return date;\n }\n }\n\n culture = kendo.getCulture(culture);\n\n if (!formats) {\n formats = getDefaultFormats(culture);\n }\n\n formats = isArray(formats) ? formats : [formats];\n length = formats.length;\n\n for (; idx < length; idx++) {\n date = parseExact(value, formats[idx], culture, strict, shouldUnpadZeros);\n if (date) {\n return date;\n }\n }\n\n return date;\n }\n\n kendo.parseDate = function(value, formats, culture, shouldUnpadZeros) {\n return internalParseDate(value, formats, culture, false, shouldUnpadZeros);\n };\n\n kendo.parseExactDate = function(value, formats, culture) {\n return internalParseDate(value, formats, culture, true);\n };\n\n kendo.parseInt = function(value, culture) {\n var result = kendo.parseFloat(value, culture);\n if (result) {\n result = result | 0;\n }\n return result;\n };\n\n kendo.parseFloat = function(value, culture, format) {\n if (!value && value !== 0) {\n return null;\n }\n\n if (typeof value === NUMBER) {\n return value;\n }\n\n value = value.toString();\n culture = kendo.getCulture(culture);\n\n var number = culture.numberFormat,\n percent = number.percent,\n currency = number.currency,\n symbol = currency.symbol,\n percentSymbol = percent.symbol,\n negative = value.indexOf(\"-\"),\n parts, isPercent;\n\n //handle exponential number\n if (exponentRegExp.test(value)) {\n value = parseFloat(value.replace(number[\".\"], \".\"));\n if (isNaN(value)) {\n value = null;\n }\n return value;\n }\n\n if (negative > 0) {\n return null;\n } else {\n negative = negative > -1;\n }\n\n if (value.indexOf(symbol) > -1 || (format && format.toLowerCase().indexOf(\"c\") > -1)) {\n number = currency;\n parts = number.pattern[0].replace(\"$\", symbol).split(\"n\");\n if (value.indexOf(parts[0]) > -1 && value.indexOf(parts[1]) > -1) {\n value = value.replace(parts[0], \"\").replace(parts[1], \"\");\n negative = true;\n }\n } else if (value.indexOf(percentSymbol) > -1) {\n isPercent = true;\n number = percent;\n symbol = percentSymbol;\n }\n\n value = value.replace(\"-\", \"\")\n .replace(symbol, \"\")\n .replace(nonBreakingSpaceRegExp, \" \")\n .split(number[\",\"].replace(nonBreakingSpaceRegExp, \" \")).join(\"\")\n .replace(spaceRegExp, \"\")\n .replace(number[\".\"], \".\");\n\n value = parseFloat(value);\n\n if (isNaN(value)) {\n value = null;\n } else if (negative) {\n value *= -1;\n }\n\n if (value && isPercent) {\n value /= 100;\n }\n\n return value;\n };\n })();\n\n function getShadows(element) {\n var shadow = element.css(kendo.support.transitions.css + \"box-shadow\") || element.css(\"box-shadow\"),\n radius = shadow ? shadow.match(boxShadowRegExp) || [ 0, 0, 0, 0, 0 ] : [ 0, 0, 0, 0, 0 ],\n blur = math.max((+radius[3]), +(radius[4] || 0));\n\n return {\n left: (-radius[1]) + blur,\n right: (+radius[1]) + blur,\n bottom: (+radius[2]) + blur\n };\n }\n\n function getHiddenDimensions(element, includeMargin) {\n var clone, width, height;\n\n clone = element.clone();\n clone.css(\"display\", \"\");\n clone.css(\"visibility\", \"hidden\");\n clone.appendTo($(\"body\"));\n\n width = clone.outerWidth(includeMargin || false);\n height = clone.outerHeight(includeMargin || false);\n\n clone.remove();\n\n return {\n width: width || 0,\n height: height || 0\n };\n }\n\n function wrap(element, autosize, resize, shouldCorrectWidth = true, autowidth) {\n var percentage,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n parent = element.parent(),\n windowOuterWidth = outerWidth(window);\n\n parent.parent().removeClass(\"k-animation-container-sm\");\n\n if (!parent.hasClass(\"k-child-animation-container\")) {\n var width = element[0].style.width,\n height = element[0].style.height,\n percentWidth = percentRegExp.test(width),\n percentHeight = percentRegExp.test(height),\n forceDimensions = element.hasClass(\"k-tooltip\") || element.is(\".k-menu-horizontal.k-context-menu\"),\n calculateFromHidden = element.hasClass(\"k-tooltip\");\n\n percentage = percentWidth || percentHeight;\n\n if (!percentWidth && (!autosize || (autosize && width) || forceDimensions)) { width = autosize ? outerWidth(element, false, calculateFromHidden) + 1 : outerWidth(element, false, calculateFromHidden); }\n if (!percentHeight && (!autosize || (autosize && height)) || forceDimensions) { height = outerHeight(element, false, calculateFromHidden); }\n\n element.wrap(\n $(\"
\")\n .addClass(\"k-child-animation-container\")\n .css({\n width: autowidth ? \"auto\" : width,\n height: height\n }));\n parent = element.parent();\n\n parent.wrap(\n $(\"
\")\n .addClass(\"k-animation-container\")\n .attr(\"role\", \"region\")\n );\n\n if (percentage) {\n element.css({\n width: \"100%\",\n height: \"100%\"\n });\n }\n } else {\n wrapResize(element, autosize, shouldCorrectWidth);\n }\n\n parent = parent.parent();\n\n if (windowOuterWidth < outerWidth(parent)) {\n parent.addClass(\"k-animation-container-sm\");\n resize = true;\n }\n\n if (resize) {\n wrapResize(element, autosize, shouldCorrectWidth);\n }\n\n return parent;\n }\n\n function wrapResize(element, autosize, shouldCorrectWidth) {\n var percentage,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n parent = element.parent(),\n wrapper = element.closest(\".k-animation-container\"),\n calculateFromHidden = element.hasClass(\"k-tooltip\"),\n visible = element.is(\":visible\"),\n wrapperStyle = parent[0].style,\n elementHeight = element[0].style.height;\n\n if (wrapper.is(\":hidden\")) {\n wrapper.css({\n display: \"\",\n position: \"\"\n });\n }\n\n percentage = percentRegExp.test(wrapperStyle.width) || percentRegExp.test(wrapperStyle.height);\n\n if (!percentage) {\n if (!visible) {\n element.add(parent).show();\n }\n if (shouldCorrectWidth) {\n parent.css(\"width\", \"\"); // Needed to get correct width dimensions\n }\n parent.css({\n width: autosize ? outerWidth(element, false, calculateFromHidden) + 1 : outerWidth(element, false, calculateFromHidden),\n });\n\n if (elementHeight === \"auto\") {\n element.css({ height: outerHeight(parent) });\n } else {\n parent.css({\n height: outerHeight(element)\n });\n }\n\n if (!visible) {\n element.hide();\n }\n }\n }\n\n function deepExtend(destination) {\n var i = 1,\n length = arguments.length;\n\n for (i = 1; i < length; i++) {\n deepExtendOne(destination, arguments[i]);\n }\n\n return destination;\n }\n\n function deepExtendOne(destination, source) {\n var ObservableArray = kendo.data.ObservableArray,\n LazyObservableArray = kendo.data.LazyObservableArray,\n DataSource = kendo.data.DataSource,\n HierarchicalDataSource = kendo.data.HierarchicalDataSource,\n property,\n propValue,\n propType,\n propInit,\n destProp;\n\n for (property in source) {\n propValue = source[property];\n propType = typeof propValue;\n\n if (propType === OBJECT && propValue !== null) {\n propInit = propValue.constructor;\n } else {\n propInit = null;\n }\n\n if (propInit &&\n propInit !== Array && propInit !== ObservableArray && propInit !== LazyObservableArray &&\n propInit !== DataSource && propInit !== HierarchicalDataSource && propInit !== RegExp &&\n (!kendo.isFunction(window.ArrayBuffer) || propInit !== ArrayBuffer) && !(propValue instanceof HTMLElement)) {\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 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\n function testRx(agent, rxs, dflt) {\n for (var rx in rxs) {\n if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) {\n return rx;\n }\n }\n return dflt !== undefined$1 ? dflt : agent;\n }\n\n function toHyphens(str) {\n return str.replace(/([a-z][A-Z])/g, function(g) {\n return g.charAt(0) + '-' + g.charAt(1).toLowerCase();\n });\n }\n\n function toCamelCase(str) {\n return str.replace(/\\-(\\w)/g, function(strMatch, g1) {\n return g1.toUpperCase();\n });\n }\n\n function getComputedStyles(element, properties) {\n var styles = {}, computedStyle;\n\n if (document.defaultView && document.defaultView.getComputedStyle) {\n computedStyle = document.defaultView.getComputedStyle(element, \"\");\n\n if (properties) {\n $.each(properties, function(idx, value) {\n styles[value] = computedStyle.getPropertyValue(value);\n });\n }\n } else {\n computedStyle = element.currentStyle;\n\n if (properties) {\n $.each(properties, function(idx, value) {\n styles[value] = computedStyle[toCamelCase(value)];\n });\n }\n }\n\n if (!kendo.size(styles)) {\n styles = computedStyle;\n }\n\n return styles;\n }\n\n function isScrollable(element) {\n if (element.dataset[kendo.ns + \"scrollable\"] === \"false\") {\n return false;\n }\n\n if (element && element.className && typeof(element.className) === \"string\" && element.className.indexOf(\"k-auto-scrollable\") > -1) {\n return true;\n }\n\n var overflow = getComputedStyles(element, [\"overflow\"]).overflow;\n return overflow.indexOf(\"auto\") > -1 || overflow.indexOf(\"scroll\") > -1;\n }\n\n function scrollLeft(element, value) {\n var webkit = support.browser.webkit;\n var mozila = support.browser.mozilla;\n var browserVersion = support.browser.version;\n var el, isRtl;\n\n if (element instanceof $ && value !== undefined$1) {\n element.each(function(i, e) {\n scrollLeft(e, value);\n });\n\n return;\n } else {\n el = element instanceof $ ? element[0] : element;\n }\n\n if (!el) {\n return;\n }\n\n isRtl = support.isRtl(element);\n\n // After updating browser detection,\n // Test in which if should the Safari browsers go\n if (value !== undefined$1) {\n if (isRtl && webkit && (browserVersion < 85 || support.browser.safari)) {\n el.scrollLeft = el.scrollWidth - el.clientWidth - value;\n } else if (isRtl && (mozila || webkit) && value > 0) {\n el.scrollLeft = -value;\n } else {\n el.scrollLeft = value;\n }\n } else {\n if (isRtl && webkit && (browserVersion < 85 || support.browser.safari)) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n } else {\n return Math.abs(el.scrollLeft);\n }\n }\n }\n\n (function() {\n support._scrollbar = undefined$1;\n\n support.scrollbar = function(refresh) {\n if (!isNaN(support._scrollbar) && !refresh) {\n return support._scrollbar;\n } else {\n var div = document.createElement(\"div\"),\n result;\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 support._scrollbar = result = div.offsetWidth - div.scrollWidth;\n\n document.body.removeChild(div);\n\n return result;\n }\n };\n\n support.isRtl = function(element) {\n return $(element).closest(\".k-rtl\").length > 0;\n };\n\n var table = document.createElement(\"table\");\n\n // Internet Explorer does not support setting the innerHTML of TBODY and TABLE elements\n try {\n table.innerHTML = \"\";\n\n support.tbodyInnerHtml = true;\n } catch (e) {\n support.tbodyInnerHtml = false;\n }\n\n support.touch = \"ontouchstart\" in window;\n\n var docStyle = document.documentElement.style;\n var transitions = support.transitions = false,\n transforms = support.transforms = false,\n elementProto = \"HTMLElement\" in window ? HTMLElement.prototype : [];\n\n support.hasHW3D = (\"WebKitCSSMatrix\" in window && \"m11\" in new window.WebKitCSSMatrix()) || \"MozPerspective\" in docStyle || \"msPerspective\" in docStyle;\n support.cssFlexbox = (\"flexWrap\" in docStyle) || (\"WebkitFlexWrap\" in docStyle) || (\"msFlexWrap\" in docStyle);\n\n each([ \"Moz\", \"webkit\", \"O\", \"ms\" ], function() {\n var prefix = this.toString(),\n hasTransitions = typeof table.style[prefix + \"Transition\"] === STRING;\n\n if (hasTransitions || typeof table.style[prefix + \"Transform\"] === STRING) {\n var 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.devicePixelRatio = window.devicePixelRatio === undefined$1 ? 1 : window.devicePixelRatio;\n\n try {\n support.screenWidth = window.outerWidth || window.screen ? window.screen.availWidth : window.innerWidth;\n support.screenHeight = window.outerHeight || window.screen ? window.screen.availHeight : window.innerHeight;\n } catch (e) {\n //window.outerWidth throws error when in IE showModalDialog.\n support.screenWidth = window.screen.availWidth;\n support.screenHeight = window.screen.availHeight;\n }\n\n support.detectOS = function(ua) {\n var 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 (var agent in agentRxs) {\n if (agentRxs.hasOwnProperty(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 = testRx(agent, formFactorRxs, false);\n os.browser = testRx(ua, browserRxs, \"default\");\n os.name = testRx(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 os.cordova = typeof window.PhoneGap !== UNDEFINED || typeof window.cordova !== UNDEFINED; // Use file protocol to detect appModes.\n os.appMode = window.navigator.standalone || (/file|local|wmapp/).test(window.location.protocol) || os.cordova; // Use file protocol to detect appModes.\n\n if (os.android && (support.devicePixelRatio < 1.5 && os.flatVersion < 400 || notAndroidPhone) && (support.screenWidth > 800 || support.screenHeight > 800)) {\n os.tablet = agent;\n }\n\n break;\n }\n }\n }\n return os;\n };\n\n var mobileOS = support.mobileOS = support.detectOS(navigator.userAgent);\n\n support.wpDevicePixelRatio = mobileOS.wp ? screen.width / 320 : 0;\n\n support.hasNativeScrolling = false;\n\n if (mobileOS.ios || (mobileOS.android && mobileOS.majorVersion > 2) || mobileOS.wp) {\n support.hasNativeScrolling = mobileOS;\n }\n\n support.delayedClick = function() {\n\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 (mobileOS.ios) {\n return true;\n }\n\n if (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 return !($(\"meta[name=viewport]\").attr(\"content\") || \"\").match(/user-scalable=no/i);\n }\n }\n\n return false;\n };\n\n support.mouseAndTouchPresent = support.touch && !(support.mobileOS.ios || support.mobileOS.android);\n\n support.detectBrowser = function(ua) {\n var browser = false,\n match = [],\n chromiumEdgeMatch = [],\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 (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n match = ua.match(browserRxs[agent]);\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 if (browser.chrome) {\n chromiumEdgeMatch = ua.match(/(edg)[ \\/]([\\w.]+)/i);\n\n if (chromiumEdgeMatch) {\n browser.chromiumEdge = true;\n }\n }\n\n break;\n }\n }\n }\n\n return browser;\n };\n\n support.browser = support.detectBrowser(navigator.userAgent);\n\n if (!mobileOS && support.touch && support.browser.safari) {\n mobileOS = support.mobileOS = {\n ios: true,\n tablet: \"tablet\",\n device: \"ipad\",\n majorVersion: 13\n };\n }\n\n support.detectClipboardAccess = function() {\n var commands = {\n copy: document.queryCommandSupported ? document.queryCommandSupported(\"copy\") : false,\n cut: document.queryCommandSupported ? document.queryCommandSupported(\"cut\") : false,\n paste: document.queryCommandSupported ? document.queryCommandSupported(\"paste\") : false\n };\n\n if (support.browser.chrome) {\n //not using queryCommandSupported due to chromium issues 476508 and 542948\n commands.paste = false;\n if (support.browser.version >= 43) {\n commands.copy = true;\n commands.cut = true;\n }\n }\n\n return commands;\n };\n\n support.clipboard = support.detectClipboardAccess();\n\n support.zoomLevel = function() {\n try {\n var browser = support.browser;\n var ie11WidthCorrection = 0;\n var docEl = document.documentElement;\n\n if (browser.msie && browser.version == 11 && docEl.scrollHeight > docEl.clientHeight && !support.touch) {\n ie11WidthCorrection = support.scrollbar();\n }\n\n return support.touch ? (docEl.clientWidth / window.innerWidth) :\n browser.msie && browser.version >= 10 ? (((top || window).document.documentElement.offsetWidth + ie11WidthCorrection) / (top || window).innerWidth) : 1;\n } catch (e) {\n return 1;\n }\n };\n\n (function(browser) {\n // add browser-specific CSS class\n var cssClass = \"\",\n docElement = $(document.documentElement),\n majorVersion = parseInt(browser.version, 10);\n\n if (browser.msie) {\n cssClass = \"ie\";\n } else if (browser.mozilla) {\n cssClass = \"ff\";\n } else if (browser.safari) {\n cssClass = \"safari\";\n } else if (browser.webkit) {\n cssClass = \"webkit\";\n } else if (browser.opera) {\n cssClass = \"opera\";\n } else if (browser.edge) {\n cssClass = \"edge\";\n }\n\n if (cssClass) {\n cssClass = \"k-\" + cssClass + \" k-\" + cssClass + majorVersion;\n }\n if (support.mobileOS) {\n cssClass += \" k-mobile\";\n }\n\n if (!support.cssFlexbox) {\n cssClass += \" k-no-flexbox\";\n }\n\n docElement.addClass(cssClass);\n })(support.browser);\n\n support.eventCapture = document.documentElement.addEventListener;\n\n var input = document.createElement(\"input\");\n\n support.placeholder = \"placeholder\" in input;\n support.propertyChangeEvent = \"onpropertychange\" in input;\n\n support.input = (function() {\n var types = [\"number\", \"date\", \"time\", \"month\", \"week\", \"datetime\", \"datetime-local\"];\n var length = types.length;\n var value = \"test\";\n var result = {};\n var idx = 0;\n var type;\n\n for (;idx < length; idx++) {\n type = types[idx];\n input.setAttribute(\"type\", type);\n input.value = value;\n\n result[type.replace(\"-\", \"\")] = input.type !== \"text\" && input.value !== value;\n }\n\n return result;\n })();\n\n input.style.cssText = \"float:left;\";\n\n support.cssFloat = !!input.style.cssFloat;\n\n input = null;\n\n support.stableSort = (function() {\n // Chrome sort is not stable for more than *10* items\n // IE9+ sort is not stable for than *512* items\n var threshold = 513;\n\n var sorted = [{\n index: 0,\n field: \"b\"\n }];\n\n for (var i = 1; i < threshold; i++) {\n sorted.push({\n index: i,\n field: \"a\"\n });\n }\n\n sorted.sort(function(a, b) {\n return a.field > b.field ? 1 : (a.field < b.field ? -1 : 0);\n });\n\n return sorted[0].index === 1;\n })();\n\n support.matchesSelector = elementProto.webkitMatchesSelector || elementProto.mozMatchesSelector ||\n elementProto.msMatchesSelector || elementProto.oMatchesSelector ||\n elementProto.matchesSelector || elementProto.matches ||\n function( selector ) {\n var nodeList = document.querySelectorAll ? ( this.parentNode || document ).querySelectorAll( selector ) || [] : $(selector),\n i = nodeList.length;\n\n while (i--) {\n if (nodeList[i] == this) {\n return true;\n }\n }\n\n return false;\n };\n\n support.matchMedia = \"matchMedia\" in window;\n\n support.pushState = window.history && window.history.pushState;\n\n support.hashChange = \"onhashchange\" in window;\n\n support.customElements = \"registerElement\" in window.document;\n\n var chrome = support.browser.chrome,\n mobileChrome = support.browser.crios,\n mozilla = support.browser.mozilla,\n safari = support.browser.safari;\n support.msPointers = !chrome && window.MSPointerEvent;\n support.pointers = !chrome && !mobileChrome && !mozilla && !safari && window.PointerEvent;\n support.kineticScrollNeeded = mobileOS && (mobileOS.device !== \"ipad\" || mobileOS.majorVersion < 13) && (support.touch || support.msPointers || support.pointers);\n })();\n\n\n function size(obj) {\n var result = 0, key;\n for (key in obj) {\n if (obj.hasOwnProperty(key) && key != \"toJSON\") { // Ignore fake IE7 toJSON.\n result++;\n }\n }\n\n return result;\n }\n\n function getOffset(element, type, positioned) {\n if (!type) {\n type = \"offset\";\n }\n\n var offset = element[type]();\n // clone ClientRect object to JS object (jQuery3)\n var result = {\n top: offset.top,\n right: offset.right,\n bottom: offset.bottom,\n left: offset.left\n };\n\n // IE10 touch zoom is living in a separate viewport\n if (support.browser.msie && (support.pointers || support.msPointers) && !positioned) {\n var sign = support.isRtl(element) ? 1 : -1;\n\n result.top -= (window.pageYOffset - (document.documentElement.scrollTop));\n result.left -= (window.pageXOffset + (sign * document.documentElement.scrollLeft));\n }\n\n return result;\n }\n\n var directions = {\n left: { reverse: \"right\" },\n right: { reverse: \"left\" },\n down: { reverse: \"up\" },\n up: { reverse: \"down\" },\n top: { reverse: \"bottom\" },\n bottom: { reverse: \"top\" },\n \"in\": { reverse: \"out\" },\n out: { reverse: \"in\" }\n };\n\n function parseEffects(input) {\n var effects = {};\n\n each((typeof input === \"string\" ? input.split(\" \") : input), function(idx) {\n effects[idx] = this;\n });\n\n return effects;\n }\n\n function fx(element) {\n return new kendo.effects.Element(element);\n }\n\n var effects = {};\n\n $.extend(effects, {\n enabled: true,\n Element: function(element) {\n this.element = $(element);\n },\n\n promise: function(element, options) {\n if (!element.is(\":visible\")) {\n element.css({ display: element.data(\"olddisplay\") || \"block\" }).css(\"display\");\n }\n\n if (options.hide) {\n element.data(\"olddisplay\", element.css(\"display\")).hide();\n }\n\n if (options.init) {\n options.init();\n }\n\n if (options.completeCallback) {\n options.completeCallback(element); // call the external complete callback with the element\n }\n\n element.dequeue();\n },\n\n disable: function() {\n this.enabled = false;\n this.promise = this.promiseShim;\n },\n\n enable: function() {\n this.enabled = true;\n this.promise = this.animatedPromise;\n }\n });\n\n effects.promiseShim = effects.promise;\n\n function prepareAnimationOptions(options, duration, reverse, complete) {\n if (typeof options === STRING) {\n // options is the list of effect names separated by space e.g. animate(element, \"fadeIn slideDown\")\n\n // only callback is provided e.g. animate(element, options, function() {});\n if (isFunction(duration)) {\n complete = duration;\n duration = 400;\n reverse = false;\n }\n\n if (isFunction(reverse)) {\n complete = reverse;\n reverse = false;\n }\n\n if (typeof duration === BOOLEAN) {\n reverse = duration;\n duration = 400;\n }\n\n options = {\n effects: options,\n duration: duration,\n reverse: reverse,\n complete: complete\n };\n }\n\n return extend({\n //default options\n effects: {},\n duration: 400, //jQuery default duration\n reverse: false,\n init: noop,\n teardown: noop,\n hide: false\n }, options, { completeCallback: options.complete, complete: noop }); // Move external complete callback, so deferred.resolve can be always executed.\n\n }\n\n function animate(element, options, duration, reverse, complete) {\n var idx = 0,\n length = element.length,\n instance;\n\n for (; idx < length; idx ++) {\n instance = $(element[idx]);\n instance.queue(function() {\n effects.promise(instance, prepareAnimationOptions(options, duration, reverse, complete));\n });\n }\n\n return element;\n }\n\n function toggleClass(element, classes, options, add) {\n if (classes) {\n classes = classes.split(\" \");\n\n each(classes, function(idx, value) {\n element.toggleClass(value, add);\n });\n }\n\n return element;\n }\n\n if (!(\"kendoAnimate\" in $.fn)) {\n extend($.fn, {\n kendoStop: function(clearQueue, gotoEnd) {\n return this.stop(clearQueue, gotoEnd);\n },\n\n kendoAnimate: function(options, duration, reverse, complete) {\n return animate(this, options, duration, reverse, complete);\n },\n\n kendoAddClass: function(classes, options) {\n return kendo.toggleClass(this, classes, options, true);\n },\n\n kendoRemoveClass: function(classes, options) {\n return kendo.toggleClass(this, classes, options, false);\n },\n kendoToggleClass: function(classes, options, toggle) {\n return kendo.toggleClass(this, classes, options, toggle);\n }\n });\n }\n\n var ampRegExp = /&/g,\n ltRegExp = //g;\n function htmlEncode(value) {\n return (\"\" + value).replace(ampRegExp, \"&\").replace(ltRegExp, \"<\").replace(gtRegExp, \">\").replace(quoteRegExp, \""\").replace(aposRegExp, \"'\");\n }\n\n function unescape(value) {\n var template;\n\n try {\n template = window.decodeURIComponent(value);\n } catch (error) {\n // If the string contains Unicode characters\n // the decodeURIComponent() will throw an error.\n // Therefore: convert to UTF-8 character\n template = value.replace(/%u([\\dA-F]{4})|%([\\dA-F]{2})/gi, function(_, m1, m2) {\n return String.fromCharCode(parseInt(\"0x\" + (m1 || m2), 16));\n });\n }\n\n return template;\n }\n\n var eventTarget = function(e) {\n return e.target;\n };\n\n if (support.touch) {\n\n eventTarget = function(e) {\n var touches = \"originalEvent\" in e ? e.originalEvent.changedTouches : \"changedTouches\" in e ? e.changedTouches : null;\n\n return touches ? document.elementFromPoint(touches[0].clientX, touches[0].clientY) : e.target;\n };\n\n each([\"swipe\", \"swipeLeft\", \"swipeRight\", \"swipeUp\", \"swipeDown\", \"doubleTap\", \"tap\"], function(m, value) {\n $.fn[value] = function(callback) {\n return this.on(value, callback);\n };\n });\n }\n\n if (support.touch) {\n if (!support.mobileOS) {\n support.mousedown = \"mousedown touchstart\";\n support.mouseup = \"mouseup touchend\";\n support.mousemove = \"mousemove touchmove\";\n support.mousecancel = \"mouseleave touchcancel\";\n support.click = \"click\";\n support.resize = \"resize\";\n } else {\n support.mousedown = \"touchstart\";\n support.mouseup = \"touchend\";\n support.mousemove = \"touchmove\";\n support.mousecancel = \"touchcancel\";\n support.click = \"touchend\";\n support.resize = \"orientationchange\";\n }\n } else if (support.pointers) {\n support.mousemove = \"pointermove\";\n support.mousedown = \"pointerdown\";\n support.mouseup = \"pointerup\";\n support.mousecancel = \"pointercancel\";\n support.click = \"pointerup\";\n support.resize = \"orientationchange resize\";\n } else if (support.msPointers) {\n support.mousemove = \"MSPointerMove\";\n support.mousedown = \"MSPointerDown\";\n support.mouseup = \"MSPointerUp\";\n support.mousecancel = \"MSPointerCancel\";\n support.click = \"MSPointerUp\";\n support.resize = \"orientationchange resize\";\n } else {\n support.mousemove = \"mousemove\";\n support.mousedown = \"mousedown\";\n support.mouseup = \"mouseup\";\n support.mousecancel = \"mouseleave\";\n support.click = \"click\";\n support.resize = \"resize\";\n }\n\n var wrapExpression = function(members, paramName) {\n var result = paramName || \"d\",\n index,\n idx,\n length,\n member,\n count = 1;\n\n for (idx = 0, length = members.length; idx < length; idx++) {\n member = members[idx];\n if (member !== \"\") {\n index = member.indexOf(\"[\");\n\n if (index !== 0) {\n if (index == -1) {\n member = \".\" + member;\n } else {\n count++;\n member = \".\" + member.substring(0, index) + \" || {})\" + member.substring(index);\n }\n }\n\n count++;\n result += member + ((idx < length - 1) ? \" || {})\" : \")\");\n }\n }\n return new Array(count).join(\"(\") + result;\n },\n localUrlRe = /^([a-z]+:)?\\/\\//i;\n\n extend(kendo, {\n widgets: [],\n _widgetRegisteredCallbacks: [],\n ui: kendo.ui || {},\n fx: kendo.fx || fx,\n effects: kendo.effects || effects,\n mobile: kendo.mobile || { },\n data: kendo.data || {},\n dataviz: kendo.dataviz || {},\n drawing: kendo.drawing || {},\n spreadsheet: { messages: {} },\n 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 support: kendo.support || support,\n animate: kendo.animate || animate,\n ns: \"\",\n attr: function(value) {\n return \"data-\" + kendo.ns + value;\n },\n getShadows: getShadows,\n wrap: wrap,\n deepExtend: deepExtend,\n getComputedStyles: getComputedStyles,\n isScrollable: isScrollable,\n scrollLeft: scrollLeft,\n size: size,\n toCamelCase: toCamelCase,\n toHyphens: toHyphens,\n getOffset: kendo.getOffset || getOffset,\n parseEffects: kendo.parseEffects || parseEffects,\n toggleClass: kendo.toggleClass || toggleClass,\n directions: kendo.directions || directions,\n Observable: Observable,\n Class: Class,\n Template: Template,\n template: Template.compile.bind(Template),\n render: Template.render.bind(Template),\n stringify: JSON.stringify.bind(JSON),\n eventTarget: eventTarget,\n htmlEncode: htmlEncode,\n unescape: unescape,\n isLocalUrl: function(url) {\n return url && !localUrlRe.test(url);\n },\n mediaQuery: mediaQuery,\n\n expr: function(expression, safe, paramName) {\n expression = expression || \"\";\n\n if (typeof safe == STRING) {\n paramName = safe;\n safe = false;\n }\n\n paramName = paramName || \"d\";\n\n if (expression && expression.charAt(0) !== \"[\") {\n expression = \".\" + expression;\n }\n\n if (safe) {\n expression = expression.replace(/\"([^.]*)\\.([^\"]*)\"/g,'\"$1_$DOT$_$2\"');\n expression = expression.replace(/'([^.]*)\\.([^']*)'/g,\"'$1_$DOT$_$2'\");\n expression = wrapExpression(expression.split(\".\"), paramName);\n expression = expression.replace(/_\\$DOT\\$_/g, \".\");\n } else {\n expression = paramName + expression;\n }\n\n return expression;\n },\n\n exprToArray: (expression, safe) => {\n expression = expression || \"\";\n\n return expression.indexOf(\".\") >= 0 || expression.indexOf(\"[\") >= 0 ?\n expression.split(/[[\\].]/).map(v => v.replace(/[\"']/g, '')).filter(v => v) :\n expression === \"\" ? [] : [expression];\n },\n\n getter: function(expression, safe) {\n var key = expression + safe;\n\n return getterCache[key] = getterCache[key] || ((obj) => {\n const fields = kendo.exprToArray(expression, safe);\n\n let result = obj;\n for (let idx = 0; idx < fields.length; idx++) {\n result = result[fields[idx]];\n if (!kendo.isPresent(result) && safe) {\n return result;\n }\n }\n\n return result;\n });\n },\n\n setter: function(expression) {\n return setterCache[expression] = setterCache[expression] || ((obj, value) => {\n const fields = kendo.exprToArray(expression);\n\n const innerSetter = ({ parent, val, prop, props }) => {\n if (props.length) {\n parent = parent[props.shift()];\n innerSetter({ parent, val, prop, props });\n } else {\n parent[prop] = val;\n }\n };\n\n innerSetter({\n parent: obj,\n val: value,\n prop: fields.pop(),\n props: fields\n });\n });\n },\n\n accessor: function(expression) {\n return {\n get: kendo.getter(expression),\n set: kendo.setter(expression)\n };\n },\n\n guid: function() {\n var id = \"\", i, random, chars = \"abcdef\";\n\n id += chars[Math.floor(Math.random() * Math.floor(chars.length))];\n\n for (i = 1; i < 32; i++) {\n random = math.random() * 16 | 0;\n\n if (i == 8 || i == 12 || i == 16 || i == 20) {\n id += \"-\";\n }\n id += (i == 12 ? 4 : (i == 16 ? (random & 3 | 8) : random)).toString(16);\n }\n\n return id;\n },\n\n roleSelector: function(role) {\n return role.replace(/(\\S+)/g, \"[\" + kendo.attr(\"role\") + \"=$1],\").slice(0, -1);\n },\n\n directiveSelector: function(directives) {\n var selectors = directives.split(\" \");\n\n if (selectors) {\n for (var i = 0; i < selectors.length; i++) {\n if (selectors[i] != \"view\") {\n selectors[i] = selectors[i].replace(/(\\w*)(view|bar|strip|over)$/, \"$1-$2\");\n }\n }\n }\n\n return selectors.join(\" \").replace(/(\\S+)/g, \"kendo-mobile-$1,\").slice(0, -1);\n },\n\n triggeredByInput: function(e) {\n return (/^(label|input|textarea|select)$/i).test(e.target.tagName);\n },\n\n onWidgetRegistered: function(callback) {\n for (var i = 0, len = kendo.widgets.length; i < len; i++) {\n callback(kendo.widgets[i]);\n }\n\n kendo._widgetRegisteredCallbacks.push(callback);\n },\n\n logToConsole: function(message, type) {\n var console = window.console;\n\n if (!kendo.suppressLog && typeof(console) != \"undefined\" && console.log) {\n console[type || \"log\"](message);\n }\n }\n });\n\n var Widget = Observable.extend( {\n init: function(element, options) {\n var that = this;\n\n if (!validatePackage()) {\n that._showWatermarkOverlay = addWatermarkOverlay;\n }\n\n that.element = kendo.jQuery(element).handler(that);\n\n Observable.fn.init.call(that);\n\n var dataSource = options ? options.dataSource : null;\n var props;\n\n if (options) {\n props = (that.componentTypes || {})[(options || {}).componentType];\n }\n\n if (dataSource) {\n // avoid deep cloning the data source\n options = extend({}, options, { dataSource: {} });\n }\n\n options = that.options = extend(true, {}, that.options, that.defaults, props || {}, options);\n\n if (dataSource) {\n options.dataSource = dataSource;\n }\n\n if (!that.element.attr(kendo.attr(\"role\"))) {\n that.element.attr(kendo.attr(\"role\"), (options.name || \"\").toLowerCase());\n }\n\n that.element.data(\"kendo\" + options.prefix + options.name, that);\n\n that.bind(that.events, options);\n },\n\n events: [],\n\n options: {\n prefix: \"\"\n },\n\n _hasBindingTarget: function() {\n return !!this.element[0].kendoBindingTarget;\n },\n\n _tabindex: function(target) {\n target = target || this.wrapper;\n\n var element = this.element,\n TABINDEX = \"tabindex\",\n tabindex = target.attr(TABINDEX) || element.attr(TABINDEX);\n\n element.removeAttr(TABINDEX);\n\n target.attr(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n },\n\n setOptions: function(options) {\n this._clearCssClasses(options);\n this._setEvents(options);\n $.extend(this.options, options);\n this._applyCssClasses();\n },\n\n _setEvents: function(options) {\n var that = this,\n idx = 0,\n length = that.events.length,\n e;\n\n for (; idx < length; idx ++) {\n e = that.events[idx];\n if (that.options[e] && options[e]) {\n that.unbind(e, that.options[e]);\n if (that._events && that._events[e]) {\n delete that._events[e];\n }\n }\n }\n\n that.bind(that.events, options);\n },\n\n resize: function(force) {\n var size = this.getSize(),\n currentSize = this._size;\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n },\n\n getSize: function() {\n return kendo.dimensions(this.element);\n },\n\n size: function(size) {\n if (!size) {\n return this.getSize();\n } else {\n this.setSize(size);\n }\n },\n\n setSize: $.noop,\n _resize: $.noop,\n\n destroy: function() {\n var that = this;\n\n that.element.removeData(\"kendo\" + that.options.prefix + that.options.name);\n that.element.removeData(\"handler\");\n that.unbind();\n },\n _destroy: function() {\n this.destroy();\n },\n\n _applyCssClasses: function(element) {\n var protoOptions = this.__proto__.options,\n options = this.options,\n el = element || this.wrapper || this.element,\n classes = [],\n i, prop, validFill, widgetName;\n\n if (!kendo.cssProperties.propertyDictionary[protoOptions.name]) {\n return;\n }\n\n for (i = 0; i < cssPropertiesNames.length; i++) {\n prop = cssPropertiesNames[i];\n widgetName = this.options._altname || protoOptions.name;\n\n if (protoOptions.hasOwnProperty(prop)) {\n if (prop === \"themeColor\") {\n validFill = kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: \"fillMode\",\n value: options.fillMode\n });\n\n if (validFill && validFill.length) {\n classes.push(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: options[prop],\n fill: options.fillMode\n }));\n }\n } else {\n classes.push(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: options[prop]\n }));\n }\n }\n }\n\n el.addClass(classes.join(\" \"));\n },\n\n _ariaLabel: function(target) {\n var that = this,\n inputElm = that.element,\n inputId = inputElm.attr(\"id\"),\n labelElm = $(\"label[for=\\\"\" + inputId + \"\\\"]\"),\n ariaLabel = inputElm.attr(ARIA_LABEL),\n ariaLabelledBy = inputElm.attr(ARIA_LABELLEDBY),\n labelId;\n\n if (target[0] === inputElm[0]) {\n return;\n }\n\n if (ariaLabel) {\n target.attr(ARIA_LABEL, ariaLabel);\n } else if (ariaLabelledBy) {\n target.attr(ARIA_LABELLEDBY, ariaLabelledBy);\n } else if (labelElm.length) {\n labelId = labelElm.attr(\"id\") || that._generateLabelId(labelElm, inputId || kendo.guid());\n target.attr(ARIA_LABELLEDBY, labelId);\n }\n },\n\n _clearCssClasses: function(newOptions, element) {\n var protoOptions = this.__proto__.options,\n currentOptions = this.options,\n el = element || this.wrapper || this.element,\n i, prop, widgetName;\n\n if (!kendo.cssProperties.propertyDictionary[protoOptions.name]) {\n return;\n }\n\n for (i = 0; i < cssPropertiesNames.length; i++) {\n prop = cssPropertiesNames[i];\n widgetName = this.options._altname || protoOptions.name;\n\n if (protoOptions.hasOwnProperty(prop) && newOptions.hasOwnProperty(prop)) {\n if (prop === \"themeColor\") {\n el.removeClass(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: currentOptions[prop],\n fill: currentOptions.fillMode\n }));\n } else {\n if (prop === \"fillMode\") {\n el.removeClass(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: \"themeColor\",\n value: currentOptions.themeColor,\n fill: currentOptions.fillMode\n }));\n }\n\n el.removeClass(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: currentOptions[prop]\n }));\n }\n }\n }\n },\n\n _generateLabelId: function(label, inputId) {\n var labelId = inputId + LABELIDPART;\n\n label.attr(\"id\", labelId);\n\n return labelId;\n },\n });\n\n var DataBoundWidget = Widget.extend({\n dataItems: function() {\n return this.dataSource.flatView();\n }\n });\n\n kendo.dimensions = function(element, dimensions) {\n var domElement = element[0];\n\n if (dimensions) {\n element.css(dimensions);\n }\n\n return { width: domElement.offsetWidth, height: domElement.offsetHeight };\n };\n\n kendo.notify = noop;\n\n var templateRegExp = /template$/i,\n jsonRegExp = /^\\s*(?:\\{(?:.|\\r\\n|\\n)*\\}|\\[(?:.|\\r\\n|\\n)*\\])\\s*$/,\n jsonFormatRegExp = /^\\{(\\d+)(:[^\\}]+)?\\}|^\\[[A-Za-z_]+\\]$/,\n dashRegExp = /([A-Z])/g;\n\n function parseOption(element, option) {\n var value;\n\n if (option.indexOf(\"data\") === 0) {\n option = option.substring(4);\n option = option.charAt(0).toLowerCase() + option.substring(1);\n }\n\n option = option.replace(dashRegExp, \"-$1\");\n value = element.getAttribute(\"data-\" + kendo.ns + option);\n\n if (value === null) {\n value = undefined$1;\n } else if (value === \"null\") {\n value = null;\n } else if (value === \"true\") {\n value = true;\n } else if (value === \"false\") {\n value = false;\n } else if (numberRegExp.test(value) && option != \"mask\" && option != \"format\") {\n value = parseFloat(value);\n } else if (jsonRegExp.test(value) && !jsonFormatRegExp.test(value)) {\n try {\n value = JSON.parse(value);\n } catch (error) {\n // Fallback to function eval for legacy reason - non CSP compliant\n value = new Function(\"return (\" + value + \")\")();\n }\n }\n\n return value;\n }\n\n function parseOptions(element, options, source) {\n var result = {},\n option,\n value,\n role = element.getAttribute(\"data-\" + kendo.ns + \"role\");\n\n for (option in options) {\n value = parseOption(element, option);\n\n if (value !== undefined$1) {\n\n if (templateRegExp.test(option) && role != \"drawer\") {\n if (typeof value === \"string\") {\n if ($(\"#\" + value).length) {\n value = kendo.template($(\"#\" + value).html());\n } else if (source) {\n value = kendo.template(source[value]);\n }\n } else {\n value = element.getAttribute(option);\n }\n }\n\n result[option] = value;\n }\n }\n\n return result;\n }\n\n kendo.initWidget = function(element, options, roles) {\n var result,\n option,\n widget,\n idx,\n length,\n role,\n value,\n dataSource,\n fullPath,\n widgetKeyRegExp;\n\n // Preserve backwards compatibility with (element, options, namespace) signature, where namespace was kendo.ui\n if (!roles) {\n roles = kendo.ui.roles;\n } else if (roles.roles) {\n roles = roles.roles;\n }\n\n element = element.nodeType ? element : element[0];\n\n role = element.getAttribute(\"data-\" + kendo.ns + \"role\");\n\n if (!role) {\n return;\n }\n\n fullPath = role.indexOf(\".\") === -1;\n\n // look for any widget that may be already instantiated based on this role.\n // The prefix used is unknown, hence the regexp\n //\n\n if (fullPath) {\n widget = roles[role];\n } else { // full namespace path - like kendo.ui.Widget\n widget = kendo.getter(role)(window);\n }\n\n var data = $(element).data(),\n widgetKey = widget ? \"kendo\" + widget.fn.options.prefix + widget.fn.options.name : \"\";\n\n if (fullPath) {\n widgetKeyRegExp = new RegExp(\"^kendo.*\" + role + \"$\", \"i\");\n } else { // full namespace path - like kendo.ui.Widget\n widgetKeyRegExp = new RegExp(\"^\" + widgetKey + \"$\", \"i\");\n }\n\n for (var key in data) {\n if (key.match(widgetKeyRegExp)) {\n // we have detected a widget of the same kind - save its reference, we will set its options\n if (key === widgetKey) {\n result = data[key];\n } else {\n return data[key];\n }\n }\n }\n\n if (!widget) {\n return;\n }\n\n dataSource = parseOption(element, \"dataSource\");\n\n options = $.extend({}, parseOptions(element, $.extend({}, widget.fn.options, widget.fn.defaults) ), options);\n\n if (dataSource) {\n if (typeof dataSource === STRING) {\n options.dataSource = kendo.getter(dataSource)(window);\n } else {\n options.dataSource = dataSource;\n }\n }\n\n for (idx = 0, length = widget.fn.events.length; idx < length; idx++) {\n option = widget.fn.events[idx];\n\n value = parseOption(element, option);\n\n if (value !== undefined$1) {\n options[option] = kendo.getter(value)(window);\n }\n }\n\n if (!result) {\n result = new widget(element, options);\n } else if (!$.isEmptyObject(options)) {\n result.setOptions(options);\n }\n\n return result;\n };\n\n kendo.rolesFromNamespaces = function(namespaces) {\n var roles = [],\n idx,\n length;\n\n if (!namespaces[0]) {\n namespaces = [kendo.ui, kendo.dataviz.ui];\n }\n\n for (idx = 0, length = namespaces.length; idx < length; idx ++) {\n roles[idx] = namespaces[idx].roles;\n }\n\n return extend.apply(null, [{}].concat(roles.reverse()));\n };\n\n kendo.init = function(element) {\n var roles = kendo.rolesFromNamespaces(slice.call(arguments, 1));\n\n $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().each(function() {\n kendo.initWidget(this, {}, roles);\n });\n };\n\n kendo.destroy = function(element) {\n $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().each(function() {\n var data = $(this).data();\n\n for (var key in data) {\n if (key.indexOf(\"kendo\") === 0 && typeof data[key].destroy === FUNCTION) {\n data[key].destroy();\n }\n }\n });\n };\n\n function containmentComparer(a, b) {\n return $.contains(a, b) ? -1 : 1;\n }\n\n function resizableWidget() {\n var widget = $(this);\n return ($.inArray(widget.attr(\"data-\" + kendo.ns + \"role\"), [\"slider\", \"rangeslider\", \"breadcrumb\"]) > -1) || widget.is(\":visible\");\n }\n\n kendo.resize = function(element, force) {\n var widgets = $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().filter(resizableWidget);\n\n if (!widgets.length) {\n return;\n }\n\n // sort widgets based on their parent-child relation\n var widgetsArray = $.makeArray(widgets);\n widgetsArray.sort(containmentComparer);\n\n // resize widgets\n $.each(widgetsArray, function() {\n var widget = kendo.widgetInstance($(this));\n if (widget) {\n widget.resize(force);\n }\n });\n };\n\n kendo.parseOptions = parseOptions;\n\n extend(kendo.ui, {\n Widget: Widget,\n DataBoundWidget: DataBoundWidget,\n roles: {},\n progress: function(container, toggle, options) {\n var mask = container.find(\".k-loading-mask\"),\n support = kendo.support,\n browser = support.browser,\n isRtl, leftRight, webkitCorrection, containerScrollLeft, cssClass;\n\n options = $.extend({}, {\n width: \"100%\",\n height: \"100%\",\n top: container.scrollTop(),\n opacity: false\n }, options);\n\n cssClass = options.opacity ? 'k-loading-mask k-opaque' : 'k-loading-mask';\n\n if (toggle) {\n if (!mask.length) {\n isRtl = support.isRtl(container);\n leftRight = isRtl ? \"right\" : \"left\";\n containerScrollLeft = kendo.scrollLeft(container);\n webkitCorrection = browser.webkit ? (!isRtl ? 0 : container[0].scrollWidth - container.width() - 2 * containerScrollLeft) : 0;\n\n mask = $(kendo.format(\"
{1}
\", cssClass, kendo.ui.progress.messages.loading))\n .width(options.width).height(options.height)\n .css(\"top\", options.top)\n .css(leftRight, Math.abs(containerScrollLeft) + webkitCorrection)\n .prependTo(container);\n }\n } else if (mask) {\n mask.remove();\n }\n },\n plugin: function(widget, register, prefix) {\n var name = widget.fn.options.name,\n getter;\n\n register = register || kendo.ui;\n prefix = prefix || \"\";\n\n register[name] = widget;\n\n register.roles[name.toLowerCase()] = widget;\n\n getter = \"getKendo\" + prefix + name;\n name = \"kendo\" + prefix + name;\n\n var widgetEntry = { name: name, widget: widget, prefix: prefix || \"\" };\n kendo.widgets.push(widgetEntry);\n\n for (var i = 0, len = kendo._widgetRegisteredCallbacks.length; i < len; i++) {\n kendo._widgetRegisteredCallbacks[i](widgetEntry);\n }\n\n $.fn[name] = function(options) {\n var value = this,\n args;\n\n if (typeof options === STRING) {\n args = slice.call(arguments, 1);\n\n this.each(function() {\n var widget = $.data(this, name),\n method,\n result;\n\n if (!widget) {\n throw new Error(kendo.format(\"Cannot call method '{0}' of {1} before it is initialized\", options, name));\n }\n\n method = widget[options];\n\n if (typeof method !== FUNCTION) {\n throw new Error(kendo.format(\"Cannot find method '{0}' of {1}\", options, name));\n }\n\n result = method.apply(widget, args);\n\n if (result !== undefined$1) {\n value = result;\n return false;\n }\n });\n } else {\n this.each(function() {\n return new widget(this, options);\n });\n }\n\n return value;\n };\n\n $.fn[name].widget = widget;\n\n $.fn[getter] = function() {\n return this.data(name);\n };\n }\n });\n\n kendo.ui.progress.messages = {\n loading: \"Loading...\"\n };\n\n var ContainerNullObject = { bind: function() { return this; }, nullObject: true, options: {} };\n\n var MobileWidget = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, options);\n this.element.autoApplyNS();\n this.wrapper = this.element;\n this.element.addClass(\"km-widget\");\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n this.element.kendoDestroy();\n },\n\n options: {\n prefix: \"Mobile\"\n },\n\n events: [],\n\n view: function() {\n var viewElement = this.element.closest(kendo.roleSelector(\"view splitview modalview drawer\"));\n return kendo.widgetInstance(viewElement, kendo.mobile.ui) || ContainerNullObject;\n },\n\n viewHasNativeScrolling: function() {\n var view = this.view();\n return view && view.options.useNativeScrolling;\n },\n\n container: function() {\n var element = this.element.closest(kendo.roleSelector(\"view layout modalview drawer splitview\"));\n return kendo.widgetInstance(element.eq(0), kendo.mobile.ui) || ContainerNullObject;\n }\n });\n\n extend(kendo.mobile, {\n init: function(element) {\n kendo.init(element, kendo.mobile.ui, kendo.ui, kendo.dataviz.ui);\n },\n\n roles: {},\n\n ui: {\n Widget: MobileWidget,\n DataBoundWidget: DataBoundWidget.extend(MobileWidget.prototype),\n roles: {},\n plugin: function(widget) {\n kendo.ui.plugin(widget, kendo.mobile.ui, \"Mobile\");\n }\n }\n });\n\n deepExtend(kendo.dataviz, {\n init: function(element) {\n kendo.init(element, kendo.dataviz.ui);\n },\n ui: {\n roles: {},\n themes: {},\n views: [],\n plugin: function(widget) {\n kendo.ui.plugin(widget, kendo.dataviz.ui);\n }\n },\n roles: {}\n });\n\n kendo.touchScroller = function(elements, options) {\n // return the first touch scroller\n if (!options) { options = {}; }\n\n options.useNative = true;\n\n return $(elements).map(function(idx, element) {\n element = $(element);\n if (support.kineticScrollNeeded && kendo.mobile.ui.Scroller && !element.data(\"kendoMobileScroller\")) {\n element.kendoMobileScroller(options);\n return element.data(\"kendoMobileScroller\");\n } else {\n return false;\n }\n })[0];\n };\n\n kendo.preventDefault = function(e) {\n e.preventDefault();\n };\n\n kendo.widgetInstance = function(element, suites) {\n var role = element.data(kendo.ns + \"role\"),\n widgets = [], i, length,\n elementData = element.data(\"kendoView\");\n\n if (role) {\n // HACK!!! mobile view scroller widgets are instantiated on data-role=\"content\" elements. We need to discover them when resizing.\n if (role === \"content\") {\n role = \"scroller\";\n }\n\n // kendo.View is not a ui plugin\n\n if (role === \"view\" && elementData) {\n return elementData;\n }\n\n if (suites) {\n if (suites[0]) {\n for (i = 0, length = suites.length; i < length; i ++) {\n widgets.push(suites[i].roles[role]);\n }\n } else {\n widgets.push(suites.roles[role]);\n }\n }\n else {\n widgets = [ kendo.ui.roles[role], kendo.dataviz.ui.roles[role], kendo.mobile.ui.roles[role] ];\n }\n\n if (role.indexOf(\".\") >= 0) {\n widgets = [ kendo.getter(role)(window) ];\n }\n\n for (i = 0, length = widgets.length; i < length; i ++) {\n var widget = widgets[i];\n if (widget) {\n var instance = element.data(\"kendo\" + widget.fn.options.prefix + widget.fn.options.name);\n if (instance) {\n return instance;\n }\n }\n }\n }\n };\n\n kendo.onResize = function(callback) {\n var handler = callback;\n if (support.mobileOS.android) {\n handler = function() { setTimeout(callback, 600); };\n }\n\n $(window).on(support.resize, handler);\n return handler;\n };\n\n kendo.unbindResize = function(callback) {\n $(window).off(support.resize, callback);\n };\n\n kendo.attrValue = function(element, key) {\n return element.data(kendo.ns + key);\n };\n\n kendo.days = {\n Sunday: 0,\n Monday: 1,\n Tuesday: 2,\n Wednesday: 3,\n Thursday: 4,\n Friday: 5,\n Saturday: 6\n };\n\n function focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n\n return (/input|select|textarea|button|object/.test(nodeName) ?\n !element.disabled :\n nodeName === \"a\" ?\n element.href || isTabIndexNotNaN :\n isTabIndexNotNaN\n ) &&\n visible(element);\n }\n\n function visible(element) {\n return $.expr.pseudos.visible(element) &&\n !$(element).parents().addBack().filter(function() {\n return $.css(this,\"visibility\") === \"hidden\";\n }).length;\n }\n\n $.extend($.expr.pseudos, {\n kendoFocusable: function(element) {\n var idx = $.attr(element, \"tabindex\");\n return focusable(element, !isNaN(idx) && idx > -1);\n }\n });\n\n var MOUSE_EVENTS = [\"mousedown\", \"mousemove\", \"mouseenter\", \"mouseleave\", \"mouseover\", \"mouseout\", \"mouseup\", \"click\"];\n var EXCLUDE_BUST_CLICK_SELECTOR = \"label, input, [data-rel=external]\";\n\n var MouseEventNormalizer = {\n setupMouseMute: function() {\n var idx = 0,\n length = MOUSE_EVENTS.length,\n element = document.documentElement;\n\n if (MouseEventNormalizer.mouseTrap || !support.eventCapture) {\n return;\n }\n\n MouseEventNormalizer.mouseTrap = true;\n\n MouseEventNormalizer.bustClick = false;\n MouseEventNormalizer.captureMouse = false;\n\n var handler = function(e) {\n if (MouseEventNormalizer.captureMouse) {\n if (e.type === \"click\") {\n if (MouseEventNormalizer.bustClick && !$(e.target).is(EXCLUDE_BUST_CLICK_SELECTOR)) {\n e.preventDefault();\n e.stopPropagation();\n }\n } else {\n e.stopPropagation();\n }\n }\n };\n\n for (; idx < length; idx++) {\n element.addEventListener(MOUSE_EVENTS[idx], handler, true);\n }\n },\n\n muteMouse: function(e) {\n MouseEventNormalizer.captureMouse = true;\n if (e.data.bustClick) {\n MouseEventNormalizer.bustClick = true;\n }\n clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID);\n },\n\n unMuteMouse: function() {\n clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID);\n MouseEventNormalizer.mouseTrapTimeoutID = setTimeout(function() {\n MouseEventNormalizer.captureMouse = false;\n MouseEventNormalizer.bustClick = false;\n }, 400);\n }\n };\n\n var eventMap = {\n down: \"touchstart mousedown\",\n move: \"mousemove touchmove\",\n up: \"mouseup touchend touchcancel\",\n cancel: \"mouseleave touchcancel\"\n };\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 if (support.msPointers && !(\"onmspointerenter\" in window)) { // IE10\n // Create MSPointerEnter/MSPointerLeave events using mouseover/out and event-time checks\n $.each({\n MSPointerEnter: \"MSPointerOver\",\n MSPointerLeave: \"MSPointerOut\"\n }, function( orig, fix ) {\n $.event.special[ orig ] = {\n delegateType: fix,\n bindType: fix,\n\n handle: function( event ) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj;\n\n // For mousenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n if ( !related || (related !== target && !$.contains( target, related )) ) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply( this, arguments );\n event.type = fix;\n }\n return ret;\n }\n };\n });\n }\n\n\n var getEventMap = function(e) { return (eventMap[e] || e); },\n eventRegEx = /([^ ]+)/g;\n\n kendo.applyEventMap = function(events, ns) {\n events = events.replace(eventRegEx, getEventMap);\n\n if (ns) {\n events = events.replace(eventRegEx, \"$1.\" + ns);\n }\n\n return events;\n };\n\n kendo.keyDownHandler = function(e, widget) {\n var events = widget._events.kendoKeydown;\n\n if (!events) {\n return true;\n }\n\n events = events.slice();\n e.sender = widget;\n e.preventKendoKeydown = false;\n for (var idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(widget, e);\n }\n\n return !e.preventKendoKeydown;\n };\n\n var on = $.fn.on;\n\n function kendoJQuery(selector, context) {\n return new kendoJQuery.fn.init(selector, context);\n }\n\n noDepricateExtend(true, kendoJQuery, $);\n\n kendoJQuery.fn = kendoJQuery.prototype = new $();\n\n kendoJQuery.fn.constructor = kendoJQuery;\n\n kendoJQuery.fn.init = function(selector, context) {\n if (context && context instanceof $ && !(context instanceof kendoJQuery)) {\n context = kendoJQuery(context);\n }\n\n return $.fn.init.call(this, selector, context, rootjQuery);\n };\n\n kendoJQuery.fn.init.prototype = kendoJQuery.fn;\n\n var rootjQuery = kendoJQuery(document);\n\n extend(kendoJQuery.fn, {\n handler: function(handler) {\n this.data(\"handler\", handler);\n return this;\n },\n\n autoApplyNS: function(ns) {\n this.data(\"kendoNS\", ns || kendo.guid());\n return this;\n },\n\n on: function() {\n var that = this,\n ns = that.data(\"kendoNS\");\n\n // support for event map signature\n if (arguments.length === 1) {\n return on.call(that, arguments[0]);\n }\n\n var context = that,\n args = slice.call(arguments);\n\n if (typeof args[args.length - 1] === UNDEFINED) {\n args.pop();\n }\n\n var callback = args[args.length - 1],\n events = kendo.applyEventMap(args[0], ns);\n\n // setup mouse trap\n if (support.mouseAndTouchPresent && events.search(/mouse|click/) > -1 && this[0] !== document.documentElement) {\n MouseEventNormalizer.setupMouseMute();\n\n var selector = args.length === 2 ? null : args[1],\n bustClick = events.indexOf(\"click\") > -1 && events.indexOf(\"touchend\") > -1;\n\n on.call(this,\n {\n touchstart: MouseEventNormalizer.muteMouse,\n touchend: MouseEventNormalizer.unMuteMouse\n },\n selector,\n {\n bustClick: bustClick\n });\n }\n\n if (arguments[0].indexOf(\"keydown\") !== -1 && args[1] && args[1].options) {\n args[0] = events;\n var widget = args[1];\n var keyDownCallBack = args[args.length - 1];\n args[args.length - 1] = function(e) {\n if (kendo.keyDownHandler(e, widget)) {\n return keyDownCallBack.apply(this, [e]);\n }\n };\n on.apply(that, args);\n return that;\n }\n\n if (typeof callback === STRING) {\n context = that.data(\"handler\");\n callback = context[callback];\n\n args[args.length - 1] = function(e) {\n callback.call(context, e);\n };\n }\n\n args[0] = events;\n\n on.apply(that, args);\n\n return that;\n },\n\n kendoDestroy: function(ns) {\n ns = ns || this.data(\"kendoNS\");\n\n if (ns) {\n this.off(\".\" + ns);\n }\n\n return this;\n }\n });\n\n kendo.jQuery = kendoJQuery;\n kendo.eventMap = eventMap;\n\n kendo.timezone = (function() {\n var months = { Jan: 0, Feb: 1, Mar: 2, Apr: 3, May: 4, Jun: 5, Jul: 6, Aug: 7, Sep: 8, Oct: 9, Nov: 10, Dec: 11 };\n var days = { Sun: 0, Mon: 1, Tue: 2, Wed: 3, Thu: 4, Fri: 5, Sat: 6 };\n\n function ruleToDate(year, rule) {\n var date;\n var targetDay;\n var ourDay;\n var month = rule[3];\n var on = rule[4];\n var time = rule[5];\n var cache = rule[8];\n\n if (!cache) {\n rule[8] = cache = {};\n }\n\n if (cache[year]) {\n return cache[year];\n }\n\n if (!isNaN(on)) {\n date = new Date(Date.UTC(year, months[month], on, time[0], time[1], time[2], 0));\n } else if (on.indexOf(\"last\") === 0) {\n date = new Date(Date.UTC(year, months[month] + 1, 1, time[0] - 24, time[1], time[2], 0));\n\n targetDay = days[on.substr(4, 3)];\n ourDay = date.getUTCDay();\n\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay - (targetDay > ourDay ? 7 : 0));\n } else if (on.indexOf(\">=\") >= 0) {\n date = new Date(Date.UTC(year, months[month], on.substr(5), time[0], time[1], time[2], 0));\n\n targetDay = days[on.substr(0, 3)];\n ourDay = date.getUTCDay();\n\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay + (targetDay < ourDay ? 7 : 0));\n } else if (on.indexOf(\"<=\") >= 0) {\n date = new Date(Date.UTC(year, months[month], on.substr(5), time[0], time[1], time[2], 0));\n\n targetDay = days[on.substr(0, 3)];\n ourDay = date.getUTCDay();\n\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay - (targetDay > ourDay ? 7 : 0));\n }\n\n return cache[year] = date;\n }\n\n function findRule(utcTime, rules, zone) {\n rules = rules[zone];\n\n if (!rules) {\n var time = zone.split(\":\");\n var offset = 0;\n\n if (time.length > 1) {\n offset = time[0] * 60 + Number(time[1]);\n }\n\n return [-1000000, 'max', '-', 'Jan', 1, [0, 0, 0], offset, '-'];\n }\n\n var year = new Date(utcTime).getUTCFullYear();\n\n rules = jQuery.grep(rules, function(rule) {\n var from = rule[0];\n var to = rule[1];\n\n return from <= year && (to >= year || (from == year && to == \"only\") || to == \"max\");\n });\n\n rules.push(utcTime);\n\n rules.sort(function(a, b) {\n if (typeof a != \"number\") {\n a = Number(ruleToDate(year, a));\n }\n\n if (typeof b != \"number\") {\n b = Number(ruleToDate(year, b));\n }\n\n return a - b;\n });\n\n var rule = rules[jQuery.inArray(utcTime, rules) - 1] || rules[rules.length - 1];\n\n return isNaN(rule) ? rule : null;\n }\n\n function findZone(utcTime, zones, timezone) {\n var zoneRules = zones[timezone];\n\n if (typeof zoneRules === \"string\") {\n zoneRules = zones[zoneRules];\n }\n\n if (!zoneRules) {\n throw new Error('Timezone \"' + timezone + '\" is either incorrect, or kendo.timezones.min.js is not included.');\n }\n\n for (var idx = zoneRules.length - 1; idx >= 0; idx--) {\n var until = zoneRules[idx][3];\n\n if (until && utcTime > until) {\n break;\n }\n }\n\n var zone = zoneRules[idx + 1];\n\n if (!zone) {\n throw new Error('Timezone \"' + timezone + '\" not found on ' + utcTime + \".\");\n }\n\n return zone;\n }\n\n function zoneAndRule(utcTime, zones, rules, timezone) {\n if (typeof utcTime != NUMBER) {\n utcTime = Date.UTC(utcTime.getFullYear(), utcTime.getMonth(),\n utcTime.getDate(), utcTime.getHours(), utcTime.getMinutes(),\n utcTime.getSeconds(), utcTime.getMilliseconds());\n }\n\n var zone = findZone(utcTime, zones, timezone);\n\n return {\n zone: zone,\n rule: findRule(utcTime, rules, zone[1])\n };\n }\n\n function offset(utcTime, timezone) {\n if (timezone == \"Etc/UTC\" || timezone == \"Etc/GMT\") {\n return 0;\n }\n\n var info = zoneAndRule(utcTime, this.zones, this.rules, timezone);\n var zone = info.zone;\n var rule = info.rule;\n\n return kendo.parseFloat(rule ? zone[0] - rule[6] : zone[0]);\n }\n\n function abbr(utcTime, timezone) {\n var info = zoneAndRule(utcTime, this.zones, this.rules, timezone);\n var zone = info.zone;\n var rule = info.rule;\n\n var base = zone[2];\n\n if (base.indexOf(\"/\") >= 0) {\n return base.split(\"/\")[rule && +rule[6] ? 1 : 0];\n } else if (base.indexOf(\"%s\") >= 0) {\n return base.replace(\"%s\", (!rule || rule[7] == \"-\") ? '' : rule[7]);\n }\n\n return base;\n }\n\n function convert(date, fromOffset, toOffset) {\n var tempToOffset = toOffset;\n var diff;\n\n if (typeof fromOffset == STRING) {\n fromOffset = this.offset(date, fromOffset);\n }\n\n if (typeof toOffset == STRING) {\n toOffset = this.offset(date, toOffset);\n }\n\n var fromLocalOffset = date.getTimezoneOffset();\n\n date = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n\n var toLocalOffset = date.getTimezoneOffset();\n\n if (typeof tempToOffset == STRING) {\n tempToOffset = this.offset(date, tempToOffset);\n }\n\n diff = (toLocalOffset - fromLocalOffset) + (toOffset - tempToOffset);\n\n return new Date(date.getTime() + diff * 60000);\n }\n\n function apply(date, timezone) {\n return this.convert(date, date.getTimezoneOffset(), timezone);\n }\n\n function remove(date, timezone) {\n return this.convert(date, timezone, date.getTimezoneOffset());\n }\n\n function toLocalDate(time) {\n return this.apply(new Date(time), \"Etc/UTC\");\n }\n\n return {\n zones: {},\n rules: {},\n offset: offset,\n convert: convert,\n apply: apply,\n remove: remove,\n abbr: abbr,\n toLocalDate: toLocalDate\n };\n })();\n\n kendo.date = (function() {\n var MS_PER_MINUTE = 60000,\n MS_PER_DAY = 86400000;\n\n function 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\n function setDayOfWeek(date, day, dir) {\n var hours = date.getHours();\n\n dir = dir || 1;\n day = ((day - date.getDay()) + (7 * dir)) % 7;\n\n date.setDate(date.getDate() + day);\n adjustDST(date, hours);\n }\n\n function dayOfWeek(date, day, dir) {\n date = new Date(date);\n setDayOfWeek(date, day, dir);\n return date;\n }\n\n function firstDayOfMonth(date) {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n 1\n );\n }\n\n function lastDayOfMonth(date) {\n var last = new Date(date.getFullYear(), date.getMonth() + 1, 0),\n first = firstDayOfMonth(date),\n timeOffset = Math.abs(last.getTimezoneOffset() - first.getTimezoneOffset());\n\n if (timeOffset) {\n last.setHours(first.getHours() + (timeOffset / 60));\n }\n\n return last;\n }\n\n function firstDayOfYear(date) {\n return new Date(date.getFullYear(), 0, 1);\n }\n\n function lastDayOfYear(date) {\n return new Date(date.getFullYear(), 11, 31);\n }\n\n function moveDateToWeekStart(date, weekStartDay) {\n if (weekStartDay !== 1) {\n return addDays(dayOfWeek(date, weekStartDay, -1), 4);\n }\n\n return addDays(date, (4 - (date.getDay() || 7)));\n }\n\n function calcWeekInYear(date, weekStartDay) {\n var firstWeekInYear = new Date(date.getFullYear(), 0, 1, -6);\n\n var newDate = moveDateToWeekStart(date, weekStartDay);\n\n var diffInMS = newDate.getTime() - firstWeekInYear.getTime();\n\n var days = Math.floor(diffInMS / MS_PER_DAY);\n\n return 1 + Math.floor(days / 7);\n }\n\n function weekInYear(date, weekStartDay) {\n if (weekStartDay === undefined$1) {\n weekStartDay = kendo.culture().calendar.firstDay;\n }\n\n var prevWeekDate = addDays(date, -7);\n var nextWeekDate = addDays(date, 7);\n\n var weekNumber = calcWeekInYear(date, weekStartDay);\n\n if (weekNumber === 0) {\n return calcWeekInYear(prevWeekDate, weekStartDay) + 1;\n }\n\n if (weekNumber === 53 && calcWeekInYear(nextWeekDate, weekStartDay) > 1) {\n return 1;\n }\n\n return weekNumber;\n }\n\n function getDate(date) {\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n adjustDST(date, 0);\n return date;\n }\n\n function toUtcTime(date) {\n return Date.UTC(date.getFullYear(), date.getMonth(),\n date.getDate(), date.getHours(), date.getMinutes(),\n date.getSeconds(), date.getMilliseconds());\n }\n\n function getMilliseconds(date) {\n return toInvariantTime(date).getTime() - getDate(toInvariantTime(date));\n }\n\n function isInTimeRange(value, min, max) {\n var msMin = getMilliseconds(min),\n msMax = getMilliseconds(max),\n msValue;\n\n if (!value || msMin == msMax) {\n return true;\n }\n\n if (min >= max) {\n max += MS_PER_DAY;\n }\n\n msValue = getMilliseconds(value);\n\n if (msMin > msValue) {\n msValue += MS_PER_DAY;\n }\n\n if (msMax < msMin) {\n msMax += MS_PER_DAY;\n }\n\n return msValue >= msMin && msValue <= msMax;\n }\n\n function isInDateRange(value, min, max) {\n var msMin = min.getTime(),\n msMax = max.getTime(),\n msValue;\n\n if (msMin >= msMax) {\n msMax += MS_PER_DAY;\n }\n\n msValue = value.getTime();\n\n return msValue >= msMin && msValue <= msMax;\n }\n\n function addDays(date, offset) {\n var hours = date.getHours();\n date = new Date(date);\n\n setTime(date, offset * MS_PER_DAY);\n adjustDST(date, hours);\n return date;\n }\n\n function setTime(date, milliseconds, ignoreDST) {\n var offset = date.getTimezoneOffset();\n var difference;\n\n date.setTime(date.getTime() + milliseconds);\n\n if (!ignoreDST) {\n difference = date.getTimezoneOffset() - offset;\n date.setTime(date.getTime() + difference * MS_PER_MINUTE);\n }\n }\n\n function setHours(date, time) {\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());\n adjustDST(date, time.getHours());\n return date;\n }\n\n function today() {\n return getDate(new Date());\n }\n\n function isToday(date) {\n return getDate(date).getTime() == today().getTime();\n }\n\n function toInvariantTime(date) {\n var staticDate = new Date(1980, 1, 1, 0, 0, 0);\n\n if (date) {\n staticDate.setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n }\n\n return staticDate;\n }\n\n function addYear(date, offset) {\n var currentDate = new Date(date);\n\n return new Date(currentDate.setFullYear(currentDate.getFullYear() + offset));\n }\n\n function addLiteral(parts, value) {\n var 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\n function isHour12(pattern) {\n return pattern === \"h\" || pattern === \"K\";\n }\n\n function dateNameType(formatLength) {\n var 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 }\n\n return nameType;\n }\n\n function startsWith(text, searchString, position) {\n position = position || 0;\n return text.indexOf(searchString, position) === position;\n }\n\n function datePattern(format, info) {\n var calendar = info.calendar;\n var result;\n if (typeof format === \"string\") {\n if (calendar.patterns[format]) {\n result = calendar.patterns[format];\n } else {\n result = format;\n }\n }\n\n if (!result) {\n result = calendar.patterns.d;\n }\n\n return result;\n }\n\n function splitDateFormat(format) {\n var info = kendo.culture();\n var pattern = datePattern(format, info).replaceAll(\"dddd\", \"EEEE\").replaceAll(\"ddd\", \"EEE\").replace(\"tt\", \"aa\");\n var parts = [];\n var 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}|t{1,2}|z{1,4}|Z{1,5}|x{1,5}|X{1,5}|G{1,5}|q{1,5}|Q{1,5}|\"[^\"]*\"|'[^']*'/g;\n\n var lastIndex = dateFormatRegExp.lastIndex = 0;\n var match = dateFormatRegExp.exec(pattern);\n var specifier;\n var type;\n var part;\n var names;\n var minLength;\n var patternLength;\n\n while (match) {\n var value = match[0];\n\n if (lastIndex < match.index) {\n addLiteral(parts, pattern.substring(lastIndex, match.index));\n }\n\n if (startsWith(value, '\"') || startsWith(value, \"'\")) {\n addLiteral(parts, value);\n } else {\n specifier = value[0];\n type = DATE_FIELD_MAP[specifier];\n part = {\n type: type,\n pattern: value\n };\n\n if (type === \"hour\") {\n part.hour12 = isHour12(value);\n }\n\n names = NAME_TYPES[type];\n\n if (names) {\n minLength = typeof names.minLength === \"number\" ? names.minLength : names.minLength[specifier];\n patternLength = value.length;\n\n if (patternLength >= minLength && value !== \"aa\") {\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\n function dateFormatNames(options) {\n let { type, nameType } = options;\n const info = kendo.culture();\n if (nameType === \"wide\") {\n nameType = \"names\";\n }\n if (nameType === \"abbreviated\") {\n nameType = \"namesAbbr\";\n }\n if (nameType === \"narrow\") {\n nameType = \"namesShort\";\n }\n let result = info.calendar[type][nameType];\n if (!result) {\n result = info.calendar[type][\"name\"];\n }\n return result;\n }\n\n function dateFieldName(options) {\n const info = kendo.culture();\n const dateFields = info.calendar.dateFields;\n const fieldNameInfo = dateFields[options.type] || {};\n\n return fieldNameInfo[options.nameType];\n }\n\n return {\n adjustDST: adjustDST,\n dayOfWeek: dayOfWeek,\n setDayOfWeek: setDayOfWeek,\n getDate: getDate,\n isInDateRange: isInDateRange,\n isInTimeRange: isInTimeRange,\n isToday: isToday,\n nextDay: function(date) {\n return addDays(date, 1);\n },\n previousDay: function(date) {\n return addDays(date, -1);\n },\n toUtcTime: toUtcTime,\n MS_PER_DAY: MS_PER_DAY,\n MS_PER_HOUR: 60 * MS_PER_MINUTE,\n MS_PER_MINUTE: MS_PER_MINUTE,\n setTime: setTime,\n setHours: setHours,\n addDays: addDays,\n today: today,\n toInvariantTime: toInvariantTime,\n firstDayOfMonth: firstDayOfMonth,\n splitDateFormat: splitDateFormat,\n dateFieldName: dateFieldName,\n dateFormatNames: dateFormatNames,\n lastDayOfMonth: lastDayOfMonth,\n weekInYear: weekInYear,\n getMilliseconds: getMilliseconds,\n firstDayOfYear: firstDayOfYear,\n lastDayOfYear: lastDayOfYear,\n nextYear: function(date) {\n return addYear(date, 1);\n },\n previousYear: function(date) {\n return addYear(date, -1);\n }\n };\n })();\n\n\n kendo.stripWhitespace = function(element) {\n if (document.createNodeIterator) {\n var iterator = document.createNodeIterator(element, NodeFilter.SHOW_TEXT, function(node) {\n return node.parentNode == element ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n }, false);\n\n while (iterator.nextNode()) {\n if (iterator.referenceNode && !iterator.referenceNode.textContent.trim()) {\n iterator.referenceNode.parentNode.removeChild(iterator.referenceNode);\n }\n }\n } else { // IE7/8 support\n for (var i = 0; i < element.childNodes.length; i++) {\n var child = element.childNodes[i];\n\n if (child.nodeType == 3 && !/\\S/.test(child.nodeValue)) {\n element.removeChild(child);\n i--;\n }\n\n if (child.nodeType == 1) {\n kendo.stripWhitespace(child);\n }\n }\n }\n };\n\n var animationFrame = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function(callback) { setTimeout(callback, 1000 / 60); };\n\n kendo.animationFrame = function(callback) {\n animationFrame.call(window, callback);\n };\n\n var animationQueue = [];\n\n kendo.queueAnimation = function(callback) {\n animationQueue[animationQueue.length] = callback;\n if (animationQueue.length === 1) {\n kendo.runNextAnimation();\n }\n };\n\n kendo.runNextAnimation = function() {\n kendo.animationFrame(function() {\n if (animationQueue[0]) {\n animationQueue.shift()();\n if (animationQueue[0]) {\n kendo.runNextAnimation();\n }\n }\n });\n };\n\n kendo.parseQueryStringParams = function(url) {\n var queryString = url.split('?')[1] || \"\",\n params = {},\n paramParts = queryString.split(/&|=/),\n length = paramParts.length,\n idx = 0;\n\n for (; idx < length; idx += 2) {\n if (paramParts[idx] !== \"\") {\n params[decodeURIComponent(paramParts[idx])] = decodeURIComponent(paramParts[idx + 1]);\n }\n }\n\n return params;\n };\n\n kendo.elementUnderCursor = function(e) {\n if (typeof e.x.client != \"undefined\") {\n return document.elementFromPoint(e.x.client, e.y.client);\n }\n };\n\n kendo.wheelDeltaY = function(jQueryEvent) {\n var e = jQueryEvent.originalEvent,\n deltaY = e.wheelDeltaY,\n delta;\n\n if (e.wheelDelta) { // Webkit and IE\n if (deltaY === undefined$1 || 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\n kendo.throttle = function(fn, delay) {\n var timeout;\n var lastExecTime = 0;\n\n if (!delay || delay <= 0) {\n return fn;\n }\n\n var throttled = function() {\n var that = this;\n var elapsed = +new Date() - lastExecTime;\n var args = arguments;\n\n function exec() {\n fn.apply(that, args);\n lastExecTime = +new Date();\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\n\n kendo.caret = function(element, start, end) {\n var rangeElement;\n var isPosition = start !== undefined$1;\n\n if (end === undefined$1) {\n end = start;\n }\n\n if (element[0]) {\n element = element[0];\n }\n\n if (isPosition && element.disabled) {\n return;\n }\n\n try {\n if (element.selectionStart !== undefined$1) {\n if (isPosition) {\n element.focus();\n var mobile = support.mobileOS;\n if (mobile.wp || mobile.android) {// without the timeout the caret is at the end of the input\n setTimeout(function() { element.setSelectionRange(start, end); }, 0);\n }\n else {\n element.setSelectionRange(start, end);\n }\n } else {\n start = [element.selectionStart, element.selectionEnd];\n }\n } else if (document.selection) {\n if ($(element).is(\":visible\")) {\n element.focus();\n }\n\n rangeElement = element.createTextRange();\n\n if (isPosition) {\n rangeElement.collapse(true);\n rangeElement.moveStart(\"character\", start);\n rangeElement.moveEnd(\"character\", end - start);\n rangeElement.select();\n } else {\n var rangeDuplicated = rangeElement.duplicate(),\n selectionStart, selectionEnd;\n\n rangeElement.moveToBookmark(document.selection.createRange().getBookmark());\n rangeDuplicated.setEndPoint('EndToStart', rangeElement);\n selectionStart = rangeDuplicated.text.length;\n selectionEnd = selectionStart + rangeElement.text.length;\n\n start = [selectionStart, selectionEnd];\n }\n }\n } catch (e) {\n /* element is not focused or it is not in the DOM */\n start = [];\n }\n\n return start;\n };\n\n kendo.antiForgeryTokens = function() {\n var tokens = { },\n csrf_token = $(\"meta[name=csrf-token],meta[name=_csrf]\").attr(\"content\"),\n csrf_param = $(\"meta[name=csrf-param],meta[name=_csrf_header]\").attr(\"content\");\n\n $(\"input[name^='__RequestVerificationToken']\").each(function() {\n tokens[this.name] = this.value;\n });\n\n if (csrf_param !== undefined$1 && csrf_token !== undefined$1) {\n tokens[csrf_param] = csrf_token;\n }\n\n return tokens;\n };\n\n kendo.cycleForm = function(form) {\n var firstElement = form.find(\"input, .k-widget, .k-dropdownlist, .k-combobox\").first();\n var lastElement = form.find(\"button, .k-button\").last();\n\n function focus(el) {\n var widget = kendo.widgetInstance(el);\n\n if (widget && widget.focus) {\n widget.focus();\n } else {\n el.trigger(\"focus\");\n }\n }\n\n lastElement.on(\"keydown\", function(e) {\n if (e.keyCode == kendo.keys.TAB && !e.shiftKey) {\n e.preventDefault();\n focus(firstElement);\n }\n });\n\n firstElement.on(\"keydown\", function(e) {\n if (e.keyCode == kendo.keys.TAB && e.shiftKey) {\n e.preventDefault();\n focus(lastElement);\n }\n });\n };\n\n kendo.focusElement = function(element) {\n var scrollTopPositions = [];\n var scrollableParents = element.parentsUntil(\"body\")\n .filter(function(index, element) {\n var computedStyle = kendo.getComputedStyles(element, [\"overflow\"]);\n return computedStyle.overflow !== \"visible\";\n })\n .add(window);\n\n scrollableParents.each(function(index, parent) {\n scrollTopPositions[index] = $(parent).scrollTop();\n });\n\n try {\n //The setActive method does not cause the document to scroll to the active object in the current page\n element[0].setActive();\n } catch (e) {\n element[0].focus();\n }\n\n scrollableParents.each(function(index, parent) {\n $(parent).scrollTop(scrollTopPositions[index]);\n });\n };\n\n kendo.focusNextElement = function() {\n if (document.activeElement) {\n var focussable = $(\":kendoFocusable\");\n var index = focussable.index(document.activeElement);\n\n if (index > -1) {\n var nextElement = focussable[index + 1] || focussable[0];\n nextElement.focus();\n }\n }\n };\n\n kendo.trim = function(value) {\n if (!!value) {\n return value.toString().trim();\n } else {\n return \"\";\n }\n };\n\n kendo.getWidgetFocusableElement = function(element) {\n var nextFocusable = element.closest(\":kendoFocusable\"),\n widgetInstance = kendo.widgetInstance(element),\n target;\n\n if (nextFocusable.length) {\n target = nextFocusable;\n } else if (widgetInstance) {\n target = widgetInstance.options.name === 'Editor' ?\n $(widgetInstance.body) :\n widgetInstance.wrapper.find(\":kendoFocusable\").first();\n } else {\n target = element;\n }\n\n return target;\n };\n\n kendo.addAttribute = function(element, attribute, value) {\n var current = element.attr(attribute) || \"\";\n\n if (current.indexOf(value) < 0) {\n element.attr(attribute, (current + \" \" + value).trim());\n }\n };\n\n kendo.removeAttribute = function(element, attribute, value) {\n var current = element.attr(attribute) || \"\";\n\n element.attr(attribute, current.replace(value, \"\").trim());\n };\n\n kendo.toggleAttribute = function(element, attribute, value) {\n var current = element.attr(attribute) || \"\";\n\n if (current.indexOf(value) < 0) {\n kendo.addAttribute(element, attribute, value);\n } else {\n kendo.removeAttribute(element, attribute, value);\n }\n };\n\n kendo.matchesMedia = function(mediaQuery) {\n var media = kendo._bootstrapToMedia(mediaQuery) || mediaQuery;\n return support.matchMedia && window.matchMedia(media).matches;\n };\n\n kendo._bootstrapToMedia = function(bootstrapMedia) {\n return {\n \"xs\": \"(max-width: 576px)\",\n \"sm\": \"(min-width: 576px)\",\n \"md\": \"(min-width: 768px)\",\n \"lg\": \"(min-width: 992px)\",\n \"xl\": \"(min-width: 1200px)\"\n }[bootstrapMedia];\n };\n\n kendo.fileGroupMap = {\n audio: [\".aif\", \".iff\", \".m3u\", \".m4a\", \".mid\", \".mp3\", \".mpa\", \".wav\", \".wma\", \".ogg\", \".wav\", \".wma\", \".wpl\"],\n video: [\".3g2\", \".3gp\", \".avi\", \".asf\", \".flv\", \".m4u\", \".rm\", \".h264\", \".m4v\", \".mkv\", \".mov\", \".mp4\", \".mpg\",\n \".rm\", \".swf\", \".vob\", \".wmv\"],\n image: [\".ai\", \".dds\", \".heic\", \".jpe\", \"jfif\", \".jif\", \".jp2\", \".jps\", \".eps\", \".bmp\", \".gif\", \".jpeg\",\n \".jpg\", \".png\", \".ps\", \".psd\", \".svg\", \".svgz\", \".tif\", \".tiff\"],\n txt: [\".doc\", \".docx\", \".log\", \".pages\", \".tex\", \".wpd\", \".wps\", \".odt\", \".rtf\", \".text\", \".txt\", \".wks\"],\n presentation: [\".key\", \".odp\", \".pps\", \".ppt\", \".pptx\"],\n data: [\".xlr\", \".xls\", \".xlsx\"],\n programming: [\".tmp\", \".bak\", \".msi\", \".cab\", \".cpl\", \".cur\", \".dll\", \".dmp\", \".drv\", \".icns\", \".ico\", \".link\",\n \".sys\", \".cfg\", \".ini\", \".asp\", \".aspx\", \".cer\", \".csr\", \".css\", \".dcr\", \".htm\", \".html\", \".js\",\n \".php\", \".rss\", \".xhtml\"],\n pdf: [\".pdf\"],\n config: [\".apk\", \".app\", \".bat\", \".cgi\", \".com\", \".exe\", \".gadget\", \".jar\", \".wsf\"],\n zip: [\".7z\", \".cbr\", \".gz\", \".sitx\", \".arj\", \".deb\", \".pkg\", \".rar\", \".rpm\", \".tar.gz\", \".z\", \".zip\", \".zipx\"],\n \"disc-image\": [\".dmg\", \".iso\", \".toast\", \".vcd\", \".bin\", \".cue\", \".mdf\"]\n };\n\n kendo.getFileGroup = function(extension, withPrefix) {\n var fileTypeMap = kendo.fileGroupMap;\n var groups = Object.keys(fileTypeMap);\n var type = \"file\";\n\n if (extension === undefined$1 || !extension.length) {\n return type;\n }\n\n for (var i = 0; i < groups.length; i += 1) {\n var extensions = fileTypeMap[groups[i]];\n\n if (extensions.indexOf(extension.toLowerCase()) > -1) {\n return withPrefix ? \"file-\" + groups[i] : groups[i];\n }\n }\n\n return type;\n };\n\n kendo.getFileSizeMessage = function(size) {\n var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n\n if (size === 0) {\n return '0 Byte';\n }\n\n var i = parseInt(Math.floor(Math.log(size) / Math.log(1024)), 10);\n return Math.round(size / Math.pow(1024, i), 2) + ' ' + sizes[i];\n };\n\n kendo.selectorFromClasses = function(classes) {\n return \".\" + classes.split(\" \").join(\".\");\n };\n\n // Standardized Properties and CSS classes\n\n var themeColorValues = ['base', 'primary', 'secondary', 'tertiary', 'inherit', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse'];\n var fillValues = ['solid', 'outline', 'flat'];\n //var postitionValues = ['edge', 'outside', 'inside'];\n var shapeValues = ['rectangle', 'square'];\n var sizeValues = [ ['small', 'sm'], ['medium', 'md'], ['large', 'lg'] ];\n var roundedValues = [ ['small', 'sm'], ['medium', 'md'], ['large', 'lg'] ];\n //var alignValues = [ ['top start', 'top-start'], ['top end', 'top-end'], ['bottom start', 'bottom-start'], ['bottom end', 'bottom-end'] ];\n var positionModeValues = [ 'fixed', 'static', 'sticky', 'absolute' ];\n var resizeValues = [ ['both', 'resize'], ['horizontal', 'resize-x'], ['vertical', 'resize-y'] ];\n var overflowValues = [ 'auto', 'hidden', 'visible', 'scroll', 'clip' ];\n var layoutFlowValues = [ ['vertical', '!k-flex-col'], ['horizontal', '!k-flex-row'] ];\n\n kendo.cssProperties = (function() {\n var defaultValues = {},\n propertyDictionary = {};\n\n function registerPrefix(widget, prefix) {\n var dict = kendo.cssProperties.propertyDictionary;\n\n if (!dict[widget]) {\n dict[widget] = {};\n }\n\n dict[widget][PREFIX] = prefix;\n }\n\n function registerValues(widget, args) {\n var dict = kendo.cssProperties.propertyDictionary,\n i, j, prop, values, newValues, currentValue;\n\n for (i = 0; i < args.length; i++) {\n prop = args[i].prop;\n newValues = args[i].values;\n\n if (!dict[widget][prop]) {\n dict[widget][prop] = {};\n }\n\n values = dict[widget][prop];\n\n for (j = 0; j < newValues.length; j++) {\n currentValue = newValues[j];\n\n if (isArray(newValues[j])) {\n values[currentValue[0]] = currentValue[1];\n } else {\n values[currentValue] = currentValue;\n }\n }\n }\n }\n\n function registerCssClass(propName, value, shorthand) {\n if (!defaultValues[propName]) {\n defaultValues[propName] = {};\n }\n\n defaultValues[propName][value] = shorthand || value;\n }\n\n function registerCssClasses(propName, arr) {\n for (var i = 0; i < arr.length; i++) {\n if (isArray(arr[i])) {\n registerCssClass(propName, arr[i][0], arr[i][1]);\n } else {\n registerCssClass(propName, arr[i]);\n }\n }\n }\n\n function getValidClass(args) {\n var widget = args.widget,\n propName = args.propName,\n value = args.value,\n fill = args.fill,\n cssProperties = kendo.cssProperties,\n defaultValues = cssProperties.defaultValues[propName],\n widgetProperties = cssProperties.propertyDictionary[widget],\n overridePrefix = args.prefix,\n widgetValues, validValue, prefix;\n\n if (!widgetProperties) {\n return \"\";\n }\n\n widgetValues = widgetProperties[propName];\n validValue = widgetValues ? widgetValues[value] || defaultValues[value] : defaultValues[value];\n\n if (validValue) {\n if (propName === \"themeColor\") {\n prefix = widgetProperties[PREFIX] + fill + \"-\";\n } else if (propName === \"positionMode\") {\n prefix = \"k-pos-\";\n } else if (propName === \"rounded\") {\n prefix = \"k-rounded-\";\n } else if (propName === \"resize\") {\n prefix = \"k-\";\n } else if (propName === \"overflow\") {\n prefix = \"k-overflow-\";\n } else if (propName === \"layoutFlow\") {\n prefix = \"\";\n } else {\n prefix = widgetProperties[PREFIX];\n }\n\n prefix = overridePrefix || prefix;\n\n return prefix + validValue;\n } else {\n return \"\";\n }\n }\n\n registerCssClasses(\"themeColor\", themeColorValues);\n registerCssClasses(\"fillMode\", fillValues);\n registerCssClasses(\"shape\", shapeValues);\n registerCssClasses(\"size\", sizeValues);\n registerCssClasses(\"positionMode\", positionModeValues);\n registerCssClasses(\"rounded\", roundedValues);\n registerCssClasses(\"resize\", resizeValues);\n registerCssClasses(\"overflow\", overflowValues);\n registerCssClasses(\"layoutFlow\", layoutFlowValues);\n\n return {\n positionModeValues: positionModeValues,\n roundedValues: roundedValues,\n sizeValues: sizeValues,\n shapeValues: shapeValues,\n fillModeValues: fillValues,\n themeColorValues: themeColorValues,\n\n defaultValues: defaultValues,\n propertyDictionary: propertyDictionary,\n\n registerValues: registerValues,\n getValidClass: getValidClass,\n registerPrefix: registerPrefix\n };\n }());\n\n //To do: delete below after implementing new styles and classes for BottomNavigation\n kendo.registerCssClass = function(propName, value, shorthand) {\n if (!kendo.propertyToCssClassMap[propName]) {\n kendo.propertyToCssClassMap[propName] = {};\n }\n\n kendo.propertyToCssClassMap[propName][value] = shorthand || value;\n };\n\n kendo.registerCssClasses = function(propName, arr) {\n for (var i = 0; i < arr.length; i++) {\n if (isArray(arr[i])) {\n kendo.registerCssClass(propName, arr[i][0], arr[i][1]);\n } else {\n kendo.registerCssClass(propName, arr[i]);\n }\n }\n };\n\n kendo.getValidCssClass = function(prefix, propName, value) {\n var validValue = kendo.propertyToCssClassMap[propName][value];\n\n if (validValue) {\n return prefix + validValue;\n }\n };\n\n kendo.propertyToCssClassMap = {};\n\n kendo.registerCssClasses(\"themeColor\", themeColorValues);\n kendo.registerCssClasses(\"fill\", fillValues);\n //kendo.registerCssClasses(\"postition\", postitionValues);\n kendo.registerCssClasses(\"shape\", shapeValues);\n kendo.registerCssClasses(\"size\", sizeValues);\n //kendo.registerCssClasses(\"align\", alignValues);\n kendo.registerCssClasses(\"positionMode\", positionModeValues);\n\n kendo.applyStylesFromKendoAttributes = function(element, styleProps) {\n let selector = styleProps.map(styleProp=> `[${kendo.attr(`style-${styleProp}`)}]`).join(',');\n element.find(selector).addBack(selector).each((_, currentElement) => {\n let $currentElement = $(currentElement);\n styleProps.forEach(function(styleProp) {\n let kendoAttr = kendo.attr(`style-${styleProp}`);\n if ($currentElement.attr(kendoAttr)) {\n $currentElement.css(styleProp, $currentElement.attr(kendoAttr));\n $currentElement.removeAttr(kendoAttr);\n }\n });\n });\n };\n\n // jQuery deferred helpers\n\n // influenced from: https://gist.github.com/fearphage/4341799\n kendo.whenAll = function(array) {\n var resolveValues = arguments.length == 1 && Array.isArray(array) ? array : Array.prototype.slice.call(arguments),\n length = resolveValues.length,\n remaining = length,\n deferred = $.Deferred(),\n i = 0,\n failed = 0,\n rejectContexts = Array(length),\n rejectValues = Array(length),\n resolveContexts = Array(length),\n value;\n\n function updateFunc(index, contexts, values) {\n return function() {\n if (values != resolveValues) {\n failed++;\n }\n\n deferred.notifyWith(\n contexts[index] = this,\n values[index] = Array.prototype.slice.call(arguments)\n );\n\n if (!(--remaining)) {\n deferred[(!failed ? 'resolve' : 'reject') + 'With'](contexts, values);\n }\n };\n }\n\n for (; i < length; i++) {\n if ((value = resolveValues[i]) && kendo.isFunction(value.promise)) {\n value.promise()\n .done(updateFunc(i, resolveContexts, resolveValues))\n .fail(updateFunc(i, rejectContexts, rejectValues));\n }\n\n else {\n deferred.notifyWith(this, value);\n --remaining;\n }\n }\n\n if (!remaining) {\n deferred.resolveWith(resolveContexts, resolveValues);\n }\n\n return deferred.promise();\n };\n\n // kendo.saveAs -----------------------------------------------\n (function() {\n function postToProxy(dataURI, fileName, proxyURL, proxyTarget) {\n var form = $(\"
\").attr({\n action: proxyURL,\n method: \"POST\",\n target: proxyTarget\n });\n\n var data = kendo.antiForgeryTokens();\n data.fileName = fileName;\n\n var parts = dataURI.split(\";base64,\");\n data.contentType = parts[0].replace(\"data:\", \"\");\n data.base64 = parts[1];\n\n for (var name in data) {\n if (data.hasOwnProperty(name)) {\n $('').attr({\n value: data[name],\n name: name,\n type: \"hidden\"\n }).appendTo(form);\n }\n }\n\n form.appendTo(\"body\").submit().remove();\n }\n\n var fileSaver = document.createElement(\"a\");\n var downloadAttribute = \"download\" in fileSaver && !kendo.support.browser.edge;\n\n function saveAsBlob(dataURI, fileName) {\n var blob = dataURI; // could be a Blob object\n\n if (typeof dataURI == \"string\") {\n var parts = dataURI.split(\";base64,\");\n var contentType = parts[0];\n var base64 = atob(parts[1]);\n var array = new Uint8Array(base64.length);\n\n for (var idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n blob = new Blob([array.buffer], { type: contentType });\n }\n\n navigator.msSaveBlob(blob, fileName);\n }\n\n function saveAsDataURI(dataURI, fileName) {\n if (window.Blob && dataURI instanceof Blob) {\n dataURI = URL.createObjectURL(dataURI);\n }\n\n fileSaver.download = fileName;\n fileSaver.href = dataURI;\n\n var 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(function() {\n URL.revokeObjectURL(dataURI);\n });\n }\n\n kendo.saveAs = function(options) {\n var save = postToProxy;\n\n if (!options.forceProxy) {\n if (downloadAttribute) {\n save = saveAsDataURI;\n } else if (navigator.msSaveBlob) {\n save = saveAsBlob;\n }\n }\n\n save(options.dataURI, options.fileName, options.proxyURL, options.proxyTarget);\n };\n })();\n\n // kendo proxySetters\n kendo.proxyModelSetters = function proxyModelSetters(data) {\n var observable = {};\n\n Object.keys(data || {}).forEach(function(property) {\n Object.defineProperty(observable, property, {\n get: function() {\n return data[property];\n },\n set: function(value) {\n data[property] = value;\n data.dirty = true;\n }\n });\n });\n\n return observable;\n };\n\n kendo.getSeriesColors = function() {\n var seriesColorsTemplate = '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
',\n series = $(seriesColorsTemplate),\n colors = [];\n\n series.appendTo($('body'));\n\n series.each(function(i, item) {\n colors.push($(item).css(\"background-color\"));\n });\n\n series.remove();\n\n return colors;\n };\n\n kendo.isElement = function(element) {\n return element instanceof Element || element instanceof HTMLDocument;\n };\n\n // Kendo defaults\n (function() {\n\n kendo.defaults = kendo.defaults || {};\n kendo.setDefaults = function(key, value) {\n var path = key.split(\".\");\n var curr = kendo.defaults;\n\n key = path.pop();\n\n path.forEach(function(part) {\n if (curr[part] === undefined$1) {\n curr[part] = {};\n }\n\n curr = curr[part];\n });\n\n if (value.constructor === Object) {\n curr[key] = deepExtend({}, curr[key], value);\n } else {\n curr[key] = value;\n }\n };\n\n // Use external global flags for templates.\n kendo.debugTemplates = window.DEBUG_KENDO_TEMPLATES;\n\n // Setup default mediaQuery breakpoints\n kendo.setDefaults('breakpoints', defaultBreakpoints);\n })();\n\n // Implement type() as it has been depricated in jQuery\n (function() {\n kendo.class2type = {};\n\n jQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n function( _i, name ) {\n kendo.class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n } );\n\n kendo.type = function(obj) {\n if ( obj == null ) {\n return obj + \"\";\n }\n\n // Support: Android <=2.3 only (functionish RegExp)\n return typeof obj === \"object\" || typeof obj === \"function\" ?\n kendo.class2type[Object.prototype.toString.call(obj)] || \"object\" :\n typeof obj;\n };\n }());\n\n var KendoLicensing = { validatePackage: function() { return true; },setScriptKey: function() {} };\n\n window.KendoLicensing = {\n setScriptKey: KendoLicensing.setScriptKey\n };\n\n function validatePackage() {\n return KendoLicensing.validatePackage(packageMetadata);\n }\n\n function addWatermarkOverlay(el) {\n KendoLicensing.addWatermarkOverlay && KendoLicensing.addWatermarkOverlay(el, packageMetadata);\n KendoLicensing.showBanner && KendoLicensing.showBanner(packageMetadata);\n }\n\n })(jQuery, window);\n var kendo$X = kendo;\n\n var __meta__$W = {\n id: \"fx\",\n name: \"Effects\",\n category: \"framework\",\n description: \"Required for animation effects in all Kendo UI widgets.\",\n depends: [ \"core\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n fx = kendo.effects,\n each = $.each,\n extend = $.extend,\n support = kendo.support,\n browser = support.browser,\n transforms = support.transforms,\n transitions = support.transitions,\n scaleProperties = { scale: 0, scalex: 0, scaley: 0, scale3d: 0 },\n translateProperties = { translate: 0, translatex: 0, translatey: 0, translate3d: 0 },\n hasZoom = (typeof document.documentElement.style.zoom !== \"undefined\") && !transforms,\n matrix3dRegExp = /matrix3?d?\\s*\\(.*,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?/i,\n cssParamsRegExp = /^(-?[\\d\\.\\-]+)?[\\w\\s]*,?\\s*(-?[\\d\\.\\-]+)?[\\w\\s]*/i,\n translateXRegExp = /translatex?$/i,\n oldEffectsRegExp = /(zoom|fade|expand)(\\w+)/,\n singleEffectRegExp = /(zoom|fade|expand)/,\n unitRegExp = /[xy]$/i,\n transformProps = [\"perspective\", \"rotate\", \"rotatex\", \"rotatey\", \"rotatez\", \"rotate3d\", \"scale\", \"scalex\", \"scaley\", \"scalez\", \"scale3d\", \"skew\", \"skewx\", \"skewy\", \"translate\", \"translatex\", \"translatey\", \"translatez\", \"translate3d\", \"matrix\", \"matrix3d\"],\n transform2d = [\"rotate\", \"scale\", \"scalex\", \"scaley\", \"skew\", \"skewx\", \"skewy\", \"translate\", \"translatex\", \"translatey\", \"matrix\"],\n transform2units = { \"rotate\": \"deg\", scale: \"\", skew: \"px\", translate: \"px\" },\n cssPrefix = transforms.css,\n round = Math.round,\n BLANK = \"\",\n PX = \"px\",\n NONE = \"none\",\n AUTO = \"auto\",\n WIDTH = \"width\",\n HEIGHT = \"height\",\n HIDDEN = \"hidden\",\n ORIGIN = \"origin\",\n ABORT_ID = \"abortId\",\n OVERFLOW = \"overflow\",\n TRANSLATE = \"translate\",\n POSITION = \"position\",\n COMPLETE_CALLBACK = \"completeCallback\",\n TRANSITION = cssPrefix + \"transition\",\n TRANSFORM = cssPrefix + \"transform\",\n BACKFACE = cssPrefix + \"backface-visibility\",\n PERSPECTIVE = cssPrefix + \"perspective\",\n DEFAULT_PERSPECTIVE = \"1500px\",\n TRANSFORM_PERSPECTIVE = \"perspective(\" + DEFAULT_PERSPECTIVE + \")\",\n directions = {\n left: {\n reverse: \"right\",\n property: \"left\",\n transition: \"translatex\",\n vertical: false,\n modifier: -1\n },\n right: {\n reverse: \"left\",\n property: \"left\",\n transition: \"translatex\",\n vertical: false,\n modifier: 1\n },\n down: {\n reverse: \"up\",\n property: \"top\",\n transition: \"translatey\",\n vertical: true,\n modifier: 1\n },\n up: {\n reverse: \"down\",\n property: \"top\",\n transition: \"translatey\",\n vertical: true,\n modifier: -1\n },\n top: {\n reverse: \"bottom\"\n },\n bottom: {\n reverse: \"top\"\n },\n \"in\": {\n reverse: \"out\",\n modifier: -1\n },\n out: {\n reverse: \"in\",\n modifier: 1\n },\n\n vertical: {\n reverse: \"vertical\"\n },\n\n horizontal: {\n reverse: \"horizontal\"\n }\n };\n\n kendo.directions = directions;\n\n extend($.fn, {\n kendoStop: function(clearQueue, gotoEnd) {\n if (transitions) {\n return fx.stopQueue(this, clearQueue || false, gotoEnd || false);\n } else {\n return this.stop(clearQueue, gotoEnd);\n }\n }\n });\n\n /* jQuery support for all transform animations (FF 3.5/3.6, Opera 10.x, IE9 */\n\n if (transforms && !transitions) {\n each(transform2d, function(idx, value) {\n $.fn[value] = function(val) {\n if (typeof val == \"undefined\") {\n return animationProperty(this, value);\n } else {\n var that = $(this)[0],\n transformValue = value + \"(\" + val + transform2units[value.replace(unitRegExp, \"\")] + \")\";\n\n if (that.style.cssText.indexOf(TRANSFORM) == -1) {\n $(this).css(TRANSFORM, transformValue);\n } else {\n that.style.cssText = that.style.cssText.replace(new RegExp(value + \"\\\\(.*?\\\\)\", \"i\"), transformValue);\n }\n }\n return this;\n };\n\n $.fx.step[value] = function(fx) {\n $(fx.elem)[value](fx.now);\n };\n });\n\n var curProxy = $.fx.prototype.cur;\n $.fx.prototype.cur = function() {\n if (transform2d.indexOf(this.prop) != -1) {\n return parseFloat($(this.elem)[this.prop]());\n }\n\n return curProxy.apply(this, arguments);\n };\n }\n\n kendo.toggleClass = function(element, classes, options, add) {\n if (classes) {\n classes = classes.split(\" \");\n\n if (transitions) {\n options = extend({\n exclusive: \"all\",\n duration: 400,\n ease: \"ease-out\"\n }, options);\n\n element.css(TRANSITION, options.exclusive + \" \" + options.duration + \"ms \" + options.ease);\n setTimeout(function() {\n element.css(TRANSITION, \"\").css(HEIGHT);\n }, options.duration); // TODO: this should fire a kendoAnimate session instead.\n }\n\n each(classes, function(idx, value) {\n element.toggleClass(value, add);\n });\n }\n\n return element;\n };\n\n kendo.parseEffects = function(input, mirror) {\n var effects = {};\n\n if (typeof input === \"string\") {\n each(input.split(\" \"), function(idx, value) {\n var redirectedEffect = !singleEffectRegExp.test(value),\n resolved = value.replace(oldEffectsRegExp, function(match, $1, $2) {\n return $1 + \":\" + $2.toLowerCase();\n }), // Support for old zoomIn/fadeOut style, now deprecated.\n effect = resolved.split(\":\"),\n direction = effect[1],\n effectBody = {};\n\n if (effect.length > 1) {\n effectBody.direction = (mirror && redirectedEffect ? directions[direction].reverse : direction);\n }\n\n effects[effect[0]] = effectBody;\n });\n } else {\n each(input, function(idx) {\n var direction = this.direction;\n\n if (direction && mirror && !singleEffectRegExp.test(idx)) {\n this.direction = directions[direction].reverse;\n }\n\n effects[idx] = this;\n });\n }\n\n return effects;\n };\n\n function parseInteger(value) {\n return parseInt(value, 10);\n }\n\n function parseCSS(element, property) {\n return parseInteger(element.css(property));\n }\n\n function keys(obj) {\n var acc = [];\n for (var propertyName in obj) {\n acc.push(propertyName);\n }\n return acc;\n }\n\n function strip3DTransforms(properties) {\n for (var key in properties) {\n if (transformProps.indexOf(key) != -1 && transform2d.indexOf(key) == -1) {\n delete properties[key];\n }\n }\n\n return properties;\n }\n\n function normalizeCSS(element, properties) {\n var transformation = [], cssValues = {}, lowerKey, key, value, isTransformed;\n\n for (key in properties) {\n lowerKey = key.toLowerCase();\n isTransformed = transforms && transformProps.indexOf(lowerKey) != -1;\n\n if (!support.hasHW3D && isTransformed && transform2d.indexOf(lowerKey) == -1) {\n delete properties[key];\n } else {\n value = properties[key];\n\n if (isTransformed) {\n transformation.push(key + \"(\" + value + \")\");\n } else {\n cssValues[key] = value;\n }\n }\n }\n\n if (transformation.length) {\n cssValues[TRANSFORM] = transformation.join(\" \");\n }\n\n return cssValues;\n }\n\n if (transitions) {\n extend(fx, {\n transition: function(element, properties, options) {\n var css,\n delay = 0,\n oldKeys = element.data(\"keys\") || [],\n timeoutID;\n\n options = extend({\n duration: 200,\n ease: \"ease-out\",\n complete: null,\n exclusive: \"all\"\n },\n options\n );\n\n var stopTransitionCalled = false;\n\n var stopTransition = function() {\n if (!stopTransitionCalled) {\n stopTransitionCalled = true;\n\n if (timeoutID) {\n clearTimeout(timeoutID);\n timeoutID = null;\n }\n\n element\n .removeData(ABORT_ID)\n .dequeue()\n .css(TRANSITION, \"\")\n .css(TRANSITION);\n\n options.complete.call(element);\n }\n };\n\n options.duration = $.fx ? $.fx.speeds[options.duration] || options.duration : options.duration;\n\n css = normalizeCSS(element, properties);\n\n $.merge(oldKeys, keys(css));\n\n if ($.hasOwnProperty(\"uniqueSort\")) {\n element\n .data(\"keys\", $.uniqueSort(oldKeys))\n .height();\n } else {\n element\n .data(\"keys\", $.unique(oldKeys))\n .height();\n }\n\n element.css(TRANSITION, options.exclusive + \" \" + options.duration + \"ms \" + options.ease).css(TRANSITION);\n element.css(css).css(TRANSFORM);\n\n /**\n * Use transitionEnd event for browsers who support it - but duplicate it with setTimeout, as the transitionEnd event will not be triggered if no CSS properties change.\n * This should be cleaned up at some point (widget by widget), and refactored to widgets not relying on the complete callback if no transition occurs.\n *\n * For IE9 and below, resort to setTimeout.\n */\n if (transitions.event) {\n element.one(transitions.event, stopTransition);\n if (options.duration !== 0) {\n delay = 500;\n }\n }\n\n timeoutID = setTimeout(stopTransition, options.duration + delay);\n element.data(ABORT_ID, timeoutID);\n element.data(COMPLETE_CALLBACK, stopTransition);\n },\n\n stopQueue: function(element, clearQueue, gotoEnd) {\n var cssValues,\n taskKeys = element.data(\"keys\"),\n retainPosition = (!gotoEnd && taskKeys),\n completeCallback = element.data(COMPLETE_CALLBACK);\n\n if (retainPosition) {\n cssValues = kendo.getComputedStyles(element[0], taskKeys);\n }\n\n if (completeCallback) {\n completeCallback();\n }\n\n if (retainPosition) {\n element.css(cssValues);\n }\n\n return element\n .removeData(\"keys\")\n .stop(clearQueue);\n }\n });\n }\n\n function animationProperty(element, property) {\n if (transforms) {\n var transform = element.css(TRANSFORM);\n if (transform == NONE) {\n return property == \"scale\" ? 1 : 0;\n }\n\n var match = transform.match(new RegExp(property + \"\\\\s*\\\\(([\\\\d\\\\w\\\\.]+)\")),\n computed = 0;\n\n if (match) {\n computed = parseInteger(match[1]);\n } else {\n match = transform.match(matrix3dRegExp) || [0, 0, 0, 0, 0];\n property = property.toLowerCase();\n\n if (translateXRegExp.test(property)) {\n computed = parseFloat(match[3] / match[2]);\n } else if (property == \"translatey\") {\n computed = parseFloat(match[4] / match[2]);\n } else if (property == \"scale\") {\n computed = parseFloat(match[2]);\n } else if (property == \"rotate\") {\n computed = parseFloat(Math.atan2(match[2], match[1]));\n }\n }\n\n return computed;\n } else {\n return parseFloat(element.css(property));\n }\n }\n\n var EffectSet = kendo.Class.extend({\n init: function(element, options) {\n var that = this;\n\n that.element = element;\n that.effects = [];\n that.options = options;\n that.restore = [];\n },\n\n run: function(effects) {\n var that = this,\n effect,\n idx, jdx,\n length = effects.length,\n element = that.element,\n options = that.options,\n deferred = $.Deferred(),\n start = {},\n end = {},\n target,\n children,\n childrenLength;\n\n that.effects = effects;\n\n deferred.done(that.complete.bind(that));\n\n element.data(\"animating\", true);\n\n for (idx = 0; idx < length; idx ++) {\n effect = effects[idx];\n\n effect.setReverse(options.reverse);\n effect.setOptions(options);\n\n that.addRestoreProperties(effect.restore);\n\n effect.prepare(start, end);\n\n children = effect.children();\n\n for (jdx = 0, childrenLength = children.length; jdx < childrenLength; jdx ++) {\n children[jdx].duration(options.duration).run();\n }\n }\n\n // legacy support for options.properties\n for (var effectName in options.effects) {\n extend(end, options.effects[effectName].properties);\n }\n\n // Show the element initially\n if (!element.is(\":visible\")) {\n extend(start, { display: element.data(\"olddisplay\") || \"block\" });\n }\n\n if (transforms && !options.reset) {\n target = element.data(\"targetTransform\");\n\n if (target) {\n start = extend(target, start);\n }\n }\n\n start = normalizeCSS(element, start);\n\n if (transforms && !transitions) {\n start = strip3DTransforms(start);\n }\n\n element.css(start)\n .css(TRANSFORM); // Nudge\n\n for (idx = 0; idx < length; idx ++) {\n effects[idx].setup();\n }\n\n if (options.init) {\n options.init();\n }\n\n element.data(\"targetTransform\", end);\n fx.animate(element, end, extend({}, options, { complete: deferred.resolve }));\n\n return deferred.promise();\n },\n\n stop: function() {\n $(this.element).kendoStop(true, true);\n },\n\n addRestoreProperties: function(restore) {\n var element = this.element,\n value,\n i = 0,\n length = restore.length;\n\n for (; i < length; i ++) {\n value = restore[i];\n\n this.restore.push(value);\n\n if (!element.data(value)) {\n element.data(value, element.css(value));\n }\n }\n },\n\n restoreCallback: function() {\n var element = this.element;\n\n for (var i = 0, length = this.restore.length; i < length; i ++) {\n var value = this.restore[i];\n element.css(value, element.data(value));\n }\n },\n\n complete: function() {\n var that = this,\n idx = 0,\n element = that.element,\n options = that.options,\n effects = that.effects,\n length = effects.length;\n\n element\n .removeData(\"animating\")\n .dequeue(); // call next animation from the queue\n\n if (options.hide) {\n element.data(\"olddisplay\", element.css(\"display\")).hide();\n }\n\n this.restoreCallback();\n\n if (hasZoom && !transforms) {\n setTimeout(this.restoreCallback.bind(this), 0); // Again jQuery callback in IE8-\n }\n\n for (; idx < length; idx ++) {\n effects[idx].teardown();\n }\n\n if (options.completeCallback) {\n options.completeCallback(element);\n }\n }\n });\n\n fx.promise = function(element, options) {\n var effects = [],\n effectClass,\n effectSet = new EffectSet(element, options),\n parsedEffects = kendo.parseEffects(options.effects),\n effect;\n\n options.effects = parsedEffects;\n\n for (var effectName in parsedEffects) {\n effectClass = fx[capitalize(effectName)];\n\n if (effectClass) {\n effect = new effectClass(element, parsedEffects[effectName].direction);\n effects.push(effect);\n }\n }\n\n if (effects[0]) {\n effectSet.run(effects);\n } else { // Not sure how would an fx promise reach this state - means that you call kendoAnimate with no valid effects? Why?\n if (!element.is(\":visible\")) {\n element.css({ display: element.data(\"olddisplay\") || \"block\" }).css(\"display\");\n }\n\n if (options.init) {\n options.init();\n }\n\n element.dequeue();\n effectSet.complete();\n }\n };\n\n extend(fx, {\n animate: function(elements, properties, options) {\n var useTransition = options.transition !== false;\n delete options.transition;\n\n if (transitions && \"transition\" in fx && useTransition) {\n fx.transition(elements, properties, options);\n } else {\n if (transforms) {\n elements.animate(strip3DTransforms(properties), { queue: false, show: false, hide: false, duration: options.duration, complete: options.complete }); // Stop animate from showing/hiding the element to be able to hide it later on.\n } else {\n elements.each(function() {\n var element = $(this),\n multiple = {};\n\n each(transformProps, function(idx, value) { // remove transforms to avoid IE and older browsers confusion\n var params,\n currentValue = properties ? properties[value] + \" \" : null; // We need to match\n\n if (currentValue) {\n var single = properties;\n\n if (value in scaleProperties && properties[value] !== undefined$1) {\n params = currentValue.match(cssParamsRegExp);\n if (transforms) {\n extend(single, { scale: +params[0] });\n }\n } else {\n if (value in translateProperties && properties[value] !== undefined$1) {\n var position = element.css(POSITION),\n isFixed = (position == \"absolute\" || position == \"fixed\");\n\n if (!element.data(TRANSLATE)) {\n if (isFixed) {\n element.data(TRANSLATE, {\n top: parseCSS(element, \"top\") || 0,\n left: parseCSS(element, \"left\") || 0,\n bottom: parseCSS(element, \"bottom\"),\n right: parseCSS(element, \"right\")\n });\n } else {\n element.data(TRANSLATE, {\n top: parseCSS(element, \"marginTop\") || 0,\n left: parseCSS(element, \"marginLeft\") || 0\n });\n }\n }\n\n var originalPosition = element.data(TRANSLATE);\n\n params = currentValue.match(cssParamsRegExp);\n if (params) {\n\n var dX = value == TRANSLATE + \"y\" ? +null : +params[1],\n dY = value == TRANSLATE + \"y\" ? +params[1] : +params[2];\n\n if (isFixed) {\n if (!isNaN(originalPosition.right)) {\n if (!isNaN(dX)) { extend(single, { right: originalPosition.right - dX }); }\n } else {\n if (!isNaN(dX)) { extend(single, { left: originalPosition.left + dX }); }\n }\n\n if (!isNaN(originalPosition.bottom)) {\n if (!isNaN(dY)) { extend(single, { bottom: originalPosition.bottom - dY }); }\n } else {\n if (!isNaN(dY)) { extend(single, { top: originalPosition.top + dY }); }\n }\n } else {\n if (!isNaN(dX)) { extend(single, { marginLeft: originalPosition.left + dX }); }\n if (!isNaN(dY)) { extend(single, { marginTop: originalPosition.top + dY }); }\n }\n }\n }\n }\n\n if (!transforms && value != \"scale\" && value in single) {\n delete single[value];\n }\n\n if (single) {\n extend(multiple, single);\n }\n }\n });\n\n if (browser.msie) {\n delete multiple.scale;\n }\n\n element.animate(multiple, { queue: false, show: false, hide: false, duration: options.duration, complete: options.complete }); // Stop animate from showing/hiding the element to be able to hide it later on.\n });\n }\n }\n }\n });\n\n fx.animatedPromise = fx.promise;\n\n var Effect = kendo.Class.extend({\n init: function(element, direction) {\n var that = this;\n that.element = element;\n that._direction = direction;\n that.options = {};\n that._additionalEffects = [];\n\n if (!that.restore) {\n that.restore = [];\n }\n },\n\n // Public API\n reverse: function() {\n this._reverse = true;\n return this.run();\n },\n\n play: function() {\n this._reverse = false;\n return this.run();\n },\n\n add: function(additional) {\n this._additionalEffects.push(additional);\n return this;\n },\n\n direction: function(value) {\n this._direction = value;\n return this;\n },\n\n duration: function(duration) {\n this._duration = duration;\n return this;\n },\n\n compositeRun: function() {\n var that = this,\n effectSet = new EffectSet(that.element, { reverse: that._reverse, duration: that._duration }),\n effects = that._additionalEffects.concat([ that ]);\n\n return effectSet.run(effects);\n },\n\n run: function() {\n if (this._additionalEffects && this._additionalEffects[0]) {\n return this.compositeRun();\n }\n\n var that = this,\n element = that.element,\n idx = 0,\n restore = that.restore,\n length = restore.length,\n value,\n deferred = $.Deferred(),\n start = {},\n end = {},\n target,\n children = that.children(),\n childrenLength = children.length;\n\n deferred.done(that._complete.bind(that));\n\n element.data(\"animating\", true);\n\n for (idx = 0; idx < length; idx ++) {\n value = restore[idx];\n\n if (!element.data(value)) {\n element.data(value, element.css(value));\n }\n }\n\n for (idx = 0; idx < childrenLength; idx ++) {\n children[idx].duration(that._duration).run();\n }\n\n that.prepare(start, end);\n\n if (!element.is(\":visible\")) {\n extend(start, { display: element.data(\"olddisplay\") || \"block\" });\n }\n\n if (transforms) {\n target = element.data(\"targetTransform\");\n\n if (target) {\n start = extend(target, start);\n }\n }\n\n start = normalizeCSS(element, start);\n\n if (transforms && !transitions) {\n start = strip3DTransforms(start);\n }\n\n element.css(start).css(TRANSFORM); // Trick webkit into re-rendering\n\n that.setup();\n\n element.data(\"targetTransform\", end);\n fx.animate(element, end, { duration: that._duration, complete: deferred.resolve });\n\n return deferred.promise();\n },\n\n stop: function() {\n var idx = 0,\n children = this.children(),\n childrenLength = children.length;\n\n for (idx = 0; idx < childrenLength; idx ++) {\n children[idx].stop();\n }\n\n $(this.element).kendoStop(true, true);\n return this;\n },\n\n restoreCallback: function() {\n var element = this.element;\n\n for (var i = 0, length = this.restore.length; i < length; i ++) {\n var value = this.restore[i];\n element.css(value, element.data(value));\n }\n },\n\n _complete: function() {\n var that = this,\n element = that.element;\n\n element\n .removeData(\"animating\")\n .dequeue(); // call next animation from the queue\n\n that.restoreCallback();\n\n if (that.shouldHide()) {\n element.data(\"olddisplay\", element.css(\"display\")).hide();\n }\n\n if (hasZoom && !transforms) {\n setTimeout(that.restoreCallback.bind(that), 0); // Again jQuery callback in IE8-\n }\n\n that.teardown();\n },\n\n /////////////////////////// Support for kendo.animate;\n setOptions: function(options) {\n extend(true, this.options, options);\n },\n\n children: function() {\n return [];\n },\n\n shouldHide: $.noop,\n\n setup: $.noop,\n prepare: $.noop,\n teardown: $.noop,\n directions: [],\n\n setReverse: function(reverse) {\n this._reverse = reverse;\n return this;\n }\n });\n\n function capitalize(word) {\n return word.charAt(0).toUpperCase() + word.substring(1);\n }\n\n function createEffect(name, definition) {\n var effectClass = Effect.extend(definition),\n directions = effectClass.prototype.directions;\n\n fx[capitalize(name)] = effectClass;\n\n fx.Element.prototype[name] = function(direction, opt1, opt2, opt3) {\n return new effectClass(this.element, direction, opt1, opt2, opt3);\n };\n\n each(directions, function(idx, theDirection) {\n fx.Element.prototype[name + capitalize(theDirection)] = function(opt1, opt2, opt3) {\n return new effectClass(this.element, theDirection, opt1, opt2, opt3);\n };\n });\n }\n\n var FOUR_DIRECTIONS = [\"left\", \"right\", \"up\", \"down\"],\n IN_OUT = [\"in\", \"out\"];\n\n createEffect(\"slideIn\", {\n directions: FOUR_DIRECTIONS,\n\n divisor: function(value) {\n this.options.divisor = value;\n return this;\n },\n\n prepare: function(start, end) {\n var that = this,\n tmp,\n element = that.element,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n direction = directions[that._direction],\n offset = -direction.modifier * (direction.vertical ? outerHeight(element) : outerWidth(element)),\n startValue = offset / (that.options && that.options.divisor || 1) + PX,\n endValue = \"0px\";\n\n if (that._reverse) {\n tmp = start;\n start = end;\n end = tmp;\n }\n\n if (transforms) {\n start[direction.transition] = startValue;\n end[direction.transition] = endValue;\n } else {\n start[direction.property] = startValue;\n end[direction.property] = endValue;\n }\n }\n });\n\n createEffect(\"tile\", {\n directions: FOUR_DIRECTIONS,\n\n init: function(element, direction, previous) {\n Effect.prototype.init.call(this, element, direction);\n this.options = { previous: previous };\n },\n\n previousDivisor: function(value) {\n this.options.previousDivisor = value;\n return this;\n },\n\n children: function() {\n var that = this,\n reverse = that._reverse,\n previous = that.options.previous,\n divisor = that.options.previousDivisor || 1,\n dir = that._direction;\n\n var children = [ kendo.fx(that.element).slideIn(dir).setReverse(reverse) ];\n\n if (previous) {\n children.push( kendo.fx(previous).slideIn(directions[dir].reverse).divisor(divisor).setReverse(!reverse) );\n }\n\n return children;\n }\n });\n\n function createToggleEffect(name, property, defaultStart, defaultEnd) {\n createEffect(name, {\n directions: IN_OUT,\n\n startValue: function(value) {\n this._startValue = value;\n return this;\n },\n\n endValue: function(value) {\n this._endValue = value;\n return this;\n },\n\n shouldHide: function() {\n return this._shouldHide;\n },\n\n prepare: function(start, end) {\n var that = this,\n startValue,\n endValue,\n out = this._direction === \"out\",\n startDataValue = that.element.data(property),\n startDataValueIsSet = !(isNaN(startDataValue) || startDataValue == defaultStart);\n\n if (startDataValueIsSet) {\n startValue = startDataValue;\n } else if (typeof this._startValue !== \"undefined\") {\n startValue = this._startValue;\n } else {\n startValue = out ? defaultStart : defaultEnd;\n }\n\n if (typeof this._endValue !== \"undefined\") {\n endValue = this._endValue;\n } else {\n endValue = out ? defaultEnd : defaultStart;\n }\n\n if (this._reverse) {\n start[property] = endValue;\n end[property] = startValue;\n } else {\n start[property] = startValue;\n end[property] = endValue;\n }\n\n that._shouldHide = end[property] === defaultEnd;\n }\n });\n }\n\n createToggleEffect(\"fade\", \"opacity\", 1, 0);\n createToggleEffect(\"zoom\", \"scale\", 1, 0.01);\n\n createEffect(\"slideMargin\", {\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n options = that.options,\n origin = element.data(ORIGIN),\n offset = options.offset,\n margin,\n reverse = that._reverse;\n\n if (!reverse && origin === null) {\n element.data(ORIGIN, parseFloat(element.css(\"margin-\" + options.axis)));\n }\n\n margin = (element.data(ORIGIN) || 0);\n end[\"margin-\" + options.axis] = !reverse ? margin + offset : margin;\n }\n });\n\n createEffect(\"slideTo\", {\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n options = that.options,\n offset = options.offset.split(\",\"),\n reverse = that._reverse;\n\n if (transforms) {\n end.translatex = !reverse ? offset[0] : 0;\n end.translatey = !reverse ? offset[1] : 0;\n } else {\n end.left = !reverse ? offset[0] : 0;\n end.top = !reverse ? offset[1] : 0;\n }\n element.css(\"left\");\n }\n });\n\n createEffect(\"expand\", {\n directions: [\"horizontal\", \"vertical\"],\n\n restore: [ OVERFLOW ],\n\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n options = that.options,\n reverse = that._reverse,\n property = that._direction === \"vertical\" ? HEIGHT : WIDTH,\n setLength = element[0].style[property],\n oldLength = element.data(property),\n length = parseFloat(oldLength || setLength),\n realLength = round(element.css(property, AUTO)[property]());\n\n start.overflow = HIDDEN;\n\n length = (options && options.reset) ? realLength || length : length || realLength;\n\n end[property] = (reverse ? 0 : length) + PX;\n start[property] = (reverse ? length : 0) + PX;\n\n if (oldLength === undefined$1) {\n element.data(property, setLength);\n }\n },\n\n shouldHide: function() {\n return this._reverse;\n },\n\n teardown: function() {\n var that = this,\n element = that.element,\n property = that._direction === \"vertical\" ? HEIGHT : WIDTH,\n length = element.data(property);\n\n if (length == AUTO || length === BLANK) {\n setTimeout(function() { element.css(property, AUTO).css(property); }, 0); // jQuery animate complete callback in IE is called before the last animation step!\n }\n }\n });\n\n var TRANSFER_START_STATE = { position: \"absolute\", marginLeft: 0, marginTop: 0, scale: 1 };\n /**\n * Intersection point formulas are taken from here - http://zonalandeducation.com/mmts/intersections/intersectionOfTwoLines1/intersectionOfTwoLines1.html\n * Formula for a linear function from two points from here - http://demo.activemath.org/ActiveMath2/search/show.cmd?id=mbase://AC_UK_calculus/functions/ex_linear_equation_two_points\n * The transform origin point is the intersection point of the two lines from the top left corners/top right corners of the element and target.\n * The math and variables below MAY BE SIMPLIFIED (zeroes removed), but this would make the formula too cryptic.\n */\n createEffect(\"transfer\", {\n init: function(element, target) {\n this.element = element;\n this.options = { target: target };\n this.restore = [];\n },\n\n setup: function() {\n this.element.appendTo(document.body);\n },\n\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n outerBox = fx.box(element),\n innerBox = fx.box(that.options.target),\n currentScale = animationProperty(element, \"scale\"),\n scale = fx.fillScale(innerBox, outerBox),\n transformOrigin = fx.transformOrigin(innerBox, outerBox);\n\n extend(start, TRANSFER_START_STATE);\n end.scale = 1;\n\n element.css(TRANSFORM, \"scale(1)\").css(TRANSFORM);\n element.css(TRANSFORM, \"scale(\" + currentScale + \")\");\n\n start.top = outerBox.top;\n start.left = outerBox.left;\n start.transformOrigin = transformOrigin.x + PX + \" \" + transformOrigin.y + PX;\n\n if (that._reverse) {\n start.scale = scale;\n } else {\n end.scale = scale;\n }\n }\n });\n\n\n var CLIPS = {\n top: \"rect(auto auto $size auto)\",\n bottom: \"rect($size auto auto auto)\",\n left: \"rect(auto $size auto auto)\",\n right: \"rect(auto auto auto $size)\"\n };\n\n var ROTATIONS = {\n top: { start: \"rotatex(0deg)\", end: \"rotatex(180deg)\" },\n bottom: { start: \"rotatex(-180deg)\", end: \"rotatex(0deg)\" },\n left: { start: \"rotatey(0deg)\", end: \"rotatey(-180deg)\" },\n right: { start: \"rotatey(180deg)\", end: \"rotatey(0deg)\" }\n };\n\n function clipInHalf(container, direction) {\n var vertical = kendo.directions[direction].vertical,\n size = (container[vertical ? HEIGHT : WIDTH]() / 2) + \"px\";\n\n return CLIPS[direction].replace(\"$size\", size);\n }\n\n createEffect(\"turningPage\", {\n directions: FOUR_DIRECTIONS,\n\n init: function(element, direction, container) {\n Effect.prototype.init.call(this, element, direction);\n this._container = container;\n },\n\n prepare: function(start, end) {\n var that = this,\n reverse = that._reverse,\n direction = reverse ? directions[that._direction].reverse : that._direction,\n rotation = ROTATIONS[direction];\n\n start.zIndex = 1;\n\n if (that._clipInHalf) {\n start.clip = clipInHalf(that._container, kendo.directions[direction].reverse);\n }\n\n start[BACKFACE] = HIDDEN;\n\n end[TRANSFORM] = TRANSFORM_PERSPECTIVE + (reverse ? rotation.start : rotation.end);\n start[TRANSFORM] = TRANSFORM_PERSPECTIVE + (reverse ? rotation.end : rotation.start);\n },\n\n setup: function() {\n this._container.append(this.element);\n },\n\n face: function(value) {\n this._face = value;\n return this;\n },\n\n shouldHide: function() {\n var that = this,\n reverse = that._reverse,\n face = that._face;\n\n return (reverse && !face) || (!reverse && face);\n },\n\n clipInHalf: function(value) {\n this._clipInHalf = value;\n return this;\n },\n\n temporary: function() {\n this.element.addClass('temp-page');\n return this;\n }\n });\n\n createEffect(\"staticPage\", {\n directions: FOUR_DIRECTIONS,\n\n init: function(element, direction, container) {\n Effect.prototype.init.call(this, element, direction);\n this._container = container;\n },\n\n restore: [\"clip\"],\n\n prepare: function(start, end) {\n var that = this,\n direction = that._reverse ? directions[that._direction].reverse : that._direction;\n\n start.clip = clipInHalf(that._container, direction);\n start.opacity = 0.999;\n end.opacity = 1;\n },\n\n shouldHide: function() {\n var that = this,\n reverse = that._reverse,\n face = that._face;\n\n return (reverse && !face) || (!reverse && face);\n },\n\n face: function(value) {\n this._face = value;\n return this;\n }\n });\n\n createEffect(\"pageturn\", {\n directions: [\"horizontal\", \"vertical\"],\n\n init: function(element, direction, face, back) {\n Effect.prototype.init.call(this, element, direction);\n this.options = {};\n this.options.face = face;\n this.options.back = back;\n },\n\n children: function() {\n var that = this,\n options = that.options,\n direction = that._direction === \"horizontal\" ? \"left\" : \"top\",\n reverseDirection = kendo.directions[direction].reverse,\n reverse = that._reverse,\n temp,\n faceClone = options.face.clone(true).removeAttr(\"id\"),\n backClone = options.back.clone(true).removeAttr(\"id\"),\n element = that.element;\n\n if (reverse) {\n temp = direction;\n direction = reverseDirection;\n reverseDirection = temp;\n }\n\n return [\n kendo.fx(options.face).staticPage(direction, element).face(true).setReverse(reverse),\n kendo.fx(options.back).staticPage(reverseDirection, element).setReverse(reverse),\n kendo.fx(faceClone).turningPage(direction, element).face(true).clipInHalf(true).temporary().setReverse(reverse),\n kendo.fx(backClone).turningPage(reverseDirection, element).clipInHalf(true).temporary().setReverse(reverse)\n ];\n },\n\n prepare: function(start, end) {\n start[PERSPECTIVE] = DEFAULT_PERSPECTIVE;\n start.transformStyle = \"preserve-3d\";\n // hack to trigger transition end.\n start.opacity = 0.999;\n end.opacity = 1;\n },\n\n teardown: function() {\n this.element.find(\".temp-page\").remove();\n }\n });\n\n createEffect(\"flip\", {\n directions: [\"horizontal\", \"vertical\"],\n\n init: function(element, direction, face, back) {\n Effect.prototype.init.call(this, element, direction);\n this.options = {};\n this.options.face = face;\n this.options.back = back;\n },\n\n children: function() {\n var that = this,\n options = that.options,\n direction = that._direction === \"horizontal\" ? \"left\" : \"top\",\n reverseDirection = kendo.directions[direction].reverse,\n reverse = that._reverse,\n temp,\n element = that.element;\n\n if (reverse) {\n temp = direction;\n direction = reverseDirection;\n reverseDirection = temp;\n }\n\n return [\n kendo.fx(options.face).turningPage(direction, element).face(true).setReverse(reverse),\n kendo.fx(options.back).turningPage(reverseDirection, element).setReverse(reverse)\n ];\n },\n\n prepare: function(start) {\n start[PERSPECTIVE] = DEFAULT_PERSPECTIVE;\n start.transformStyle = \"preserve-3d\";\n }\n });\n\n var RESTORE_OVERFLOW = !support.mobileOS.android;\n var IGNORE_TRANSITION_EVENT_SELECTOR = \".km-touch-scrollbar, .km-actionsheet-wrapper\";\n\n createEffect(\"replace\", {\n _before: $.noop,\n _after: $.noop,\n init: function(element, previous, transitionClass) {\n Effect.prototype.init.call(this, element);\n this._previous = $(previous);\n this._transitionClass = transitionClass;\n },\n\n duration: function() {\n throw new Error(\"The replace effect does not support duration setting; the effect duration may be customized through the transition class rule\");\n },\n\n beforeTransition: function(callback) {\n this._before = callback;\n return this;\n },\n\n afterTransition: function(callback) {\n this._after = callback;\n return this;\n },\n\n _both: function() {\n return $().add(this._element).add(this._previous);\n },\n\n _containerClass: function() {\n var direction = this._direction,\n containerClass = \"k-fx k-fx-start k-fx-\" + this._transitionClass;\n\n if (direction) {\n containerClass += \" k-fx-\" + direction;\n }\n\n if (this._reverse) {\n containerClass += \" k-fx-reverse\";\n }\n\n return containerClass;\n },\n\n complete: function(e) {\n if (!this.deferred || (e && $(e.target).is(IGNORE_TRANSITION_EVENT_SELECTOR))) {\n return;\n }\n\n var container = this.container;\n\n container\n .removeClass(\"k-fx-end\")\n .removeClass(this._containerClass())\n .off(transitions.event, this.completeProxy);\n\n this._previous.hide().removeClass(\"k-fx-current\");\n this.element.removeClass(\"k-fx-next\");\n\n if (RESTORE_OVERFLOW) {\n container.css(OVERFLOW, \"\");\n }\n\n if (!this.isAbsolute) {\n this._both().css(POSITION, \"\");\n }\n\n this.deferred.resolve();\n delete this.deferred;\n },\n\n run: function() {\n if (this._additionalEffects && this._additionalEffects[0]) {\n return this.compositeRun();\n }\n\n var that = this,\n element = that.element,\n previous = that._previous,\n container = element.parents().filter(previous.parents()).first(),\n both = that._both(),\n deferred = $.Deferred(),\n originalPosition = element.css(POSITION),\n originalOverflow;\n\n // edge case for grid/scheduler, where the previous is already destroyed.\n if (!container.length) {\n container = element.parent();\n }\n\n this.container = container;\n this.deferred = deferred;\n this.isAbsolute = originalPosition == \"absolute\";\n\n if (!this.isAbsolute) {\n both.css(POSITION, \"absolute\");\n }\n\n if (RESTORE_OVERFLOW) {\n originalOverflow = container.css(OVERFLOW);\n container.css(OVERFLOW, \"hidden\");\n }\n\n if (!transitions) {\n this.complete();\n } else {\n element.addClass(\"k-fx-hidden\");\n\n container.addClass(this._containerClass());\n\n this.completeProxy = this.complete.bind(this);\n container.on(transitions.event, this.completeProxy);\n\n kendo.animationFrame(function() {\n element.removeClass(\"k-fx-hidden\").addClass(\"k-fx-next\");\n previous.css(\"display\", \"\").addClass(\"k-fx-current\");\n that._before(previous, element);\n kendo.animationFrame(function() {\n container.removeClass(\"k-fx-start\").addClass(\"k-fx-end\");\n that._after(previous, element);\n });\n });\n }\n\n return deferred.promise();\n },\n\n stop: function() {\n this.complete();\n }\n });\n\n var Animation = kendo.Class.extend({\n init: function() {\n var that = this;\n that._tickProxy = that._tick.bind(that);\n that._started = false;\n },\n\n tick: $.noop,\n done: $.noop,\n onEnd: $.noop,\n onCancel: $.noop,\n\n start: function() {\n if (!this.enabled()) {\n return;\n }\n\n if (!this.done()) {\n this._started = true;\n kendo.animationFrame(this._tickProxy);\n } else {\n this.onEnd();\n }\n },\n\n enabled: function() {\n return true;\n },\n\n cancel: function() {\n this._started = false;\n this.onCancel();\n },\n\n _tick: function() {\n var that = this;\n if (!that._started) { return; }\n\n that.tick();\n\n if (!that.done()) {\n kendo.animationFrame(that._tickProxy);\n } else {\n that._started = false;\n that.onEnd();\n }\n }\n });\n\n var Transition = Animation.extend({\n init: function(options) {\n var that = this;\n extend(that, options);\n Animation.fn.init.call(that);\n },\n\n done: function() {\n return this.timePassed() >= this.duration;\n },\n\n timePassed: function() {\n return Math.min(this.duration, (new Date()) - this.startDate);\n },\n\n moveTo: function(options) {\n var that = this,\n movable = that.movable;\n\n that.initial = movable[that.axis];\n that.delta = options.location - that.initial;\n\n that.duration = typeof options.duration == \"number\" ? options.duration : 300;\n\n that.tick = that._easeProxy(options.ease);\n\n that.startDate = new Date();\n that.start();\n },\n\n _easeProxy: function(ease) {\n var 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\n extend(Transition, {\n easeOutExpo: function(t, b, c, d) {\n return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n },\n\n easeOutBack: function(t, b, c, d, s) {\n s = 1.70158;\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n }\n });\n\n fx.Animation = Animation;\n fx.Transition = Transition;\n fx.createEffect = createEffect;\n\n fx.box = function(element) {\n element = $(element);\n var result = element.offset();\n result.width = kendo._outerWidth(element);\n result.height = kendo._outerHeight(element);\n return result;\n };\n\n fx.transformOrigin = function(inner, outer) {\n var x = (inner.left - outer.left) * outer.width / (outer.width - inner.width),\n y = (inner.top - outer.top) * outer.height / (outer.height - inner.height);\n\n return {\n x: isNaN(x) ? 0 : x,\n y: isNaN(y) ? 0 : y\n };\n };\n\n fx.fillScale = function(inner, outer) {\n return Math.min(inner.width / outer.width, inner.height / outer.height);\n };\n\n fx.fitScale = function(inner, outer) {\n return Math.max(inner.width / outer.width, inner.height / outer.height);\n };\n })(window.kendo.jQuery);\n var kendo$W = kendo;\n\n var __meta__$V = {\n id: \"router\",\n name: \"Router\",\n category: \"framework\",\n description: \"The Router class is responsible for tracking the application state and navigating between the application states.\",\n depends: [ \"core\" ],\n hidden: false\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n CHANGE = \"change\",\n BACK = \"back\",\n SAME = \"same\",\n support = kendo.support,\n location = window.location,\n history = window.history,\n CHECK_URL_INTERVAL = 50,\n BROKEN_BACK_NAV = kendo.support.browser.msie,\n hashStrip = /^#*/,\n document = window.document;\n\n function absoluteURL(path, pathPrefix) {\n if (!pathPrefix) {\n return path;\n }\n\n if (path + \"/\" === pathPrefix) {\n path = pathPrefix;\n }\n\n var regEx = new RegExp(\"^\" + pathPrefix, \"i\");\n\n if (!regEx.test(path)) {\n path = pathPrefix + \"/\" + path;\n }\n\n return location.protocol + '//' + (location.host + \"/\" + path).replace(/\\/\\/+/g, '/');\n }\n\n function hashDelimiter(bang) {\n return bang ? \"#!\" : \"#\";\n }\n\n function locationHash(hashDelimiter) {\n var href = location.href;\n\n // ignore normal anchors if in hashbang mode - however, still return \"\" if no hash present\n if (hashDelimiter === \"#!\" && href.indexOf(\"#\") > -1 && href.indexOf(\"#!\") < 0) {\n return null;\n }\n\n return href.split(hashDelimiter)[1] || \"\";\n }\n\n function stripRoot(root, url) {\n if (url.indexOf(root) === 0) {\n return (url.substr(root.length)).replace(/\\/\\//g, '/');\n } else {\n return url;\n }\n }\n\n var HistoryAdapter = kendo.Class.extend({\n back: function() {\n if (BROKEN_BACK_NAV) {\n setTimeout(function() { history.back(); });\n } else {\n history.back();\n }\n },\n\n forward: function() {\n if (BROKEN_BACK_NAV) {\n setTimeout(function() { history.forward(); });\n } else {\n history.forward();\n }\n },\n\n length: function() {\n return history.length;\n },\n\n replaceLocation: function(url) {\n location.replace(url);\n }\n });\n\n var PushStateAdapter = HistoryAdapter.extend({\n init: function(root) {\n this.root = root;\n },\n\n navigate: function(to) {\n history.pushState({}, document.title, absoluteURL(to, this.root));\n },\n\n replace: function(to) {\n history.replaceState({}, document.title, absoluteURL(to, this.root));\n },\n\n normalize: function(url) {\n return stripRoot(this.root, url);\n },\n\n current: function() {\n var current = location.pathname;\n\n if (location.search) {\n current += location.search;\n }\n\n return stripRoot(this.root, current);\n },\n\n change: function(callback) {\n $(window).bind(\"popstate.kendo\", callback);\n },\n\n stop: function() {\n $(window).unbind(\"popstate.kendo\");\n },\n\n normalizeCurrent: function(options) {\n var fixedUrl,\n root = options.root,\n pathname = location.pathname,\n hash = locationHash(hashDelimiter(options.hashBang));\n\n if (root === pathname + \"/\") {\n fixedUrl = root;\n }\n\n if (root === pathname && hash) {\n fixedUrl = absoluteURL(hash.replace(hashStrip, ''), root);\n }\n\n if (fixedUrl) {\n history.pushState({}, document.title, fixedUrl);\n }\n }\n });\n\n function fixHash(url) {\n return url.replace(/^(#)?/, \"#\");\n }\n\n function fixBang(url) {\n return url.replace(/^(#(!)?)?/, \"#!\");\n }\n\n var HashAdapter = HistoryAdapter.extend({\n init: function(bang) {\n this._id = kendo.guid();\n this.prefix = hashDelimiter(bang);\n this.fix = bang ? fixBang : fixHash;\n },\n\n navigate: function(to) {\n location.hash = this.fix(to);\n },\n\n replace: function(to) {\n this.replaceLocation(this.fix(to));\n },\n\n normalize: function(url) {\n if (url.indexOf(this.prefix) < 0) {\n return url;\n } else {\n return url.split(this.prefix)[1];\n }\n },\n\n change: function(callback) {\n if (support.hashChange) {\n $(window).on(\"hashchange.\" + this._id, callback);\n } else {\n this._interval = setInterval(callback, CHECK_URL_INTERVAL);\n }\n },\n\n stop: function() {\n $(window).off(\"hashchange.\" + this._id);\n clearInterval(this._interval);\n },\n\n current: function() {\n return locationHash(this.prefix);\n },\n\n normalizeCurrent: function(options) {\n var pathname = location.pathname,\n root = options.root;\n\n if (options.pushState && root !== pathname) {\n this.replaceLocation(root + this.prefix + stripRoot(root, pathname));\n return true; // browser will reload at this point.\n }\n\n return false;\n }\n });\n\n var History = kendo.Observable.extend({\n start: function(options) {\n options = options || {};\n\n this.bind([CHANGE, BACK, SAME], options);\n\n if (this._started) {\n return;\n }\n\n this._started = true;\n\n options.root = options.root || \"/\";\n\n var adapter = this.createAdapter(options),\n current;\n\n // adapter may reload the document\n if (adapter.normalizeCurrent(options)) {\n return;\n }\n\n current = adapter.current();\n\n $.extend(this, {\n adapter: adapter,\n root: options.root,\n historyLength: adapter.length(),\n current: current,\n locations: [current]\n });\n\n adapter.change(this._checkUrl.bind(this));\n },\n\n createAdapter: function(options) {\n return support.pushState && options.pushState ? new PushStateAdapter(options.root) : new HashAdapter(options.hashBang);\n },\n\n stop: function() {\n if (!this._started) {\n return;\n }\n this.adapter.stop();\n this.unbind(CHANGE);\n this._started = false;\n },\n\n change: function(callback) {\n this.bind(CHANGE, callback);\n },\n\n replace: function(to, silent) {\n\n this._navigate(to, silent, function(adapter) {\n adapter.replace(to);\n this.locations[this.locations.length - 1] = this.current;\n });\n },\n\n navigate: function(to, silent) {\n if (to === \"#:back\") {\n this.backCalled = true;\n this.adapter.back();\n return;\n }\n\n this._navigate(to, silent, function(adapter) {\n adapter.navigate(to);\n this.locations.push(this.current);\n });\n },\n\n _navigate: function(to, silent, callback) {\n var adapter = this.adapter;\n\n to = adapter.normalize(to);\n\n if (this.current === to || this.current === decodeURIComponent(to)) {\n this.trigger(SAME);\n return;\n }\n\n if (!silent) {\n if (this.trigger(CHANGE, { url: to, decode: false })) {\n return;\n }\n }\n\n this.current = to;\n\n callback.call(this, adapter);\n\n this.historyLength = adapter.length();\n },\n\n _checkUrl: function() {\n var adapter = this.adapter,\n current = adapter.current(),\n newLength = adapter.length(),\n navigatingInExisting = this.historyLength === newLength,\n back = current === this.locations[this.locations.length - 2] && navigatingInExisting,\n backCalled = this.backCalled,\n prev = this.current;\n\n if (current === null || this.current === current || this.current === decodeURIComponent(current)) {\n return true;\n }\n\n this.historyLength = newLength;\n this.backCalled = false;\n\n this.current = current;\n\n if (back && this.trigger(\"back\", { url: prev, to: current })) {\n adapter.forward();\n this.current = prev;\n return;\n }\n\n if (this.trigger(CHANGE, { url: current, backButtonPressed: !backCalled })) {\n if (back) {\n adapter.forward();\n } else {\n adapter.back();\n this.historyLength --;\n }\n this.current = prev;\n return;\n }\n\n if (back) {\n this.locations.pop();\n } else {\n this.locations.push(current);\n }\n }\n });\n\n kendo.History = History;\n kendo.History.HistoryAdapter = HistoryAdapter;\n kendo.History.HashAdapter = HashAdapter;\n kendo.History.PushStateAdapter = PushStateAdapter;\n kendo.absoluteURL = absoluteURL;\n kendo.history = new History();\n })(window.kendo.jQuery);\n var kendo$V = kendo;\n\n (function() {\n var kendo = window.kendo,\n history = kendo.history,\n Observable = kendo.Observable,\n INIT = \"init\",\n ROUTE_MISSING = \"routeMissing\",\n CHANGE = \"change\",\n BACK = \"back\",\n SAME = \"same\",\n optionalParam = /\\((.*?)\\)/g,\n namedParam = /(\\(\\?)?:\\w+/g,\n splatParam = /\\*\\w+/g,\n escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n function namedParamReplace(match, optional) {\n return optional ? match : '([^\\/]+)';\n }\n\n function routeToRegExp(route, ignoreCase) {\n return new RegExp('^' + route\n .replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, namedParamReplace)\n .replace(splatParam, '(.*?)') + '$', ignoreCase ? \"i\" : \"\");\n }\n\n function stripUrl(url) {\n return url.replace(/(\\?.*)|(#.*)/g, \"\");\n }\n\n var Route = kendo.Class.extend({\n init: function(route, callback, ignoreCase) {\n if (!(route instanceof RegExp)) {\n route = routeToRegExp(route, ignoreCase);\n }\n\n this.route = route;\n this._callback = callback;\n },\n\n callback: function(url, back, decode) {\n var params,\n idx = 0,\n length,\n queryStringParams = kendo.parseQueryStringParams(url);\n queryStringParams._back = back;\n\n url = stripUrl(url);\n params = this.route.exec(url).slice(1);\n length = params.length;\n\n if (decode) {\n for (; idx < length; idx ++) {\n if (typeof params[idx] !== 'undefined') {\n params[idx] = decodeURIComponent(params[idx]);\n }\n }\n }\n\n params.push(queryStringParams);\n\n this._callback.apply(null, params);\n },\n\n worksWith: function(url, back, decode) {\n if (this.route.test(stripUrl(url))) {\n this.callback(url, back, decode);\n return true;\n } else {\n return false;\n }\n }\n });\n\n var Router = Observable.extend({\n init: function(options) {\n if (!options) {\n options = {};\n }\n\n Observable.fn.init.call(this);\n\n this.routes = [];\n this.pushState = options.pushState;\n this.hashBang = options.hashBang;\n this.root = options.root;\n this.ignoreCase = options.ignoreCase !== false;\n\n this.bind([INIT, ROUTE_MISSING, CHANGE, SAME, BACK], options);\n },\n\n destroy: function() {\n history.unbind(CHANGE, this._urlChangedProxy);\n history.unbind(SAME, this._sameProxy);\n history.unbind(BACK, this._backProxy);\n this.unbind();\n },\n\n start: function() {\n var that = this,\n sameProxy = function() { that._same(); },\n backProxy = function(e) { that._back(e); },\n urlChangedProxy = function(e) { that._urlChanged(e); };\n\n history.start({\n same: sameProxy,\n change: urlChangedProxy,\n back: backProxy,\n pushState: that.pushState,\n hashBang: that.hashBang,\n root: that.root\n });\n\n // eslint-disable-next-line no-undef\n var initEventObject = { url: history.current || \"/\", preventDefault: $.noop };\n\n if (!that.trigger(INIT, initEventObject)) {\n that._urlChanged(initEventObject);\n }\n\n this._urlChangedProxy = urlChangedProxy;\n this._backProxy = backProxy;\n },\n\n route: function(route, callback) {\n this.routes.push(new Route(route, callback, this.ignoreCase));\n },\n\n navigate: function(url, silent) {\n kendo.history.navigate(url, silent);\n },\n\n replace: function(url, silent) {\n kendo.history.replace(url, silent);\n },\n\n _back: function(e) {\n if (this.trigger(BACK, { url: e.url, to: e.to })) {\n e.preventDefault();\n }\n },\n\n _same: function() {\n this.trigger(SAME);\n },\n\n _urlChanged: function(e) {\n var url = e.url;\n var decode = !!e.decode;\n var back = e.backButtonPressed;\n\n if (!url) {\n url = \"/\";\n }\n\n if (this.trigger(CHANGE, { url: e.url, params: kendo.parseQueryStringParams(e.url), backButtonPressed: back })) {\n e.preventDefault();\n return;\n }\n\n var idx = 0,\n routes = this.routes,\n route,\n length = routes.length;\n\n for (; idx < length; idx ++) {\n route = routes[idx];\n\n if (route.worksWith(url, back, decode)) {\n return;\n }\n }\n\n if (this.trigger(ROUTE_MISSING, { url: url, params: kendo.parseQueryStringParams(url), backButtonPressed: back })) {\n e.preventDefault();\n }\n }\n });\n\n kendo.Router = Router;\n })();\n\n /*\n This code is copied/inspired by the internal @progress/kendo-data-query repo:\n https://github.com/telerik/kendo-data-query/tree/develop/src/filtering\n\n !!!\n 1. If updates are to be synced consider the accentFoldingFiltering,\n which at the moment is not present as a feature in the data-query-package.\n\n 2. Double-check available operators as well.\n\n 3. Make sure objs are strings -> i.e., replace (a || \"\") to (a + '')\n !!!\n\n In future, if we consider reusing the code directly we should revise the above omissions.\n */\n\n const 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 };\n\n const operatorsMap = {\n isnullorempty: (a) => kendo.isBlank(a) || a === '',\n isnotnullorempty: (a) => kendo.isPresent(a) && a !== '',\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) => kendo.isPresent(a),\n isnull: (a) => kendo.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 };\n\n const dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\n\n const convertValue = (value, ignoreCase, accentFoldingFiltering) => {\n if (value != null && kendo.isString(value)) {\n const date = dateRegExp.exec(value);\n if (date) {\n return new Date(+date[1]).getTime();\n } else if (ignoreCase) {\n return accentFoldingFiltering ? value.toLocaleLowerCase(accentFoldingFiltering) : value.toLowerCase();\n }\n } else if (value != null && kendo.isDate(value)) {\n return value.getTime();\n }\n return value;\n };\n\n const typedGetter = (prop, value, ignoreCase, accentFoldingFiltering) => {\n if (!kendo.isPresent(value)) {\n return prop;\n }\n\n let acc = prop;\n\n if (kendo.isString(value)) {\n const date = dateRegExp.exec(value);\n if (date) {\n value = new Date(+date[1]);\n } else {\n acc = a => {\n const x = prop(a);\n if (typeof x === 'string' && ignoreCase) {\n return accentFoldingFiltering ? x.toLocaleLowerCase(accentFoldingFiltering) : x.toLowerCase();\n } else {\n return kendo.isNumeric(x) ? x + \"\" : x;\n }\n };\n }\n }\n\n if (kendo.isDate(value)) {\n return a => {\n const x = acc(a);\n return kendo.isDate(x) ? x.getTime() : x;\n };\n }\n return acc;\n };\n\n const transformFilter = ({ field, ignoreCase, value, operator = 'eq', accentFoldingFiltering }) => {\n field = !kendo.isPresent(field) ? a => a : field;\n\n ignoreCase = kendo.isPresent(ignoreCase) ? ignoreCase : true;\n\n const itemProp = typedGetter(\n kendo.isFunction(field) ? field : kendo.getter(field, true),\n value,\n ignoreCase,\n accentFoldingFiltering\n );\n\n value = convertValue(value, ignoreCase, accentFoldingFiltering);\n\n const op = kendo.isFunction(operator) ? operator : operatorsMap[operator];\n\n return a => op(itemProp(a), value, ignoreCase);\n };\n\n const isCompositeFilterDescriptor = (source) => kendo.isPresent(source.filters);\n\n const transformCompositeFilter = (filter) => {\n const accentFoldingFiltering = filter.accentFoldingFiltering;\n const combiner = logic[filter.logic || 'and'];\n return filter.filters\n .filter(kendo.isPresent)\n .map(x => (isCompositeFilterDescriptor(x) ? transformCompositeFilter(extendAccentFolding(x, accentFoldingFiltering)) : transformFilter(extendAccentFolding(x, accentFoldingFiltering))))\n .reduce(combiner.concat, combiner.identity);\n };\n\n const extendAccentFolding = (filter, accentFoldingFiltering) => (kendo.isPresent(accentFoldingFiltering) ? Object.assign(filter, { accentFoldingFiltering }) : filter);\n\n const filterExprNoEval = function(expr) {\n return transformCompositeFilter(expr);\n };\n\n var __meta__$U = {\n id: \"data.odata\",\n name: \"OData\",\n category: \"framework\",\n depends: [ \"core\" ],\n hidden: true\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n extend = $.extend,\n NEWLINE = \"\\r\\n\",\n DOUBLELINE = \"\\r\\n\\r\\n\",\n isFunction = kendo.isFunction,\n odataFilters = {\n eq: \"eq\",\n neq: \"ne\",\n gt: \"gt\",\n gte: \"ge\",\n lt: \"lt\",\n lte: \"le\",\n contains: \"substringof\",\n doesnotcontain: \"substringof\",\n endswith: \"endswith\",\n startswith: \"startswith\",\n isnull: \"eq\",\n isnotnull: \"ne\",\n isnullorempty: \"eq\",\n isnotnullorempty: \"ne\",\n isempty: \"eq\",\n isnotempty: \"ne\"\n },\n odataFiltersVersionFour = extend({}, odataFilters, {\n contains: \"contains\"\n }),\n mappers = {\n pageSize: $.noop,\n page: $.noop,\n filter: function(params, filter, useVersionFour) {\n if (filter) {\n filter = toOdataFilter(filter, useVersionFour);\n if (filter) {\n params.$filter = filter;\n }\n }\n },\n sort: function(params, orderby) {\n var expr = $.map(orderby, function(value) {\n var order = value.field.replace(/\\./g, \"/\");\n\n if (value.dir === \"desc\") {\n order += \" desc\";\n }\n\n return order;\n }).join(\",\");\n\n if (expr) {\n params.$orderby = expr;\n }\n },\n skip: function(params, skip) {\n if (skip) {\n params.$skip = skip;\n }\n },\n take: function(params, take) {\n if (take) {\n params.$top = take;\n }\n }\n },\n defaultDataType = {\n read: {\n dataType: \"jsonp\"\n }\n };\n\n function toOdataFilter(filter, useOdataFour) {\n var result = [],\n logic = filter.logic || \"and\",\n idx,\n length,\n field,\n type,\n format,\n operator,\n value,\n ignoreCase,\n filters = filter.filters;\n\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n field = filter.field;\n value = filter.value;\n operator = filter.operator;\n\n if (filter.filters) {\n filter = toOdataFilter(filter, useOdataFour);\n } else {\n ignoreCase = filter.ignoreCase;\n field = field.replace(/\\./g, \"/\");\n filter = odataFilters[operator];\n if (useOdataFour) {\n filter = odataFiltersVersionFour[operator];\n }\n\n if (operator === \"isnullorempty\") {\n filter = kendo.format(\"{0} {1} null or {0} {1} ''\", field, filter);\n } else if (operator === \"isnotnullorempty\") {\n filter = kendo.format(\"{0} {1} null and {0} {1} ''\", field, filter);\n } else if (operator === \"isnull\" || operator === \"isnotnull\") {\n filter = kendo.format(\"{0} {1} null\", field, filter);\n } else if (operator === \"isempty\" || operator === \"isnotempty\") {\n filter = kendo.format(\"{0} {1} ''\", field, filter);\n } else if (filter && value !== undefined$1) {\n type = kendo.type(value);\n if (type === \"string\") {\n format = \"'{1}'\";\n value = value.replace(/'/g, \"''\");\n\n if (ignoreCase === true) {\n field = \"tolower(\" + field + \")\";\n }\n\n } else if (type === \"date\") {\n if (useOdataFour) {\n format = \"{1:yyyy-MM-ddTHH:mm:ss+00:00}\";\n value = kendo.timezone.apply(value, 'Etc/UTC');\n } else {\n format = \"datetime'{1:yyyy-MM-ddTHH:mm:ss}'\";\n }\n } else {\n format = \"{1}\";\n }\n\n if (filter.length > 3) {\n if (filter !== \"substringof\") {\n format = \"{0}({2},\" + format + \")\";\n } else {\n format = \"{0}(\" + format + \",{2})\";\n if (operator === \"doesnotcontain\") {\n if (useOdataFour) {\n format = \"{0}({2},'{1}') eq -1\";\n filter = \"indexof\";\n } else {\n format += \" eq false\";\n }\n }\n }\n } else {\n format = \"{2} {0} \" + format;\n }\n\n filter = kendo.format(format, filter, value, field);\n }\n }\n\n result.push(filter);\n }\n\n filter = result.join(\" \" + logic + \" \");\n\n if (result.length > 1) {\n filter = \"(\" + filter + \")\";\n }\n\n return filter;\n }\n\n function stripMetadata(obj) {\n for (var name in obj) {\n if (name.indexOf(\"@odata\") === 0) {\n delete obj[name];\n }\n }\n }\n\n function hex16() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substr(1);\n }\n\n function createBoundary(prefix) {\n return prefix + hex16() + '-' + hex16() + '-' + hex16();\n }\n\n function createDelimeter(boundary, close) {\n var result = NEWLINE + \"--\" + boundary;\n\n if (close) {\n result += \"--\";\n }\n\n return result;\n }\n\n function createCommand(transport, item, httpVerb, command) {\n var transportUrl = transport.options[command].url;\n var commandPrefix = kendo.format(\"{0} \", httpVerb);\n\n if (isFunction(transportUrl)) {\n return commandPrefix + transportUrl(item);\n } else {\n return commandPrefix + transportUrl;\n }\n }\n\n function getOperationHeader(changeset, changeId) {\n var header = \"\";\n\n header += createDelimeter(changeset, false);\n header += NEWLINE + 'Content-Type: application/http';\n header += NEWLINE + 'Content-Transfer-Encoding: binary';\n header += NEWLINE + 'Content-ID: ' + changeId;\n\n return header;\n }\n\n function getOperationContent(item) {\n var content = \"\";\n\n content += NEWLINE + \"Content-Type: application/json;odata=minimalmetadata\";\n content += NEWLINE + \"Prefer: return=representation\";\n content += DOUBLELINE + kendo.stringify(item);\n\n return content;\n }\n\n function getOperations(collection, changeset, changeId, command, transport, skipContent) {\n var requestBody = \"\";\n\n for (var i = 0; i < collection.length; i++) {\n requestBody += getOperationHeader(changeset, changeId);\n requestBody += DOUBLELINE + createCommand(transport, collection[i], transport.options[command].type, command) + ' HTTP/1.1';\n if (!skipContent) {\n requestBody += getOperationContent(collection[i]);\n }\n requestBody += NEWLINE;\n changeId++;\n }\n\n return requestBody;\n }\n\n function processCollection(colection, boundary, changeset, changeId, transport, command, skipContent) {\n var requestBody = \"\";\n\n requestBody += getBoundary(boundary, changeset);\n requestBody += getOperations(colection, changeset, changeId, command, transport, skipContent);\n requestBody += createDelimeter(changeset, true);\n requestBody += NEWLINE;\n\n return requestBody;\n }\n\n function getBoundary(boundary,changeset) {\n var requestBody = \"\";\n\n requestBody += \"--\" + boundary + NEWLINE;\n requestBody += \"Content-Type: multipart/mixed; boundary=\" + changeset + NEWLINE;\n\n return requestBody;\n }\n\n function createBatchRequest(transport, colections) {\n \t\tvar options = extend({}, transport.options.batch);\n var boundary = createBoundary(\"sf_batch_\");\n var requestBody = \"\";\n var changeId = 0;\n var batchURL = transport.options.batch.url;\n var changeset = createBoundary(\"sf_changeset_\");\n\n options.type = transport.options.batch.type;\n options.url = isFunction(batchURL) ? batchURL() : batchURL;\n \t\toptions.headers = extend(options.headers || {}, {\n \t\t\t\"Content-Type\": \"multipart/mixed; boundary=\" + boundary\n \t\t});\n\n if (colections.updated.length) {\n requestBody += processCollection(colections.updated, boundary, changeset, changeId, transport, \"update\", false);\n changeId += colections.updated.length;\n changeset = createBoundary(\"sf_changeset_\");\n }\n\n if (colections.destroyed.length) {\n requestBody += processCollection(colections.destroyed, boundary, changeset, changeId, transport, \"destroy\", true);\n changeId += colections.destroyed.length;\n changeset = createBoundary(\"sf_changeset_\");\n }\n\n if (colections.created.length) {\n requestBody += processCollection(colections.created, boundary, changeset, changeId, transport, \"create\", false);\n }\n\n requestBody += createDelimeter(boundary, true);\n\n options.data = requestBody;\n\n return options;\n }\n\n function parseBatchResponse(responseText) {\n var responseMarkers = responseText.match(/--changesetresponse_[a-z0-9-]+$/gm);\n var markerIndex = 0;\n var collections = [];\n var changeBody;\n var status;\n var code;\n var marker;\n var jsonModel;\n\n collections.push({ models: [], passed: true });\n\n for (var i = 0; i < responseMarkers.length; i++) {\n marker = responseMarkers[i];\n if (marker.lastIndexOf('--', marker.length - 1)) {\n if (i < responseMarkers.length - 1) {\n collections.push({ models: [], passed: true });\n }\n continue;\n }\n\n if (!markerIndex) {\n markerIndex = responseText.indexOf(marker);\n } else {\n markerIndex = responseText.indexOf(marker, markerIndex + marker.length);\n }\n\n changeBody = responseText.substring(markerIndex, responseText.indexOf(\"--\", markerIndex + 1));\n status = changeBody.match(/^HTTP\\/1\\.\\d (\\d{3}) (.*)$/gm).pop();\n code = kendo.parseFloat(status.match(/\\d{3}/g).pop());\n\n if (code >= 200 && code <= 299) {\n jsonModel = changeBody.match(/\\{.*\\}/gm);\n if (jsonModel) {\n collections[collections.length - 1].models.push(JSON.parse(jsonModel[0]));\n }\n } else {\n collections[collections.length - 1].passed = false;\n }\n\n }\n\n return collections;\n }\n\n extend(true, kendo.data, {\n schemas: {\n odata: {\n type: \"json\",\n data: function(data) {\n return data.d.results || [data.d];\n },\n total: \"d.__count\"\n }\n },\n transports: {\n odata: {\n read: {\n cache: true, // to prevent jQuery from adding cache buster\n dataType: \"jsonp\",\n jsonp: \"$callback\"\n },\n update: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json\", // to inform the server the the request body is JSON encoded\n type: \"PUT\" // can be PUT or MERGE\n },\n create: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json\",\n type: \"POST\" // must be POST to create new entity\n },\n destroy: {\n cache: true,\n dataType: \"json\",\n type: \"DELETE\"\n },\n parameterMap: function(options, type, useVersionFour) {\n var params,\n value,\n option,\n dataType;\n\n options = options || {};\n type = type || \"read\";\n dataType = (this.options || defaultDataType)[type];\n dataType = dataType ? dataType.dataType : \"json\";\n\n if (type === \"read\") {\n params = {\n $inlinecount: \"allpages\"\n };\n\n if (dataType != \"json\") {\n params.$format = \"json\";\n }\n\n for (option in options) {\n if (mappers[option]) {\n mappers[option](params, options[option], useVersionFour);\n } else {\n params[option] = options[option];\n }\n }\n } else {\n if (dataType !== \"json\") {\n throw new Error(\"Only json dataType can be used for \" + type + \" operation.\");\n }\n\n if (type !== \"destroy\") {\n for (option in options) {\n value = options[option];\n if (typeof value === \"number\") {\n options[option] = value + \"\";\n }\n }\n\n params = kendo.stringify(options);\n }\n }\n\n return params;\n }\n }\n }\n });\n\n extend(true, kendo.data, {\n schemas: {\n \"odata-v4\": {\n type: \"json\",\n data: function(data) {\n if (Array.isArray(data)) {\n for (var i = 0; i < data.length; i++) {\n stripMetadata(data[i]);\n }\n return data;\n } else {\n data = $.extend({}, data);\n stripMetadata(data);\n\n if (data.value) {\n return data.value;\n }\n return [data];\n }\n },\n total: function(data) {\n return data[\"@odata.count\"];\n }\n }\n },\n transports: {\n \"odata-v4\": {\n batch: {\n type: \"POST\"\n },\n read: {\n cache: true, // to prevent jQuery from adding cache buster\n dataType: \"json\"\n },\n update: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json;IEEE754Compatible=true\", // to inform the server the the request body is JSON encoded\n type: \"PUT\" // can be PUT or MERGE\n },\n create: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json;IEEE754Compatible=true\",\n type: \"POST\" // must be POST to create new entity\n },\n destroy: {\n cache: true,\n dataType: \"json\",\n type: \"DELETE\"\n },\n parameterMap: function(options, type) {\n var result = kendo.data.transports.odata.parameterMap(options, type, true);\n if (type == \"read\") {\n result.$count = true;\n delete result.$inlinecount;\n }\n\n \t\t\t\t\tif (result && result.$filter) {\n \t\t\t\t\t\t// Remove the single quotation marks around the GUID (OData v4).\n \t\t\t\t\t\tresult.$filter = result.$filter.replace(/('[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')/ig, function(x) {\n \t\t\t\t\t\t\treturn x.substring(1, x.length - 1);\n \t\t\t\t\t\t});\n \t\t\t\t\t}\n\n return result;\n },\n submit: function(e) {\n var that = this;\n var options = createBatchRequest(that, e.data);\n var collections = e.data;\n\n if (!collections.updated.length && !collections.destroyed.length && !collections.created.length) {\n return;\n }\n\n $.ajax(extend(true, {}, {\n success: function(response) {\n var responses = parseBatchResponse(response);\n var index = 0;\n var current;\n\n if (collections.updated.length) {\n current = responses[index];\n if (current.passed) {\n // Pass either the obtained models or an empty array if only status codes are returned.\n e.success(current.models.length ? current.models : [], \"update\");\n }\n index++;\n }\n if (collections.destroyed.length) {\n current = responses[index];\n if (current.passed) {\n // For delete operations OData returns only status codes.\n // Passing empty array to datasource will force it to correctly remove the deleted items from the pristine collection.\n e.success([], \"destroy\");\n }\n index++;\n }\n if (collections.created.length) {\n current = responses[index];\n if (current.passed) {\n e.success(current.models, \"create\");\n }\n }\n },\n error: function(response, status, error) {\n e.error(response, status, error);\n }\n }, options));\n }\n }\n }\n });\n\n })(window.kendo.jQuery);\n var kendo$U = kendo;\n\n var __meta__$T = {\n id: \"data.xml\",\n name: \"XML\",\n category: \"framework\",\n depends: [ \"core\" ],\n hidden: true\n };\n\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n isArray = Array.isArray,\n isPlainObject = $.isPlainObject,\n map = $.map,\n each = $.each,\n extend = $.extend,\n getter = kendo.getter,\n Class = kendo.Class;\n\n var XmlDataReader = Class.extend({\n init: function(options) {\n var that = this,\n total = options.total,\n model = options.model,\n parse = options.parse,\n errors = options.errors,\n serialize = options.serialize,\n data = options.data;\n\n if (model) {\n if (isPlainObject(model)) {\n var base = options.modelBase || kendo.data.Model;\n\n if (model.fields) {\n each(model.fields, function(field, value) {\n if (isPlainObject(value) && value.field) {\n if (!kendo.isFunction(value.field)) {\n value = extend(value, { field: that.getter(value.field) });\n }\n } else {\n value = { field: that.getter(value) };\n }\n model.fields[field] = value;\n });\n }\n\n var id = model.id;\n if (id) {\n var idField = {};\n\n idField[that.xpathToMember(id, true)] = { field: that.getter(id) };\n model.fields = extend(idField, model.fields);\n model.id = that.xpathToMember(id);\n }\n model = base.define(model);\n }\n\n that.model = model;\n }\n\n if (total) {\n if (typeof total == \"string\") {\n total = that.getter(total);\n that.total = function(data) {\n return parseInt(total(data), 10);\n };\n } else if (typeof total == \"function\") {\n that.total = total;\n }\n }\n\n if (errors) {\n if (typeof errors == \"string\") {\n errors = that.getter(errors);\n that.errors = function(data) {\n return errors(data) || null;\n };\n } else if (typeof errors == \"function\") {\n that.errors = errors;\n }\n }\n\n if (data) {\n if (typeof data == \"string\") {\n data = that.xpathToMember(data);\n that.data = function(value) {\n var result = that.evaluate(value, data),\n modelInstance;\n\n result = isArray(result) ? result : [result];\n\n if (that.model && model.fields) {\n modelInstance = new that.model();\n\n return map(result, function(value) {\n if (value) {\n var record = {}, field;\n\n for (field in model.fields) {\n record[field] = modelInstance._parse(field, model.fields[field].field(value));\n }\n\n return record;\n }\n });\n }\n\n return result;\n };\n } else if (typeof data == \"function\") {\n that.data = data;\n }\n }\n\n if (typeof parse == \"function\") {\n var xmlParse = that.parse;\n\n that.parse = function(data) {\n var xml = parse.call(that, data);\n return xmlParse.call(that, xml);\n };\n }\n\n if (typeof serialize == \"function\") {\n that.serialize = serialize;\n }\n },\n total: function(result) {\n return this.data(result).length;\n },\n errors: function(data) {\n return data ? data.errors : null;\n },\n serialize: function(data) {\n return data;\n },\n parseDOM: function(element) {\n var result = {},\n parsedNode,\n node,\n nodeType,\n nodeName,\n member,\n attribute,\n attributes = element.attributes,\n attributeCount = attributes.length,\n idx;\n\n for (idx = 0; idx < attributeCount; idx++) {\n attribute = attributes[idx];\n result[\"@\" + attribute.nodeName] = attribute.nodeValue;\n }\n\n for (node = element.firstChild; node; node = node.nextSibling) {\n nodeType = node.nodeType;\n\n if (nodeType === 3 || nodeType === 4) {\n // text nodes or CDATA are stored as #text field\n result[\"#text\"] = node.nodeValue;\n } else if (nodeType === 1) {\n // elements are stored as fields\n parsedNode = this.parseDOM(node);\n\n nodeName = node.nodeName;\n\n member = result[nodeName];\n\n if (isArray(member)) {\n // elements of same nodeName are stored as array\n member.push(parsedNode);\n } else if (member !== undefined$1) {\n member = [member, parsedNode];\n } else {\n member = parsedNode;\n }\n\n result[nodeName] = member;\n }\n }\n return result;\n },\n\n evaluate: function(value, expression) {\n var members = expression.split(\".\"),\n member,\n result,\n length,\n intermediateResult,\n idx;\n\n while (member = members.shift()) {\n value = value[member];\n\n if (isArray(value)) {\n result = [];\n expression = members.join(\".\");\n\n for (idx = 0, length = value.length; idx < length; idx++) {\n intermediateResult = this.evaluate(value[idx], expression);\n\n intermediateResult = isArray(intermediateResult) ? intermediateResult : [intermediateResult];\n\n result.push.apply(result, intermediateResult);\n }\n\n return result;\n }\n }\n\n return value;\n },\n\n parse: function(xml) {\n var documentElement,\n tree,\n result = {};\n\n documentElement = xml.documentElement || $.parseXML(xml).documentElement;\n\n tree = this.parseDOM(documentElement);\n\n result[documentElement.nodeName] = tree;\n\n return result;\n },\n\n xpathToMember: function(member, raw) {\n if (!member) {\n return \"\";\n }\n\n member = member.replace(/^\\//, \"\") // remove the first \"/\"\n .replace(/\\//g, \".\"); // replace all \"/\" with \".\"\n\n if (member.indexOf(\"@\") >= 0) {\n // replace @attribute with '[\"@attribute\"]'\n return member.replace(/\\.?(@.*)/, raw ? '$1' : '[\"$1\"]');\n }\n\n if (member.indexOf(\"text()\") >= 0) {\n // replace \".text()\" with '[\"#text\"]'\n return member.replace(/(\\.?text\\(\\))/, raw ? '#text' : '[\"#text\"]');\n }\n\n return member;\n },\n getter: function(member) {\n return getter(this.xpathToMember(member), true);\n }\n });\n\n $.extend(true, kendo.data, {\n XmlDataReader: XmlDataReader,\n readers: {\n xml: XmlDataReader\n }\n });\n })(window.kendo.jQuery);\n var kendo$T = kendo;\n\n var __meta__$S = {\n id: \"data\",\n name: \"Data source\",\n category: \"framework\",\n description: \"Powerful component for using local and remote data.Fully supports CRUD, Sorting, Paging, Filtering, Grouping, and Aggregates.\",\n depends: [ \"core\" ],\n features: [ {\n id: \"data-odata\",\n name: \"OData\",\n description: \"Support for accessing Open Data Protocol (OData) services.\",\n depends: [ \"data.odata\" ]\n }, {\n id: \"data-signalr\",\n name: \"SignalR\",\n description: \"Support for binding to SignalR hubs.\",\n depends: [ \"data.signalr\" ]\n }, {\n id: \"data-XML\",\n name: \"XML\",\n description: \"Support for binding to XML.\",\n depends: [ \"data.xml\" ]\n }]\n };\n\n\n (function($, undefined$1) {\n var extend = $.extend,\n isPlainObject = $.isPlainObject,\n isEmptyObject = $.isEmptyObject,\n isArray = Array.isArray,\n grep = $.grep,\n ajax = $.ajax,\n map,\n each = $.each,\n noop = $.noop,\n kendo = window.kendo,\n isFunction = kendo.isFunction,\n Observable = kendo.Observable,\n Class = kendo.Class,\n STRING = \"string\",\n FUNCTION = \"function\",\n ASCENDING = \"asc\",\n CREATE = \"create\",\n READ = \"read\",\n UPDATE = \"update\",\n DESTROY = \"destroy\",\n CHANGE = \"change\",\n SYNC = \"sync\",\n GET = \"get\",\n ERROR = \"error\",\n REQUESTSTART = \"requestStart\",\n PROGRESS = \"progress\",\n REQUESTEND = \"requestEnd\",\n ITEMSLOADED = \"itemsLoaded\",\n ITEMLOAD = \"itemLoad\",\n crud = [CREATE, READ, UPDATE, DESTROY],\n identity = function(o) { return o; },\n getter = kendo.getter,\n stringify = kendo.stringify,\n math = Math,\n push = [].push,\n join = [].join,\n pop = [].pop,\n splice = [].splice,\n shift = [].shift,\n slice = [].slice,\n unshift = [].unshift,\n toString = {}.toString,\n stableSort = kendo.support.stableSort,\n dateRegExp = /^\\/Date\\((.*?)\\)\\/$/,\n objectKeys = [];\n\n var ObservableArray = Observable.extend({\n init: function(array, type) {\n var that = this;\n\n that.type = type || ObservableObject;\n\n Observable.fn.init.call(that);\n\n that.length = array.length;\n\n that.wrapAll(array, that);\n that._loadPromises = [];\n that._loadedNodes = [];\n },\n\n at: function(index) {\n return this[index];\n },\n\n toJSON: function(serializeFunctions) {\n var idx, length = this.length, value, json = new Array(length);\n\n for (idx = 0; idx < length; idx++) {\n value = this[idx];\n\n if (value instanceof ObservableObject) {\n value = value.toJSON(serializeFunctions);\n }\n\n json[idx] = value;\n }\n\n return json;\n },\n\n parent: noop,\n\n wrapAll: function(source, target) {\n var that = this,\n idx,\n length,\n parent = function() {\n return that;\n };\n\n target = target || [];\n\n for (idx = 0, length = source.length; idx < length; idx++) {\n target[idx] = that.wrap(source[idx], parent);\n }\n\n return target;\n },\n\n wrap: function(object, parent) {\n var that = this,\n observable;\n\n if (object !== null && toString.call(object) === \"[object Object]\") {\n observable = object instanceof that.type || object instanceof Model;\n\n if (!observable) {\n object = object instanceof ObservableObject ? object.toJSON() : object;\n object = new that.type(object);\n }\n\n object.parent = parent;\n\n object.bind(CHANGE, function(e) {\n var isGroup = object.hasOwnProperty(\"hasSubgroups\");\n that.trigger(CHANGE, {\n field: e.field,\n node: e.node,\n index: e.index,\n items: e.items || [this],\n action: e.node || isGroup ? (e.action || \"itemloaded\") : \"itemchange\"\n });\n });\n\n object.bind(ITEMLOAD, function(e) {\n that._loadPromises.push(e.promise);\n that._loading = true;\n\n e.promise.done(function() {\n that._loadedNodes.push(e.node);\n var index = that._loadPromises.indexOf(e.promise);\n that._loadPromises.splice(index, 1);\n\n if (!that._loadPromises.length) {\n that._loading = false;\n that.trigger(ITEMSLOADED, { collection: that, nodes: that._loadedNodes });\n that._loadedNodes = [];\n }\n });\n });\n }\n\n return object;\n },\n\n loading: function() {\n return this._loading;\n },\n\n push: function() {\n var index = this.length,\n items = this.wrapAll(arguments),\n result;\n\n result = push.apply(this, items);\n\n if (!this.omitChangeEvent) {\n this.trigger(CHANGE, {\n action: \"add\",\n index: index,\n items: items\n });\n }\n\n return result;\n },\n\n slice: slice,\n\n sort: [].sort,\n\n join: join,\n\n pop: function() {\n var length = this.length, result = pop.apply(this);\n\n if (length) {\n this.trigger(CHANGE, {\n action: \"remove\",\n index: length - 1,\n items: [result]\n });\n }\n\n return result;\n },\n\n splice: function(index, howMany, item) {\n var items = this.wrapAll(slice.call(arguments, 2)),\n result, i, len;\n\n result = splice.apply(this, [index, howMany].concat(items));\n\n if (result.length) {\n if (!this.omitChangeEvent) {\n this.trigger(CHANGE, {\n action: \"remove\",\n index: index,\n items: this.omitCache && this.omitCache.length ? result.concat(this.omitCache) : result\n });\n this.omitCache = [];\n }\n\n for (i = 0, len = result.length; i < len; i++) {\n if (result[i] && result[i].children) {\n result[i].unbind(CHANGE);\n }\n }\n }\n\n if (item) {\n if (!this.omitChangeEvent) {\n this.trigger(CHANGE, {\n action: \"add\",\n index: index,\n items: items\n });\n }\n }\n return result;\n },\n\n shift: function() {\n var length = this.length, result = shift.apply(this);\n\n if (length) {\n this.trigger(CHANGE, {\n action: \"remove\",\n index: 0,\n items: [result]\n });\n }\n\n return result;\n },\n\n unshift: function() {\n var items = this.wrapAll(arguments),\n result;\n\n result = unshift.apply(this, items);\n\n this.trigger(CHANGE, {\n action: \"add\",\n index: 0,\n items: items\n });\n\n return result;\n },\n\n indexOf: function(item) {\n var that = this,\n idx,\n length;\n\n for (idx = 0, length = that.length; idx < length; idx++) {\n if (that[idx] === item) {\n return idx;\n }\n }\n return -1;\n },\n\n forEach: function(callback, thisArg) {\n var idx = 0;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n callback.call(context, this[idx], idx, this);\n }\n },\n\n map: function(callback, thisArg) {\n var idx = 0;\n var result = [];\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n result[idx] = callback.call(context, this[idx], idx, this);\n }\n\n return result;\n },\n\n reduce: function(callback) {\n var idx = 0,\n result,\n length = this.length;\n\n if (arguments.length == 2) {\n result = arguments[1];\n } else if (idx < length) {\n result = this[idx++];\n }\n\n for (; idx < length; idx++) {\n result = callback(result, this[idx], idx, this);\n }\n\n return result;\n },\n\n reduceRight: function(callback) {\n var idx = this.length - 1,\n result;\n\n if (arguments.length == 2) {\n result = arguments[1];\n } else if (idx > 0) {\n result = this[idx--];\n }\n\n for (; idx >= 0; idx--) {\n result = callback(result, this[idx], idx, this);\n }\n\n return result;\n },\n\n filter: function(callback, thisArg) {\n var idx = 0;\n var result = [];\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback.call(context, item, idx, this)) {\n result[result.length] = item;\n }\n }\n\n return result;\n },\n\n find: function(callback, thisArg) {\n var idx = 0;\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback.call(context, item, idx, this)) {\n return item;\n }\n }\n },\n\n every: function(callback, thisArg) {\n var idx = 0;\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (!callback.call(context, item, idx, this)) {\n return false;\n }\n }\n\n return true;\n },\n\n some: function(callback, thisArg) {\n var idx = 0;\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback.call(context, item, idx, this)) {\n return true;\n }\n }\n\n return false;\n },\n\n // non-standard collection methods\n remove: function(item) {\n var idx = this.indexOf(item);\n\n if (idx !== -1) {\n this.splice(idx, 1);\n }\n },\n\n empty: function() {\n this.splice(0, this.length);\n }\n });\n\n // Polyfill for Symbol.iterator\n if (typeof Symbol !== \"undefined\" && Symbol.iterator && !ObservableArray.prototype[Symbol.iterator]) {\n ObservableArray.prototype[Symbol.iterator] = [][Symbol.iterator];\n }\n\n var LazyObservableArray = ObservableArray.extend({\n init: function(data, type, events) {\n var parentFn = function() { return this; };\n\n Observable.fn.init.call(this);\n\n this.type = type || ObservableObject;\n\n if (events) {\n this._events = events;\n }\n\n for (var idx = 0; idx < data.length; idx++) {\n this[idx] = data[idx];\n }\n\n this.length = idx;\n this._parent = parentFn.bind(this);\n this._loadPromises = [];\n this._loadedNodes = [];\n },\n at: function(index) {\n var item = this[index];\n\n if (!(item instanceof this.type)) {\n item = this[index] = this.wrap(item, this._parent);\n } else {\n item.parent = this._parent;\n }\n\n return item;\n }\n });\n\n function eventHandler(context, type, field, prefix) {\n return function(e) {\n var event = {}, key;\n\n for (key in e) {\n event[key] = e[key];\n }\n\n if (prefix) {\n event.field = field + \".\" + e.field;\n } else {\n event.field = field;\n }\n\n if (type == CHANGE && context._notifyChange) {\n context._notifyChange(event);\n }\n\n context.trigger(type, event);\n };\n }\n\n function isPrimitiveType(value) {\n return (typeof value === \"object\" && Object.getPrototypeOf(value) === Object.getPrototypeOf({}))\n || Object.getPrototypeOf(value) === Object.getPrototypeOf(new Date())\n || typeof value !== \"object\";\n }\n\n function ownKeys(value, ignoreObjectKeys) {\n var props = [];\n var protoKeys = [];\n var keys, filteredObjectKeys;\n\n value = value || {};\n\n if (!isPrimitiveType(value)) {\n protoKeys = Object.getOwnPropertyNames(Object.getPrototypeOf(value)).filter(f => f.indexOf(\"__\") !== 0);\n }\n\n keys = Object.getOwnPropertyNames(value).concat(protoKeys);\n\n filteredObjectKeys = objectKeys.filter(function(key) {\n return keys.indexOf(key) < 0;\n });\n\n while (value) {\n Object.getOwnPropertyNames(value).forEach(function(prop) {\n if (props.indexOf(prop) === -1 && (!ignoreObjectKeys || filteredObjectKeys.indexOf(prop) < 0)) {\n props.push(prop);\n }\n });\n value = Object.getPrototypeOf(value);\n }\n\n return props;\n }\n\n objectKeys = ownKeys({}, false);\n\n var ObservableObject = Observable.extend({\n init: function(value) {\n var that = this,\n member,\n keys = ownKeys(value, true),\n parent = function() {\n return that;\n };\n\n Observable.fn.init.call(this);\n\n this._handlers = {};\n\n keys.forEach(function(field) {\n member = value[field];\n\n if (typeof member === \"object\" && member && !member.getTime && field.charAt(0) != \"_\") {\n member = that.wrap(member, field, parent);\n }\n\n that[field] = member;\n });\n\n that.uid = kendo.guid();\n },\n\n shouldSerialize: function(field, serializeFunctions) {\n return this.hasOwnProperty(field) && field !== \"_handlers\" && field !== \"_events\" && ((serializeFunctions && serializeFunctions[field]) || typeof this[field] !== FUNCTION) && field !== \"uid\";\n },\n\n forEach: function(f) {\n for (var i in this) {\n if (this.shouldSerialize(i)) {\n f(this[i], i);\n }\n }\n },\n\n toJSON: function(serializeFunctions) {\n var result = {}, value, field;\n\n for (field in this) {\n if (this.shouldSerialize(field, serializeFunctions)) {\n value = this[field];\n\n if (value instanceof ObservableObject || value instanceof ObservableArray) {\n value = value.toJSON(serializeFunctions);\n }\n\n result[field] = value;\n }\n }\n\n return result;\n },\n\n get: function(field) {\n var that = this, result;\n\n that.trigger(GET, { field: field });\n\n if (field === \"this\") {\n result = that;\n } else {\n result = kendo.getter(field, true)(that);\n }\n\n return result;\n },\n\n _set: function(field, value) {\n var that = this;\n var composite = field.indexOf(\".\") >= 0;\n\n if (composite) {\n var paths = field.split(\".\"),\n path = \"\";\n\n while (paths.length > 1) {\n path += paths.shift();\n var obj = kendo.getter(path, true)(that);\n if (obj instanceof ObservableObject) {\n obj.set(paths.join(\".\"), value);\n return composite;\n }\n path += \".\";\n }\n }\n\n kendo.setter(field)(that, value);\n\n return composite;\n },\n\n set: function(field, value) {\n var that = this,\n isSetPrevented = false,\n composite = field.indexOf(\".\") >= 0,\n current = kendo.getter(field, true)(that);\n\n if (current !== value) {\n if (current instanceof Observable && this._handlers[field]) {\n if (this._handlers[field].get) {\n current.unbind(GET, this._handlers[field].get);\n }\n current.unbind(CHANGE, this._handlers[field].change);\n }\n\n isSetPrevented = that.trigger(\"set\", { field: field, value: value });\n\n if (!isSetPrevented) {\n if (!composite) {\n value = that.wrap(value, field, function() { return that; });\n }\n if ((!that._set(field, value) || field.indexOf(\"(\") >= 0 || field.indexOf(\"[\") >= 0)) {\n that.trigger(CHANGE, { field: field });\n }\n }\n }\n\n return isSetPrevented;\n },\n\n parent: noop,\n\n wrap: function(object, field, parent) {\n var that = this;\n var get;\n var change;\n var type = toString.call(object);\n\n if (object != null && (type === \"[object Object]\" || type === \"[object Array]\")) {\n var isObservableArray = object instanceof ObservableArray;\n var isDataSource = object instanceof DataSource;\n\n if (type === \"[object Object]\" && !isDataSource && !isObservableArray) {\n if (!(object instanceof ObservableObject)) {\n object = new ObservableObject(object);\n }\n\n get = eventHandler(that, GET, field, true);\n object.bind(GET, get);\n change = eventHandler(that, CHANGE, field, true);\n object.bind(CHANGE, change);\n\n that._handlers[field] = { get: get, change: change };\n } else if (type === \"[object Array]\" || isObservableArray || isDataSource) {\n if (!isObservableArray && !isDataSource) {\n object = new ObservableArray(object);\n }\n\n change = eventHandler(that, CHANGE, field, false);\n\n object.bind(CHANGE, change);\n\n that._handlers[field] = { change: change };\n }\n\n object.parent = parent;\n }\n\n return object;\n }\n });\n\n function equal(x, y) {\n if (x === y) {\n return true;\n }\n\n var xtype = kendo.type(x), ytype = kendo.type(y), field;\n\n if (xtype !== ytype) {\n return false;\n }\n\n if (xtype === \"date\") {\n return x.getTime() === y.getTime();\n }\n\n if (xtype !== \"object\" && xtype !== \"array\") {\n return false;\n }\n\n for (field in x) {\n if (!equal(x[field], y[field])) {\n return false;\n }\n }\n\n return true;\n }\n\n var parsers = {\n \"number\": function(value) {\n if (typeof value === STRING && value.toLowerCase() === \"null\") {\n return null;\n }\n return kendo.parseFloat(value);\n },\n\n \"date\": function(value) {\n if (typeof value === STRING && value.toLowerCase() === \"null\") {\n return null;\n }\n return kendo.parseDate(value);\n },\n\n \"boolean\": function(value) {\n if (typeof value === STRING) {\n if (value.toLowerCase() === \"null\") {\n return null;\n } else {\n return value.toLowerCase() === \"true\";\n }\n }\n return value != null ? !!value : value;\n },\n\n \"string\": function(value) {\n if (typeof value === STRING && value.toLowerCase() === \"null\") {\n return null;\n }\n return value != null ? (value + \"\") : value;\n },\n\n \"default\": function(value) {\n return value;\n }\n };\n\n var defaultValues = {\n \"string\": \"\",\n \"number\": 0,\n \"date\": new Date(),\n \"boolean\": false,\n \"default\": \"\"\n };\n\n function getFieldByName(obj, name) {\n var field,\n fieldName;\n\n for (fieldName in obj) {\n field = obj[fieldName];\n if (isPlainObject(field) && field.field && field.field === name) {\n return field;\n } else if (field === name) {\n return field;\n }\n }\n return null;\n }\n\n var Model = ObservableObject.extend({\n init: function(data) {\n var that = this;\n\n if (!data || $.isEmptyObject(data)) {\n data = $.extend({}, that.defaults, data);\n\n if (that._initializers) {\n for (var idx = 0; idx < that._initializers.length; idx++) {\n var name = that._initializers[idx];\n data[name] = that.defaults[name]();\n }\n }\n }\n\n ObservableObject.fn.init.call(that, data);\n\n that.dirty = false;\n that.dirtyFields = {};\n\n if (that.idField) {\n that.id = that.get(that.idField);\n\n if (that.id === undefined$1) {\n that.id = that._defaultId;\n }\n }\n },\n\n shouldSerialize: function(field) {\n return ObservableObject.fn.shouldSerialize.call(this, field) &&\n field !== \"uid\" && !(this.idField !== \"id\" && field === \"id\") &&\n field !== \"dirty\" && field !== \"dirtyFields\" && field !== \"_accessors\";\n },\n\n _parse: function(field, value) {\n var that = this,\n fieldName = field,\n fields = (that.fields || {}),\n parse;\n\n field = fields[field];\n if (!field) {\n field = getFieldByName(fields, fieldName);\n }\n if (field) {\n parse = field.parse;\n if (!parse && field.type) {\n parse = parsers[field.type.toLowerCase()];\n }\n }\n\n return parse ? parse(value) : value;\n },\n\n _notifyChange: function(e) {\n var action = e.action;\n\n if (action == \"add\" || action == \"remove\") {\n this.dirty = true;\n this.dirtyFields[e.field] = true;\n }\n },\n\n editable: function(field) {\n field = (this.fields || {})[field];\n return field ? field.editable !== false : true;\n },\n\n set: function(field, value) {\n var that = this;\n var dirty = that.dirty;\n\n if (that.editable(field)) {\n value = that._parse(field, value);\n\n if (!equal(value, that.get(field))) {\n that.dirty = true;\n that.dirtyFields[field] = true;\n\n if (ObservableObject.fn.set.call(that, field, value) && !dirty) {\n that.dirty = dirty;\n\n if (!that.dirty) {\n that.dirtyFields[field] = false;\n }\n }\n } else {\n that.trigger(\"equalSet\", { field: field, value: value });\n }\n }\n },\n\n accept: function(data) {\n var that = this,\n parent = function() { return that; },\n field;\n\n for (field in data) {\n var value = data[field];\n\n if (field.charAt(0) != \"_\") {\n value = that.wrap(data[field], field, parent);\n }\n\n that._set(field, value);\n }\n\n if (that.idField) {\n that.id = that.get(that.idField);\n }\n\n that.dirty = false;\n that.dirtyFields = {};\n },\n\n isNew: function() {\n return this.id === this._defaultId;\n }\n });\n\n Model.define = function(base, options) {\n if (options === undefined$1) {\n options = base;\n base = Model;\n }\n\n var model,\n proto = extend({ defaults: {} }, options),\n name,\n field,\n type,\n value,\n idx,\n length,\n fields = {},\n originalName,\n id = proto.id,\n functionFields = [];\n\n if (id) {\n proto.idField = id;\n }\n\n if (proto.id) {\n delete proto.id;\n }\n\n if (id) {\n proto.defaults[id] = proto._defaultId = \"\";\n }\n\n if (toString.call(proto.fields) === \"[object Array]\") {\n for (idx = 0, length = proto.fields.length; idx < length; idx++) {\n field = proto.fields[idx];\n if (typeof field === STRING) {\n fields[field] = {};\n } else if (field.field) {\n fields[field.field] = field;\n }\n }\n proto.fields = fields;\n }\n\n for (name in proto.fields) {\n field = proto.fields[name];\n type = field.type || \"default\";\n value = null;\n originalName = name;\n\n name = typeof (field.field) === STRING ? field.field : name;\n\n if (!field.nullable || field.defaultValue) {\n value = proto.defaults[originalName !== name ? originalName : name] = field.defaultValue !== undefined$1 ? field.defaultValue : defaultValues[type.toLowerCase()];\n\n if (typeof value === \"function\") {\n functionFields.push(name);\n }\n }\n\n if (options.id === name) {\n proto._defaultId = value;\n }\n\n proto.defaults[originalName !== name ? originalName : name] = value;\n\n if ($.isPlainObject(field)) {\n field.parse = field.parse || parsers[type];\n } else {\n field = {\n parse: parsers[type]\n };\n }\n }\n\n if (functionFields.length > 0) {\n proto._initializers = functionFields;\n }\n\n model = base.extend(proto);\n model.define = function(options) {\n return Model.define(model, options);\n };\n\n if (proto.fields) {\n model.fields = proto.fields;\n model.idField = proto.idField;\n }\n\n return model;\n };\n\n var Comparer = {\n selector: function(field) {\n return isFunction(field) ? field : getter(field);\n },\n\n compare: function(field) {\n var selector = this.selector(field);\n return function(a, b) {\n a = selector(a);\n b = selector(b);\n\n if (a == null && b == null) {\n return 0;\n }\n\n if (a == null) {\n return -1;\n }\n\n if (b == null) {\n return 1;\n }\n\n if (a.localeCompare) {\n return a.localeCompare(b);\n }\n\n return a > b ? 1 : (a < b ? -1 : 0);\n };\n },\n\n create: function(sort) {\n var compare = sort.compare || this.compare(sort.field);\n\n if (sort.dir == \"desc\") {\n return function(a, b) {\n return compare(b, a, true);\n };\n }\n\n return compare;\n },\n\n combine: function(comparers) {\n return function(a, b) {\n var result = comparers[0](a, b),\n idx,\n length;\n\n for (idx = 1, length = comparers.length; idx < length; idx ++) {\n result = result || comparers[idx](a, b);\n }\n\n return result;\n };\n }\n };\n\n var StableComparer = extend({}, Comparer, {\n asc: function(field) {\n var selector = this.selector(field);\n return function(a, b) {\n var valueA = selector(a);\n var valueB = selector(b);\n\n if (valueA && valueA.getTime && valueB && valueB.getTime) {\n valueA = valueA.getTime();\n valueB = valueB.getTime();\n }\n\n if (valueA === valueB) {\n return a.__position - b.__position;\n }\n\n if (valueA == null) {\n return -1;\n }\n\n if (valueB == null) {\n return 1;\n }\n\n if (valueA.localeCompare) {\n return valueA.localeCompare(valueB);\n }\n\n return valueA > valueB ? 1 : -1;\n };\n },\n\n desc: function(field) {\n var selector = this.selector(field);\n return function(a, b) {\n var valueA = selector(a);\n var valueB = selector(b);\n\n if (valueA && valueA.getTime && valueB && valueB.getTime) {\n valueA = valueA.getTime();\n valueB = valueB.getTime();\n }\n\n if (valueA === valueB) {\n return a.__position - b.__position;\n }\n\n if (valueA == null) {\n return 1;\n }\n\n if (valueB == null) {\n return -1;\n }\n\n if (valueB.localeCompare) {\n return valueB.localeCompare(valueA);\n }\n\n return valueA < valueB ? 1 : -1;\n };\n },\n create: function(sort) {\n return this[sort.dir](sort.field);\n }\n });\n\n map = function(array, callback) {\n var idx, length = array.length, result = new Array(length);\n\n for (idx = 0; idx < length; idx++) {\n result[idx] = callback(array[idx], idx, array);\n }\n\n return result;\n };\n\n var operators = (function() {\n\n function quote(str) {\n if (typeof str == \"string\") {\n str = str.replace(/[\\r\\n]+/g, \"\");\n }\n return JSON.stringify(str);\n }\n\n function textOp(impl) {\n return function(a, b, ignore, accentFoldingFiltering) {\n b += \"\";\n if (ignore) {\n a = \"(\" + a + \" + '').toString()\" + ((accentFoldingFiltering) ? \".toLocaleLowerCase('\" + accentFoldingFiltering + \"')\" : \".toLowerCase()\");\n b = ((accentFoldingFiltering) ? b.toLocaleLowerCase(accentFoldingFiltering) : b.toLowerCase());\n }\n return impl(a, quote(b), ignore);\n };\n }\n\n function operator(op, a, b, ignore, accentFoldingFiltering) {\n if (b != null) {\n if (typeof b === STRING) {\n var date = dateRegExp.exec(b);\n if (date) {\n b = new Date(+date[1]);\n } else if (ignore) {\n b = quote(((accentFoldingFiltering) ? b.toLocaleLowerCase(accentFoldingFiltering) : b.toLowerCase()));\n a = \"((\" + a + \" || '')+'')\" + ((accentFoldingFiltering) ? \".toLocaleLowerCase('\" + accentFoldingFiltering + \"')\" : \".toLowerCase()\");\n } else {\n b = quote(b);\n }\n }\n\n if (b.getTime) {\n //b looks like a Date\n a = \"(\" + a + \"&&\" + a + \".getTime?\" + a + \".getTime():\" + a + \")\";\n b = b.getTime();\n }\n }\n\n return a + \" \" + op + \" \" + b;\n }\n\n function getMatchRegexp(pattern) {\n // take a pattern, as supported by Excel match filter, and\n // convert it to the equivalent JS regular expression.\n // Excel patterns support:\n //\n // * - match any sequence of characters\n // ? - match a single character\n //\n // to match a literal * or ?, they must be prefixed by a tilde (~)\n for (var rx = \"/^\", esc = false, i = 0; i < pattern.length; ++i) {\n var ch = pattern.charAt(i);\n if (esc) {\n rx += \"\\\\\" + ch;\n } else if (ch == \"~\") {\n esc = true;\n continue;\n } else if (ch == \"*\") {\n rx += \".*\";\n } else if (ch == \"?\") {\n rx += \".\";\n } else if (\".+^$()[]{}|\\\\/\\n\\r\\u2028\\u2029\\xA0\".indexOf(ch) >= 0) {\n rx += \"\\\\\" + ch;\n } else {\n rx += ch;\n }\n esc = false;\n }\n return rx + \"$/\";\n }\n\n return {\n quote: function(value) {\n if (value && value.getTime) {\n return \"new Date(\" + value.getTime() + \")\";\n }\n return quote(value);\n },\n eq: function(a, b, ignore, accentFoldingFiltering) {\n return operator(\"==\", a, b, ignore, accentFoldingFiltering);\n },\n neq: function(a, b, ignore, accentFoldingFiltering) {\n return operator(\"!=\", a, b, ignore, accentFoldingFiltering);\n },\n gt: function(a, b, ignore) {\n return operator(\">\", a, b, ignore);\n },\n gte: function(a, b, ignore) {\n return operator(\">=\", a, b, ignore);\n },\n lt: function(a, b, ignore) {\n return operator(\"<\", a, b, ignore);\n },\n lte: function(a, b, ignore) {\n return operator(\"<=\", a, b, ignore);\n },\n startswith: textOp(function(a, b) {\n return a + \".lastIndexOf(\" + b + \", 0) == 0\";\n }),\n doesnotstartwith: textOp(function(a, b) {\n return a + \".lastIndexOf(\" + b + \", 0) == -1\";\n }),\n endswith: textOp(function(a, b) {\n var n = b ? b.length - 2 : 0;\n return a + \".indexOf(\" + b + \", \" + a + \".length - \" + n + \") >= 0\";\n }),\n doesnotendwith: textOp(function(a, b) {\n var n = b ? b.length - 2 : 0;\n return a + \".indexOf(\" + b + \", \" + a + \".length - \" + n + \") < 0\";\n }),\n contains: textOp(function(a, b) {\n return a + \".indexOf(\" + b + \") >= 0\";\n }),\n doesnotcontain: textOp(function(a, b) {\n return a + \".indexOf(\" + b + \") == -1\";\n }),\n matches: textOp(function(a, b) {\n b = b.substring(1, b.length - 1);\n return getMatchRegexp(b) + \".test(\" + a + \")\";\n }),\n doesnotmatch: textOp(function(a, b) {\n b = b.substring(1, b.length - 1);\n return \"!\" + getMatchRegexp(b) + \".test(\" + a + \")\";\n }),\n isempty: function(a) {\n return a + \" === ''\";\n },\n isnotempty: function(a) {\n return a + \" !== ''\";\n },\n isnull: function(a) {\n return \"(\" + a + \" == null)\";\n },\n isnotnull: function(a) {\n return \"(\" + a + \" != null)\";\n },\n isnullorempty: function(a) {\n return \"(\" + a + \" === null) || (\" + a + \" === '')\";\n },\n isnotnullorempty: function(a) {\n return \"(\" + a + \" !== null) && (\" + a + \" !== '')\";\n }\n };\n })();\n\n function Query(data) {\n this.data = data || [];\n }\n\n // Continue to support legacy unsafe-eval for the spreadsheet\n Query.filterExpr = function(expression, options = { noEval: false }) {\n if (options.noEval) {\n // using no-eval for most cases\n return filterExprNoEval(expression);\n }\n\n var expressions = [],\n logic = { and: \" && \", or: \" || \" },\n idx,\n length,\n filter,\n expr,\n fieldFunctions = [],\n operatorFunctions = [],\n field,\n operator,\n filters = expression.filters;\n\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n field = filter.field;\n operator = filter.operator;\n\n if (filter.filters) {\n expr = Query.filterExpr(filter);\n //Nested function fields or operators - update their index e.g. __o[0] -> __o[1]\n filter = expr.expression\n .replace(/__o\\[(\\d+)\\]/g, function(match, index) {\n index = +index;\n return \"__o[\" + (operatorFunctions.length + index) + \"]\";\n })\n .replace(/__f\\[(\\d+)\\]/g, function(match, index) {\n index = +index;\n return \"__f[\" + (fieldFunctions.length + index) + \"]\";\n });\n\n operatorFunctions.push.apply(operatorFunctions, expr.operators);\n fieldFunctions.push.apply(fieldFunctions, expr.fields);\n } else {\n if (typeof field === FUNCTION) {\n expr = \"__f[\" + fieldFunctions.length + \"](d)\";\n fieldFunctions.push(field);\n } else {\n expr = kendo.expr(field);\n }\n\n if (typeof operator === FUNCTION) {\n filter = \"__o[\" + operatorFunctions.length + \"](\" + expr + \", \" + operators.quote(filter.value) + \")\";\n operatorFunctions.push(operator);\n } else {\n filter = operators[(operator || \"eq\").toLowerCase()](expr, filter.value, filter.ignoreCase !== undefined$1 ? filter.ignoreCase : true, expression.accentFoldingFiltering);\n }\n }\n\n expressions.push(filter);\n }\n\n return { expression: \"(\" + expressions.join(logic[expression.logic]) + \")\", fields: fieldFunctions, operators: operatorFunctions };\n };\n\n function normalizeSort(field, dir) {\n if (field) {\n var descriptor = typeof field === STRING ? { field: field, dir: dir } : field,\n descriptors = isArray(descriptor) ? descriptor : (descriptor !== undefined$1 ? [descriptor] : []);\n\n return grep(descriptors, function(d) { return !!d.dir; });\n }\n }\n\n function sortFields(sorts, dir) {\n var sortObject = {};\n\n if (sorts) {\n var descriptor = typeof sorts === STRING ? { field: sorts, dir: dir } : sorts,\n descriptors = isArray(descriptor) ? descriptor : (descriptor !== undefined$1 ? [descriptor] : []);\n\n for (var i = 0; i < descriptors.length; i++) {\n sortObject[descriptors[i].field] = { dir: descriptors[i].dir, index: i + 1 };\n }\n }\n\n return sortObject;\n }\n\n var operatorMap = {\n \"==\": \"eq\",\n equals: \"eq\",\n isequalto: \"eq\",\n equalto: \"eq\",\n equal: \"eq\",\n \"!=\": \"neq\",\n ne: \"neq\",\n notequals: \"neq\",\n isnotequalto: \"neq\",\n notequalto: \"neq\",\n notequal: \"neq\",\n \"<\": \"lt\",\n islessthan: \"lt\",\n lessthan: \"lt\",\n less: \"lt\",\n \"<=\": \"lte\",\n le: \"lte\",\n islessthanorequalto: \"lte\",\n lessthanequal: \"lte\",\n \">\": \"gt\",\n isgreaterthan: \"gt\",\n greaterthan: \"gt\",\n greater: \"gt\",\n \">=\": \"gte\",\n isgreaterthanorequalto: \"gte\",\n greaterthanequal: \"gte\",\n ge: \"gte\",\n notsubstringof: \"doesnotcontain\",\n isnull: \"isnull\",\n isempty: \"isempty\",\n isnotempty: \"isnotempty\"\n };\n\n function normalizeOperator(expression) {\n var idx,\n length,\n filter,\n operator,\n filters = expression.filters;\n\n if (filters) {\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n operator = filter.operator;\n\n if (operator && typeof operator === STRING) {\n filter.operator = operatorMap[operator.toLowerCase()] || operator;\n }\n\n normalizeOperator(filter);\n }\n }\n }\n\n function normalizeFilter(expression) {\n if (expression && !isEmptyObject(expression)) {\n if (isArray(expression) || !expression.filters) {\n expression = {\n logic: \"and\",\n filters: isArray(expression) ? expression : [expression]\n };\n }\n\n normalizeOperator(expression);\n\n return expression;\n }\n }\n\n Query.normalizeFilter = normalizeFilter;\n\n function compareDescriptor(f1, f2) {\n if (f1.logic || f2.logic) {\n return false;\n }\n\n return f1.field === f2.field && f1.value === f2.value && f1.operator === f2.operator;\n }\n\n function normalizeDescriptor(filter) {\n filter = filter || {};\n\n if (isEmptyObject(filter)) {\n return { logic: \"and\", filters: [] };\n }\n\n return normalizeFilter(filter);\n }\n\n function fieldComparer(a, b) {\n if (b.logic || (a.field > b.field)) {\n return 1;\n } else if (a.field < b.field) {\n return -1;\n } else {\n return 0;\n }\n }\n\n function compareFilters(expr1, expr2) {\n expr1 = normalizeDescriptor(expr1);\n expr2 = normalizeDescriptor(expr2);\n\n if (expr1.logic !== expr2.logic) {\n return false;\n }\n\n var f1, f2;\n var filters1 = (expr1.filters || []).slice();\n var filters2 = (expr2.filters || []).slice();\n\n if (filters1.length !== filters2.length) {\n return false;\n }\n\n filters1 = filters1.sort(fieldComparer);\n filters2 = filters2.sort(fieldComparer);\n\n for (var idx = 0; idx < filters1.length; idx++) {\n f1 = filters1[idx];\n f2 = filters2[idx];\n\n if (f1.logic && f2.logic) {\n if (!compareFilters(f1, f2)) {\n return false;\n }\n } else if (!compareDescriptor(f1, f2)) {\n return false;\n }\n }\n\n return true;\n }\n\n Query.compareFilters = compareFilters;\n\n function normalizeAggregate(expressions) {\n return isArray(expressions) ? expressions : [expressions];\n }\n\n function normalizeGroup(field, dir, compare, skipItemSorting) {\n var descriptor = typeof field === STRING ? { field: field, dir: dir, compare: compare, skipItemSorting: skipItemSorting } : field,\n descriptors = isArray(descriptor) ? descriptor : (descriptor !== undefined$1 ? [descriptor] : []);\n\n return map(descriptors, function(d) {\n return {\n field: d.field,\n dir: d.dir || \"asc\",\n aggregates: d.aggregates,\n compare: d.compare,\n skipItemSorting: d.skipItemSorting\n };\n });\n }\n\n function normalizeGroupWithoutCompare(field, dir, compare) {\n var descriptors = normalizeGroup(field, dir, compare);\n\n for (var i = 0; i < descriptors.length; i++) {\n delete descriptors[i].compare;\n }\n\n return descriptors;\n }\n\n function anyGroupDescriptorHasCompare(groupDescriptors) {\n var descriptors = isArray(groupDescriptors) ? groupDescriptors : [groupDescriptors];\n\n for (var i = 0; i < descriptors.length; i++) {\n if (descriptors[i] && isFunction(descriptors[i].compare)) {\n return true;\n }\n }\n\n return false;\n }\n\n Query.prototype = {\n toArray: function() {\n return this.data;\n },\n range: function(index, count) {\n return new Query(this.data.slice(index, index + count));\n },\n skip: function(count) {\n return new Query(this.data.slice(count));\n },\n take: function(count) {\n return new Query(this.data.slice(0, count));\n },\n select: function(selector) {\n return new Query(map(this.data, selector));\n },\n order: function(selector, dir, inPlace) {\n var sort = { dir: dir };\n\n if (selector) {\n if (selector.compare) {\n sort.compare = selector.compare;\n } else {\n sort.field = selector;\n }\n }\n\n if (inPlace) {\n return new Query(this.data.sort(Comparer.create(sort)));\n }\n\n return new Query(this.data.slice(0).sort(Comparer.create(sort)));\n },\n orderBy: function(selector, inPlace) {\n return this.order(selector, \"asc\", inPlace);\n },\n orderByDescending: function(selector, inPlace) {\n return this.order(selector, \"desc\", inPlace);\n },\n sort: function(field, dir, comparer, inPlace) {\n var idx,\n length,\n descriptors = normalizeSort(field, dir),\n comparers = [];\n\n comparer = comparer || Comparer;\n\n if (descriptors.length) {\n for (idx = 0, length = descriptors.length; idx < length; idx++) {\n comparers.push(comparer.create(descriptors[idx]));\n }\n\n return this.orderBy({ compare: comparer.combine(comparers) }, inPlace);\n }\n\n return this;\n },\n\n filter: function(expressions) {\n var compiled,\n data = this.data,\n result = [];\n\n expressions = normalizeFilter(expressions);\n\n if (!expressions || expressions.filters.length === 0) {\n return this;\n }\n\n compiled = Query.filterExpr(expressions, { noEval: true });\n\n result = data.filter(compiled);\n return new Query(result);\n },\n\n group: function(descriptors, allData, options) {\n descriptors = normalizeGroup(descriptors || []);\n allData = allData || this.data;\n\n var that = this,\n result = new Query(that.data),\n descriptor;\n\n var getFilteredData = (g, data) => {\n data = data || new Query(allData).filter([{\n field: g.field,\n operator: \"eq\",\n value: g.value,\n ignoreCase: false\n }]);\n\n return data;\n };\n\n if (descriptors.length > 0) {\n descriptor = descriptors[0];\n\n if (options && options.groupPaging) {\n result = new Query(allData).groupAllData(descriptor, allData).select(function(group) {\n var cachedFilteredData;\n\n var items = descriptors.length > 1 ? new Query(group.items).group(descriptors.slice(1), getFilteredData(group, cachedFilteredData).toArray(), options).toArray() : group.items;\n\n return {\n field: group.field,\n value: group.value,\n hasSubgroups: descriptors.length > 1,\n items: items,\n aggregates: descriptor.aggregates && descriptor.aggregates.length ? getFilteredData(group, cachedFilteredData).aggregate(descriptor.aggregates) : {},\n uid: kendo.guid(),\n itemCount: items.length,\n subgroupCount: items.length\n };\n });\n\n } else {\n result = result.groupBy(descriptor).select(function(group) {\n var cachedFilteredData;\n return {\n field: group.field,\n value: group.value,\n items: descriptors.length > 1 ? new Query(group.items).group(descriptors.slice(1), getFilteredData(group, cachedFilteredData).toArray()).toArray() : group.items,\n hasSubgroups: descriptors.length > 1,\n aggregates: descriptor.aggregates && descriptor.aggregates.length ? getFilteredData(group, cachedFilteredData).aggregate(descriptor.aggregates) : {},\n };\n });\n }\n }\n return result;\n },\n\n groupBy: function(descriptor) {\n var that = this;\n\n if (isEmptyObject(descriptor) || !this.data.length) {\n return new Query([]);\n }\n\n var field = descriptor.field,\n sorted = descriptor.skipItemSorting ? this.data : this._sortForGrouping(field, descriptor.dir || \"asc\"),\n accessor = kendo.accessor(field),\n item,\n groupValue = accessor.get(sorted[0], field),\n group = {\n field: field,\n value: groupValue,\n items: []\n },\n currentValue,\n idx,\n len,\n result = [group];\n\n for (idx = 0, len = sorted.length; idx < len; idx++) {\n item = sorted[idx];\n currentValue = accessor.get(item, field);\n if (!groupValueComparer(groupValue, currentValue)) {\n groupValue = currentValue;\n group = {\n field: field,\n value: groupValue,\n items: []\n };\n result.push(group);\n }\n group.items.push(item);\n }\n\n result = that._sortGroups(result, descriptor);\n\n return new Query(result);\n },\n\n groupAllData: function(descriptor, allData) {\n if (isEmptyObject(descriptor) || this.data && !this.data.length) {\n return new Query([]);\n }\n\n var field = descriptor.field,\n sorted = descriptor.skipItemSorting ? allData : new Query(allData).sort(field, descriptor.dir || \"asc\", StableComparer).toArray(),\n accessor = kendo.accessor(field),\n item,\n groupValue = accessor.get(sorted[0], field),\n group = {\n field: field,\n value: groupValue,\n items: []\n },\n currentValue,\n idx,\n len,\n result = [group];\n\n for (idx = 0, len = sorted.length; idx < len; idx++) {\n item = sorted[idx];\n currentValue = accessor.get(item, field);\n if (!groupValueComparer(groupValue, currentValue)) {\n groupValue = currentValue;\n group = {\n field: field,\n value: groupValue,\n items: []\n };\n result.push(group);\n }\n group.items.push(item);\n }\n\n result = this._sortGroups(result, descriptor);\n\n return new Query(result);\n },\n\n _sortForGrouping: function(field, dir) {\n var idx, length,\n data = this.data;\n\n if (!stableSort) {\n for (idx = 0, length = data.length; idx < length; idx++) {\n data[idx].__position = idx;\n }\n\n data = new Query(data).sort(field, dir, StableComparer).toArray();\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n delete data[idx].__position;\n }\n return data;\n }\n\n return this.sort(field, dir).toArray();\n },\n\n _sortGroups: function(groups, descriptor) {\n var result = groups;\n\n if (descriptor && isFunction(descriptor.compare)) {\n result = new Query(result).order({ compare: descriptor.compare }, descriptor.dir || ASCENDING).toArray();\n }\n\n return result;\n },\n\n aggregate: function(aggregates) {\n var idx,\n len,\n result = {},\n state = {};\n\n if (aggregates && aggregates.length) {\n for (idx = 0, len = this.data.length; idx < len; idx++) {\n calculateAggregate(result, aggregates, this.data[idx], idx, len, state);\n }\n }\n return result;\n }\n };\n\n function groupValueComparer(a, b) {\n if (a && a.getTime && b && b.getTime) {\n return a.getTime() === b.getTime();\n }\n return a === b;\n }\n\n function calculateAggregate(accumulator, aggregates, item, index, length, state) {\n aggregates = aggregates || [];\n var idx,\n aggr,\n functionName,\n len = aggregates.length;\n\n for (idx = 0; idx < len; idx++) {\n aggr = aggregates[idx];\n functionName = aggr.aggregate;\n var field = aggr.field;\n accumulator[field] = accumulator[field] || {};\n state[field] = state[field] || {};\n state[field][functionName] = state[field][functionName] || {};\n accumulator[field][functionName] = functions[functionName.toLowerCase()](accumulator[field][functionName], item, kendo.accessor(field), index, length, state[field][functionName]);\n }\n }\n\n var functions = {\n sum: function(accumulator, item, accessor) {\n var value = accessor.get(item);\n\n if (!isNumber(accumulator)) {\n accumulator = value;\n } else if (isNumber(value)) {\n accumulator += value;\n }\n\n return accumulator;\n },\n count: function(accumulator) {\n return (accumulator || 0) + 1;\n },\n average: function(accumulator, item, accessor, index, length, state) {\n var value = accessor.get(item);\n\n if (state.count === undefined$1) {\n state.count = 0;\n }\n\n if (!isNumber(accumulator)) {\n accumulator = value;\n } else if (isNumber(value)) {\n accumulator += value;\n }\n\n if (isNumber(value)) {\n state.count++;\n }\n\n if (index == length - 1 && isNumber(accumulator)) {\n accumulator = accumulator / state.count;\n }\n return accumulator;\n },\n max: function(accumulator, item, accessor) {\n var value = accessor.get(item);\n\n if (!isNumber(accumulator) && !isDate(accumulator)) {\n accumulator = value;\n }\n\n if (accumulator < value && (isNumber(value) || isDate(value))) {\n accumulator = value;\n }\n return accumulator;\n },\n min: function(accumulator, item, accessor) {\n var value = accessor.get(item);\n\n if (!isNumber(accumulator) && !isDate(accumulator)) {\n accumulator = value;\n }\n\n if (accumulator > value && (isNumber(value) || isDate(value))) {\n accumulator = value;\n }\n return accumulator;\n }\n };\n\n function isNumber(val) {\n return typeof val === \"number\" && !isNaN(val);\n }\n\n function isDate(val) {\n return val && val.getTime;\n }\n\n function toJSON(array) {\n var idx, length = array.length, result = new Array(length);\n\n for (idx = 0; idx < length; idx++) {\n result[idx] = array[idx].toJSON();\n }\n\n return result;\n }\n\n Query.normalizeGroup = normalizeGroup;\n Query.normalizeSort = normalizeSort;\n\n Query.process = function(data, options, inPlace) {\n options = options || {};\n\n var group = options.group;\n var customGroupSort = anyGroupDescriptorHasCompare(normalizeGroup(group || []));\n var query = new Query(data),\n groupDescriptorsWithoutCompare = normalizeGroupWithoutCompare(group || []),\n normalizedSort = normalizeSort(options.sort || []),\n sort = customGroupSort ? normalizedSort : groupDescriptorsWithoutCompare.concat(normalizedSort),\n groupDescriptorsWithoutSort,\n total,\n filterCallback = options.filterCallback,\n filter = options.filter,\n skip = options.skip,\n take = options.take;\n\n if (sort && inPlace) {\n query = query.sort(sort, undefined$1, undefined$1, inPlace);\n }\n\n if (filter) {\n query = query.filter(filter);\n\n if (filterCallback) {\n query = filterCallback(query);\n }\n\n total = query.toArray().length;\n }\n\n if (sort) {\n if (!inPlace) {\n query = query.sort(sort);\n }\n\n if (group) {\n data = query.toArray();\n }\n }\n\n if (customGroupSort) {\n query = query.group(group, data, options);\n\n if (skip !== undefined$1 && take !== undefined$1 && !options.groupPaging) {\n query = new Query(flatGroups(query.toArray())).range(skip, take);\n\n groupDescriptorsWithoutSort = map(groupDescriptorsWithoutCompare, function(groupDescriptor) {\n return extend({}, groupDescriptor, {\n skipItemSorting: true\n });\n });\n\n query = query.group(groupDescriptorsWithoutSort, data, options);\n }\n } else {\n if (skip !== undefined$1 && take !== undefined$1) {\n total = query.data.length;\n\n if (skip + take > total && options.virtual) {\n skip -= skip + take - total;\n skip = skip < 0 ? 0 : skip;\n }\n query = query.range(skip, take);\n }\n\n if (group && (!isEmptyObject(group) || group.length !== 0)) {\n query = query.group(group, data, options);\n }\n }\n\n return {\n total: total,\n data: query.toArray()\n };\n };\n\n var LocalTransport = Class.extend({\n init: function(options) {\n this.data = options.data;\n },\n\n read: function(options) {\n options.success(this.data);\n },\n update: function(options) {\n options.success(options.data);\n },\n create: function(options) {\n options.success(options.data);\n },\n destroy: function(options) {\n options.success(options.data);\n }\n });\n\n var RemoteTransport = Class.extend( {\n init: function(options) {\n var that = this, parameterMap;\n\n options = that.options = extend({}, that.options, options);\n\n each(crud, function(index, type) {\n if (typeof options[type] === STRING) {\n options[type] = {\n url: options[type]\n };\n }\n });\n\n that.cache = options.cache ? Cache.create(options.cache) : {\n find: noop,\n add: noop\n };\n\n parameterMap = options.parameterMap;\n\n if (options.submit) {\n that.submit = options.submit;\n }\n\n if (isFunction(options.push)) {\n that.push = options.push;\n }\n\n if (!that.push) {\n that.push = identity;\n }\n\n that.parameterMap = isFunction(parameterMap) ? parameterMap : function(options) {\n var result = {};\n\n each(options, function(option, value) {\n if (option in parameterMap) {\n option = parameterMap[option];\n if (isPlainObject(option)) {\n value = option.value(value);\n option = option.key;\n }\n }\n\n result[option] = value;\n });\n\n return result;\n };\n },\n\n options: {\n parameterMap: identity\n },\n\n create: function(options) {\n return ajax(this.setup(options, CREATE));\n },\n\n read: function(options) {\n var that = this,\n success,\n error,\n result,\n cache = that.cache;\n\n options = that.setup(options, READ);\n\n success = options.success || noop;\n error = options.error || noop;\n\n result = cache.find(options.data);\n\n if (result !== undefined$1) {\n success(result);\n } else {\n options.success = function(result) {\n cache.add(options.data, result);\n\n success(result);\n };\n\n $.ajax(options);\n }\n },\n\n update: function(options) {\n return ajax(this.setup(options, UPDATE));\n },\n\n destroy: function(options) {\n return ajax(this.setup(options, DESTROY));\n },\n\n setup: function(options, type) {\n options = options || {};\n\n var that = this,\n parameters,\n operation = that.options[type],\n data = isFunction(operation.data) ? operation.data(options.data) : operation.data;\n\n options = extend(true, {}, operation, options);\n parameters = extend(true, {}, data, options.data);\n\n options.data = that.parameterMap(parameters, type);\n\n if (isFunction(options.url)) {\n options.url = options.url(parameters);\n }\n\n return options;\n }\n });\n\n var Cache = Class.extend({\n init: function() {\n this._store = {};\n },\n add: function(key, data) {\n if (key !== undefined$1) {\n this._store[stringify(key)] = data;\n }\n },\n find: function(key) {\n return this._store[stringify(key)];\n },\n clear: function() {\n this._store = {};\n },\n remove: function(key) {\n delete this._store[stringify(key)];\n }\n });\n\n Cache.create = function(options) {\n var store = {\n \"inmemory\": function() { return new Cache(); }\n };\n\n if (isPlainObject(options) && isFunction(options.find)) {\n return options;\n }\n\n if (options === true) {\n return new Cache();\n }\n\n return store[options]();\n };\n\n function serializeRecords(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record,\n getter,\n originalName,\n idx,\n setters = {},\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n for (getter in getters) {\n originalName = fieldNames[getter];\n\n if (originalName && originalName !== getter) {\n if (!setters[originalName]) {\n setters[originalName] = kendo.setter(originalName);\n }\n setters[originalName](record, getters[getter](record));\n delete record[getter];\n }\n }\n }\n }\n\n function convertRecords(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record,\n getter,\n originalName,\n idx,\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n for (getter in getters) {\n record[getter] = modelInstance._parse(getter, getters[getter](record));\n\n originalName = fieldNames[getter];\n if (originalName && originalName !== getter) {\n delete record[originalName];\n }\n }\n }\n }\n\n function convertGroup(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record,\n idx,\n fieldName,\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n\n fieldName = originalFieldNames[record.field];\n if (fieldName && fieldName != record.field) {\n record.field = fieldName;\n }\n\n record.value = modelInstance._parse(record.field, record.value);\n\n if (record.items) {\n if (record.hasSubgroups) {\n convertGroup(record.items, getters, modelInstance, originalFieldNames, fieldNames);\n } else {\n convertRecords(record.items, getters, modelInstance, originalFieldNames, fieldNames);\n }\n }\n }\n }\n\n function wrapDataAccess(originalFunction, model, converter, getters, originalFieldNames, fieldNames) {\n return function(data) {\n data = originalFunction(data);\n\n return wrapDataAccessBase(model, converter, getters, originalFieldNames, fieldNames)(data);\n };\n }\n\n function wrapDataAccessBase(model, converter, getters, originalFieldNames, fieldNames) {\n return function(data) {\n\n if (data && !isEmptyObject(getters)) {\n if (toString.call(data) !== \"[object Array]\" && !(data instanceof ObservableArray)) {\n data = [data];\n }\n\n converter(data, getters, new model(), originalFieldNames, fieldNames);\n }\n\n return data || [];\n };\n }\n\n var DataReader = Class.extend({\n init: function(schema) {\n var that = this, member, get, model, base;\n\n schema = schema || {};\n\n for (member in schema) {\n get = schema[member];\n\n that[member] = typeof get === STRING ? getter(get) : get;\n }\n\n base = schema.modelBase || Model;\n\n if (isPlainObject(that.model)) {\n that.model = model = base.define(that.model);\n }\n\n var dataFunction = that.data.bind(that);\n\n that._dataAccessFunction = dataFunction;\n\n if (that.model) {\n var groupsFunction = that.groups.bind(that),\n serializeFunction = that.serialize.bind(that),\n originalFieldNames = {},\n getters = {},\n serializeGetters = {},\n fieldNames = {},\n shouldSerialize = false,\n fieldName,\n name;\n\n model = that.model;\n\n if (model.fields) {\n each(model.fields, function(field, value) {\n var fromName;\n\n fieldName = field;\n\n if (isPlainObject(value) && value.field) {\n fieldName = value.field;\n } else if (typeof value === STRING) {\n fieldName = value;\n }\n\n if (isPlainObject(value) && value.from) {\n fromName = value.from;\n }\n\n shouldSerialize = shouldSerialize || (fromName && fromName !== field) || fieldName !== field;\n name = fromName || fieldName;\n getters[field] = name.indexOf(\".\") !== -1 ? getter(name, true) : getter(name);\n serializeGetters[field] = getter(field);\n originalFieldNames[fromName || fieldName] = field;\n fieldNames[field] = fromName || fieldName;\n });\n\n if (!schema.serialize && shouldSerialize) {\n that.serialize = wrapDataAccess(serializeFunction, model, serializeRecords, serializeGetters, originalFieldNames, fieldNames);\n }\n }\n\n that._dataAccessFunction = dataFunction;\n that._wrapDataAccessBase = wrapDataAccessBase(model, convertRecords, getters, originalFieldNames, fieldNames);\n that.data = wrapDataAccess(dataFunction, model, convertRecords, getters, originalFieldNames, fieldNames);\n that.groups = wrapDataAccess(groupsFunction, model, convertGroup, getters, originalFieldNames, fieldNames);\n }\n },\n errors: function(data) {\n return data ? data.errors : null;\n },\n parse: identity,\n data: identity,\n total: function(data) {\n return data.length;\n },\n groups: identity,\n aggregates: function() {\n return {};\n },\n serialize: function(data) {\n return data;\n }\n });\n\n function fillLastGroup(originalGroup, newGroup) {\n var currOriginal;\n var currentNew;\n\n if (newGroup.items && newGroup.items.length) {\n for (var i = 0; i < newGroup.items.length; i++) {\n currOriginal = originalGroup.items[originalGroup.items.length - 1];\n currentNew = newGroup.items[i];\n if (currOriginal && currentNew) {\n if (currOriginal.hasSubgroups && currOriginal.value == currentNew.value) {\n fillLastGroup(currOriginal, currentNew);\n } else if (currOriginal.field && currOriginal.value == currentNew.value) {\n currOriginal.items.omitChangeEvent = true;\n currOriginal.items.push.apply(currOriginal.items, currentNew.items);\n currOriginal.items.omitChangeEvent = false;\n } else {\n originalGroup.items.omitChangeEvent = true;\n originalGroup.items.push.apply(originalGroup.items, [currentNew]);\n originalGroup.items.omitChangeEvent = false;\n }\n } else if (currentNew) {\n originalGroup.items.omitChangeEvent = true;\n originalGroup.items.push.apply(originalGroup.items, [currentNew]);\n originalGroup.items.omitChangeEvent = false;\n }\n }\n }\n }\n function mergeGroups(target, dest, skip, take) {\n var group,\n idx = 0,\n items;\n\n while (dest.length && take) {\n group = dest[idx];\n items = group.items;\n\n var length = items.length;\n\n if (target && target.field === group.field && target.value === group.value) {\n if (target.hasSubgroups && target.items.length) {\n mergeGroups(target.items[target.items.length - 1], group.items, skip, take);\n } else {\n items = items.slice(skip, skip + take);\n target.items = target.items.concat(items);\n }\n dest.splice(idx--, 1);\n } else if (group.hasSubgroups && items.length) {\n mergeGroups(group, items, skip, take);\n if (!group.items.length) {\n dest.splice(idx--, 1);\n }\n } else {\n items = items.slice(skip, skip + take);\n group.items = items;\n\n if (!group.items.length) {\n dest.splice(idx--, 1);\n }\n }\n\n if (items.length === 0) {\n skip -= length;\n } else {\n skip = 0;\n take -= items.length;\n }\n\n if (++idx >= dest.length) {\n break;\n }\n }\n\n if (idx < dest.length) {\n dest.splice(idx, dest.length - idx);\n }\n }\n\n function flatGroups(groups, indexFunction) {\n var result = [];\n var groupsLength = (groups || []).length;\n var group;\n var items;\n var indexFn = isFunction(indexFunction) ? indexFunction : function(array, index) {\n return array[index];\n };\n\n for (var groupIndex = 0; groupIndex < groupsLength; groupIndex++) {\n group = indexFn(groups, groupIndex);\n\n if (group.hasSubgroups) {\n result = result.concat(flatGroups(group.items));\n } else {\n items = group.items;\n\n for (var itemIndex = 0; itemIndex < items.length; itemIndex++) {\n result.push(indexFn(items, itemIndex));\n }\n }\n }\n return result;\n }\n\n function flattenGroups(data) {\n var idx,\n result = [],\n length,\n items,\n itemIndex;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n var group = data.at(idx);\n if (group.items) {\n if (group.hasSubgroups) {\n result = result.concat(flattenGroups(group.items));\n } else {\n items = group.items;\n for (itemIndex = 0; itemIndex < items.length; itemIndex++) {\n result.push(items.at(itemIndex));\n }\n }\n }\n }\n return result;\n }\n\n function wrapGroupItems(data, model) {\n var idx, length, group;\n if (model) {\n for (idx = 0, length = data.length; idx < length; idx++) {\n group = data.at(idx);\n if (group.items) {\n if (group.hasSubgroups) {\n wrapGroupItems(group.items, model);\n } else {\n group.items = new LazyObservableArray(group.items, model, group.items._events);\n }\n }\n }\n }\n }\n\n function eachGroupItems(data, func) {\n for (var idx = 0; idx < data.length; idx++) {\n if (data[idx].hasSubgroups) {\n if (eachGroupItems(data[idx].items, func)) {\n return true;\n }\n } else if (func(data[idx].items, data[idx])) {\n return true;\n }\n }\n }\n\n function replaceInRanges(ranges, data, item, observable) {\n for (var idx = 0; idx < ranges.length; idx++) {\n if (ranges[idx].data === data) {\n break;\n }\n if (replaceInRange(ranges[idx].data, item, observable)) {\n break;\n }\n }\n }\n\n function replaceInRange(items, item, observable) {\n for (var idx = 0, length = items.length; idx < length; idx++) {\n if (items[idx] && items[idx].hasSubgroups) {\n return replaceInRange(items[idx].items, item, observable);\n } else if (items[idx] === item || items[idx] === observable) {\n items[idx] = observable;\n return true;\n }\n }\n }\n\n function replaceWithObservable(view, data, ranges, type, serverGrouping) {\n for (var viewIndex = 0, length = view.length; viewIndex < length; viewIndex++) {\n var item = view[viewIndex];\n\n if (!item || item instanceof type) {\n continue;\n }\n\n if (item.hasSubgroups !== undefined$1 && !serverGrouping) {\n replaceWithObservable(item.items, data, ranges, type, serverGrouping);\n } else {\n for (var idx = 0; idx < data.length; idx++) {\n if (data[idx] === item) {\n view[viewIndex] = data.at(idx);\n replaceInRanges(ranges, data, item, view[viewIndex]);\n break;\n }\n }\n }\n }\n }\n\n function removeModel(data, model) {\n if (!data) {\n return;\n }\n var length = data.length;\n var dataItem;\n var idx;\n\n for (idx = 0; idx < length; idx++) {\n dataItem = data[idx];\n\n if (dataItem.uid && dataItem.uid == model.uid) {\n data.splice(idx, 1);\n return dataItem;\n }\n }\n }\n\n function indexOfPristineModel(data, model) {\n if (model) {\n return indexOf(data, function(item) {\n return (item.uid && item.uid == model.uid) || (item[model.idField] === model.id && model.id !== model._defaultId);\n });\n }\n return -1;\n }\n\n function indexOfModel(data, model) {\n if (model) {\n return indexOf(data, function(item) {\n return item.uid == model.uid;\n });\n }\n return -1;\n }\n\n function indexOf(data, comparer) {\n var idx, length;\n if (!data) {\n return;\n }\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (comparer(data[idx])) {\n return idx;\n }\n }\n\n return -1;\n }\n\n function fieldNameFromModel(fields, name) {\n if (fields && !isEmptyObject(fields)) {\n var descriptor = fields[name];\n var fieldName;\n if (isPlainObject(descriptor)) {\n fieldName = descriptor.from || descriptor.field || name;\n } else {\n fieldName = fields[name] || name;\n }\n\n if (isFunction(fieldName)) {\n return name;\n }\n\n return fieldName;\n }\n return name;\n }\n\n function convertFilterDescriptorsField(descriptor, model) {\n var idx,\n length,\n target = {};\n\n for (var field in descriptor) {\n if (field !== \"filters\") {\n target[field] = descriptor[field];\n }\n }\n\n if (descriptor.filters) {\n target.filters = [];\n for (idx = 0, length = descriptor.filters.length; idx < length; idx++) {\n target.filters[idx] = convertFilterDescriptorsField(descriptor.filters[idx], model);\n }\n } else {\n target.field = fieldNameFromModel(model.fields, target.field);\n }\n return target;\n }\n\n function convertDescriptorsField(descriptors, model) {\n var idx,\n length,\n result = [],\n target,\n descriptor;\n\n for (idx = 0, length = descriptors.length; idx < length; idx ++) {\n target = {};\n\n descriptor = descriptors[idx];\n\n for (var field in descriptor) {\n target[field] = descriptor[field];\n }\n\n target.field = fieldNameFromModel(model.fields, target.field);\n\n if (target.aggregates && isArray(target.aggregates)) {\n target.aggregates = convertDescriptorsField(target.aggregates, model);\n }\n result.push(target);\n }\n return result;\n }\n\n var DataSource = Observable.extend({\n init: function(options) {\n var that = this, model, data;\n\n if (options) {\n data = options.data;\n }\n\n options = that.options = extend({}, that.options, options);\n\n that._map = {};\n that._prefetch = {};\n that._data = [];\n that._pristineData = [];\n that._ranges = [];\n that._view = [];\n that._pristineTotal = 0;\n that._destroyed = [];\n that._pageSize = options.pageSize;\n that._page = options.page || (options.pageSize ? 1 : undefined$1);\n that._sort = normalizeSort(options.sort);\n that._sortFields = sortFields(options.sort);\n that._filter = normalizeFilter(options.filter);\n that._group = normalizeGroup(options.group);\n that._aggregate = options.aggregate;\n that._total = options.total;\n that._groupPaging = options.groupPaging;\n\n if (that._groupPaging) {\n that._groupsState = {};\n }\n that._shouldDetachObservableParents = true;\n\n Observable.fn.init.call(that);\n\n that.transport = Transport.create(options, data, that);\n\n if (isFunction(that.transport.push)) {\n that.transport.push({\n pushCreate: that._pushCreate.bind(that),\n pushUpdate: that._pushUpdate.bind(that),\n pushDestroy: that._pushDestroy.bind(that)\n });\n }\n\n if (options.offlineStorage != null) {\n if (typeof options.offlineStorage == \"string\") {\n var key = options.offlineStorage;\n\n that._storage = {\n getItem: function() {\n return JSON.parse(localStorage.getItem(key));\n },\n setItem: function(item) {\n localStorage.setItem(key, stringify(that.reader.serialize(item)));\n }\n };\n } else {\n that._storage = options.offlineStorage;\n }\n }\n\n that.reader = new kendo.data.readers[options.schema.type || \"json\" ](options.schema);\n\n model = that.reader.model || {};\n\n that._detachObservableParents();\n\n that._data = that._observe(that._data);\n that._online = true;\n\n that.bind([\"push\", ERROR, CHANGE, REQUESTSTART, SYNC, REQUESTEND, PROGRESS], options);\n },\n\n options: {\n data: null,\n schema: {\n modelBase: Model\n },\n offlineStorage: null,\n serverSorting: false,\n serverPaging: false,\n serverFiltering: false,\n serverGrouping: false,\n serverAggregates: false,\n batch: false,\n inPlaceSort: false\n },\n\n clone: function() {\n return this;\n },\n\n online: function(value) {\n if (value !== undefined$1) {\n if (this._online != value) {\n this._online = value;\n\n if (value) {\n return this.sync();\n }\n }\n\n return $.Deferred().resolve().promise();\n } else {\n return this._online;\n }\n },\n\n offlineData: function(state) {\n if (this.options.offlineStorage == null) {\n return null;\n }\n\n if (state !== undefined$1) {\n return this._storage.setItem(state);\n }\n\n return this._storage.getItem() || [];\n },\n\n _isGrouped: function() {\n var group = this.group() || [];\n\n return group.length;\n },\n\n _isServerGrouped: function() {\n var group = this.group() || [];\n\n return this.options.serverGrouping && group.length;\n },\n\n _isServerGroupPaged: function() {\n return this._isServerGrouped() && this._groupPaging;\n },\n\n _isGroupPaged: function() {\n var group = this._group || [];\n\n return this._groupPaging && group.length;\n },\n\n _pushCreate: function(result) {\n this._push(result, \"pushCreate\");\n },\n\n _pushUpdate: function(result) {\n this._push(result, \"pushUpdate\");\n },\n\n _pushDestroy: function(result) {\n this._push(result, \"pushDestroy\");\n },\n\n _push: function(result, operation) {\n var data = this._readData(result);\n\n if (!data) {\n data = result;\n }\n\n this[operation](data);\n },\n\n _flatData: function(data, skip) {\n if (data) {\n if (this._isServerGrouped()) {\n return flattenGroups(data);\n }\n\n if (!skip) {\n for (var idx = 0; idx < data.length; idx++) {\n data.at(idx);\n }\n }\n }\n\n return data;\n },\n\n parent: noop,\n\n get: function(id) {\n var idx, length, data = this._flatData(this._data, this.options.useRanges);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].id == id) {\n return data[idx];\n }\n }\n },\n\n getByUid: function(id) {\n return this._getByUid(id, this._data);\n },\n\n _getByUid: function(id, dataItems) {\n var idx, length, data = this._flatData(dataItems, this.options.useRanges);\n\n if (!data) {\n return;\n }\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].uid == id) {\n return data[idx];\n }\n }\n },\n\n indexOf: function(model) {\n return indexOfModel(this._data, model);\n },\n\n at: function(index) {\n return this._data.at(index);\n },\n\n data: function(value) {\n var that = this;\n if (value !== undefined$1) {\n that._detachObservableParents();\n that._data = this._observe(value);\n\n that._pristineData = value.slice(0);\n\n that._storeData();\n\n that._ranges = [];\n that.trigger(\"reset\");\n that._addRange(that._data);\n\n that._total = that._data.length;\n that._pristineTotal = that._total;\n\n that._process(that._data);\n } else {\n if (that._data) {\n for (var idx = 0; idx < that._data.length; idx++) {\n that._data.at(idx);\n }\n }\n\n return that._data;\n }\n },\n\n view: function(value) {\n if (value === undefined$1) {\n return this._view;\n } else {\n this._view = this._observeView(value);\n }\n },\n\n _observeView: function(data) {\n var that = this;\n replaceWithObservable(data, that._data, that._ranges, that.reader.model || ObservableObject, that._isServerGrouped());\n\n var view = new LazyObservableArray(data, that.reader.model);\n view.parent = function() { return that.parent(); };\n return view;\n },\n\n flatView: function() {\n var groups = this.group() || [];\n\n if (groups.length) {\n return flattenGroups(this._view);\n } else {\n return this._view;\n }\n },\n\n add: function(model) {\n return this.insert(this._data.length, model);\n },\n\n _createNewModel: function(model) {\n if (this.reader.model) {\n return new this.reader.model(model);\n }\n\n if (model instanceof ObservableObject) {\n return model;\n }\n\n return new ObservableObject(model);\n },\n\n insert: function(index, model) {\n if (!model) {\n model = index;\n index = 0;\n }\n\n if (!(model instanceof Model)) {\n model = this._createNewModel(model);\n }\n\n if (this._isServerGrouped()) {\n this._data.splice(index, 0, this._wrapInEmptyGroup(model));\n } else {\n this._data.splice(index, 0, model);\n }\n\n this._insertModelInRange(index, model);\n\n return model;\n },\n\n pushInsert: function(index, items) {\n var that = this;\n var rangeSpan = that._getCurrentRangeSpan();\n\n if (!items) {\n items = index;\n index = 0;\n }\n\n if (!isArray(items)) {\n items = [items];\n }\n\n var pushed = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n\n try {\n for (var idx = 0; idx < items.length; idx ++) {\n var item = items[idx];\n\n var result = this.insert(index, item);\n\n pushed.push(result);\n\n var pristine = result.toJSON();\n\n if (this._isServerGrouped()) {\n pristine = this._wrapInEmptyGroup(pristine);\n }\n\n this._pristineData.push(pristine);\n\n if (rangeSpan && rangeSpan.length) {\n $(rangeSpan).last()[0].pristineData.push(pristine);\n }\n\n index++;\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"create\",\n items: pushed\n });\n }\n },\n\n pushCreate: function(items) {\n this.pushInsert(this._data.length, items);\n },\n\n pushUpdate: function(items) {\n if (!isArray(items)) {\n items = [items];\n }\n\n var pushed = [];\n\n for (var idx = 0; idx < items.length; idx ++) {\n var item = items[idx];\n var model = this._createNewModel(item);\n\n var target = this.get(model.id);\n\n if (target) {\n pushed.push(target);\n\n target.accept(item);\n\n target.trigger(CHANGE);\n\n this._updatePristineForModel(target, item);\n } else {\n this.pushCreate(item);\n }\n }\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"update\",\n items: pushed\n });\n }\n },\n\n pushDestroy: function(items) {\n var pushed = this._removeItems(items);\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"destroy\",\n items: pushed\n });\n }\n },\n\n _removeItems: function(itemsToRemove, removePristine) {\n if (!isArray(itemsToRemove)) {\n itemsToRemove = [itemsToRemove];\n }\n\n var shouldRemovePristine = typeof removePristine !== \"undefined\" ? removePristine : true;\n\n var destroyed = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n try {\n for (var idx = 0; idx < itemsToRemove.length; idx ++) {\n var item = itemsToRemove[idx];\n var model = this._createNewModel(item);\n var found = false;\n var index = idx;\n\n this._eachItem(this._data, function(items) {\n // Ensure all children of a parent are removed before the change event is triggered.\n if (index !== itemsToRemove.length - 1) {\n items.omitChangeEvent = true;\n items.omitCache = [];\n } else {\n items.omitChangeEvent = false;\n }\n\n for (var idx = 0; idx < items.length; idx++) {\n var item = items.at(idx);\n if (item.id === model.id) {\n /* When the change event is omitted, certain calculations such as 'total' are broken because only the last item reaches the change handler.\n Keep track of all child items that had their change event omitted and when the change is finally triggered, concat them to the result.*/\n if (items.omitChangeEvent) {\n items.omitCache.push(item);\n }\n destroyed.push(item);\n items.splice(idx, 1);\n found = true;\n break;\n }\n }\n });\n\n if (found && shouldRemovePristine) {\n this._removePristineForModel(model);\n this._destroyed.pop();\n }\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n\n return destroyed;\n },\n\n pushMove: function(index, items) {\n var pushed = this._moveItems(index, items);\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"update\",\n items: pushed\n });\n }\n },\n\n _moveItems: function(index, items) {\n if (!isArray(items)) {\n items = [items];\n }\n\n var moved = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n\n try {\n for (var i = 0; i < items.length; i ++) {\n var item = items[i];\n\n this._eachItem(this._data, function(dataItems) {\n for (var idx = 0; idx < dataItems.length; idx++) {\n var dataItem = dataItems.at(idx);\n if (dataItem.uid === item.uid) {\n moved.push(dataItem);\n dataItems.splice(index >= idx ? --index : index, 0, dataItems.splice(idx, 1)[0]);\n index++;\n break;\n }\n }\n });\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n\n return moved;\n },\n\n remove: function(model) {\n var result,\n that = this,\n hasGroups = that._isServerGrouped();\n\n if (hasGroups && model.uid && (!model.isNew || !model.isNew())) {\n that._pushInDestroyed(model);\n }\n\n this._eachItem(that._data, function(items) {\n result = removeModel(items, model);\n\n if (result && hasGroups) {\n return true;\n }\n });\n\n this._removeModelFromRanges(model);\n\n return model;\n },\n\n destroyed: function() {\n return this._destroyed;\n },\n\n created: function() {\n var idx,\n length,\n result = [],\n data = this._flatData(this._data, this.options.useRanges);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].isNew && data[idx].isNew() && !data[idx].notFetched) {\n result.push(data[idx]);\n }\n }\n return result;\n },\n\n updated: function() {\n var idx,\n length,\n result = [],\n data = this._flatData(this._data, this.options.useRanges);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if ((data[idx].isNew && !data[idx].isNew()) && data[idx].dirty) {\n result.push(data[idx]);\n }\n }\n return result;\n },\n\n sync: function() {\n var that = this,\n created = [],\n updated = [],\n destroyed = that._destroyed;\n\n var promise = $.Deferred().resolve().promise();\n\n if (that.online()) {\n\n if (!that.reader.model) {\n return promise;\n }\n\n created = that.created();\n updated = that.updated();\n\n var promises = [];\n\n if (that.options.batch && that.transport.submit) {\n promises = that._sendSubmit(created, updated, destroyed);\n } else {\n promises.push.apply(promises, that._send(\"create\", created));\n promises.push.apply(promises, that._send(\"update\", updated));\n promises.push.apply(promises, that._send(\"destroy\", destroyed));\n }\n\n promise = $.when\n .apply(null, promises)\n .then(function() {\n var idx, length, changedItems = [];\n\n for (idx = 0, length = arguments.length; idx < length; idx++) {\n if (arguments[idx]) {\n that._accept(arguments[idx]);\n changedItems = arguments[idx].models;\n }\n }\n\n that._storeData(true);\n\n that._syncEnd();\n\n that._change({ action: \"sync\", changedItems: changedItems });\n\n that.trigger(SYNC);\n\n if (that._isServerGroupPaged()) {\n that.read();\n }\n });\n } else {\n that._storeData(true);\n\n that._syncEnd();\n\n that._change({ action: \"sync\" });\n }\n\n return promise;\n },\n\n _syncEnd: noop,\n\n cancelChanges: function(model) {\n var that = this;\n\n if (model instanceof kendo.data.Model) {\n that._cancelModel(model);\n } else {\n that._destroyed = [];\n that._detachObservableParents();\n that._data = that._observe(that._pristineData);\n if (that.options.serverPaging) {\n that._total = that._pristineTotal;\n }\n\n that._ranges = [];\n that._addRange(that._data, 0);\n\n that._changesCanceled();\n\n that._change();\n\n that._markOfflineUpdatesAsDirty();\n\n if (that._isServerGrouped()) {\n that.read();\n }\n }\n },\n\n _changesCanceled: noop,\n\n _markOfflineUpdatesAsDirty: function() {\n var that = this;\n\n if (that.options.offlineStorage != null) {\n that._eachItem(that._data, function(items) {\n for (var idx = 0; idx < items.length; idx++) {\n var item = items.at(idx);\n if (item.__state__ == \"update\" || item.__state__ == \"create\") {\n item.dirty = true;\n }\n }\n });\n }\n },\n\n hasChanges: function() {\n var idx,\n length,\n data = this._flatData(this._data, this.options.useRanges);\n\n if (this._destroyed.length) {\n return true;\n }\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if ((data[idx].isNew && data[idx].isNew()) || data[idx].dirty) {\n return true;\n }\n }\n\n return false;\n },\n\n _accept: function(result) {\n var that = this,\n models = result.models,\n response = result.response,\n idx = 0,\n serverGroup = that._isServerGrouped(),\n pristine = that._pristineData,\n type = result.type,\n length;\n\n that.trigger(REQUESTEND, { response: response, type: type });\n\n if (response && !isEmptyObject(response)) {\n response = that.reader.parse(response);\n\n if (that._handleCustomErrors(response)) {\n return;\n }\n\n response = that.reader.data(response);\n\n if (!isArray(response)) {\n response = [response];\n }\n } else {\n response = $.map(models, function(model) { return model.toJSON(); } );\n }\n\n if (type === \"destroy\") {\n that._destroyed = [];\n }\n\n for (idx = 0, length = models.length; idx < length; idx++) {\n if (type !== \"destroy\") {\n models[idx].accept(response[idx]);\n\n if (type === \"create\") {\n pristine.push(serverGroup ? that._wrapInEmptyGroup(models[idx].toJSON()) : response[idx]);\n } else if (type === \"update\") {\n that._updatePristineForModel(models[idx], response[idx]);\n }\n } else {\n that._removePristineForModel(models[idx]);\n }\n }\n },\n\n _updatePristineForModel: function(model, values) {\n this._executeOnPristineForModel(model, function(index, items) {\n kendo.deepExtend(items[index], values);\n });\n },\n\n _executeOnPristineForModel: function(model, callback) {\n this._eachPristineItem(\n function(items) {\n var index = indexOfPristineModel(items, model);\n if (index > -1) {\n callback(index, items);\n return true;\n }\n });\n },\n\n _removePristineForModel: function(model) {\n this._executeOnPristineForModel(model, function(index, items) {\n items.splice(index, 1);\n });\n },\n\n _readData: function(data) {\n var read = !this._isServerGrouped() ? this.reader.data : this.reader.groups;\n return read.call(this.reader, data);\n },\n\n _eachPristineItem: function(callback) {\n var that = this;\n var options = that.options;\n var rangeSpan = that._getCurrentRangeSpan();\n\n that._eachItem(that._pristineData, callback);\n\n if (options.serverPaging && options.useRanges) {\n each(rangeSpan, function(i, range) {\n that._eachItem(range.pristineData, callback);\n });\n }\n },\n\n _eachItem: function(data, callback) {\n if (data && data.length) {\n if (this._isServerGrouped()) {\n eachGroupItems(data, callback);\n } else {\n callback(data);\n }\n }\n },\n\n _pristineForModel: function(model) {\n var pristine,\n idx,\n callback = function(items) {\n idx = indexOfPristineModel(items, model);\n if (idx > -1) {\n pristine = items[idx];\n return true;\n }\n };\n\n this._eachPristineItem(callback);\n\n return pristine;\n },\n\n _cancelModel: function(model) {\n var that = this;\n var pristine = this._pristineForModel(model);\n\n this._eachItem(this._data, function(items) {\n var idx = indexOfModel(items, model);\n if (idx >= 0) {\n if (pristine && (!model.isNew() || pristine.__state__)) {\n items[idx].accept(pristine);\n\n if (pristine.__state__ == \"update\") {\n items[idx].dirty = true;\n }\n\n } else {\n that._modelCanceled(model);\n\n items.splice(idx, 1);\n\n that._removeModelFromRanges(model);\n }\n }\n });\n },\n\n _modelCanceled: noop,\n\n _submit: function(promises, data) {\n var that = this;\n\n that.trigger(REQUESTSTART, { type: \"submit\" });\n\n that.trigger(PROGRESS);\n\n that.transport.submit(extend({\n success: function(response, type) {\n var promise = $.grep(promises, function(x) {\n return x.type == type;\n })[0];\n\n if (promise) {\n promise.resolve({\n response: response,\n models: promise.models,\n type: type\n });\n }\n },\n error: function(response, status, error) {\n for (var idx = 0; idx < promises.length; idx++) {\n promises[idx].reject(response);\n }\n\n that.error(response, status, error);\n }\n }, data));\n },\n\n _sendSubmit: function(created, updated, destroyed) {\n var that = this,\n promises = [];\n\n if (that.options.batch) {\n if (created.length) {\n promises.push($.Deferred(function(deferred) {\n deferred.type = \"create\";\n deferred.models = created;\n }));\n }\n\n if (updated.length) {\n promises.push($.Deferred(function(deferred) {\n deferred.type = \"update\";\n deferred.models = updated;\n }));\n }\n\n if (destroyed.length) {\n promises.push($.Deferred(function(deferred) {\n deferred.type = \"destroy\";\n deferred.models = destroyed;\n }));\n }\n\n that._submit(promises, {\n data: {\n created: that.reader.serialize(toJSON(created)),\n updated: that.reader.serialize(toJSON(updated)),\n destroyed: that.reader.serialize(toJSON(destroyed))\n }\n });\n }\n\n return promises;\n },\n\n _promise: function(data, models, type) {\n var that = this;\n\n return $.Deferred(function(deferred) {\n that.trigger(REQUESTSTART, { type: type });\n\n that.trigger(PROGRESS);\n\n that.transport[type].call(that.transport, extend({\n success: function(response) {\n deferred.resolve({\n response: response,\n models: models,\n type: type\n });\n },\n error: function(response, status, error) {\n deferred.reject(response);\n that.error(response, status, error);\n }\n }, data));\n }).promise();\n },\n\n _send: function(method, data) {\n var that = this,\n idx,\n length,\n promises = [],\n converted = that.reader.serialize(toJSON(data));\n\n if (that.options.batch) {\n if (data.length) {\n promises.push(that._promise( { data: { models: converted } }, data , method));\n }\n } else {\n for (idx = 0, length = data.length; idx < length; idx++) {\n promises.push(that._promise( { data: converted[idx] }, [ data[idx] ], method));\n }\n }\n\n return promises;\n },\n\n read: function(data) {\n var that = this, params = that._params(data);\n var deferred = $.Deferred();\n\n that._queueRequest(params, function() {\n var isPrevented = that.trigger(REQUESTSTART, { type: \"read\" });\n if (!isPrevented) {\n that.trigger(PROGRESS);\n\n that._ranges = [];\n that.trigger(\"reset\");\n if (that.online()) {\n that.transport.read({\n data: params,\n success: function(data) {\n that._ranges = [];\n that.success(data, params);\n\n deferred.resolve();\n },\n error: function() {\n var args = slice.call(arguments);\n\n that.error.apply(that, args);\n\n deferred.reject.apply(deferred, args);\n }\n });\n } else if (that.options.offlineStorage != null) {\n that.success(that.offlineData(), params);\n\n deferred.resolve();\n }\n } else {\n that._dequeueRequest();\n\n deferred.resolve(isPrevented);\n }\n });\n\n return deferred.promise();\n },\n\n _readAggregates: function(data) {\n return this.reader.aggregates(data);\n },\n\n success: function(data) {\n var that = this,\n options = that.options,\n items,\n replaceSubset;\n\n that.trigger(REQUESTEND, { response: data, type: \"read\" });\n\n if (that.online()) {\n data = that.reader.parse(data);\n\n if (that._handleCustomErrors(data)) {\n that._dequeueRequest();\n return;\n }\n\n that._total = that.reader.total(data);\n\n if (that._isServerGroupPaged()) {\n that._serverGroupsTotal = that._total;\n }\n\n if (that._pageSize > that._total) {\n that._pageSize = that._total;\n if (that.options.pageSize && that.options.pageSize > that._pageSize) {\n that._pageSize = that.options.pageSize;\n }\n }\n\n if (that._aggregate && options.serverAggregates) {\n that._aggregateResult = that._readAggregates(data);\n }\n\n data = that._readData(data);\n\n that._destroyed = [];\n } else {\n data = that._readData(data);\n\n items = [];\n var itemIds = {};\n var model = that.reader.model;\n var idField = model ? model.idField : \"id\";\n var idx;\n\n for (idx = 0; idx < this._destroyed.length; idx++) {\n var id = this._destroyed[idx][idField];\n itemIds[id] = id;\n }\n\n for (idx = 0; idx < data.length; idx++) {\n var item = data[idx];\n var state = item.__state__;\n if (state == \"destroy\") {\n if (!itemIds[item[idField]]) {\n this._pushInDestroyed(this._createNewModel(item));\n }\n } else {\n items.push(item);\n }\n }\n\n data = items;\n\n that._total = data.length;\n }\n\n that._pristineTotal = that._total;\n replaceSubset = that._skip && that._data.length && that._skip < that._data.length;\n\n if (that.options.endless) {\n if (replaceSubset) {\n that._pristineData.splice(that._skip, that._pristineData.length);\n }\n items = data.slice(0);\n for (var j = 0; j < items.length; j++) {\n that._pristineData.push(items[j]);\n }\n } else {\n that._pristineData = data.slice(0);\n }\n\n that._detachObservableParents();\n\n if (that.options.endless) {\n that._data.unbind(CHANGE, that._changeHandler);\n\n if (that._isServerGrouped() && that._data[that._data.length - 1].value === data[0].value) {\n fillLastGroup(that._data[that._data.length - 1], data[0]);\n data.shift();\n }\n\n data = that._observe(data);\n if (replaceSubset) {\n that._data.splice(that._skip, that._data.length);\n }\n for (var i = 0; i < data.length; i++) {\n that._data.push(data[i]);\n }\n that._data.bind(CHANGE, that._changeHandler);\n } else {\n that._data = that._observe(data);\n }\n\n that._markOfflineUpdatesAsDirty();\n\n that._storeData();\n\n that._addRange(that._data);\n\n that._process(that._data);\n\n that._dequeueRequest();\n },\n\n _detachObservableParents: function() {\n if (this._data && this._shouldDetachObservableParents) {\n for (var idx = 0; idx < this._data.length; idx++) {\n if (this._data[idx].parent) {\n this._data[idx].parent = noop;\n }\n }\n }\n },\n\n _storeData: function(updatePristine) {\n var serverGrouping = this._isServerGrouped();\n var model = this.reader.model;\n\n function items(data) {\n var state = [];\n\n for (var idx = 0; idx < data.length; idx++) {\n var dataItem = data.at(idx);\n var item = dataItem.toJSON();\n\n if (serverGrouping && dataItem.items) {\n item.items = items(dataItem.items);\n } else {\n item.uid = dataItem.uid;\n\n if (model) {\n if (dataItem.isNew()) {\n item.__state__ = \"create\";\n } else if (dataItem.dirty) {\n item.__state__ = \"update\";\n }\n }\n }\n state.push(item);\n }\n\n return state;\n }\n\n if (this.options.offlineStorage != null) {\n var state = items(this._data);\n\n var destroyed = [];\n\n for (var idx = 0; idx < this._destroyed.length; idx++) {\n var item = this._destroyed[idx].toJSON();\n item.__state__ = \"destroy\";\n destroyed.push(item);\n }\n\n this.offlineData(state.concat(destroyed));\n\n if (updatePristine) {\n this._pristineData = this.reader.reader ? this.reader.reader._wrapDataAccessBase(state) : this.reader._wrapDataAccessBase(state);\n }\n }\n },\n\n _addRange: function(data, skip) {\n var that = this,\n start = typeof (skip) !== \"undefined\" ? skip : (that._skip || 0),\n end,\n range = {\n data: data,\n pristineData: data.toJSON(),\n timestamp: that._timeStamp()\n };\n\n if (this._isGroupPaged()) {\n end = start + data.length;\n range.outerStart = start;\n range.outerEnd = end;\n } else {\n end = start + that._flatData(data, true).length;\n }\n\n range.start = start;\n range.end = end;\n that._ranges.push(range);\n that._sortRanges();\n\n if (that._isGroupPaged()) {\n if (!that._groupsFlat) {\n that._groupsFlat = [];\n }\n that._appendToGroupsFlat(range.data);\n that._updateOuterRangesLength();\n }\n },\n\n _appendToGroupsFlat: function(data) {\n var length = data.length;\n\n for (var i = 0; i < length; i++) {\n this._groupsFlat.push(data[i]);\n }\n },\n\n _getGroupByUid: function(uid) {\n var length = this._groupsFlat.length;\n var group;\n\n for (var i = 0; i < length; i++) {\n group = this._groupsFlat[i];\n if (group.uid === uid) {\n return group;\n }\n }\n },\n\n _sortRanges: function() {\n this._ranges.sort(function(x, y) {\n return x.start - y.start;\n });\n },\n\n error: function(xhr, status, errorThrown) {\n this._dequeueRequest();\n this.trigger(REQUESTEND, { });\n this.trigger(ERROR, { xhr: xhr, status: status, errorThrown: errorThrown });\n },\n\n _params: function(data) {\n var that = this,\n options = extend({\n take: that.take(),\n skip: that.skip(),\n page: that.page(),\n pageSize: that.pageSize(),\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate,\n groupPaging: !!that._groupPaging,\n isExcelExportRequest: that.options.isExcelExportRequest\n }, data);\n\n if (!that.options.serverPaging) {\n delete options.take;\n delete options.skip;\n delete options.page;\n delete options.pageSize;\n }\n\n if (!that.options.serverGrouping) {\n delete options.group;\n } else if (that.reader.model && options.group) {\n options.group = convertDescriptorsField(options.group, that.reader.model);\n }\n\n if (!that.options.serverFiltering) {\n delete options.filter;\n } else if (that.reader.model && options.filter) {\n options.filter = convertFilterDescriptorsField(options.filter, that.reader.model);\n }\n\n if (!that.options.serverSorting) {\n delete options.sort;\n } else if (that.reader.model && options.sort) {\n options.sort = convertDescriptorsField(options.sort, that.reader.model);\n }\n\n if (!that.options.serverAggregates) {\n delete options.aggregate;\n } else if (that.reader.model && options.aggregate) {\n options.aggregate = convertDescriptorsField(options.aggregate, that.reader.model);\n }\n\n if (!that.options.groupPaging || !(that.options.serverPaging && that.options.serverGrouping)) {\n delete options.groupPaging;\n }\n\n if (!that.options.isExcelExportRequest) {\n delete options.isExcelExportRequest;\n }\n\n return options;\n },\n\n _queueRequest: function(options, callback) {\n var that = this;\n if (!that._requestInProgress) {\n that._requestInProgress = true;\n that._pending = undefined$1;\n callback();\n } else {\n that._pending = { callback: callback.bind(that), options: options };\n }\n },\n\n _dequeueRequest: function() {\n var that = this;\n that._requestInProgress = false;\n if (that._pending) {\n that._queueRequest(that._pending.options, that._pending.callback);\n }\n },\n\n _handleCustomErrors: function(response) {\n if (this.reader.errors) {\n var errors = this.reader.errors(response);\n if (errors) {\n this.trigger(ERROR, { xhr: null, status: \"customerror\", errorThrown: \"custom error\", errors: errors });\n return true;\n }\n }\n return false;\n },\n\n _shouldWrap: function(data) {\n var model = this.reader.model;\n\n if (model && data.length) {\n return !(data[0] instanceof model);\n }\n\n return false;\n },\n\n _observe: function(data) {\n var that = this,\n model = that.reader.model;\n\n that._shouldDetachObservableParents = true;\n\n if (data instanceof ObservableArray) {\n that._shouldDetachObservableParents = false;\n if (that._shouldWrap(data)) {\n data.type = that.reader.model;\n data.wrapAll(data, data);\n }\n } else {\n var arrayType = that.pageSize() && !that.options.serverPaging ? LazyObservableArray : ObservableArray;\n data = new arrayType(data, that.reader.model);\n data.parent = function() { return that.parent(); };\n }\n\n if (that._isServerGrouped()) {\n wrapGroupItems(data, model);\n }\n\n if (that._changeHandler && that._data && that._data instanceof ObservableArray &&\n !(that.options.useRanges && that.options.serverPaging)) {\n that._data.unbind(CHANGE, that._changeHandler);\n } else {\n that._changeHandler = that._change.bind(that);\n }\n\n return data.bind(CHANGE, that._changeHandler);\n },\n\n _updateTotalForAction: function(action, items) {\n var that = this;\n\n var total = parseInt(that._total, 10);\n\n if (!isNumber(that._total)) {\n total = parseInt(that._pristineTotal, 10);\n }\n if (action === \"add\") {\n total += items.length;\n } else if (action === \"remove\") {\n total -= items.length;\n } else if (action !== \"itemchange\" && action !== \"sync\" && !that.options.serverPaging) {\n total = that._pristineTotal;\n } else if (action === \"sync\") {\n total = that._pristineTotal = parseInt(that._total, 10);\n }\n\n that._total = total;\n },\n\n _operationsForUpdatedFields: function() {\n const that = this,\n updatedFields = that._updatedFields || [],\n operations = {};\n\n let found = false,\n stringified;\n\n operations.sort = that._sort;\n operations.filter = that._filter;\n operations.group = that._group;\n operations.aggregate = that._aggregate;\n\n stringified = stringify(operations);\n found = updatedFields.some(u => stringified.indexOf((`\"field\":\"${u}\"`)) > -1);\n\n return !found;\n },\n\n _pushInDestroyed: function(model) {\n var isPushed = this._destroyed.find(function(item) {\n return item.uid === model.uid;\n });\n if (!isPushed) {\n this._destroyed.push(model);\n }\n },\n\n _change: function(e) {\n let that = this, idx, items, length, action = e ? e.action : \"\";\n\n if (action === \"remove\") {\n for (idx = 0, length = e.items.length; idx < length; idx++) {\n if (!e.items[idx].isNew || !e.items[idx].isNew()) {\n that._pushInDestroyed(e.items[idx]);\n }\n }\n }\n\n if (e) {\n items = e.items || [];\n e.partialUpdate = that._operationsForUpdatedFields() && !that._preventPartialUpdate;\n\n if (e.action === \"itemchange\" && items.some(i => i.dirtyFields)) {\n that._updatedFields = Object.keys(e.items[0].dirtyFields);\n }\n }\n\n if (that.options.autoSync && (action === \"add\" || action === \"remove\" || action === \"itemchange\")) {\n if (action === \"add\") {\n that._preventPartialUpdate = true;\n }\n\n var handler = function(args) {\n if (args.action === \"sync\") {\n that._preventPartialUpdate = false;\n that.unbind(\"change\", handler);\n that._updateTotalForAction(action, e.items);\n }\n };\n\n that.first(\"change\", handler);\n\n that.sync();\n\n } else {\n that._updateTotalForAction(action, e ? e.items : []);\n\n that._process(that._data, e);\n }\n },\n\n _calculateAggregates: function(data, options) {\n options = options || {};\n\n var query = new Query(data),\n aggregates = options.aggregate,\n filter = options.filter;\n\n if (filter) {\n query = query.filter(filter);\n }\n\n return query.aggregate(aggregates);\n },\n\n _process: function(data, e) {\n var that = this,\n options = {},\n result;\n\n if (that.options.serverPaging !== true) {\n options.skip = that._skip;\n options.take = that._take || that._pageSize;\n\n if (options.skip === undefined$1 && that._page !== undefined$1 && that._pageSize !== undefined$1) {\n options.skip = (that._page - 1) * that._pageSize;\n }\n\n if (that.options.useRanges) {\n options.skip = that.currentRangeStart();\n }\n }\n\n if (that.options.serverSorting !== true) {\n options.sort = that._sort;\n }\n\n if (that.options.serverFiltering !== true) {\n options.filter = that._filter;\n }\n\n if (that.options.serverGrouping !== true) {\n options.group = that._group;\n }\n\n if (that.options.serverAggregates !== true) {\n options.aggregate = that._aggregate;\n }\n\n if (that.options.serverGrouping) {\n that._clearEmptyGroups(data);\n }\n\n options.groupPaging = that._groupPaging;\n\n if (that._isGroupPaged() && e && (e.action === \"page\" || e.action === \"expandGroup\" || e.action === \"collapseGroup\")) {\n result = that._queryProcess(data, {\n aggregate: that._aggregate\n });\n } else {\n result = that._queryProcess(data, options);\n }\n\n if (that._filter && e && e.action === \"add\") {\n var model = e.items[0],\n resultData = result.data;\n\n if (that._isGrouped() && !this._isServerGrouped()) {\n resultData = flattenGroups(resultData);\n }\n\n var modelIsInView = resultData.find(function(item) {\n return item.uid === model.uid;\n });\n\n if (!modelIsInView) {\n result.data.splice(model.index, 0, that._isGrouped() ? that._wrapInEmptyGroup(model) : model);\n result.total++;\n }\n }\n\n if (that.options.serverAggregates !== true) {\n // for performance reasons, calculate aggregates for part of the data only after query process\n // this is necessary in the TreeList when paging\n that._aggregateResult = that._calculateAggregates(result.dataToAggregate || data, options);\n }\n\n that._setView(result, options, e);\n\n that._setFilterTotal(result.total, false);\n\n e = e || {};\n\n e.items = e.items || that._view;\n\n that.trigger(CHANGE, e);\n },\n\n _setView: function(result, options, e) {\n var that = this;\n\n if (that._isGroupPaged() && !that._isServerGrouped()) {\n if (e && (e.action === \"page\" || e.action === \"expandGroup\" || e.action === \"collapseGroup\")) {\n that.view(result.data);\n that._updateOuterRangesLength();\n } else {\n that._ranges = [];\n var query = new Query(result.data);\n that._addRange(that._observe(result.data));\n\n if (options.skip + options.take > result.data.length) {\n options.skip = Math.max(0, result.data.length - options.take);\n }\n\n that.view(query.range(options.skip, options.take).toArray());\n }\n\n } else {\n that.view(result.data);\n }\n },\n\n _clearEmptyGroups: function(data) {\n for (var idx = data.length - 1; idx >= 0; idx--) {\n var group = data[idx];\n if (group.hasSubgroups) {\n this._clearEmptyGroups(group.items);\n }\n\n if (group.items && !group.items.length && !group.itemCount) {\n splice.apply(group.parent(), [idx, 1]);\n }\n }\n },\n\n _queryProcess: function(data, options) {\n if (this.options.inPlaceSort) {\n return Query.process(data, options, this.options.inPlaceSort);\n }\n else {\n return Query.process(data, options);\n }\n },\n\n _mergeState: function(options) {\n var that = this;\n\n if (options !== undefined$1) {\n that._pageSize = options.pageSize;\n that._page = options.page;\n that._sort = options.sort;\n that._filter = options.filter;\n that._group = options.group;\n that._aggregate = options.aggregate;\n that._skip = that._currentRangeStart = options.skip;\n that._take = options.take;\n\n if (that._skip === undefined$1) {\n that._skip = that._currentRangeStart = that.skip();\n options.skip = that.skip();\n }\n\n if (that._take === undefined$1 && that._pageSize !== undefined$1) {\n that._take = that._pageSize;\n options.take = that._take;\n }\n\n if (that.options.virtual) {\n options.virtual = that.options.virtual;\n }\n\n if (options.sort) {\n that._sort = options.sort = normalizeSort(options.sort);\n that._sortFields = sortFields(options.sort);\n }\n\n if (options.filter) {\n that._filter = options.filter = (that.options.accentFoldingFiltering && !$.isEmptyObject(options.filter)) ? $.extend({}, normalizeFilter(options.filter), { accentFoldingFiltering: that.options.accentFoldingFiltering }) : normalizeFilter(options.filter);\n }\n\n if (options.group) {\n that._group = options.group = normalizeGroup(options.group);\n }\n if (options.aggregate) {\n that._aggregate = options.aggregate = normalizeAggregate(options.aggregate);\n }\n }\n return options;\n },\n\n query: function(options) {\n var result;\n var remote = this.options.serverSorting || this.options.serverPaging || this.options.serverFiltering || this.options.serverGrouping || this.options.serverAggregates;\n\n if (remote || ((this._data === undefined$1 || this._data.length === 0) && !this._destroyed.length)) {\n if (this.options.endless) {\n var moreItemsCount = options.pageSize - this.pageSize();\n if (moreItemsCount > 0) {\n moreItemsCount = this.pageSize();\n options.page = options.pageSize / moreItemsCount;\n options.pageSize = moreItemsCount;\n } else {\n options.page = 1;\n this.options.endless = false;\n }\n }\n return this.read(this._mergeState(options));\n }\n\n var isPrevented = this.trigger(REQUESTSTART, { type: \"read\" });\n if (!isPrevented) {\n this.trigger(PROGRESS);\n if (options) {\n options.groupPaging = this._groupPaging;\n }\n result = this._queryProcess(this._data, this._mergeState(options));\n\n this._setFilterTotal(result.total, true);\n\n this._aggregateResult = this._calculateAggregates(result.dataToAggregate || this._data, options);\n this._setView(result, options);\n this.trigger(REQUESTEND, { type: \"read\" });\n this.trigger(CHANGE, { items: result.data, action: options ? options.action : \"\" });\n }\n\n return $.Deferred().resolve(isPrevented).promise();\n },\n\n _hasExpandedSubGroups: function(group) {\n var result = false;\n var length = group.items ? group.items.length : 0;\n\n if (!group.hasSubgroups) {\n return false;\n }\n\n for (var i = 0; i < length; i++) {\n if (this._groupsState[group.items[i].uid]) {\n result = true;\n break;\n }\n }\n return result;\n },\n\n _findGroupedRange: function(data, result, options, parents, callback) {\n var that = this;\n var length = data.length;\n var group;\n var current;\n var itemsLength;\n var groupCount;\n var itemsToSkip;\n\n for (var i = 0; i < length; i++) {\n group = data[i];\n\n if (options.taken >= options.take) {\n break;\n }\n\n if (!that._getGroupByUid(group.uid)) {\n that._groupsFlat.push(group);\n }\n\n if (that._groupsState[group.uid]) {\n if (that._isServerGroupPaged()) {\n if (that._fetchGroupItems(group, options, parents, callback)) {\n that._fetchingGroupItems = true;\n return;\n }\n groupCount = (group.subgroupCount || group.itemCount) + 1;\n itemsToSkip = options.skip - options.skipped;\n if (!that._hasExpandedSubGroups(group) && itemsToSkip > groupCount) {\n options.skipped += groupCount;\n continue;\n }\n }\n\n if (options.includeParents && options.skipped < options.skip) {\n options.skipped++;\n group.excludeHeader = true;\n } else if (options.includeParents) {\n options.taken++;\n group.excludeHeader = false;\n }\n\n if (group.hasSubgroups && group.items && group.items.length) {\n group.currentItems = [];\n\n if (!parents) {\n parents = [];\n }\n parents.push(group);\n\n that._findGroupedRange(group.items, group.currentItems, options, parents, callback);\n parents.pop();\n\n if (group.currentItems.length || options.taken > 0) {\n result.push(group);\n } else {\n group.excludeHeader = false;\n }\n } else {\n current = [];\n itemsLength = group.items.length;\n\n for (var j = 0; j < itemsLength; j++) {\n if (options.skipped < options.skip) {\n options.skipped++;\n continue;\n }\n\n if (options.taken >= options.take) {\n break;\n }\n current.push(group.items[j]);\n options.taken++;\n }\n\n if (current.length || options.taken > 0) {\n group.currentItems = current;\n result.push(group);\n } else {\n group.excludeHeader = false;\n }\n }\n } else {\n if (options.skipped < options.skip) {\n options.skipped++;\n continue;\n }\n result.push(group);\n options.taken++;\n }\n }\n },\n\n _expandedSubGroupItemsCount: function(group, end, includeCurrentItems) {\n var that = this;\n var result = 0;\n var subGroup;\n var endSpecified = typeof end === \"number\";\n var length = endSpecified ? end : group.subgroupCount;\n var temp;\n\n if (!group.hasSubgroups) {\n return result;\n }\n\n for (var i = 0; i < length; i++) {\n subGroup = group.items[i];\n\n if (!subGroup) {\n break;\n }\n\n if (subGroup.hasSubgroups && that._groupsState[group.uid]) {\n temp = that._expandedSubGroupItemsCount(subGroup, length, true);\n result += temp;\n\n if (endSpecified) {\n length -= temp;\n }\n } else if (!subGroup.hasSubgroups && that._groupsState[subGroup.uid]) {\n temp = subGroup.items ? subGroup.items.length : 0;\n result += temp;\n if (endSpecified) {\n length -= temp;\n }\n }\n\n if (includeCurrentItems) {\n result += 1;\n if (endSpecified) {\n length -= 1;\n }\n }\n\n if (endSpecified && result > length) {\n return result;\n }\n }\n\n return result;\n },\n\n _fetchGroupItems: function(group, options, parents, callback) {\n var that = this;\n var groupItemsSkip;\n var firstItem;\n var lastItem;\n var groupItemCount = group.hasSubgroups ? group.subgroupCount : group.itemCount;\n var take = options.take;\n var skipped = options.skipped;\n var pageSize = that.take();\n var expandedSubGroupItemsCount;\n\n if (options.includeParents) {\n if (skipped < options.skip) {\n skipped += 1;\n } else {\n take -= 1;\n }\n }\n\n if (!group.items || (group.items && !group.items.length)) {\n that.getGroupItems(group, options, parents, callback, 0);\n return true;\n } else {\n expandedSubGroupItemsCount = this._expandedSubGroupItemsCount(group, options.skip - skipped);\n groupItemsSkip = Math.max(options.skip - (skipped + expandedSubGroupItemsCount), 0);\n\n if (groupItemsSkip >= groupItemCount) {\n return false;\n }\n\n firstItem = group.items[groupItemsSkip];\n lastItem = group.items[Math.min(groupItemsSkip + take, groupItemCount - 1)];\n\n if (firstItem.notFetched) {\n that.getGroupItems(group, options, parents, callback, groupItemsSkip, math.round((groupItemsSkip + pageSize) / pageSize));\n return true;\n }\n\n if (lastItem.notFetched) {\n that.getGroupItems(group, options, parents, callback, math.max(math.floor((groupItemsSkip + pageSize) / pageSize), 0) * pageSize, math.round((groupItemsSkip + pageSize) / pageSize));\n return true;\n }\n }\n },\n\n getGroupItems: function(group, options, parents, callback, groupItemsSkip, page) {\n var that = this;\n var take;\n var filter;\n var data;\n var subgroups;\n\n if (!group.items) {\n group.items = [];\n }\n\n take = that.take();\n filter = this._composeItemsFilter(group, parents);\n data = {\n page: page || 1,\n pageSize: take,\n skip: groupItemsSkip,\n take: take,\n filter: filter,\n aggregate: that._aggregate,\n sort: that._sort\n };\n subgroups = that.findSubgroups(group);\n\n if (subgroups && subgroups.length) {\n data.group = subgroups;\n }\n\n data.groupPaging = true;\n\n clearTimeout(that._timeout);\n that._timeout = setTimeout(function() {\n that._queueRequest(data, function() {\n if (!that.trigger(REQUESTSTART, {\n type: \"read\"\n })) {\n that.transport.read({\n data: data,\n success: that._groupItemsSuccessHandler(group, options.skip, that.take(), callback, groupItemsSkip),\n error: function() {\n var args = slice.call(arguments);\n that.error.apply(that, args);\n }\n });\n } else {\n that._dequeueRequest();\n }\n });\n }, 100);\n },\n\n _groupItemsSuccessHandler: function(group, skip, take, callback, groupItemsSkip) {\n var that = this;\n var timestamp = that._timeStamp();\n callback = isFunction(callback) ? callback : noop;\n var totalField = that.options.schema && that.options.schema.total ? that.options.schema.total : \"Total\";\n\n return function(data) {\n var temp;\n var model = Model.define(that.options.schema.model);\n var totalCount;\n\n that._dequeueRequest();\n\n that.trigger(REQUESTEND, {\n response: data,\n type: \"read\"\n });\n\n if (isFunction(totalField)) {\n totalCount = totalField(data);\n } else {\n totalCount = data[totalField];\n }\n\n data = that.reader.parse(data);\n\n if (group.hasSubgroups) {\n temp = that.reader.groups(data);\n group.subgroupCount = totalCount;\n } else {\n temp = that.reader.data(data);\n temp = temp.map(function(item) {\n return new model(item);\n });\n }\n\n group.items.omitChangeEvent = true;\n for (var i = 0; i < totalCount; i++) {\n if (i >= groupItemsSkip && i < (groupItemsSkip + take) ) {\n group.items.splice(i, 1, temp[i - groupItemsSkip]);\n } else {\n if (!group.items[i]) {\n group.items.splice(i, 0, { notFetched: true });\n }\n }\n }\n group.items.omitChangeEvent = false;\n\n that._updateRangePristineData(group);\n that._fetchingGroupItems = false;\n\n if (!group.countAdded) {\n that._serverGroupsTotal += totalCount;\n group.countAdded = true;\n }\n\n that.range(skip, take, callback, \"expandGroup\");\n\n if (timestamp >= that._currentRequestTimeStamp || !that._skipRequestsInProgress) {\n that.trigger(CHANGE, {});\n }\n };\n },\n\n findSubgroups: function(group) {\n var indexOfCurrentGroup = this._group.map(function(g) {\n return g.field;\n }).indexOf(group.field);\n\n return this._group.slice(indexOfCurrentGroup + 1, this._group.length);\n },\n\n _composeItemsFilter: function(group, parents) {\n var filter = {\n logic: \"and\",\n filters: []\n };\n\n if (this.filter()) {\n filter.filters.push(this.filter());\n }\n\n filter = extend(true, {}, filter);\n filter.filters.push({\n field: group.field,\n operator: \"eq\",\n value: group.value\n });\n\n if (parents) {\n for (var i = 0; i < parents.length; i++) {\n filter.filters.push({\n field: parents[i].field,\n operator: \"eq\",\n value: parents[i].value\n });\n }\n }\n\n return filter;\n },\n\n _updateRangePristineData: function(group) {\n var that = this;\n var ranges = that._ranges;\n var rangesLength = ranges.length;\n var temp;\n var currentGroup;\n var range;\n var dataLength;\n var indexes;\n var currIdx;\n\n for (var i = 0; i < rangesLength; i++) {\n range = ranges[i];\n dataLength = range.data.length;\n indexes = [];\n temp = null;\n\n for (var j = 0; j < dataLength; j++) {\n currentGroup = range.data[j];\n indexes.push(j);\n\n if ((currentGroup.uid === group.uid) || (currentGroup.hasSubgroups && currentGroup.items.length && that._containsSubGroup(currentGroup, group, indexes))) {\n break;\n }\n indexes.pop();\n }\n\n if (indexes.length) {\n temp = ranges[i].pristineData;\n\n while (indexes.length > 1) {\n currIdx = indexes.splice(0, 1)[0];\n temp = temp[currIdx].items;\n }\n temp[indexes[0]] = that._cloneGroup(group);\n break;\n }\n }\n },\n\n _containsSubGroup: function(group, subgroup, indexes) {\n var that = this;\n var length = group.items.length;\n var currentSubGroup;\n\n if (group.hasSubgroups && length) {\n for (var i = 0; i < length; i++) {\n currentSubGroup = group.items[i];\n indexes.push(i);\n if (currentSubGroup.uid === subgroup.uid ||\n (currentSubGroup.hasSubgroups &&\n currentSubGroup.items.length &&\n that._containsSubGroup(currentSubGroup, subgroup, indexes))) {\n return true;\n }\n indexes.pop();\n }\n }\n\n },\n\n _cloneGroup: function(group) {\n var that = this;\n group = typeof group.toJSON == \"function\" ? group.toJSON() : group;\n\n if (group.items && group.items.length) {\n group.items = group.items.map(function(item) {\n return that._cloneGroup(item);\n });\n }\n\n return group;\n },\n\n _setFilterTotal: function(filterTotal, setDefaultValue) {\n var that = this;\n\n if (!that.options.serverFiltering) {\n if (filterTotal !== undefined$1) {\n that._total = filterTotal;\n } else if (setDefaultValue) {\n that._total = that._data.length;\n }\n }\n },\n\n fetch: function(callback) {\n var that = this;\n var fn = function(isPrevented) {\n if (isPrevented !== true && isFunction(callback)) {\n callback.call(that);\n }\n };\n\n return this._query().done(fn);\n },\n\n _query: function(options) {\n var that = this;\n\n return that.query(extend({}, {\n page: that.page(),\n pageSize: that.pageSize(),\n sort: that.sort(),\n filter: that.filter(),\n group: that.group(),\n aggregate: that.aggregate()\n }, options));\n },\n\n next: function(options) {\n var that = this,\n page = that.page(),\n total = that.total();\n\n options = options || {};\n\n if (!page || (total && page + 1 > that.totalPages())) {\n return;\n }\n\n that._skip = that._currentRangeStart = page * that.take();\n\n page += 1;\n options.page = page;\n\n that._query(options);\n\n return page;\n },\n\n prev: function(options) {\n var that = this,\n page = that.page();\n\n options = options || {};\n\n if (!page || page === 1) {\n return;\n }\n\n that._skip = that._currentRangeStart = that._skip - that.take();\n\n page -= 1;\n options.page = page;\n\n that._query(options);\n\n return page;\n },\n\n page: function(val) {\n var that = this,\n skip;\n\n if (val !== undefined$1) {\n val = math.max(math.min(math.max(val, 1), that.totalPages()), 1);\n var take = that.take();\n\n if (that._isGroupPaged()) {\n val -= 1;\n that.range(val * take, take, null, \"page\");\n return;\n }\n that._query(that._pageableQueryOptions({ page: val }));\n return;\n }\n skip = that.skip();\n\n return skip !== undefined$1 ? math.round((skip || 0) / (that.take() || 1)) + 1 : undefined$1;\n },\n\n pageSize: function(val) {\n var that = this;\n\n if (val !== undefined$1) {\n that._query(that._pageableQueryOptions({ pageSize: val, page: 1 }));\n return;\n }\n\n return that.take();\n },\n\n sort: function(val) {\n var that = this;\n\n if (val !== undefined$1) {\n that.trigger(\"sort\");\n that._query({ sort: val });\n return;\n }\n\n return that._sort;\n },\n\n filter: function(val) {\n var that = this;\n\n if (val === undefined$1) {\n return that._filter;\n }\n\n that.trigger(\"reset\");\n that._query({ filter: val, page: 1 });\n },\n\n group: function(val) {\n var that = this;\n var options = { group: val };\n\n if (that._groupPaging) {\n // clear ranges if ungrouping is performed\n if (val !== undefined$1 && (!val || !val.length) ) {\n that._ranges = [];\n }\n options.page = 1;\n }\n\n if (val !== undefined$1) {\n that._query(options);\n return;\n }\n\n return that._group;\n },\n\n getGroupsFlat: function(data) {\n var idx,\n result = [],\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n var group = data[idx];\n if (group.hasSubgroups) {\n result = result.concat(this.getGroupsFlat(group.items));\n }\n\n result.push(group);\n }\n\n return result;\n },\n\n total: function() {\n return parseInt(this._total || 0, 10);\n },\n\n groupsTotal: function(includeExpanded) {\n var that = this;\n\n if (!that._group.length) {\n return that.total();\n }\n\n if (that._isServerGrouped()) {\n if (that._serverGroupsTotal) {\n return that._serverGroupsTotal;\n }\n that._serverGroupsTotal = that.total();\n\n return that._serverGroupsTotal;\n }\n\n return that._calculateGroupsTotal(that._ranges.length ? that._ranges[0].data : [], includeExpanded);\n },\n\n _calculateGroupsTotal: function(groups, includeExpanded, itemsField, ignoreState) {\n var that = this;\n itemsField = itemsField || \"items\";\n var total;\n var length;\n\n if (that._group.length && groups) {\n total = 0;\n length = groups.length;\n\n for (var i = 0; i < length; i++) {\n total += that.groupCount(groups[i], includeExpanded, itemsField, ignoreState);\n }\n that._groupsTotal = total;\n return total;\n }\n\n that._groupsTotal = that._data.length;\n return that._groupsTotal;\n },\n\n groupCount: function(group, includeExpanded, itemsField, ignoreState) {\n var that = this;\n var total = 0;\n\n if (group.hasSubgroups && that._groupsState[group.uid]) {\n if (includeExpanded && !group.excludeHeader || ignoreState) {\n total += 1;\n }\n\n group[itemsField].forEach(function(subgroup) {\n total += that.groupCount(subgroup, includeExpanded, itemsField, ignoreState);\n });\n } else {\n if (that._groupsState[group.uid]) {\n if (includeExpanded && !group.excludeHeader || ignoreState) {\n total++;\n }\n total += group[itemsField] ? group[itemsField].length : 0;\n } else {\n total++;\n }\n }\n return total;\n },\n\n countGroupRange: function(range) {\n var total = 0;\n var length = range.length;\n\n for (var i = 0; i < length; i++) {\n total += this.groupCount(range[i], true);\n }\n\n return total;\n },\n\n aggregate: function(val) {\n var that = this;\n\n if (val !== undefined$1) {\n that._query({ aggregate: val });\n return;\n }\n\n return that._aggregate;\n },\n\n aggregates: function() {\n var result = this._aggregateResult;\n\n if (isEmptyObject(result)) {\n result = this._emptyAggregates(this.aggregate());\n }\n\n return result;\n },\n\n _emptyAggregates: function(aggregates) {\n var result = {};\n\n if (!isEmptyObject(aggregates)) {\n var aggregate = {};\n\n if (!isArray(aggregates)) {\n aggregates = [aggregates];\n }\n\n for (var idx = 0; idx < aggregates.length; idx++) {\n aggregate[aggregates[idx].aggregate] = 0;\n result[aggregates[idx].field] = aggregate;\n }\n }\n\n return result;\n },\n\n _pageableQueryOptions: function(options) {\n return options;\n },\n\n _wrapInEmptyGroup: function(model) {\n var groups = this.group(),\n parent,\n group,\n idx,\n length;\n\n for (idx = groups.length - 1, length = 0; idx >= length; idx--) {\n group = groups[idx];\n parent = {\n value: model.get ? model.get(group.field) : model[group.field],\n field: group.field,\n items: parent ? [parent] : [model],\n hasSubgroups: !!parent,\n aggregates: this._emptyAggregates(group.aggregates)\n };\n }\n\n return parent;\n },\n\n totalPages: function() {\n var that = this,\n pageSize = that.pageSize() || that.total(),\n total = that._isGroupPaged() ? that.groupsTotal(true) : that.total();\n\n return math.ceil((total || 0) / pageSize);\n },\n\n inRange: function(skip, take) {\n var that = this,\n end = math.min(skip + take, that.total());\n\n if (!that.options.serverPaging && that._data.length > 0) {\n return true;\n }\n\n return that._findRange(skip, end).length > 0;\n },\n\n lastRange: function() {\n var ranges = this._ranges;\n return ranges[ranges.length - 1] || { start: 0, end: 0, data: [] };\n },\n\n firstItemUid: function() {\n var ranges = this._ranges;\n return ranges.length && ranges[0].data.length && ranges[0].data[0].uid;\n },\n\n enableRequestsInProgress: function() {\n this._skipRequestsInProgress = false;\n },\n\n _timeStamp: function() {\n return new Date().getTime();\n },\n\n range: function(skip, take, callback, action) {\n this._currentRequestTimeStamp = this._timeStamp();\n this._skipRequestsInProgress = true;\n var total = this._isGroupPaged() ? this.groupsTotal(true) : this.total();\n\n if (action === \"expandGroup\" || action === \"collapseGroup\") {\n this._updateOuterRangesLength();\n }\n\n skip = math.min(skip || 0, total);\n callback = isFunction(callback) ? callback : noop;\n\n var that = this,\n pageSkip = math.max(math.floor(skip / take), 0) * take,\n size = math.min(pageSkip + take, total),\n data;\n\n data = that._findRange(skip, math.min(skip + take, total), callback);\n\n if ((data.length || total === 0) && !that._fetchingGroupItems) {\n that._processRangeData(data, skip, take, that._originalPageSkip || pageSkip, that._originalSize || size, {\n action: action\n });\n that._originalPageSkip = null;\n that._originalSize = null;\n callback();\n return;\n }\n\n if (that._isGroupPaged()) {\n that._originalPageSkip = pageSkip;\n that._originalSize = size;\n\n pageSkip = math.max(math.floor(that._adjustPageSkip(skip, take) / take), 0) * take;\n size = math.min(pageSkip + take, total);\n }\n\n if (take !== undefined$1 && !that._fetchingGroupItems) {\n if ((that._isGroupPaged() && !that._groupRangeExists(pageSkip, take)) || !that._rangeExists(pageSkip, size)) {\n that.prefetch(pageSkip, take, function() {\n if (skip > pageSkip && size < that.total() && !that._rangeExists(size, math.min(size + take, that.total()))) {\n that.prefetch(size, take, function() {\n that.range(skip, take, callback );\n });\n } else {\n that.range(skip, take, callback);\n }\n });\n } else if (pageSkip < skip) {\n that.prefetch(size, take, function() {\n that.range(skip, take, callback );\n });\n }\n }\n },\n\n _findRange: function(start, end, callback) {\n var that = this,\n ranges = that._ranges,\n range,\n data = [],\n skipIdx,\n takeIdx,\n startIndex,\n endIndex,\n rangeData,\n rangeEnd,\n processed,\n options = that.options,\n remote = options.serverSorting || options.serverPaging || options.serverFiltering || options.serverGrouping || options.serverAggregates,\n flatData,\n count,\n length,\n groupMapOptions = {\n take: end - start,\n skip: start,\n skipped: 0,\n taken: 0,\n includeParents: true\n },\n prevRangeEnd,\n isGroupPaged = that._isGroupPaged(),\n startField = isGroupPaged ? \"outerStart\" : \"start\",\n endField = isGroupPaged ? \"outerEnd\" : \"end\",\n currentDataLength;\n\n for (skipIdx = 0, length = ranges.length; skipIdx < length; skipIdx++) {\n range = ranges[skipIdx];\n\n if (isGroupPaged) {\n if (range.outerStart >= end) {\n return [];\n }\n\n if (start > range.outerEnd) {\n groupMapOptions.skipped += range.outerEnd - (prevRangeEnd || 0);\n prevRangeEnd = range.outerEnd;\n continue;\n }\n\n if (typeof prevRangeEnd !== \"undefined\" && prevRangeEnd != range.outerStart) {\n groupMapOptions.skipped += range.outerStart - prevRangeEnd;\n }\n\n if (groupMapOptions.skipped > groupMapOptions.skip) {\n return [];\n }\n\n if (typeof prevRangeEnd === \"undefined\" && start > 0 && range.start > 0) {\n groupMapOptions.skipped = range.outerStart;\n }\n\n takeIdx = skipIdx;\n while (true) {\n this._findGroupedRange(range.data, data, groupMapOptions, null, callback);\n currentDataLength = that._calculateGroupsTotal(data, true, \"currentItems\");\n\n if (currentDataLength >= groupMapOptions.take) {\n return data;\n }\n\n if (that._fetchingGroupItems) {\n return [];\n }\n takeIdx++;\n\n if (ranges[takeIdx] && ranges[takeIdx].outerStart === range.outerEnd) {\n range = ranges[takeIdx];\n } else {\n break;\n }\n }\n } else if (start >= range[startField] && start <= range[endField]) {\n count = 0;\n\n for (takeIdx = skipIdx; takeIdx < length; takeIdx++) {\n range = ranges[takeIdx];\n flatData = that._flatData(range.data, true);\n\n if (flatData.length && start + count >= range.start) {\n rangeData = range.data;\n rangeEnd = range.end;\n\n if (!remote) {\n if (options.inPlaceSort) {\n processed = that._queryProcess(range.data, { filter: that.filter() });\n } else {\n var sort = normalizeGroupWithoutCompare(that.group() || []).concat(normalizeSort(that.sort() || []));\n processed = that._queryProcess(range.data, { sort: sort, filter: that.filter() });\n }\n flatData = rangeData = processed.data;\n\n if (processed.total !== undefined$1) {\n rangeEnd = processed.total;\n }\n }\n\n startIndex = 0;\n if (start + count > range.start) {\n startIndex = (start + count) - range.start;\n }\n endIndex = flatData.length;\n if (rangeEnd > end) {\n endIndex = endIndex - (rangeEnd - end);\n }\n count += endIndex - startIndex;\n data = that._mergeGroups(data, rangeData, startIndex, endIndex);\n\n if (end <= range.end && count == end - start) {\n return data;\n }\n }\n }\n break;\n }\n prevRangeEnd = range.outerEnd;\n }\n return [];\n },\n\n _getRangesMismatch: function(pageSkip) {\n var that = this;\n var ranges = that._ranges;\n var mismatch = 0;\n var i = 0;\n\n while (true) {\n var range = ranges[i];\n if (!range || range.outerStart > pageSkip) {\n break;\n }\n\n if (range.outerEnd != range.end) {\n mismatch = range.outerEnd - range.end;\n }\n i++;\n }\n\n return mismatch;\n },\n\n _mergeGroups: function(data, range, skip, take) {\n if (this._isServerGrouped()) {\n var temp = range.toJSON(),\n prevGroup;\n\n if (data.length) {\n prevGroup = data[data.length - 1];\n }\n\n mergeGroups(prevGroup, temp, skip, take);\n\n return data.concat(temp);\n }\n return data.concat(range.slice(skip, take));\n },\n\n _processRangeData: function(data, skip, take, pageSkip, size, eventData) {\n var that = this;\n\n that._pending = undefined$1;\n\n that._skip = skip > that.skip() && !that._omitPrefetch ? math.min(size, (that.totalPages() - 1) * that.take()) : pageSkip;\n\n that._currentRangeStart = skip;\n\n that._take = take;\n\n var paging = that.options.serverPaging;\n var sorting = that.options.serverSorting;\n var filtering = that.options.serverFiltering;\n var aggregates = that.options.serverAggregates;\n try {\n that.options.serverPaging = true;\n if (!that._isServerGrouped() && !(that.group() && that.group().length)) {\n that.options.serverSorting = true;\n }\n that.options.serverFiltering = true;\n that.options.serverPaging = true;\n that.options.serverAggregates = true;\n\n if (paging) {\n that._detachObservableParents();\n that._data = data = that._observe(data);\n }\n that._process(data, eventData);\n } finally {\n that.options.serverPaging = paging;\n that.options.serverSorting = sorting;\n that.options.serverFiltering = filtering;\n that.options.serverAggregates = aggregates;\n }\n },\n\n skip: function() {\n var that = this;\n\n if (that._skip === undefined$1) {\n return (that._page !== undefined$1 ? (that._page - 1) * (that.take() || 1) : undefined$1);\n }\n return that._skip;\n },\n\n currentRangeStart: function() {\n return this._currentRangeStart || 0;\n },\n\n take: function() {\n return this._take || this._pageSize;\n },\n\n _prefetchSuccessHandler: function(skip, size, callback, force) {\n var that = this;\n var timestamp = that._timeStamp();\n\n return function(data) {\n var found = false,\n range = { start: skip, end: size, data: [], timestamp: that._timeStamp() },\n idx,\n length,\n temp;\n\n that._dequeueRequest();\n\n that.trigger(REQUESTEND, { response: data, type: \"read\" });\n\n data = that.reader.parse(data);\n\n temp = that._readData(data);\n\n if (temp.length) {\n for (idx = 0, length = that._ranges.length; idx < length; idx++) {\n if (that._ranges[idx].start === skip) {\n found = true;\n range = that._ranges[idx];\n\n if (!that._isGroupPaged()) {\n range.pristineData = temp;\n range.data = that._observe(temp);\n range.end = range.start + that._flatData(range.data, true).length;\n that._sortRanges();\n }\n\n break;\n }\n }\n\n if (!found) {\n that._addRange(that._observe(temp), skip);\n }\n }\n\n that._total = that.reader.total(data);\n\n if (force || (timestamp >= that._currentRequestTimeStamp || !that._skipRequestsInProgress)) {\n if (callback && temp.length) {\n callback();\n } else {\n that.trigger(CHANGE, {});\n }\n }\n };\n },\n\n prefetch: function(skip, take, callback) {\n var that = this,\n size = math.min(skip + take, that.total()),\n options = {\n take: take,\n skip: skip,\n page: skip / take + 1,\n pageSize: take,\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate\n };\n\n\n if ((that._isGroupPaged() && !that._isServerGrouped() && that._groupRangeExists(skip, size))) {\n if (callback) {\n callback();\n }\n return;\n }\n\n if ((that._isServerGroupPaged() && !that._groupRangeExists(skip, size)) || !that._rangeExists(skip, size)) {\n clearTimeout(that._timeout);\n\n that._timeout = setTimeout(function() {\n that._queueRequest(options, function() {\n if (!that.trigger(REQUESTSTART, { type: \"read\" })) {\n if (that._omitPrefetch) {\n that.trigger(PROGRESS);\n }\n that.transport.read({\n data: that._params(options),\n success: that._prefetchSuccessHandler(skip, size, callback),\n error: function() {\n var args = slice.call(arguments);\n that.error.apply(that, args);\n }\n });\n } else {\n that._dequeueRequest();\n }\n });\n }, 100);\n } else if (callback) {\n callback();\n }\n },\n\n _multiplePrefetch: function(skip, take, callback) {\n var that = this,\n size = math.min(skip + take, that.total()),\n options = {\n take: take,\n skip: skip,\n page: skip / take + 1,\n pageSize: take,\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate\n };\n\n if (!that._rangeExists(skip, size)) {\n if (!that.trigger(REQUESTSTART, { type: \"read\" })) {\n that.transport.read({\n data: that._params(options),\n success: that._prefetchSuccessHandler(skip, size, callback, true)\n });\n }\n } else if (callback) {\n callback();\n }\n },\n\n _adjustPageSkip: function(start, take) {\n var that = this;\n var prevRange = that._getPrevRange(start);\n var result;\n var total = that.total();\n var mismatch;\n\n if (prevRange) {\n mismatch = that._getRangesMismatch(start);\n\n if (!mismatch) {\n return start;\n }\n start -= mismatch;\n }\n result = math.max(math.floor(start / take), 0) * take;\n\n if (result > total) {\n while (true) {\n result -= take;\n if (result < total) {\n break;\n }\n }\n }\n return result;\n },\n\n _getNextRange: function(end) {\n var that = this,\n ranges = that._ranges,\n idx,\n length;\n\n for (idx = 0, length = ranges.length; idx < length; idx++) {\n if (ranges[idx].start <= end && ranges[idx].end >= end) {\n return ranges[idx];\n }\n }\n },\n\n _getPrevRange: function(start) {\n var that = this,\n ranges = that._ranges,\n idx,\n range,\n length = ranges.length;\n\n for (idx = length - 1; idx >= 0; idx--) {\n if (ranges[idx].outerStart <= start) {\n range = ranges[idx];\n break;\n }\n\n }\n\n return range;\n },\n\n _rangeExists: function(start, end) {\n var that = this,\n ranges = that._ranges,\n idx,\n length;\n\n for (idx = 0, length = ranges.length; idx < length; idx++) {\n if (ranges[idx].start <= start && ranges[idx].end >= end) {\n return true;\n }\n }\n\n return false;\n },\n\n _groupRangeExists: function(start, end) {\n var that = this,\n ranges = that._ranges,\n idx,\n length,\n availableItemsCount = 0,\n total = that.groupsTotal(true);\n\n if (end > total && !that._isServerGrouped()) {\n end = total;\n }\n\n for (idx = 0, length = ranges.length; idx < length; idx++) {\n var range = ranges[idx];\n if (range.outerStart <= start && range.outerEnd >= start) {\n availableItemsCount += range.outerEnd - start;\n } else if (range.outerStart <= end && range.outerEnd >= end) {\n availableItemsCount += end - range.outerStart;\n }\n }\n\n return availableItemsCount >= end - start;\n },\n\n _getCurrentRangeSpan: function() {\n var that = this;\n var ranges = that._ranges;\n var start = that.currentRangeStart();\n var end = start + (that.take() || 0);\n var rangeSpan = [];\n var range;\n var idx;\n var length = ranges.length;\n\n for (idx = 0; idx < length; idx++) {\n range = ranges[idx];\n\n if ((range.start <= start && range.end >= start) || (range.start >= start && range.start <= end)) {\n rangeSpan.push(range);\n }\n }\n\n return rangeSpan;\n },\n\n _removeModelFromRanges: function(model) {\n var that = this;\n var range;\n\n for (var idx = 0, length = this._ranges.length; idx < length; idx++) {\n range = this._ranges[idx];\n\n that._removeModelFromRange(range, model);\n }\n\n that._updateRangesLength();\n },\n\n _removeModelFromRange: function(range, model) {\n this._eachItem(range.data, function(data) {\n if (!data) {\n return;\n }\n for (var idx = 0; idx < data.length; idx++) {\n var dataItem = data[idx];\n\n if (dataItem.uid && dataItem.uid == model.uid) {\n [].splice.call(data, idx, 1);\n break;\n }\n }\n });\n },\n\n _insertModelInRange: function(index, model) {\n var that = this;\n var ranges = that._ranges || [];\n var rangesLength = ranges.length;\n var range;\n var i;\n\n for (i = 0; i < rangesLength; i++) {\n range = ranges[i];\n\n if (range.start <= index && range.end >= index) {\n if (!that._getByUid(model.uid, range.data)) {\n if (that._isServerGrouped()) {\n range.data.splice(index, 0, that._wrapInEmptyGroup(model));\n } else {\n range.data.splice(index, 0, model);\n }\n }\n\n break;\n }\n }\n\n that._updateRangesLength();\n },\n\n _updateRangesLength: function() {\n var that = this;\n var ranges = that._ranges || [];\n var rangesLength = ranges.length;\n var mismatchFound = false;\n var mismatchLength = 0;\n var lengthDifference = 0;\n var rangeLength;\n var range;\n var i;\n\n for (i = 0; i < rangesLength; i++) {\n range = ranges[i];\n rangeLength = that._isGroupPaged() ? range.data.length : that._flatData(range.data, true).length;\n lengthDifference = rangeLength - math.abs(range.end - range.start);\n\n if (!mismatchFound && lengthDifference !== 0) {\n mismatchFound = true;\n mismatchLength = lengthDifference;\n range.end += mismatchLength;\n continue;\n }\n\n if (mismatchFound) {\n range.start += mismatchLength;\n range.end += mismatchLength;\n }\n }\n },\n\n _updateOuterRangesLength: function() {\n var that = this;\n var ranges = that._ranges || [];\n var rangesLength = ranges.length;\n var mismatchLength = 0;\n var range;\n var i;\n var prevRange;\n var rangeLength;\n\n for (i = 0; i < rangesLength; i++) {\n range = ranges[i];\n rangeLength = that._isGroupPaged() ? that._calculateGroupsTotal(range.data, true, \"items\", true) : that._flatData(range.data, true).length;\n\n if (prevRange) {\n if (prevRange.end != range.start) {\n mismatchLength = range.start - prevRange.end;\n }\n range.outerStart = prevRange.outerEnd + mismatchLength;\n mismatchLength = 0;\n } else {\n range.outerStart = range.start;\n }\n\n range.outerEnd = range.outerStart + rangeLength;\n prevRange = range;\n }\n }\n });\n\n var Transport = {};\n\n Transport.create = function(options, data, dataSource) {\n var transport,\n transportOptions = options.transport ? $.extend({}, options.transport) : null;\n\n if (transportOptions) {\n transportOptions.read = typeof transportOptions.read === STRING ? { url: transportOptions.read } : transportOptions.read;\n\n if (options.type === \"jsdo\") {\n transportOptions.dataSource = dataSource;\n }\n\n if (options.type) {\n kendo.data.transports = kendo.data.transports || {};\n kendo.data.schemas = kendo.data.schemas || {};\n\n if (!kendo.data.transports[options.type]) {\n kendo.logToConsole(\"Unknown DataSource transport type '\" + options.type + \"'.\\nVerify that registration scripts for this type are included after Kendo UI on the page.\", \"warn\");\n } else if (!isPlainObject(kendo.data.transports[options.type])) {\n transport = new kendo.data.transports[options.type](extend(transportOptions, { data: data }));\n } else {\n transportOptions = extend(true, {}, kendo.data.transports[options.type], transportOptions);\n }\n\n options.schema = extend(true, {}, kendo.data.schemas[options.type], options.schema);\n }\n\n if (!transport) {\n transport = isFunction(transportOptions.read) ? transportOptions : new RemoteTransport(transportOptions);\n }\n } else {\n transport = new LocalTransport({ data: options.data || [] });\n }\n return transport;\n };\n\n DataSource.create = function(options) {\n if (isArray(options) || options instanceof ObservableArray) {\n options = { data: options };\n }\n\n var dataSource = options || {},\n data = dataSource.data,\n fields = dataSource.fields,\n table = dataSource.table,\n select = dataSource.select,\n idx,\n length,\n model = {},\n field;\n\n if (!data && fields && !dataSource.transport) {\n if (table) {\n data = inferTable(table, fields);\n } else if (select) {\n data = inferSelect(select, fields);\n\n if (dataSource.group === undefined$1 && data[0] && data[0].optgroup !== undefined$1) {\n dataSource.group = \"optgroup\";\n }\n }\n }\n\n if (kendo.data.Model && fields && (!dataSource.schema || !dataSource.schema.model)) {\n for (idx = 0, length = fields.length; idx < length; idx++) {\n field = fields[idx];\n if (field.type) {\n model[field.field] = field;\n }\n }\n\n if (!isEmptyObject(model)) {\n dataSource.schema = extend(true, dataSource.schema, { model: { fields: model } });\n }\n }\n\n dataSource.data = data;\n\n select = null;\n dataSource.select = null;\n table = null;\n dataSource.table = null;\n\n return dataSource instanceof DataSource ? dataSource : new DataSource(dataSource);\n };\n\n function inferSelect(select, fields) {\n select = $(select)[0];\n var options = select.options;\n var firstField = fields[0];\n var secondField = fields[1];\n\n var data = [];\n var idx, length;\n var optgroup;\n var option;\n var record;\n var value;\n\n for (idx = 0, length = options.length; idx < length; idx++) {\n record = {};\n option = options[idx];\n optgroup = option.parentNode;\n\n if (optgroup === select) {\n optgroup = null;\n }\n\n if (option.disabled || (optgroup && optgroup.disabled)) {\n continue;\n }\n\n if (optgroup) {\n record.optgroup = optgroup.label;\n }\n\n record[firstField.field] = option.text;\n\n value = option.attributes.value;\n\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n\n record[secondField.field] = value;\n\n data.push(record);\n }\n\n return data;\n }\n\n function inferTable(table, fields) {\n var tbody = $(table)[0].tBodies[0],\n rows = tbody ? tbody.rows : [],\n idx,\n length,\n fieldIndex,\n fieldCount = fields.length,\n data = [],\n cells,\n record,\n cell,\n empty;\n\n for (idx = 0, length = rows.length; idx < length; idx++) {\n record = {};\n empty = true;\n cells = rows[idx].cells;\n\n for (fieldIndex = 0; fieldIndex < fieldCount; fieldIndex++) {\n cell = cells[fieldIndex];\n if (cell.nodeName.toLowerCase() !== \"th\") {\n empty = false;\n record[fields[fieldIndex].field] = cell.innerHTML;\n }\n }\n if (!empty) {\n data.push(record);\n }\n }\n\n return data;\n }\n\n var Node = Model.define({\n idField: \"id\",\n\n init: function(value) {\n var that = this,\n hasChildren = that.hasChildren || value && value.hasChildren,\n childrenField = \"items\",\n childrenOptions = {};\n\n kendo.data.Model.fn.init.call(that, value);\n\n if (typeof that.children === STRING) {\n childrenField = that.children;\n }\n\n childrenOptions = {\n schema: {\n data: childrenField,\n model: {\n hasChildren: hasChildren,\n id: that.idField,\n fields: that.fields\n }\n }\n };\n\n if (typeof that.children !== STRING) {\n extend(childrenOptions, that.children);\n }\n\n childrenOptions.data = value;\n\n if (!hasChildren) {\n hasChildren = childrenOptions.schema.data;\n }\n\n if (typeof hasChildren === STRING) {\n hasChildren = kendo.getter(hasChildren);\n }\n\n if (isFunction(hasChildren)) {\n var hasChildrenObject = hasChildren.call(that, that);\n\n if (hasChildrenObject && hasChildrenObject.length === 0) {\n that.hasChildren = false;\n } else {\n that.hasChildren = !!hasChildrenObject;\n }\n }\n\n that._childrenOptions = childrenOptions;\n\n if (that.hasChildren) {\n that._initChildren();\n }\n\n that._loaded = !!(value && value._loaded);\n },\n\n _initChildren: function() {\n var that = this;\n var children, transport, parameterMap;\n\n if (!(that.children instanceof HierarchicalDataSource)) {\n children = that.children = new HierarchicalDataSource(that._childrenOptions);\n\n transport = children.transport;\n parameterMap = transport.parameterMap;\n\n transport.parameterMap = function(data, type) {\n data[that.idField || \"id\"] = that.id;\n\n if (parameterMap) {\n data = parameterMap.call(that, data, type);\n }\n\n return data;\n };\n\n children.parent = function() {\n return that;\n };\n\n children.bind(CHANGE, function(e) {\n e.node = e.node || that;\n that.trigger(CHANGE, e);\n });\n\n children.bind(ERROR, function(e) {\n var collection = that.parent();\n\n if (collection) {\n e.node = e.node || that;\n collection.trigger(ERROR, e);\n }\n });\n\n children.bind(ITEMSLOADED, function(e) {\n var collection = that.parent();\n\n if (collection) {\n collection.trigger(ITEMSLOADED, e);\n }\n });\n\n that._updateChildrenField();\n }\n },\n\n append: function(model) {\n this._initChildren();\n this.loaded(true);\n this.children.add(model);\n },\n\n hasChildren: false,\n\n level: function() {\n var parentNode = this.parentNode(),\n level = 0;\n\n while (parentNode && parentNode.parentNode) {\n level++;\n parentNode = parentNode.parentNode ? parentNode.parentNode() : null;\n }\n\n return level;\n },\n\n _updateChildrenField: function() {\n var fieldName = this._childrenOptions.schema.data;\n\n this[fieldName || \"items\"] = this.children.data();\n },\n\n _childrenLoaded: function() {\n this._loaded = true;\n\n this._updateChildrenField();\n },\n\n load: function() {\n var options = {};\n var method = \"_query\";\n var children, promise;\n\n if (this.hasChildren) {\n this._initChildren();\n\n children = this.children;\n\n options[this.idField || \"id\"] = this.id;\n\n if (!this._loaded) {\n children._data = undefined$1;\n method = \"read\";\n }\n\n children.one(CHANGE, this._childrenLoaded.bind(this));\n\n if (this._matchFilter) {\n options.filter = { field: '_matchFilter', operator: 'eq', value: true };\n }\n\n promise = children[method](options);\n if (!this._loaded) {\n this.trigger(ITEMLOAD, { promise: promise, node: this });\n }\n } else {\n this.loaded(true);\n }\n\n return promise || $.Deferred().resolve().promise();\n },\n\n parentNode: function() {\n var array = this.parent();\n\n return array.parent();\n },\n\n loaded: function(value) {\n if (value !== undefined$1) {\n this._loaded = value;\n } else {\n return this._loaded;\n }\n },\n\n shouldSerialize: function(field) {\n return Model.fn.shouldSerialize.call(this, field) &&\n field !== \"children\" &&\n field !== \"_loaded\" &&\n field !== \"hasChildren\" &&\n field !== \"_childrenOptions\";\n }\n });\n\n function dataMethod(name) {\n return function() {\n var data = this._data,\n result = DataSource.fn[name].apply(this, slice.call(arguments));\n\n if (this._data != data) {\n this._attachBubbleHandlers();\n }\n\n return result;\n };\n }\n\n var HierarchicalDataSource = DataSource.extend({\n init: function(options) {\n var node = Node.define({\n children: options\n });\n\n if (options.filter && !options.serverFiltering) {\n this._hierarchicalFilter = options.filter;\n options.filter = null;\n }\n\n DataSource.fn.init.call(this, extend(true, {}, { schema: { modelBase: node, model: node } }, options));\n\n this._attachBubbleHandlers();\n },\n\n _attachBubbleHandlers: function() {\n var that = this;\n\n that._data.bind(ERROR, function(e) {\n that.trigger(ERROR, e);\n });\n\n that._data.bind(ITEMSLOADED, function(e) {\n that.trigger(ITEMSLOADED, e);\n });\n },\n\n loading: function() {\n if (this._data) {\n return this._data.loading() || this._childrenLoading();\n }\n return false;\n },\n\n _childrenLoading: function() {\n var isLoading = false;\n this._data.forEach(function(node) {\n if (node.hasChildren && node.children.loading()) {\n isLoading = true;\n }\n });\n return isLoading;\n },\n\n read: function(data) {\n var result = DataSource.fn.read.call(this, data);\n\n if (this._hierarchicalFilter) {\n if (this._data && this._data.length > 0) {\n this.filter(this._hierarchicalFilter);\n } else {\n this.options.filter = this._hierarchicalFilter;\n this._filter = normalizeFilter(this.options.filter);\n this._hierarchicalFilter = null;\n }\n }\n\n return result;\n },\n\n remove: function(node) {\n var parentNode = node.parentNode(),\n dataSource = this,\n result;\n\n if (parentNode && parentNode._initChildren) {\n dataSource = parentNode.children;\n }\n\n result = DataSource.fn.remove.call(dataSource, node);\n\n if (parentNode && !dataSource.data().length) {\n parentNode.hasChildren = false;\n }\n\n return result;\n },\n\n success: dataMethod(\"success\"),\n\n data: dataMethod(\"data\"),\n\n insert: function(index, model) {\n var parentNode = this.parent();\n\n if (parentNode && parentNode._initChildren) {\n parentNode.hasChildren = true;\n parentNode._initChildren();\n }\n\n return DataSource.fn.insert.call(this, index, model);\n },\n\n filter: function(val) {\n if (val === undefined$1) {\n return this._filter;\n }\n\n if (!this.options.serverFiltering && this._markHierarchicalQuery(val)) {\n val = { logic: \"or\", filters: [val, { field: '_matchFilter', operator: 'equals', value: true }] };\n }\n\n this.trigger(\"reset\");\n this._query({ filter: val, page: 1 });\n },\n\n _markHierarchicalQuery: function(expressions) {\n var compiled;\n var accentFoldingFiltering = this.options.accentFoldingFiltering;\n\n expressions = accentFoldingFiltering ? $.extend({}, normalizeFilter(expressions), { accentFoldingFiltering: accentFoldingFiltering }) : normalizeFilter(expressions);\n\n if (!expressions || expressions.filters.length === 0) {\n this._updateHierarchicalFilter(function() {return true;});\n return false;\n }\n\n compiled = Query.filterExpr(expressions, { noEval: true });\n\n this._updateHierarchicalFilter(compiled);\n return true;\n },\n\n _updateHierarchicalFilter: function(filter) {\n var current;\n var data = this._data;\n var result = false;\n\n for (var idx = 0; idx < data.length; idx++) {\n current = data[idx];\n\n if (current.hasChildren) {\n current._matchFilter = current.children._updateHierarchicalFilter(filter);\n if (!current._matchFilter) {\n current._matchFilter = filter(current);\n }\n } else {\n current._matchFilter = filter(current);\n }\n\n if (current._matchFilter) {\n result = true;\n }\n }\n return result;\n },\n\n _find: function(method, value) {\n var idx, length, node, children;\n var data = this._data;\n\n if (!data) {\n return;\n }\n\n node = DataSource.fn[method].call(this, value);\n\n if (node) {\n return node;\n }\n\n data = this._flatData(this._data);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n children = data[idx].children;\n\n if (!(children instanceof HierarchicalDataSource)) {\n continue;\n }\n\n node = children[method](value);\n\n if (node) {\n return node;\n }\n }\n },\n\n get: function(id) {\n return this._find(\"get\", id);\n },\n\n getByUid: function(uid) {\n return this._find(\"getByUid\", uid);\n }\n });\n\n function inferList(list, fields) {\n var items = $(list).children(),\n idx,\n length,\n data = [],\n record,\n textField = fields[0].field,\n urlField = fields[1] && fields[1].field,\n spriteCssClassField = fields[2] && fields[2].field,\n imageUrlField = fields[3] && fields[3].field,\n item,\n id,\n textChild,\n className,\n children;\n\n function elements(collection, tagName) {\n return collection.filter(tagName).add(collection.find(tagName));\n }\n\n for (idx = 0, length = items.length; idx < length; idx++) {\n record = { _loaded: true };\n item = items.eq(idx);\n\n textChild = item[0].firstChild;\n children = item.children();\n list = children.filter(\"ul\");\n children = children.filter(\":not(ul)\");\n\n id = item.attr(\"data-id\");\n\n if (id) {\n record.id = id;\n }\n\n if (textChild) {\n record[textField] = textChild.nodeType == 3 ? textChild.nodeValue : children.text();\n }\n\n if (urlField) {\n record[urlField] = elements(children, \"a\").attr(\"href\");\n }\n\n if (imageUrlField) {\n record[imageUrlField] = elements(children, \"img\").attr(\"src\");\n }\n\n if (spriteCssClassField) {\n className = elements(children, \".k-sprite\").prop(\"className\");\n record[spriteCssClassField] = className && kendo.trim(className.replace(\"k-sprite\", \"\"));\n }\n\n if (list.length) {\n record.items = inferList(list.eq(0), fields);\n }\n\n if (item.attr(\"data-hasChildren\") == \"true\") {\n record.hasChildren = true;\n }\n\n data.push(record);\n }\n\n return data;\n }\n\n HierarchicalDataSource.create = function(options) {\n options = options && options.push ? { data: options } : options;\n\n var dataSource = options || {},\n data = dataSource.data,\n fields = dataSource.fields,\n list = dataSource.list;\n\n if (data && data._dataSource) {\n return data._dataSource;\n }\n\n if (!data && fields && !dataSource.transport) {\n if (list) {\n data = inferList(list, fields);\n }\n }\n\n dataSource.data = data;\n\n return dataSource instanceof HierarchicalDataSource ? dataSource : new HierarchicalDataSource(dataSource);\n };\n\n var Buffer = kendo.Observable.extend({\n init: function(dataSource, viewSize, disablePrefetch) {\n kendo.Observable.fn.init.call(this);\n\n this._prefetching = false;\n this.dataSource = dataSource;\n this.prefetch = !disablePrefetch;\n\n var buffer = this;\n\n dataSource.bind(\"change\", function() {\n buffer._change();\n });\n\n dataSource.bind(\"reset\", function() {\n buffer._reset();\n });\n\n this._syncWithDataSource();\n\n this.setViewSize(viewSize);\n },\n\n setViewSize: function(viewSize) {\n this.viewSize = viewSize;\n this._recalculate();\n },\n\n at: function(index) {\n var pageSize = this.pageSize,\n itemPresent = true;\n\n if (index >= this.total()) {\n this.trigger(\"endreached\", { index: index });\n return null;\n }\n\n if (!this.useRanges) {\n return this.dataSource.view()[index];\n }\n if (this.useRanges) {\n // out of range request\n if (index < this.dataOffset || index >= this.skip + pageSize) {\n itemPresent = this.range(Math.floor(index / pageSize) * pageSize);\n }\n\n // prefetch\n if (index === this.prefetchThreshold) {\n this._prefetch();\n }\n\n // mid-range jump - prefetchThreshold and nextPageThreshold may be equal, do not change to else if\n if (index === this.midPageThreshold) {\n this.range(this.nextMidRange, true);\n }\n // next range jump\n else if (index === this.nextPageThreshold) {\n this.range(this.nextFullRange);\n }\n // pull-back\n else if (index === this.pullBackThreshold) {\n if (this.offset === this.skip) { // from full range to mid range\n this.range(this.previousMidRange);\n } else { // from mid range to full range\n this.range(this.previousFullRange);\n }\n }\n\n if (itemPresent) {\n return this.dataSource.at(index - this.dataOffset);\n } else {\n this.trigger(\"endreached\", { index: index });\n return null;\n }\n }\n },\n\n indexOf: function(item) {\n return this.dataSource.data().indexOf(item) + this.dataOffset;\n },\n\n total: function() {\n return parseInt(this.dataSource.total(), 10);\n },\n\n next: function() {\n var buffer = this,\n pageSize = buffer.pageSize,\n offset = buffer.skip - buffer.viewSize + pageSize,\n pageSkip = math.max(math.floor(offset / pageSize), 0) * pageSize;\n\n this.offset = offset;\n this.dataSource.prefetch(pageSkip, pageSize, function() {\n buffer._goToRange(offset, true);\n });\n },\n\n range: function(offset, nextRange) {\n if (this.offset === offset) {\n return true;\n }\n\n var buffer = this,\n pageSize = this.pageSize,\n pageSkip = math.max(math.floor(offset / pageSize), 0) * pageSize,\n dataSource = this.dataSource;\n\n if (nextRange) {\n pageSkip += pageSize;\n }\n\n if (dataSource.inRange(offset, pageSize)) {\n this.offset = offset;\n this._recalculate();\n this._goToRange(offset);\n return true;\n } else if (this.prefetch) {\n dataSource.prefetch(pageSkip, pageSize, function() {\n buffer.offset = offset;\n buffer._recalculate();\n buffer._goToRange(offset, true);\n });\n return false;\n }\n\n return true;\n },\n\n syncDataSource: function() {\n var offset = this.offset;\n this.offset = null;\n this.range(offset);\n },\n\n destroy: function() {\n this.unbind();\n },\n\n _prefetch: function() {\n var buffer = this,\n pageSize = this.pageSize,\n prefetchOffset = this.skip + pageSize,\n dataSource = this.dataSource;\n\n if (!dataSource.inRange(prefetchOffset, pageSize) && !this._prefetching && this.prefetch) {\n this._prefetching = true;\n this.trigger(\"prefetching\", { skip: prefetchOffset, take: pageSize });\n\n dataSource.prefetch(prefetchOffset, pageSize, function() {\n buffer._prefetching = false;\n buffer.trigger(\"prefetched\", { skip: prefetchOffset, take: pageSize });\n });\n }\n },\n\n _goToRange: function(offset, expanding) {\n if (this.offset !== offset) {\n return;\n }\n\n this.dataOffset = offset;\n this._expanding = expanding;\n this.dataSource.range(offset, this.pageSize);\n this.dataSource.enableRequestsInProgress();\n },\n\n _reset: function() {\n this._syncPending = true;\n },\n\n _change: function() {\n var dataSource = this.dataSource;\n\n this.length = this.useRanges ? dataSource.lastRange().end : dataSource.view().length;\n\n if (this._syncPending) {\n this._syncWithDataSource();\n this._recalculate();\n this._syncPending = false;\n this.trigger(\"reset\", { offset: this.offset });\n }\n\n this.trigger(\"resize\");\n\n if (this._expanding) {\n this.trigger(\"expand\");\n }\n\n delete this._expanding;\n },\n\n _syncWithDataSource: function() {\n var dataSource = this.dataSource;\n\n this._firstItemUid = dataSource.firstItemUid();\n this.dataOffset = this.offset = dataSource.skip() || 0;\n this.pageSize = dataSource.pageSize();\n this.useRanges = dataSource.options.serverPaging;\n },\n\n _recalculate: function() {\n var pageSize = this.pageSize,\n offset = this.offset,\n viewSize = this.viewSize,\n skip = Math.ceil(offset / pageSize) * pageSize;\n\n this.skip = skip;\n this.midPageThreshold = skip + pageSize - 1;\n this.nextPageThreshold = skip + viewSize - 1;\n this.prefetchThreshold = skip + Math.floor(pageSize / 3 * 2);\n this.pullBackThreshold = this.offset - 1;\n\n this.nextMidRange = skip + pageSize - viewSize;\n this.nextFullRange = skip;\n this.previousMidRange = offset - viewSize;\n this.previousFullRange = skip - pageSize;\n }\n });\n\n var BatchBuffer = kendo.Observable.extend({\n init: function(dataSource, batchSize) {\n var batchBuffer = this;\n\n kendo.Observable.fn.init.call(batchBuffer);\n\n this.dataSource = dataSource;\n this.batchSize = batchSize;\n this._total = 0;\n\n this.buffer = new Buffer(dataSource, batchSize * 3);\n\n this.buffer.bind({\n \"endreached\": function(e) {\n batchBuffer.trigger(\"endreached\", { index: e.index });\n },\n \"prefetching\": function(e) {\n batchBuffer.trigger(\"prefetching\", { skip: e.skip, take: e.take });\n },\n \"prefetched\": function(e) {\n batchBuffer.trigger(\"prefetched\", { skip: e.skip, take: e.take });\n },\n \"reset\": function() {\n batchBuffer._total = 0;\n batchBuffer.trigger(\"reset\");\n },\n \"resize\": function() {\n batchBuffer._total = Math.ceil(this.length / batchBuffer.batchSize);\n batchBuffer.trigger(\"resize\", { total: batchBuffer.total(), offset: this.offset });\n }\n });\n },\n\n syncDataSource: function() {\n this.buffer.syncDataSource();\n },\n\n at: function(index) {\n var buffer = this.buffer,\n skip = index * this.batchSize,\n take = this.batchSize,\n view = [],\n item;\n\n if (buffer.offset > skip) {\n buffer.at(buffer.offset - 1);\n }\n\n for (var i = 0; i < take; i++) {\n item = buffer.at(skip + i);\n\n if (item === null) {\n break;\n }\n\n view.push(item);\n }\n\n return view;\n },\n\n total: function() {\n return this._total;\n },\n\n destroy: function() {\n this.buffer.destroy();\n this.unbind();\n }\n });\n\n extend(true, kendo.data, {\n readers: {\n json: DataReader\n },\n Query: Query,\n DataSource: DataSource,\n HierarchicalDataSource: HierarchicalDataSource,\n Node: Node,\n Comparer: Comparer,\n ObservableObject: ObservableObject,\n ObservableArray: ObservableArray,\n LazyObservableArray: LazyObservableArray,\n LocalTransport: LocalTransport,\n RemoteTransport: RemoteTransport,\n Cache: Cache,\n DataReader: DataReader,\n Model: Model,\n Buffer: Buffer,\n BatchBuffer: BatchBuffer\n });\n })(window.kendo.jQuery);\n var kendo$S = kendo;\n\n var __meta__$R = {\n id: \"binder\",\n name: \"MVVM\",\n category: \"framework\",\n description: \"Model View ViewModel (MVVM) is a design pattern which helps developers separate the Model (the data) from the View (the UI).\",\n depends: [ \"core\", \"data\" ]\n };\n\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n encode = kendo.htmlEncode,\n Observable = kendo.Observable,\n ObservableObject = kendo.data.ObservableObject,\n ObservableArray = kendo.data.ObservableArray,\n toString = {}.toString,\n binders = {},\n Class = kendo.Class,\n VALUE = \"value\",\n SOURCE = \"source\",\n EVENTS = \"events\",\n CHECKED = \"checked\",\n CSS = \"css\",\n deleteExpando = true,\n FUNCTION = \"function\",\n CHANGE = \"change\";\n\n (function() {\n var a = document.createElement(\"a\");\n\n try {\n delete a.test;\n } catch (e) {\n deleteExpando = false;\n }\n })();\n\n var Binding = Observable.extend( {\n init: function(parents, path) {\n var that = this;\n\n Observable.fn.init.call(that);\n\n that.source = parents[0];\n that.parents = parents;\n that.path = path;\n that.dependencies = {};\n that.dependencies[path] = true;\n that.observable = that.source instanceof Observable;\n\n that._access = function(e) {\n that.dependencies[e.field] = true;\n };\n\n if (that.observable) {\n that._change = function(e) {\n that.change(e);\n };\n\n that.source.bind(CHANGE, that._change);\n }\n },\n\n _parents: function() {\n var parents = this.parents;\n var value = this.get();\n\n if (value && typeof value.parent == \"function\") {\n var parent = value.parent();\n\n if ($.inArray(parent, parents) < 0) {\n parents = [parent].concat(parents);\n }\n }\n\n return parents;\n },\n\n change: function(e) {\n var dependency,\n ch,\n field = e.field,\n that = this;\n\n if (that.path === \"this\") {\n that.trigger(CHANGE, e);\n } else {\n for (dependency in that.dependencies) {\n if (dependency.indexOf(field) === 0) {\n ch = dependency.charAt(field.length);\n\n if (!ch || ch === \".\" || ch === \"[\") {\n that.trigger(CHANGE, e);\n break;\n }\n }\n }\n }\n },\n\n start: function(source) {\n source.bind(\"get\", this._access);\n },\n\n stop: function(source) {\n source.unbind(\"get\", this._access);\n },\n\n get: function() {\n\n var that = this,\n source = that.source,\n index = 0,\n path = that.path,\n result = source;\n\n if (!that.observable) {\n return result;\n }\n\n that.start(that.source);\n\n result = source.get(path);\n\n // Traverse the observable hierarchy if the binding is not resolved at the current level.\n while (result === undefined$1 && source) {\n\n source = that.parents[++index];\n\n if (source instanceof ObservableObject) {\n result = source.get(path);\n }\n }\n\n // second pass try to get the parent from the object hierarchy\n if (result === undefined$1) {\n source = that.source; //get the initial source\n\n while (result === undefined$1 && source) {\n source = source.parent();\n\n if (source instanceof ObservableObject) {\n result = source.get(path);\n }\n }\n }\n\n // If the result is a function - invoke it\n if (typeof result === \"function\") {\n index = path.lastIndexOf(\".\");\n\n // If the function is a member of a nested observable object make that nested observable the context (this) of the function\n if (index > 0) {\n source = source.get(path.substring(0, index));\n }\n\n // Invoke the function\n that.start(source);\n\n if (source !== that.source) {\n result = result.call(source, that.source);\n } else {\n result = result.call(source);\n }\n\n that.stop(source);\n }\n\n // If the binding is resolved by a parent object\n if (source && source !== that.source) {\n\n that.currentSource = source; // save parent object\n\n // Listen for changes in the parent object\n source.unbind(CHANGE, that._change)\n .bind(CHANGE, that._change);\n }\n\n that.stop(that.source);\n\n return result;\n },\n\n set: function(value) {\n var source = this.currentSource || this.source;\n\n var field = kendo.getter(this.path)(source);\n\n if (typeof field === \"function\") {\n if (source !== this.source) {\n field.call(source, this.source, value);\n } else {\n field.call(source, value);\n }\n } else {\n source.set(this.path, value);\n }\n },\n\n destroy: function() {\n if (this.observable) {\n this.source.unbind(CHANGE, this._change);\n if (this.currentSource) {\n this.currentSource.unbind(CHANGE, this._change);\n }\n }\n\n this.unbind();\n }\n });\n\n var EventBinding = Binding.extend( {\n get: function() {\n var source = this.source,\n path = this.path,\n index = 0,\n handler;\n\n handler = source.get(path);\n\n while (!handler && source) {\n source = this.parents[++index];\n\n if (source instanceof ObservableObject) {\n handler = source.get(path);\n }\n }\n\n if (!handler) {\n return;\n }\n\n return handler.bind(source);\n }\n });\n\n var TemplateBinding = Binding.extend( {\n init: function(source, path, template) {\n var that = this;\n\n Binding.fn.init.call(that, source, path);\n\n that.template = template;\n },\n\n render: function(value) {\n var html;\n\n this.start(this.source);\n\n html = kendo.render(this.template, value);\n\n this.stop(this.source);\n\n return html;\n }\n });\n\n var Binder = Class.extend({\n init: function(element, bindings, options) {\n this.element = element;\n this.bindings = bindings;\n this.options = options;\n },\n\n bind: function(binding, attribute) {\n var that = this;\n\n binding = attribute ? binding[attribute] : binding;\n\n binding.bind(CHANGE, function(e) {\n that.refresh(attribute || e);\n });\n\n that.refresh(attribute);\n },\n\n destroy: function() {\n }\n });\n\n var TypedBinder = Binder.extend({\n dataType: function() {\n var dataType = this.element.getAttribute(\"data-\" + kendo.ns + \"type\") || this.element.type || \"text\";\n return dataType.toLowerCase();\n },\n\n parsedValue: function() {\n return this._parseValue(this.element.value, this.dataType());\n },\n\n _parseValue: function(value, dataType) {\n if (dataType == \"date\") {\n value = kendo.parseDate(value, \"yyyy-MM-dd\");\n } else if (dataType == \"datetime-local\") {\n value = kendo.parseDate(value, [\"yyyy-MM-ddTHH:mm:ss\", \"yyyy-MM-ddTHH:mm\"] );\n } else if (dataType == \"number\") {\n value = kendo.parseFloat(value);\n } else if (dataType == \"boolean\") {\n value = value.toLowerCase();\n if (kendo.parseFloat(value) !== null) {\n value = Boolean(kendo.parseFloat(value));\n } else {\n value = (value.toLowerCase() === \"true\");\n }\n }\n return value;\n }\n });\n\n binders.attr = Binder.extend({\n refresh: function(key) {\n this.element.setAttribute(key, this.bindings.attr[key].get());\n }\n });\n\n binders.css = Binder.extend({\n init: function(element, bindings, options) {\n Binder.fn.init.call(this, element, bindings, options);\n this.classes = {};\n },\n refresh: function(className) {\n var element = $(this.element),\n binding = this.bindings.css[className],\n hasClass = this.classes[className] = binding.get();\n if (hasClass) {\n element.addClass(className);\n } else {\n element.removeClass(className);\n }\n }\n });\n\n binders.style = Binder.extend({\n refresh: function(key) {\n this.element.style[key] = this.bindings.style[key].get() || \"\";\n }\n });\n\n binders.enabled = Binder.extend({\n refresh: function() {\n if (this.bindings.enabled.get()) {\n this.element.removeAttribute(\"disabled\");\n } else {\n this.element.setAttribute(\"disabled\", \"disabled\");\n }\n }\n });\n\n binders.readonly = Binder.extend({\n refresh: function() {\n if (this.bindings.readonly.get()) {\n this.element.setAttribute(\"readonly\", \"readonly\");\n } else {\n this.element.removeAttribute(\"readonly\");\n }\n }\n });\n\n binders.disabled = Binder.extend({\n refresh: function() {\n if (this.bindings.disabled.get()) {\n this.element.setAttribute(\"disabled\", \"disabled\");\n } else {\n this.element.removeAttribute(\"disabled\");\n }\n }\n });\n\n binders.events = Binder.extend({\n init: function(element, bindings, options) {\n Binder.fn.init.call(this, element, bindings, options);\n this.handlers = {};\n },\n\n refresh: function(key) {\n var element = $(this.element),\n binding = this.bindings.events[key],\n handler = this.handlers[key];\n\n if (handler) {\n element.off(key, handler);\n }\n\n handler = this.handlers[key] = binding.get();\n\n element.on(key, binding.source, handler);\n },\n\n destroy: function() {\n var element = $(this.element),\n handler;\n\n for (handler in this.handlers) {\n element.off(handler, this.handlers[handler]);\n }\n }\n });\n\n binders.text = Binder.extend({\n refresh: function() {\n var text = this.bindings.text.get();\n var dataFormat = this.element.getAttribute(\"data-\" + kendo.ns + \"format\") || \"\";\n if (text == null) {\n text = \"\";\n }\n\n $(this.element).text(kendo.toString(text, dataFormat));\n }\n });\n\n binders.visible = Binder.extend({\n refresh: function() {\n if (this.bindings.visible.get()) {\n this.element.style.display = \"\";\n } else {\n this.element.style.display = \"none\";\n }\n }\n });\n\n binders.invisible = Binder.extend({\n refresh: function() {\n if (!this.bindings.invisible.get()) {\n this.element.style.display = \"\";\n } else {\n this.element.style.display = \"none\";\n }\n }\n });\n\n binders.html = Binder.extend({\n refresh: function() {\n this.element.innerHTML = this.bindings.html.get();\n }\n });\n\n binders.value = TypedBinder.extend({\n init: function(element, bindings, options) {\n TypedBinder.fn.init.call(this, element, bindings, options);\n\n this._change = this.change.bind(this);\n this.eventName = options.valueUpdate || CHANGE;\n\n $(this.element).on(this.eventName, this._change);\n\n this._initChange = false;\n },\n\n change: function() {\n this._initChange = this.eventName != CHANGE;\n\n this.bindings[VALUE].set(this.parsedValue());\n\n this._initChange = false;\n },\n\n refresh: function() {\n if (!this._initChange) {\n var value = this.bindings[VALUE].get();\n\n if (value == null) {\n value = \"\";\n }\n\n var type = this.dataType();\n\n if (type == \"date\") {\n value = kendo.toString(value, \"yyyy-MM-dd\");\n } else if (type == \"datetime-local\") {\n value = kendo.toString(value, \"yyyy-MM-ddTHH:mm:ss\");\n }\n\n this.element.value = value;\n }\n\n this._initChange = false;\n },\n\n destroy: function() {\n $(this.element).off(this.eventName, this._change);\n }\n });\n\n binders.source = Binder.extend({\n init: function(element, bindings, options) {\n Binder.fn.init.call(this, element, bindings, options);\n\n var source = this.bindings.source.get();\n\n if (source instanceof kendo.data.DataSource && options.autoBind !== false) {\n source.fetch();\n }\n },\n\n refresh: function(e) {\n var that = this,\n source = that.bindings.source.get();\n\n if (source instanceof ObservableArray || source instanceof kendo.data.DataSource) {\n e = e || {};\n\n if (e.action == \"add\") {\n that.add(e.index, e.items);\n } else if (e.action == \"remove\") {\n that.remove(e.index, e.items);\n } else if (e.action != \"itemchange\") {\n that.render();\n }\n } else {\n that.render();\n }\n },\n\n container: function() {\n var element = this.element;\n\n if (element.nodeName.toLowerCase() == \"table\") {\n if (!element.tBodies[0]) {\n element.appendChild(document.createElement(\"tbody\"));\n }\n element = element.tBodies[0];\n }\n\n return element;\n },\n\n template: function() {\n var options = this.options,\n template = options.template,\n nodeName = this.container().nodeName.toLowerCase();\n\n if (!template) {\n if (nodeName == \"select\") {\n if (options.valueField || options.textField) {\n template = (data) => {\n const valueAttr = kendo.getter(options.valueField || options.textField)(data);\n const innerText = kendo.getter(options.textField || options.valueField)(data);\n return ``;\n };\n } else {\n template = (data) => ``;\n }\n } else if (nodeName == \"tbody\") {\n template = (data) => `${encode(data)}`;\n } else if (nodeName == \"ul\" || nodeName == \"ol\") {\n template = (data) => `
  • ${encode(data)}
  • `;\n } else {\n template = (data) => `${encode(data)}`;\n }\n template = kendo.template(template);\n }\n\n return template;\n },\n\n add: function(index, items) {\n var element = this.container(),\n parents,\n idx,\n length,\n child,\n clone = element.cloneNode(false),\n reference = element.children[index];\n\n $(clone).html(kendo.render(this.template(), items));\n\n if (clone.children.length) {\n parents = this.bindings.source._parents();\n\n for (idx = 0, length = items.length; idx < length; idx++) {\n child = clone.children[0];\n element.insertBefore(child, reference || null);\n bindElement(child, items[idx], this.options.roles, [items[idx]].concat(parents));\n }\n }\n },\n\n remove: function(index, items) {\n var idx, element = this.container();\n\n for (idx = 0; idx < items.length; idx++) {\n var child = element.children[index];\n unbindElementTree(child, true);\n if (child.parentNode == element) {\n element.removeChild(child);\n }\n }\n },\n\n render: function() {\n var source = this.bindings.source.get(),\n parents,\n idx,\n length,\n element = this.container(),\n template = this.template();\n\n if (source == null) {\n return;\n }\n\n if (source instanceof kendo.data.DataSource) {\n source = source.view();\n }\n\n if (!(source instanceof ObservableArray) && toString.call(source) !== \"[object Array]\") {\n source = [source];\n }\n\n if (this.bindings.template) {\n unbindElementChildren(element, true);\n\n $(element).html(this.bindings.template.render(source));\n\n if (element.children.length) {\n parents = this.bindings.source._parents();\n\n for (idx = 0, length = source.length; idx < length; idx++) {\n bindElement(element.children[idx], source[idx], this.options.roles, [source[idx]].concat(parents));\n }\n }\n } else {\n $(element).html(kendo.render(template, source));\n }\n }\n });\n\n binders.input = {\n checked: TypedBinder.extend({\n init: function(element, bindings, options) {\n TypedBinder.fn.init.call(this, element, bindings, options);\n this._change = this.change.bind(this);\n\n $(this.element).change(this._change);\n },\n\n change: function() {\n var element = this.element;\n var value = this.value();\n\n if (element.type == \"radio\") {\n value = this.parsedValue();\n this.bindings[CHECKED].set(value);\n } else if (element.type == \"checkbox\") {\n var source = this.bindings[CHECKED].get();\n var index;\n\n if (source instanceof ObservableArray) {\n value = this.parsedValue();\n if (value instanceof Date) {\n for (var i = 0; i < source.length; i++) {\n if (source[i] instanceof Date && +source[i] === +value) {\n index = i;\n break;\n }\n }\n } else {\n index = source.indexOf(value);\n }\n if (index > -1) {\n source.splice(index, 1);\n } else {\n source.push(value);\n }\n } else {\n this.bindings[CHECKED].set(value);\n }\n }\n },\n\n refresh: function() {\n var value = this.bindings[CHECKED].get(),\n source = value,\n type = this.dataType(),\n element = this.element;\n\n if (element.type == \"checkbox\") {\n if (source instanceof ObservableArray) {\n var index = -1;\n value = this.parsedValue();\n if (value instanceof Date) {\n for (var i = 0; i < source.length; i++) {\n if (source[i] instanceof Date && +source[i] === +value) {\n index = i;\n break;\n }\n }\n } else {\n index = source.indexOf(value);\n }\n element.checked = (index >= 0);\n } else {\n element.checked = source;\n }\n } else if (element.type == \"radio\") {\n if (type == \"date\") {\n value = kendo.toString(value, \"yyyy-MM-dd\");\n } else if (type == \"datetime-local\") {\n value = kendo.toString(value, \"yyyy-MM-ddTHH:mm:ss\");\n }\n\n if (value !== null && typeof(value) !== \"undefined\" && element.value === value.toString()) {\n element.checked = true;\n } else {\n element.checked = false;\n }\n }\n },\n\n value: function() {\n var element = this.element,\n value = element.value;\n\n if (element.type == \"checkbox\") {\n value = element.checked;\n }\n\n return value;\n },\n destroy: function() {\n $(this.element).off(CHANGE, this._change);\n }\n })\n };\n\n binders.select = {\n source: binders.source.extend({\n refresh: function(e) {\n var that = this,\n source = that.bindings.source.get();\n\n if (source instanceof ObservableArray || source instanceof kendo.data.DataSource) {\n e = e || {};\n if (e.action == \"add\") {\n that.add(e.index, e.items);\n } else if (e.action == \"remove\") {\n that.remove(e.index, e.items);\n } else if (e.action == \"itemchange\" || e.action === undefined$1) {\n that.render();\n if (that.bindings.value) {\n if (that.bindings.value) {\n var val = retrievePrimitiveValues(that.bindings.value.get(), $(that.element).data(\"valueField\"));\n if (val === null) {\n that.element.selectedIndex = -1;\n } else {\n that.element.value = val;\n }\n }\n }\n }\n } else {\n that.render();\n }\n }\n }),\n value: TypedBinder.extend({\n init: function(target, bindings, options) {\n TypedBinder.fn.init.call(this, target, bindings, options);\n\n this._change = this.change.bind(this);\n $(this.element).change(this._change);\n },\n\n parsedValue: function() {\n var dataType = this.dataType();\n var values = [];\n var value, option, idx, length;\n for (idx = 0, length = this.element.options.length; idx < length; idx++) {\n option = this.element.options[idx];\n\n if (option.selected) {\n value = option.attributes.value;\n\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n\n values.push(this._parseValue(value, dataType));\n }\n }\n return values;\n },\n\n change: function() {\n var values = [],\n element = this.element,\n source,\n field = this.options.valueField || this.options.textField,\n valuePrimitive = this.options.valuePrimitive,\n option,\n valueIndex,\n value,\n idx,\n length;\n\n for (idx = 0, length = element.options.length; idx < length; idx++) {\n option = element.options[idx];\n\n if (option.selected) {\n value = option.attributes.value;\n\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n\n if (field) {\n values.push(value);\n } else {\n values.push(this._parseValue(value, this.dataType()));\n }\n\n }\n }\n\n if (field) {\n source = this.bindings.source.get();\n if (source instanceof kendo.data.DataSource) {\n source = source.view();\n }\n\n for (valueIndex = 0; valueIndex < values.length; valueIndex++) {\n for (idx = 0, length = source.length; idx < length; idx++) {\n var sourceValue = source[idx].get(field);\n var match = (String(sourceValue) === values[valueIndex]);\n if (match) {\n values[valueIndex] = source[idx];\n break;\n }\n }\n }\n }\n\n value = this.bindings[VALUE].get();\n if (value instanceof ObservableArray) {\n value.splice.apply(value, [0, value.length].concat(values));\n } else if (!valuePrimitive && (value instanceof ObservableObject || value === null || value === undefined$1 || !field)) {\n this.bindings[VALUE].set(values[0]);\n } else {\n this.bindings[VALUE].set(values[0].get(field));\n }\n },\n refresh: function() {\n var optionIndex,\n element = this.element,\n options = element.options,\n value = this.bindings[VALUE].get(),\n values = value,\n field = this.options.valueField || this.options.textField,\n found = false,\n type = this.dataType(),\n optionValue;\n\n if (!(values instanceof ObservableArray)) {\n values = new ObservableArray([value]);\n }\n\n element.selectedIndex = -1;\n\n for (var valueIndex = 0; valueIndex < values.length; valueIndex++) {\n value = values[valueIndex];\n\n\n if (field && value instanceof ObservableObject) {\n value = value.get(field);\n }\n\n if (type == \"date\") {\n value = kendo.toString(values[valueIndex], \"yyyy-MM-dd\");\n } else if (type == \"datetime-local\") {\n value = kendo.toString(values[valueIndex], \"yyyy-MM-ddTHH:mm:ss\");\n }\n\n for (optionIndex = 0; optionIndex < options.length; optionIndex++) {\n optionValue = options[optionIndex].value;\n\n if (optionValue === \"\" && value !== \"\") {\n optionValue = options[optionIndex].text;\n }\n\n if (value != null && optionValue == value.toString()) {\n options[optionIndex].selected = true;\n found = true;\n }\n }\n }\n },\n destroy: function() {\n $(this.element).off(CHANGE, this._change);\n }\n })\n };\n\n function dataSourceBinding(bindingName, fieldName, setter) {\n return Binder.extend({\n init: function(widget, bindings, options) {\n var that = this;\n\n Binder.fn.init.call(that, widget.element[0], bindings, options);\n\n that.widget = widget;\n that._dataBinding = that.dataBinding.bind(that);\n that._dataBound = that.dataBound.bind(that);\n that._itemChange = that.itemChange.bind(that);\n },\n\n itemChange: function(e) {\n bindElement(e.item[0], e.data, this._ns(e.ns), [e.data].concat(this.bindings[bindingName]._parents()));\n },\n\n dataBinding: function(e) {\n var idx,\n length,\n widget = this.widget,\n items = e.removedItems || widget.items();\n\n for (idx = 0, length = items.length; idx < length; idx++) {\n unbindElementTree(items[idx], false);\n }\n },\n\n _ns: function(ns) {\n ns = ns || kendo.ui;\n var all = [ kendo.ui, kendo.dataviz.ui, kendo.mobile.ui ];\n all.splice($.inArray(ns, all), 1);\n all.unshift(ns);\n\n return kendo.rolesFromNamespaces(all);\n },\n\n dataBound: function(e) {\n var idx,\n length,\n widget = this.widget,\n items = e.addedItems || widget.items(),\n dataSource = widget[fieldName],\n view,\n parents,\n hds = kendo.data.HierarchicalDataSource;\n\n if (hds && dataSource instanceof hds) {\n // suppress binding of HDS items, because calling view() on root\n // will return only root items, and widget.items() returns all items\n return;\n }\n\n if (items.length) {\n view = e.addedDataItems || dataSource.flatView();\n parents = this.bindings[bindingName]._parents();\n\n for (idx = 0, length = view.length; idx < length; idx++) {\n if (items[idx]) {\n bindElement(items[idx], view[idx], this._ns(e.ns), [view[idx]].concat(parents));\n }\n }\n }\n },\n\n refresh: function(e) {\n var that = this,\n source,\n widget = that.widget,\n select, multiselect, dropdowntree;\n\n e = e || {};\n\n if (!e.action) {\n that.destroy();\n\n widget.bind(\"dataBinding\", that._dataBinding);\n widget.bind(\"dataBound\", that._dataBound);\n widget.bind(\"itemChange\", that._itemChange);\n\n source = that.bindings[bindingName].get();\n\n if (widget[fieldName] instanceof kendo.data.DataSource && widget[fieldName] != source) {\n if (source instanceof kendo.data.DataSource) {\n widget[setter](source);\n } else if (source && source._dataSource) {\n widget[setter](source._dataSource);\n } else {\n select = kendo.ui.Select && widget instanceof kendo.ui.Select;\n multiselect = kendo.ui.MultiSelect && widget instanceof kendo.ui.MultiSelect;\n dropdowntree = kendo.ui.DropDownTree && widget instanceof kendo.ui.DropDownTree;\n\n if (!dropdowntree) {\n widget[fieldName].data(source);\n } else {\n widget.treeview[fieldName].data(source);\n }\n\n if (that.bindings.value && (select || multiselect)) {\n widget.value(retrievePrimitiveValues(that.bindings.value.get(), widget.options.dataValueField));\n }\n }\n }\n }\n },\n\n destroy: function() {\n var widget = this.widget;\n\n widget.unbind(\"dataBinding\", this._dataBinding);\n widget.unbind(\"dataBound\", this._dataBound);\n widget.unbind(\"itemChange\", this._itemChange);\n }\n });\n }\n\n binders.widget = {\n events: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n this.handlers = {};\n },\n\n refresh: function(key) {\n var binding = this.bindings.events[key],\n handler = this.handlers[key];\n\n if (handler) {\n this.widget.unbind(key, handler);\n }\n\n handler = binding.get();\n\n this.handlers[key] = function(e) {\n e.data = binding.source;\n\n handler(e);\n\n if (e.data === binding.source) {\n delete e.data;\n }\n };\n\n this.widget.bind(key, this.handlers[key]);\n },\n\n destroy: function() {\n var handler;\n\n for (handler in this.handlers) {\n this.widget.unbind(handler, this.handlers[handler]);\n }\n }\n }),\n\n checked: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n this._change = this.change.bind(this);\n this.widget.bind(CHANGE, this._change);\n },\n change: function() {\n this.bindings[CHECKED].set(this.value());\n },\n\n refresh: function() {\n var val = this.bindings[CHECKED].get();\n\n if (this.element.type === \"radio\") {\n if (val !== undefined$1) {\n this.widget.check(val.toString() === this.value());\n } else {\n this.widget.check(false);\n }\n } else {\n this.widget.check(val === true);\n }\n },\n\n value: function() {\n var element = this.element,\n value = element.value;\n\n if (value == \"on\" || value == \"off\" || this.element.type == \"checkbox\") {\n value = element.checked;\n }\n\n return value;\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n\n start: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this._change = this.change.bind(this);\n this.widget = widget;\n this.widget.bind(CHANGE, this._change);\n },\n\n change: function() {\n this.bindings.start.set(this.widget.range().start);\n },\n\n refresh: function() {\n var that = this;\n var start = this.bindings.start.get();\n var end = that.widget._range ? that.widget._range.end : null;\n this.widget.range({ start: start, end: end });\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n\n end: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this._change = this.change.bind(this);\n this.widget = widget;\n this.widget.bind(CHANGE, this._change);\n },\n\n change: function() {\n this.bindings.end.set(this.widget.range().end);\n },\n\n refresh: function() {\n var that = this;\n var end = this.bindings.end.get();\n var start = that.widget._range ? that.widget._range.start : null;\n this.widget.range({ start: start, end: end });\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n\n visible: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n },\n\n refresh: function() {\n var visible = this.bindings.visible.get();\n this.widget.wrapper[0].style.display = visible ? \"\" : \"none\";\n }\n }),\n\n invisible: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n },\n\n refresh: function() {\n var invisible = this.bindings.invisible.get();\n this.widget.wrapper[0].style.display = invisible ? \"none\" : \"\";\n }\n }),\n\n floatingLabel: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n if (!widget.floatingLabel) {\n return;\n }\n\n widget.floatingLabel.refresh();\n }\n }),\n\n enabled: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n this.readonly = this.element.readOnly;\n },\n\n refresh: function() {\n if (this.widget.enable) {\n this.widget.enable(this.bindings.enabled.get());\n }\n if (this.readonly && this.widget.readonly) {\n this.widget.readonly(this.readonly);\n }\n }\n }),\n\n disabled: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n },\n\n refresh: function() {\n if (this.widget.enable) {\n this.widget.enable(!this.bindings.disabled.get());\n }\n }\n }),\n\n source: dataSourceBinding(\"source\", \"dataSource\", \"setDataSource\"),\n\n value: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n this._change = this.change.bind(this);\n this.widget.first(CHANGE, this._change);\n\n var value = this.bindings.value.get();\n\n this._valueIsObservableObject = !options.valuePrimitive && (value == null || value instanceof ObservableObject);\n this._valueIsObservableArray = value instanceof ObservableArray;\n this._initChange = false;\n },\n\n _source: function() {\n var source;\n\n if (this.widget.dataItem) {\n source = this.widget.dataItem();\n if (source && source instanceof ObservableObject) {\n return [source];\n }\n }\n\n if (this.bindings.source) {\n source = this.bindings.source.get();\n }\n\n if (!source || source instanceof kendo.data.DataSource) {\n source = this.widget.dataSource.flatView();\n }\n\n return source;\n },\n\n change: function() {\n var value = this.widget.value(),\n field = this.options.dataValueField || this.options.dataTextField,\n isArray = toString.call(value) === \"[object Array]\",\n isObservableObject = this._valueIsObservableObject,\n valueIndex, valueLength, values = [],\n sourceItem, sourceValue,\n idx, length, source;\n\n this._initChange = true;\n\n if (field) {\n\n if (value === \"\" && (isObservableObject || this.options.valuePrimitive)) {\n value = null;\n } else {\n source = this._source();\n\n if (isArray) {\n valueLength = value.length;\n values = value.slice(0);\n }\n\n for (idx = 0, length = source.length; idx < length; idx++) {\n sourceItem = source[idx];\n sourceValue = sourceItem.get(field);\n\n if (isArray) {\n for (valueIndex = 0; valueIndex < valueLength; valueIndex++) {\n if (sourceValue == values[valueIndex]) {\n values[valueIndex] = sourceItem;\n break;\n }\n }\n } else if (sourceValue == value) {\n value = isObservableObject ? sourceItem : sourceValue;\n break;\n }\n }\n\n if (values[0]) {\n if (this._valueIsObservableArray) {\n value = values;\n } else if (isObservableObject || !field) {\n value = values[0];\n } else {\n value = values[0].get(field);\n }\n }\n }\n }\n\n this.bindings.value.set(value);\n this._initChange = false;\n },\n\n refresh: function() {\n if (!this._initChange) {\n var widget = this.widget;\n var options = widget.options;\n var textField = options.dataTextField;\n var valueField = options.dataValueField || textField;\n var value = this.bindings.value.get();\n var text = options.text || \"\";\n var idx = 0, length;\n var values = [];\n\n if (value === undefined$1) {\n value = null;\n }\n\n if (valueField) {\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n values[idx] = value[idx].get(valueField);\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n text = value.get(textField);\n value = value.get(valueField);\n }\n }\n\n if (options.autoBind === false && !options.cascadeFrom && widget.listView && !widget.listView.bound()) {\n if (textField === valueField && !text) {\n text = value;\n }\n\n if (!text && (value || value === 0) && options.valuePrimitive) {\n widget.value(value);\n } else {\n widget._preselect(value, text);\n }\n } else {\n widget.value(value);\n }\n }\n\n this._initChange = false;\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n dropdowntree: {\n value: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n this._change = this.change.bind(this);\n this.widget.first(CHANGE, this._change);\n this._initChange = false;\n },\n\n change: function() {\n var that = this,\n oldValues = that.bindings[VALUE].get(),\n valuePrimitive = that.options.valuePrimitive,\n selectedNode = that.widget.treeview.select(),\n nonPrimitiveValues = that.widget._isMultipleSelection() ? that.widget._getAllChecked() : (that.widget.treeview.dataItem(selectedNode) || that.widget.value()),\n newValues = (valuePrimitive || that.widget.options.autoBind === false) ? that.widget.value() : nonPrimitiveValues;\n\n var field = this.options.dataValueField || this.options.dataTextField;\n\n newValues = newValues.slice ? newValues.slice(0) : newValues;\n\n that._initChange = true;\n\n if (oldValues instanceof ObservableArray) {\n var remove = [];\n var newLength = newValues.length;\n var i = 0, j = 0;\n var old = oldValues[i];\n var same = false;\n var removeIndex;\n var newValue;\n var found;\n\n while (old !== undefined$1) {\n found = false;\n for (j = 0; j < newLength; j++) {\n if (valuePrimitive) {\n same = newValues[j] == old;\n } else {\n newValue = newValues[j];\n\n newValue = newValue.get ? newValue.get(field) : newValue;\n same = newValue == (old.get ? old.get(field) : old);\n }\n\n if (same) {\n newValues.splice(j, 1);\n newLength -= 1;\n found = true;\n break;\n }\n }\n\n if (!found) {\n remove.push(old);\n arraySplice(oldValues, i, 1);\n removeIndex = i;\n } else {\n i += 1;\n }\n\n old = oldValues[i];\n }\n\n arraySplice(oldValues, oldValues.length, 0, newValues);\n\n if (remove.length) {\n oldValues.trigger(\"change\", {\n action: \"remove\",\n items: remove,\n index: removeIndex\n });\n }\n\n if (newValues.length) {\n oldValues.trigger(\"change\", {\n action: \"add\",\n items: newValues,\n index: oldValues.length - 1\n });\n }\n } else {\n that.bindings[VALUE].set(newValues);\n }\n\n that._initChange = false;\n },\n\n refresh: function() {\n if (!this._initChange) {\n var options = this.options,\n widget = this.widget,\n field = options.dataValueField || options.dataTextField,\n value = this.bindings.value.get(),\n data = value,\n idx = 0, length,\n values = [],\n selectedValue;\n\n if (field) {\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n selectedValue = value[idx];\n values[idx] = selectedValue.get ? selectedValue.get(field) : selectedValue;\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n value = value.get(field);\n }\n }\n if (options.autoBind === false && options.valuePrimitive !== true) {\n widget._preselect(data, value);\n } else {\n widget.value(value);\n }\n }\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n })\n },\n gantt: {\n dependencies: dataSourceBinding(\"dependencies\", \"dependencies\", \"setDependenciesDataSource\")\n },\n\n multiselect: {\n value: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n this._change = this.change.bind(this);\n this.widget.first(CHANGE, this._change);\n this._initChange = false;\n },\n\n change: function() {\n var that = this,\n oldValues = that.bindings[VALUE].get(),\n valuePrimitive = that.options.valuePrimitive,\n newValues = valuePrimitive ? that.widget.value() : that.widget.dataItems();\n\n var field = this.options.dataValueField || this.options.dataTextField;\n\n newValues = newValues.slice(0);\n\n that._initChange = true;\n\n if (oldValues instanceof ObservableArray) {\n var remove = [];\n\n var newLength = newValues.length;\n\n var i = 0, j = 0;\n var old = oldValues[i];\n var same = false;\n var removeIndex;\n var newValue;\n var found;\n\n while (old !== undefined$1) {\n found = false;\n for (j = 0; j < newLength; j++) {\n if (valuePrimitive) {\n same = newValues[j] == old;\n } else {\n newValue = newValues[j];\n\n newValue = newValue.get ? newValue.get(field) : newValue;\n same = newValue == (old.get ? old.get(field) : old);\n }\n\n if (same) {\n newValues.splice(j, 1);\n newLength -= 1;\n found = true;\n break;\n }\n }\n\n if (!found) {\n remove.push(old);\n arraySplice(oldValues, i, 1);\n removeIndex = i;\n } else {\n i += 1;\n }\n\n old = oldValues[i];\n }\n\n arraySplice(oldValues, oldValues.length, 0, newValues);\n\n if (remove.length) {\n oldValues.trigger(\"change\", {\n action: \"remove\",\n items: remove,\n index: removeIndex\n });\n }\n\n if (newValues.length) {\n oldValues.trigger(\"change\", {\n action: \"add\",\n items: newValues,\n index: oldValues.length - 1\n });\n }\n } else {\n that.bindings[VALUE].set(newValues);\n }\n\n that._initChange = false;\n },\n\n refresh: function() {\n if (!this._initChange) {\n var options = this.options,\n widget = this.widget,\n field = options.dataValueField || options.dataTextField,\n value = this.bindings.value.get(),\n data = value,\n idx = 0, length,\n values = [],\n selectedValue;\n\n if (value === undefined$1) {\n value = null;\n }\n\n if (field) {\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n selectedValue = value[idx];\n values[idx] = selectedValue.get ? selectedValue.get(field) : selectedValue;\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n value = value.get(field);\n }\n }\n\n if (options.autoBind === false && options.valuePrimitive !== true && !widget._isBound()) {\n widget._preselect(data, value);\n } else {\n widget.value(value);\n }\n }\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n\n })\n },\n scheduler: {\n source: dataSourceBinding(\"source\", \"dataSource\", \"setDataSource\").extend({\n dataBound: function(e) {\n var idx;\n var length;\n var widget = this.widget;\n var elements = e.addedItems || widget.items();\n var data, parents;\n\n if (elements.length) {\n data = e.addedDataItems || widget.dataItems();\n parents = this.bindings.source._parents();\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n bindElement(elements[idx], data[idx], this._ns(e.ns), [data[idx]].concat(parents));\n }\n }\n }\n })\n },\n\n grid: {\n source: dataSourceBinding(\"source\", \"dataSource\", \"setDataSource\").extend({\n dataBound: function(e) {\n var idx,\n length,\n widget = this.widget,\n elements = e.addedItems || widget.items(),\n parents,\n data;\n\n if (elements.length) {\n data = e.addedDataItems || widget.dataItems();\n parents = this.bindings.source._parents();\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n bindElement(elements[idx], data[idx], this._ns(e.ns), [data[idx]].concat(parents));\n }\n }\n }\n })\n },\n\n badge: {\n text: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n },\n refresh: function() {\n var text = this.bindings.text.get();\n\n if (text == null) {\n text = \"\";\n }\n this.widget.text(text);\n }\n })\n }\n };\n\n var arraySplice = function(arr, idx, remove, add) {\n add = add || [];\n remove = remove || 0;\n\n var addLength = add.length;\n var oldLength = arr.length;\n\n var shifted = [].slice.call(arr, idx + remove);\n var shiftedLength = shifted.length;\n var index;\n\n if (addLength) {\n addLength = idx + addLength;\n index = 0;\n\n for (; idx < addLength; idx++) {\n arr[idx] = add[index];\n index++;\n }\n\n arr.length = addLength;\n } else if (remove) {\n arr.length = idx;\n\n remove += idx;\n while (idx < remove) {\n delete arr[--remove];\n }\n }\n\n if (shiftedLength) {\n shiftedLength = idx + shiftedLength;\n index = 0;\n\n for (; idx < shiftedLength; idx++) {\n arr[idx] = shifted[index];\n index++;\n }\n\n arr.length = shiftedLength;\n }\n\n idx = arr.length;\n\n while (idx < oldLength) {\n delete arr[idx];\n idx++;\n }\n };\n\n var BindingTarget = Class.extend( {\n init: function(target, options) {\n this.target = target;\n this.options = options;\n this.toDestroy = [];\n },\n\n bind: function(bindings) {\n var key,\n hasValue,\n hasSource,\n hasEvents,\n hasChecked,\n hasCss,\n widgetBinding = this instanceof WidgetBindingTarget,\n specificBinders = this.binders();\n\n for (key in bindings) {\n if (key == VALUE) {\n hasValue = true;\n } else if (key == SOURCE) {\n hasSource = true;\n } else if (key == EVENTS && !widgetBinding) {\n hasEvents = true;\n } else if (key == CHECKED) {\n hasChecked = true;\n } else if (key == CSS) {\n hasCss = true;\n } else {\n this.applyBinding(key, bindings, specificBinders);\n }\n }\n if (hasSource) {\n this.applyBinding(SOURCE, bindings, specificBinders);\n }\n\n if (hasValue) {\n this.applyBinding(VALUE, bindings, specificBinders);\n }\n\n if (hasChecked) {\n this.applyBinding(CHECKED, bindings, specificBinders);\n }\n\n if (hasEvents && !widgetBinding) {\n this.applyBinding(EVENTS, bindings, specificBinders);\n }\n\n if (hasCss && !widgetBinding) {\n this.applyBinding(CSS, bindings, specificBinders);\n }\n\n if (widgetBinding && this.target && this.target.floatingLabel) {\n this.applyBinding(\"floatingLabel\", bindings, specificBinders);\n }\n },\n\n binders: function() {\n return binders[this.target.nodeName.toLowerCase()] || {};\n },\n\n applyBinding: function(name, bindings, specificBinders) {\n var binder = specificBinders[name] || binders[name],\n toDestroy = this.toDestroy,\n attribute,\n binding = bindings[name];\n\n if (binder) {\n binder = new binder(this.target, bindings, this.options);\n\n toDestroy.push(binder);\n\n if (binding instanceof Binding) {\n binder.bind(binding);\n toDestroy.push(binding);\n } else {\n for (attribute in binding) {\n binder.bind(binding, attribute);\n toDestroy.push(binding[attribute]);\n }\n }\n } else if (name !== \"template\") {\n throw new Error(\"The \" + name + \" binding is not supported by the \" + this.target.nodeName.toLowerCase() + \" element\");\n }\n },\n\n destroy: function() {\n var idx,\n length,\n toDestroy = this.toDestroy;\n\n for (idx = 0, length = toDestroy.length; idx < length; idx++) {\n toDestroy[idx].destroy();\n }\n }\n });\n\n var WidgetBindingTarget = BindingTarget.extend( {\n binders: function() {\n return binders.widget[this.target.options.name.toLowerCase()] || {};\n },\n\n applyBinding: function(name, bindings, specificBinders) {\n var binder = specificBinders[name] || binders.widget[name],\n toDestroy = this.toDestroy,\n attribute,\n binding = bindings[name];\n\n if (binder) {\n binder = new binder(this.target, bindings, this.target.options);\n\n toDestroy.push(binder);\n\n\n if (binding instanceof Binding) {\n binder.bind(binding);\n toDestroy.push(binding);\n } else {\n for (attribute in binding) {\n binder.bind(binding, attribute);\n toDestroy.push(binding[attribute]);\n }\n }\n } else {\n throw new Error(\"The \" + name + \" binding is not supported by the \" + this.target.options.name + \" widget\");\n }\n }\n });\n\n function bindingTargetForRole(element, roles) {\n var widget = kendo.initWidget(element, {}, roles);\n\n if (widget) {\n return new WidgetBindingTarget(widget);\n }\n }\n\n var keyValueRegExp = /[A-Za-z0-9_\\-]+:(\\{([^}]*)\\}|[^,}]+)/g,\n whiteSpaceRegExp = /\\s/g;\n\n function parseBindings(bind) {\n var result = {},\n idx,\n length,\n token,\n colonIndex,\n key,\n value,\n tokens;\n\n tokens = bind.match(keyValueRegExp);\n\n for (idx = 0, length = tokens.length; idx < length; idx++) {\n token = tokens[idx];\n colonIndex = token.indexOf(\":\");\n\n key = token.substring(0, colonIndex);\n value = token.substring(colonIndex + 1);\n\n if (value.charAt(0) == \"{\") {\n value = parseBindings(value);\n }\n\n result[key] = value;\n }\n\n return result;\n }\n\n function createBindings(bindings, source, type) {\n var binding,\n result = {};\n\n for (binding in bindings) {\n result[binding] = new type(source, bindings[binding]);\n }\n\n return result;\n }\n\n function bindElement(element, source, roles, parents) {\n\n if (!element || element.getAttribute(\"data-\" + kendo.ns + \"stop\")) {\n return;\n }\n\n var role = element.getAttribute(\"data-\" + kendo.ns + \"role\"),\n idx,\n bind = element.getAttribute(\"data-\" + kendo.ns + \"bind\"),\n childrenCopy = [],\n deep = true,\n bindings,\n options = {},\n target;\n\n parents = parents || [source];\n\n if (role || bind) {\n unbindElement(element, false);\n }\n\n if (role) {\n target = bindingTargetForRole(element, roles);\n }\n\n if (bind) {\n bind = parseBindings(bind.replace(whiteSpaceRegExp, \"\"));\n\n if (!target) {\n options = kendo.parseOptions(element, { textField: \"\", valueField: \"\", template: \"\", valueUpdate: CHANGE, valuePrimitive: false, autoBind: true }, source);\n options.roles = roles;\n target = new BindingTarget(element, options);\n }\n\n target.source = source;\n\n bindings = createBindings(bind, parents, Binding);\n\n if (options.template) {\n bindings.template = new TemplateBinding(parents, \"\", options.template);\n }\n\n if (bindings.click) {\n bind.events = bind.events || {};\n bind.events.click = bind.click;\n bindings.click.destroy();\n delete bindings.click;\n }\n\n if (bindings.source) {\n deep = false;\n }\n\n if (bind.attr) {\n bindings.attr = createBindings(bind.attr, parents, Binding);\n }\n\n if (bind.style) {\n bindings.style = createBindings(bind.style, parents, Binding);\n }\n\n if (bind.events) {\n bindings.events = createBindings(bind.events, parents, EventBinding);\n }\n\n if (bind.css) {\n bindings.css = createBindings(bind.css, parents, Binding);\n }\n\n target.bind(bindings);\n }\n\n if (target) {\n element.kendoBindingTarget = target;\n }\n\n var children = element.children;\n if (deep && children && !element.getAttribute(\"data-\" + kendo.ns + \"stop\")) {\n // https://github.com/telerik/kendo/issues/1240 for the weirdness.\n for (idx = 0; idx < children.length; idx++) {\n childrenCopy[idx] = children[idx];\n }\n\n for (idx = 0; idx < childrenCopy.length; idx++) {\n bindElement(childrenCopy[idx], source, roles, parents);\n }\n }\n }\n\n function bind(dom, object) {\n var idx,\n length,\n node,\n roles = kendo.rolesFromNamespaces([].slice.call(arguments, 2));\n\n object = kendo.observable(object);\n dom = $(dom);\n\n for (idx = 0, length = dom.length; idx < length; idx++) {\n node = dom[idx];\n if (node.nodeType === 1) {\n bindElement(node, object, roles);\n }\n }\n }\n\n function unbindElement(element, destroyWidget) {\n var bindingTarget = element.kendoBindingTarget;\n\n if (bindingTarget) {\n bindingTarget.destroy();\n\n if (deleteExpando) {\n delete element.kendoBindingTarget;\n } else if (element.removeAttribute) {\n element.removeAttribute(\"kendoBindingTarget\");\n } else {\n element.kendoBindingTarget = null;\n }\n }\n\n if (destroyWidget) {\n var widget = kendo.widgetInstance($(element));\n if (widget && typeof widget.destroy === FUNCTION) {\n widget.destroy();\n }\n }\n }\n\n function unbindElementTree(element, destroyWidgets) {\n\n if (!element) {\n return;\n }\n\n unbindElement(element, destroyWidgets);\n\n unbindElementChildren(element, destroyWidgets);\n }\n\n function unbindElementChildren(element, destroyWidgets) {\n var children = element.children;\n\n if (children) {\n for (var idx = 0, length = children.length; idx < length; idx++) {\n unbindElementTree(children[idx], destroyWidgets);\n }\n }\n }\n\n function unbind(dom) {\n var idx, length;\n\n dom = $(dom);\n\n for (idx = 0, length = dom.length; idx < length; idx++ ) {\n unbindElementTree(dom[idx], false);\n }\n }\n\n function notify(widget, namespace) {\n var element = widget.element,\n bindingTarget = element[0].kendoBindingTarget;\n\n if (bindingTarget) {\n bind(element, bindingTarget.source, namespace);\n }\n }\n\n function retrievePrimitiveValues(value, valueField) {\n var values = [];\n var idx = 0;\n var length;\n var item;\n\n if (!valueField) {\n return value;\n }\n\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n item = value[idx];\n values[idx] = item.get ? item.get(valueField) : item[valueField];\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n value = value.get(valueField);\n }\n\n return value;\n }\n\n kendo.unbind = unbind;\n kendo.bind = bind;\n kendo.data.binders = binders;\n kendo.data.Binder = Binder;\n kendo.notify = notify;\n\n kendo.observable = function(object) {\n if (!(object instanceof ObservableObject)) {\n object = new ObservableObject(object);\n }\n\n return object;\n };\n\n kendo.observableHierarchy = function(array) {\n var dataSource = kendo.data.HierarchicalDataSource.create(array);\n\n function recursiveRead(data) {\n var i, children;\n\n for (i = 0; i < data.length; i++) {\n data[i]._initChildren();\n\n children = data[i].children;\n\n children.fetch();\n\n data[i].items = children.data();\n\n recursiveRead(data[i].items);\n }\n }\n\n dataSource.fetch();\n\n recursiveRead(dataSource.data());\n\n dataSource._data._dataSource = dataSource;\n\n return dataSource._data;\n };\n\n })(window.kendo.jQuery);\n var kendo$R = kendo;\n\n var __meta__$Q = {\n id: \"view\",\n name: \"View\",\n category: \"framework\",\n description: \"The View class instantiates and handles the events of a certain screen from the application.\",\n depends: [ \"core\", \"binder\", \"fx\" ],\n hidden: false\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n attr = kendo.attr,\n ui = kendo.ui,\n attrValue = kendo.attrValue,\n directiveSelector = kendo.directiveSelector,\n Observable = kendo.Observable,\n Widget = kendo.ui.Widget,\n roleSelector = kendo.roleSelector,\n\n SCRIPT = \"SCRIPT\",\n INIT = \"init\",\n TRANSITION_START = \"transitionStart\",\n TRANSITION_END = \"transitionEnd\",\n SHOW = \"show\",\n HIDE = \"hide\",\n ATTACH = \"attach\",\n DETACH = \"detach\",\n sizzleErrorRegExp = /unrecognized expression/;\n\n var LOAD_START = \"loadStart\";\n var LOAD_COMPLETE = \"loadComplete\";\n var SHOW_START = \"showStart\";\n var SAME_VIEW_REQUESTED = \"sameViewRequested\";\n var VIEW_SHOW = \"viewShow\";\n var VIEW_TYPE_DETERMINED = \"viewTypeDetermined\";\n var AFTER = \"after\";\n var classNames = {\n content: \"k-content\",\n view: \"k-view\",\n stretchedView: \"k-stretched-view\",\n widget: \"k-widget\",\n header: \"k-header\",\n footer: \"k-footer\"\n };\n\n var View = kendo.ui.Widget.extend({\n init: function(content, options) {\n var that = this;\n options = options || {};\n that.id = kendo.guid();\n\n Observable.fn.init.call(that);\n this.options = $.extend({}, this.options, options);\n\n that.content = content;\n\n if (that.options.renderOnInit) {\n Widget.fn.init.call(that, that._createElement(), options);\n }\n\n if (that.options.wrapInSections) {\n that._renderSections();\n }\n\n that.tagName = options.tagName || \"div\";\n that.model = options.model;\n that._wrap = options.wrap !== false;\n this._evalTemplate = options.evalTemplate || false;\n this._useWithBlock = options.useWithBlock;\n that._fragments = {};\n\n that.bind([ INIT, SHOW, HIDE, TRANSITION_START, TRANSITION_END ], options);\n },\n\n options: {\n name: \"View\",\n renderOnInit: false,\n wrapInSections: false,\n detachOnHide: true,\n detachOnDestroy: true\n },\n\n render: function(container) {\n var that = this,\n notInitialized = !that.element;\n\n // The order below matters - kendo.bind should happen when the element is in the DOM, and show should be triggered after init.\n\n if (notInitialized) {\n that.element = that._createElement();\n }\n\n if (container) {\n $(container).append(that.element);\n }\n\n if (notInitialized) {\n kendo.bind(that.element, that.model);\n that.trigger(INIT);\n }\n\n if (container) {\n that._eachFragment(ATTACH);\n that.trigger(SHOW);\n }\n\n return that.element;\n },\n\n clone: function() {\n return new ViewClone(this);\n },\n\n triggerBeforeShow: function() {\n return true;\n },\n\n triggerBeforeHide: function() {\n return true;\n },\n\n showStart: function() {\n var that = this;\n var element = that.render();\n\n if (element) {\n element.css(\"display\", \"\");\n }\n\n this.trigger(SHOW_START, { view: this });\n },\n\n showEnd: function() {\n },\n\n hideEnd: function() {\n this.hide();\n },\n\n beforeTransition: function(type) {\n this.trigger(TRANSITION_START, { type: type });\n },\n\n afterTransition: function(type) {\n this.trigger(TRANSITION_END, { type: type });\n },\n\n hide: function() {\n if (this.options.detachOnHide) {\n this._eachFragment(DETACH);\n $(this.element).detach();\n }\n\n this.trigger(HIDE);\n },\n\n destroy: function() {\n var that = this;\n var element = that.element;\n\n if (element) {\n Widget.fn.destroy.call(that);\n\n kendo.unbind(element);\n kendo.destroy(element);\n\n if (that.options.detachOnDestroy) {\n element.remove();\n }\n }\n },\n\n // ported from mobile view\n purge: function() {\n var that = this;\n\n that.destroy();\n $(that.element).add(that.content).add(that.wrapper).off().remove();\n },\n\n fragments: function(fragments) {\n $.extend(this._fragments, fragments);\n },\n\n _eachFragment: function(methodName) {\n for (var placeholder in this._fragments) {\n this._fragments[placeholder][methodName](this, placeholder);\n }\n },\n\n _createElement: function() {\n var that = this,\n wrapper = \"<\" + that.tagName + \">\",\n element,\n content;\n\n try {\n content = $(document.getElementById(that.content) || that.content); // support passing id without #\n\n if (content[0].tagName === SCRIPT) {\n content = content.html();\n }\n } catch (e) {\n if (sizzleErrorRegExp.test(e.message)) {\n content = that.content;\n }\n }\n\n if (typeof content === \"string\") {\n content = content.replace(/^\\s+|\\s+$/g, '');\n if (that._evalTemplate) {\n content = kendo.template(content, { useWithBlock: that._useWithBlock })(that.model || {});\n }\n\n element = $(wrapper).append(content);\n // drop the wrapper if asked - this seems like the easiest (although not very intuitive) way to avoid messing up templates with questionable content, like this one for instance:\n // \n if (!that._wrap) {\n element = element.contents();\n }\n } else {\n element = content;\n if (that._evalTemplate) {\n var result = $(kendo.template($(\"
    \").append(element.clone(true)).html(), { useWithBlock: that._useWithBlock })(that.model || {}));\n\n // template uses DOM\n if ($.contains(document, element[0])) {\n element.replaceWith(result);\n }\n\n element = result;\n }\n if (that._wrap) {\n element = element.wrapAll(wrapper).parent();\n }\n }\n\n return element;\n },\n\n _renderSections: function() {\n var that = this;\n\n if (that.options.wrapInSections) {\n that._wrapper();\n that._createContent();\n that._createHeader();\n that._createFooter();\n }\n },\n\n _wrapper: function() {\n var that = this;\n var content = that.content;\n\n if (content.is(roleSelector(\"view\"))) {\n that.wrapper = that.content;\n } else {\n that.wrapper = content\n .wrap('
    ')\n .parent();\n }\n\n var wrapper = that.wrapper;\n\n wrapper.attr(\"id\", that.id);\n\n wrapper.addClass(classNames.view);\n wrapper.addClass(classNames.widget);\n wrapper.attr(\"role\", \"view\");\n },\n\n _createContent: function() {\n var that = this;\n var wrapper = $(that.wrapper);\n var contentSelector = roleSelector(\"content\");\n\n if (!wrapper.children(contentSelector)[0]) {\n var ccontentElements = wrapper.children().filter(function() {\n var child = $(this);\n if (!child.is(roleSelector(\"header\")) && !child.is(roleSelector(\"footer\"))) {\n return child;\n }\n });\n\n ccontentElements.wrap(\"
    ');\n }\n\n // use contentElement instead of content as view.content can be a string\n this.contentElement = wrapper.children(roleSelector(\"content\"));\n\n this.contentElement\n .addClass(classNames.stretchedView)\n .addClass(classNames.content);\n },\n\n _createHeader: function() {\n var that = this;\n var wrapper = that.wrapper;\n\n this.header = wrapper.children(roleSelector(\"header\")).addClass(classNames.header);\n },\n\n _createFooter: function() {\n var that = this;\n var wrapper = that.wrapper;\n\n this.footer = wrapper.children(roleSelector(\"footer\")).addClass(classNames.footer);\n }\n });\n\n var ViewClone = kendo.Class.extend({\n init: function(view) {\n $.extend(this, {\n element: view.element.clone(true),\n transition: view.transition,\n id: view.id\n });\n\n view.element.parent().append(this.element);\n },\n\n hideEnd: function() {\n this.element.remove();\n },\n\n beforeTransition: $.noop,\n afterTransition: $.noop\n });\n\n var Layout = View.extend({\n init: function(content, options) {\n View.fn.init.call(this, content, options);\n this.containers = {};\n },\n\n container: function(selector) {\n var container = this.containers[selector];\n\n if (!container) {\n container = this._createContainer(selector);\n this.containers[selector] = container;\n }\n\n return container;\n },\n\n showIn: function(selector, view, transition) {\n this.container(selector).show(view, transition);\n },\n\n _createContainer: function(selector) {\n var root = this.render(),\n element = root.find(selector),\n container;\n\n if (!element.length && root.is(selector)) {\n if (root.is(selector)) {\n element = root;\n } else {\n\n throw new Error(\"can't find a container with the specified \" + selector + \" selector\");\n }\n }\n\n container = new ViewContainer(element);\n\n container.bind(\"accepted\", function(e) {\n e.view.render(element);\n });\n\n return container;\n }\n });\n\n var Fragment = View.extend({\n attach: function(view, placeholder) {\n view.element.find(placeholder).replaceWith(this.render());\n },\n\n detach: function() {\n }\n });\n\n var transitionRegExp = /^(\\w+)(:(\\w+))?( (\\w+))?$/;\n\n function parseTransition(transition) {\n if (!transition) {\n return {};\n }\n\n var matches = transition.match(transitionRegExp) || [];\n\n return {\n type: matches[1],\n direction: matches[3],\n reverse: matches[5] === \"reverse\"\n };\n }\n\n var ViewContainer = Observable.extend({\n init: function(container) {\n Observable.fn.init.call(this);\n this.container = container;\n this.history = [];\n this.view = null;\n this.running = false;\n },\n\n after: function() {\n this.running = false;\n this.trigger(\"complete\", { view: this.view });\n this.trigger(\"after\");\n },\n\n end: function() {\n this.view.showEnd();\n this.previous.hideEnd();\n this.after();\n },\n\n show: function(view, transition, locationID) {\n if (!view.triggerBeforeShow() || (this.view && !this.view.triggerBeforeHide())) {\n this.trigger(\"after\");\n return false;\n }\n\n locationID = locationID || view.id;\n\n var that = this,\n current = (view === that.view) ? view.clone() : that.view,\n history = that.history,\n previousEntry = history[history.length - 2] || {},\n back = previousEntry.id === locationID,\n // If explicit transition is set, it will be with highest priority\n // Next we will try using the history record transition or the view transition configuration\n theTransition = transition || ( back ? history[history.length - 1].transition : view.transition ),\n transitionData = parseTransition(theTransition);\n\n if (that.running) {\n that.effect.stop();\n }\n\n if (theTransition === \"none\") {\n theTransition = null;\n }\n\n that.trigger(\"accepted\", { view: view });\n that.view = view;\n that.previous = current;\n that.running = true;\n\n if (!back) {\n history.push({ id: locationID, transition: theTransition });\n } else {\n history.pop();\n }\n\n if (!current) {\n view.showStart();\n view.showEnd();\n that.after();\n return true;\n }\n\n if (!theTransition || !kendo.effects.enabled) {\n view.showStart();\n that.end();\n } else {\n // hide the view element before init/show - prevents blinks on iPad\n // the replace effect will remove this class\n view.element.addClass(\"k-fx-hidden\");\n view.showStart();\n // do not reverse the explicit transition\n if (back && !transition) {\n transitionData.reverse = !transitionData.reverse;\n }\n\n that.effect = kendo.fx(view.element).replace(current.element, transitionData.type)\n .beforeTransition(function() {\n view.beforeTransition(\"show\");\n current.beforeTransition(\"hide\");\n })\n .afterTransition(function() {\n view.afterTransition(\"show\");\n current.afterTransition(\"hide\");\n })\n .direction(transitionData.direction)\n .setReverse(transitionData.reverse);\n\n that.effect.run().then(function() { that.end(); });\n }\n\n return true;\n },\n\n destroy: function() {\n var that = this;\n var view = that.view;\n\n if (view && view.destroy) {\n view.destroy();\n }\n }\n });\n\n var ViewEngine = Observable.extend({\n init: function(options) {\n var that = this,\n views,\n container;\n\n Observable.fn.init.call(that);\n that.options = options;\n\n $.extend(that, options);\n that.sandbox = $(\"
    \");\n container = that.container;\n\n views = that._hideViews(container);\n that.rootView = views.first();\n that.layouts = {};\n\n that.viewContainer = new kendo.ViewContainer(that.container);\n\n that.viewContainer.bind(\"accepted\", function(e) {\n e.view.params = that.params;\n });\n\n that.viewContainer.bind(\"complete\", function(e) {\n that.trigger(VIEW_SHOW, { view: e.view });\n });\n\n that.viewContainer.bind(AFTER, function() {\n that.trigger(AFTER);\n });\n\n this.bind(this.events, options);\n },\n\n events: [\n SHOW_START,\n AFTER,\n VIEW_SHOW,\n LOAD_START,\n LOAD_COMPLETE,\n SAME_VIEW_REQUESTED,\n VIEW_TYPE_DETERMINED\n ],\n\n destroy: function() {\n var that = this;\n var viewContainer = that.viewContainer;\n\n kendo.destroy(that.container);\n\n for (var id in that.layouts) {\n this.layouts[id].destroy();\n }\n\n if (viewContainer) {\n viewContainer.destroy();\n }\n },\n\n view: function() {\n return this.viewContainer.view;\n },\n\n showView: function(url, transition, params) {\n url = url.replace(new RegExp(\"^\" + this.remoteViewURLPrefix), \"\");\n if (url === \"\" && this.remoteViewURLPrefix) {\n url = \"/\";\n }\n\n if (url.replace(/^#/, \"\") === this.url) {\n this.trigger(SAME_VIEW_REQUESTED);\n return false;\n }\n\n this.trigger(SHOW_START);\n\n var that = this,\n element = that._findViewElement(url),\n view = kendo.widgetInstance(element);\n\n that.url = url.replace(/^#/, \"\");\n\n that.params = params;\n\n if (view && view.reload) {\n view.purge();\n element = [];\n }\n\n this.trigger(VIEW_TYPE_DETERMINED, { remote: element.length === 0, url: url });\n\n if (element[0]) {\n if (!view) {\n view = that._createView(element);\n }\n\n return that.viewContainer.show(view, transition, url);\n } else {\n return true;\n }\n },\n\n append: function(html, url) {\n var sandbox = this.sandbox,\n urlPath = (url || \"\").split(\"?\")[0],\n container = this.container,\n views,\n view;\n\n if (html.indexOf(\" -1) {\n html = $(\"
    \").append(html).html();\n }\n\n sandbox[0].innerHTML = html;\n\n container.append(sandbox.children(\"script, style\"));\n\n views = this._hideViews(sandbox);\n view = views.first();\n\n // Generic HTML content found as remote view - no remote view markers\n if (!view.length) {\n views = view = sandbox.wrapInner(\"
    \").children(); // one element\n }\n\n if (urlPath) {\n view.hide().attr(attr(\"url\"), urlPath);\n }\n\n container.append(views);\n\n html = null; // Garbage collection.\n return this._createView(view);\n },\n\n _locate: function(selectors) {\n return roleSelector(selectors);\n },\n\n _findViewElement: function(url) {\n var element,\n urlPath = url.split(\"?\")[0];\n\n if (!urlPath) {\n return this.rootView;\n }\n\n element = this.container.children(\"[\" + attr(\"url\") + \"='\" + urlPath + \"']\");\n\n // do not try to search for \"#/foo/bar\" id, jQuery throws error\n if (!element[0] && urlPath.indexOf(\"/\") === -1) {\n element = this.container.children(urlPath.charAt(0) === \"#\" ? urlPath : \"#\" + urlPath);\n }\n\n if (!element[0]) {\n element = this._findViewElementById(url);\n }\n\n return element;\n },\n\n _findViewElementById: function(id) {\n var element = this.container.children(\"[id='\" + id + \"']\");\n return element;\n },\n\n _createView: function(element) {\n //return this._createMobileView(element);\n return this._createSpaView(element);\n },\n\n _createMobileView: function(element) {\n return kendo.initWidget(element, {\n defaultTransition: this.transition,\n loader: this.loader,\n container: this.container,\n getLayout: this.getLayoutProxy,\n modelScope: this.modelScope,\n reload: attrValue(element, \"reload\")\n }, ui.roles);\n },\n\n _createSpaView: function(element) {\n var viewOptions = (this.options || {}).viewOptions || {};\n return new kendo.View(element, {\n renderOnInit: viewOptions.renderOnInit,\n wrap: viewOptions.wrap || false,\n wrapInSections: viewOptions.wrapInSections,\n detachOnHide: viewOptions.detachOnHide,\n detachOnDestroy: viewOptions.detachOnDestroy\n });\n },\n\n _hideViews: function(container) {\n return container.children(this._locate(\"view\")).hide();\n }\n });\n\n kendo.ViewEngine = ViewEngine;\n\n kendo.ViewContainer = ViewContainer;\n kendo.Fragment = Fragment;\n kendo.Layout = Layout;\n kendo.View = View;\n kendo.ViewClone = ViewClone;\n\n })(window.kendo.jQuery);\n var kendo$Q = kendo;\n\n var __meta__$P = {\n id: \"data.signalr\",\n name: \"SignalR\",\n category: \"framework\",\n depends: [ \"data\" ],\n hidden: true\n };\n\n (function($) {\n var kendo = window.kendo;\n var isFunction = kendo.isFunction;\n\n function isJQueryPromise(promise) {\n return promise && isFunction(promise.done) && isFunction(promise.fail);\n }\n\n function isNativePromise(promise) {\n return promise && isFunction(promise.then) && isFunction(promise.catch);\n }\n\n var transport = kendo.data.RemoteTransport.extend({\n init: function(options) {\n var signalr = options && options.signalr ? options.signalr : {};\n\n var promise = signalr.promise;\n\n if (!promise) {\n throw new Error('The \"promise\" option must be set.');\n }\n\n if (!isJQueryPromise(promise) && !isNativePromise(promise)) {\n throw new Error('The \"promise\" option must be a Promise.');\n }\n\n this.promise = promise;\n\n var hub = signalr.hub;\n\n if (!hub) {\n throw new Error('The \"hub\" option must be set.');\n }\n\n if (typeof hub.on != \"function\" || typeof hub.invoke != \"function\") {\n throw new Error('The \"hub\" option is not a valid SignalR hub proxy.');\n }\n\n this.hub = hub;\n\n kendo.data.RemoteTransport.fn.init.call(this, options);\n },\n\n push: function(callbacks) {\n var client = this.options.signalr.client || {};\n\n if (client.create) {\n this.hub.on(client.create, callbacks.pushCreate);\n }\n\n if (client.update) {\n this.hub.on(client.update, callbacks.pushUpdate);\n }\n\n if (client.destroy) {\n this.hub.on(client.destroy, callbacks.pushDestroy);\n }\n },\n\n _crud: function(options, type) {\n var hub = this.hub;\n var promise = this.promise;\n var server = this.options.signalr.server;\n\n if (!server || !server[type]) {\n throw new Error(kendo.format('The \"server.{0}\" option must be set.', type));\n }\n\n var args = [server[type]];\n\n var data = this.parameterMap(options.data, type);\n\n if (!$.isEmptyObject(data)) {\n args.push(data);\n }\n\n if (isJQueryPromise(promise)) {\n promise.done(function() {\n hub.invoke.apply(hub, args)\n .done(options.success)\n .fail(options.error);\n });\n } else if (isNativePromise(promise)) {\n promise.then(function() {\n hub.invoke.apply(hub, args)\n .then(options.success)\n .catch(options.error);\n });\n }\n },\n\n read: function(options) {\n this._crud(options, \"read\");\n },\n\n create: function(options) {\n this._crud(options, \"create\");\n },\n\n update: function(options) {\n this._crud(options, \"update\");\n },\n\n destroy: function(options) {\n this._crud(options, \"destroy\");\n }\n });\n\n $.extend(true, kendo.data, {\n transports: {\n signalr: transport\n }\n });\n\n })(window.kendo.jQuery);\n var kendo$P = kendo;\n\n var __meta__$O = {\n id: \"userevents\",\n name: \"User Events\",\n category: \"framework\",\n depends: [ \"core\" ],\n hidden: true\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n support = kendo.support,\n Class = kendo.Class,\n Observable = kendo.Observable,\n now = Date.now,\n extend = $.extend,\n OS = support.mobileOS,\n invalidZeroEvents = OS && OS.android,\n DEFAULT_MIN_HOLD = 800,\n CLICK_DELAY = 300,\n DEFAULT_THRESHOLD = support.browser.msie ? 5 : 0, // WP8 and W8 are very sensitive and always report move.\n\n // UserEvents events\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\n var THRESHOLD = {\n \"api\": 0,\n \"touch\": 0,\n \"mouse\": 9,\n \"pointer\": 9\n };\n\n var ENABLE_GLOBAL_SURFACE = (!support.touch || support.mouseAndTouchPresent);\n\n function touchDelta(touch1, touch2) {\n var 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\n distance: Math.sqrt(dx * dx + dy * dy)\n };\n }\n\n function getTouches(e) {\n var touches = [],\n originalEvent = e.originalEvent,\n currentTarget = e.currentTarget,\n idx = 0, length,\n changedTouches,\n touch;\n\n if (e.api) {\n touches.push({\n id: 2, // hardcoded ID for API call;\n event: e,\n target: e.target,\n currentTarget: e.target,\n location: e,\n type: \"api\"\n });\n }\n else if (e.type.match(/touch/)) {\n changedTouches = originalEvent ? originalEvent.changedTouches : [];\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 }\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, // hardcoded ID for mouse event;\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n location: e,\n type: \"mouse\"\n });\n }\n\n return touches;\n }\n\n var TouchAxis = Class.extend({\n init: function(axis, location) {\n var that = this;\n\n that.axis = axis;\n\n that._updateLocationData(location);\n\n that.startLocation = that.location;\n that.velocity = that.delta = 0;\n that.timeStamp = now();\n },\n\n move: function(location) {\n var that = this,\n offset = location[\"page\" + that.axis],\n timeStamp = now(),\n timeDelta = (timeStamp - that.timeStamp) || 1; // Firing manually events in tests can make this 0;\n\n if (!offset && invalidZeroEvents) {\n return;\n }\n\n that.delta = offset - that.location;\n\n that._updateLocationData(location);\n\n that.initialDelta = offset - that.startLocation;\n that.velocity = that.delta / timeDelta;\n that.timeStamp = timeStamp;\n },\n\n _updateLocationData: function(location) {\n var that = this, 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\n var Touch = Class.extend({\n init: function(userEvents, target, touchInfo) {\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: function() {\n this._holdTimeout = setTimeout(this._hold.bind(this), this.userEvents.minHold);\n this._trigger(PRESS, this.pressEvent);\n },\n\n _tap: function(touchInfo) {\n var that = this;\n that.userEvents._clicks++;\n if (that.userEvents._clicks == 1) {\n that._clickTimeout = setTimeout(function() {\n if (that.userEvents._clicks == 1) {\n that._trigger(TAP, touchInfo);\n }\n else {\n that._trigger(DOUBLETAP, touchInfo);\n }\n that.userEvents._clicks = 0;\n }, CLICK_DELAY);\n }\n },\n\n _hold: function() {\n this._trigger(HOLD, this.pressEvent);\n },\n\n move: function(touchInfo) {\n var that = this;\n var preventMove = touchInfo.type !== \"api\" && that.userEvents._shouldNotMove;\n\n if (that._finished || preventMove) { return; }\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 // Event handlers may cancel the drag in the START event handler, hence the double check for pressed.\n if (!that._finished) {\n that._trigger(MOVE, touchInfo);\n }\n },\n\n end: function(touchInfo) {\n this.endTime = now();\n\n if (this._finished) { return; }\n\n // Mark the object as finished if there are blocking operations in the event handlers (alert/confirm)\n this._finished = true;\n\n this._trigger(RELEASE, touchInfo); // Release should be fired before TAP (as click is after mouseup/touchend)\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 }\n else {\n this._trigger(TAP, touchInfo);\n }\n }\n }\n\n clearTimeout(this._holdTimeout);\n\n this.dispose();\n },\n\n dispose: function() {\n var userEvents = this.userEvents,\n activeTouches = userEvents.touches;\n\n this._finished = true;\n this.pressEvent = null;\n clearTimeout(this._holdTimeout);\n\n activeTouches.splice($.inArray(this, activeTouches), 1);\n },\n\n skip: function() {\n this.dispose();\n },\n\n cancel: function() {\n this.dispose();\n },\n\n isMoved: function() {\n return this._moved;\n },\n\n _start: function(touchInfo) {\n clearTimeout(this._holdTimeout);\n\n this.startTime = now();\n this._moved = true;\n this._trigger(START, touchInfo);\n },\n\n _trigger: function(name, touchInfo) {\n var 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\n if (that.userEvents.notify(name, data)) {\n jQueryEvent.preventDefault();\n }\n },\n\n _withinIgnoreThreshold: function() {\n var xDelta = this.x.initialDelta,\n yDelta = this.y.initialDelta;\n\n return Math.sqrt(xDelta * xDelta + yDelta * yDelta) <= this.threshold;\n }\n });\n\n function withEachUpEvent(callback) {\n var downEvents = kendo.eventMap.up.split(\" \"),\n idx = 0,\n length = downEvents.length;\n\n for (; idx < length; idx ++) {\n callback(downEvents[idx]);\n }\n }\n\n var UserEvents = Observable.extend({\n init: function(element, options) {\n var that = this,\n filter,\n ns = kendo.guid();\n\n options = options || {};\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.eventNS = ns;\n that._clicks = 0;\n that.supportDoubleTap = options.supportDoubleTap;\n\n element = $(element).handler(that);\n Observable.fn.init.call(that);\n\n extend(that, {\n element: element,\n // the touch events lock to the element anyway, so no need for the global setting\n surface: options.global && ENABLE_GLOBAL_SURFACE ? $(element[0].ownerDocument.documentElement) : $(options.surface || element),\n stopPropagation: options.stopPropagation,\n pressed: false\n });\n\n that.surface.handler(that)\n .on(kendo.applyEventMap(\"move\", ns), \"_move\")\n .on(kendo.applyEventMap(\"up cancel\", ns), \"_end\");\n\n element.on(kendo.applyEventMap(\"down\", ns), filter, \"_start\");\n\n if (that.useClickAsTap) {\n element.on(kendo.applyEventMap(\"click\", ns), filter, \"_click\");\n }\n\n if (support.pointers || support.msPointers) {\n //touch-action:none will not work for IE10\n if (support.browser.version < 11) {\n var defaultAction = \"pinch-zoom double-tap-zoom\";\n element.css(\"-ms-touch-action\", options.touchAction && options.touchAction != \"none\" ? defaultAction + \" \" + options.touchAction : defaultAction);\n } else {\n element.css(\"touch-action\", options.touchAction || \"none\");\n }\n }\n\n if (options.preventDragEvent) {\n element.on(kendo.applyEventMap(\"dragstart\", ns), kendo.preventDefault);\n }\n\n element.on(kendo.applyEventMap(\"mousedown\", ns), filter, { root: element }, \"_select\");\n\n if (that.captureUpIfMoved && support.eventCapture) {\n var surfaceElement = that.surface[0],\n preventIfMovingProxy = that.preventIfMoving.bind(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: function(e) {\n if (this._isMoved()) {\n e.preventDefault();\n }\n },\n\n destroy: function() {\n var that = this;\n\n if (that._destroyed) {\n return;\n }\n\n that._destroyed = true;\n\n if (that.captureUpIfMoved && support.eventCapture) {\n var surfaceElement = that.surface[0];\n withEachUpEvent(function(eventName) {\n surfaceElement.removeEventListener(eventName, that.preventIfMoving);\n });\n }\n\n that.element.kendoDestroy(that.eventNS);\n that.surface.kendoDestroy(that.eventNS);\n that.element.removeData(\"handler\");\n that.surface.removeData(\"handler\");\n that._disposeAll();\n\n that.unbind();\n delete that.surface;\n delete that.element;\n delete that.currentTarget;\n },\n\n capture: function() {\n UserEvents.current = this;\n },\n\n cancel: function() {\n this._disposeAll();\n this.trigger(CANCEL);\n },\n\n notify: function(eventName, data) {\n var that = this,\n touches = that.touches;\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 }\n\n extend(data, { touches: touches }, touchDelta(touches[0], touches[1]));\n }\n\n return this.trigger(eventName, extend(data, { type: eventName }));\n },\n\n // API\n press: function(x, y, target) {\n this._apiCall(\"_start\", x, y, target);\n },\n\n move: function(x, y) {\n this._apiCall(\"_move\", x, y);\n },\n\n end: function(x, y) {\n this._apiCall(\"_end\", x, y);\n },\n\n _isMultiTouch: function() {\n return this.touches.length > 1;\n },\n\n _maxTouchesReached: function() {\n return this.touches.length >= this._maxTouches;\n },\n\n _disposeAll: function() {\n var touches = this.touches;\n while (touches.length > 0) {\n touches.pop().dispose();\n }\n },\n\n _isMoved: function() {\n return $.grep(this.touches, function(touch) {\n return touch.isMoved();\n }).length;\n },\n\n _select: function(e) {\n if (!this.allowSelection || this.trigger(SELECT, { event: e })) {\n e.preventDefault();\n }\n },\n\n _start: function(e) {\n var 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\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); // target.is(filter) ? target : target.closest(filter, that.element);\n } else {\n target = that.element;\n }\n\n if (!target.length) {\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: function(e) {\n this._eachTouch(\"move\", e);\n },\n\n _end: function(e) {\n this._eachTouch(\"end\", e);\n },\n\n _click: function(e) {\n var 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: function(methodName, e) {\n var 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: function(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)[0],\n stopPropagation: $.noop,\n preventDefault: $.noop\n });\n }\n });\n\n var ClickMoveClick = Observable.extend({\n init: function(element, options) {\n var that = this,\n filter,\n ns = kendo.guid();\n\n options = options || {};\n filter = that.filter = options.filter;\n that.touches = [];\n that._maxTouches = 1;\n that.eventNS = ns;\n that._downStarted = 0;\n\n element = $(element).handler(that);\n Observable.fn.init.call(that);\n\n extend(that, {\n element: element,\n // the touch events lock to the element anyway, so no need for the global setting\n surface: options.global && ENABLE_GLOBAL_SURFACE ? $(element[0].ownerDocument.documentElement) : $(options.surface || element),\n stopPropagation: options.stopPropagation,\n pressed: false\n });\n\n that.surface.handler(that)\n .on(kendo.applyEventMap(\"move\", ns), \"_move\")\n .on(kendo.applyEventMap(\"cancel up\", ns), \"cancel\");\n\n element.on(kendo.applyEventMap(\"down\", ns), filter, \"_down\")\n .on(kendo.applyEventMap(\"up\", ns), filter, \"_up\");\n\n that.bind([\n START,\n MOVE,\n END,\n HOLD,\n CANCEL,\n SELECT\n ], options);\n },\n\n _down: function(e) {\n if (e.which && e.which > 1) {\n this.cancel();\n } else {\n this._downStarted = new Date().getTime();\n this._downTarget = e.target;\n }\n },\n\n _up: function(e) {\n var currentMilestone = new Date().getTime(),\n currentTarget = e.target;\n\n if ((!e.which || e.which === 1) &&\n currentMilestone < this._downStarted + CLICK_DELAY &&\n currentTarget === this._downTarget) {\n if (this.touches && this.touches.length > 0) {\n this._end(e);\n } else {\n this._start(e);\n }\n\n this._preventCancel = true;\n } else {\n this.cancel();\n }\n\n this._downStarted = 0;\n this._downTarget = null;\n },\n\n destroy: function() {\n var that = this;\n\n if (that._destroyed) {\n return;\n }\n\n that._destroyed = true;\n\n that.element.kendoDestroy(that.eventNS);\n that.surface.kendoDestroy(that.eventNS);\n that.element.removeData(\"handler\");\n that.surface.removeData(\"handler\");\n that._disposeAll();\n\n that.unbind();\n delete that.surface;\n delete that.element;\n delete that.currentTarget;\n },\n\n capture: function() {\n ClickMoveClick.current = this;\n },\n\n cancel: function() {\n if (this._preventCancel) {\n this._preventCancel = false;\n return;\n } else if (this.touches && this.touches.length > 0) {\n this._disposeAll();\n this.trigger(CANCEL);\n }\n },\n\n notify: function(eventName, data) {\n data.clickMoveClick = true;\n return this.trigger(eventName, extend(data, { type: eventName }));\n },\n\n _maxTouchesReached: function() {\n return this.touches.length >= this._maxTouches;\n },\n\n _disposeAll: function() {\n var touches = this.touches;\n\n while (touches.length > 0) {\n touches.pop().dispose();\n }\n },\n\n _start: function(e) {\n var 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 ClickMoveClick.current = null;\n\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.length) {\n continue;\n }\n\n touch = new Touch(that, target, touch);\n that.touches.push(touch);\n touch.press();\n touch._start(touch);\n }\n },\n\n _move: function(e) {\n this._eachTouch(\"move\", e);\n },\n\n _end: function(e) {\n this._eachTouch(\"move\", e);\n this._eachTouch(\"end\", e);\n },\n\n _eachTouch: function(methodName, e) {\n var 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.x.move(touchInfo.location);\n matchingTouch.y.move(touchInfo.location);\n matchingTouch[methodName](touchInfo);\n }\n }\n }\n });\n\n UserEvents.defaultThreshold = function(value) {\n DEFAULT_THRESHOLD = value;\n };\n\n UserEvents.minHold = function(value) {\n DEFAULT_MIN_HOLD = value;\n };\n\n kendo.getTouches = getTouches;\n kendo.touchDelta = touchDelta;\n kendo.UserEvents = UserEvents;\n kendo.ClickMoveClick = ClickMoveClick;\n })(window.kendo.jQuery);\n var kendo$O = kendo;\n\n var __meta__$N = {\n id: \"draganddrop\",\n name: \"Drag & drop\",\n category: \"framework\",\n description: \"Drag & drop functionality for any DOM element.\",\n depends: [ \"core\", \"userevents\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n support = kendo.support,\n document = window.document,\n $window = $(window),\n Class = kendo.Class,\n Widget = kendo.ui.Widget,\n Observable = kendo.Observable,\n UserEvents = kendo.UserEvents,\n ClickMoveClick = kendo.ClickMoveClick,\n extend = $.extend,\n getOffset = kendo.getOffset,\n draggables = {},\n dropTargets = {},\n dropAreas = {},\n lastDropTarget,\n elementUnderCursor = kendo.elementUnderCursor,\n KEYUP = \"keyup\",\n CHANGE = \"change\",\n\n // Draggable events\n DRAGSTART = \"dragstart\",\n HOLD = \"hold\",\n DRAG = \"drag\",\n DRAGEND = \"dragend\",\n DRAGCANCEL = \"dragcancel\",\n HINTDESTROYED = \"hintDestroyed\",\n\n // DropTarget events\n DRAGENTER = \"dragenter\",\n DRAGLEAVE = \"dragleave\",\n DROP = \"drop\";\n\n function contains(parent, child) {\n try {\n return $.contains(parent, child) || parent == child;\n } catch (e) {\n return false;\n }\n }\n\n function numericCssPropery(element, property) {\n return parseInt(element.css(property), 10) || 0;\n }\n\n function within(value, range) {\n return Math.min(Math.max(value, range.min), range.max);\n }\n\n function containerBoundaries(container, element) {\n var offset = getOffset(container),\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n minX = offset.left + numericCssPropery(container, \"borderLeftWidth\") + numericCssPropery(container, \"paddingLeft\"),\n minY = offset.top + numericCssPropery(container, \"borderTopWidth\") + numericCssPropery(container, \"paddingTop\"),\n maxX = minX + container.width() - outerWidth(element, true),\n maxY = minY + container.height() - outerHeight(element, true);\n\n return {\n x: { min: minX, max: maxX },\n y: { min: minY, max: maxY }\n };\n }\n\n function checkTarget(target, targets, areas) {\n var theTarget, theFilter, i = 0,\n targetLen = targets && targets.length,\n areaLen = areas && areas.length;\n\n while (target && target.parentNode) {\n for (i = 0; i < targetLen; i ++) {\n theTarget = targets[i];\n if (theTarget.element[0] === target) {\n return { target: theTarget, targetElement: target };\n }\n }\n\n for (i = 0; i < areaLen; i ++) {\n theFilter = areas[i];\n if ($.contains(theFilter.element[0], target) && support.matchesSelector.call(target, theFilter.options.filter)) {\n return { target: theFilter, targetElement: target };\n }\n }\n\n target = target.parentNode;\n }\n\n return undefined$1;\n }\n\n var TapCapture = Observable.extend({\n init: function(element, options) {\n var that = this,\n domElement = element[0];\n\n that.capture = false;\n\n if (domElement.addEventListener) {\n $.each(kendo.eventMap.down.split(\" \"), function() {\n domElement.addEventListener(this, that._press.bind(that), true);\n });\n $.each(kendo.eventMap.up.split(\" \"), function() {\n domElement.addEventListener(this, that._release.bind(that), true);\n });\n } else {\n $.each(kendo.eventMap.down.split(\" \"), function() {\n domElement.attachEvent(this, that._press.bind(that));\n });\n $.each(kendo.eventMap.up.split(\" \"), function() {\n domElement.attachEvent(this, that._release.bind(that));\n });\n }\n\n Observable.fn.init.call(that);\n\n that.bind([\"press\", \"release\"], options || {});\n },\n\n captureNext: function() {\n this.capture = true;\n },\n\n cancelCapture: function() {\n this.capture = false;\n },\n\n _press: function(e) {\n var that = this;\n that.trigger(\"press\");\n if (that.capture) {\n e.preventDefault();\n }\n },\n\n _release: function(e) {\n var that = this;\n that.trigger(\"release\");\n\n if (that.capture) {\n e.preventDefault();\n that.cancelCapture();\n }\n }\n });\n\n var PaneDimension = Observable.extend({\n init: function(options) {\n var that = this;\n Observable.fn.init.call(that);\n\n that.forcedEnabled = false;\n\n $.extend(that, options);\n\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: function() {\n $.extend(this, {\n virtual: true,\n forcedEnabled: true,\n _virtualMin: 0,\n _virtualMax: 0\n });\n },\n\n virtualSize: function(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: function(offset) {\n return offset > this.max || offset < this.min;\n },\n\n forceEnabled: function() {\n this.forcedEnabled = true;\n },\n\n getSize: function() {\n return this.container[0][this.measure];\n },\n\n getTotal: function() {\n return this.element[0][this.scrollSize];\n },\n\n rescale: function(scale) {\n this.scale = scale;\n },\n\n update: function(silent) {\n var 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; // we are not visible.\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\n that.enabled = that.forcedEnabled || (scaledTotal > size);\n\n if (!silent) {\n that.trigger(CHANGE, that);\n }\n }\n });\n\n var PaneDimensions = Observable.extend({\n init: function(options) {\n var that = this;\n\n Observable.fn.init.call(that);\n\n that.x = new PaneDimension(extend({ horizontal: true }, options));\n that.y = new PaneDimension(extend({ horizontal: false }, options));\n that.container = options.container;\n that.forcedMinScale = options.minScale;\n that.maxScale = options.maxScale || 100;\n\n that.bind(CHANGE, options);\n },\n\n rescale: function(newScale) {\n this.x.rescale(newScale);\n this.y.rescale(newScale);\n this.refresh();\n },\n\n centerCoordinates: function() {\n return { x: Math.min(0, -this.x.centerOffset), y: Math.min(0, -this.y.centerOffset) };\n },\n\n refresh: function() {\n var 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\n var PaneAxis = Observable.extend({\n init: function(options) {\n var that = this;\n extend(that, options);\n Observable.fn.init.call(that);\n },\n\n outOfBounds: function() {\n return this.dimension.outOfBounds(this.movable[this.axis]);\n },\n\n dragMove: function(delta) {\n var 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 if ((position < dimension.min && delta < 0) || (position > dimension.max && delta > 0)) {\n delta *= that.resistance;\n }\n\n movable.translateAxis(axis, delta);\n that.trigger(CHANGE, that);\n }\n });\n\n var Pane = Class.extend({\n\n init: function(options) {\n var that = this,\n x,\n y,\n resistance,\n movable;\n\n extend(that, { elastic: true }, 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([\"press\", \"move\", \"end\", \"gesturestart\", \"gesturechange\"], {\n gesturestart: function(e) {\n that.gesture = e;\n that.offset = that.dimensions.container.offset();\n },\n\n press: function(e) {\n if ($(e.event.target).closest(\"a\").is(\"[data-navigate-on-press=true]\")) {\n e.sender.cancel();\n }\n },\n\n gesturechange: function(e) {\n var previousGesture = that.gesture,\n previousCenter = previousGesture.center,\n\n center = e.center,\n\n scaleDelta = e.distance / previousGesture.distance,\n\n minScale = that.dimensions.minScale,\n maxScale = that.dimensions.maxScale,\n coordinates;\n\n if (movable.scale <= minScale && scaleDelta < 1) {\n // Resist shrinking. Instead of shrinking from 1 to 0.5, it will shrink to 0.5 + (1 /* minScale */ - 0.5) * 0.8 = 0.9;\n scaleDelta += (1 - scaleDelta) * 0.8;\n }\n\n if (movable.scale * scaleDelta >= maxScale) {\n scaleDelta = maxScale / movable.scale;\n }\n\n var offsetX = movable.x + that.offset.left,\n offsetY = movable.y + that.offset.top;\n\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 e.preventDefault();\n },\n\n move: function(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\n end: function(e) {\n e.preventDefault();\n }\n });\n }\n });\n\n var TRANSFORM_STYLE = support.transitions.prefix + \"Transform\",\n translate;\n\n\n if (support.hasHW3D) {\n translate = function(x, y, scale) {\n return \"translate3d(\" + x + \"px,\" + y + \"px,0) scale(\" + scale + \")\";\n };\n } else {\n translate = function(x, y, scale) {\n return \"translate(\" + x + \"px,\" + y + \"px) scale(\" + scale + \")\";\n };\n }\n\n var Movable = Observable.extend({\n init: function(element) {\n var that = this;\n\n Observable.fn.init.call(that);\n\n that.element = $(element);\n that.element[0].style.webkitTransformOrigin = \"left top\";\n that.x = 0;\n that.y = 0;\n that.scale = 1;\n that._saveCoordinates(translate(that.x, that.y, that.scale));\n },\n\n translateAxis: function(axis, by) {\n this[axis] += by;\n this.refresh();\n },\n\n scaleTo: function(scale) {\n this.scale = scale;\n this.refresh();\n },\n\n scaleWith: function(scaleDelta) {\n this.scale *= scaleDelta;\n this.refresh();\n },\n\n translate: function(coordinates) {\n this.x += coordinates.x;\n this.y += coordinates.y;\n this.refresh();\n },\n\n moveAxis: function(axis, value) {\n this[axis] = value;\n this.refresh();\n },\n\n moveTo: function(coordinates) {\n extend(this, coordinates);\n this.refresh();\n },\n\n refresh: function() {\n var 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 if (kendo.support.browser.msie && kendo.support.browser.version < 10) {\n that.element[0].style.position = \"absolute\";\n that.element[0].style.left = that.x + \"px\";\n that.element[0].style.top = that.y + \"px\";\n\n } else {\n that.element[0].style[TRANSFORM_STYLE] = newCoordinates;\n }\n that._saveCoordinates(newCoordinates);\n that.trigger(CHANGE);\n }\n },\n\n _saveCoordinates: function(coordinates) {\n this.coordinates = coordinates;\n }\n });\n\n function destroyDroppable(collection, widget) {\n var groupName = widget.options.group,\n droppables = collection[groupName],\n i;\n\n Widget.fn.destroy.call(widget);\n\n if (droppables.length > 1) {\n for (i = 0; i < droppables.length; i++) {\n if (droppables[i] == widget) {\n droppables.splice(i, 1);\n break;\n }\n }\n } else {\n droppables.length = 0; // WTF, porting this from the previous destroyGroup\n delete collection[groupName];\n }\n }\n\n var DropTarget = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n var group = that.options.group;\n\n if (!(group in dropTargets)) {\n dropTargets[group] = [ that ];\n } else {\n dropTargets[group].push( that );\n }\n },\n\n events: [\n DRAGENTER,\n DRAGLEAVE,\n DROP\n ],\n\n options: {\n name: \"DropTarget\",\n group: \"default\"\n },\n\n destroy: function() {\n destroyDroppable(dropTargets, this);\n },\n\n _trigger: function(eventName, e) {\n var that = this,\n draggable = draggables[that.options.group];\n\n if (draggable) {\n return that.trigger(eventName, extend({}, e.event, {\n draggable: draggable,\n dropTarget: e.dropTarget\n }));\n }\n },\n\n _over: function(e) {\n this._trigger(DRAGENTER, e);\n },\n\n _out: function(e) {\n this._trigger(DRAGLEAVE, e);\n },\n\n _drop: function(e) {\n var that = this,\n draggable = draggables[that.options.group];\n\n if (draggable) {\n draggable.dropped = !that._trigger(DROP, e);\n }\n }\n });\n\n DropTarget.destroyGroup = function(groupName) {\n var group = dropTargets[groupName] || dropAreas[groupName],\n i;\n\n if (group) {\n for (i = 0; i < group.length; i++) {\n Widget.fn.destroy.call(group[i]);\n }\n\n group.length = 0;\n delete dropTargets[groupName];\n delete dropAreas[groupName];\n }\n };\n\n DropTarget._cache = dropTargets;\n\n var DropTargetArea = DropTarget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n var group = that.options.group;\n\n if (!(group in dropAreas)) {\n dropAreas[group] = [ that ];\n } else {\n dropAreas[group].push( that );\n }\n },\n\n destroy: function() {\n destroyDroppable(dropAreas, this);\n },\n\n options: {\n name: \"DropTargetArea\",\n group: \"default\",\n filter: null\n }\n });\n\n var Draggable = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n that._activated = false;\n\n if (this.options.clickMoveClick) {\n that.clickMoveClick = new ClickMoveClick(that.element, {\n global: true,\n filter: that.options.filter,\n start: that._startClickMoveClick.bind(that),\n move: that._drag.bind(that),\n end: that._end.bind(that),\n cancel: that._onCancel.bind(that)\n });\n }\n\n that.userEvents = new UserEvents(that.element, {\n global: true,\n allowSelection: true,\n filter: that.options.filter,\n threshold: that.options.distance,\n start: that._start.bind(that),\n hold: that._hold.bind(that),\n move: that._drag.bind(that),\n end: that._end.bind(that),\n cancel: that._onCancel.bind(that),\n select: that._select.bind(that),\n press: that._press.bind(that),\n });\n\n if (kendo.support.touch) {\n that.element.find(that.options.filter).css('touch-action', 'none');\n }\n\n that._afterEndHandler = that._afterEnd.bind(that);\n that._captureEscape = that._captureEscape.bind(that);\n },\n\n events: [\n HOLD,\n DRAGSTART,\n DRAG,\n DRAGEND,\n DRAGCANCEL,\n HINTDESTROYED\n ],\n\n options: {\n name: \"Draggable\",\n distance: ( kendo.support.touch ? 0 : 5),\n group: \"default\",\n cursorOffset: null,\n axis: null,\n container: null,\n filter: null,\n ignore: null,\n holdToDrag: false,\n showHintOnHold: false,\n autoScroll: false,\n dropped: false,\n clickMoveClick: false,\n preventOsHoldFeatures: false\n },\n\n cancelHold: function() {\n this._activated = false;\n },\n\n _captureEscape: function(e) {\n var that = this;\n\n if (e.keyCode === kendo.keys.ESC) {\n that.userEvents.cancel();\n\n if (that.clickMoveClick) {\n that.clickMoveClick.cancel();\n }\n\n this._trigger(DRAGCANCEL, { event: e });\n }\n },\n\n _updateHint: function(e) {\n var that = this,\n coordinates,\n options = that.options,\n boundaries = that.boundaries,\n axis = options.axis,\n cursorOffset = that.options.cursorOffset;\n\n if (cursorOffset) {\n coordinates = { left: e.x.location + cursorOffset.left, top: e.y.location + cursorOffset.top };\n } else {\n if (e.x.delta !== 0 || e.y.delta !== 0) {\n that.hintOffset.left += e.x.delta;\n that.hintOffset.top += e.y.delta;\n coordinates = $.extend({}, that.hintOffset);\n } else {\n that.hintOffset.left = e.x.startLocation + e.x.initialDelta;\n that.hintOffset.top = e.y.startLocation + e.y.initialDelta;\n coordinates = $.extend({}, that.hintOffset);\n }\n }\n\n if (boundaries) {\n coordinates.top = within(coordinates.top, boundaries.y);\n coordinates.left = within(coordinates.left, boundaries.x);\n }\n\n if (axis === \"x\") {\n delete coordinates.top;\n } else if (axis === \"y\") {\n delete coordinates.left;\n }\n\n that.hint.css(coordinates);\n },\n\n _shouldIgnoreTarget: function(target) {\n var ignoreSelector = this.options.ignore;\n return ignoreSelector && $(target).is(ignoreSelector);\n },\n\n _select: function(e) {\n if (!this._shouldIgnoreTarget(e.event.target)) {\n e.preventDefault();\n }\n },\n\n _startClickMoveClick: function(e) {\n this._activated = true;\n\n this._start(e);\n },\n\n _hint: function() {\n var that = this,\n hint = that.options.hint;\n\n if (hint) {\n if (that.hint) {\n that.hint.stop(true, true).remove();\n }\n\n that.hint = kendo.isFunction(hint) ? $(hint.call(that, that.currentTarget)) : hint;\n\n var offset = getOffset(that.currentTarget);\n that.hintOffset = offset;\n\n that.hint.css( {\n position: \"absolute\",\n zIndex: 20000, // the Window's z-index is 10000 and can be raised because of z-stacking\n left: offset.left,\n top: offset.top\n })\n .appendTo(document.body);\n }\n },\n\n _start: function(e) {\n var that = this,\n options = that.options,\n container = options.container ? $(options.container) : null,\n hint = options.hint;\n\n if (this._shouldIgnoreTarget(e.touch.initialTouch) || (options.holdToDrag && !that._activated)) {\n that.userEvents.cancel();\n return;\n }\n\n that.currentTarget = e.target;\n that.currentTargetOffset = getOffset(that.currentTarget);\n\n if (hint) {\n that._hint();\n }\n\n draggables[options.group] = that;\n\n that.dropped = false;\n\n if (container) {\n that.boundaries = containerBoundaries(container, that.hint);\n }\n\n $(document).on(KEYUP, that._captureEscape);\n\n if (that._trigger(DRAGSTART, e)) {\n that.userEvents.cancel();\n\n if (that.clickMoveClick) {\n that.clickMoveClick.cancel();\n }\n\n that._afterEnd();\n }\n\n that.userEvents.capture();\n },\n\n _hold: function(e) {\n this.currentTarget = e.target;\n\n if (this._trigger(HOLD, e)) {\n this.userEvents.cancel();\n } else {\n this._activated = true;\n if (this.options.showHintOnHold) {\n this._hint();\n }\n }\n },\n\n _drag: function(e) {\n e.preventDefault();\n\n var cursorElement = this._elementUnderCursor(e);\n\n if (this.options.autoScroll && this._cursorElement !== cursorElement) {\n this._scrollableParent = findScrollableParent(cursorElement);\n this._cursorElement = cursorElement;\n }\n\n this._lastEvent = e;\n this._processMovement(e, cursorElement);\n\n if (this.options.autoScroll) {\n // chrome seems to trigger mousemove when mouse is moved outside of the window (over the Chrome), too.\n if (this._scrollableParent[0]) {\n var velocity = autoScrollVelocity(e.x.location, e.y.location, scrollableViewPort(this._scrollableParent));\n\n\n this._scrollCompenstation = $.extend({}, this.hintOffset);\n this._scrollVelocity = velocity;\n\n if (velocity.y === 0 && velocity.x === 0) {\n clearInterval(this._scrollInterval);\n this._scrollInterval = null;\n } else if (!this._scrollInterval) {\n this._scrollInterval = setInterval(this._autoScroll.bind(this), 50);\n }\n }\n }\n\n if (this.hint) {\n this._updateHint(e);\n }\n },\n\n _processMovement: function(e, cursorElement) {\n this._withDropTarget(cursorElement, function(target, targetElement) {\n if (!target) {\n if (lastDropTarget) {\n lastDropTarget._trigger(DRAGLEAVE, extend(e, { dropTarget: $(lastDropTarget.targetElement) }));\n lastDropTarget = null;\n }\n return;\n }\n\n if (lastDropTarget) {\n if (targetElement === lastDropTarget.targetElement) {\n return;\n }\n\n lastDropTarget._trigger(DRAGLEAVE, extend(e, { dropTarget: $(lastDropTarget.targetElement) }));\n }\n\n target._trigger(DRAGENTER, extend(e, { dropTarget: $(targetElement) }));\n lastDropTarget = extend(target, { targetElement: targetElement });\n });\n\n this._trigger(DRAG, extend(e, { dropTarget: lastDropTarget, elementUnderCursor: cursorElement }));\n },\n\n _autoScroll: function() {\n var parent = this._scrollableParent[0],\n velocity = this._scrollVelocity,\n compensation = this._scrollCompenstation;\n\n if (!parent) {\n return;\n }\n\n var cursorElement = this._elementUnderCursor(this._lastEvent);\n this._processMovement(this._lastEvent, cursorElement);\n\n var yIsScrollable, xIsScrollable;\n\n var isRootNode = parent === scrollableRoot()[0];\n\n if (isRootNode) {\n yIsScrollable = document.body.scrollHeight > $window.height();\n xIsScrollable = document.body.scrollWidth > $window.width();\n } else {\n yIsScrollable = parent.offsetHeight <= parent.scrollHeight;\n xIsScrollable = parent.offsetWidth <= parent.scrollWidth;\n }\n\n var yDelta = parent.scrollTop + velocity.y;\n var yInBounds = yIsScrollable && yDelta > 0 && yDelta < parent.scrollHeight;\n\n var xDelta = parent.scrollLeft + velocity.x;\n var xInBounds = xIsScrollable && xDelta > 0 && xDelta < parent.scrollWidth;\n\n if (yInBounds) {\n parent.scrollTop += velocity.y;\n } else if (yIsScrollable && yDelta < 0) {\n parent.scrollTop = 0;\n }\n\n if (xInBounds) {\n parent.scrollLeft += velocity.x;\n } else if (xIsScrollable && xDelta < 0) {\n parent.scrollLeft = 0;\n }\n\n if (this.hint && isRootNode && (xInBounds || yInBounds)) {\n if (yInBounds) {\n compensation.top += velocity.y;\n }\n\n if (xInBounds) {\n compensation.left += velocity.x;\n }\n\n this.hint.css(compensation);\n }\n },\n\n _press: function(ev) {\n if (this.options.preventOsHoldFeatures) {\n ev.target.css('-webkit-user-select', 'none');\n ev.target.attr('unselectable', 'on');\n ev.target.one('contextmenu', (ev) => {\n ev.preventDefault();\n });\n }\n },\n\n _end: function(e) {\n this._withDropTarget(this._elementUnderCursor(e), function(target, targetElement) {\n if (target) {\n target._drop(extend({}, e, { dropTarget: $(targetElement) }));\n lastDropTarget = null;\n }\n });\n\n clearInterval(this._scrollInterval);\n this._scrollInterval = null;\n this._cancel(this._trigger(DRAGEND, e));\n },\n\n _onCancel: function(e) {\n this._cancel();\n this._trigger(DRAGCANCEL, { event: e });\n },\n\n _cancel: function(isDefaultPrevented) {\n var that = this;\n\n that._scrollableParent = null;\n this._cursorElement = null;\n clearInterval(this._scrollInterval);\n that._activated = false;\n\n if (that.hint && !that.dropped) {\n setTimeout(function() {\n that.hint.stop(true, true);\n\n if (isDefaultPrevented) {\n that._afterEndHandler();\n } else {\n that.hint.animate(that.currentTargetOffset, \"fast\", that._afterEndHandler);\n }\n }, 0);\n } else {\n that._afterEnd();\n }\n },\n\n _trigger: function(eventName, e) {\n var that = this;\n\n return that.trigger(\n eventName, extend(\n {},\n e.event,\n {\n x: e.x,\n y: e.y,\n currentTarget: that.currentTarget,\n initialTarget: e.touch ? e.touch.initialTouch : null,\n dropTarget: e.dropTarget,\n elementUnderCursor: e.elementUnderCursor,\n clickMoveClick: e.clickMoveClick\n }\n ));\n },\n\n _elementUnderCursor: function(e) {\n var target = elementUnderCursor(e),\n hint = this.hint;\n\n if (hint && contains(hint[0], target)) {\n hint.hide();\n target = elementUnderCursor(e);\n // IE8 does not return the element in iframe from first attempt\n if (!target) {\n target = elementUnderCursor(e);\n }\n hint.show();\n }\n\n return target;\n },\n\n _withDropTarget: function(element, callback) {\n var result,\n group = this.options.group,\n targets = dropTargets[group],\n areas = dropAreas[group];\n\n if (targets && targets.length || areas && areas.length) {\n result = checkTarget(element, targets, areas);\n\n if (result) {\n callback(result.target, result.targetElement);\n } else {\n callback();\n }\n }\n },\n\n destroy: function() {\n var that = this;\n\n Widget.fn.destroy.call(that);\n\n that._afterEnd();\n\n that.userEvents.destroy();\n\n if (that.clickMoveClick) {\n that.clickMoveClick.destroy();\n }\n\n this._scrollableParent = null;\n this._cursorElement = null;\n clearInterval(this._scrollInterval);\n\n that.currentTarget = null;\n },\n\n _afterEnd: function() {\n var that = this;\n\n if (that.hint) {\n that.hint.remove();\n }\n\n delete draggables[that.options.group];\n\n that.trigger(\"destroy\");\n that.trigger(HINTDESTROYED);\n $(document).off(KEYUP, that._captureEscape);\n }\n });\n\n kendo.ui.plugin(DropTarget);\n kendo.ui.plugin(DropTargetArea);\n kendo.ui.plugin(Draggable);\n kendo.TapCapture = TapCapture;\n kendo.containerBoundaries = containerBoundaries;\n\n extend(kendo.ui, {\n Pane: Pane,\n PaneDimensions: PaneDimensions,\n Movable: Movable\n });\n\n function scrollableViewPort(element) {\n var root = scrollableRoot()[0],\n offset,\n top,\n left;\n\n if (element[0] === root) {\n top = root.scrollTop;\n left = root.scrollLeft;\n\n return {\n top: top,\n left: left,\n bottom: top + $window.height(),\n right: left + $window.width()\n };\n } else {\n offset = element.offset();\n offset.bottom = offset.top + element.height();\n offset.right = offset.left + element.width();\n return offset;\n }\n }\n\n function scrollableRoot() {\n return $(kendo.support.browser.edge || kendo.support.browser.safari ? document.body : document.documentElement);\n }\n\n function findScrollableParent(element) {\n var root = scrollableRoot();\n\n if (!element || element === document.body || element === document.documentElement) {\n return root;\n }\n\n var parent = $(element)[0];\n\n while (parent && !kendo.isScrollable(parent) && parent !== document.body) {\n parent = parent.parentNode;\n }\n\n if (parent === document.body) {\n return root;\n }\n\n return $(parent);\n }\n\n function autoScrollVelocity(mouseX, mouseY, rect) {\n var velocity = { x: 0, y: 0 };\n\n var AUTO_SCROLL_AREA = 50;\n\n if (mouseX - rect.left < AUTO_SCROLL_AREA) {\n velocity.x = -(AUTO_SCROLL_AREA - (mouseX - rect.left));\n } else if (rect.right - mouseX < AUTO_SCROLL_AREA) {\n velocity.x = AUTO_SCROLL_AREA - (rect.right - mouseX);\n }\n\n if (mouseY - rect.top < AUTO_SCROLL_AREA) {\n velocity.y = -(AUTO_SCROLL_AREA - (mouseY - rect.top));\n } else if (rect.bottom - mouseY < AUTO_SCROLL_AREA) {\n velocity.y = AUTO_SCROLL_AREA - (rect.bottom - mouseY);\n }\n\n return velocity;\n }\n\n // export for testing\n kendo.ui.Draggable.utils = {\n autoScrollVelocity: autoScrollVelocity,\n scrollableViewPort: scrollableViewPort,\n findScrollableParent: findScrollableParent\n };\n\n })(window.kendo.jQuery);\n var kendo$N = kendo;\n\n var __meta__$M = {\n id: \"mobile.scroller\",\n name: \"Scroller\",\n category: \"mobile\",\n description: \"The Kendo Mobile Scroller widget enables touch friendly kinetic scrolling for the contents of a given DOM element.\",\n depends: [ \"fx\", \"draganddrop\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n mobile = kendo.mobile,\n fx = kendo.effects,\n ui = mobile.ui,\n extend = $.extend,\n Widget = ui.Widget,\n Class = kendo.Class,\n Movable = kendo.ui.Movable,\n Pane = kendo.ui.Pane,\n PaneDimensions = kendo.ui.PaneDimensions,\n Transition = fx.Transition,\n Animation = fx.Animation,\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 RELEASECLASS = \"km-scroller-release\",\n REFRESHCLASS = \"km-scroller-refresh\",\n PULL = \"pull\",\n CHANGE = \"change\",\n RESIZE = \"resize\",\n SCROLL = \"scroll\",\n MOUSE_WHEEL_ID = 2;\n\n var ZoomSnapBack = Animation.extend({\n init: function(options) {\n var that = this;\n Animation.fn.init.call(that);\n extend(that, options);\n\n that.userEvents.bind(\"gestureend\", that.start.bind(that));\n that.tapCapture.bind(\"press\", that.cancel.bind(that));\n },\n\n enabled: function() {\n return this.movable.scale < this.dimensions.minScale;\n },\n\n done: function() {\n return this.dimensions.minScale - this.movable.scale < 0.01;\n },\n\n tick: function() {\n var movable = this.movable;\n movable.scaleWith(1.1);\n this.dimensions.rescale(movable.scale);\n },\n\n onEnd: function() {\n var movable = this.movable;\n movable.scaleTo(this.dimensions.minScale);\n this.dimensions.rescale(movable.scale);\n }\n });\n\n var DragInertia = Animation.extend({\n init: function(options) {\n var that = this;\n\n Animation.fn.init.call(that);\n\n extend(that, options, {\n transition: new Transition({\n axis: options.axis,\n movable: options.movable,\n onEnd: function() { that._end(); }\n })\n });\n\n that.tapCapture.bind(\"press\", function() { that.cancel(); });\n that.userEvents.bind(\"end\", that.start.bind(that));\n that.userEvents.bind(\"gestureend\", that.start.bind(that));\n that.userEvents.bind(\"tap\", that.onEnd.bind(that));\n },\n\n onCancel: function() {\n this.transition.cancel();\n },\n\n freeze: function(location) {\n var that = this;\n that.cancel();\n that._moveTo(location);\n },\n\n onEnd: function() {\n var that = this;\n if (that.paneAxis.outOfBounds()) {\n that._snapBack();\n } else {\n that._end();\n }\n },\n\n done: function() {\n return abs(this.velocity) < 1;\n },\n\n start: function(e) {\n var that = this,\n velocity;\n\n if (!that.dimension.enabled) { 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\n Animation.fn.start.call(that);\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\n that.tapCapture.captureNext();\n Animation.fn.start.call(that);\n }\n },\n\n tick: function() {\n var 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: function() {\n this.tapCapture.cancelCapture();\n this.end();\n },\n\n _snapBack: function() {\n var that = this,\n dimension = that.dimension,\n snapBack = that.movable[that.axis] > dimension.max ? dimension.max : dimension.min;\n that._moveTo(snapBack);\n },\n\n _moveTo: function(location) {\n this.transition.moveTo({ location: location, duration: SNAPBACK_DURATION, ease: Transition.easeOutExpo });\n }\n });\n\n var AnimatedScroller = Animation.extend({\n init: function(options) {\n var that = this;\n\n kendo.effects.Animation.fn.init.call(this);\n\n extend(that, options, {\n origin: {},\n destination: {},\n offset: {}\n });\n },\n\n tick: function() {\n this._updateCoordinates();\n this.moveTo(this.origin);\n },\n\n done: function() {\n return abs(this.offset.y) < ANIMATED_SCROLLER_PRECISION && abs(this.offset.x) < ANIMATED_SCROLLER_PRECISION;\n },\n\n onEnd: function() {\n this.moveTo(this.destination);\n if (this.callback) {\n this.callback.call();\n }\n },\n\n setCoordinates: function(from, to) {\n this.offset = {};\n this.origin = from;\n this.destination = to;\n },\n\n setCallback: function(callback) {\n if (callback && kendo.isFunction(callback)) {\n this.callback = callback;\n } else {\n callback = undefined$1;\n }\n },\n\n _updateCoordinates: function() {\n this.offset = {\n x: (this.destination.x - this.origin.x) / 4,\n y: (this.destination.y - this.origin.y) / 4\n };\n\n this.origin = {\n y: this.origin.y + this.offset.y,\n x: this.origin.x + this.offset.x\n };\n }\n });\n\n var ScrollBar = Class.extend({\n init: function(options) {\n var that = this,\n horizontal = options.axis === \"x\",\n element = $('
    ');\n\n if (horizontal) {\n element.attr(\"aria-orientation\", \"horizontal\");\n }\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 that.container.append(element);\n if (options.alwaysVisible) {\n that.show();\n }\n },\n\n refresh: function() {\n var 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\n if (sizeRatio >= 1) {\n this.element.css(\"display\", \"none\");\n } else {\n this.element.css(\"display\", \"\");\n }\n\n if (position + size > paneSize) {\n size = paneSize - position;\n } else if (position < 0) {\n size += position;\n position = 0;\n }\n\n if (that.elementSize != size) {\n that.element.css(that.size, size + \"px\");\n that.elementSize = size;\n }\n\n that._ariaValue(position, dimension.size - that.elementSize);\n\n that.movable.moveAxis(axis, position);\n },\n\n show: function() {\n this.element.css({ opacity: SCROLLBAR_OPACITY, visibility: \"visible\" });\n },\n\n hide: function() {\n if (!this.alwaysVisible) {\n this.element.css({ opacity: 0 });\n }\n },\n\n _ariaValue: function(current, total) {\n var element = this.element;\n\n if (current > total) {\n current = total;\n }\n\n element.attr(\"aria-valuemax\", total);\n element.attr(\"aria-valuenow\", current);\n }\n });\n\n var Scroller = Widget.extend({\n init: function(element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n\n element = that.element;\n\n that._native = that.options.useNative && kendo.support.hasNativeScrolling;\n if (that._native) {\n element.addClass(\"km-native-scroller\")\n .prepend('
    ');\n\n extend(that, {\n scrollElement: element,\n fixedContainer: element.children().first()\n });\n\n return;\n }\n\n element\n .css(\"overflow\", \"hidden\")\n .addClass(\"km-scroll-wrapper\")\n .wrapInner('
    ')\n .prepend('
    ');\n\n var inner = element.children().eq(1),\n\n tapCapture = new kendo.TapCapture(element),\n\n movable = new Movable(inner),\n\n dimensions = new PaneDimensions({\n element: inner,\n container: element,\n forcedEnabled: that.options.zoom\n }),\n\n avoidScrolling = this.options.avoidScrolling,\n\n userEvents = new kendo.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: function(e) {\n dimensions.refresh();\n\n var velocityX = abs(e.x.velocity),\n velocityY = abs(e.y.velocity),\n horizontalSwipe = velocityX * 2 >= velocityY,\n originatedFromFixedContainer = $.contains(that.fixedContainer[0], e.event.target),\n verticalSwipe = velocityY * 2 >= velocityX;\n\n\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: function(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\n that.trigger(SCROLL, {\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n });\n\n if (that.options.mousewheelScrolling) {\n element.on(\"DOMMouseScroll mousewheel\", this._wheelScroll.bind(this));\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().first()\n });\n\n that._initAxis(\"x\");\n that._initAxis(\"y\");\n\n // build closure\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 _wheelScroll: function(e) {\n if (e.ctrlKey) {\n return;\n }\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\n var delta = kendo.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: function() {\n this.dimensions.y.makeVirtual();\n },\n\n virtualSize: function(min, max) {\n this.dimensions.y.virtualSize(min, max);\n },\n\n height: function() {\n return this.dimensions.y.size;\n },\n\n scrollHeight: function() {\n return this.scrollElement[0].scrollHeight;\n },\n\n scrollWidth: function() {\n return this.scrollElement[0].scrollWidth;\n },\n\n options: {\n name: \"Scroller\",\n zoom: false,\n pullOffset: 140,\n visibleScrollHints: false,\n elastic: true,\n useNative: false,\n mousewheelScrolling: true,\n avoidScrolling: function() { return false; },\n pullToRefresh: false,\n messages: {\n pullTemplate: \"Pull to refresh\",\n releaseTemplate: \"Release to refresh\",\n refreshTemplate: \"Refreshing\"\n }\n },\n\n events: [\n PULL,\n SCROLL,\n RESIZE\n ],\n\n _resize: function() {\n if (!this._native) {\n this.contentResized();\n }\n },\n\n setOptions: function(options) {\n var that = this;\n Widget.fn.setOptions.call(that, options);\n if (options.pullToRefresh) {\n that._initPullToRefresh();\n }\n },\n\n reset: function() {\n if (this._native) {\n this.scrollElement.scrollTop(0);\n } else {\n this.movable.moveTo({ x: 0, y: 0 });\n this._scale(1);\n }\n },\n\n contentResized: function() {\n this.dimensions.refresh();\n if (this.pane.x.outOfBounds()) {\n this.movable.moveAxis(\"x\", this.dimensions.x.min);\n }\n\n if (this.pane.y.outOfBounds()) {\n this.movable.moveAxis(\"y\", this.dimensions.y.min);\n }\n },\n\n zoomOut: function() {\n var dimensions = this.dimensions;\n dimensions.refresh();\n this._scale(dimensions.fitScale);\n this.movable.moveTo(dimensions.centerCoordinates());\n },\n\n enable: function() {\n this.enabled = true;\n },\n\n disable: function() {\n this.enabled = false;\n },\n\n scrollTo: function(x, y) {\n if (this._native) {\n kendo.scrollLeft(this.scrollElement, abs(x));\n this.scrollElement.scrollTop(abs(y));\n } else {\n this.dimensions.refresh();\n this.movable.moveTo({ x: x, y: y });\n }\n },\n\n animatedScrollTo: function(x, y, callback) {\n var from,\n to;\n\n if (this._native) {\n this.scrollTo(x, y);\n } else {\n from = { x: this.movable.x, y: this.movable.y };\n to = { x: x, y: y };\n\n this.animatedScroller.setCoordinates(from, to);\n this.animatedScroller.setCallback(callback);\n this.animatedScroller.start();\n }\n },\n\n pullHandled: function() {\n var that = this;\n that.refreshHint.removeClass(REFRESHCLASS);\n that.hintContainer.html(that.pullTemplate({}));\n that.yinertia.onEnd();\n that.xinertia.onEnd();\n that.userEvents.cancel();\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n if (this.userEvents) {\n this.userEvents.destroy();\n }\n },\n\n _scale: function(scale) {\n this.dimensions.rescale(scale);\n this.movable.scaleTo(scale);\n },\n\n _initPullToRefresh: function() {\n var that = this;\n\n that.dimensions.y.forceEnabled();\n that.pullTemplate = kendo.template(that.options.messages.pullTemplate);\n that.releaseTemplate = kendo.template(that.options.messages.releaseTemplate);\n that.refreshTemplate = kendo.template(that.options.messages.refreshTemplate);\n\n that.scrollElement.prepend('' + that.pullTemplate({}) + '');\n that.refreshHint = that.scrollElement.children().first();\n that.hintContainer = that.refreshHint.children(\".km-template\");\n\n that.pane.y.bind(\"change\", that._paneChange.bind(that));\n that.userEvents.bind(\"end\", that._dragEnd.bind(that));\n },\n\n _dragEnd: function() {\n var that = this;\n\n if (!that.pulled) {\n return;\n }\n\n that.pulled = false;\n that.refreshHint.removeClass(RELEASECLASS).addClass(REFRESHCLASS);\n that.hintContainer.html(that.refreshTemplate({}));\n that.yinertia.freeze(that.options.pullOffset / 2);\n that.trigger(\"pull\");\n },\n\n _paneChange: function() {\n var that = this;\n\n if (that.movable.y / OUT_OF_BOUNDS_FRICTION > that.options.pullOffset) {\n if (!that.pulled) {\n that.pulled = true;\n that.refreshHint.removeClass(REFRESHCLASS).addClass(RELEASECLASS);\n that.hintContainer.html(that.releaseTemplate({}));\n }\n } else if (that.pulled) {\n that.pulled = false;\n that.refreshHint.removeClass(RELEASECLASS);\n that.hintContainer.html(that.pullTemplate({}));\n }\n },\n\n _initAxis: function(axis) {\n var that = this,\n elementId = that.element.attr(\"id\"),\n movable = that.movable,\n dimension = that.dimensions[axis],\n tapCapture = that.tapCapture,\n paneAxis = that.pane[axis],\n scrollBar;\n\n if (!elementId) {\n elementId = kendo.guid();\n that.element.attr(\"id\", elementId);\n }\n\n scrollBar = new ScrollBar({\n axis: axis,\n movable: movable,\n dimension: dimension,\n container: that.element,\n alwaysVisible: that.options.visibleScrollHints,\n controlsId: elementId\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: function() {\n scrollBar.hide();\n that.trigger(\"scrollEnd\", {\n axis: axis,\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n }\n });\n }\n });\n\n ui.plugin(Scroller);\n })(window.kendo.jQuery);\n var kendo$M = kendo;\n\n var __meta__$L = {\n id: \"popup\",\n name: \"Pop-up\",\n category: \"framework\",\n depends: [ \"core\" ],\n advanced: true\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n ui = kendo.ui,\n Widget = ui.Widget,\n Class = kendo.Class,\n support = kendo.support,\n getOffset = kendo.getOffset,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n OPEN = \"open\",\n CLOSE = \"close\",\n DEACTIVATE = \"deactivate\",\n ACTIVATE = \"activate\",\n CENTER = \"center\",\n LEFT = \"left\",\n RIGHT = \"right\",\n TOP = \"top\",\n BOTTOM = \"bottom\",\n ABSOLUTE = \"absolute\",\n HIDDEN = \"hidden\",\n BODY = \"body\",\n LOCATION = \"location\",\n POSITION = \"position\",\n VISIBLE = \"visible\",\n EFFECTS = \"effects\",\n ACTIVE = \"k-active\",\n ACTIVECHILDREN = \".k-picker-wrap, .k-dropdown-wrap, .k-link\",\n MOUSEDOWN = \"down\",\n DOCUMENT_ELEMENT = $(document.documentElement),\n WINDOW = $(window),\n SCROLL = \"scroll\",\n cssPrefix = support.transitions.css,\n TRANSFORM = cssPrefix + \"transform\",\n extend = $.extend,\n NS = \".kendoPopup\",\n styles = [\"font-size\",\n \"font-family\",\n \"font-stretch\",\n \"font-style\",\n \"font-weight\",\n \"line-height\"];\n\n function contains(container, target) {\n if (!container || !target) {\n return false;\n }\n return container === target || $.contains(container, target);\n }\n\n var Popup = Widget.extend({\n init: function(element, options) {\n var that = this, parentPopup;\n\n options = options || {};\n\n if (options.isRtl) {\n options.origin = options.origin || BOTTOM + \" \" + RIGHT;\n options.position = options.position || TOP + \" \" + RIGHT;\n }\n\n Widget.fn.init.call(that, element, options);\n\n element = that.element;\n options = that.options;\n\n that.collisions = options.collision ? options.collision.split(\" \") : [];\n that.downEvent = kendo.applyEventMap(MOUSEDOWN, kendo.guid());\n\n if (that.collisions.length === 1) {\n that.collisions.push(that.collisions[0]);\n }\n\n parentPopup = $(that.options.anchor).closest(\".k-popup,.k-group\").filter(\":not([class^=km-])\"); // When popup is in another popup, make it relative.\n\n options.appendTo = $($(options.appendTo)[0] || parentPopup[0] || document.body);\n\n that.element.hide()\n .addClass(\"k-popup\")\n .toggleClass(\"k-rtl\", !!options.isRtl)\n .appendTo(options.appendTo)\n .attr(\"aria-hidden\", true)\n .on(\"mouseenter\" + NS, function() {\n that._hovered = true;\n })\n .on(\"wheel\" + NS, function(e) {\n var list = $(e.target).find(\".k-list\");\n var scrollArea = list.parent();\n if (list.length && list.is(\":visible\") && ((scrollArea.scrollTop() === 0 && e.originalEvent.deltaY < 0) ||\n (scrollArea.scrollTop() === scrollArea.prop('scrollHeight') - scrollArea.prop('offsetHeight') && e.originalEvent.deltaY > 0))) {\n e.preventDefault();\n }\n })\n .on(\"mouseleave\" + NS, function() {\n that._hovered = false;\n });\n\n that.wrapper = $();\n\n if (options.animation === false) {\n options.animation = { open: { effects: {} }, close: { hide: true, effects: {} } };\n }\n\n extend(options.animation.open, {\n complete: function() {\n that.wrapper.addClass(\"k-animation-container-shown\"); // Forcing refresh causes flickering in mobile.\n that.wrapper.css(\"overflow\",\"\");\n that._activated = true;\n that._trigger(ACTIVATE);\n }\n });\n\n extend(options.animation.close, {\n complete: function() {\n that._animationClose();\n }\n });\n\n that._mousedownProxy = function(e) {\n that._mousedown(e);\n };\n\n if (support.mobileOS.android) {\n that._resizeProxy = function(e) {\n setTimeout(function() {\n that._resize(e);\n }, 600); //Logic from kendo.onResize\n };\n } else {\n that._resizeProxy = function(e) {\n that._resize(e);\n };\n }\n\n if (options.toggleTarget) {\n $(options.toggleTarget).on(options.toggleEvent + NS, that.toggle.bind(that));\n }\n },\n\n events: [\n OPEN,\n ACTIVATE,\n CLOSE,\n DEACTIVATE\n ],\n\n options: {\n name: \"Popup\",\n toggleEvent: \"click\",\n origin: BOTTOM + \" \" + LEFT,\n position: TOP + \" \" + LEFT,\n anchor: BODY,\n appendTo: null,\n collision: \"flip fit\",\n viewport: window,\n copyAnchorStyles: true,\n autosize: false,\n autowidth: false,\n modal: false,\n adjustSize: {\n width: 0,\n height: 0\n },\n animation: {\n open: {\n effects: \"slideIn:down\",\n transition: true,\n duration: 200\n },\n close: { // if close animation effects are defined, they will be used instead of open.reverse\n duration: 100,\n hide: true\n }\n },\n omitOriginOffsets: false\n },\n\n _animationClose: function() {\n var that = this;\n var location = that.wrapper.data(LOCATION);\n\n that.wrapper.hide();\n\n if (location) {\n that.wrapper.css(location);\n }\n\n if (that.options.anchor != BODY) {\n that._hideActiveClass();\n }\n\n that._closing = false;\n that._trigger(DEACTIVATE);\n },\n\n destroy: function() {\n var that = this,\n options = that.options,\n element = that.element.off(NS),\n parent;\n\n Widget.fn.destroy.call(that);\n\n if (options.toggleTarget) {\n $(options.toggleTarget).off(NS);\n }\n\n if (!options.modal) {\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy);\n that._toggleResize(false);\n }\n\n kendo.destroy(that.element.children());\n element.removeData();\n\n if (options.appendTo[0] === document.body) {\n parent = element.closest(\".k-animation-container\");\n\n if (parent[0]) {\n parent.remove();\n } else {\n element.remove();\n }\n }\n },\n\n open: function(x, y) {\n var that = this,\n fixed = { isFixed: !isNaN(parseInt(y,10)), x: x, y: y },\n shouldCorrectWidth = that._shouldCorrectWidth,\n element = that.element,\n options = that.options,\n animation, wrapper,\n anchor = $(options.anchor),\n mobile = element[0] && element.hasClass(\"km-widget\"),\n listbox = element.find(\"[role='listbox']\"),\n parent;\n\n if (!that.visible()) {\n if (options.copyAnchorStyles) {\n if (mobile && styles[0] == \"font-size\") {\n styles.shift();\n }\n element.css(kendo.getComputedStyles(anchor[0], styles));\n }\n\n if (that.element.parent().data(\"animating\") || that._trigger(OPEN)) {\n return;\n }\n\n that._activated = false;\n\n if (!options.modal) {\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy)\n .on(that.downEvent, that._mousedownProxy);\n\n // this binding hangs iOS in editor\n // all elements in IE7/8 fire resize event, causing mayhem\n that._toggleResize(false);\n that._toggleResize(true);\n }\n\n that.wrapper = wrapper = kendo.wrap(element, options.autosize, options._resizeOnWrap, shouldCorrectWidth, options.autowidth)\n .css({\n overflow: HIDDEN,\n display: \"block\",\n position: ABSOLUTE\n })\n .attr(\"aria-hidden\", false);\n\n parent = element.parent();\n\n if (listbox.attr(\"aria-label\")) {\n wrapper.attr(\"aria-label\", listbox.attr(\"aria-label\"));\n } else if (listbox.attr(\"aria-labelledby\")) {\n wrapper.attr(\"aria-labelledby\", listbox.attr(\"aria-labelledby\"));\n }\n\n if (support.mobileOS.android) {\n parent.css(TRANSFORM, \"translatez(0)\"); // Android is VERY slow otherwise. Should be tested in other droids as well since it may cause blur.\n }\n\n wrapper.css(POSITION);\n\n if ($(options.appendTo)[0] == document.body) {\n wrapper.css(TOP, \"-10000px\");\n }\n\n that.flipped = that._position(fixed);\n animation = that._openAnimation();\n\n if (options.anchor != BODY && !that.element.hasClass(\"k-tooltip\")) {\n that._addActiveClass();\n }\n\n parent.hide();\n element.show();\n that.wrapper.show();\n\n parent.data(EFFECTS, animation.effects)\n .kendoStop(true)\n .kendoAnimate(animation);\n\n\n element.attr(\"aria-hidden\", false);\n }\n },\n\n _location: function(isFixed) {\n var that = this,\n element = that.element,\n options = that.options,\n wrapper,\n anchor = $(options.anchor),\n mobile = element[0] && element.hasClass(\"km-widget\");\n\n if (options.copyAnchorStyles) {\n if (mobile && styles[0] == \"font-size\") {\n styles.shift();\n }\n element.css(kendo.getComputedStyles(anchor[0], styles));\n }\n\n that.wrapper = wrapper = kendo.wrap(element, options.autosize)\n .css({\n overflow: HIDDEN,\n display: \"block\",\n position: ABSOLUTE\n });\n\n if (support.mobileOS.android) {\n wrapper.css(TRANSFORM, \"translatez(0)\"); // Android is VERY slow otherwise. Should be tested in other droids as well since it may cause blur.\n }\n\n wrapper.css(POSITION);\n\n if ($(options.appendTo)[0] == document.body) {\n wrapper.css(TOP, \"-10000px\");\n }\n\n that._position(isFixed || {});\n\n var offset = wrapper.offset();\n return {\n width: kendo._outerWidth(wrapper),\n height: kendo._outerHeight(wrapper),\n left: offset.left,\n top: offset.top\n };\n },\n\n _openAnimation: function() {\n var animation = extend(true, {}, this.options.animation.open);\n animation.effects = kendo.parseEffects(animation.effects, this.flipped);\n\n return animation;\n },\n\n _hideActiveClass: function() {\n var anchor = $(this.options.anchor);\n anchor\n .children(ACTIVECHILDREN)\n .removeClass(ACTIVE);\n\n },\n\n _addActiveClass: function() {\n $(this.options.anchor)\n .children(ACTIVECHILDREN)\n .addClass(ACTIVE);\n },\n\n position: function() {\n if (this.visible()) {\n this.flipped = this._position();\n }\n },\n\n toggle: function() {\n var that = this;\n\n that[that.visible() ? CLOSE : OPEN]();\n },\n\n visible: function() {\n return this.wrapper.is(\":\" + VISIBLE) && this.element.is(\":\" + VISIBLE);\n },\n\n close: function(skipEffects) {\n var that = this,\n parent = that.element.parent(),\n options = that.options, wrap,\n animation, openEffects, closeEffects;\n\n if (that.visible()) {\n wrap = (that.wrapper[0] ? that.wrapper : kendo.wrap(that.element).hide());\n\n that._toggleResize(false);\n\n if (that._closing || that._trigger(CLOSE)) {\n that._toggleResize(true);\n return;\n }\n\n that.wrapper.removeClass(\"k-animation-container-shown\");\n\n // Close all inclusive popups.\n that.element.find(\".k-popup\").each(function() {\n var that = $(this),\n popup = that.data(\"kendoPopup\");\n\n if (popup) {\n popup.close(skipEffects);\n }\n });\n\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy);\n\n if (skipEffects) {\n animation = { hide: true, effects: {} };\n } else {\n animation = extend(true, {}, options.animation.close);\n openEffects = parent.data(EFFECTS);\n closeEffects = animation.effects;\n\n if (!closeEffects && !kendo.size(closeEffects) && openEffects && kendo.size(openEffects)) {\n animation.effects = openEffects;\n animation.reverse = true;\n }\n\n that._closing = true;\n }\n\n parent.kendoStop(true);\n that.element.attr(\"aria-hidden\", true);\n wrap\n .css({ overflow: HIDDEN }) // stop callback will remove hidden overflow\n .attr(\"aria-hidden\", true);\n parent.kendoAnimate(animation);\n\n if (skipEffects) {\n that._animationClose();\n }\n }\n },\n\n _trigger: function(ev) {\n return this.trigger(ev, { type: ev });\n },\n\n _resize: function(e) {\n var that = this;\n\n if (support.resize.indexOf(e.type) !== -1) {\n clearTimeout(that._resizeTimeout);\n that._resizeTimeout = setTimeout(function() {\n that._position();\n that._resizeTimeout = null;\n }, 50);\n } else {\n if (!that._hovered || (that._activated && that.element.find(\".k-list\").length > 0)) {\n that.close();\n }\n }\n },\n\n _toggleResize: function(toggle) {\n var method = toggle ? \"on\" : \"off\";\n var eventNames = support.resize;\n\n if (!(support.mobileOS.ios || support.mobileOS.android || support.browser.safari)) {\n eventNames += \" \" + SCROLL;\n }\n\n if (toggle && !this.scrollableParents) {\n this.scrollableParents = this._scrollableParents();\n }\n\n if (this.scrollableParents && this.scrollableParents.length) {\n this.scrollableParents[method](SCROLL, this._resizeProxy);\n }\n\n WINDOW[method](eventNames, this._resizeProxy);\n },\n\n _mousedown: function(e) {\n var that = this,\n container = that.element[0],\n options = that.options,\n anchor = $(options.anchor)[0],\n toggleTarget = options.toggleTarget,\n target = kendo.eventTarget(e),\n popup = $(target).closest(\".k-popup\"),\n mobile = popup.parent().parent(\".km-shim\").length;\n\n popup = popup[0];\n if (!mobile && popup && popup !== that.element[0]) {\n return;\n }\n\n // This MAY result in popup not closing in certain cases.\n if ($(e.target).closest(\"a\").data(\"rel\") === \"popover\") {\n return;\n }\n\n if (!contains(container, target) && !contains(anchor, target) && !(toggleTarget && contains($(toggleTarget)[0], target))) {\n that.close();\n }\n },\n\n _fit: function(position, size, viewPortSize) {\n var 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\n _flip: function(offset, size, anchorSize, viewPortSize, origin, position, boxSize) {\n var output = 0;\n boxSize = boxSize || size;\n\n if (position !== origin && position !== CENTER && origin !== CENTER) {\n if (offset + boxSize > viewPortSize) {\n output += -(anchorSize + size);\n }\n\n if (offset + output < 0) {\n output += anchorSize + size;\n }\n }\n return output;\n },\n\n _scrollableParents: function() {\n return $(this.options.anchor)\n .parentsUntil(\"body\")\n .filter(function(index, element) {\n return kendo.isScrollable(element);\n });\n },\n\n _position: function(fixed) {\n var that = this,\n //element = that.element.css(POSITION, \"\"), /* fixes telerik/kendo-ui-core#790, comes from telerik/kendo#615 */\n element = that.element,\n wrapper = that.wrapper,\n options = that.options,\n viewport = $(options.viewport),\n zoomLevel = support.zoomLevel(),\n isWindow = !!((viewport[0] == window) && window.innerWidth && (zoomLevel <= 1.02)),\n anchor = $(options.anchor),\n origins = options.origin.toLowerCase().split(\" \"),\n positions = options.position.toLowerCase().split(\" \"),\n collisions = that.collisions,\n siblingContainer, parents,\n parentZIndex, zIndex = 10002,\n idx = 0,\n docEl = document.documentElement,\n length, viewportOffset, viewportWidth, viewportHeight;\n\n if (options.viewport === window) {\n viewportOffset = {\n top: (window.pageYOffset || document.documentElement.scrollTop || 0),\n left: (window.pageXOffset || document.documentElement.scrollLeft || 0)\n };\n } else {\n viewportOffset = viewport.offset();\n }\n\n if (isWindow) {\n viewportWidth = window.innerWidth;\n viewportHeight = window.innerHeight;\n } else {\n viewportWidth = viewport.width();\n viewportHeight = viewport.height();\n }\n\n if (isWindow && docEl.scrollHeight - docEl.clientHeight > 0) {\n var sign = options.isRtl ? -1 : 1;\n\n viewportWidth -= sign * kendo.support.scrollbar();\n }\n\n siblingContainer = anchor.parents().filter(wrapper.siblings());\n\n if (siblingContainer[0]) {\n parentZIndex = Math.max(Number(siblingContainer.css(\"zIndex\")), 0);\n\n // set z-index to be more than that of the container/sibling\n // compensate with more units for window z-stack\n if (parentZIndex) {\n zIndex = parentZIndex + 10;\n } else {\n parents = anchor.parentsUntil(siblingContainer);\n for (length = parents.length; idx < length; idx++) {\n parentZIndex = Number($(parents[idx]).css(\"zIndex\"));\n if (parentZIndex && zIndex < parentZIndex) {\n zIndex = parentZIndex + 10;\n }\n }\n }\n }\n\n wrapper.css(\"zIndex\", zIndex);\n\n if (fixed && fixed.isFixed) {\n wrapper.css({ left: fixed.x, top: fixed.y });\n } else {\n wrapper.css(that._align(origins, positions));\n }\n\n var pos = getOffset(wrapper, POSITION, anchor[0] === wrapper.offsetParent()[0]),\n offset = getOffset(wrapper),\n anchorParent = anchor.offsetParent().parent(\".k-animation-container,.k-popup,.k-group\"); // If the parent is positioned, get the current positions\n\n if (anchorParent.length) {\n pos = getOffset(wrapper, POSITION, true);\n offset = getOffset(wrapper);\n }\n\n offset.top -= viewportOffset.top;\n offset.left -= viewportOffset.left;\n\n if (!that.wrapper.data(LOCATION)) { // Needed to reset the popup location after every closure - fixes the resize bugs.\n wrapper.data(LOCATION, extend({}, pos));\n }\n\n var offsets = extend({}, offset),\n location = extend({}, pos),\n adjustSize = options.adjustSize;\n\n if (collisions[0] === \"fit\") {\n location.top += that._fit(offsets.top, outerHeight(wrapper) + adjustSize.height, viewportHeight / zoomLevel);\n }\n\n if (collisions[1] === \"fit\") {\n location.left += that._fit(offsets.left, outerWidth(wrapper) + adjustSize.width, viewportWidth / zoomLevel);\n }\n\n var flipPos = extend({}, location);\n var elementHeight = outerHeight(element);\n var wrapperHeight = outerHeight(wrapper);\n\n if (!wrapper.height() && elementHeight) {\n wrapperHeight = wrapperHeight + elementHeight;\n }\n\n if (collisions[0] === \"flip\") {\n location.top += that._flip(offsets.top, elementHeight, outerHeight(anchor), viewportHeight / zoomLevel, origins[0], positions[0], wrapperHeight);\n }\n\n if (collisions[1] === \"flip\") {\n location.left += that._flip(offsets.left, outerWidth(element), outerWidth(anchor), viewportWidth / zoomLevel, origins[1], positions[1], outerWidth(wrapper));\n }\n\n wrapper.css(location);\n\n return (location.left != flipPos.left || location.top != flipPos.top);\n },\n\n _align: function(origin, position) {\n var that = this,\n element = that.wrapper,\n anchor = $(that.options.anchor),\n verticalOrigin = origin[0],\n horizontalOrigin = origin[1],\n verticalPosition = position[0],\n horizontalPosition = position[1],\n anchorOffset = getOffset(anchor),\n appendTo = $(that.options.appendTo),\n appendToOffset,\n width = outerWidth(element),\n height = outerHeight(element) || outerHeight(element.find(\".k-child-animation-container\").children().first()),\n anchorWidth = outerWidth(anchor),\n anchorHeight = outerHeight(anchor),\n top = that.options.omitOriginOffsets ? 0 : anchorOffset.top,\n left = that.options.omitOriginOffsets ? 0 : anchorOffset.left,\n round = Math.round;\n\n if (appendTo[0] != document.body) {\n appendToOffset = getOffset(appendTo);\n top -= appendToOffset.top;\n left -= appendToOffset.left;\n }\n\n\n if (verticalOrigin === BOTTOM) {\n top += anchorHeight;\n }\n\n if (verticalOrigin === CENTER) {\n top += round(anchorHeight / 2);\n }\n\n if (verticalPosition === BOTTOM) {\n top -= height;\n }\n\n if (verticalPosition === CENTER) {\n top -= round(height / 2);\n }\n\n if (horizontalOrigin === RIGHT) {\n left += anchorWidth;\n }\n\n if (horizontalOrigin === CENTER) {\n left += round(anchorWidth / 2);\n }\n\n if (horizontalPosition === RIGHT) {\n left -= width;\n }\n\n if (horizontalPosition === CENTER) {\n left -= round(width / 2);\n }\n\n return {\n top: top,\n left: left\n };\n }\n });\n\n ui.plugin(Popup);\n\n var stableSort = kendo.support.stableSort;\n var tabKeyTrapNS = \"kendoTabKeyTrap\";\n var focusableNodesSelector = \"a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex], *[contenteditable]\";\n var TabKeyTrap = Class.extend({\n init: function(element, options) {\n this.element = $(element);\n this.element.autoApplyNS(tabKeyTrapNS);\n },\n\n trap: function() {\n this.element.on(\"keydown\", this._keepInTrap.bind(this));\n },\n\n removeTrap: function() {\n this.element.kendoDestroy(tabKeyTrapNS);\n },\n\n destroy: function() {\n this.element.kendoDestroy(tabKeyTrapNS);\n this.element = undefined$1;\n },\n\n shouldTrap: function() {\n return true;\n },\n\n _keepInTrap: function(e) {\n if (e.which !== 9 || !this.shouldTrap() || e.isDefaultPrevented()) {\n return;\n }\n\n var elements = this._focusableElements();\n var sortedElements = this._sortFocusableElements(elements);\n var next = this._nextFocusable(e, sortedElements);\n\n if (next) {\n this._focus(next);\n }\n\n e.preventDefault();\n },\n _focusableElements: function() {\n var elements = this.element.find(focusableNodesSelector).filter(function(i, item) {\n return item.tabIndex >= 0 && $(item).is(':visible') && !$(item).is('[disabled]');\n });\n\n if (this.element.is(\"[tabindex]\")) {\n elements.push(this.element[0]);\n }\n\n return elements;\n },\n _sortFocusableElements: function(elements) {\n var sortedElements;\n\n if (stableSort) {\n sortedElements = elements.sort(function(prev, next) {\n return prev.tabIndex - next.tabIndex;\n });\n } else {\n var attrName = \"__k_index\";\n elements.each(function(i, item) {\n item.setAttribute(attrName, i);\n });\n\n sortedElements = elements.sort(function(prev, next) {\n return prev.tabIndex === next.tabIndex ?\n parseInt(prev.getAttribute(attrName), 10) - parseInt(next.getAttribute(attrName), 10) :\n prev.tabIndex - next.tabIndex;\n });\n\n elements.removeAttr(attrName);\n }\n\n return sortedElements;\n },\n _nextFocusable: function(e, elements) {\n var count = elements.length;\n var current = elements.index(e.target);\n\n return elements.get((current + (e.shiftKey ? -1 : 1)) % count);\n },\n _focus: function(element) {\n if (element.nodeName == \"IFRAME\") {\n element.contentWindow.document.body.focus();\n return;\n }\n\n element.focus();\n\n if (element.nodeName == \"INPUT\" && element.setSelectionRange && this._haveSelectionRange(element)) {\n element.setSelectionRange(0, element.value.length);\n }\n },\n _haveSelectionRange: function(element) {\n var elementType = element.type.toLowerCase();\n\n return elementType === \"text\" || elementType === \"search\" ||\n elementType === \"url\" || elementType === \"tel\" ||\n elementType === \"password\";\n }\n });\n ui.Popup.TabKeyTrap = TabKeyTrap;\n })(window.kendo.jQuery);\n var kendo$L = kendo;\n\n var __meta__$K = {\n id: \"html.base\",\n name: \"Html.Base\",\n category: \"web\",\n description: \"\",\n depends: [\"core\"],\n features: []\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Class = kendo.Class;\n\n kendo.html = kendo.html || {};\n\n var HTMLBase = Class.extend({\n init: function(element, options) {\n var that = this;\n that.element = $(element);\n options = options || {};\n delete options.name;\n that._initOptions(options);\n },\n options: {\n stylingOptions: []\n },\n _addClasses: function() {\n var that = this,\n options = that.options,\n stylingOptions = options.stylingOptions,\n previouslyAddedClasses = that.wrapper.data(\"added-classes\");\n\n stylingOptions = stylingOptions.map(function(option) {\n var validFill;\n\n if (option === \"themeColor\") {\n validFill = kendo.cssProperties.getValidClass({\n widget: options.name,\n propName: \"fillMode\",\n value: options.fillMode\n });\n\n if (!validFill || validFill.length === 0) {\n return \"\";\n }\n }\n\n return kendo.cssProperties.getValidClass({\n widget: options.name,\n propName: option,\n value: options[option],\n fill: options.fillMode\n });\n });\n\n if (previouslyAddedClasses) {\n that.wrapper.removeClass(previouslyAddedClasses.join(\" \"));\n }\n\n that.wrapper.data(\"added-classes\", stylingOptions);\n that.wrapper.addClass(stylingOptions.join(\" \"));\n },\n html: function() {\n var that = this;\n\n return that.wrapper[0].outerHTML;\n }\n });\n\n $.extend(kendo.html, {\n HTMLBase: HTMLBase\n });\n\n })(window.kendo.jQuery);\n var kendo$K = kendo;\n\n var __meta__$J = {\n id: \"html.icon\",\n name: \"Html.Icon\",\n category: \"web\",\n description: \"HTML font icon rendering utility for Kendo UI for jQuery.\",\n depends: [\"html.base\"]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n extend = $.extend,\n HTMLBase = kendo.html.HTMLBase;\n\n var KFONTICON = 'k-icon k-font-icon';\n var KI_PREFFIX = 'k-i-';\n var KSVGICON = 'k-icon k-svg-icon';\n var KSVG_PREFFIX = 'k-svg-i-';\n\n var FLIP_PREFIX = 'k-flip-';\n var FLIP_HORIZONTAL = `${FLIP_PREFIX}h`;\n var FLIP_VERTICAL = `${FLIP_PREFIX}v`;\n\n var THEME_COLOR_PREFIX = 'k-color-';\n\n var ICON_TYPES = {\n 'svg': (element, options) => new HTMLSvgIcon(element, options),\n 'font': (element, options) => new HTMLFontIcon(element, options)\n };\n\n var FLIP_CLASSES = {\n default: '',\n horizontal: FLIP_HORIZONTAL,\n vertical: FLIP_VERTICAL,\n both: `${FLIP_HORIZONTAL} ${FLIP_VERTICAL}`\n };\n\n var renderIcon = function(element, options) {\n if (!element || $.isPlainObject(element) || kendo.isString(element)) {\n options = element;\n element = $(\"\");\n }\n\n if (kendo.isString(options)) {\n options = {\n icon: options\n };\n }\n\n if (!kendo.isPresent(options.type)) {\n options.type = kendo.defaults.iconType ? kendo.defaults.iconType : 'svg';\n }\n\n if (kendo.isFunction(options.type)) {\n return options.type(element, options);\n }\n\n if (!kendo.isFunction(ICON_TYPES[options.type])) {\n return null;\n }\n\n return (ICON_TYPES[options.type](element, options)).html();\n };\n\n var HTMLBaseIcon = HTMLBase.extend({\n init: function(element, options) {\n var that = this;\n HTMLBase.fn.init.call(that, element, options);\n that._wrapper();\n },\n options: {\n name: 'HTMLIcon',\n size: 'none',\n themeColor: 'none',\n flip: 'default',\n iconClass: '',\n stylingOptions: [ 'size', 'themeColor', 'fill' ]\n },\n _wrapper: function() {\n var that = this;\n\n that._addClasses();\n },\n _addClasses: function() {\n var that = this,\n options = that.options,\n stylingOptions = options.stylingOptions,\n previouslyAddedClasses = that.wrapper.data(\"added-classes\");\n\n stylingOptions = stylingOptions.map(function(option) {\n if (option === 'themeColor') {\n return kendo.cssProperties.getValidClass({\n widget: options.name,\n propName: option,\n value: options[option],\n prefix: THEME_COLOR_PREFIX\n });\n }\n\n if (option === 'fill') {\n return FLIP_CLASSES[options.flip];\n }\n\n return kendo.cssProperties.getValidClass({\n widget: options.name,\n propName: option,\n value: options[option],\n fill: options.fillMode\n });\n });\n\n if (previouslyAddedClasses) {\n that.wrapper.removeClass(previouslyAddedClasses.filter(x => x !== that._className).join(\" \"));\n }\n\n that.wrapper.data(\"added-classes\", stylingOptions.concat([that._className]));\n that.wrapper.addClass(stylingOptions.join(\" \"));\n }\n });\n\n var HTMLFontIcon = HTMLBaseIcon.extend({\n init: function(element, options) {\n HTMLBaseIcon.fn.init.call(this, element, options);\n },\n options: extend({}, HTMLBaseIcon.fn.options, {\n name: 'HTMLFontIcon',\n icon: null\n }),\n _wrapper: function() {\n var that = this,\n // Find if there is an existing k-i- class appended to the element.\n currentIconClass = that.element[0].className.split(\" \").find(x => x.includes(KI_PREFFIX)),\n className = that.options.icon ? `${that.options.icon.startsWith(KI_PREFFIX) ? \"\" : KI_PREFFIX}${that.options.icon}` : \"\";\n\n that._className = className;\n that.wrapper = that.element\n .addClass(KFONTICON)\n .removeClass(currentIconClass) // Remove any existing icons.\n .addClass(className)\n .addClass(that.options.iconClass || '');\n\n HTMLBaseIcon.fn._wrapper.call(this);\n }\n });\n\n var HTMLSvgIcon = HTMLBaseIcon.extend({\n init: function(element, options) {\n // Ensure that the inner contents of the wrapping span element are always removed for re-rendering purposes.\n element.empty();\n HTMLBaseIcon.fn.init.call(this, element, options);\n },\n options: extend({}, HTMLBaseIcon.fn.options, {\n name: 'HTMLSVGIcon',\n icon: null\n }),\n _wrapper: function() {\n var that = this,\n icon = that.options.icon,\n iconClass = that.options.iconClass,\n // Find if there is an existing k-svg-i- class appended to the element.\n currentIconClass = that.element[0].className.split(\" \").find(x => x.includes(KSVG_PREFFIX)),\n svgElm = $(''),\n className;\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 (kendo.isString(icon)) {\n // remove k-i- and convert kebab-case-icon to camelCaseIcon\n icon = icon.replace('k-i-', '').replace(/-./g, x=>x[1].toUpperCase());\n icon = kendo.ui.svgIcons[icon] || kendo.ui.svgIcons[`${icon}Icon`];\n }\n\n className = icon && icon.name ? `${KSVG_PREFFIX}${icon.name}` : '';\n that._className = className;\n\n that.wrapper = that.element\n .addClass(KSVGICON)\n .removeClass(currentIconClass) // Remove any existing icons.\n .addClass(className)\n .addClass(iconClass || '')\n .attr(\"aria-hidden\", true);\n\n if ($.isPlainObject(icon)) {\n svgElm.attr('viewBox', icon.viewBox || '')\n .attr({\n 'viewBox': icon.viewBox || '',\n 'focusable': 'false',\n 'xmlns': 'http://www.w3.org/2000/svg'\n })\n .html(icon.content || '');\n\n that.wrapper.append(svgElm[0].outerHTML);\n }\n\n HTMLBaseIcon.fn._wrapper.call(this);\n }\n });\n\n $.extend(kendo.html, {\n renderIcon: renderIcon,\n HTMLFontIcon: HTMLFontIcon,\n HTMLSvgIcon: HTMLSvgIcon,\n getIconRenderer: (type) => ICON_TYPES[type]\n });\n\n kendo.cssProperties.registerPrefix(\"HTMLFontIcon\", \"k-icon-\");\n\n kendo.cssProperties.registerValues(\"HTMLFontIcon\", [{\n prop: \"size\",\n values: kendo.cssProperties.sizeValues.concat([['xsmall', 'xs'], ['xlarge', 'xl'], ['xxlarge', 'xxl'], ['xxxlarge', 'xxxl']])\n }, {\n prop: \"themeColor\",\n values: ['primary', 'secondary', 'tertiary', 'inherit', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse']\n }]);\n\n kendo.cssProperties.registerPrefix(\"HTMLSVGIcon\", \"k-icon-\");\n\n kendo.cssProperties.registerValues(\"HTMLSVGIcon\", [{\n prop: \"size\",\n values: kendo.cssProperties.sizeValues.concat([['xsmall', 'xs'], ['xlarge', 'xl'], ['xxlarge', 'xxl'], ['xxxlarge', 'xxxl']])\n }, {\n prop: \"themeColor\",\n values: ['primary', 'secondary', 'tertiary', 'inherit', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse']\n }]);\n })(window.kendo.jQuery);\n var kendo$J = kendo;\n\n const caretTrIcon = {\n name: 'caret-tr',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretBrIcon = {\n name: 'caret-br',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretBlIcon = {\n name: 'caret-bl',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretTlIcon = {\n name: 'caret-tl',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretAltUpIcon = {\n name: 'caret-alt-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretAltRightIcon = {\n name: 'caret-alt-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretAltDownIcon = {\n name: 'caret-alt-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretAltLeftIcon = {\n name: 'caret-alt-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretAltToTopIcon = {\n name: 'caret-alt-to-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretAltToRightIcon = {\n name: 'caret-alt-to-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretAltToBottomIcon = {\n name: 'caret-alt-to-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretAltToLeftIcon = {\n name: 'caret-alt-to-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretDoubleAltUpIcon = {\n name: 'caret-double-alt-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretDoubleAltRightIcon = {\n name: 'caret-double-alt-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretDoubleAltDownIcon = {\n name: 'caret-double-alt-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretDoubleAltLeftIcon = {\n name: 'caret-double-alt-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretAltExpandIcon = {\n name: 'caret-alt-expand',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowsNoChangeIcon = {\n name: 'arrows-no-change',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowOverflowDownIcon = {\n name: 'arrow-overflow-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chevronUpIcon = {\n name: 'chevron-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chevronRightIcon = {\n name: 'chevron-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chevronDownIcon = {\n name: 'chevron-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chevronLeftIcon = {\n name: 'chevron-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowUpIcon = {\n name: 'arrow-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowRightIcon = {\n name: 'arrow-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowDownIcon = {\n name: 'arrow-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowLeftIcon = {\n name: 'arrow-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const levelDownIcon = {\n name: 'level-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const levelUpIcon = {\n name: 'level-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const levelToTopIcon = {\n name: 'level-to-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const colResizeIcon = {\n name: 'col-resize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowsAxesIcon = {\n name: 'arrows-axes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowsSwapIcon = {\n name: 'arrows-swap',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dragAndDropIcon = {\n name: 'drag-and-drop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const categorizeIcon = {\n name: 'categorize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const gridIcon = {\n name: 'grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const gridLayoutIcon = {\n name: 'grid-layout',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const groupIcon = {\n name: 'group',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const ungroupIcon = {\n name: 'ungroup',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const handleDragIcon = {\n name: 'handle-drag',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const layoutIcon = {\n name: 'layout',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const layout1By4Icon = {\n name: 'layout-1-by-4',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const layout2By2Icon = {\n name: 'layout-2-by-2',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const layoutSideBySideIcon = {\n name: 'layout-side-by-side',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const layoutStackedIcon = {\n name: 'layout-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const columnsIcon = {\n name: 'columns',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const rowsIcon = {\n name: 'rows',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const reorderIcon = {\n name: 'reorder',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const menuIcon = {\n name: 'menu',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const moreVerticalIcon = {\n name: 'more-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const moreHorizontalIcon = {\n name: 'more-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const overlapIcon = {\n name: 'overlap',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const homeIcon = {\n name: 'home',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowsLeftRightIcon = {\n name: 'arrows-left-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowsTopBottomIcon = {\n name: 'arrows-top-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderRadiusBottomLeftIcon = {\n name: 'border-radius-bottom-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderRadiusBottomRightIcon = {\n name: 'border-radius-bottom-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderRadiusTopLeftIcon = {\n name: 'border-radius-top-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderRadiusTopRightIcon = {\n name: 'border-radius-top-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderRadiusIcon = {\n name: 'border-radius',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderStyleBottomIcon = {\n name: 'border-style-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderStyleLeftIcon = {\n name: 'border-style-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderStyleRightIcon = {\n name: 'border-style-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderStyleTopIcon = {\n name: 'border-style-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderStyleIcon = {\n name: 'border-style',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const boxSizingIcon = {\n name: 'box-sizing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chevronDoubleDownIcon = {\n name: 'chevron-double-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chevronDoubleLeftIcon = {\n name: 'chevron-double-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chevronDoubleRightIcon = {\n name: 'chevron-double-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chevronDoubleUpIcon = {\n name: 'chevron-double-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dataOdsIcon = {\n name: 'data-ods',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const nonRecurrenceIcon = {\n name: 'non-recurrence',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const displayBlockIcon = {\n name: 'display-block',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const displayFlexIcon = {\n name: 'display-flex',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const displayInlineFlexIcon = {\n name: 'display-inline-flex',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dropletSliderIcon = {\n name: 'droplet-slider',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileReportIcon = {\n name: 'file-report',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const gapColumnIcon = {\n name: 'gap-column',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const gapRowIcon = {\n name: 'gap-row',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const handleResizeAltIcon = {\n name: 'handle-resize-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const handleResizeIcon = {\n name: 'handle-resize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const imagesIcon = {\n name: 'images',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const letterSpaceIcon = {\n name: 'letter-space',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const lineHeightIcon = {\n name: 'line-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listLatinBigIcon = {\n name: 'list-latin-big',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listLatinSmallIcon = {\n name: 'list-latin-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listRomanBigIcon = {\n name: 'list-roman-big',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listRomanSmallIcon = {\n name: 'list-roman-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listUnorderedOutlineIcon = {\n name: 'list-unordered-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listUnorderedSquareIcon = {\n name: 'list-unordered-square',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const maxHeightIcon = {\n name: 'max-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const maxWidthIcon = {\n name: 'max-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const minHeightIcon = {\n name: 'min-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const minWidthIcon = {\n name: 'min-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const outlineOffsetIcon = {\n name: 'outline-offset',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const outlineWidthIcon = {\n name: 'outline-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paddingBottomIcon = {\n name: 'padding-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paddingLeftIcon = {\n name: 'padding-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paddingRightIcon = {\n name: 'padding-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paddingTopIcon = {\n name: 'padding-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paddingIcon = {\n name: 'padding',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const positionBottomIcon = {\n name: 'position-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const positionLeftIcon = {\n name: 'position-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const positionRightIcon = {\n name: 'position-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const positionTopIcon = {\n name: 'position-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const regularExpressionIcon = {\n name: 'regular-expression',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const replaceAllIcon = {\n name: 'replace-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const replaceSingleIcon = {\n name: 'replace-single',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const reportElementIcon = {\n name: 'report-element',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const rightDoubleQuotesIcon = {\n name: 'right-double-quotes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const wholeWordIcon = {\n name: 'whole-word',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dataSdsIcon = {\n name: 'data-sds',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const downloadLightIcon = {\n name: 'download-light',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const eyeSlashIcon = {\n name: 'eye-slash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const displayInlineBlockIcon = {\n name: 'display-inline-block',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paperPlaneIcon = {\n name: 'paper-plane',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const gaugeLinearIcon = {\n name: 'gauge-linear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const gaugeRadialIcon = {\n name: 'gauge-radial',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const envelopeBoxIcon = {\n name: 'envelope-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const envelopeLinkIcon = {\n name: 'envelope-link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const envelopeIcon = {\n name: 'envelope',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const warningCircleIcon = {\n name: 'warning-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const warningTriangleIcon = {\n name: 'warning-triangle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const infoSolidIcon = {\n name: 'info-solid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fontGrowIcon = {\n name: 'font-grow',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fontShrinkIcon = {\n name: 'font-shrink',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const textOverflowIcon = {\n name: 'text-overflow',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const textWrapArrowIcon = {\n name: 'text-wrap-arrow',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const textTruncateIcon = {\n name: 'text-truncate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const textClipIcon = {\n name: 'text-clip',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderColorIcon = {\n name: 'border-color',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderTypeIcon = {\n name: 'border-type',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const thumbDownOutlineIcon = {\n name: 'thumb-down-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const thumbDownIcon = {\n name: 'thumb-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const thumbUpOutlineIcon = {\n name: 'thumb-up-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const thumbUpIcon = {\n name: 'thumb-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const sparklesIcon = {\n name: 'sparkles',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paragraphMarkIcon = {\n name: 'paragraph-mark',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paragraphHeightIcon = {\n name: 'paragraph-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const userOutlineIcon = {\n name: 'user-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const undoIcon = {\n name: 'undo',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const redoIcon = {\n name: 'redo',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowRotateCcwIcon = {\n name: 'arrow-rotate-ccw',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowRotateCwIcon = {\n name: 'arrow-rotate-cw',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowsNoRepeatIcon = {\n name: 'arrows-no-repeat',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowRotateCcwSmallIcon = {\n name: 'arrow-rotate-ccw-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowRotateCwSmallIcon = {\n name: 'arrow-rotate-cw-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clockIcon = {\n name: 'clock',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const calendarIcon = {\n name: 'calendar',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const saveIcon = {\n name: 'save',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const printIcon = {\n name: 'print',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const pencilIcon = {\n name: 'pencil',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const trashIcon = {\n name: 'trash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paperclipIcon = {\n name: 'paperclip',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paperclipAltIcon = {\n name: 'paperclip-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const linkIcon = {\n name: 'link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const unlinkIcon = {\n name: 'unlink',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const linkVerticalIcon = {\n name: 'link-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const unlinkVerticalIcon = {\n name: 'unlink-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const lockIcon = {\n name: 'lock',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const unlockIcon = {\n name: 'unlock',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cancelIcon = {\n name: 'cancel',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cancelOutlineIcon = {\n name: 'cancel-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cancelCircleIcon = {\n name: 'cancel-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const checkIcon = {\n name: 'check',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const checkOutlineIcon = {\n name: 'check-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const checkCircleIcon = {\n name: 'check-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const xIcon = {\n name: 'x',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const xOutlineIcon = {\n name: 'x-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const xCircleIcon = {\n name: 'x-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const plusIcon = {\n name: 'plus',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const plusOutlineIcon = {\n name: 'plus-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const plusCircleIcon = {\n name: 'plus-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const minusIcon = {\n name: 'minus',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const minusOutlineIcon = {\n name: 'minus-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const minusCircleIcon = {\n name: 'minus-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const sortAscIcon = {\n name: 'sort-asc',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const sortDescIcon = {\n name: 'sort-desc',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const sortClearIcon = {\n name: 'sort-clear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const sortAscSmallIcon = {\n name: 'sort-asc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const sortDescSmallIcon = {\n name: 'sort-desc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filterIcon = {\n name: 'filter',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filterClearIcon = {\n name: 'filter-clear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filterSmallIcon = {\n name: 'filter-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filterSortAscSmallIcon = {\n name: 'filter-sort-asc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filterSortDescSmallIcon = {\n name: 'filter-sort-desc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filterAddExpressionIcon = {\n name: 'filter-add-expression',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filterAddGroupIcon = {\n name: 'filter-add-group',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const loginIcon = {\n name: 'login',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const logoutIcon = {\n name: 'logout',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const downloadIcon = {\n name: 'download',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const uploadIcon = {\n name: 'upload',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const hyperlinkOpenIcon = {\n name: 'hyperlink-open',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const hyperlinkOpenSmIcon = {\n name: 'hyperlink-open-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const launchIcon = {\n name: 'launch',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const windowIcon = {\n name: 'window',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const windowRestoreIcon = {\n name: 'window-restore',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const windowMinimizeIcon = {\n name: 'window-minimize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const gearIcon = {\n name: 'gear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const gearsIcon = {\n name: 'gears',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const wrenchIcon = {\n name: 'wrench',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const eyeIcon = {\n name: 'eye',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const searchIcon = {\n name: 'search',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const zoomInIcon = {\n name: 'zoom-in',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const zoomOutIcon = {\n name: 'zoom-out',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowsMoveIcon = {\n name: 'arrows-move',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const calculatorIcon = {\n name: 'calculator',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cartIcon = {\n name: 'cart',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const connectorIcon = {\n name: 'connector',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const plusSmIcon = {\n name: 'plus-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const minusSmIcon = {\n name: 'minus-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const kpiStatusDenyIcon = {\n name: 'kpi-status-deny',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const kpiStatusHoldIcon = {\n name: 'kpi-status-hold',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const kpiStatusOpenIcon = {\n name: 'kpi-status-open',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const equalIcon = {\n name: 'equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const notEqualIcon = {\n name: 'not-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const lessOrEqualIcon = {\n name: 'less-or-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const greaterOrEqualIcon = {\n name: 'greater-or-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const divideIcon = {\n name: 'divide',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const accessibilityIcon = {\n name: 'accessibility',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const barcodeOutlineIcon = {\n name: 'barcode-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const barcodeIcon = {\n name: 'barcode',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const barcodeScannerIcon = {\n name: 'barcode-scanner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const qrCodeOutlineIcon = {\n name: 'qr-code-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const qrCodeIcon = {\n name: 'qr-code',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const qrCodeScannerIcon = {\n name: 'qr-code-scanner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const barcodeQrCodeScannerIcon = {\n name: 'barcode-qr-code-scanner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const signatureIcon = {\n name: 'signature',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const handIcon = {\n name: 'hand',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const pointerIcon = {\n name: 'pointer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stickIcon = {\n name: 'stick',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const unstickIcon = {\n name: 'unstick',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const setColumnPositionIcon = {\n name: 'set-column-position',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clockArrowRotateIcon = {\n name: 'clock-arrow-rotate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const playIcon = {\n name: 'play',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const pauseIcon = {\n name: 'pause',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stopIcon = {\n name: 'stop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const rewindIcon = {\n name: 'rewind',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const forwardIcon = {\n name: 'forward',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const volumeDownIcon = {\n name: 'volume-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const volumeUpIcon = {\n name: 'volume-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const volumeMuteIcon = {\n name: 'volume-mute',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const hdIcon = {\n name: 'hd',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const closedCaptionsIcon = {\n name: 'closed-captions',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const playlistIcon = {\n name: 'playlist',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const musicNotesIcon = {\n name: 'music-notes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const playSmIcon = {\n name: 'play-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const pauseSmIcon = {\n name: 'pause-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stopSmIcon = {\n name: 'stop-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const heartOutlineIcon = {\n name: 'heart-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const heartIcon = {\n name: 'heart',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const starOutlineIcon = {\n name: 'star-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const starIcon = {\n name: 'star',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const checkboxIcon = {\n name: 'checkbox',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const checkboxCheckedIcon = {\n name: 'checkbox-checked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const checkboxIndeterminateIcon = {\n name: 'checkbox-indeterminate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const checkboxNullIcon = {\n name: 'checkbox-null',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const circleIcon = {\n name: 'circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const radiobuttonIcon = {\n name: 'radiobutton',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const radiobuttonCheckedIcon = {\n name: 'radiobutton-checked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bellIcon = {\n name: 'bell',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const infoCircleIcon = {\n name: 'info-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const questionCircleIcon = {\n name: 'question-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const exclamationCircleIcon = {\n name: 'exclamation-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cameraIcon = {\n name: 'camera',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const imageIcon = {\n name: 'image',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const imageExportIcon = {\n name: 'image-export',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const zoomActualSizeIcon = {\n name: 'zoom-actual-size',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const zoomBestFitIcon = {\n name: 'zoom-best-fit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const imageResizeIcon = {\n name: 'image-resize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cropIcon = {\n name: 'crop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const mirrorIcon = {\n name: 'mirror',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const flipHorizontalIcon = {\n name: 'flip-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const flipVerticalIcon = {\n name: 'flip-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const rotateIcon = {\n name: 'rotate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const rotateRightIcon = {\n name: 'rotate-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const rotateLeftIcon = {\n name: 'rotate-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const brushIcon = {\n name: 'brush',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paletteIcon = {\n name: 'palette',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dropletIcon = {\n name: 'droplet',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const shapeLineIcon = {\n name: 'shape-line',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const brightnessContrastIcon = {\n name: 'brightness-contrast',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const slidersIcon = {\n name: 'sliders',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const invertColorsIcon = {\n name: 'invert-colors',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const transparencyIcon = {\n name: 'transparency',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const grayscaleIcon = {\n name: 'grayscale',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const blurIcon = {\n name: 'blur',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const sharpenIcon = {\n name: 'sharpen',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const shapesIcon = {\n name: 'shapes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const roundCornersIcon = {\n name: 'round-corners',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bringToFrontIcon = {\n name: 'bring-to-front',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bringToBackIcon = {\n name: 'bring-to-back',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bringForwardIcon = {\n name: 'bring-forward',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bringBackwardIcon = {\n name: 'bring-backward',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignSelfStartIcon = {\n name: 'align-self-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignSelfCenterIcon = {\n name: 'align-self-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignSelfEndIcon = {\n name: 'align-self-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignSelfStartAltIcon = {\n name: 'align-self-start-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignSelfCenterAltIcon = {\n name: 'align-self-center-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignSelfEndAltIcon = {\n name: 'align-self-end-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const thumbnailsUpIcon = {\n name: 'thumbnails-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const thumbnailsRightIcon = {\n name: 'thumbnails-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const thumbnailsDownIcon = {\n name: 'thumbnails-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const thumbnailsLeftIcon = {\n name: 'thumbnails-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fullscreenIcon = {\n name: 'fullscreen',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fullscreenExitIcon = {\n name: 'fullscreen-exit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dropletSlashIcon = {\n name: 'droplet-slash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const photosIcon = {\n name: 'photos',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignToGridIcon = {\n name: 'align-to-grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const sizeToGridIcon = {\n name: 'size-to-grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const makeSameSizeIcon = {\n name: 'make-same-size',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const makeSameWidthIcon = {\n name: 'make-same-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const makeSameHeightIcon = {\n name: 'make-same-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const makeHorizontalSpacingEqualIcon = {\n name: 'make-horizontal-spacing-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const increaseHorizontalSpacingIcon = {\n name: 'increase-horizontal-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const decreaseHorizontalSpacingIcon = {\n name: 'decrease-horizontal-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const removeHorizontalSpacingIcon = {\n name: 'remove-horizontal-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const makeVerticalSpacingEqualIcon = {\n name: 'make-vertical-spacing-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const increaseVerticalSpacingIcon = {\n name: 'increase-vertical-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const decreaseVerticalSpacingIcon = {\n name: 'decrease-vertical-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const removeVerticalSpacingIcon = {\n name: 'remove-vertical-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const eyedropperIcon = {\n name: 'eyedropper',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const snapGridIcon = {\n name: 'snap-grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const snapToGridlinesIcon = {\n name: 'snap-to-gridlines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const snapToSnaplinesIcon = {\n name: 'snap-to-snaplines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dimensionsIcon = {\n name: 'dimensions',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignSelfStretchIcon = {\n name: 'align-self-stretch',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignSelfStretchAltIcon = {\n name: 'align-self-stretch-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsStartIcon = {\n name: 'align-items-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsCenterIcon = {\n name: 'align-items-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsEndIcon = {\n name: 'align-items-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsStretchIcon = {\n name: 'align-items-stretch',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsBaselineIcon = {\n name: 'align-items-baseline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsStartAltIcon = {\n name: 'align-items-start-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsCenterAltIcon = {\n name: 'align-items-center-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsEndAltIcon = {\n name: 'align-items-end-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsStretchAltIcon = {\n name: 'align-items-stretch-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsBaselineAltIcon = {\n name: 'align-items-baseline-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentStartIcon = {\n name: 'justify-content-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentCenterIcon = {\n name: 'justify-content-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentEndIcon = {\n name: 'justify-content-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentBetweenIcon = {\n name: 'justify-content-between',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentAroundIcon = {\n name: 'justify-content-around',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentStartAltIcon = {\n name: 'justify-content-start-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentCenterAltIcon = {\n name: 'justify-content-center-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentEndAltIcon = {\n name: 'justify-content-end-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentBetweenAltIcon = {\n name: 'justify-content-between-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentAroundAltIcon = {\n name: 'justify-content-around-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileWrenchIcon = {\n name: 'file-wrench',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const boldIcon = {\n name: 'bold',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const italicIcon = {\n name: 'italic',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const underlineIcon = {\n name: 'underline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fontFamilyIcon = {\n name: 'font-family',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const foregroundColorIcon = {\n name: 'foreground-color',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const convertLowercaseIcon = {\n name: 'convert-lowercase',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const convertUppercaseIcon = {\n name: 'convert-uppercase',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const strikethroughIcon = {\n name: 'strikethrough',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const subscriptIcon = {\n name: 'subscript',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const supscriptIcon = {\n name: 'supscript',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const divIcon = {\n name: 'div',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const allIcon = {\n name: 'all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const h1Icon = {\n name: 'h1',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const h2Icon = {\n name: 'h2',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const h3Icon = {\n name: 'h3',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const h4Icon = {\n name: 'h4',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const h5Icon = {\n name: 'h5',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const h6Icon = {\n name: 'h6',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listOrderedIcon = {\n name: 'list-ordered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listUnorderedIcon = {\n name: 'list-unordered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const indentIcon = {\n name: 'indent',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const outdentIcon = {\n name: 'outdent',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const insertTopIcon = {\n name: 'insert-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const insertMiddleIcon = {\n name: 'insert-middle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const insertBottomIcon = {\n name: 'insert-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignTopIcon = {\n name: 'align-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignMiddleIcon = {\n name: 'align-middle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignBottomIcon = {\n name: 'align-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignLeftIcon = {\n name: 'align-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignCenterIcon = {\n name: 'align-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignRightIcon = {\n name: 'align-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignJustifyIcon = {\n name: 'align-justify',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignRemoveIcon = {\n name: 'align-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const textWrapIcon = {\n name: 'text-wrap',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const horizontalRuleIcon = {\n name: 'horizontal-rule',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignTopLeftIcon = {\n name: 'table-align-top-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignTopCenterIcon = {\n name: 'table-align-top-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignTopRightIcon = {\n name: 'table-align-top-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignMiddleLeftIcon = {\n name: 'table-align-middle-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignMiddleCenterIcon = {\n name: 'table-align-middle-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignMiddleRightIcon = {\n name: 'table-align-middle-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignBottomLeftIcon = {\n name: 'table-align-bottom-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignBottomCenterIcon = {\n name: 'table-align-bottom-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignBottomRightIcon = {\n name: 'table-align-bottom-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignRemoveIcon = {\n name: 'table-align-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bordersAllIcon = {\n name: 'borders-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bordersOutsideIcon = {\n name: 'borders-outside',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bordersInsideIcon = {\n name: 'borders-inside',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bordersInsideHorizontalIcon = {\n name: 'borders-inside-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bordersInsideVerticalIcon = {\n name: 'borders-inside-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderTopIcon = {\n name: 'border-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderBottomIcon = {\n name: 'border-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderLeftIcon = {\n name: 'border-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderRightIcon = {\n name: 'border-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bordersNoneIcon = {\n name: 'borders-none',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bordersShowHideIcon = {\n name: 'borders-show-hide',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const formIcon = {\n name: 'form',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const formElementIcon = {\n name: 'form-element',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const codeSnippetIcon = {\n name: 'code-snippet',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const selectAllIcon = {\n name: 'select-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const buttonIcon = {\n name: 'button',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const selectBoxIcon = {\n name: 'select-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const calendarDateIcon = {\n name: 'calendar-date',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const groupBoxIcon = {\n name: 'group-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const textareaIcon = {\n name: 'textarea',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const textboxIcon = {\n name: 'textbox',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const textboxHiddenIcon = {\n name: 'textbox-hidden',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const passwordIcon = {\n name: 'password',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paragraphAddIcon = {\n name: 'paragraph-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const editToolsIcon = {\n name: 'edit-tools',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const templateManagerIcon = {\n name: 'template-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const changeManuallyIcon = {\n name: 'change-manually',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const trackChangesIcon = {\n name: 'track-changes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const trackChangesEnableIcon = {\n name: 'track-changes-enable',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const trackChangesAcceptIcon = {\n name: 'track-changes-accept',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const trackChangesAcceptAllIcon = {\n name: 'track-changes-accept-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const trackChangesRejectIcon = {\n name: 'track-changes-reject',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const trackChangesRejectAllIcon = {\n name: 'track-changes-reject-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const documentManagerIcon = {\n name: 'document-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const customIconIcon = {\n name: 'custom-icon',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bookIcon = {\n name: 'book',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const imageAddIcon = {\n name: 'image-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const imageEditIcon = {\n name: 'image-edit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const imageMapEditorIcon = {\n name: 'image-map-editor',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const commentIcon = {\n name: 'comment',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const commentRemoveIcon = {\n name: 'comment-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const commentsRemoveIcon = {\n name: 'comments-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const silverlightIcon = {\n name: 'silverlight',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const mediaManagerIcon = {\n name: 'media-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const videoExternalIcon = {\n name: 'video-external',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const flashManagerIcon = {\n name: 'flash-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const binocularsIcon = {\n name: 'binoculars',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const copyIcon = {\n name: 'copy',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cutIcon = {\n name: 'cut',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clipboardIcon = {\n name: 'clipboard',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clipboardCodeIcon = {\n name: 'clipboard-code',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clipboardWordIcon = {\n name: 'clipboard-word',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clipboardWordAltIcon = {\n name: 'clipboard-word-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clipboardHtmlIcon = {\n name: 'clipboard-html',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clipboardMarkdownIcon = {\n name: 'clipboard-markdown',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clipboardTextIcon = {\n name: 'clipboard-text',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const applyFormatIcon = {\n name: 'apply-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clearCssIcon = {\n name: 'clear-css',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const copyFormatIcon = {\n name: 'copy-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stripAllFormattingIcon = {\n name: 'strip-all-formatting',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stripCssFormatIcon = {\n name: 'strip-css-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stripFontElementsIcon = {\n name: 'strip-font-elements',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stripSpanElementsIcon = {\n name: 'strip-span-elements',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stripWordFormattingIcon = {\n name: 'strip-word-formatting',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const formatCodeBlockIcon = {\n name: 'format-code-block',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const buildingBlocksIcon = {\n name: 'building-blocks',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const puzzlePieceIcon = {\n name: 'puzzle-piece',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const linkAddIcon = {\n name: 'link-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const globeLinkIcon = {\n name: 'globe-link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const globeUnlinkIcon = {\n name: 'globe-unlink',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const envelopLinkIcon = {\n name: 'envelop-link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const anchorIcon = {\n name: 'anchor',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAddIcon = {\n name: 'table-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableIcon = {\n name: 'table',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tablePropertiesIcon = {\n name: 'table-properties',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableCellIcon = {\n name: 'table-cell',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableCellPropertiesIcon = {\n name: 'table-cell-properties',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableColumnInsertLeftIcon = {\n name: 'table-column-insert-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableColumnInsertRightIcon = {\n name: 'table-column-insert-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableRowInsertAboveIcon = {\n name: 'table-row-insert-above',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableRowInsertBelowIcon = {\n name: 'table-row-insert-below',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableColumnDeleteIcon = {\n name: 'table-column-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableRowDeleteIcon = {\n name: 'table-row-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableCellDeleteIcon = {\n name: 'table-cell-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableDeleteIcon = {\n name: 'table-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cellsMergeIcon = {\n name: 'cells-merge',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cellsMergeHorizontallyIcon = {\n name: 'cells-merge-horizontally',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cellsMergeVerticallyIcon = {\n name: 'cells-merge-vertically',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cellSplitHorizontallyIcon = {\n name: 'cell-split-horizontally',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cellSplitVerticallyIcon = {\n name: 'cell-split-vertically',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableUnmergeIcon = {\n name: 'table-unmerge',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paneFreezeIcon = {\n name: 'pane-freeze',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const rowFreezeIcon = {\n name: 'row-freeze',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const columnFreezeIcon = {\n name: 'column-freeze',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const toolbarFloatIcon = {\n name: 'toolbar-float',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const spellCheckerIcon = {\n name: 'spell-checker',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const validationXhtmlIcon = {\n name: 'validation-xhtml',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const validationDataIcon = {\n name: 'validation-data',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const toggleFullScreenModeIcon = {\n name: 'toggle-full-screen-mode',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const formulaFxIcon = {\n name: 'formula-fx',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const sumIcon = {\n name: 'sum',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const symbolIcon = {\n name: 'symbol',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dollarIcon = {\n name: 'dollar',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const percentIcon = {\n name: 'percent',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const customFormatIcon = {\n name: 'custom-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const decimalIncreaseIcon = {\n name: 'decimal-increase',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const decimalDecreaseIcon = {\n name: 'decimal-decrease',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fontSizeIcon = {\n name: 'font-size',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const imageAbsolutePositionIcon = {\n name: 'image-absolute-position',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableWizardIcon = {\n name: 'table-wizard',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const crosstabIcon = {\n name: 'crosstab',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const crosstabWizardIcon = {\n name: 'crosstab-wizard',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableBodyIcon = {\n name: 'table-body',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableColumnGroupsIcon = {\n name: 'table-column-groups',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableCornerIcon = {\n name: 'table-corner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableRowGroupsIcon = {\n name: 'table-row-groups',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const globeOutlineIcon = {\n name: 'globe-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const globeIcon = {\n name: 'globe',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const mapMarkerIcon = {\n name: 'map-marker',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const mapMarkerTargetIcon = {\n name: 'map-marker-target',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const pinIcon = {\n name: 'pin',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const unpinIcon = {\n name: 'unpin',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const shareIcon = {\n name: 'share',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const userIcon = {\n name: 'user',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const inboxIcon = {\n name: 'inbox',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bloggerIcon = {\n name: 'blogger',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bloggerBoxIcon = {\n name: 'blogger-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const deliciousIcon = {\n name: 'delicious',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const deliciousBoxIcon = {\n name: 'delicious-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const diggIcon = {\n name: 'digg',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const diggBoxIcon = {\n name: 'digg-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const envelopIcon = {\n name: 'envelop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const envelopBoxIcon = {\n name: 'envelop-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const facebookIcon = {\n name: 'facebook',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const facebookBoxIcon = {\n name: 'facebook-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const googleIcon = {\n name: 'google',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const googleBoxIcon = {\n name: 'google-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const googlePlusIcon = {\n name: 'google-plus',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const googlePlusBoxIcon = {\n name: 'google-plus-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const linkedinIcon = {\n name: 'linkedin',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const linkedinBoxIcon = {\n name: 'linkedin-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const myspaceIcon = {\n name: 'myspace',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const myspaceBoxIcon = {\n name: 'myspace-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const pinterestIcon = {\n name: 'pinterest',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const pinterestBoxIcon = {\n name: 'pinterest-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const redditIcon = {\n name: 'reddit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const redditBoxIcon = {\n name: 'reddit-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stumbleUponIcon = {\n name: 'stumble-upon',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stumbleUponBoxIcon = {\n name: 'stumble-upon-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tellAFriendIcon = {\n name: 'tell-a-friend',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tellAFriendBoxIcon = {\n name: 'tell-a-friend-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tumblrIcon = {\n name: 'tumblr',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tumblrBoxIcon = {\n name: 'tumblr-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const twitterIcon = {\n name: 'twitter',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const twitterBoxIcon = {\n name: 'twitter-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const yammerIcon = {\n name: 'yammer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const yammerBoxIcon = {\n name: 'yammer-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const behanceIcon = {\n name: 'behance',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const behanceBoxIcon = {\n name: 'behance-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dribbbleIcon = {\n name: 'dribbble',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dribbbleBoxIcon = {\n name: 'dribbble-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const rssIcon = {\n name: 'rss',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const rssBoxIcon = {\n name: 'rss-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const vimeoIcon = {\n name: 'vimeo',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const vimeoBoxIcon = {\n name: 'vimeo-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const youtubeIcon = {\n name: 'youtube',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const youtubeBoxIcon = {\n name: 'youtube-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const folderIcon = {\n name: 'folder',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const folderOpenIcon = {\n name: 'folder-open',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const folderAddIcon = {\n name: 'folder-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const folderUpIcon = {\n name: 'folder-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const folderMoreIcon = {\n name: 'folder-more',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const aggregateFieldsIcon = {\n name: 'aggregate-fields',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileIcon = {\n name: 'file',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileAddIcon = {\n name: 'file-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileTxtIcon = {\n name: 'file-txt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileCsvIcon = {\n name: 'file-csv',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileExcelIcon = {\n name: 'file-excel',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileWordIcon = {\n name: 'file-word',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileMdbIcon = {\n name: 'file-mdb',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filePptIcon = {\n name: 'file-ppt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filePdfIcon = {\n name: 'file-pdf',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filePsdIcon = {\n name: 'file-psd',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileFlashIcon = {\n name: 'file-flash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileConfigIcon = {\n name: 'file-config',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileAscxIcon = {\n name: 'file-ascx',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileBacIcon = {\n name: 'file-bac',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileZipIcon = {\n name: 'file-zip',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filmIcon = {\n name: 'film',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const css3Icon = {\n name: 'css3',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const html5Icon = {\n name: 'html5',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const codeIcon = {\n name: 'code',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cssIcon = {\n name: 'css',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const jsIcon = {\n name: 'js',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const exeIcon = {\n name: 'exe',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const csprojIcon = {\n name: 'csproj',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const vbprojIcon = {\n name: 'vbproj',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const csIcon = {\n name: 'cs',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const vbIcon = {\n name: 'vb',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const slnIcon = {\n name: 'sln',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cloudIcon = {\n name: 'cloud',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileHorizontalIcon = {\n name: 'file-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const subreportIcon = {\n name: 'subreport',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dataIcon = {\n name: 'data',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileHeaderIcon = {\n name: 'file-header',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileFooterIcon = {\n name: 'file-footer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const groupHeaderSectionIcon = {\n name: 'group-header-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const groupFooterSectionIcon = {\n name: 'group-footer-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const pageHeaderSectionIcon = {\n name: 'page-header-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const pageFooterSectionIcon = {\n name: 'page-footer-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const detailSectionIcon = {\n name: 'detail-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tocSectionIcon = {\n name: 'toc-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const groupSectionIcon = {\n name: 'group-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const parametersIcon = {\n name: 'parameters',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dataCsvIcon = {\n name: 'data-csv',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dataJsonIcon = {\n name: 'data-json',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dataSqlIcon = {\n name: 'data-sql',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dataWebIcon = {\n name: 'data-web',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const groupCollectionIcon = {\n name: 'group-collection',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const parameterBooleanIcon = {\n name: 'parameter-boolean',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const parameterDateTimeIcon = {\n name: 'parameter-date-time',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const parameterFloatIcon = {\n name: 'parameter-float',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const parameterIntegerIcon = {\n name: 'parameter-integer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const parameterStringIcon = {\n name: 'parameter-string',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tocSectionLevelIcon = {\n name: 'toc-section-level',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const inheritedIcon = {\n name: 'inherited',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileVideoIcon = {\n name: 'file-video',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileAudioIcon = {\n name: 'file-audio',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileImageIcon = {\n name: 'file-image',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filePresentationIcon = {\n name: 'file-presentation',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileDataIcon = {\n name: 'file-data',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileDiscImageIcon = {\n name: 'file-disc-image',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileProgrammingIcon = {\n name: 'file-programming',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const parametersByteArrayIcon = {\n name: 'parameters-byte-array',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const parametersUnknownIcon = {\n name: 'parameters-unknown',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileErrorIcon = {\n name: 'file-error',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filesErrorIcon = {\n name: 'files-error',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dataRestIcon = {\n name: 'data-rest',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileTypescriptIcon = {\n name: 'file-typescript',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tablePositionStartIcon = {\n name: 'table-position-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tablePositionCenterIcon = {\n name: 'table-position-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tablePositionEndIcon = {\n name: 'table-position-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listRomanUpperIcon = {\n name: 'list-roman-upper',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listRomanLowerIcon = {\n name: 'list-roman-lower',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const importIcon = {\n name: 'import',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const exportIcon = {\n name: 'export',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const graphIcon = {\n name: 'graph',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartColumnClusteredIcon = {\n name: 'chart-column-clustered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartColumnStackedIcon = {\n name: 'chart-column-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartColumnStacked100Icon = {\n name: 'chart-column-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartColumnRangeIcon = {\n name: 'chart-column-range',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartBarClusteredIcon = {\n name: 'chart-bar-clustered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartBarStackedIcon = {\n name: 'chart-bar-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartBarStacked100Icon = {\n name: 'chart-bar-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartBarRangeIcon = {\n name: 'chart-bar-range',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartAreaClusteredIcon = {\n name: 'chart-area-clustered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartAreaStackedIcon = {\n name: 'chart-area-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartAreaStacked100Icon = {\n name: 'chart-area-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartAreaRangeIcon = {\n name: 'chart-area-range',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartLineIcon = {\n name: 'chart-line',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartLineStackedIcon = {\n name: 'chart-line-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartLineStacked100Icon = {\n name: 'chart-line-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartLineMarkersIcon = {\n name: 'chart-line-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartLineStackedMarkersIcon = {\n name: 'chart-line-stacked-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartLineStacked100MarkersIcon = {\n name: 'chart-line-stacked100-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartPieIcon = {\n name: 'chart-pie',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartDoughnutIcon = {\n name: 'chart-doughnut',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartScatterIcon = {\n name: 'chart-scatter',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartScatterSmoothLinesMarkersIcon = {\n name: 'chart-scatter-smooth-lines-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartScatterSmoothLinesIcon = {\n name: 'chart-scatter-smooth-lines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartScatterStraightLinesMarkersIcon = {\n name: 'chart-scatter-straight-lines-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartScatterStraightLinesIcon = {\n name: 'chart-scatter-straight-lines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartBubbleIcon = {\n name: 'chart-bubble',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartCandlestickIcon = {\n name: 'chart-candlestick',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartOhlcIcon = {\n name: 'chart-ohlc',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartRadarIcon = {\n name: 'chart-radar',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartRadarMarkersIcon = {\n name: 'chart-radar-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartRadarFilledIcon = {\n name: 'chart-radar-filled',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartRoseIcon = {\n name: 'chart-rose',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartChoroplethIcon = {\n name: 'chart-choropleth',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var svgIcons = /*#__PURE__*/Object.freeze({\n __proto__: null,\n accessibilityIcon: accessibilityIcon,\n aggregateFieldsIcon: aggregateFieldsIcon,\n alignBottomIcon: alignBottomIcon,\n alignCenterIcon: alignCenterIcon,\n alignItemsBaselineAltIcon: alignItemsBaselineAltIcon,\n alignItemsBaselineIcon: alignItemsBaselineIcon,\n alignItemsCenterAltIcon: alignItemsCenterAltIcon,\n alignItemsCenterIcon: alignItemsCenterIcon,\n alignItemsEndAltIcon: alignItemsEndAltIcon,\n alignItemsEndIcon: alignItemsEndIcon,\n alignItemsStartAltIcon: alignItemsStartAltIcon,\n alignItemsStartIcon: alignItemsStartIcon,\n alignItemsStretchAltIcon: alignItemsStretchAltIcon,\n alignItemsStretchIcon: alignItemsStretchIcon,\n alignJustifyIcon: alignJustifyIcon,\n alignLeftIcon: alignLeftIcon,\n alignMiddleIcon: alignMiddleIcon,\n alignRemoveIcon: alignRemoveIcon,\n alignRightIcon: alignRightIcon,\n alignSelfCenterAltIcon: alignSelfCenterAltIcon,\n alignSelfCenterIcon: alignSelfCenterIcon,\n alignSelfEndAltIcon: alignSelfEndAltIcon,\n alignSelfEndIcon: alignSelfEndIcon,\n alignSelfStartAltIcon: alignSelfStartAltIcon,\n alignSelfStartIcon: alignSelfStartIcon,\n alignSelfStretchAltIcon: alignSelfStretchAltIcon,\n alignSelfStretchIcon: alignSelfStretchIcon,\n alignToGridIcon: alignToGridIcon,\n alignTopIcon: alignTopIcon,\n allIcon: allIcon,\n anchorIcon: anchorIcon,\n applyFormatIcon: applyFormatIcon,\n arrowDownIcon: arrowDownIcon,\n arrowLeftIcon: arrowLeftIcon,\n arrowOverflowDownIcon: arrowOverflowDownIcon,\n arrowRightIcon: arrowRightIcon,\n arrowRotateCcwIcon: arrowRotateCcwIcon,\n arrowRotateCcwSmallIcon: arrowRotateCcwSmallIcon,\n arrowRotateCwIcon: arrowRotateCwIcon,\n arrowRotateCwSmallIcon: arrowRotateCwSmallIcon,\n arrowUpIcon: arrowUpIcon,\n arrowsAxesIcon: arrowsAxesIcon,\n arrowsLeftRightIcon: arrowsLeftRightIcon,\n arrowsMoveIcon: arrowsMoveIcon,\n arrowsNoChangeIcon: arrowsNoChangeIcon,\n arrowsNoRepeatIcon: arrowsNoRepeatIcon,\n arrowsSwapIcon: arrowsSwapIcon,\n arrowsTopBottomIcon: arrowsTopBottomIcon,\n barcodeIcon: barcodeIcon,\n barcodeOutlineIcon: barcodeOutlineIcon,\n barcodeQrCodeScannerIcon: barcodeQrCodeScannerIcon,\n barcodeScannerIcon: barcodeScannerIcon,\n behanceBoxIcon: behanceBoxIcon,\n behanceIcon: behanceIcon,\n bellIcon: bellIcon,\n binocularsIcon: binocularsIcon,\n bloggerBoxIcon: bloggerBoxIcon,\n bloggerIcon: bloggerIcon,\n blurIcon: blurIcon,\n boldIcon: boldIcon,\n bookIcon: bookIcon,\n borderBottomIcon: borderBottomIcon,\n borderColorIcon: borderColorIcon,\n borderLeftIcon: borderLeftIcon,\n borderRadiusBottomLeftIcon: borderRadiusBottomLeftIcon,\n borderRadiusBottomRightIcon: borderRadiusBottomRightIcon,\n borderRadiusIcon: borderRadiusIcon,\n borderRadiusTopLeftIcon: borderRadiusTopLeftIcon,\n borderRadiusTopRightIcon: borderRadiusTopRightIcon,\n borderRightIcon: borderRightIcon,\n borderStyleBottomIcon: borderStyleBottomIcon,\n borderStyleIcon: borderStyleIcon,\n borderStyleLeftIcon: borderStyleLeftIcon,\n borderStyleRightIcon: borderStyleRightIcon,\n borderStyleTopIcon: borderStyleTopIcon,\n borderTopIcon: borderTopIcon,\n borderTypeIcon: borderTypeIcon,\n bordersAllIcon: bordersAllIcon,\n bordersInsideHorizontalIcon: bordersInsideHorizontalIcon,\n bordersInsideIcon: bordersInsideIcon,\n bordersInsideVerticalIcon: bordersInsideVerticalIcon,\n bordersNoneIcon: bordersNoneIcon,\n bordersOutsideIcon: bordersOutsideIcon,\n bordersShowHideIcon: bordersShowHideIcon,\n boxSizingIcon: boxSizingIcon,\n brightnessContrastIcon: brightnessContrastIcon,\n bringBackwardIcon: bringBackwardIcon,\n bringForwardIcon: bringForwardIcon,\n bringToBackIcon: bringToBackIcon,\n bringToFrontIcon: bringToFrontIcon,\n brushIcon: brushIcon,\n buildingBlocksIcon: buildingBlocksIcon,\n buttonIcon: buttonIcon,\n calculatorIcon: calculatorIcon,\n calendarDateIcon: calendarDateIcon,\n calendarIcon: calendarIcon,\n cameraIcon: cameraIcon,\n cancelCircleIcon: cancelCircleIcon,\n cancelIcon: cancelIcon,\n cancelOutlineIcon: cancelOutlineIcon,\n caretAltDownIcon: caretAltDownIcon,\n caretAltExpandIcon: caretAltExpandIcon,\n caretAltLeftIcon: caretAltLeftIcon,\n caretAltRightIcon: caretAltRightIcon,\n caretAltToBottomIcon: caretAltToBottomIcon,\n caretAltToLeftIcon: caretAltToLeftIcon,\n caretAltToRightIcon: caretAltToRightIcon,\n caretAltToTopIcon: caretAltToTopIcon,\n caretAltUpIcon: caretAltUpIcon,\n caretBlIcon: caretBlIcon,\n caretBrIcon: caretBrIcon,\n caretDoubleAltDownIcon: caretDoubleAltDownIcon,\n caretDoubleAltLeftIcon: caretDoubleAltLeftIcon,\n caretDoubleAltRightIcon: caretDoubleAltRightIcon,\n caretDoubleAltUpIcon: caretDoubleAltUpIcon,\n caretTlIcon: caretTlIcon,\n caretTrIcon: caretTrIcon,\n cartIcon: cartIcon,\n categorizeIcon: categorizeIcon,\n cellSplitHorizontallyIcon: cellSplitHorizontallyIcon,\n cellSplitVerticallyIcon: cellSplitVerticallyIcon,\n cellsMergeHorizontallyIcon: cellsMergeHorizontallyIcon,\n cellsMergeIcon: cellsMergeIcon,\n cellsMergeVerticallyIcon: cellsMergeVerticallyIcon,\n changeManuallyIcon: changeManuallyIcon,\n chartAreaClusteredIcon: chartAreaClusteredIcon,\n chartAreaRangeIcon: chartAreaRangeIcon,\n chartAreaStacked100Icon: chartAreaStacked100Icon,\n chartAreaStackedIcon: chartAreaStackedIcon,\n chartBarClusteredIcon: chartBarClusteredIcon,\n chartBarRangeIcon: chartBarRangeIcon,\n chartBarStacked100Icon: chartBarStacked100Icon,\n chartBarStackedIcon: chartBarStackedIcon,\n chartBubbleIcon: chartBubbleIcon,\n chartCandlestickIcon: chartCandlestickIcon,\n chartChoroplethIcon: chartChoroplethIcon,\n chartColumnClusteredIcon: chartColumnClusteredIcon,\n chartColumnRangeIcon: chartColumnRangeIcon,\n chartColumnStacked100Icon: chartColumnStacked100Icon,\n chartColumnStackedIcon: chartColumnStackedIcon,\n chartDoughnutIcon: chartDoughnutIcon,\n chartLineIcon: chartLineIcon,\n chartLineMarkersIcon: chartLineMarkersIcon,\n chartLineStacked100Icon: chartLineStacked100Icon,\n chartLineStacked100MarkersIcon: chartLineStacked100MarkersIcon,\n chartLineStackedIcon: chartLineStackedIcon,\n chartLineStackedMarkersIcon: chartLineStackedMarkersIcon,\n chartOhlcIcon: chartOhlcIcon,\n chartPieIcon: chartPieIcon,\n chartRadarFilledIcon: chartRadarFilledIcon,\n chartRadarIcon: chartRadarIcon,\n chartRadarMarkersIcon: chartRadarMarkersIcon,\n chartRoseIcon: chartRoseIcon,\n chartScatterIcon: chartScatterIcon,\n chartScatterSmoothLinesIcon: chartScatterSmoothLinesIcon,\n chartScatterSmoothLinesMarkersIcon: chartScatterSmoothLinesMarkersIcon,\n chartScatterStraightLinesIcon: chartScatterStraightLinesIcon,\n chartScatterStraightLinesMarkersIcon: chartScatterStraightLinesMarkersIcon,\n checkCircleIcon: checkCircleIcon,\n checkIcon: checkIcon,\n checkOutlineIcon: checkOutlineIcon,\n checkboxCheckedIcon: checkboxCheckedIcon,\n checkboxIcon: checkboxIcon,\n checkboxIndeterminateIcon: checkboxIndeterminateIcon,\n checkboxNullIcon: checkboxNullIcon,\n chevronDoubleDownIcon: chevronDoubleDownIcon,\n chevronDoubleLeftIcon: chevronDoubleLeftIcon,\n chevronDoubleRightIcon: chevronDoubleRightIcon,\n chevronDoubleUpIcon: chevronDoubleUpIcon,\n chevronDownIcon: chevronDownIcon,\n chevronLeftIcon: chevronLeftIcon,\n chevronRightIcon: chevronRightIcon,\n chevronUpIcon: chevronUpIcon,\n circleIcon: circleIcon,\n clearCssIcon: clearCssIcon,\n clipboardCodeIcon: clipboardCodeIcon,\n clipboardHtmlIcon: clipboardHtmlIcon,\n clipboardIcon: clipboardIcon,\n clipboardMarkdownIcon: clipboardMarkdownIcon,\n clipboardTextIcon: clipboardTextIcon,\n clipboardWordAltIcon: clipboardWordAltIcon,\n clipboardWordIcon: clipboardWordIcon,\n clockArrowRotateIcon: clockArrowRotateIcon,\n clockIcon: clockIcon,\n closedCaptionsIcon: closedCaptionsIcon,\n cloudIcon: cloudIcon,\n codeIcon: codeIcon,\n codeSnippetIcon: codeSnippetIcon,\n colResizeIcon: colResizeIcon,\n columnFreezeIcon: columnFreezeIcon,\n columnsIcon: columnsIcon,\n commentIcon: commentIcon,\n commentRemoveIcon: commentRemoveIcon,\n commentsRemoveIcon: commentsRemoveIcon,\n connectorIcon: connectorIcon,\n convertLowercaseIcon: convertLowercaseIcon,\n convertUppercaseIcon: convertUppercaseIcon,\n copyFormatIcon: copyFormatIcon,\n copyIcon: copyIcon,\n cropIcon: cropIcon,\n crosstabIcon: crosstabIcon,\n crosstabWizardIcon: crosstabWizardIcon,\n csIcon: csIcon,\n csprojIcon: csprojIcon,\n css3Icon: css3Icon,\n cssIcon: cssIcon,\n customFormatIcon: customFormatIcon,\n customIconIcon: customIconIcon,\n cutIcon: cutIcon,\n dataCsvIcon: dataCsvIcon,\n dataIcon: dataIcon,\n dataJsonIcon: dataJsonIcon,\n dataOdsIcon: dataOdsIcon,\n dataRestIcon: dataRestIcon,\n dataSdsIcon: dataSdsIcon,\n dataSqlIcon: dataSqlIcon,\n dataWebIcon: dataWebIcon,\n decimalDecreaseIcon: decimalDecreaseIcon,\n decimalIncreaseIcon: decimalIncreaseIcon,\n decreaseHorizontalSpacingIcon: decreaseHorizontalSpacingIcon,\n decreaseVerticalSpacingIcon: decreaseVerticalSpacingIcon,\n deliciousBoxIcon: deliciousBoxIcon,\n deliciousIcon: deliciousIcon,\n detailSectionIcon: detailSectionIcon,\n diggBoxIcon: diggBoxIcon,\n diggIcon: diggIcon,\n dimensionsIcon: dimensionsIcon,\n displayBlockIcon: displayBlockIcon,\n displayFlexIcon: displayFlexIcon,\n displayInlineBlockIcon: displayInlineBlockIcon,\n displayInlineFlexIcon: displayInlineFlexIcon,\n divIcon: divIcon,\n divideIcon: divideIcon,\n documentManagerIcon: documentManagerIcon,\n dollarIcon: dollarIcon,\n downloadIcon: downloadIcon,\n downloadLightIcon: downloadLightIcon,\n dragAndDropIcon: dragAndDropIcon,\n dribbbleBoxIcon: dribbbleBoxIcon,\n dribbbleIcon: dribbbleIcon,\n dropletIcon: dropletIcon,\n dropletSlashIcon: dropletSlashIcon,\n dropletSliderIcon: dropletSliderIcon,\n editToolsIcon: editToolsIcon,\n envelopBoxIcon: envelopBoxIcon,\n envelopIcon: envelopIcon,\n envelopLinkIcon: envelopLinkIcon,\n envelopeBoxIcon: envelopeBoxIcon,\n envelopeIcon: envelopeIcon,\n envelopeLinkIcon: envelopeLinkIcon,\n equalIcon: equalIcon,\n exclamationCircleIcon: exclamationCircleIcon,\n exeIcon: exeIcon,\n exportIcon: exportIcon,\n eyeIcon: eyeIcon,\n eyeSlashIcon: eyeSlashIcon,\n eyedropperIcon: eyedropperIcon,\n facebookBoxIcon: facebookBoxIcon,\n facebookIcon: facebookIcon,\n fileAddIcon: fileAddIcon,\n fileAscxIcon: fileAscxIcon,\n fileAudioIcon: fileAudioIcon,\n fileBacIcon: fileBacIcon,\n fileConfigIcon: fileConfigIcon,\n fileCsvIcon: fileCsvIcon,\n fileDataIcon: fileDataIcon,\n fileDiscImageIcon: fileDiscImageIcon,\n fileErrorIcon: fileErrorIcon,\n fileExcelIcon: fileExcelIcon,\n fileFlashIcon: fileFlashIcon,\n fileFooterIcon: fileFooterIcon,\n fileHeaderIcon: fileHeaderIcon,\n fileHorizontalIcon: fileHorizontalIcon,\n fileIcon: fileIcon,\n fileImageIcon: fileImageIcon,\n fileMdbIcon: fileMdbIcon,\n filePdfIcon: filePdfIcon,\n filePptIcon: filePptIcon,\n filePresentationIcon: filePresentationIcon,\n fileProgrammingIcon: fileProgrammingIcon,\n filePsdIcon: filePsdIcon,\n fileReportIcon: fileReportIcon,\n fileTxtIcon: fileTxtIcon,\n fileTypescriptIcon: fileTypescriptIcon,\n fileVideoIcon: fileVideoIcon,\n fileWordIcon: fileWordIcon,\n fileWrenchIcon: fileWrenchIcon,\n fileZipIcon: fileZipIcon,\n filesErrorIcon: filesErrorIcon,\n filmIcon: filmIcon,\n filterAddExpressionIcon: filterAddExpressionIcon,\n filterAddGroupIcon: filterAddGroupIcon,\n filterClearIcon: filterClearIcon,\n filterIcon: filterIcon,\n filterSmallIcon: filterSmallIcon,\n filterSortAscSmallIcon: filterSortAscSmallIcon,\n filterSortDescSmallIcon: filterSortDescSmallIcon,\n flashManagerIcon: flashManagerIcon,\n flipHorizontalIcon: flipHorizontalIcon,\n flipVerticalIcon: flipVerticalIcon,\n folderAddIcon: folderAddIcon,\n folderIcon: folderIcon,\n folderMoreIcon: folderMoreIcon,\n folderOpenIcon: folderOpenIcon,\n folderUpIcon: folderUpIcon,\n fontFamilyIcon: fontFamilyIcon,\n fontGrowIcon: fontGrowIcon,\n fontShrinkIcon: fontShrinkIcon,\n fontSizeIcon: fontSizeIcon,\n foregroundColorIcon: foregroundColorIcon,\n formElementIcon: formElementIcon,\n formIcon: formIcon,\n formatCodeBlockIcon: formatCodeBlockIcon,\n formulaFxIcon: formulaFxIcon,\n forwardIcon: forwardIcon,\n fullscreenExitIcon: fullscreenExitIcon,\n fullscreenIcon: fullscreenIcon,\n gapColumnIcon: gapColumnIcon,\n gapRowIcon: gapRowIcon,\n gaugeLinearIcon: gaugeLinearIcon,\n gaugeRadialIcon: gaugeRadialIcon,\n gearIcon: gearIcon,\n gearsIcon: gearsIcon,\n globeIcon: globeIcon,\n globeLinkIcon: globeLinkIcon,\n globeOutlineIcon: globeOutlineIcon,\n globeUnlinkIcon: globeUnlinkIcon,\n googleBoxIcon: googleBoxIcon,\n googleIcon: googleIcon,\n googlePlusBoxIcon: googlePlusBoxIcon,\n googlePlusIcon: googlePlusIcon,\n graphIcon: graphIcon,\n grayscaleIcon: grayscaleIcon,\n greaterOrEqualIcon: greaterOrEqualIcon,\n gridIcon: gridIcon,\n gridLayoutIcon: gridLayoutIcon,\n groupBoxIcon: groupBoxIcon,\n groupCollectionIcon: groupCollectionIcon,\n groupFooterSectionIcon: groupFooterSectionIcon,\n groupHeaderSectionIcon: groupHeaderSectionIcon,\n groupIcon: groupIcon,\n groupSectionIcon: groupSectionIcon,\n h1Icon: h1Icon,\n h2Icon: h2Icon,\n h3Icon: h3Icon,\n h4Icon: h4Icon,\n h5Icon: h5Icon,\n h6Icon: h6Icon,\n handIcon: handIcon,\n handleDragIcon: handleDragIcon,\n handleResizeAltIcon: handleResizeAltIcon,\n handleResizeIcon: handleResizeIcon,\n hdIcon: hdIcon,\n heartIcon: heartIcon,\n heartOutlineIcon: heartOutlineIcon,\n homeIcon: homeIcon,\n horizontalRuleIcon: horizontalRuleIcon,\n html5Icon: html5Icon,\n hyperlinkOpenIcon: hyperlinkOpenIcon,\n hyperlinkOpenSmIcon: hyperlinkOpenSmIcon,\n imageAbsolutePositionIcon: imageAbsolutePositionIcon,\n imageAddIcon: imageAddIcon,\n imageEditIcon: imageEditIcon,\n imageExportIcon: imageExportIcon,\n imageIcon: imageIcon,\n imageMapEditorIcon: imageMapEditorIcon,\n imageResizeIcon: imageResizeIcon,\n imagesIcon: imagesIcon,\n importIcon: importIcon,\n inboxIcon: inboxIcon,\n increaseHorizontalSpacingIcon: increaseHorizontalSpacingIcon,\n increaseVerticalSpacingIcon: increaseVerticalSpacingIcon,\n indentIcon: indentIcon,\n infoCircleIcon: infoCircleIcon,\n infoSolidIcon: infoSolidIcon,\n inheritedIcon: inheritedIcon,\n insertBottomIcon: insertBottomIcon,\n insertMiddleIcon: insertMiddleIcon,\n insertTopIcon: insertTopIcon,\n invertColorsIcon: invertColorsIcon,\n italicIcon: italicIcon,\n jsIcon: jsIcon,\n justifyContentAroundAltIcon: justifyContentAroundAltIcon,\n justifyContentAroundIcon: justifyContentAroundIcon,\n justifyContentBetweenAltIcon: justifyContentBetweenAltIcon,\n justifyContentBetweenIcon: justifyContentBetweenIcon,\n justifyContentCenterAltIcon: justifyContentCenterAltIcon,\n justifyContentCenterIcon: justifyContentCenterIcon,\n justifyContentEndAltIcon: justifyContentEndAltIcon,\n justifyContentEndIcon: justifyContentEndIcon,\n justifyContentStartAltIcon: justifyContentStartAltIcon,\n justifyContentStartIcon: justifyContentStartIcon,\n kpiStatusDenyIcon: kpiStatusDenyIcon,\n kpiStatusHoldIcon: kpiStatusHoldIcon,\n kpiStatusOpenIcon: kpiStatusOpenIcon,\n launchIcon: launchIcon,\n layout1By4Icon: layout1By4Icon,\n layout2By2Icon: layout2By2Icon,\n layoutIcon: layoutIcon,\n layoutSideBySideIcon: layoutSideBySideIcon,\n layoutStackedIcon: layoutStackedIcon,\n lessOrEqualIcon: lessOrEqualIcon,\n letterSpaceIcon: letterSpaceIcon,\n levelDownIcon: levelDownIcon,\n levelToTopIcon: levelToTopIcon,\n levelUpIcon: levelUpIcon,\n lineHeightIcon: lineHeightIcon,\n linkAddIcon: linkAddIcon,\n linkIcon: linkIcon,\n linkVerticalIcon: linkVerticalIcon,\n linkedinBoxIcon: linkedinBoxIcon,\n linkedinIcon: linkedinIcon,\n listLatinBigIcon: listLatinBigIcon,\n listLatinSmallIcon: listLatinSmallIcon,\n listOrderedIcon: listOrderedIcon,\n listRomanBigIcon: listRomanBigIcon,\n listRomanLowerIcon: listRomanLowerIcon,\n listRomanSmallIcon: listRomanSmallIcon,\n listRomanUpperIcon: listRomanUpperIcon,\n listUnorderedIcon: listUnorderedIcon,\n listUnorderedOutlineIcon: listUnorderedOutlineIcon,\n listUnorderedSquareIcon: listUnorderedSquareIcon,\n lockIcon: lockIcon,\n loginIcon: loginIcon,\n logoutIcon: logoutIcon,\n makeHorizontalSpacingEqualIcon: makeHorizontalSpacingEqualIcon,\n makeSameHeightIcon: makeSameHeightIcon,\n makeSameSizeIcon: makeSameSizeIcon,\n makeSameWidthIcon: makeSameWidthIcon,\n makeVerticalSpacingEqualIcon: makeVerticalSpacingEqualIcon,\n mapMarkerIcon: mapMarkerIcon,\n mapMarkerTargetIcon: mapMarkerTargetIcon,\n maxHeightIcon: maxHeightIcon,\n maxWidthIcon: maxWidthIcon,\n mediaManagerIcon: mediaManagerIcon,\n menuIcon: menuIcon,\n minHeightIcon: minHeightIcon,\n minWidthIcon: minWidthIcon,\n minusCircleIcon: minusCircleIcon,\n minusIcon: minusIcon,\n minusOutlineIcon: minusOutlineIcon,\n minusSmIcon: minusSmIcon,\n mirrorIcon: mirrorIcon,\n moreHorizontalIcon: moreHorizontalIcon,\n moreVerticalIcon: moreVerticalIcon,\n musicNotesIcon: musicNotesIcon,\n myspaceBoxIcon: myspaceBoxIcon,\n myspaceIcon: myspaceIcon,\n nonRecurrenceIcon: nonRecurrenceIcon,\n notEqualIcon: notEqualIcon,\n outdentIcon: outdentIcon,\n outlineOffsetIcon: outlineOffsetIcon,\n outlineWidthIcon: outlineWidthIcon,\n overlapIcon: overlapIcon,\n paddingBottomIcon: paddingBottomIcon,\n paddingIcon: paddingIcon,\n paddingLeftIcon: paddingLeftIcon,\n paddingRightIcon: paddingRightIcon,\n paddingTopIcon: paddingTopIcon,\n pageFooterSectionIcon: pageFooterSectionIcon,\n pageHeaderSectionIcon: pageHeaderSectionIcon,\n paletteIcon: paletteIcon,\n paneFreezeIcon: paneFreezeIcon,\n paperPlaneIcon: paperPlaneIcon,\n paperclipAltIcon: paperclipAltIcon,\n paperclipIcon: paperclipIcon,\n paragraphAddIcon: paragraphAddIcon,\n paragraphHeightIcon: paragraphHeightIcon,\n paragraphMarkIcon: paragraphMarkIcon,\n parameterBooleanIcon: parameterBooleanIcon,\n parameterDateTimeIcon: parameterDateTimeIcon,\n parameterFloatIcon: parameterFloatIcon,\n parameterIntegerIcon: parameterIntegerIcon,\n parameterStringIcon: parameterStringIcon,\n parametersByteArrayIcon: parametersByteArrayIcon,\n parametersIcon: parametersIcon,\n parametersUnknownIcon: parametersUnknownIcon,\n passwordIcon: passwordIcon,\n pauseIcon: pauseIcon,\n pauseSmIcon: pauseSmIcon,\n pencilIcon: pencilIcon,\n percentIcon: percentIcon,\n photosIcon: photosIcon,\n pinIcon: pinIcon,\n pinterestBoxIcon: pinterestBoxIcon,\n pinterestIcon: pinterestIcon,\n playIcon: playIcon,\n playSmIcon: playSmIcon,\n playlistIcon: playlistIcon,\n plusCircleIcon: plusCircleIcon,\n plusIcon: plusIcon,\n plusOutlineIcon: plusOutlineIcon,\n plusSmIcon: plusSmIcon,\n pointerIcon: pointerIcon,\n positionBottomIcon: positionBottomIcon,\n positionLeftIcon: positionLeftIcon,\n positionRightIcon: positionRightIcon,\n positionTopIcon: positionTopIcon,\n printIcon: printIcon,\n puzzlePieceIcon: puzzlePieceIcon,\n qrCodeIcon: qrCodeIcon,\n qrCodeOutlineIcon: qrCodeOutlineIcon,\n qrCodeScannerIcon: qrCodeScannerIcon,\n questionCircleIcon: questionCircleIcon,\n radiobuttonCheckedIcon: radiobuttonCheckedIcon,\n radiobuttonIcon: radiobuttonIcon,\n redditBoxIcon: redditBoxIcon,\n redditIcon: redditIcon,\n redoIcon: redoIcon,\n regularExpressionIcon: regularExpressionIcon,\n removeHorizontalSpacingIcon: removeHorizontalSpacingIcon,\n removeVerticalSpacingIcon: removeVerticalSpacingIcon,\n reorderIcon: reorderIcon,\n replaceAllIcon: replaceAllIcon,\n replaceSingleIcon: replaceSingleIcon,\n reportElementIcon: reportElementIcon,\n rewindIcon: rewindIcon,\n rightDoubleQuotesIcon: rightDoubleQuotesIcon,\n rotateIcon: rotateIcon,\n rotateLeftIcon: rotateLeftIcon,\n rotateRightIcon: rotateRightIcon,\n roundCornersIcon: roundCornersIcon,\n rowFreezeIcon: rowFreezeIcon,\n rowsIcon: rowsIcon,\n rssBoxIcon: rssBoxIcon,\n rssIcon: rssIcon,\n saveIcon: saveIcon,\n searchIcon: searchIcon,\n selectAllIcon: selectAllIcon,\n selectBoxIcon: selectBoxIcon,\n setColumnPositionIcon: setColumnPositionIcon,\n shapeLineIcon: shapeLineIcon,\n shapesIcon: shapesIcon,\n shareIcon: shareIcon,\n sharpenIcon: sharpenIcon,\n signatureIcon: signatureIcon,\n silverlightIcon: silverlightIcon,\n sizeToGridIcon: sizeToGridIcon,\n slidersIcon: slidersIcon,\n slnIcon: slnIcon,\n snapGridIcon: snapGridIcon,\n snapToGridlinesIcon: snapToGridlinesIcon,\n snapToSnaplinesIcon: snapToSnaplinesIcon,\n sortAscIcon: sortAscIcon,\n sortAscSmallIcon: sortAscSmallIcon,\n sortClearIcon: sortClearIcon,\n sortDescIcon: sortDescIcon,\n sortDescSmallIcon: sortDescSmallIcon,\n sparklesIcon: sparklesIcon,\n spellCheckerIcon: spellCheckerIcon,\n starIcon: starIcon,\n starOutlineIcon: starOutlineIcon,\n stickIcon: stickIcon,\n stopIcon: stopIcon,\n stopSmIcon: stopSmIcon,\n strikethroughIcon: strikethroughIcon,\n stripAllFormattingIcon: stripAllFormattingIcon,\n stripCssFormatIcon: stripCssFormatIcon,\n stripFontElementsIcon: stripFontElementsIcon,\n stripSpanElementsIcon: stripSpanElementsIcon,\n stripWordFormattingIcon: stripWordFormattingIcon,\n stumbleUponBoxIcon: stumbleUponBoxIcon,\n stumbleUponIcon: stumbleUponIcon,\n subreportIcon: subreportIcon,\n subscriptIcon: subscriptIcon,\n sumIcon: sumIcon,\n supscriptIcon: supscriptIcon,\n symbolIcon: symbolIcon,\n tableAddIcon: tableAddIcon,\n tableAlignBottomCenterIcon: tableAlignBottomCenterIcon,\n tableAlignBottomLeftIcon: tableAlignBottomLeftIcon,\n tableAlignBottomRightIcon: tableAlignBottomRightIcon,\n tableAlignMiddleCenterIcon: tableAlignMiddleCenterIcon,\n tableAlignMiddleLeftIcon: tableAlignMiddleLeftIcon,\n tableAlignMiddleRightIcon: tableAlignMiddleRightIcon,\n tableAlignRemoveIcon: tableAlignRemoveIcon,\n tableAlignTopCenterIcon: tableAlignTopCenterIcon,\n tableAlignTopLeftIcon: tableAlignTopLeftIcon,\n tableAlignTopRightIcon: tableAlignTopRightIcon,\n tableBodyIcon: tableBodyIcon,\n tableCellDeleteIcon: tableCellDeleteIcon,\n tableCellIcon: tableCellIcon,\n tableCellPropertiesIcon: tableCellPropertiesIcon,\n tableColumnDeleteIcon: tableColumnDeleteIcon,\n tableColumnGroupsIcon: tableColumnGroupsIcon,\n tableColumnInsertLeftIcon: tableColumnInsertLeftIcon,\n tableColumnInsertRightIcon: tableColumnInsertRightIcon,\n tableCornerIcon: tableCornerIcon,\n tableDeleteIcon: tableDeleteIcon,\n tableIcon: tableIcon,\n tablePositionCenterIcon: tablePositionCenterIcon,\n tablePositionEndIcon: tablePositionEndIcon,\n tablePositionStartIcon: tablePositionStartIcon,\n tablePropertiesIcon: tablePropertiesIcon,\n tableRowDeleteIcon: tableRowDeleteIcon,\n tableRowGroupsIcon: tableRowGroupsIcon,\n tableRowInsertAboveIcon: tableRowInsertAboveIcon,\n tableRowInsertBelowIcon: tableRowInsertBelowIcon,\n tableUnmergeIcon: tableUnmergeIcon,\n tableWizardIcon: tableWizardIcon,\n tellAFriendBoxIcon: tellAFriendBoxIcon,\n tellAFriendIcon: tellAFriendIcon,\n templateManagerIcon: templateManagerIcon,\n textClipIcon: textClipIcon,\n textOverflowIcon: textOverflowIcon,\n textTruncateIcon: textTruncateIcon,\n textWrapArrowIcon: textWrapArrowIcon,\n textWrapIcon: textWrapIcon,\n textareaIcon: textareaIcon,\n textboxHiddenIcon: textboxHiddenIcon,\n textboxIcon: textboxIcon,\n thumbDownIcon: thumbDownIcon,\n thumbDownOutlineIcon: thumbDownOutlineIcon,\n thumbUpIcon: thumbUpIcon,\n thumbUpOutlineIcon: thumbUpOutlineIcon,\n thumbnailsDownIcon: thumbnailsDownIcon,\n thumbnailsLeftIcon: thumbnailsLeftIcon,\n thumbnailsRightIcon: thumbnailsRightIcon,\n thumbnailsUpIcon: thumbnailsUpIcon,\n tocSectionIcon: tocSectionIcon,\n tocSectionLevelIcon: tocSectionLevelIcon,\n toggleFullScreenModeIcon: toggleFullScreenModeIcon,\n toolbarFloatIcon: toolbarFloatIcon,\n trackChangesAcceptAllIcon: trackChangesAcceptAllIcon,\n trackChangesAcceptIcon: trackChangesAcceptIcon,\n trackChangesEnableIcon: trackChangesEnableIcon,\n trackChangesIcon: trackChangesIcon,\n trackChangesRejectAllIcon: trackChangesRejectAllIcon,\n trackChangesRejectIcon: trackChangesRejectIcon,\n transparencyIcon: transparencyIcon,\n trashIcon: trashIcon,\n tumblrBoxIcon: tumblrBoxIcon,\n tumblrIcon: tumblrIcon,\n twitterBoxIcon: twitterBoxIcon,\n twitterIcon: twitterIcon,\n underlineIcon: underlineIcon,\n undoIcon: undoIcon,\n ungroupIcon: ungroupIcon,\n unlinkIcon: unlinkIcon,\n unlinkVerticalIcon: unlinkVerticalIcon,\n unlockIcon: unlockIcon,\n unpinIcon: unpinIcon,\n unstickIcon: unstickIcon,\n uploadIcon: uploadIcon,\n userIcon: userIcon,\n userOutlineIcon: userOutlineIcon,\n validationDataIcon: validationDataIcon,\n validationXhtmlIcon: validationXhtmlIcon,\n vbIcon: vbIcon,\n vbprojIcon: vbprojIcon,\n videoExternalIcon: videoExternalIcon,\n vimeoBoxIcon: vimeoBoxIcon,\n vimeoIcon: vimeoIcon,\n volumeDownIcon: volumeDownIcon,\n volumeMuteIcon: volumeMuteIcon,\n volumeUpIcon: volumeUpIcon,\n warningCircleIcon: warningCircleIcon,\n warningTriangleIcon: warningTriangleIcon,\n wholeWordIcon: wholeWordIcon,\n windowIcon: windowIcon,\n windowMinimizeIcon: windowMinimizeIcon,\n windowRestoreIcon: windowRestoreIcon,\n wrenchIcon: wrenchIcon,\n xCircleIcon: xCircleIcon,\n xIcon: xIcon,\n xOutlineIcon: xOutlineIcon,\n yammerBoxIcon: yammerBoxIcon,\n yammerIcon: yammerIcon,\n youtubeBoxIcon: youtubeBoxIcon,\n youtubeIcon: youtubeIcon,\n zoomActualSizeIcon: zoomActualSizeIcon,\n zoomBestFitIcon: zoomBestFitIcon,\n zoomInIcon: zoomInIcon,\n zoomOutIcon: zoomOutIcon\n });\n\n var __meta__$I = {\n id: \"icons\",\n name: \"Icons\",\n category: \"web\",\n description: \"The Icons set provides both FontIcon and SvgIcon components along with the SVG icons collection from @progress/kendo-svg-icons\",\n depends: [\"core\", \"html.icon\"]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n html = kendo.html,\n ui = kendo.ui,\n Widget = ui.Widget,\n extend = $.extend;\n\n var FontIcon = Widget.extend({\n init: function(element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n\n delete options.name;\n that._icon = new html.HTMLFontIcon(element, $.extend({}, options));\n that.element = that.wrapper = that._icon.element;\n\n kendo.notify(that);\n },\n options: extend({}, html.HTMLFontIcon.fn.options, {\n name: 'FontIcon'\n }),\n setOptions: function(options) {\n var that = this;\n\n Widget.fn.setOptions.call(that, options);\n\n that._icon = new html.HTMLFontIcon(that.element, $.extend({}, that.options));\n }\n });\n\n var SvgIcon = Widget.extend({\n init: function(element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n\n delete options.name;\n that._icon = new html.HTMLSvgIcon(element, $.extend({}, options));\n that.element = that.wrapper = that._icon.element;\n\n kendo.notify(that);\n },\n options: extend({}, html.HTMLSvgIcon.fn.options, {\n name: 'SvgIcon'\n }),\n setOptions: function(options) {\n var that = this;\n\n Widget.fn.setOptions.call(that, options);\n\n if (options.icon) {\n this.element.html('');\n }\n\n that._icon = new html.HTMLSvgIcon(that.element, $.extend({}, that.options));\n }\n });\n\n kendo.ui.plugin(FontIcon);\n kendo.ui.plugin(SvgIcon);\n\n kendo.setDefaults('iconType', 'svg');\n kendo.ui.svgIcons = svgIcons;\n kendo.ui.icon = html.renderIcon;\n })(window.kendo.jQuery);\n var kendo$I = kendo;\n\n var __meta__$H = {\n id: \"tooltip\",\n name: \"Tooltip\",\n category: \"web\",\n description: \"The Tooltip widget displays a popup hint for a given html element.\",\n depends: [ \"core\", \"popup\", \"icons\" ],\n features: [ {\n id: \"tooltip-fx\",\n name: \"Animation\",\n description: \"Support for animation\",\n depends: [ \"fx\" ]\n } ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n Popup = kendo.ui.Popup,\n isFunction = kendo.isFunction,\n isPlainObject = $.isPlainObject,\n extend = $.extend,\n DOCUMENT = $(document),\n isLocalUrl = kendo.isLocalUrl,\n ARIAIDSUFFIX = \"_tb_active\",\n DESCRIBEDBY = \"aria-describedby\",\n SHOW = \"show\",\n HIDE = \"hide\",\n ERROR = \"error\",\n CONTENTLOAD = \"contentLoad\",\n REQUESTSTART = \"requestStart\",\n KCONTENTFRAME = \"k-content-frame\",\n TEMPLATE = ({ autoHide, callout, dir }) =>\n `
    ` +\n '
    ' +\n (!autoHide ? `
    ${kendo.ui.icon($(''), { icon: \"x\" })}
    ` : '') +\n (callout ? `
    ` : '') +\n '
    ',\n IFRAMETEMPLATE = kendo.template(({ content }) =>\n `\"\n ),\n NS = \".kendoTooltip\",\n POSITIONS = {\n bottom: {\n origin: \"bottom center\",\n position: \"top center\"\n },\n top: {\n origin: \"top center\",\n position: \"bottom center\"\n },\n left: {\n origin: \"center left\",\n position: \"center right\",\n collision: \"fit flip\"\n },\n right: {\n origin: \"center right\",\n position: \"center left\",\n collision: \"fit flip\"\n },\n center: {\n position: \"center center\",\n origin: \"center center\"\n }\n },\n REVERSE = {\n \"top\": \"bottom\",\n \"bottom\": \"top\",\n \"left\": \"right\",\n \"right\": \"left\",\n \"center\": \"center\"\n },\n DIRCLASSES = {\n bottom: \"n\",\n top: \"s\",\n left: \"e\",\n right: \"w\",\n center: \"n\"\n },\n DIMENSIONS = {\n \"horizontal\": { offset: \"top\", size: \"outerHeight\" },\n \"vertical\": { offset: \"left\", size: \"outerWidth\" }\n },\n DEFAULTCONTENT = function(e) {\n return e.target.data(kendo.ns + \"title\");\n };\n\n function restoreTitle(element) {\n while (element.length) {\n if (restoreTitleAttributeForElement(element)) {\n break;\n }\n element = element.parent();\n }\n }\n\n function restoreTitleAttributeForElement(element) {\n var title = element.data(kendo.ns + \"title\");\n if (title) {\n element.attr(\"title\", title);\n element.removeData(kendo.ns + \"title\");\n return true;\n }\n }\n\n function saveTitleAttributeForElement(element) {\n var title = element.attr(\"title\");\n if (title) {\n element.data(kendo.ns + \"title\", title);\n element.attr(\"title\", \"\");\n return true;\n }\n }\n\n function saveTitleAttributes(element) {\n while (element.length && !element.is(\"body\")) {\n if (saveTitleAttributeForElement(element)) {\n break;\n }\n element = element.parent();\n }\n }\n\n var TooltipBase = Widget.extend({\n init: function(element, options) {\n var that = this,\n axis;\n\n Widget.fn.init.call(that, element, options);\n\n axis = that.options.position.match(/left|right/) ? \"horizontal\" : \"vertical\";\n\n that.dimensions = DIMENSIONS[axis];\n\n if (kendo.support.touch && this._isShownOnMouseEnter()) {\n that.element.on(kendo.support.mousedown + NS, that.options.filter, that._showOn.bind(that));\n }\n\n that.element.on(that.options.showOn + NS, that.options.filter, that._showOn.bind(that));\n\n if (that.options.showOn === \"click\") {\n that.element.on(\"keydown\" + NS, that.options.filter, that._keydown.bind(that));\n }\n },\n\n options: {\n name: \"TooltipBase\",\n filter: \"\",\n offset: 0,\n showAfter: 100,\n hideAfter: 100,\n callout: true,\n position: \"bottom\",\n showOn: \"mouseenter\",\n animation: {\n open: {\n effects: \"fade:in\",\n duration: 0\n },\n close: {\n duration: 40,\n hide: true\n }\n }\n },\n\n destroy: function() {\n var popup = this.popup;\n\n if (popup) {\n popup.element.off(NS);\n popup.destroy();\n }\n\n clearTimeout(this.timeout);\n\n Widget.fn.destroy.call(this);\n },\n\n hide: function() {\n if (this.popup) {\n this.popup.close();\n }\n },\n\n show: function(target) {\n target = target || this.element;\n\n this._saveTitle(target);\n this._show(target);\n },\n\n target: function() {\n if (this.popup) {\n return this.popup.options.anchor;\n }\n return null;\n },\n\n _keydown: function(e) {\n var currentTarget = $(e.currentTarget);\n\n if (e.keyCode == kendo.keys.ENTER) {\n this._show(currentTarget);\n }\n },\n\n _showOn: function(e) {\n var that = this;\n\n var currentTarget = $(e.currentTarget);\n if (that._isShownOnClick() && !that._isShownOnMouseEnter()) {\n that._show(currentTarget);\n } else if (that._isShownOnFocus()) {\n that._saveTitle(currentTarget);\n that._show(currentTarget);\n } else {\n clearTimeout(that.timeout);\n\n that.timeout = setTimeout(function() {\n that._show(currentTarget);\n }, that.options.showAfter);\n }\n },\n\n _isShownOnFocus: function() {\n return this.options.showOn && this.options.showOn.match(/focus/);\n },\n\n _isShownOnMouseEnter: function() {\n return this.options.showOn && this.options.showOn.match(/mouseenter/);\n },\n\n _isShownOnClick: function() {\n return this.options.showOn && this.options.showOn.match(/click/);\n },\n\n _recalculatePopupDimensions: function() {\n var that = this;\n that.popup.wrapper.css(\"height\", kendo._outerHeight(that.popup.element) + \"px\");\n that.popup.wrapper.css(\"width\", kendo._outerWidth(that.popup.element) + \"px\");\n that.popup.position();\n that._positionCallout();\n },\n\n _positionCallout: function() {\n var that = this,\n position = that.options.position,\n dimensions = that.dimensions,\n offset = dimensions.offset,\n popup = that.popup,\n anchor = popup.options.anchor,\n anchorOffset = $(anchor).offset(),\n elementOffset = $(popup.element).offset(),\n cssClass = DIRCLASSES[popup.flipped ? REVERSE[position] : position],\n offsetAmount = anchorOffset[offset] - elementOffset[offset] + ($(anchor)[dimensions.size]() / 2);\n\n that._offset(position, that.options.offset);\n\n that.arrow\n .removeClass(\"k-callout-n k-callout-s k-callout-w k-callout-e\")\n .addClass(\"k-callout-\" + cssClass)\n .css(offset, offsetAmount);\n },\n\n _offset: function(position, offsetAmount, arrowWidth) {\n var that = this,\n isTopLeft = position == \"top\" || position == \"left\",\n isFlipped = that.popup.flipped,\n direction = (isTopLeft && isFlipped) || (!isTopLeft && !isFlipped) ? 1 : -1,\n marginRule = isTopLeft ? \"margin-\" + position : \"margin-\" + REVERSE[position],\n offset = ((arrowWidth || kendo._outerWidth(that.arrow)) / 2) + offsetAmount;\n\n that.popup.wrapper.css(marginRule, offset * direction + \"px\");\n },\n\n _addDescribedBy: function() {\n var that = this,\n anchor = that.popup.options.anchor,\n ariaId = anchor[0].id || that.element[0].id || kendo.guid(),\n describedBy = [];\n\n if (anchor.attr(DESCRIBEDBY)) {\n describedBy.push(anchor.attr(DESCRIBEDBY));\n }\n\n if (ariaId) {\n describedBy.push(ariaId + ARIAIDSUFFIX);\n anchor.attr(DESCRIBEDBY, describedBy.join(\" \"));\n that.popup.element.attr(\"id\", ariaId + ARIAIDSUFFIX);\n }\n\n },\n\n _removeDescribedBy: function(target) {\n var tooltipId = this.popup.element.attr(\"id\"),\n currentDescribedBy = target.attr(DESCRIBEDBY),\n arrayAttr, finalArray, finalDescribedbyAttr;\n\n if (!currentDescribedBy) {\n return;\n }\n\n arrayAttr = currentDescribedBy.split(\" \");\n\n if (arrayAttr && arrayAttr.length > 0) {\n finalArray = arrayAttr.filter(function(val) {\n return val !== tooltipId;\n });\n }\n\n if (finalArray && finalArray.length > 0) {\n finalDescribedbyAttr = finalArray.join(\" \");\n target.attr(DESCRIBEDBY, finalDescribedbyAttr);\n } else {\n target.removeAttr(DESCRIBEDBY);\n }\n },\n\n _openPopup: function() {\n if (!this.popup) {\n return;\n }\n\n this.popup._hovered = true;\n this.popup._shouldCorrectWidth = false;\n this.popup.open();\n }\n });\n kendo.ui.plugin(TooltipBase);\n\n var Tooltip = TooltipBase.extend({\n init: function(element, options) {\n var that = this,\n axis;\n\n TooltipBase.fn.init.call(that, element, options);\n\n axis = that.options.position.match(/left|right/) ? \"horizontal\" : \"vertical\";\n\n that.dimensions = DIMENSIONS[axis];\n\n that._documentKeyDownHandler = that._documentKeyDown.bind(that);\n\n if (this._isShownOnMouseEnter() || this._isShownOnClick()) {\n that.element.on(\"mouseenter\" + NS, that.options.filter, that._mouseenter.bind(that));\n }\n\n if (this.options.autoHide && this._isShownOnMouseEnter() && this.options.position !== \"center\") {\n that.element.on(\"mouseleave\" + NS, that.options.filter, that._mouseleave.bind(that));\n }\n\n if (this.options.autoHide && this._isShownOnFocus()) {\n that.element.on(\"blur\" + NS, that.options.filter, that._blur.bind(that));\n }\n\n if (kendo.support.touch) {\n that.element.on(kendo.support.mousedown + NS, that.options.filter, that._mouseenter.bind(that));\n }\n },\n\n options: {\n name: \"Tooltip\",\n filter: \"\",\n content: DEFAULTCONTENT,\n showAfter: 100,\n callout: true,\n offset: 0,\n position: \"bottom\",\n showOn: \"mouseenter\",\n autoHide: true,\n width: null,\n height: null,\n animation: {\n open: {\n effects: \"fade:in\",\n duration: 0\n },\n close: {\n duration: 40,\n hide: true\n }\n }\n },\n\n events: [ SHOW, HIDE, CONTENTLOAD, ERROR, REQUESTSTART ],\n\n _mouseenter: function(e) {\n saveTitleAttributes($(e.currentTarget));\n },\n\n _saveTitle: function(target) {\n saveTitleAttributes(target);\n },\n\n _appendContent: function(target) {\n var that = this,\n contentOptions = that.options.content,\n element = that.content,\n showIframe = that.options.iframe,\n iframe;\n\n if (isPlainObject(contentOptions) && contentOptions.url) {\n if (!(\"iframe\" in that.options)) {\n showIframe = !isLocalUrl(contentOptions.url);\n }\n\n that.trigger(REQUESTSTART, { options: contentOptions, target: target });\n\n if (!showIframe) {\n element.empty();\n kendo.ui.progress(element, true);\n\n // perform AJAX request\n that._ajaxRequest(contentOptions);\n } else {\n element.hide();\n\n iframe = element.find(\".\" + KCONTENTFRAME)[0];\n\n if (iframe) {\n // refresh existing iframe\n iframe.src = contentOptions.url || iframe.src;\n } else {\n element.html(IFRAMETEMPLATE({ content: contentOptions }));\n }\n\n element.find(\".\" + KCONTENTFRAME)\n .off(\"load\" + NS)\n .on(\"load\" + NS, function() {\n that.trigger(CONTENTLOAD);\n element.show();\n });\n }\n } else if (contentOptions && isFunction(contentOptions)) {\n contentOptions = contentOptions({ sender: this, target: target });\n element.html(contentOptions || \"\");\n } else {\n element.html(contentOptions);\n }\n },\n\n _verifyContentLoaded() {\n var that = this,\n content = that.content,\n resources = content.find('[src]'),\n length = resources.length,\n loaded = 0;\n\n if (length === 0) {\n that._recalculatePopupDimensions();\n return;\n }\n\n resources.on('load', function() {\n loaded++;\n\n if (length === loaded) {\n that._recalculatePopupDimensions();\n }\n });\n },\n\n _ajaxRequest: function(options) {\n var that = this,\n successFn = function(data) {\n kendo.ui.progress(that.content, false);\n\n that.content.html(data);\n\n that._verifyContentLoaded();\n\n that.trigger(CONTENTLOAD);\n };\n\n jQuery.ajax(extend({\n type: \"GET\",\n dataType: \"html\",\n cache: false,\n error: function(xhr, status) {\n kendo.ui.progress(that.content, false);\n\n that._recalculatePopupDimensions();\n\n that.trigger(ERROR, { status: status, xhr: xhr });\n },\n success: successFn.bind(that)\n }, options));\n },\n\n _documentKeyDown: function(e) {\n if (e.keyCode === kendo.keys.ESC) {\n this.hide();\n }\n },\n\n refresh: function() {\n var that = this,\n popup = that.popup;\n\n if (popup && popup.options.anchor) {\n that._appendContent(popup.options.anchor);\n }\n },\n\n _show: function(target) {\n var that = this,\n current = that.target();\n\n if (!that.popup) {\n that._initPopup();\n }\n\n if (current && current[0] != target[0]) {\n that.popup.close(true);\n that.popup.element.kendoStop(true, true);// animation can be too long to hide the element before it is shown again\n }\n\n if (!current || current[0] != target[0]) {\n that._appendContent(target);\n that.popup.options.anchor = target;\n }\n\n that.popup.one(\"deactivate\", function() {\n restoreTitle(target);\n\n that._removeDescribedBy(target);\n\n this.element\n .removeAttr(\"id\")\n .attr(\"aria-hidden\", true);\n\n DOCUMENT.off(\"keydown\" + NS, that._documentKeyDownHandler);\n });\n\n that._openPopup();\n },\n\n _initPopup: function() {\n var that = this,\n options = that.options,\n wrapper = $(kendo.template(TEMPLATE)({\n callout: options.callout && options.position !== \"center\",\n dir: DIRCLASSES[options.position],\n autoHide: options.autoHide\n }));\n\n that.popup = new Popup(wrapper, extend({\n autosize: true,\n activate: function() {\n that._addDescribedBy();\n\n if (options.callout) {\n that._positionCallout();\n } else {\n that._offset(that.options.position, that.options.offset);\n }\n\n this.element.removeAttr(\"aria-hidden\");\n\n DOCUMENT.on(\"keydown\" + NS, that._documentKeyDownHandler);\n\n that.trigger(SHOW);\n that.popup._hovered = undefined$1;\n },\n close: function() {\n that.trigger(HIDE);\n },\n copyAnchorStyles: false,\n animation: options.animation\n }, POSITIONS[options.position]));\n\n wrapper.css({\n width: options.width,\n height: options.height\n });\n\n that.content = wrapper.find(\".k-tooltip-content\");\n that.arrow = wrapper.find(\".k-callout\");\n\n if (options.autoHide && this._isShownOnMouseEnter()) {\n wrapper.on(\"mouseleave\" + NS, that._mouseleave.bind(that));\n } else {\n wrapper.on(\"click\" + NS, \".k-tooltip-button\", that._closeButtonClick.bind(that));\n }\n },\n\n _closeButtonClick: function(e) {\n e.preventDefault();\n this.hide();\n },\n\n _mouseleave: function(e) {\n var that = this;\n\n clearTimeout(that.timeout);\n\n that.timeout = setTimeout(function() {\n that._closePopup(e.currentTarget);\n }, that.options.hideAfter);\n },\n\n _blur: function(e) {\n this._closePopup(e.currentTarget);\n },\n\n _closePopup: function(target) {\n if (this.popup && !this.popup._hovered) {\n this.popup.close();\n } else {\n restoreTitle($(target));\n }\n },\n\n destroy: function() {\n this.element.off(NS);\n\n DOCUMENT.off(\"keydown\" + NS, this._documentKeyDownHandler);\n\n TooltipBase.fn.destroy.call(this);\n }\n });\n\n kendo.ui.plugin(Tooltip);\n })(window.kendo.jQuery);\n var kendo$H = kendo;\n\n (function($) {\n\n function createPromise() {\n return $.Deferred();\n }\n\n function promiseAll(promises) {\n return $.when.apply($, promises);\n }\n\n function extendStatic(dest, src) {\n if (!src) {\n return;\n }\n\n if (typeof src.__proto__ === 'function') {\n dest.__proto__ = src;\n } else {\n for (var member in src) {\n if (src.hasOwnProperty(member)) {\n dest[member] = src[member];\n }\n }\n }\n }\n\n kendo.drawing.util = kendo.drawing.util || {};\n kendo.deepExtend(kendo.drawing.util, {\n createPromise: createPromise,\n promiseAll: promiseAll,\n extendStatic: extendStatic\n });\n\n })(window.kendo.jQuery);\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-drawing` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n /* eslint-disable space-before-blocks, space-before-function-paren, no-multi-spaces */\n\n var __meta__$G = {\n id: \"color\",\n name: \"Color utils\",\n category: \"framework\",\n advanced: true,\n description: \"Color utilities used across components\",\n depends: [ \"core\" ]\n };\n\n window.kendo = window.kendo || {};\n\n var Class = kendo.Class;\n var support = kendo.support;\n\n var 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\n var browser = support.browser;\n\n var matchNamedColor = function (color) {\n var colorNames = Object.keys(namedColors);\n colorNames.push(\"transparent\");\n\n var regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n matchNamedColor = function (color) { return regexp.exec(color); };\n\n return regexp.exec(color);\n };\n\n var BaseColor = Class.extend({\n init: function() { },\n\n toHSV: function() { return this; },\n\n toRGB: function() { return this; },\n\n toHex: function(options) { return this.toBytes().toHex(options); },\n\n toBytes: function() { return this; },\n\n toCss: function(options) { return \"#\" + this.toHex(options); },\n\n toCssRgba: function() {\n var rgb = this.toBytes();\n return (\"rgba(\" + (rgb.r) + \", \" + (rgb.g) + \", \" + (rgb.b) + \", \" + (parseFloat((Number(this.a)).toFixed(3))) + \")\");\n },\n\n toDisplay: function() {\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: function(c) {\n return c === this || ((c !== null && c !== undefined) && this.toCssRgba() === parseColor(c).toCssRgba());\n },\n\n diff: function(other) {\n if (other === null) {\n return NaN;\n }\n\n var c1 = this.toBytes();\n var 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: function() {\n var 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\n var RGB = BaseColor.extend({\n init: function(r, g, b, a) {\n BaseColor.fn.init.call(this);\n\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n },\n\n toHSV: function() {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var v = max;\n var 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: function() {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n var 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: function() {\n return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n }\n });\n\n var Bytes = RGB.extend({\n init: function(r, g, b, a) {\n RGB.fn.init.call(this, Math.round(r), Math.round(g), Math.round(b), a);\n },\n\n toRGB: function() {\n return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n },\n\n toHSV: function() {\n return this.toRGB().toHSV();\n },\n\n toHSL: function() {\n return this.toRGB().toHSL();\n },\n\n toHex: function(options) {\n var 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: function() {\n return this;\n }\n });\n\n function hex(n, width, pad) {\n if (pad === void 0) { pad = \"0\"; }\n\n var result = n.toString(16);\n while (width > result.length) {\n result = pad + result;\n }\n\n return result;\n }\n\n var HSV = BaseColor.extend({\n init: function(h, s, v, a) {\n BaseColor.fn.init.call(this);\n\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n },\n\n toRGB: function() {\n var ref = this;\n var h = ref.h;\n var s = ref.s;\n var v = ref.v;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = v;\n } else {\n h /= 60;\n\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var 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: function() {\n return this.toRGB().toHSL();\n },\n\n toBytes: function() {\n return this.toRGB().toBytes();\n }\n });\n\n var HSL = BaseColor.extend({\n init: function(h, s, l, a) {\n BaseColor.fn.init.call(this);\n\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n },\n\n toRGB: function() {\n var h = this.h / 360;\n var s = this.s / 100;\n var l = this.l / 100;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var 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: function() {\n return this.toRGB().toHSV();\n },\n\n toBytes: function() {\n return this.toRGB().toBytes();\n }\n });\n\n function hue2rgb(p, q, s) {\n var 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\n function alphaFromHex(a) {\n return parseFloat(parseFloat(parseInt(a, 16) / 255 ).toFixed(3));\n }\n\n function parseColor(value, safe) {\n var 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 var 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\n var DARK_TRESHOLD = 180;\n\n var Color = Class.extend({\n init: function(value) {\n var this$1$1 = this;\n\n if (arguments.length === 1) {\n var formats = Color.formats;\n var resolvedColor = this.resolveColor(value);\n\n for (var idx = 0; idx < formats.length; idx++) {\n var formatRegex = formats[idx].re;\n var processor = formats[idx].process;\n var parts = formatRegex.exec(resolvedColor);\n\n if (parts) {\n var channels = processor(parts);\n this$1$1.r = channels[0];\n this$1$1.g = channels[1];\n this$1$1.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: function() {\n var pad = this.padDigit;\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n\n return \"#\" + pad(r) + pad(g) + pad(b);\n },\n\n resolveColor: function(value) {\n var 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: function(value) {\n if (value < 0 || isNaN(value)) {\n return 0;\n }\n\n return value > 255 ? 255 : value;\n },\n\n padDigit: function(value) {\n return (value.length === 1) ? \"0\" + value : value;\n },\n\n brightness: function(value) {\n var 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: function() {\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: function() {\n return this.percBrightness() < DARK_TRESHOLD;\n }\n });\n\n Color.fromBytes = function(r, g, b, a) {\n return new Bytes(r, g, b, a != null ? a : 1);\n };\n\n Color.fromRGB = function(r, g, b, a) {\n return new RGB(r, g, b, a != null ? a : 1);\n };\n\n Color.fromHSV = function(h, s, v, a) {\n return new HSV(h, s, v, a != null ? a : 1);\n };\n\n Color.fromHSL = function(h, s, l, a) {\n return new HSL(h, s, l, a != null ? a : 1);\n };\n\n Color.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\n Color.namedColors = namedColors;\n\n kendo.deepExtend(kendo, {\n parseColor: parseColor,\n namedColors: namedColors,\n Color: Color\n });\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-drawing` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable space-before-blocks, space-before-function-paren */\n\n window.kendo.util = window.kendo.util || {};\n\n var LRUCache = kendo.Class.extend({\n init: function(size) {\n\n this._size = size;\n this._length = 0;\n this._map = {};\n },\n\n put: function(key, value) {\n var map = this._map;\n var 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: function(key) {\n var 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\n var REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\n var SPACE = ' ';\n\n function normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n }\n\n function objectKey(object) {\n var parts = [];\n for (var 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\n function hashKey(str) {\n // 32-bit FNV-1 offset basis\n // See http://isthe.com/chongo/tech/comp/fnv/#FNV-param\n var hash = 0x811C9DC5;\n\n for (var 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\n function zeroSize() {\n return { width: 0, height: 0, baseline: 0 };\n }\n\n var DEFAULT_OPTIONS = {\n baselineMarkerSize: 1\n };\n\n var defaultMeasureBox;\n\n if (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\n var TextMetrics = kendo.Class.extend({\n init: function(options) {\n\n this._cache = new LRUCache(1000);\n this.options = $.extend({}, DEFAULT_OPTIONS, options);\n },\n\n measure: function(text, style, options) {\n if (options === void 0) { options = {}; }\n\n if (typeof text === 'undefined' || text === null) {\n return zeroSize();\n }\n\n var styleKey = objectKey(style);\n var cacheKey = hashKey(text + styleKey);\n var cachedResult = this._cache.get(cacheKey);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n var size = zeroSize();\n var measureBox = options.box || defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n\n for (var key in style) {\n var value = style[key];\n if (typeof value !== \"undefined\") {\n measureBox.style[key] = value;\n }\n }\n\n var 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: function() {\n var 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\n TextMetrics.current = new TextMetrics();\n\n function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n }\n\n kendo.deepExtend(kendo.util, {\n LRUCache: LRUCache,\n TextMetrics: TextMetrics,\n measureText: measureText,\n objectKey: objectKey,\n hashKey: hashKey,\n normalizeText: normalizeText\n });\n\n })(window.kendo.jQuery);\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-drawing` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable space-before-blocks, space-before-function-paren */\n\n window.kendo = window.kendo || {};\n var kendoDrawing = kendo.drawing;\n var kendoDrawingUtil = kendoDrawing.util;\n var extendStatic = kendoDrawingUtil.extendStatic;\n var Class = kendo.Class;\n var kendoUtil = kendo.util;\n var support = kendo.support;\n var supportBrowser = support.browser;\n var htmlEncode = kendo.htmlEncode;\n\n var createPromise = kendoDrawingUtil.createPromise;\n var promiseAll = kendoDrawingUtil.promiseAll;\n\n var HasObservers = (function (Class$$1) {\n function HasObservers () {\n Class$$1.apply(this, arguments);\n }\n\n extendStatic(HasObservers, Class$$1);\n HasObservers.prototype = Object.create( Class$$1 && Class$$1.prototype );\n HasObservers.prototype.constructor = HasObservers;\n HasObservers.fn = HasObservers.prototype;\n HasObservers.fn.init = HasObservers.fn.constructor;\n\n HasObservers.prototype.observers = function observers () {\n this._observers = this._observers || [];\n return this._observers;\n };\n\n HasObservers.prototype.addObserver = function addObserver (element) {\n if (!this._observers) {\n this._observers = [ element ];\n } else {\n this._observers.push(element);\n }\n return this;\n };\n\n HasObservers.prototype.removeObserver = function removeObserver (element) {\n var observers = this.observers();\n var index = observers.indexOf(element);\n if (index !== -1) {\n observers.splice(index, 1);\n }\n return this;\n };\n\n HasObservers.prototype.trigger = function trigger (methodName, event) {\n var observers = this._observers;\n\n if (observers && !this._suspended) {\n for (var idx = 0; idx < observers.length; idx++) {\n var observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n };\n\n HasObservers.prototype.optionsChange = function optionsChange (e) {\n if (e === void 0) { e = {}; }\n\n e.element = this;\n this.trigger(\"optionsChange\", e);\n };\n\n HasObservers.prototype.geometryChange = function geometryChange () {\n this.trigger(\"geometryChange\", {\n element: this\n });\n };\n\n HasObservers.prototype.suspend = function suspend () {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n };\n\n HasObservers.prototype.resume = function resume () {\n this._suspended = Math.max((this._suspended || 0) - 1, 0);\n return this;\n };\n\n HasObservers.prototype._observerField = function _observerField (field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n };\n\n return HasObservers;\n }(Class));\n\n function append$1$1(first, second) {\n first.push.apply(first, second);\n return first;\n }\n\n /* eslint-disable key-spacing,no-multi-spaces,no-param-reassign */\n\n var literals = {\n 1 : \"i\", 10 : \"x\", 100 : \"c\",\n 2 : \"ii\", 20 : \"xx\", 200 : \"cc\",\n 3 : \"iii\", 30 : \"xxx\", 300 : \"ccc\",\n 4 : \"iv\", 40 : \"xl\", 400 : \"cd\",\n 5 : \"v\", 50 : \"l\", 500 : \"d\",\n 6 : \"vi\", 60 : \"lx\", 600 : \"dc\",\n 7 : \"vii\", 70 : \"lxx\", 700 : \"dcc\",\n 8 : \"viii\", 80 : \"lxxx\", 800 : \"dccc\",\n 9 : \"ix\", 90 : \"xc\", 900 : \"cm\",\n 1000 : \"m\"\n };\n\n function arabicToRoman(n) {\n var values = [ 1000,\n 900 , 800, 700, 600, 500, 400, 300, 200, 100,\n 90 , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10 ,\n 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ];\n\n var roman = \"\";\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n }\n\n var UNDEFINED = \"undefined\";\n\n function defined(value) {\n return typeof value !== UNDEFINED;\n }\n\n var defId = 1;\n\n function definitionId() {\n return \"kdef\" + defId++;\n }\n\n var DEG_TO_RAD = Math.PI / 180;\n var MAX_NUM = Number.MAX_VALUE;\n var MIN_NUM = -Number.MAX_VALUE;\n\n function deg(radians) {\n return radians / DEG_TO_RAD;\n }\n\n var fromCharCode = String.fromCharCode;\n\n // Encodes a string as UTF-8\n function encodeUTF8(input) {\n var output = \"\";\n\n for (var i = 0; i < input.length; i++) {\n var code = input.charCodeAt(i);\n\n if (0xD800 <= code && code <= 0xDBFF) {\n var hi = code;\n var 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\n // Encodes a string as UTF-16 big-endian\n\n var KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n function encodeBase64(input) {\n var output = \"\";\n var i = 0;\n\n var utfInput = encodeUTF8(input);\n\n while (i < utfInput.length) {\n var chr1 = utfInput.charCodeAt(i++);\n var chr2 = utfInput.charCodeAt(i++);\n var chr3 = utfInput.charCodeAt(i++);\n\n var enc1 = chr1 >> 2;\n var enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n var enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n var 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 }\n\n 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 }\n\n function eventElement(e) {\n if (e === void 0) { e = {}; }\n\n return e.touch ? e.touch.initialTouch : e.target;\n }\n\n function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n }\n\n function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n }\n\n function limitValue(value, min, max) {\n return Math.max(Math.min(value, max), min);\n }\n\n /* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n /* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n /* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n /* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n // mergeSort is stable.\n function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return (function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n })(a);\n }\n\n var now = Date.now || function() {\n return new Date().getTime();\n };\n\n function rad(degrees) {\n return degrees * DEG_TO_RAD;\n }\n\n function pow(p) {\n if (p) {\n return Math.pow(10, p);\n }\n\n return 1;\n }\n\n function round(value, precision) {\n var power = pow(precision);\n return Math.round(value * power) / power;\n }\n\n function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n }\n\n function bindEvents(element, events) {\n for (var eventName in events) {\n var eventNames = eventName.trim().split(\" \");\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.addEventListener(eventNames[idx], events[eventName], false);\n }\n }\n }\n\n function elementOffset(element) {\n var box = element.getBoundingClientRect();\n\n var 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 }\n\n function elementStyles(element, styles) {\n var result = {};\n var style = window.getComputedStyle(element) || {};\n var stylesArray = Array.isArray(styles) ? styles : [ styles ];\n\n for (var idx = 0; idx < stylesArray.length; idx++) {\n var field = stylesArray[idx];\n result[field] = style[field];\n }\n\n return result;\n }\n\n function getPixels(value) {\n if (isNaN(value)) {\n return value;\n }\n return value + \"px\";\n }\n\n function elementSize(element, size) {\n if (size) {\n var width = size.width;\n var height = size.height;\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 var size$1 = elementStyles(element, [ 'width', 'height' ]);\n\n return {\n width: parseInt(size$1.width, 10),\n height: parseInt(size$1.height, 10)\n };\n }\n }\n\n function unbindEvents(element, events) {\n if (events === void 0) { events = {}; }\n\n for (var name in events) {\n var eventNames = name.trim().split(\" \");\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.removeEventListener(eventNames[idx], events[name], false);\n }\n }\n }\n\n function elementPadding(element) {\n var ref = elementStyles(element, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n return {\n top: parseFloat(paddingTop),\n left: parseFloat(paddingLeft)\n };\n }\n\n var Matrix = (function (Class$$1) {\n function Matrix(a, b, c, d, e, f) {\n if (a === void 0) { a = 0; }\n if (b === void 0) { b = 0; }\n if (c === void 0) { c = 0; }\n if (d === void 0) { d = 0; }\n if (e === void 0) { e = 0; }\n if (f === void 0) { f = 0; }\n\n Class$$1.call(this);\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 extendStatic(Matrix, Class$$1);\n Matrix.prototype = Object.create( Class$$1 && Class$$1.prototype );\n Matrix.prototype.constructor = Matrix;\n Matrix.fn = Matrix.prototype;\n Matrix.fn.init = Matrix.fn.constructor;\n\n Matrix.prototype.multiplyCopy = function 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 Matrix.prototype.invert = function invert () {\n var ref = this;\n var a = ref.a;\n var b = ref.b;\n var d = ref.c;\n var e = ref.d;\n var g = ref.e;\n var h = ref.f;\n var 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 Matrix.prototype.clone = function clone () {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n };\n\n Matrix.prototype.equals = function 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 Matrix.prototype.round = function round$1 (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 Matrix.prototype.toArray = function toArray (precision) {\n var result = [ this.a, this.b, this.c, this.d, this.e, this.f ];\n\n if (defined(precision)) {\n for (var i = 0; i < result.length; i++) {\n result[i] = round(result[i], precision);\n }\n }\n\n return result;\n };\n\n Matrix.prototype.toString = function toString (precision, separator) {\n if (separator === void 0) { separator = \",\"; }\n\n return this.toArray(precision).join(separator);\n };\n\n Matrix.translate = function translate (x, y) {\n return new Matrix(1, 0, 0, 1, x, y);\n };\n\n Matrix.unit = function unit () {\n return new Matrix(1, 0, 0, 1, 0, 0);\n };\n\n Matrix.rotate = function rotate (angle, x, y) {\n var 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 Matrix.scale = function scale (scaleX, scaleY) {\n return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n };\n\n return Matrix;\n }(Class));\n\n Matrix.IDENTITY = Matrix.unit();\n\n var matrixRegexp = /matrix\\((.*)\\)/;\n\n function parseMatrix(matrixString) {\n var match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n var members = match[1].split(',').map(function (x) { return parseFloat(x); });\n return new (Function.prototype.bind.apply( Matrix, [ null ].concat( members) ));\n }\n\n function transformMatrix(element) {\n var transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n }\n\n function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n var matrix = transformMatrix(element);\n var parent = element.parentElement;\n while (parent) {\n var 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\n var util = {\n \tappend: append$1$1,\n \tarabicToRoman: arabicToRoman,\n \tcreatePromise: createPromise,\n \tdefined: defined,\n \tdefinitionId: definitionId,\n \tdeg: deg,\n \tencodeBase64: encodeBase64,\n \teventCoordinates: eventCoordinates,\n \teventElement: eventElement,\n \tisTransparent: isTransparent,\n \tlast: last,\n \tlimitValue: limitValue,\n \tmergeSort: mergeSort,\n \tnow: now,\n \tpromiseAll: promiseAll,\n \trad: rad,\n \tround: round,\n \tvalueOrDefault: valueOrDefault,\n \tbindEvents: bindEvents,\n \telementOffset: elementOffset,\n \telementSize: elementSize,\n \telementStyles: elementStyles,\n \tunbindEvents: unbindEvents,\n \telementPadding: elementPadding,\n \telementScale: elementScale,\n \tDEG_TO_RAD: DEG_TO_RAD,\n \tMAX_NUM: MAX_NUM,\n \tMIN_NUM: MIN_NUM\n };\n\n var toString$1 = {}.toString;\n\n var OptionsStore = (function (HasObservers$$1) {\n function OptionsStore(options, prefix) {\n var this$1$1 = this;\n if (prefix === void 0) { prefix = \"\"; }\n\n HasObservers$$1.call(this);\n\n this.prefix = prefix;\n\n for (var field in options) {\n var member = options[field];\n member = this$1$1._wrap(member, field);\n this$1$1[field] = member;\n }\n }\n\n extendStatic(OptionsStore, HasObservers$$1);\n OptionsStore.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n OptionsStore.prototype.constructor = OptionsStore;\n OptionsStore.fn = OptionsStore.prototype;\n OptionsStore.fn.init = OptionsStore.fn.constructor;\n\n OptionsStore.prototype.get = function get (field) {\n var parts = field.split(\".\");\n var result = this;\n\n while (parts.length && result) {\n var part = parts.shift();\n result = result[part];\n }\n\n return result;\n };\n\n OptionsStore.prototype.set = function set (field, value) {\n var 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 OptionsStore.prototype._set = function _set (field, value) {\n var this$1$1 = this;\n\n var composite = field.indexOf(\".\") >= 0;\n var parentObj = this;\n var fieldName = field;\n\n if (composite) {\n var parts = fieldName.split(\".\");\n var prefix = this.prefix;\n\n while (parts.length > 1) {\n fieldName = parts.shift();\n prefix += fieldName + \".\";\n\n var obj = parentObj[fieldName];\n\n if (!obj) {\n obj = new OptionsStore({}, prefix);\n obj.addObserver(this$1$1);\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 OptionsStore.prototype._clear = function _clear (field) {\n var current = this[field];\n if (current && current.removeObserver) {\n current.removeObserver(this);\n }\n };\n\n OptionsStore.prototype._wrap = function _wrap (object, field) {\n var type = toString$1.call(object);\n var 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 return OptionsStore;\n }(HasObservers));\n\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\n function getAccessor(field) {\n return function() {\n return this[field];\n };\n }\n\n function defineAccessors(fn, fields) {\n for (var i = 0; i < fields.length; i++) {\n var name = fields[i];\n var 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\n var withAccessors = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }extendStatic(result, TBase);\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n\n return result;\n }(TBase));\n defineAccessors(result.prototype, names);\n\n return result;\n };\n\n function toMatrix(transformation) {\n if (transformation && typeof transformation.matrix === \"function\") {\n return transformation.matrix();\n }\n\n return transformation;\n }\n\n var Point = (function (superclass) {\n function Point(x, y) {\n superclass.call(this);\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n extendStatic(Point, superclass);\n Point.prototype = Object.create( superclass && superclass.prototype );\n Point.prototype.constructor = Point;\n Point.fn = Point.prototype;\n Point.fn.init = Point.fn.constructor;\n\n var staticAccessors = { ZERO: {} };\n\n Point.prototype.equals = function equals (other) {\n return other && other.x === this.x && other.y === this.y;\n };\n\n Point.prototype.clone = function clone () {\n return new Point(this.x, this.y);\n };\n\n Point.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n };\n\n Point.prototype.translate = function translate (x, y) {\n this.x += x;\n this.y += y;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.translateWith = function translateWith (point) {\n return this.translate(point.x, point.y);\n };\n\n Point.prototype.move = function move (x, y) {\n this.x = this.y = 0;\n return this.translate(x, y);\n };\n\n Point.prototype.scale = function scale (scaleX, scaleY) {\n if (scaleY === void 0) { scaleY = scaleX; }\n\n this.x *= scaleX;\n this.y *= scaleY;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.scaleCopy = function scaleCopy (scaleX, scaleY) {\n return this.clone().scale(scaleX, scaleY);\n };\n\n Point.prototype.transform = function transform (transformation) {\n var matrix = toMatrix(transformation);\n var ref = this;\n var x = ref.x;\n var y = ref.y;\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 Point.prototype.transformCopy = function transformCopy (transformation) {\n var point = this.clone();\n\n if (transformation) {\n point.transform(transformation);\n }\n\n return point;\n };\n\n Point.prototype.distanceTo = function distanceTo (point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n };\n\n Point.prototype.round = function round$1 (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 Point.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var x = doRound ? round(this.x, digits) : this.x;\n var y = doRound ? round(this.y, digits) : this.y;\n\n return [ x, y ];\n };\n\n Point.prototype.toString = function toString (digits, separator) {\n if (separator === void 0) { separator = \" \"; }\n\n var ref = this;\n var x = ref.x;\n var y = ref.y;\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 Point.create = function 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 Point.min = function min () {\n var arguments$1 = arguments;\n\n var minX = MAX_NUM;\n var minY = MAX_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[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 Point.max = function max () {\n var arguments$1 = arguments;\n\n var maxX = MIN_NUM;\n var maxY = MIN_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[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 Point.minPoint = function minPoint () {\n return new Point(MIN_NUM, MIN_NUM);\n };\n\n Point.maxPoint = function maxPoint () {\n return new Point(MAX_NUM, MAX_NUM);\n };\n\n staticAccessors.ZERO.get = function () {\n return new Point(0, 0);\n };\n\n Object.defineProperties( Point, staticAccessors );\n\n return Point;\n }(withAccessors(HasObservers, [ \"x\", \"y\" ])));\n\n var Size = (function (superclass) {\n function Size(width, height) {\n superclass.call(this);\n\n this.width = width || 0;\n this.height = height || 0;\n }\n\n extendStatic(Size, superclass);\n Size.prototype = Object.create( superclass && superclass.prototype );\n Size.prototype.constructor = Size;\n Size.fn = Size.prototype;\n Size.fn.init = Size.fn.constructor;\n\n var staticAccessors = { ZERO: {} };\n\n Size.prototype.equals = function equals (other) {\n return other && other.width === this.width && other.height === this.height;\n };\n\n Size.prototype.clone = function clone () {\n return new Size(this.width, this.height);\n };\n\n Size.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var width = doRound ? round(this.width, digits) : this.width;\n var height = doRound ? round(this.height, digits) : this.height;\n\n return [ width, height ];\n };\n\n Size.create = function 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 staticAccessors.ZERO.get = function () {\n return new Size(0, 0);\n };\n\n Object.defineProperties( Size, staticAccessors );\n\n return Size;\n }(withAccessors(HasObservers, [ \"width\", \"height\" ])));\n\n var Rect = (function (HasObservers$$1) {\n function Rect(origin, size, cornerRadius) {\n if (origin === void 0) { origin = new Point(); }\n if (size === void 0) { size = new Size(); }\n if (cornerRadius === void 0) { cornerRadius = 0; }\n\n HasObservers$$1.call(this);\n\n this.setOrigin(origin);\n this.setSize(size);\n this.setCornerRadius(cornerRadius);\n }\n\n extendStatic(Rect, HasObservers$$1);\n Rect.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n Rect.prototype.constructor = Rect;\n Rect.fn = Rect.prototype;\n Rect.fn.init = Rect.fn.constructor;\n\n Rect.prototype.clone = function clone () {\n return new Rect(\n this.origin.clone(),\n this.size.clone()\n );\n };\n\n Rect.prototype.equals = function equals (other) {\n return other &&\n other.origin.equals(this.origin) &&\n other.size.equals(this.size);\n };\n\n Rect.prototype.setOrigin = function setOrigin (value) {\n this._observerField(\"origin\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getOrigin = function getOrigin () {\n return this.origin;\n };\n\n Rect.prototype.setCornerRadius = function setCornerRadius (radius) {\n this.cornerRadius = Array.isArray(radius) ? radius : [ radius, radius ];\n\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getCornerRadius = function getCornerRadius () {\n return this.cornerRadius;\n };\n\n Rect.prototype.setSize = function setSize (value) {\n this._observerField(\"size\", Size.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getSize = function getSize () {\n return this.size;\n };\n\n Rect.prototype.width = function width () {\n return this.size.width;\n };\n\n Rect.prototype.height = function height () {\n return this.size.height;\n };\n\n Rect.prototype.topLeft = function topLeft () {\n return this.origin.clone();\n };\n\n Rect.prototype.bottomRight = function bottomRight () {\n return this.origin.clone().translate(this.width(), this.height());\n };\n\n Rect.prototype.topRight = function topRight () {\n return this.origin.clone().translate(this.width(), 0);\n };\n\n Rect.prototype.bottomLeft = function bottomLeft () {\n return this.origin.clone().translate(0, this.height());\n };\n\n Rect.prototype.center = function center () {\n return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n };\n\n Rect.prototype.bbox = function bbox (matrix) {\n var tl = this.topLeft().transformCopy(matrix);\n var tr = this.topRight().transformCopy(matrix);\n var br = this.bottomRight().transformCopy(matrix);\n var bl = this.bottomLeft().transformCopy(matrix);\n\n return Rect.fromPoints(tl, tr, br, bl);\n };\n\n Rect.prototype.transformCopy = function transformCopy (m) {\n return Rect.fromPoints(\n this.topLeft().transform(m),\n this.bottomRight().transform(m)\n );\n };\n\n Rect.prototype.expand = function expand (x, y) {\n if (y === void 0) { 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 Rect.prototype.expandCopy = function expandCopy (x, y) {\n return this.clone().expand(x, y);\n };\n\n Rect.prototype.containsPoint = function containsPoint (point) {\n var origin = this.origin;\n var bottomRight = this.bottomRight();\n return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n };\n\n Rect.prototype._isOnPath = function _isOnPath (point, width) {\n var rectOuter = this.expandCopy(width, width);\n var rectInner = this.expandCopy(-width, -width);\n\n return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n };\n\n Rect.fromPoints = function fromPoints () {\n var topLeft = Point.min.apply(null, arguments);\n var bottomRight = Point.max.apply(null, arguments);\n var size = new Size(\n bottomRight.x - topLeft.x,\n bottomRight.y - topLeft.y\n );\n\n return new Rect(topLeft, size);\n };\n\n Rect.union = function 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 Rect.intersect = function intersect (a, b) {\n var rect1 = {\n left: a.topLeft().x,\n top: a.topLeft().y,\n right: a.bottomRight().x,\n bottom: a.bottomRight().y\n };\n\n var 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 return Rect;\n }(HasObservers));\n\n var Transformation = (function (HasObservers$$1) {\n function Transformation(matrix) {\n if (matrix === void 0) { matrix = Matrix.unit(); }\n\n HasObservers$$1.call(this);\n\n this._matrix = matrix;\n }\n\n extendStatic(Transformation, HasObservers$$1);\n Transformation.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n Transformation.prototype.constructor = Transformation;\n Transformation.fn = Transformation.prototype;\n Transformation.fn.init = Transformation.fn.constructor;\n\n Transformation.prototype.clone = function clone () {\n return new Transformation(\n this._matrix.clone()\n );\n };\n\n Transformation.prototype.equals = function equals (other) {\n return other &&\n other._matrix.equals(this._matrix);\n };\n\n Transformation.prototype.translate = function translate (x, y) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.scale = function scale (scaleX, scaleY, origin) {\n if (scaleY === void 0) { scaleY = scaleX; }\n if (origin === void 0) { origin = null; }\n\n var 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 Transformation.prototype.rotate = function rotate (angle, origin) {\n var 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 Transformation.prototype.multiply = function multiply (transformation) {\n var matrix = toMatrix(transformation);\n\n this._matrix = this._matrix.multiplyCopy(matrix);\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.matrix = function matrix (value) {\n if (value) {\n this._matrix = value;\n this._optionsChange();\n return this;\n }\n\n return this._matrix;\n };\n\n Transformation.prototype._optionsChange = function _optionsChange () {\n this.optionsChange({\n field: \"transform\",\n value: this\n });\n };\n\n return Transformation;\n }(HasObservers));\n\n function transform$1(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 }\n\n var Element$1 = (function (HasObservers$$1) {\n function Element(options) {\n HasObservers$$1.call(this);\n\n this._initOptions(options);\n }\n\n extendStatic(Element, HasObservers$$1);\n Element.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n Element.prototype.constructor = Element;\n Element.fn = Element.prototype;\n Element.fn.init = Element.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Rect\";\n };\n\n Element.prototype._initOptions = function _initOptions (options) {\n if (options === void 0) { options = {}; }\n\n var clip = options.clip;\n var transform = options.transform;\n\n if (transform) {\n options.transform = transform$1(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 Element.prototype.transform = function transform (value) {\n if (defined(value)) {\n this.options.set(\"transform\", transform$1(value));\n } else {\n return this.options.get(\"transform\");\n }\n };\n\n Element.prototype.parentTransform = function parentTransform () {\n var element = this;\n var parentMatrix;\n\n while (element.parent) {\n element = element.parent;\n var transformation = element.transform();\n if (transformation) {\n parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n }\n }\n\n if (parentMatrix) {\n return transform$1(parentMatrix);\n }\n };\n\n Element.prototype.currentTransform = function currentTransform (parentTransform) {\n if (parentTransform === void 0) { parentTransform = this.parentTransform(); }\n\n var elementTransform = this.transform();\n var elementMatrix = toMatrix(elementTransform);\n\n var parentMatrix = toMatrix(parentTransform);\n var combinedMatrix;\n\n if (elementMatrix && parentMatrix) {\n combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n } else {\n combinedMatrix = elementMatrix || parentMatrix;\n }\n\n if (combinedMatrix) {\n return transform$1(combinedMatrix);\n }\n };\n\n Element.prototype.visible = function 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 Element.prototype.clip = function clip (value) {\n var 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 Element.prototype.opacity = function 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 Element.prototype.className = function 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 Element.prototype.clippedBBox = function clippedBBox (transformation) {\n var bbox = this._clippedBBox(transformation);\n if (bbox) {\n var clip = this.clip();\n return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n }\n };\n\n Element.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var transform = this.currentTransform(parentTransform);\n var 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 Element.prototype._hasFill = function _hasFill () {\n var fill = this.options.fill;\n return fill && !isTransparent(fill.color);\n };\n\n Element.prototype._hasStroke = function _hasStroke () {\n var stroke = this.options.stroke;\n return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n };\n\n Element.prototype._clippedBBox = function _clippedBBox (transformation) {\n return this.bbox(transformation);\n };\n\n Object.defineProperties( Element.prototype, prototypeAccessors );\n\n return Element;\n }(HasObservers));\n\n function ellipseExtremeAngles(center, rx, ry, matrix) {\n var extremeX = 0;\n var 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 }\n\n var PI_DIV_2 = Math.PI / 2;\n\n var Circle$2 = (function (superclass) {\n function Circle(center, radius) {\n if (center === void 0) { center = new Point(); }\n if (radius === void 0) { radius = 0; }\n\n superclass.call(this);\n\n this.setCenter(center);\n this.setRadius(radius);\n }\n\n extendStatic(Circle, superclass);\n Circle.prototype = Object.create( superclass && superclass.prototype );\n Circle.prototype.constructor = Circle;\n Circle.fn = Circle.prototype;\n Circle.fn.init = Circle.fn.constructor;\n\n Circle.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Circle.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Circle.prototype.equals = function equals (other) {\n return other &&\n other.center.equals(this.center) &&\n other.radius === this.radius;\n };\n\n Circle.prototype.clone = function clone () {\n return new Circle(this.center.clone(), this.radius);\n };\n\n Circle.prototype.pointAt = function pointAt (angle) {\n return this._pointAt(rad(angle));\n };\n\n Circle.prototype.bbox = function bbox (matrix) {\n var this$1$1 = this;\n\n var extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n var minPoint = Point.maxPoint();\n var maxPoint = Point.minPoint();\n\n for (var i = 0; i < 4; i++) {\n var currentPointX = this$1$1._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n var currentPointY = this$1$1._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n var 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 Circle.prototype._pointAt = function _pointAt (angle) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n\n return new Point(\n center.x + radius * Math.cos(angle),\n center.y + radius * Math.sin(angle)\n );\n };\n\n Circle.prototype.containsPoint = function containsPoint (point) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var 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 Circle.prototype._isOnPath = function _isOnPath (point, width) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var pointDistance = center.distanceTo(point);\n\n return radius - width <= pointDistance && pointDistance <= radius + width;\n };\n\n return Circle;\n }(withAccessors(HasObservers, [ \"radius\" ])));\n\n var GRADIENT = \"Gradient\";\n\n var paintable = function (TBase) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n extendStatic(anonymous, TBase);\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n\n anonymous.prototype.fill = function fill (color, opacity) {\n var options = this.options;\n\n if (defined(color)) {\n if (color && color.nodeType !== GRADIENT) {\n var 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 anonymous.prototype.stroke = function 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 return anonymous;\n }(TBase))\n ); };\n\n var IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n\n var measurable = function (TBase) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n extendStatic(anonymous, TBase);\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n\n anonymous.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n var matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n var 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 var strokeWidth = this.options.get(\"stroke.width\");\n if (strokeWidth && bbox) {\n bbox.expand(strokeWidth / 2);\n }\n\n return bbox;\n };\n\n anonymous.prototype.geometryChange = function geometryChange () {\n delete this._bboxCache;\n this.trigger(\"geometryChange\", {\n element: this\n });\n };\n\n return anonymous;\n }(TBase))\n ); };\n\n function geometryAccessor(name) {\n var 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\n function defineGeometryAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = geometryAccessor(names[i]);\n }\n }\n\n var withGeometry = function (TBase, names) {\n if (names === void 0) { names = [ \"geometry\" ]; }\n\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }extendStatic(result, TBase);\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n\n return result;\n }(TBase));\n defineGeometryAccessors(result.prototype, names);\n\n return result;\n };\n\n var DEFAULT_STROKE = \"#000\";\n\n var Circle = (function (superclass) {\n function Circle(geometry, options) {\n if (geometry === void 0) { geometry = new Circle$2(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n extendStatic(Circle, superclass);\n Circle.prototype = Object.create( superclass && superclass.prototype );\n Circle.prototype.constructor = Circle;\n Circle.fn = Circle.prototype;\n Circle.fn.init = Circle.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Circle\";\n };\n\n Circle.prototype.rawBBox = function rawBBox () {\n return this._geometry.bbox();\n };\n\n Circle.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Circle.prototype._containsPoint = function _containsPoint (point) {\n return this.geometry().containsPoint(point);\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Circle.prototype, prototypeAccessors );\n\n return Circle;\n }(paintable(measurable(withGeometry(Element$1)))));\n\n var PRECISION = 10;\n\n function close$1(a, b, tolerance) {\n if (tolerance === void 0) { tolerance = PRECISION; }\n\n return round(Math.abs(a - b), tolerance) === 0;\n }\n\n function closeOrLess(a, b, tolerance) {\n return a < b || close$1(a, b, tolerance);\n }\n\n function lineIntersection(p0, p1, p2, p3) {\n var s1x = p1.x - p0.x;\n var s2x = p3.x - p2.x;\n var s1y = p1.y - p0.y;\n var s2y = p3.y - p2.y;\n var nx = p0.x - p2.x;\n var ny = p0.y - p2.y;\n var d = s1x * s2y - s2x * s1y;\n var s = (s1x * ny - s1y * nx) / d;\n var 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 }\n\n var MAX_INTERVAL = 45;\n var pow$1 = Math.pow;\n var accessors = [ \"radiusX\", \"radiusY\", \"startAngle\", \"endAngle\", \"anticlockwise\" ];\n\n var Arc$2 = (function (superclass) {\n function Arc(center, options) {\n if (center === void 0) { center = new Point(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this);\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 extendStatic(Arc, superclass);\n Arc.prototype = Object.create( superclass && superclass.prototype );\n Arc.prototype.constructor = Arc;\n Arc.fn = Arc.prototype;\n Arc.fn.init = Arc.fn.constructor;\n\n Arc.prototype.clone = function 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 Arc.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Arc.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Arc.prototype.pointAt = function pointAt (angle) {\n var center = this.center;\n var 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 Arc.prototype.curvePoints = function curvePoints () {\n var this$1$1 = this;\n\n var startAngle = this.startAngle;\n var dir = this.anticlockwise ? -1 : 1;\n var curvePoints = [ this.pointAt(startAngle) ];\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n var subIntervalAngle = intervalAngle / subIntervalsCount;\n var currentAngle = startAngle;\n var transformation;\n if (this.xRotation) {\n transformation = transform$1().rotate(this.xRotation, this.center);\n }\n\n for (var i = 1; i <= subIntervalsCount; i++) {\n var nextAngle = currentAngle + dir * subIntervalAngle;\n var points = this$1$1._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 Arc.prototype.bbox = function bbox (matrix) {\n var this$1$1 = this;\n\n var interval = this._arcInterval();\n var startAngle = interval.startAngle;\n var endAngle = interval.endAngle;\n var extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n var extremeX = deg(extremeAngles.x);\n var extremeY = deg(extremeAngles.y);\n var endPoint = this.pointAt(endAngle).transformCopy(matrix);\n var currentAngleX = bboxStartAngle(extremeX, startAngle);\n var currentAngleY = bboxStartAngle(extremeY, startAngle);\n var currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n var minPoint = Point.min(currentPoint, endPoint);\n var maxPoint = Point.max(currentPoint, endPoint);\n\n while (currentAngleX < endAngle || currentAngleY < endAngle) {\n var currentPointX = (void 0);\n if (currentAngleX < endAngle) {\n currentPointX = this$1$1.pointAt(currentAngleX).transformCopy(matrix);\n currentAngleX += 90;\n }\n\n var currentPointY = (void 0);\n if (currentAngleY < endAngle) {\n currentPointY = this$1$1.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 Arc.prototype._arcInterval = function _arcInterval () {\n var ref = this;\n var startAngle = ref.startAngle;\n var endAngle = ref.endAngle;\n var anticlockwise = ref.anticlockwise;\n\n if (anticlockwise) {\n var 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 Arc.prototype._intervalCurvePoints = function _intervalCurvePoints (startAngle, endAngle, transformation) {\n var p1 = this.pointAt(startAngle);\n var p2 = this.pointAt(endAngle);\n var p1Derivative = this._derivativeAt(startAngle);\n var p2Derivative = this._derivativeAt(endAngle);\n var t = (rad(endAngle) - rad(startAngle)) / 3;\n var cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n var 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 Arc.prototype._derivativeAt = function _derivativeAt (angle) {\n var radian = rad(angle);\n\n return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n };\n\n Arc.prototype.containsPoint = function containsPoint (point) {\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var ref = this;\n var center = ref.center;\n var radiusX = ref.radiusX;\n var radiusY = ref.radiusY;\n var distance = center.distanceTo(point);\n var angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n var pointRadius = (radiusX * radiusY) /\n Math.sqrt(pow$1(radiusX, 2) * pow$1(Math.sin(angleRad), 2) + pow$1(radiusY, 2) * pow$1(Math.cos(angleRad), 2));\n var startPoint = this.pointAt(this.startAngle).round(PRECISION);\n var endPoint = this.pointAt(this.endAngle).round(PRECISION);\n var intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n var containsPoint;\n\n if (intervalAngle < 180) {\n containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n } else {\n var angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var 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 Arc.prototype._isOnPath = function _isOnPath (point, width) {\n var interval = this._arcInterval();\n var center = this.center;\n var 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 var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n\n return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n };\n\n Arc.fromPoints = function fromPoints (start, end, rx, ry, largeArc, swipe, rotation) {// eslint-disable-line max-params\n var 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 return Arc;\n }(withAccessors(HasObservers, accessors)));\n\n function calculateAngle(cx, cy, rx, ry, x, y) {\n var cos = round((x - cx) / rx, 3);\n var sin = round((y - cy) / ry, 3);\n\n return round(deg(Math.atan2(sin, cos)));\n }\n\n function normalizeArcParameters(parameters) {\n var x1 = parameters.x1;\n var y1 = parameters.y1;\n var x2 = parameters.x2;\n var y2 = parameters.y2;\n var rx = parameters.rx;\n var ry = parameters.ry;\n var largeArc = parameters.largeArc;\n var swipe = parameters.swipe;\n var rotation = parameters.rotation; if (rotation === void 0) { rotation = 0; }\n\n var radians = rad(rotation);\n var cosine = Math.cos(radians);\n var sine = Math.sin(radians);\n\n var xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n var yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n\n var sign = largeArc !== swipe ? 1 : -1;\n\n var xt2 = Math.pow(xT, 2);\n var yt2 = Math.pow(yT, 2);\n var rx2 = Math.pow(rx, 2);\n var ry2 = Math.pow(ry, 2);\n\n var 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 var 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 var cxT = constT * (rx * yT) / ry;\n var cyT = - constT * (ry * xT) / rx;\n\n var cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n var cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n\n var uX = (xT - cxT) / rx;\n var uY = (yT - cyT) / ry;\n var vX = -(xT + cxT) / rx;\n var vY = -(yT + cyT) / ry;\n\n var startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n\n var angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n var 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 var endAngle = startAngle + angle;\n var 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\n function bboxStartAngle(angle, start) {\n var startAngle = angle;\n\n while (startAngle < start) {\n startAngle += 90;\n }\n\n return startAngle;\n }\n\n var push = [].push;\n var pop = [].pop;\n var splice = [].splice;\n var shift = [].shift;\n var slice = [].slice;\n var unshift = [].unshift;\n\n var ElementsArray = (function (HasObservers$$1) {\n function ElementsArray(array) {\n if (array === void 0) { array = []; }\n\n HasObservers$$1.call(this);\n\n this.length = 0;\n this._splice(0, array.length, array);\n }\n\n extendStatic(ElementsArray, HasObservers$$1);\n ElementsArray.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n ElementsArray.prototype.constructor = ElementsArray;\n ElementsArray.fn = ElementsArray.prototype;\n ElementsArray.fn.init = ElementsArray.fn.constructor;\n\n ElementsArray.prototype.elements = function 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 ElementsArray.prototype.push = function push$1 () {\n var elements = arguments;\n var result = push.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.slice = function slice$1 () {\n return slice.call(this);\n };\n\n ElementsArray.prototype.pop = function pop$1 () {\n var length = this.length;\n var result = pop.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.splice = function splice$1 (index, howMany) {\n var elements = slice.call(arguments, 2);\n var result = this._splice(index, howMany, elements);\n\n this._change();\n\n return result;\n };\n\n ElementsArray.prototype.shift = function shift$1 () {\n var length = this.length;\n var result = shift.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.unshift = function unshift$1 () {\n var elements = arguments;\n var result = unshift.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.indexOf = function indexOf (element) {\n var this$1$1 = this;\n\n var length = this.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (this$1$1[idx] === element) {\n return idx;\n }\n }\n return -1;\n };\n\n ElementsArray.prototype._splice = function _splice (index, howMany, elements) {\n var result = splice.apply(this, [ index, howMany ].concat(elements));\n\n this._clearObserver(result);\n this._setObserver(elements);\n\n return result;\n };\n\n ElementsArray.prototype._add = function _add (elements) {\n this._setObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._remove = function _remove (elements) {\n this._clearObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._setObserver = function _setObserver (elements) {\n var this$1$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].addObserver(this$1$1);\n }\n };\n\n ElementsArray.prototype._clearObserver = function _clearObserver (elements) {\n var this$1$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].removeObserver(this$1$1);\n }\n };\n\n ElementsArray.prototype._change = function _change () {};\n\n return ElementsArray;\n }(HasObservers));\n\n var GeometryElementsArray = (function (ElementsArray$$1) {\n function GeometryElementsArray () {\n ElementsArray$$1.apply(this, arguments);\n }\n\n extendStatic(GeometryElementsArray, ElementsArray$$1);\n GeometryElementsArray.prototype = Object.create( ElementsArray$$1 && ElementsArray$$1.prototype );\n GeometryElementsArray.prototype.constructor = GeometryElementsArray;\n GeometryElementsArray.fn = GeometryElementsArray.prototype;\n GeometryElementsArray.fn.init = GeometryElementsArray.fn.constructor;\n\n GeometryElementsArray.prototype._change = function _change () {\n this.geometryChange();\n };\n\n return GeometryElementsArray;\n }(ElementsArray));\n\n function isOutOfEndPoint(endPoint, controlPoint, point) {\n var angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n var rotatedPoint = point.transformCopy(transform$1().rotate(-angle, endPoint));\n\n return rotatedPoint.x < endPoint.x;\n }\n\n function calculateCurveAt(t, field, points) {\n var 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 }\n\n 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 }\n\n var ComplexNumber = (function (Class$$1) {\n function ComplexNumber(real, img) {\n if (real === void 0) { real = 0; }\n if (img === void 0) { img = 0; }\n\n Class$$1.call(this);\n\n this.real = real;\n this.img = img;\n }\n\n extendStatic(ComplexNumber, Class$$1);\n ComplexNumber.prototype = Object.create( Class$$1 && Class$$1.prototype );\n ComplexNumber.prototype.constructor = ComplexNumber;\n ComplexNumber.fn = ComplexNumber.prototype;\n ComplexNumber.fn.init = ComplexNumber.fn.constructor;\n\n ComplexNumber.prototype.add = function add (cNumber) {\n return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n };\n\n ComplexNumber.prototype.addConstant = function addConstant (value) {\n return new ComplexNumber(this.real + value, this.img);\n };\n\n ComplexNumber.prototype.negate = function negate () {\n return new ComplexNumber(-this.real, -this.img);\n };\n\n ComplexNumber.prototype.multiply = function 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 ComplexNumber.prototype.multiplyConstant = function multiplyConstant (value) {\n return new ComplexNumber(this.real * value, this.img * value);\n };\n\n ComplexNumber.prototype.nthRoot = function nthRoot (n) {\n var rad$$1 = Math.atan2(this.img, this.real);\n var r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n var nthR = Math.pow(r, 1 / n);\n\n return new ComplexNumber(nthR * Math.cos(rad$$1 / n), nthR * Math.sin(rad$$1 / n)); //Moivre's formula\n };\n\n ComplexNumber.prototype.equals = function equals (cNumber) {\n return this.real === cNumber.real && this.img === cNumber.img;\n };\n\n ComplexNumber.prototype.isReal = function isReal () {\n return this.img === 0;\n };\n\n return ComplexNumber;\n }(Class));\n\n function numberSign$1(x) {\n return x < 0 ? -1 : 1;\n }\n\n function solveQuadraticEquation(a, b, c) {\n var 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\n function solveCubicEquation(a, b, c, d) {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n\n var p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n var q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n var Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n var i = new ComplexNumber(0,1);\n var b3a = -b / (3 * a);\n var 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$1(x1) * Math.pow(Math.abs(x1), 1 / 3));\n x2 = -q / 2 - Math.sqrt(Q);\n x2 = new ComplexNumber(numberSign$1(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 var 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 }\n\n function hasRootsInRange(points, point, field, rootField, range) {\n var polynomial = toCubicPolynomial(points, rootField);\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n var intersection;\n\n for (var 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 }\n\n function curveIntersectionsCount(points, point, bbox) {\n var polynomial = toCubicPolynomial(points, \"x\");\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n var rayIntersection, intersectsRay;\n var count = 0;\n for (var i = 0; i < roots.length; i++) {\n rayIntersection = calculateCurveAt(roots[i], \"y\", points);\n intersectsRay = close$1(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 }\n\n function lineIntersectionsCount(a, b, point) {\n var intersects;\n if (a.x !== b.x) {\n var minX = Math.min(a.x, b.x);\n var maxX = Math.max(a.x, b.x);\n var minY = Math.min(a.y, b.y);\n var maxY = Math.max(a.y, b.y);\n var 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 }\n\n function pointAccessor(name) {\n var 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\n function definePointAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = pointAccessor(names[i]);\n }\n }\n\n var withPoints = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }extendStatic(result, TBase);\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n\n return result;\n }(TBase));\n definePointAccessors(result.prototype, names);\n\n return result;\n };\n\n var points = [ \"anchor\", \"controlIn\", \"controlOut\" ];\n\n var Segment = (function (superclass) {\n function Segment(anchor, controlIn, controlOut) {\n superclass.call(this);\n\n this.anchor(anchor || new Point());\n this.controlIn(controlIn);\n this.controlOut(controlOut);\n }\n\n extendStatic(Segment, superclass);\n Segment.prototype = Object.create( superclass && superclass.prototype );\n Segment.prototype.constructor = Segment;\n Segment.fn = Segment.prototype;\n Segment.fn.init = Segment.fn.constructor;\n\n Segment.prototype.bboxTo = function bboxTo (toSegment, matrix) {\n var segmentAnchor = this.anchor().transformCopy(matrix);\n var toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n var 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 Segment.prototype._lineBoundingBox = function _lineBoundingBox (p1, p2) {\n return Rect.fromPoints(p1, p2);\n };\n\n Segment.prototype._curveBoundingBox = function _curveBoundingBox (p1, cp1, cp2, p2) {\n var points = [ p1, cp1, cp2, p2 ];\n var extremesX = this._curveExtremesFor(points, \"x\");\n var extremesY = this._curveExtremesFor(points, \"y\");\n var xLimits = arrayLimits([ extremesX.min, extremesX.max, p1.x, p2.x ]);\n var 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 Segment.prototype._curveExtremesFor = function _curveExtremesFor (points, field) {\n var 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 Segment.prototype._curveExtremes = function _curveExtremes (x1, x2, x3, x4) {\n var a = x1 - 3 * x2 + 3 * x3 - x4;\n var b = - 2 * (x1 - 2 * x2 + x3);\n var c = x1 - x2;\n var sqrt = Math.sqrt(b * b - 4 * a * c);\n var t1 = 0;\n var 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 var min = Math.max(Math.min(t1, t2), 0);\n if (min < 0 || min > 1) {\n min = 0;\n }\n\n var 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 Segment.prototype._intersectionsTo = function _intersectionsTo (segment, point) {\n var 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 Segment.prototype._isOnCurveTo = function _isOnCurveTo (segment, point, width, endSegment) {\n var bbox = this.bboxTo(segment).expand(width, width);\n if (bbox.containsPoint(point)) {\n var p1 = this.anchor();\n var p2 = this.controlOut();\n var p3 = segment.controlIn();\n var 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 var points = [ p1, p2, p3, p4 ];\n if (hasRootsInRange(points, point, \"x\", \"y\", width) || hasRootsInRange(points, point, \"y\", \"x\", width)) {\n return true;\n }\n var rotation = transform$1().rotate(45, point);\n var 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 Segment.prototype._isOnLineTo = function _isOnLineTo (segment, point, width) {\n var p1 = this.anchor();\n var p2 = segment.anchor();\n var angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n var rect = new Rect([ p1.x, p1.y - width / 2 ], [ p1.distanceTo(p2), width ]);\n return rect.containsPoint(point.transformCopy(transform$1().rotate(-angle, p1)));\n };\n\n Segment.prototype._isOnPathTo = function _isOnPathTo (segment, point, width, endSegment) {\n var 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 return Segment;\n }(withPoints(HasObservers, points)));\n\n function arrayLimits(arr) {\n var length = arr.length;\n var min = MAX_NUM;\n var max = MIN_NUM;\n\n for (var 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\n var geometry = {\n \tCircle: Circle$2,\n \tArc: Arc$2,\n \tRect: Rect,\n \tPoint: Point,\n \tSegment: Segment,\n \tMatrix: Matrix,\n \tSize: Size,\n \ttoMatrix: toMatrix,\n \tTransformation: Transformation,\n \ttransform: transform$1\n };\n\n var WEIGHT = 0.333;\n var EXTREMUM_ALLOWED_DEVIATION = 0.01;\n var X = \"x\";\n var Y = \"y\";\n\n function pointsToCurve(pointsIn, closed) {\n var points = pointsIn.slice(0);\n var segments = [];\n var 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 var p0 = points[0];\n var p1 = points[1];\n var 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 var 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 var initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n var controlPoints = getControlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n var tangent$1 = getTangent(p0, p1, X,Y);\n initialControlPoint = firstControlPoint(tangent$1, p0, p1, X, Y);\n }\n\n var cp0 = initialControlPoint;\n for (var 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 var controlPoints$1 = getControlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints$1[1];\n\n var cp1 = controlPoints$1[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 var controlPoints$2 = getControlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p1,\n controlPoints$2[0]\n ));\n\n last(segments).controlOut(controlPoints$2[1]);\n segments.push(new Segment(\n p2,\n lastControlPoint\n ));\n } else {\n var tangent$2 = getTangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p2,\n secondControlPoint(tangent$2, p1, p2, X, Y)\n ));\n }\n\n return segments;\n }\n\n 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\n function invertAxis(p0, p1, p2) {\n var 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 var fn = lineFunction(p0,p1);\n var 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\n function isLine(p0, p1, p2) {\n var fn = lineFunction(p0, p1);\n var 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\n function lineFunction(p1, p2) {\n var a = (p2.y - p1.y) / (p2.x - p1.x);\n var b = p1.y - a * p1.x;\n\n return [ b, a ];\n }\n\n function getControlPoints(p0, p1, p2) {\n var xField = X;\n var yField = Y;\n var restrict = false;\n var switchOrientation = false;\n var tangent;\n\n if (isLine(p0, p1, p2)) {\n tangent = getTangent(p0, p1, X, Y);\n } else {\n var 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 var 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 var secondCP = secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n var oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n var 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\n 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\n function getTangent(p0, p1, xField, yField) {\n var x = p1[xField] - p0[xField];\n var y = p1[yField] - p0[yField];\n var tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n }\n\n 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\n function firstControlPoint(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n }\n\n function secondControlPoint(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n }\n\n function point(xValue, yValue, xField, yField) {\n var controlPoint = new Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n }\n\n function calculateFunction(fn, x) {\n var length = fn.length;\n var result = 0;\n\n for (var i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n }\n\n function numberSign(value) {\n return value <= 0 ? -1 : 1;\n }\n\n var ShapeMap = {\n l: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 2) {\n var 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 var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 6) {\n var controlOut = new Point(parameters[i], parameters[i + 1]);\n var controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n var 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 var 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 var 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 var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 7) {\n var radiusX = parameters[i];\n var radiusY = parameters[i + 1];\n var rotation = parameters[i + 2];\n var largeArc = parameters[i + 3];\n var swipe = parameters[i + 4];\n var 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 var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var lastControlIn;\n\n if (previousCommand === \"s\" || previousCommand === \"c\") {\n lastControlIn = last(last(path.paths).segments).controlIn();\n }\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlIn = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n var controlOut = (void 0);\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 var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlPoint = new Point(parameters[i], parameters[i + 1]);\n var 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 var 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 var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var controlPoint;\n\n if (previousCommand === \"q\" || previousCommand === \"t\") {\n var 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 (var i = 0; i < parameters.length; i += 2) {\n var 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 var 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\n function toLineParamaters(parameters, isVertical, value) {\n var insertPosition = isVertical ? 0 : 1;\n\n for (var i = 0; i < parameters.length; i += 2) {\n parameters.splice(i + insertPosition, 0, value);\n }\n }\n\n function reflectionPoint(point, center) {\n if (point && center) {\n return center.scaleCopy(2).translate(-point.x, -point.y);\n }\n }\n\n var third = 1 / 3;\n\n function quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n var 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\n var SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\n var SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\n var MOVE = \"m\";\n var CLOSE = \"z\";\n\n function parseParameters(str) {\n var parameters = [];\n str.replace(SPLIT_REGEX, function(match, number) {\n parameters.push(parseFloat(number));\n });\n return parameters;\n }\n\n function parsePath(pathInstance, str) {\n var position = new Point();\n var previousCommand;\n\n str.replace(SEGMENT_REGEX, function (match, element, params, closePath) {\n var command = element.toLowerCase();\n var isRelative = command === element;\n var 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\n function elementsBoundingBox(elements, applyTransform, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var 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 function elementsClippedBoundingBox(elements, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var 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 }\n\n var SPACE = ' ';\n var printPoints = function (precision) { return function () {\n var points = [], len = arguments.length;\n while ( len-- ) points[ len ] = arguments[ len ];\n\n return points.map(function (p) { return p.toString(precision); }).join(SPACE);\n } };\n var segmentType = function (segmentStart, segmentEnd) { return segmentStart.controlOut() && segmentEnd.controlIn() ? 'C' : 'L'; };\n\n var Path = (function (superclass) {\n function Path(options) {\n superclass.call(this, 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 extendStatic(Path, superclass);\n Path.prototype = Object.create( superclass && superclass.prototype );\n Path.prototype.constructor = Path;\n Path.fn = Path.prototype;\n Path.fn.init = Path.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return 'Path';\n };\n\n Path.prototype.moveTo = function 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 Path.prototype.lineTo = function lineTo (x, y) {\n var point$$1 = defined(y) ? new Point(x, y) : x;\n var segment = new Segment(point$$1);\n\n this.segments.push(segment);\n\n return this;\n };\n\n Path.prototype.curveTo = function curveTo (controlOut, controlIn, point$$1) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var segment = new Segment(point$$1, 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 Path.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var start = rad(startAngle);\n var center = new Point(anchor.x - radiusX * Math.cos(start),\n anchor.y - radiusY * Math.sin(start));\n var arc = new Arc$2(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 Path.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var arc = Arc$2.fromPoints(anchor, Point.create(end), rx, ry, largeArc, swipe, rotation);\n\n this._addArcSegments(arc);\n }\n return this;\n };\n\n Path.prototype._addArcSegments = function _addArcSegments (arc) {\n var this$1$1 = this;\n\n this.suspend();\n\n var curvePoints = arc.curvePoints();\n\n for (var i = 1; i < curvePoints.length; i += 3) {\n this$1$1.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n\n this.resume();\n this.geometryChange();\n };\n\n Path.prototype.close = function close () {\n this.options.closed = true;\n this.geometryChange();\n\n return this;\n };\n\n Path.prototype.rawBBox = function rawBBox () {\n return this._bbox();\n };\n\n Path.prototype.toString = function toString (digits) {\n var output = '';\n\n var segments = this.segments;\n var length = segments.length;\n if (length > 0) {\n var parts = [];\n var print = printPoints(digits);\n var currentType;\n\n for (var i = 1; i < length; i++) {\n var 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 Path.prototype._containsPoint = function _containsPoint (point$$1) {\n var segments = this.segments;\n var length = segments.length;\n var intersectionsCount = 0;\n var previous, current;\n\n for (var idx = 1; idx < length; idx++) {\n previous = segments[idx - 1];\n current = segments[idx];\n intersectionsCount += previous._intersectionsTo(current, point$$1);\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$$1);\n }\n\n return intersectionsCount % 2 !== 0;\n };\n\n Path.prototype._isOnPath = function _isOnPath (point$$1, width) {\n var segments = this.segments;\n var length = segments.length;\n var pathWidth = width || this.options.stroke.width;\n\n if (length > 1) {\n if (segments[0]._isOnPathTo(segments[1], point$$1, pathWidth, 'start')) {\n return true;\n }\n\n for (var idx = 2; idx <= length - 2; idx++) {\n if (segments[idx - 1]._isOnPathTo(segments[idx], point$$1, pathWidth)) {\n return true;\n }\n }\n\n if (segments[length - 2]._isOnPathTo(segments[length - 1], point$$1, pathWidth, 'end')) {\n return true;\n }\n }\n return false;\n };\n\n Path.prototype._bbox = function _bbox (matrix) {\n var segments = this.segments;\n var length = segments.length;\n var boundingBox;\n\n if (length === 1) {\n var anchor = segments[0].anchor().transformCopy(matrix);\n boundingBox = new Rect(anchor, Size.ZERO);\n } else if (length > 0) {\n for (var i = 1; i < length; i++) {\n var 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 Path.parse = function parse (str, options) {\n return MultiPath.parse(str, options);\n };\n\n Path.fromRect = function fromRect (rect, options) {\n var path = new Path(options);\n var ref = rect.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\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 var origin = rect.origin;\n var x = origin.x;\n var y = origin.y;\n var width = rect.width();\n var 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 Path.fromPoints = function fromPoints (points, options) {\n if (points) {\n var path = new Path(options);\n\n for (var i = 0; i < points.length; i++) {\n var point$$1 = Point.create(points[i]);\n if (point$$1) {\n if (i === 0) {\n path.moveTo(point$$1);\n } else {\n path.lineTo(point$$1);\n }\n }\n }\n\n return path;\n }\n };\n\n Path.curveFromPoints = function curveFromPoints (points, options) {\n if (points) {\n var segments = pointsToCurve(points);\n var path = new Path(options);\n path.segments.push.apply(path.segments, segments);\n\n return path;\n }\n };\n\n Path.fromArc = function fromArc (arc, options) {\n var path = new Path(options);\n var startAngle = arc.startAngle;\n var 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 Object.defineProperties( Path.prototype, prototypeAccessors );\n\n return Path;\n }(paintable(measurable(Element$1))));\n\n var MultiPath = (function (superclass) {\n function MultiPath(options) {\n superclass.call(this, 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 extendStatic(MultiPath, superclass);\n MultiPath.prototype = Object.create( superclass && superclass.prototype );\n MultiPath.prototype.constructor = MultiPath;\n MultiPath.fn = MultiPath.prototype;\n MultiPath.fn.init = MultiPath.fn.constructor;\n\n var prototypeAccessors$1 = { nodeType: {} };\n\n MultiPath.parse = function parse (str, options) {\n var instance = new MultiPath(options);\n return parsePath(instance, str);\n };\n\n MultiPath.prototype.toString = function toString (digits) {\n var paths = this.paths;\n var output = '';\n\n if (paths.length > 0) {\n var result = [];\n\n for (var 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 prototypeAccessors$1.nodeType.get = function () {\n return 'MultiPath';\n };\n\n MultiPath.prototype.moveTo = function moveTo (x, y) {\n var path = new Path();\n path.moveTo(x, y);\n\n this.paths.push(path);\n\n return this;\n };\n\n MultiPath.prototype.lineTo = function lineTo (x, y) {\n if (this.paths.length > 0) {\n last(this.paths).lineTo(x, y);\n }\n\n return this;\n };\n\n MultiPath.prototype.curveTo = function curveTo (controlOut, controlIn, point$$1) {\n if (this.paths.length > 0) {\n last(this.paths).curveTo(controlOut, controlIn, point$$1);\n }\n\n return this;\n };\n\n MultiPath.prototype.arc = function 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 MultiPath.prototype.arcTo = function 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 MultiPath.prototype.close = function close () {\n if (this.paths.length > 0) {\n last(this.paths).close();\n }\n\n return this;\n };\n\n MultiPath.prototype._bbox = function _bbox (matrix) {\n return elementsBoundingBox(this.paths, true, matrix);\n };\n\n MultiPath.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.paths, false);\n };\n\n MultiPath.prototype._containsPoint = function _containsPoint (point$$1) {\n var paths = this.paths;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._containsPoint(point$$1)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._isOnPath = function _isOnPath (point$$1) {\n var paths = this.paths;\n var width = this.options.stroke.width;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._isOnPath(point$$1, width)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n };\n\n Object.defineProperties( MultiPath.prototype, prototypeAccessors$1 );\n\n return MultiPath;\n }(paintable(measurable(Element$1))));\n\n var DEFAULT_STROKE$1 = \"#000\";\n\n var Arc = (function (superclass) {\n function Arc(geometry, options) {\n if (geometry === void 0) { geometry = new Arc$2(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE$1);\n }\n }\n\n extendStatic(Arc, superclass);\n Arc.prototype = Object.create( superclass && superclass.prototype );\n Arc.prototype.constructor = Arc;\n Arc.fn = Arc.prototype;\n Arc.fn.init = Arc.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Arc\";\n };\n\n Arc.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Arc.prototype.rawBBox = function rawBBox () {\n return this.geometry().bbox();\n };\n\n Arc.prototype.toPath = function toPath () {\n var path = new Path();\n var curvePoints = this.geometry().curvePoints();\n\n if (curvePoints.length > 0) {\n path.moveTo(curvePoints[0].x, curvePoints[0].y);\n\n for (var 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 Arc.prototype._containsPoint = function _containsPoint (point) {\n return this.geometry().containsPoint(point);\n };\n\n Arc.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Arc.prototype, prototypeAccessors );\n\n return Arc;\n }(paintable(measurable(withGeometry(Element$1)))));\n\n var DEFAULT_FONT = \"12px sans-serif\";\n var DEFAULT_FILL = \"#000\";\n\n var Text = (function (superclass) {\n function Text(content, position, options) {\n if (position === void 0) { position = new Point(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, 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 extendStatic(Text, superclass);\n Text.prototype = Object.create( superclass && superclass.prototype );\n Text.prototype.constructor = Text;\n Text.fn = Text.prototype;\n Text.fn.init = Text.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Text\";\n };\n\n Text.prototype.content = function 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 Text.prototype.measure = function measure () {\n var metrics = kendoUtil.measureText(this.content(), {\n font: this.options.get(\"font\")\n });\n\n return metrics;\n };\n\n Text.prototype.rect = function rect () {\n var size = this.measure();\n var pos = this.position().clone();\n return new Rect(pos, [ size.width, size.height ]);\n };\n\n Text.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this.rect().bbox(combinedMatrix);\n };\n\n Text.prototype.rawBBox = function rawBBox () {\n return this.rect().bbox();\n };\n\n Text.prototype._containsPoint = function _containsPoint (point) {\n return this.rect().containsPoint(point);\n };\n\n Object.defineProperties( Text.prototype, prototypeAccessors );\n\n return Text;\n }(paintable(withPoints(Element$1, [ \"position\" ]))));\n\n var Image$1 = (function (superclass) {\n function Image(src, rect, options) {\n if (rect === void 0) { rect = new Rect(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.src(src);\n this.rect(rect);\n }\n\n extendStatic(Image, superclass);\n Image.prototype = Object.create( superclass && superclass.prototype );\n Image.prototype.constructor = Image;\n Image.fn = Image.prototype;\n Image.fn.init = Image.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Image\";\n };\n\n Image.prototype.src = function 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 Image.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this._rect.bbox(combinedMatrix);\n };\n\n Image.prototype.rawBBox = function rawBBox () {\n return this._rect.bbox();\n };\n\n Image.prototype._containsPoint = function _containsPoint (point) {\n return this._rect.containsPoint(point);\n };\n\n Image.prototype._hasFill = function _hasFill () {\n return this.src();\n };\n\n Object.defineProperties( Image.prototype, prototypeAccessors );\n\n return Image;\n }(withGeometry(Element$1, [ \"rect\" ])));\n\n var traversable = function (TBase, childrenField) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n extendStatic(anonymous, TBase);\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n\n anonymous.prototype.traverse = function traverse (callback) {\n var children = this[childrenField];\n\n for (var i = 0; i < children.length; i++) {\n var 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 return anonymous;\n }(TBase))\n ); };\n\n var Group = (function (superclass) {\n function Group(options) {\n superclass.call(this, options);\n this.children = [];\n }\n\n extendStatic(Group, superclass);\n Group.prototype = Object.create( superclass && superclass.prototype );\n Group.prototype.constructor = Group;\n Group.fn = Group.prototype;\n Group.fn.init = Group.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Group\";\n };\n\n Group.prototype.childrenChange = function childrenChange (action, items, index) {\n this.trigger(\"childrenChange\",{\n action: action,\n items: items,\n index: index\n });\n };\n\n Group.prototype.append = function append$1 () {\n append$1$1(this.children, arguments);\n this._reparent(arguments, this);\n\n this.childrenChange(\"add\", arguments);\n\n return this;\n };\n\n Group.prototype.insert = function 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 Group.prototype.insertAt = function insertAt (element, index) {\n return this.insert(index, element);\n };\n\n Group.prototype.remove = function remove (element) {\n var 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 Group.prototype.removeAt = function removeAt (index) {\n if (0 <= index && index < this.children.length) {\n var 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 Group.prototype.clear = function clear () {\n var 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 Group.prototype.bbox = function bbox (transformation) {\n return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n };\n\n Group.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.children, false);\n };\n\n Group.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n };\n\n Group.prototype.currentTransform = function currentTransform (transformation) {\n return Element$1.prototype.currentTransform.call(this, transformation) || null;\n };\n\n Group.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var children = this.children;\n var transform = this.currentTransform(parentTransform);\n for (var 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 Group.prototype._reparent = function _reparent (elements, newParent) {\n var this$1$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var child = elements[i];\n var parent = child.parent;\n if (parent && parent !== this$1$1 && parent.remove) {\n parent.remove(child);\n }\n\n child.parent = newParent;\n }\n };\n\n Object.defineProperties( Group.prototype, prototypeAccessors );\n\n return Group;\n }(traversable(Element$1, \"children\")));\n\n function translateToPoint(point, bbox, element) {\n var transofrm = element.transform() || transform$1();\n var 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 }\n\n function alignStart(size, rect, align, axis, sizeField) {\n var 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 }\n\n function alignStartReverse(size, rect, align, axis, sizeField) {\n var 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 }\n\n var 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\n var forEach = function (elements, callback) {\n elements.forEach(callback);\n };\n\n var forEachReverse = function (elements, callback) {\n var length = elements.length;\n\n for (var idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx);\n }\n };\n\n var Layout = (function (Group$$1) {\n function Layout(rect, options) {\n Group$$1.call(this, $.extend({}, DEFAULT_OPTIONS, options));\n this._rect = rect;\n this._fieldMap = {};\n }\n\n extendStatic(Layout, Group$$1);\n Layout.prototype = Object.create( Group$$1 && Group$$1.prototype );\n Layout.prototype.constructor = Layout;\n Layout.fn = Layout.prototype;\n Layout.fn.init = Layout.fn.constructor;\n\n Layout.prototype.rect = function rect (value) {\n if (value) {\n this._rect = value;\n return this;\n }\n\n return this._rect;\n };\n\n Layout.prototype._initMap = function _initMap () {\n var options = this.options;\n var 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 Layout.prototype.reflow = function reflow () {\n var this$1$1 = this;\n\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 var options = this.options;\n var rect = this._rect;\n var ref = this._initGroups();\n var groups = ref.groups;\n var groupsSize = ref.groupsSize;\n var ref$1 = this._fieldMap;\n var sizeField = ref$1.sizeField;\n var groupsSizeField = ref$1.groupsSizeField;\n var groupAxis = ref$1.groupAxis;\n var groupsAxis = ref$1.groupsAxis;\n var groupOrigin = new Point();\n var elementOrigin = new Point();\n var size = new Size();\n var groupStart = alignStart(groupsSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var elementStart, group, groupBox;\n\n var arrangeElements = function (bbox, idx) {\n var 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 (var groupIdx = 0; groupIdx < groups.length; groupIdx++) {\n group = groups[groupIdx];\n groupOrigin[groupAxis] = elementStart = this$1$1.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$1$1.forEach(group.bboxes, arrangeElements);\n\n groupStart += group.lineSize + options.lineSpacing;\n }\n\n if (!options.wrap && group.size > rect.size[sizeField]) {\n var scale = rect.size[sizeField] / groupBox.size[sizeField];\n var scaledStart = groupBox.topLeft().scale(scale, scale);\n var scaledSize = groupBox.size[groupsSizeField] * scale;\n var newStart = alignStart(scaledSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var transform = transform$1();\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 Layout.prototype._initGroups = function _initGroups () {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var lineSpacing = options.lineSpacing;\n var wrap = options.wrap;\n var spacing = options.spacing;\n var sizeField = this._fieldMap.sizeField;\n var group = this._newGroup();\n var groups = [];\n var addGroup = function() {\n groups.push(group);\n groupsSize += group.lineSize + lineSpacing;\n };\n var groupsSize = -lineSpacing;\n\n for (var idx = 0; idx < children.length; idx++) {\n var element = children[idx];\n var bbox = children[idx].clippedBBox();\n if (element.visible() && bbox) {\n if (wrap && group.size + bbox.size[sizeField] + spacing > this$1$1._rect.size[sizeField]) {\n if (group.bboxes.length === 0) {\n this$1$1._addToGroup(group, bbox, element);\n addGroup();\n group = this$1$1._newGroup();\n } else {\n addGroup();\n group = this$1$1._newGroup();\n this$1$1._addToGroup(group, bbox, element);\n }\n } else {\n this$1$1._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 Layout.prototype._addToGroup = function _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 Layout.prototype._newGroup = function _newGroup () {\n return {\n lineSize: 0,\n size: -this.options.spacing,\n bboxes: [],\n elements: []\n };\n };\n\n return Layout;\n }(Group));\n\n var Rect$2 = (function (superclass) {\n function Rect$$1(geometry, options) {\n if (geometry === void 0) { geometry = new Rect(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n }\n }\n\n extendStatic(Rect$$1, superclass);\n Rect$$1.prototype = Object.create( superclass && superclass.prototype );\n Rect$$1.prototype.constructor = Rect$$1;\n Rect$$1.fn = Rect$$1.prototype;\n Rect$$1.fn.init = Rect$$1.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Rect\";\n };\n\n Rect$$1.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Rect$$1.prototype.rawBBox = function rawBBox () {\n return this._geometry.bbox();\n };\n\n Rect$$1.prototype._containsPoint = function _containsPoint (point) {\n return this._geometry.containsPoint(point);\n };\n\n Rect$$1.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Rect$$1.prototype, prototypeAccessors );\n\n return Rect$$1;\n }(paintable(measurable(withGeometry(Element$1)))));\n\n function alignElements(elements, rect, alignment, axis, sizeField) {\n for (var idx = 0; idx < elements.length; idx++) {\n var bbox = elements[idx].clippedBBox();\n if (bbox) {\n var point = bbox.origin.clone();\n point[axis] = alignStart(bbox.size[sizeField], rect, alignment || \"start\", axis, sizeField);\n translateToPoint(point, bbox, elements[idx]);\n }\n }\n }\n\n function align(elements, rect, alignment) {\n alignElements(elements, rect, alignment, \"x\", \"width\");\n }\n\n function vAlign(elements, rect, alignment) {\n alignElements(elements, rect, alignment, \"y\", \"height\");\n }\n\n function stackElements(elements, stackAxis, otherAxis, sizeField) {\n if (elements.length > 1) {\n var origin = new Point();\n var previousBBox = elements[0].bbox;\n\n for (var idx = 1; idx < elements.length; idx++) {\n var element = elements[idx].element;\n var bbox = elements[idx].bbox;\n origin[stackAxis] = previousBBox.origin[stackAxis] + previousBBox.size[sizeField];\n origin[otherAxis] = bbox.origin[otherAxis];\n translateToPoint(origin, bbox, element);\n bbox.origin[stackAxis] = origin[stackAxis];\n previousBBox = bbox;\n }\n }\n }\n\n function createStackElements(elements) {\n var stackElements = [];\n\n for (var idx = 0; idx < elements.length; idx++) {\n var element = elements[idx];\n var bbox = element.clippedBBox();\n if (bbox) {\n stackElements.push({\n element: element,\n bbox: bbox\n });\n }\n }\n\n return stackElements;\n }\n\n function stack(elements) {\n stackElements(createStackElements(elements), \"x\", \"y\", \"width\");\n }\n\n function vStack(elements) {\n stackElements(createStackElements(elements), \"y\", \"x\", \"height\");\n }\n\n function getStacks(elements, rect, sizeField) {\n var maxSize = rect.size[sizeField];\n var stacks = [];\n var stack = [];\n var stackSize = 0;\n var element, bbox;\n\n var addElementToStack = function() {\n stack.push({\n element: element,\n bbox: bbox\n });\n };\n\n for (var idx = 0; idx < elements.length; idx++) {\n element = elements[idx];\n\n bbox = element.clippedBBox();\n if (bbox) {\n var size = bbox.size[sizeField];\n if (stackSize + size > maxSize) {\n if (stack.length) {\n stacks.push(stack);\n stack = [];\n addElementToStack();\n stackSize = size;\n } else {\n addElementToStack();\n stacks.push(stack);\n stack = [];\n stackSize = 0;\n }\n } else {\n addElementToStack();\n stackSize += size;\n }\n }\n }\n\n if (stack.length) {\n stacks.push(stack);\n }\n\n return stacks;\n }\n\n function wrapElements(elements, rect, axis, otherAxis, sizeField) {\n var stacks = getStacks(elements, rect, sizeField);\n var origin = rect.origin.clone();\n var result = [];\n\n for (var idx = 0; idx < stacks.length; idx++) {\n var stack = stacks[idx];\n var startElement = stack[0];\n origin[otherAxis] = startElement.bbox.origin[otherAxis];\n translateToPoint(origin, startElement.bbox, startElement.element);\n startElement.bbox.origin[axis] = origin[axis];\n stackElements(stack, axis, otherAxis, sizeField);\n result.push([]);\n for (var elementIdx = 0; elementIdx < stack.length; elementIdx++) {\n result[idx].push(stack[elementIdx].element);\n }\n }\n return result;\n }\n\n function wrap(elements, rect) {\n return wrapElements(elements, rect, \"x\", \"y\", \"width\");\n }\n\n function vWrap(elements, rect) {\n return wrapElements(elements, rect, \"y\", \"x\", \"height\");\n }\n\n function fit(element, rect) {\n var bbox = element.clippedBBox();\n if (bbox) {\n var elementSize = bbox.size;\n var rectSize = rect.size;\n if (rectSize.width < elementSize.width || rectSize.height < elementSize.height) {\n var scale = Math.min(rectSize.width / elementSize.width, rectSize.height / elementSize.height);\n var transform = element.transform() || transform$1();\n transform.scale(scale, scale);\n element.transform(transform);\n }\n }\n }\n\n var StopsArray = (function (ElementsArray$$1) {\n function StopsArray () {\n ElementsArray$$1.apply(this, arguments);\n }\n\n extendStatic(StopsArray, ElementsArray$$1);\n StopsArray.prototype = Object.create( ElementsArray$$1 && ElementsArray$$1.prototype );\n StopsArray.prototype.constructor = StopsArray;\n StopsArray.fn = StopsArray.prototype;\n StopsArray.fn.init = StopsArray.fn.constructor;\n\n StopsArray.prototype._change = function _change () {\n this.optionsChange({\n field: \"stops\"\n });\n };\n\n return StopsArray;\n }(ElementsArray));\n\n function 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\n function defineOptionsAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = optionsAccessor(names[i]);\n }\n }\n\n var withOptions = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }extendStatic(result, TBase);\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n\n return result;\n }(TBase));\n defineOptionsAccessors(result.prototype, names);\n\n return result;\n };\n\n var options = [ \"offset\", \"color\", \"opacity\" ];\n\n var GradientStop = (function (superclass) {\n function GradientStop(offset, color, opacity) {\n superclass.call(this);\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 extendStatic(GradientStop, superclass);\n GradientStop.prototype = Object.create( superclass && superclass.prototype );\n GradientStop.prototype.constructor = GradientStop;\n GradientStop.fn = GradientStop.prototype;\n GradientStop.fn.init = GradientStop.fn.constructor;\n\n GradientStop.create = function create (arg) {\n if (defined(arg)) {\n var 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 return GradientStop;\n }(withOptions(HasObservers, options)));\n\n var Gradient = (function (HasObservers$$1) {\n function Gradient(options) {\n if (options === void 0) { options = {}; }\n\n HasObservers$$1.call(this);\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 extendStatic(Gradient, HasObservers$$1);\n Gradient.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n Gradient.prototype.constructor = Gradient;\n Gradient.fn = Gradient.prototype;\n Gradient.fn.init = Gradient.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Gradient\";\n };\n\n Gradient.prototype.userSpace = function 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 Gradient.prototype._createStops = function _createStops (stops) {\n if (stops === void 0) { stops = []; }\n\n var result = [];\n for (var idx = 0; idx < stops.length; idx++) {\n result.push(GradientStop.create(stops[idx]));\n }\n\n return result;\n };\n\n Gradient.prototype.addStop = function addStop (offset, color, opacity) {\n this.stops.push(new GradientStop(offset, color, opacity));\n };\n\n Gradient.prototype.removeStop = function removeStop (stop) {\n var index = this.stops.indexOf(stop);\n if (index >= 0) {\n this.stops.splice(index, 1);\n }\n };\n\n Gradient.prototype.optionsChange = function optionsChange (e) {\n this.trigger(\"optionsChange\", {\n field: \"gradient\" + (e ? \".\" + e.field : \"\"),\n value: this\n });\n };\n\n Gradient.prototype.geometryChange = function geometryChange () {\n this.optionsChange();\n };\n\n Object.defineProperties( Gradient.prototype, prototypeAccessors );\n\n return Gradient;\n }(HasObservers));\n\n var points$1 = [ \"start\", \"end\" ];\n\n var LinearGradient = (function (superclass) {\n function LinearGradient(options) {\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.start(options.start || new Point());\n this.end(options.end || new Point(1, 0));\n }\n\n extendStatic(LinearGradient, superclass);\n LinearGradient.prototype = Object.create( superclass && superclass.prototype );\n LinearGradient.prototype.constructor = LinearGradient;\n LinearGradient.fn = LinearGradient.prototype;\n LinearGradient.fn.init = LinearGradient.fn.constructor;\n\n return LinearGradient;\n }(withPoints(Gradient, points$1)));\n\n var RadialGradient = (function (superclass) {\n function RadialGradient(options) {\n if (options === void 0) { options = {}; }\n\n superclass.call(this, 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 extendStatic(RadialGradient, superclass);\n RadialGradient.prototype = Object.create( superclass && superclass.prototype );\n RadialGradient.prototype.constructor = RadialGradient;\n RadialGradient.fn = RadialGradient.prototype;\n RadialGradient.fn.init = RadialGradient.fn.constructor;\n\n RadialGradient.prototype.radius = function 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 RadialGradient.prototype.fallbackFill = function 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 return RadialGradient;\n }(withPoints(Gradient, [ \"center\" ])));\n\n function swing(position) {\n return 0.5 - Math.cos(position * Math.PI) / 2;\n }\n\n function linear(position) {\n return position;\n }\n\n function easeOutElastic(position, time, start, diff) {\n var 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\n var easingFunctions = {\n \tswing: swing,\n \tlinear: linear,\n \teaseOutElastic: easeOutElastic\n };\n\n var instance;\n\n var AnimationFactory = (function (Class$$1) {\n function AnimationFactory() {\n Class$$1.call(this);\n\n this._items = [];\n }\n\n extendStatic(AnimationFactory, Class$$1);\n AnimationFactory.prototype = Object.create( Class$$1 && Class$$1.prototype );\n AnimationFactory.prototype.constructor = AnimationFactory;\n AnimationFactory.fn = AnimationFactory.prototype;\n AnimationFactory.fn.init = AnimationFactory.fn.constructor;\n\n var staticAccessors = { current: {} };\n\n staticAccessors.current.get = function () {\n if (!instance) {\n instance = new AnimationFactory();\n }\n\n return instance;\n };\n\n AnimationFactory.prototype.register = function register (name, type) {\n this._items.push({\n name: name,\n type: type\n });\n };\n\n AnimationFactory.prototype.create = function create (element, options) {\n var items = this._items;\n var match;\n\n if (options && options.type) {\n var type = options.type.toLowerCase();\n for (var 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 Object.defineProperties( AnimationFactory, staticAccessors );\n\n return AnimationFactory;\n }(Class));\n\n var Animation = (function (Class$$1) {\n function Animation(element, options) {\n Class$$1.call(this);\n\n this.options = $.extend({}, this.options, options);\n this.element = element;\n }\n\n extendStatic(Animation, Class$$1);\n Animation.prototype = Object.create( Class$$1 && Class$$1.prototype );\n Animation.prototype.constructor = Animation;\n Animation.fn = Animation.prototype;\n Animation.fn.init = Animation.fn.constructor;\n\n var prototypeAccessors = { options: {} };\n\n Animation.create = function create (type, element, options) {\n return AnimationFactory.current.create(type, element, options);\n };\n\n prototypeAccessors.options.get = function () {\n return this._options || {\n duration: 500,\n easing: \"swing\"\n };\n };\n\n prototypeAccessors.options.set = function (value) {\n this._options = value;\n };\n\n Animation.prototype.setup = function setup () {};\n Animation.prototype.step = function step () {};\n\n Animation.prototype.play = function play () {\n var this$1$1 = this;\n\n var options = this.options;\n var duration = options.duration;\n var delay = options.delay; if (delay === void 0) { delay = 0; }\n var easing = easingFunctions[options.easing];\n var start = now() + delay;\n var finish = start + duration;\n\n if (duration === 0) {\n this.step(1);\n this.abort();\n } else {\n setTimeout(function () {\n var loop = function () {\n if (this$1$1._stopped) {\n return;\n }\n\n var wallTime = now();\n\n var time = limitValue(wallTime - start, 0, duration);\n var position = time / duration;\n var easingPosition = easing(position, time, 0, 1, duration);\n\n this$1$1.step(easingPosition);\n\n if (wallTime < finish) {\n kendo.animationFrame(loop);\n } else {\n this$1$1.abort();\n }\n };\n\n loop();\n }, delay);\n }\n };\n\n Animation.prototype.abort = function abort () {\n this._stopped = true;\n };\n\n Animation.prototype.destroy = function destroy () {\n this.abort();\n };\n\n Object.defineProperties( Animation.prototype, prototypeAccessors );\n\n return Animation;\n }(Class));\n\n var instance$1;\n\n var PathParser = (function (Class$$1) {\n function PathParser () {\n Class$$1.apply(this, arguments);\n }\n\n extendStatic(PathParser, Class$$1);\n PathParser.prototype = Object.create( Class$$1 && Class$$1.prototype );\n PathParser.prototype.constructor = PathParser;\n PathParser.fn = PathParser.prototype;\n PathParser.fn.init = PathParser.fn.constructor;\n\n var staticAccessors = { current: {} };\n\n staticAccessors.current.get = function () {\n if (!instance$1) {\n instance$1 = new PathParser();\n }\n\n return instance$1;\n };\n\n PathParser.prototype.parse = function parse (str, options) {\n var multiPath = new MultiPath(options);\n return parsePath(multiPath, str);\n };\n\n Object.defineProperties( PathParser, staticAccessors );\n\n return PathParser;\n }(Class));\n\n var BaseNode = (function (Class$$1) {\n function BaseNode(srcElement) {\n Class$$1.call(this);\n\n this.childNodes = [];\n this.parent = null;\n\n if (srcElement) {\n this.srcElement = srcElement;\n this.observe();\n }\n }\n\n extendStatic(BaseNode, Class$$1);\n BaseNode.prototype = Object.create( Class$$1 && Class$$1.prototype );\n BaseNode.prototype.constructor = BaseNode;\n BaseNode.fn = BaseNode.prototype;\n BaseNode.fn.init = BaseNode.fn.constructor;\n\n BaseNode.prototype.destroy = function destroy () {\n var this$1$1 = this;\n\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n this$1$1.childNodes[i].destroy();\n }\n\n this.parent = null;\n };\n\n BaseNode.prototype.load = function load () {};\n\n BaseNode.prototype.observe = function observe () {\n if (this.srcElement) {\n this.srcElement.addObserver(this);\n }\n };\n\n BaseNode.prototype.append = function append (node) {\n this.childNodes.push(node);\n node.parent = this;\n };\n\n BaseNode.prototype.insertAt = function insertAt (node, pos) {\n this.childNodes.splice(pos, 0, node);\n node.parent = this;\n };\n\n BaseNode.prototype.remove = function remove (index, count) {\n var this$1$1 = this;\n\n var end = index + count;\n for (var i = index; i < end; i++) {\n this$1$1.childNodes[i].removeSelf();\n }\n this.childNodes.splice(index, count);\n };\n\n BaseNode.prototype.removeSelf = function removeSelf () {\n this.clear();\n this.destroy();\n };\n\n BaseNode.prototype.clear = function clear () {\n this.remove(0, this.childNodes.length);\n };\n\n BaseNode.prototype.invalidate = function invalidate () {\n if (this.parent) {\n this.parent.invalidate();\n }\n };\n\n BaseNode.prototype.geometryChange = function geometryChange () {\n this.invalidate();\n };\n\n BaseNode.prototype.optionsChange = function optionsChange () {\n this.invalidate();\n };\n\n BaseNode.prototype.childrenChange = function 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 return BaseNode;\n }(Class));\n\n var events = [\n \"click\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"resize\"\n ];\n\n var Surface$2 = (function (Observable$$1) {\n function Surface(element, options) {\n Observable$$1.call(this);\n\n this.options = $.extend({}, 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 extendStatic(Surface, Observable$$1);\n Surface.prototype = Object.create( Observable$$1 && Observable$$1.prototype );\n Surface.prototype.constructor = Surface;\n Surface.fn = Surface.prototype;\n Surface.fn.init = Surface.fn.constructor;\n\n Surface.prototype.draw = function draw (element) {\n this._visual.children.push(element);\n };\n\n Surface.prototype.clear = function clear () {\n this._visual.children = [];\n };\n\n Surface.prototype.destroy = function destroy () {\n this._visual = null;\n this.element._kendoExportVisual = null;\n this.unbind();\n };\n\n Surface.prototype.eventTarget = function eventTarget (e) {\n var this$1$1 = this;\n\n var domNode = eventElement(e);\n var node;\n\n while (!node && domNode) {\n node = domNode._kendoNode;\n if (domNode === this$1$1.element) {\n break;\n }\n\n domNode = domNode.parentElement;\n }\n\n if (node) {\n return node.srcElement;\n }\n };\n\n Surface.prototype.exportVisual = function exportVisual () {\n return this._visual;\n };\n\n Surface.prototype.getSize = function getSize () {\n return elementSize(this.element);\n };\n\n Surface.prototype.currentSize = function currentSize (size) {\n if (size) {\n this._size = size;\n } else {\n return this._size;\n }\n };\n\n Surface.prototype.setSize = function setSize (size) {\n elementSize(this.element, size);\n\n this.currentSize(size);\n this._resize();\n };\n\n Surface.prototype.resize = function resize (force) {\n var size = this.getSize();\n var 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 Surface.prototype.size = function size (value) {\n if (!value) {\n return this.getSize();\n }\n\n this.setSize(value);\n };\n\n Surface.prototype.suspendTracking = function suspendTracking () {\n this._suspendedTracking = true;\n };\n\n Surface.prototype.resumeTracking = function resumeTracking () {\n this._suspendedTracking = false;\n };\n\n Surface.prototype._enableTracking = function _enableTracking () {};\n\n Surface.prototype._resize = function _resize () {};\n\n Surface.prototype._handler = function _handler (eventName) {\n var this$1$1 = this;\n\n return function (e) {\n var node = this$1$1.eventTarget(e);\n if (node && !this$1$1._suspendedTracking) {\n this$1$1.trigger(eventName, {\n element: node,\n originalEvent: e,\n type: eventName\n });\n }\n };\n };\n\n Surface.prototype._elementOffset = function _elementOffset () {\n var element = this.element;\n var padding = elementPadding(element);\n var ref = elementOffset(element);\n var left = ref.left;\n var top = ref.top;\n\n return {\n left: left + padding.left,\n top: top + padding.top\n };\n };\n\n Surface.prototype._surfacePoint = function _surfacePoint (e) {\n var offset = this._elementOffset();\n var coord = eventCoordinates(e);\n var x = coord.x - offset.left;\n var y = coord.y - offset.top;\n\n var inverseTransform = elementScale(this.element).invert();\n var point = new Point(\n x,\n y\n ).transform(inverseTransform);\n\n return point;\n };\n\n return Surface;\n }(kendo.Observable));\n\n function renderAttr(name, value) {\n return (defined(value) && value !== null) ? (\" \" + name + \"=\\\"\" + value + \"\\\" \") : \"\";\n }\n\n function renderAllAttr(attrs) {\n var output = \"\";\n for (var i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n\n return output;\n }\n\n function renderStyle(attrs) {\n var output = \"\";\n for (var i = 0; i < attrs.length; i++) {\n var 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 }\n\n var NODE_MAP = {};\n\n var SVG_NS = \"http://www.w3.org/2000/svg\";\n var NONE = \"none\";\n var POINT_DIGITS = 3;\n\n var applyStyle = function (styleString, element) { return styleString.split(';').filter(function (s) { return s !== ''; }).forEach(function (s) {\n var parts = s.split(':');\n element.style[parts[0].trim()] = parts[1].trim();\n }); };\n\n var styleAttr = 'data-style';\n var replaceStyleAttr = function (html) { return html.replace(/\\sstyle=/g, ' ' + styleAttr + '='); };\n var restoreStyleAttr = function (container) {\n Array.from(container.querySelectorAll('[' + styleAttr +']')).forEach(function (element) {\n var styleString = element.getAttribute(styleAttr);\n element.removeAttribute(styleAttr);\n applyStyle(styleString, element);\n });\n };\n\n var renderSVG = function(container, svg) {\n container.innerHTML = replaceStyleAttr(svg);\n restoreStyleAttr(container);\n };\n\n if (typeof document !== \"undefined\") {\n var testFragment = \"\";\n var testContainer = document.createElement(\"div\");\n var hasParser = typeof DOMParser !== \"undefined\";\n\n testContainer.innerHTML = testFragment;\n\n if (hasParser && testContainer.firstChild.namespaceURI !== SVG_NS) {\n renderSVG = function(container, svg) {\n var parser = new DOMParser();\n var chartDoc = parser.parseFromString(replaceStyleAttr(svg), \"text/xml\");\n restoreStyleAttr(chartDoc);\n var importedDoc = document.adoptNode(chartDoc.documentElement);\n\n container.innerHTML = \"\";\n container.appendChild(importedDoc);\n };\n }\n }\n\n var renderSVG$1 = renderSVG;\n\n var TRANSFORM = \"transform\";\n var DefinitionMap = {\n clip: \"clip-path\",\n fill: \"fill\"\n };\n\n function isDefinition(type, value) {\n return type === \"clip\" || (type === \"fill\" && (!value || value.nodeType === \"Gradient\"));\n }\n\n function baseUrl() {\n var base = document.getElementsByTagName(\"base\")[0];\n var href = document.location.href;\n var url = \"\";\n\n if (base && !(supportBrowser || {}).msie) {\n var 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\n var Node = (function (BaseNode$$1) {\n function Node(srcElement, options) {\n BaseNode$$1.call(this, srcElement);\n this.definitions = {};\n\n this.options = options;\n }\n\n extendStatic(Node, BaseNode$$1);\n Node.prototype = Object.create( BaseNode$$1 && BaseNode$$1.prototype );\n Node.prototype.constructor = Node;\n Node.fn = Node.prototype;\n Node.fn.init = Node.fn.constructor;\n\n Node.prototype.destroy = function destroy () {\n if (this.element) {\n this.element._kendoNode = null;\n this.element = null;\n }\n\n this.clearDefinitions();\n BaseNode$$1.prototype.destroy.call(this);\n };\n\n Node.prototype.load = function load (elements, pos) {\n var this$1$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n\n var childNode = new NODE_MAP[srcElement.nodeType](srcElement, this$1$1.options);\n\n if (defined(pos)) {\n this$1$1.insertAt(childNode, pos);\n } else {\n this$1$1.append(childNode);\n }\n\n childNode.createDefinitions();\n\n if (children && children.length > 0) {\n childNode.load(children);\n }\n\n var element = this$1$1.element;\n if (element) {\n childNode.attachTo(element, pos);\n }\n }\n };\n\n Node.prototype.root = function root () {\n var root = this;\n\n while (root.parent) {\n root = root.parent;\n }\n\n return root;\n };\n\n Node.prototype.attachTo = function attachTo (domElement, pos) {\n var container = document.createElement(\"div\");\n renderSVG$1(container,\n \"\" +\n this.render() +\n \"\"\n );\n\n var 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 Node.prototype.setElement = function setElement (element) {\n if (this.element) {\n this.element._kendoNode = null;\n }\n\n this.element = element;\n this.element._kendoNode = this;\n\n var nodes = this.childNodes;\n for (var i = 0; i < nodes.length; i++) {\n var childElement = element.childNodes[i];\n nodes[i].setElement(childElement);\n }\n };\n\n Node.prototype.clear = function clear () {\n this.clearDefinitions();\n\n if (this.element) {\n this.element.innerHTML = \"\";\n }\n\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n\n this.childNodes = [];\n };\n\n Node.prototype.removeSelf = function removeSelf () {\n if (this.element) {\n var parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n this.element = null;\n }\n\n BaseNode$$1.prototype.removeSelf.call(this);\n };\n\n Node.prototype.template = function template () {\n return this.renderChildren();\n };\n\n Node.prototype.render = function render () {\n return this.template();\n };\n\n Node.prototype.renderChildren = function renderChildren () {\n var nodes = this.childNodes;\n var output = \"\";\n\n for (var i = 0; i < nodes.length; i++) {\n output += nodes[i].render();\n }\n\n return output;\n };\n\n Node.prototype.optionsChange = function optionsChange (e) {\n var field = e.field;\n var value = e.value;\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 BaseNode$$1.prototype.optionsChange.call(this, e);\n };\n\n Node.prototype.accessibilityOptionsChange = function accessibilityOptionsChange (e) {\n var field = e.field;\n var value = e.value;\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\", htmlEncode(value));\n } else {\n this.removeAttr(\"aria-label\");\n }\n } else if (field === \"ariaRoleDescription\") {\n if (value) {\n this.attr(\"aria-roledescription\", htmlEncode(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 Node.prototype.attr = function attr (name, value) {\n if (this.element) {\n this.element.setAttribute(name, value);\n }\n };\n\n Node.prototype.allAttr = function allAttr (attrs) {\n var this$1$1 = this;\n\n for (var i = 0; i < attrs.length; i++) {\n this$1$1.attr(attrs[i][0], attrs[i][1]);\n }\n };\n\n Node.prototype.toggleAttr = function toggleAttr (name, value) {\n if (value) {\n this.attr(name, value);\n } else {\n this.removeAttr(name);\n }\n };\n\n Node.prototype.css = function css (name, value) {\n if (this.element) {\n this.element.style[name] = value;\n }\n };\n\n Node.prototype.allCss = function allCss (styles) {\n var this$1$1 = this;\n\n for (var i = 0; i < styles.length; i++) {\n this$1$1.css(styles[i][0], styles[i][1]);\n }\n };\n\n Node.prototype.className = function className (value) {\n var this$1$1 = this;\n\n if (this.element) {\n (ref = this.element.classList).remove.apply(ref, this.element.classList);\n value.split(\" \").forEach(function (item) {\n this$1$1.element.classList.add(item);\n });\n }\n var ref;\n };\n\n Node.prototype.removeAttr = function removeAttr (name) {\n if (this.element) {\n this.element.removeAttribute(name);\n }\n };\n\n Node.prototype.mapTransform = function mapTransform (transform) {\n var attrs = [];\n if (transform) {\n attrs.push([\n TRANSFORM,\n \"matrix(\" + transform.matrix().toString(6) + \")\"\n ]);\n }\n\n return attrs;\n };\n\n Node.prototype.renderTransform = function renderTransform () {\n return renderAllAttr(\n this.mapTransform(this.srcElement.transform())\n );\n };\n\n Node.prototype.transformChange = function transformChange (value) {\n if (value) {\n this.allAttr(this.mapTransform(value));\n } else {\n this.removeAttr(TRANSFORM);\n }\n };\n\n Node.prototype.mapStyle = function mapStyle () {\n var options = this.srcElement.options;\n var style = [ [ \"cursor\", options.cursor ] ];\n\n if (options.visible === false) {\n style.push([ \"display\", NONE ]);\n }\n\n return style;\n };\n\n Node.prototype.renderStyle = function renderStyle$1 () {\n return renderAttr(\"style\", renderStyle(this.mapStyle(true)));\n };\n\n Node.prototype.renderOpacity = function renderOpacity () {\n return renderAttr(\"opacity\", this.srcElement.options.opacity);\n };\n\n Node.prototype.renderId = function renderId () {\n return renderAttr(\"id\", this.srcElement.options.id);\n };\n\n Node.prototype.renderClassName = function renderClassName () {\n return renderAttr(\"class\", this.srcElement.options.className);\n };\n\n Node.prototype.renderRole = function renderRole () {\n return renderAttr(\"role\", this.srcElement.options.role);\n };\n\n Node.prototype.renderAriaLabel = function renderAriaLabel () {\n var value = this.srcElement.options.ariaLabel;\n if (value) {\n value = htmlEncode(value);\n }\n return renderAttr(\"aria-label\", value);\n };\n\n Node.prototype.renderAriaRoleDescription = function renderAriaRoleDescription () {\n var value = this.srcElement.options.ariaRoleDescription;\n if (value) {\n value = htmlEncode(value);\n }\n return renderAttr(\"aria-roledescription\", value);\n };\n\n Node.prototype.renderAriaChecked = function renderAriaChecked () {\n return renderAttr(\"aria-checked\", this.srcElement.options.ariaChecked);\n };\n\n Node.prototype.createDefinitions = function createDefinitions () {\n var srcElement = this.srcElement;\n var definitions = this.definitions;\n if (srcElement) {\n var options = srcElement.options;\n var hasDefinitions;\n\n for (var field in DefinitionMap) {\n var 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 Node.prototype.definitionChange = function definitionChange (e) {\n if (this.parent) {\n this.parent.definitionChange(e);\n }\n };\n\n Node.prototype.updateDefinition = function updateDefinition (type, value) {\n var definitions = this.definitions;\n var current = definitions[type];\n var attr = DefinitionMap[type];\n var 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 Node.prototype.clearDefinitions = function clearDefinitions () {\n var definitions = this.definitions;\n\n this.definitionChange({\n action: \"remove\",\n definitions: definitions\n });\n this.definitions = {};\n };\n\n Node.prototype.renderDefinitions = function renderDefinitions () {\n return renderAllAttr(this.mapDefinitions());\n };\n\n Node.prototype.mapDefinitions = function mapDefinitions () {\n var this$1$1 = this;\n\n var definitions = this.definitions;\n var attrs = [];\n\n for (var field in definitions) {\n attrs.push([ DefinitionMap[field], this$1$1.refUrl(definitions[field].id) ]);\n }\n\n return attrs;\n };\n\n Node.prototype.refUrl = function refUrl (id) {\n var skipBaseHref = (this.options || {}).skipBaseHref;\n var baseHref = this.baseUrl().replace(/'/g, \"\\\\'\");\n var base = skipBaseHref ? '' : baseHref;\n return (\"url(\" + base + \"#\" + id + \")\");\n };\n\n Node.prototype.baseUrl = function baseUrl$1 () {\n return baseUrl();\n };\n\n return Node;\n }(BaseNode));\n\n var GradientStopNode = (function (Node$$1) {\n function GradientStopNode () {\n Node$$1.apply(this, arguments);\n }\n\n extendStatic(GradientStopNode, Node$$1);\n GradientStopNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n GradientStopNode.prototype.constructor = GradientStopNode;\n GradientStopNode.fn = GradientStopNode.prototype;\n GradientStopNode.fn.init = GradientStopNode.fn.constructor;\n\n GradientStopNode.prototype.template = function template () {\n return (\"\");\n };\n\n GradientStopNode.prototype.renderOffset = function renderOffset () {\n return renderAttr(\"offset\", this.srcElement.offset());\n };\n\n GradientStopNode.prototype.mapStyle = function mapStyle () {\n var srcElement = this.srcElement;\n return [\n [ \"stop-color\", srcElement.color() ],\n [ \"stop-opacity\", srcElement.opacity() ]\n ];\n };\n\n GradientStopNode.prototype.optionsChange = function 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 return GradientStopNode;\n }(Node));\n\n var GradientNode = (function (Node$$1) {\n function GradientNode(srcElement) {\n Node$$1.call(this, srcElement);\n\n this.id = srcElement.id;\n\n this.loadStops();\n }\n\n extendStatic(GradientNode, Node$$1);\n GradientNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n GradientNode.prototype.constructor = GradientNode;\n GradientNode.fn = GradientNode.prototype;\n GradientNode.fn.init = GradientNode.fn.constructor;\n\n GradientNode.prototype.loadStops = function loadStops () {\n var this$1$1 = this;\n\n var stops = this.srcElement.stops;\n var element = this.element;\n\n for (var idx = 0; idx < stops.length; idx++) {\n var stopNode = new GradientStopNode(stops[idx]);\n this$1$1.append(stopNode);\n if (element) {\n stopNode.attachTo(element);\n }\n }\n };\n\n GradientNode.prototype.optionsChange = function 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 GradientNode.prototype.renderCoordinates = function renderCoordinates () {\n return renderAllAttr(this.mapCoordinates());\n };\n\n GradientNode.prototype.mapSpace = function mapSpace () {\n return [ \"gradientUnits\", this.srcElement.userSpace() ? \"userSpaceOnUse\" : \"objectBoundingBox\" ];\n };\n\n return GradientNode;\n }(Node));\n\n var LinearGradientNode = (function (GradientNode$$1) {\n function LinearGradientNode () {\n GradientNode$$1.apply(this, arguments);\n }\n\n extendStatic(LinearGradientNode, GradientNode$$1);\n LinearGradientNode.prototype = Object.create( GradientNode$$1 && GradientNode$$1.prototype );\n LinearGradientNode.prototype.constructor = LinearGradientNode;\n LinearGradientNode.fn = LinearGradientNode.prototype;\n LinearGradientNode.fn.init = LinearGradientNode.fn.constructor;\n\n LinearGradientNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n LinearGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n var srcElement = this.srcElement;\n var start = srcElement.start();\n var end = srcElement.end();\n var 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 return LinearGradientNode;\n }(GradientNode));\n\n var RadialGradientNode = (function (GradientNode$$1) {\n function RadialGradientNode () {\n GradientNode$$1.apply(this, arguments);\n }\n\n extendStatic(RadialGradientNode, GradientNode$$1);\n RadialGradientNode.prototype = Object.create( GradientNode$$1 && GradientNode$$1.prototype );\n RadialGradientNode.prototype.constructor = RadialGradientNode;\n RadialGradientNode.fn = RadialGradientNode.prototype;\n RadialGradientNode.fn.init = RadialGradientNode.fn.constructor;\n\n RadialGradientNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n RadialGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n var srcElement = this.srcElement;\n var center = srcElement.center();\n var radius = srcElement.radius();\n var attrs = [\n [ \"cx\", center.x ],\n [ \"cy\", center.y ],\n [ \"r\", radius ],\n this.mapSpace()\n ];\n return attrs;\n };\n\n return RadialGradientNode;\n }(GradientNode));\n\n var ClipNode = (function (Node$$1) {\n function ClipNode(srcElement) {\n Node$$1.call(this);\n\n this.srcElement = srcElement;\n this.id = srcElement.id;\n\n this.load([ srcElement ]);\n }\n\n extendStatic(ClipNode, Node$$1);\n ClipNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n ClipNode.prototype.constructor = ClipNode;\n ClipNode.fn = ClipNode.prototype;\n ClipNode.fn.init = ClipNode.fn.constructor;\n\n ClipNode.prototype.renderClipRule = function renderClipRule () {\n return renderAttr(\"clip-rule\", \"evenodd\");\n };\n ClipNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n return ClipNode;\n }(Node));\n\n var DefinitionNode = (function (Node$$1) {\n function DefinitionNode() {\n Node$$1.call(this);\n this.definitionMap = {};\n }\n\n extendStatic(DefinitionNode, Node$$1);\n DefinitionNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n DefinitionNode.prototype.constructor = DefinitionNode;\n DefinitionNode.fn = DefinitionNode.prototype;\n DefinitionNode.fn.init = DefinitionNode.fn.constructor;\n\n DefinitionNode.prototype.attachTo = function attachTo (domElement) {\n this.element = domElement;\n };\n\n DefinitionNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n DefinitionNode.prototype.definitionChange = function definitionChange (e) {\n var definitions = e.definitions;\n var action = e.action;\n\n if (action === \"add\") {\n this.addDefinitions(definitions);\n } else if (action === \"remove\") {\n this.removeDefinitions(definitions);\n }\n };\n\n DefinitionNode.prototype.createDefinition = function createDefinition (type, item) {\n var 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 DefinitionNode.prototype.addDefinitions = function addDefinitions (definitions) {\n var this$1$1 = this;\n\n for (var field in definitions) {\n this$1$1.addDefinition(field, definitions[field]);\n }\n };\n\n DefinitionNode.prototype.addDefinition = function addDefinition (type, srcElement) {\n var ref = this;\n var element = ref.element;\n var definitionMap = ref.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n if (!mapItem) {\n var 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 DefinitionNode.prototype.removeDefinitions = function removeDefinitions (definitions) {\n var this$1$1 = this;\n\n for (var field in definitions) {\n this$1$1.removeDefinition(definitions[field]);\n }\n };\n\n DefinitionNode.prototype.removeDefinition = function removeDefinition (srcElement) {\n var definitionMap = this.definitionMap;\n var id = srcElement.id;\n var 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 return DefinitionNode;\n }(Node));\n\n var RootNode = (function (Node$$1) {\n function RootNode(options) {\n Node$$1.call(this);\n this.options = options;\n this.defs = new DefinitionNode();\n }\n\n extendStatic(RootNode, Node$$1);\n RootNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n RootNode.prototype.constructor = RootNode;\n RootNode.fn = RootNode.prototype;\n RootNode.fn.init = RootNode.fn.constructor;\n\n RootNode.prototype.attachTo = function attachTo (domElement) {\n this.element = domElement;\n this.defs.attachTo(domElement.firstElementChild);\n };\n\n RootNode.prototype.clear = function clear () {\n BaseNode.prototype.clear.call(this);\n };\n\n RootNode.prototype.template = function template () {\n return this.defs.render() + this.renderChildren();\n };\n\n RootNode.prototype.definitionChange = function definitionChange (e) {\n this.defs.definitionChange(e);\n };\n\n return RootNode;\n }(Node));\n\n var 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\n var SOLID = \"solid\";\n var BUTT = \"butt\";\n\n var ATTRIBUTE_MAP = {\n \"fill.opacity\": \"fill-opacity\",\n \"stroke.color\": \"stroke\",\n \"stroke.width\": \"stroke-width\",\n \"stroke.opacity\": \"stroke-opacity\"\n };\n\n var PathNode = (function (Node$$1) {\n function PathNode () {\n Node$$1.apply(this, arguments);\n }\n\n extendStatic(PathNode, Node$$1);\n PathNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n PathNode.prototype.constructor = PathNode;\n PathNode.fn = PathNode.prototype;\n PathNode.fn.init = PathNode.fn.constructor;\n\n PathNode.prototype.geometryChange = function geometryChange () {\n this.attr(\"d\", this.renderData());\n this.invalidate();\n };\n\n PathNode.prototype.optionsChange = function 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 var 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 Node$$1.prototype.optionsChange.call(this, e);\n };\n\n PathNode.prototype.content = function content () {\n if (this.element) {\n this.element.textContent = this.srcElement.content();\n }\n };\n\n PathNode.prototype.renderData = function renderData () {\n return this.srcElement.toString(POINT_DIGITS) || undefined;\n };\n\n PathNode.prototype.mapStroke = function mapStroke (stroke) {\n var 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 PathNode.prototype.renderStroke = function renderStroke () {\n return renderAllAttr(\n this.mapStroke(this.srcElement.options.stroke)\n );\n };\n\n PathNode.prototype.renderDashType = function renderDashType (stroke) {\n var dashType = stroke.dashType;\n var width = stroke.width; if (width === void 0) { width = 1; }\n\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType.toLowerCase()];\n var result = [];\n\n for (var i = 0; i < dashArray.length; i++) {\n result.push(dashArray[i] * width);\n }\n\n return result.join(\" \");\n }\n };\n\n PathNode.prototype.renderLinecap = function renderLinecap (stroke) {\n var dashType = stroke.dashType;\n var lineCap = stroke.lineCap;\n\n return (dashType && dashType !== \"solid\") ? BUTT : lineCap;\n };\n\n PathNode.prototype.mapFill = function mapFill (fill) {\n var 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 PathNode.prototype.renderFill = function renderFill () {\n return renderAllAttr(\n this.mapFill(this.srcElement.options.fill)\n );\n };\n\n PathNode.prototype.template = function template () {\n return \"\";\n };\n\n return PathNode;\n }(Node));\n\n var ArcNode = (function (PathNode$$1) {\n function ArcNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(ArcNode, PathNode$$1);\n ArcNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n ArcNode.prototype.constructor = ArcNode;\n ArcNode.fn = ArcNode.prototype;\n ArcNode.fn.init = ArcNode.fn.constructor;\n\n ArcNode.prototype.renderData = function renderData () {\n return this.srcElement.toPath().toString(POINT_DIGITS);\n };\n\n return ArcNode;\n }(PathNode));\n\n var CircleNode = (function (PathNode$$1) {\n function CircleNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(CircleNode, PathNode$$1);\n CircleNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n CircleNode.prototype.constructor = CircleNode;\n CircleNode.fn = CircleNode.prototype;\n CircleNode.fn.init = CircleNode.fn.constructor;\n\n CircleNode.prototype.geometryChange = function geometryChange () {\n var 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 CircleNode.prototype.center = function center () {\n return this.srcElement.geometry().center;\n };\n\n CircleNode.prototype.radius = function radius () {\n return this.srcElement.geometry().radius;\n };\n\n CircleNode.prototype.template = function template () {\n return \"\";\n };\n\n return CircleNode;\n }(PathNode));\n\n var GroupNode = (function (Node$$1) {\n function GroupNode () {\n Node$$1.apply(this, arguments);\n }\n\n extendStatic(GroupNode, Node$$1);\n GroupNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n GroupNode.prototype.constructor = GroupNode;\n GroupNode.fn = GroupNode.prototype;\n GroupNode.fn.init = GroupNode.fn.constructor;\n\n GroupNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n GroupNode.prototype.optionsChange = function optionsChange (e) {\n var field = e.field;\n var value = e.value;\n\n if (field === \"transform\") {\n this.transformChange(value);\n }\n\n this.accessibilityOptionsChange(e);\n\n Node$$1.prototype.optionsChange.call(this, e);\n };\n\n return GroupNode;\n }(Node));\n\n var ImageNode = (function (PathNode$$1) {\n function ImageNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(ImageNode, PathNode$$1);\n ImageNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n ImageNode.prototype.constructor = ImageNode;\n ImageNode.fn = ImageNode.prototype;\n ImageNode.fn.init = ImageNode.fn.constructor;\n\n ImageNode.prototype.geometryChange = function geometryChange () {\n this.allAttr(this.mapPosition());\n this.invalidate();\n };\n\n ImageNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"src\") {\n this.allAttr(this.mapSource());\n }\n\n PathNode$$1.prototype.optionsChange.call(this, e);\n };\n\n ImageNode.prototype.mapPosition = function mapPosition () {\n var rect = this.srcElement.rect();\n var 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 ImageNode.prototype.renderPosition = function renderPosition () {\n return renderAllAttr(this.mapPosition());\n };\n\n ImageNode.prototype.mapSource = function mapSource (encode) {\n var src = this.srcElement.src();\n\n if (encode) {\n src = htmlEncode(src);\n }\n\n return [ [ \"xlink:href\", src ] ];\n };\n\n ImageNode.prototype.renderSource = function renderSource () {\n return renderAllAttr(this.mapSource(true));\n };\n\n ImageNode.prototype.template = function template () {\n return \"\" +\n \"\";\n };\n\n return ImageNode;\n }(PathNode));\n\n var MultiPathNode = (function (PathNode$$1) {\n function MultiPathNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(MultiPathNode, PathNode$$1);\n MultiPathNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n MultiPathNode.prototype.constructor = MultiPathNode;\n MultiPathNode.fn = MultiPathNode.prototype;\n MultiPathNode.fn.init = MultiPathNode.fn.constructor;\n\n MultiPathNode.prototype.renderData = function renderData () {\n return this.srcElement.toString(POINT_DIGITS) || 'undefined';\n };\n\n return MultiPathNode;\n }(PathNode));\n\n var RectNode = (function (PathNode$$1) {\n function RectNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(RectNode, PathNode$$1);\n RectNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n RectNode.prototype.constructor = RectNode;\n RectNode.fn = RectNode.prototype;\n RectNode.fn.init = RectNode.fn.constructor;\n\n RectNode.prototype.geometryChange = function geometryChange () {\n var 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 RectNode.prototype.size = function size () {\n return this.srcElement.geometry().size;\n };\n\n RectNode.prototype.origin = function origin () {\n return this.srcElement.geometry().origin;\n };\n\n RectNode.prototype.rx = function rx () {\n return this.srcElement.geometry().cornerRadius[0];\n };\n\n RectNode.prototype.ry = function ry () {\n return this.srcElement.geometry().cornerRadius[1];\n };\n\n RectNode.prototype.template = function template () {\n return \"\";\n };\n\n return RectNode;\n }(PathNode));\n\n var ENTITY_REGEX = /&(?:[a-zA-Z]+|#\\d+);/g;\n\n function decodeEntities(text) {\n if (!text || typeof text !== \"string\" || !ENTITY_REGEX.test(text)) {\n return text;\n }\n\n var element = decodeEntities._element;\n ENTITY_REGEX.lastIndex = 0;\n\n return text.replace(ENTITY_REGEX, function (match) {\n element.innerHTML = match;\n\n return element.textContent || element.innerText;\n });\n }\n\n if (typeof document !== \"undefined\") {\n decodeEntities._element = document.createElement(\"span\");\n }\n\n var TextNode = (function (PathNode$$1) {\n function TextNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(TextNode, PathNode$$1);\n TextNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n TextNode.prototype.constructor = TextNode;\n TextNode.fn = TextNode.prototype;\n TextNode.fn.init = TextNode.fn.constructor;\n\n TextNode.prototype.geometryChange = function geometryChange () {\n var pos = this.pos();\n this.attr(\"x\", pos.x);\n this.attr(\"y\", pos.y);\n this.invalidate();\n };\n\n TextNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"font\") {\n this.attr(\"style\", renderStyle(this.mapStyle()));\n this.geometryChange();\n } else if (e.field === \"content\") {\n PathNode$$1.prototype.content.call(this, this.srcElement.content());\n }\n\n PathNode$$1.prototype.optionsChange.call(this, e);\n };\n\n TextNode.prototype.mapStyle = function mapStyle (encode) {\n var style = PathNode$$1.prototype.mapStyle.call(this, encode);\n var 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 TextNode.prototype.pos = function pos () {\n var pos = this.srcElement.position();\n var size = this.srcElement.measure();\n return pos.clone().setY(pos.y + size.baseline);\n };\n\n TextNode.prototype.renderContent = function renderContent () {\n var content = this.srcElement.content();\n content = decodeEntities(content);\n content = htmlEncode(content);\n\n return kendoUtil.normalizeText(content);\n };\n\n TextNode.prototype.renderTextAnchor = function renderTextAnchor () {\n var anchor;\n\n if ((this.options || {}).rtl && !(supportBrowser.msie || supportBrowser.edge)) {\n anchor = 'end';\n }\n\n return renderAttr(\"text-anchor\", anchor);\n };\n\n TextNode.prototype.renderPaintOrder = function renderPaintOrder () {\n var paintOrder = this.srcElement.options.paintOrder;\n return paintOrder ? renderAttr(\"paint-order\", paintOrder) : \"\";\n };\n\n TextNode.prototype.template = function template () {\n return \"\" + (this.renderContent()) + \"\";\n };\n\n return TextNode;\n }(PathNode));\n\n NODE_MAP.Arc = ArcNode;\n NODE_MAP.Circle = CircleNode;\n NODE_MAP.Group = GroupNode;\n NODE_MAP.Image = ImageNode;\n NODE_MAP.MultiPath = MultiPathNode;\n NODE_MAP.Path = PathNode;\n NODE_MAP.Rect = RectNode;\n NODE_MAP.Text = TextNode;\n\n var RTL = 'rtl';\n\n function alignToScreen(element) {\n var ctm;\n\n try {\n ctm = element.getScreenCTM ? element.getScreenCTM() : null;\n } catch (e) { } // eslint-disable-line no-empty\n\n if (ctm) {\n var left = - ctm.e % 1;\n var top = - ctm.f % 1;\n var style = element.style;\n\n if (left !== 0 || top !== 0) {\n style.left = left + \"px\";\n style.top = top + \"px\";\n }\n }\n }\n\n var Surface$3 = (function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n\n this._root = new RootNode($.extend({\n rtl: elementStyles(element, 'direction').direction === RTL\n }, this.options));\n\n renderSVG$1(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 extendStatic(Surface, BaseSurface);\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n Surface.fn = Surface.prototype;\n Surface.fn.init = Surface.fn.constructor;\n\n var prototypeAccessors = { type: {} };\n\n prototypeAccessors.type.get = function () {\n return \"svg\";\n };\n\n Surface.prototype.destroy = function 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 BaseSurface.prototype.destroy.call(this);\n };\n\n Surface.prototype.translate = function translate (offset) {\n var 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 Surface.prototype.draw = function draw (element) {\n BaseSurface.prototype.draw.call(this, element);\n this._root.load([ element ]);\n };\n\n Surface.prototype.clear = function clear () {\n BaseSurface.prototype.clear.call(this);\n this._root.clear();\n };\n\n Surface.prototype.svg = function svg () {\n return \"\" + this._template();\n };\n\n Surface.prototype.exportVisual = function exportVisual () {\n var ref = this;\n var visual = ref._visual;\n var offset = ref._offset;\n\n if (offset) {\n var wrap = new Group();\n wrap.children.push(visual);\n\n wrap.transform(\n transform$1().translate(-offset.x, -offset.y)\n );\n\n visual = wrap;\n }\n\n return visual;\n };\n\n Surface.prototype._resize = function _resize () {\n if (this._offset) {\n this.translate(this._offset);\n }\n };\n\n Surface.prototype._template = function _template (svgStyles) {\n var styles = typeof svgStyles === 'string' ? svgStyles :\n \"style='width: 100%; height: 100%; overflow: hidden;' \";\n return (\"\" + (this._root.render()) + \"\");\n };\n\n Object.defineProperties( Surface.prototype, prototypeAccessors );\n\n return Surface;\n }(Surface$2));\n\n var NODE_MAP$2 = {};\n\n var Node$2 = (function (BaseNode$$1) {\n function Node(srcElement) {\n BaseNode$$1.call(this, srcElement);\n if (srcElement) {\n this.initClip();\n }\n }\n\n extendStatic(Node, BaseNode$$1);\n Node.prototype = Object.create( BaseNode$$1 && BaseNode$$1.prototype );\n Node.prototype.constructor = Node;\n Node.fn = Node.prototype;\n Node.fn.init = Node.fn.constructor;\n\n Node.prototype.initClip = function initClip () {\n var clip = this.srcElement.clip();\n if (clip) {\n this.clip = clip;\n clip.addObserver(this);\n }\n };\n\n Node.prototype.clear = function clear () {\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n this.clearClip();\n\n BaseNode$$1.prototype.clear.call(this);\n };\n\n Node.prototype.clearClip = function clearClip () {\n if (this.clip) {\n this.clip.removeObserver(this);\n delete this.clip;\n }\n };\n\n Node.prototype.setClip = function setClip (ctx) {\n if (this.clip) {\n ctx.beginPath();\n\n var clipNode = new NODE_MAP$2[this.clip.nodeType](this.clip);\n clipNode.renderPoints(ctx, this.clip);\n\n ctx.clip(\"evenodd\");\n }\n };\n\n Node.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"clip\") {\n this.clearClip();\n this.initClip();\n }\n\n BaseNode$$1.prototype.optionsChange.call(this, e);\n };\n\n Node.prototype.setTransform = function setTransform (ctx) {\n if (this.srcElement) {\n var transform = this.srcElement.transform();\n if (transform) {\n ctx.transform.apply(ctx, transform.matrix().toArray(6));\n }\n }\n };\n\n Node.prototype.loadElements = function loadElements (elements, pos, cors) {\n var this$1$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n\n var childNode = new NODE_MAP$2[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$1$1.insertAt(childNode, pos);\n } else {\n this$1$1.append(childNode);\n }\n }\n };\n\n Node.prototype.load = function load (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n\n this.invalidate();\n };\n\n Node.prototype.setOpacity = function setOpacity (ctx) {\n if (this.srcElement) {\n var opacity = this.srcElement.opacity();\n if (defined(opacity)) {\n this.globalAlpha(ctx, opacity);\n }\n }\n };\n\n Node.prototype.globalAlpha = function globalAlpha (ctx, value) {\n var opactity = value;\n if (opactity && ctx.globalAlpha) {\n opactity *= ctx.globalAlpha;\n }\n ctx.globalAlpha = opactity;\n };\n\n Node.prototype.visible = function visible () {\n var src = this.srcElement;\n return !src || (src && src.options.visible !== false);\n };\n\n return Node;\n }(BaseNode));\n\n var GroupNode$2 = (function (superclass) {\n function GroupNode () {\n superclass.apply(this, arguments);\n }\n\n extendStatic(GroupNode, superclass);\n GroupNode.prototype = Object.create( superclass && superclass.prototype );\n GroupNode.prototype.constructor = GroupNode;\n GroupNode.fn = GroupNode.prototype;\n GroupNode.fn.init = GroupNode.fn.constructor;\n\n GroupNode.prototype.renderTo = function 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 var childNodes = this.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var child = childNodes[i];\n if (child.visible()) {\n child.renderTo(ctx);\n }\n }\n\n ctx.restore();\n };\n\n return GroupNode;\n }(traversable(Node$2, \"childNodes\")));\n\n var FRAME_DELAY = 1000 / 60;\n\n var RootNode$2 = (function (superclass) {\n function RootNode(canvas, size) {\n superclass.call(this);\n\n this.canvas = canvas;\n this.size = size;\n this.ctx = canvas.getContext(\"2d\");\n\n var invalidateHandler = this._invalidate.bind(this);\n this.invalidate = kendo.throttle(function () {\n kendo.animationFrame(invalidateHandler);\n }, FRAME_DELAY);\n }\n\n extendStatic(RootNode, superclass);\n RootNode.prototype = Object.create( superclass && superclass.prototype );\n RootNode.prototype.constructor = RootNode;\n RootNode.fn = RootNode.prototype;\n RootNode.fn.init = RootNode.fn.constructor;\n\n RootNode.prototype.destroy = function destroy () {\n superclass.prototype.destroy.call(this);\n this.canvas = null;\n this.ctx = null;\n };\n\n RootNode.prototype.load = function load (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n this._invalidate();\n };\n\n RootNode.prototype._rescale = function _rescale (scale) {\n var ref = this;\n var canvas = ref.canvas;\n var size = ref.size;\n canvas.width = size.width * scale;\n canvas.height = size.height * scale;\n this.ctx.scale(scale, scale);\n };\n\n RootNode.prototype._devicePixelRatio = function _devicePixelRatio () {\n if (typeof window.devicePixelRatio === 'number') {\n return window.devicePixelRatio;\n }\n\n return 1;\n };\n\n RootNode.prototype._invalidate = function _invalidate (options) {\n if (!this.ctx) {\n return;\n }\n\n var fixedScale = options && options.fixedScale;\n var 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 return RootNode;\n }(traversable(GroupNode$2, \"childNodes\")));\n\n var QuadRoot = (function (Class$$1) {\n function QuadRoot() {\n Class$$1.call(this);\n\n this.shapes = [];\n }\n\n extendStatic(QuadRoot, Class$$1);\n QuadRoot.prototype = Object.create( Class$$1 && Class$$1.prototype );\n QuadRoot.prototype.constructor = QuadRoot;\n QuadRoot.fn = QuadRoot.prototype;\n QuadRoot.fn.init = QuadRoot.fn.constructor;\n\n QuadRoot.prototype._add = function _add (shape, bbox) {\n this.shapes.push({\n bbox: bbox,\n shape: shape\n });\n shape._quadNode = this;\n };\n\n QuadRoot.prototype.pointShapes = function pointShapes (point) {\n var shapes = this.shapes;\n var length = shapes.length;\n var result = [];\n for (var 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 QuadRoot.prototype.insert = function insert (shape, bbox) {\n this._add(shape, bbox);\n };\n\n QuadRoot.prototype.remove = function remove (shape) {\n var shapes = this.shapes;\n var length = shapes.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].shape === shape) {\n shapes.splice(idx, 1);\n break;\n }\n }\n };\n\n return QuadRoot;\n }(Class));\n\n var QuadNode = (function (QuadRoot$$1) {\n function QuadNode(rect) {\n QuadRoot$$1.call(this);\n this.children = [];\n this.rect = rect;\n }\n\n extendStatic(QuadNode, QuadRoot$$1);\n QuadNode.prototype = Object.create( QuadRoot$$1 && QuadRoot$$1.prototype );\n QuadNode.prototype.constructor = QuadNode;\n QuadNode.fn = QuadNode.prototype;\n QuadNode.fn.init = QuadNode.fn.constructor;\n\n QuadNode.prototype.inBounds = function inBounds (rect) {\n var nodeRect = this.rect;\n var nodeBottomRight = nodeRect.bottomRight();\n var bottomRight = rect.bottomRight();\n var 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 QuadNode.prototype.pointShapes = function pointShapes (point) {\n var children = this.children;\n var length = children.length;\n var result = QuadRoot$$1.prototype.pointShapes.call(this, point);\n for (var idx = 0; idx < length; idx++) {\n append$1$1(result, children[idx].pointShapes(point));\n }\n return result;\n };\n\n QuadNode.prototype.insert = function insert (shape, bbox) {\n var children = this.children;\n var 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 (var 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 QuadNode.prototype._initChildren = function _initChildren () {\n var ref = this;\n var rect = ref.rect;\n var children = ref.children;\n var center = rect.center();\n var halfWidth = rect.width() / 2;\n var 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 return QuadNode;\n }(QuadRoot));\n\n var ROOT_SIZE = 3000;\n var LEVEL_STEP = 10000;\n var MAX_LEVEL = 75;\n\n var ShapesQuadTree = (function (Class$$1) {\n function ShapesQuadTree() {\n Class$$1.call(this);\n\n this.initRoots();\n }\n\n extendStatic(ShapesQuadTree, Class$$1);\n ShapesQuadTree.prototype = Object.create( Class$$1 && Class$$1.prototype );\n ShapesQuadTree.prototype.constructor = ShapesQuadTree;\n ShapesQuadTree.fn = ShapesQuadTree.prototype;\n ShapesQuadTree.fn.init = ShapesQuadTree.fn.constructor;\n\n ShapesQuadTree.prototype.initRoots = function initRoots () {\n this.rootMap = {};\n this.root = new QuadRoot();\n this.rootElements = [];\n };\n\n ShapesQuadTree.prototype.clear = function clear () {\n var this$1$1 = this;\n\n var rootElements = this.rootElements;\n for (var idx = 0; idx < rootElements.length; idx++) {\n this$1$1.remove(rootElements[idx]);\n }\n this.initRoots();\n };\n\n ShapesQuadTree.prototype.pointShape = function pointShape (point) {\n var sectorRoot = ( this.rootMap[ Math.floor( point.x / ROOT_SIZE ) ] || {} )[ Math.floor( point.y / ROOT_SIZE ) ];\n var 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 (var idx = 0; idx < result.length; idx++) {\n if (result[idx].containsPoint(point)) {\n return result[idx];\n }\n }\n };\n\n ShapesQuadTree.prototype.assignZindex = function assignZindex (elements) {\n var this$1$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n var element = elements[idx];\n var zIndex = 0;\n var levelWeight = Math.pow(LEVEL_STEP, MAX_LEVEL);\n var 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$1$1.rootElements).indexOf(element) + 1) * levelWeight;\n levelWeight /= LEVEL_STEP;\n }\n\n elements[idx]._zIndex = zIndex;\n }\n };\n\n ShapesQuadTree.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"transform\" || e.field === \"stroke.width\") {\n this.bboxChange(e.element);\n }\n };\n\n ShapesQuadTree.prototype.geometryChange = function geometryChange (e) {\n this.bboxChange(e.element);\n };\n\n ShapesQuadTree.prototype.bboxChange = function bboxChange (element) {\n var this$1$1 = this;\n\n if (element.nodeType === \"Group\") {\n for (var idx = 0; idx < element.children.length; idx++) {\n this$1$1.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 ShapesQuadTree.prototype.add = function add (elements) {\n var elementsArray = Array.isArray(elements) ? elements.slice(0) : [ elements ];\n\n append$1$1(this.rootElements, elementsArray);\n this._insert(elementsArray);\n };\n\n ShapesQuadTree.prototype.childrenChange = function childrenChange (e) {\n var this$1$1 = this;\n\n if (e.action === \"remove\") {\n for (var idx = 0; idx < e.items.length; idx++) {\n this$1$1.remove(e.items[idx]);\n }\n } else {\n this._insert(Array.prototype.slice.call(e.items, 0));\n }\n };\n\n ShapesQuadTree.prototype._insert = function _insert (elements) {\n var this$1$1 = this;\n\n var element;\n\n while (elements.length > 0) {\n element = elements.pop();\n element.addObserver(this$1$1);\n if (element.nodeType === \"Group\") {\n append$1$1(elements, element.children);\n } else {\n this$1$1._insertShape(element);\n }\n }\n };\n\n ShapesQuadTree.prototype._insertShape = function _insertShape (shape) {\n var bbox = shape.bbox();\n if (bbox) {\n var sectors = this.getSectors(bbox);\n var x = sectors[0][0];\n var y = sectors[1][0];\n\n if (this.inRoot(sectors)) {\n this.root.insert(shape, bbox);\n } else {\n var 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 ShapesQuadTree.prototype.remove = function remove (element) {\n var this$1$1 = this;\n\n element.removeObserver(this);\n\n if (element.nodeType === \"Group\") {\n var children = element.children;\n for (var idx = 0; idx < children.length; idx++) {\n this$1$1.remove(children[idx]);\n }\n } else if (element._quadNode) {\n element._quadNode.remove(element);\n delete element._quadNode;\n }\n };\n\n ShapesQuadTree.prototype.inRoot = function inRoot (sectors) {\n return sectors[0].length > 1 || sectors[1].length > 1;\n };\n\n ShapesQuadTree.prototype.getSectors = function getSectors (rect) {\n var bottomRight = rect.bottomRight();\n var bottomX = Math.floor(bottomRight.x / ROOT_SIZE);\n var bottomY = Math.floor(bottomRight.y / ROOT_SIZE);\n var sectors = [ [], [] ];\n for (var x = Math.floor(rect.origin.x / ROOT_SIZE); x <= bottomX; x++) {\n sectors[0].push(x);\n }\n for (var y = Math.floor(rect.origin.y / ROOT_SIZE); y <= bottomY; y++) {\n sectors[1].push(y);\n }\n return sectors;\n };\n\n return ShapesQuadTree;\n }(Class));\n\n function 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\n var SurfaceCursor = function SurfaceCursor(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 SurfaceCursor.prototype.clear = function clear () {\n this._resetCursor();\n };\n\n SurfaceCursor.prototype.destroy = function destroy () {\n this._resetCursor();\n delete this.element;\n };\n\n SurfaceCursor.prototype._mouseenter = function _mouseenter (e) {\n var 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 SurfaceCursor.prototype._mouseleave = function _mouseleave () {\n this._resetCursor();\n };\n\n SurfaceCursor.prototype._shapeCursor = function _shapeCursor (e) {\n var 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 SurfaceCursor.prototype._getCursor = function _getCursor () {\n if (this.element) {\n return this.element.style.cursor;\n }\n };\n\n SurfaceCursor.prototype._setCursor = function _setCursor (cursor) {\n if (this.element) {\n this.element.style.cursor = cursor;\n this._current = cursor;\n }\n };\n\n SurfaceCursor.prototype._resetCursor = function _resetCursor () {\n if (this._current) {\n this._setCursor(this._defaultCursor || \"\");\n delete this._current;\n }\n };\n\n function renderPath(ctx, path) {\n var segments = path.segments;\n\n if (segments.length === 0) {\n return;\n }\n\n var segment = segments[0];\n var anchor = segment.anchor();\n ctx.moveTo(anchor.x, anchor.y);\n\n for (var i = 1; i < segments.length; i++) {\n segment = segments[i];\n anchor = segment.anchor();\n\n var prevSeg = segments[i - 1];\n var prevOut = prevSeg.controlOut();\n var 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\n function addGradientStops(gradient, stops) {\n for (var idx = 0; idx < stops.length; idx++) {\n var stop = stops[idx];\n var color = kendo.parseColor(stop.color());\n\n color.a *= stop.opacity();\n\n gradient.addColorStop(stop.offset(), color.toCssRgba());\n }\n }\n\n var PathNode$2 = (function (Node) {\n function PathNode () {\n Node.apply(this, arguments);\n }\n\n extendStatic(PathNode, Node);\n PathNode.prototype = Object.create( Node && Node.prototype );\n PathNode.prototype.constructor = PathNode;\n PathNode.fn = PathNode.prototype;\n PathNode.fn.init = PathNode.fn.constructor;\n\n PathNode.prototype.renderTo = function 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 PathNode.prototype.setFill = function setFill (ctx) {\n var fill = this.srcElement.options.fill;\n var 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 PathNode.prototype.setGradientFill = function setGradientFill (ctx, fill) {\n var bbox = this.srcElement.rawBBox();\n var gradient;\n\n if (fill instanceof LinearGradient) {\n var start = fill.start();\n var end = fill.end();\n gradient = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n } else if (fill instanceof RadialGradient) {\n var 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 PathNode.prototype.setStroke = function setStroke (ctx) {\n var 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 PathNode.prototype.dashType = function dashType () {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.dashType) {\n return stroke.dashType.toLowerCase();\n }\n };\n\n PathNode.prototype.setLineDash = function setLineDash (ctx) {\n var dashType = this.dashType();\n if (dashType && dashType !== SOLID) {\n var 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 PathNode.prototype.setLineCap = function setLineCap (ctx) {\n var dashType = this.dashType();\n var 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 PathNode.prototype.setLineJoin = function setLineJoin (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.lineJoin) {\n ctx.lineJoin = stroke.lineJoin;\n }\n };\n\n PathNode.prototype.renderPoints = function renderPoints (ctx, path) {\n renderPath(ctx, path);\n };\n\n return PathNode;\n }(Node$2));\n\n var ArcNode$2 = (function (PathNode) {\n function ArcNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(ArcNode, PathNode);\n ArcNode.prototype = Object.create( PathNode && PathNode.prototype );\n ArcNode.prototype.constructor = ArcNode;\n ArcNode.fn = ArcNode.prototype;\n ArcNode.fn.init = ArcNode.fn.constructor;\n\n ArcNode.prototype.renderPoints = function renderPoints (ctx) {\n var path = this.srcElement.toPath();\n renderPath(ctx, path);\n };\n\n return ArcNode;\n }(PathNode$2));\n\n var CircleNode$2 = (function (PathNode) {\n function CircleNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(CircleNode, PathNode);\n CircleNode.prototype = Object.create( PathNode && PathNode.prototype );\n CircleNode.prototype.constructor = CircleNode;\n CircleNode.fn = CircleNode.prototype;\n CircleNode.fn.init = CircleNode.fn.constructor;\n\n CircleNode.prototype.renderPoints = function renderPoints (ctx) {\n var ref = this.srcElement.geometry();\n var center = ref.center;\n var radius = ref.radius;\n\n ctx.arc(center.x, center.y, radius, 0, Math.PI * 2);\n };\n\n return CircleNode;\n }(PathNode$2));\n\n var ImageNode$2 = (function (PathNode) {\n function ImageNode(srcElement, cors) {\n PathNode.call(this, srcElement);\n\n this.onLoad = this.onLoad.bind(this);\n this.onError = this.onError.bind(this);\n\n this.loading = createPromise();\n\n var img = this.img = new Image();\n var 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 extendStatic(ImageNode, PathNode);\n ImageNode.prototype = Object.create( PathNode && PathNode.prototype );\n ImageNode.prototype.constructor = ImageNode;\n ImageNode.fn = ImageNode.prototype;\n ImageNode.fn.init = ImageNode.fn.constructor;\n\n ImageNode.prototype.renderTo = function 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 ImageNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"src\") {\n this.loading = createPromise();\n this.img.src = this.srcElement.src();\n } else {\n PathNode.prototype.optionsChange.call(this, e);\n }\n };\n\n ImageNode.prototype.onLoad = function onLoad () {\n this.loading.resolve();\n this.invalidate();\n };\n\n ImageNode.prototype.onError = function 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 ImageNode.prototype.drawImage = function drawImage (ctx) {\n var rect = this.srcElement.rect();\n var topLeft = rect.topLeft();\n\n ctx.drawImage(\n this.img, topLeft.x, topLeft.y, rect.width(), rect.height()\n );\n };\n\n return ImageNode;\n }(PathNode$2));\n\n var MultiPathNode$2 = (function (PathNode) {\n function MultiPathNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(MultiPathNode, PathNode);\n MultiPathNode.prototype = Object.create( PathNode && PathNode.prototype );\n MultiPathNode.prototype.constructor = MultiPathNode;\n MultiPathNode.fn = MultiPathNode.prototype;\n MultiPathNode.fn.init = MultiPathNode.fn.constructor;\n\n MultiPathNode.prototype.renderPoints = function renderPoints (ctx) {\n var paths = this.srcElement.paths;\n for (var i = 0; i < paths.length; i++) {\n renderPath(ctx, paths[i]);\n }\n };\n\n return MultiPathNode;\n }(PathNode$2));\n\n var RectNode$2 = (function (PathNode) {\n function RectNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(RectNode, PathNode);\n RectNode.prototype = Object.create( PathNode && PathNode.prototype );\n RectNode.prototype.constructor = RectNode;\n RectNode.fn = RectNode.prototype;\n RectNode.fn.init = RectNode.fn.constructor;\n\n RectNode.prototype.renderPoints = function renderPoints (ctx) {\n var geometry = this.srcElement.geometry();\n var ref = geometry.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n\n if (rx === 0 && ry === 0) {\n var origin = geometry.origin;\n var size = geometry.size;\n ctx.rect(origin.x, origin.y, size.width, size.height);\n } else {\n PathNode.prototype.renderPoints.call(this, ctx, Path.fromRect(geometry));\n }\n };\n\n return RectNode;\n }(PathNode$2));\n\n var TextNode$2 = (function (PathNode) {\n function TextNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(TextNode, PathNode);\n TextNode.prototype = Object.create( PathNode && PathNode.prototype );\n TextNode.prototype.constructor = TextNode;\n TextNode.fn = TextNode.prototype;\n TextNode.fn.init = TextNode.fn.constructor;\n\n TextNode.prototype.renderTo = function renderTo (ctx) {\n var text = this.srcElement;\n var pos = text.position();\n var 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 TextNode.prototype.stroke = function 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 TextNode.prototype.fill = function 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 return TextNode;\n }(PathNode$2));\n\n NODE_MAP$2.Arc = ArcNode$2;\n NODE_MAP$2.Circle = CircleNode$2;\n NODE_MAP$2.Group = GroupNode$2;\n NODE_MAP$2.Image = ImageNode$2;\n NODE_MAP$2.MultiPath = MultiPathNode$2;\n NODE_MAP$2.Path = PathNode$2;\n NODE_MAP$2.Rect = RectNode$2;\n NODE_MAP$2.Text = TextNode$2;\n\n var Surface$4 = (function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n\n this.element.innerHTML = this._template(this);\n\n var canvas = this.element.firstElementChild;\n canvas.style.width = '100%';\n canvas.style.height = '100%';\n\n var 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$2(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 extendStatic(Surface, BaseSurface);\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n Surface.fn = Surface.prototype;\n Surface.fn.init = Surface.fn.constructor;\n\n var prototypeAccessors = { type: {} };\n\n prototypeAccessors.type.get = function () {\n return \"canvas\";\n };\n\n Surface.prototype.destroy = function destroy () {\n BaseSurface.prototype.destroy.call(this);\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 Surface.prototype.draw = function draw (element) {\n BaseSurface.prototype.draw.call(this, element);\n this._root.load([ element ], undefined, this.options.cors);\n\n if (this._searchTree) {\n this._searchTree.add([ element ]);\n }\n };\n\n Surface.prototype.clear = function clear () {\n BaseSurface.prototype.clear.call(this);\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 Surface.prototype.eventTarget = function eventTarget (e) {\n if (this._searchTree) {\n var point = this._surfacePoint(e);\n var shape = this._searchTree.pointShape(point);\n return shape;\n }\n };\n\n Surface.prototype.image = function image () {\n var ref = this;\n var root = ref._root;\n var rootElement = ref._rootElement;\n var loadingStates = [];\n\n root.traverse(function (childNode) {\n if (childNode.loading) {\n loadingStates.push(childNode.loading);\n }\n });\n\n var promise = createPromise();\n var resolveDataURL = function () {\n root._invalidate({ fixedScale: true });\n\n try {\n var 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 Surface.prototype.suspendTracking = function suspendTracking () {\n BaseSurface.prototype.suspendTracking.call(this);\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n };\n\n Surface.prototype.resumeTracking = function resumeTracking () {\n BaseSurface.prototype.resumeTracking.call(this);\n if (!this._searchTree) {\n this._searchTree = new ShapesQuadTree();\n\n var childNodes = this._root.childNodes;\n var rootElements = [];\n for (var idx = 0; idx < childNodes.length; idx++) {\n rootElements.push(childNodes[idx].srcElement);\n }\n this._searchTree.add(rootElements);\n }\n };\n\n Surface.prototype._resize = function _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 Surface.prototype._template = function _template () {\n return \"\";\n };\n\n Surface.prototype._enableTracking = function _enableTracking () {\n this._searchTree = new ShapesQuadTree();\n this._cursor = new SurfaceCursor(this);\n\n BaseSurface.prototype._enableTracking.call(this);\n };\n\n Surface.prototype._trackMouse = function _trackMouse (e) {\n if (this._suspendedTracking) {\n return;\n }\n\n var shape = this.eventTarget(e);\n\n if (e.type !== \"click\") {\n var 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 Object.defineProperties( Surface.prototype, prototypeAccessors );\n\n return Surface;\n }(Surface$2));\n\n var instance$2;\n var support$1;\n\n var hasDocument = function () { return typeof document !== \"undefined\"; };\n\n var supportsCanvas = function () { return hasDocument() &&\n document.createElement(\"canvas\").getContext; };\n\n var supportsSVG = function () { return hasDocument() &&\n document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\"); };\n\n var SurfaceFactory = (function (Class$$1) {\n function SurfaceFactory() {\n Class$$1.call(this);\n\n this._items = [ {\n name: \"svg\",\n type: Surface$3\n }, {\n name: \"canvas\",\n type: Surface$4\n } ];\n }\n\n extendStatic(SurfaceFactory, Class$$1);\n SurfaceFactory.prototype = Object.create( Class$$1 && Class$$1.prototype );\n SurfaceFactory.prototype.constructor = SurfaceFactory;\n SurfaceFactory.fn = SurfaceFactory.prototype;\n SurfaceFactory.fn.init = SurfaceFactory.fn.constructor;\n\n var staticAccessors = { support: {},current: {} };\n\n staticAccessors.support.get = function () {\n if (!support$1) {\n support$1 = {\n canvas: supportsCanvas(),\n svg: supportsSVG()\n };\n }\n\n return support$1;\n };\n\n staticAccessors.current.get = function () {\n if (!instance$2) {\n instance$2 = new SurfaceFactory();\n }\n\n return instance$2;\n };\n\n SurfaceFactory.prototype.create = function create (element, options) {\n var items = this._items;\n var match = items[0];\n\n if (options && options.type) {\n var preferred = options.type.toLowerCase();\n for (var 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 kendo.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 Object.defineProperties( SurfaceFactory, staticAccessors );\n\n return SurfaceFactory;\n }(Class));\n\n var Surface = (function (BaseSurface) {\n function Surface () {\n BaseSurface.apply(this, arguments);\n }\n\n extendStatic(Surface, BaseSurface);\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n Surface.fn = Surface.prototype;\n Surface.fn.init = Surface.fn.constructor;\n\n var staticAccessors = { support: {} };\n\n staticAccessors.support.get = function () {\n return SurfaceFactory.support;\n };\n\n Surface.create = function create (element, options) {\n return SurfaceFactory.current.create(element, options);\n };\n\n Object.defineProperties( Surface, staticAccessors );\n\n return Surface;\n }(Surface$2));\n\n function exportGroup(group) {\n var root = new RootNode({\n skipBaseHref: true\n });\n var bbox = group.clippedBBox();\n var rootGroup = group;\n\n if (bbox) {\n var origin = bbox.getOrigin();\n var exportRoot = new Group();\n exportRoot.transform(transform$1().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n rootGroup = exportRoot;\n }\n\n root.load([ rootGroup ]);\n\n var svg = \"\" + (root.render()) + \"\";\n\n root.destroy();\n\n return svg;\n }\n\n var svg$1 = {\n \tSurface: Surface$3,\n \tRootNode: RootNode,\n \tNode: Node,\n \tGroupNode: GroupNode,\n \tArcNode: ArcNode,\n \tCircleNode: CircleNode,\n \tRectNode: RectNode,\n \tImageNode: ImageNode,\n \tTextNode: TextNode,\n \tPathNode: PathNode,\n \tMultiPathNode: MultiPathNode,\n \tDefinitionNode: DefinitionNode,\n \tClipNode: ClipNode,\n \tGradientStopNode: GradientStopNode,\n \tLinearGradientNode: LinearGradientNode,\n \tRadialGradientNode: RadialGradientNode,\n \texportGroup: exportGroup\n };\n\n var canvas = {\n \tSurface: Surface$4,\n \tRootNode: RootNode$2,\n \tNode: Node$2,\n \tGroupNode: GroupNode$2,\n \tArcNode: ArcNode$2,\n \tCircleNode: CircleNode$2,\n \tRectNode: RectNode$2,\n \tImageNode: ImageNode$2,\n \tTextNode: TextNode$2,\n \tPathNode: PathNode$2,\n \tMultiPathNode: MultiPathNode$2\n };\n\n function exportImage(group, options) {\n var defaults = {\n width: \"800px\", height: \"600px\",\n cors: \"Anonymous\"\n };\n\n var exportRoot = group;\n var bbox = group.clippedBBox();\n\n if (bbox) {\n var origin = bbox.getOrigin();\n exportRoot = new Group();\n exportRoot.transform(transform$1().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n\n var size = bbox.getSize();\n defaults.width = size.width + \"px\";\n defaults.height = size.height + \"px\";\n }\n\n var surfaceOptions = $.extend(defaults, options);\n\n var container = document.createElement(\"div\");\n var style = container.style;\n\n style.display = \"none\";\n style.width = surfaceOptions.width;\n style.height = surfaceOptions.height;\n document.body.appendChild(container);\n\n var surface = new Surface$4(container, surfaceOptions);\n surface.suspendTracking();\n surface.draw(exportRoot);\n\n var promise = surface.image();\n var destroy = function () {\n surface.destroy();\n document.body.removeChild(container);\n };\n promise.then(destroy, destroy);\n\n return promise;\n }\n\n function exportSVG(group, options) {\n var svg = exportGroup(group);\n\n if (!options || !options.raw) {\n svg = \"data:image/svg+xml;base64,\" + encodeBase64(svg);\n }\n\n return createPromise().resolve(svg);\n }\n\n /* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n /* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n /* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty, yoda */\n /* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n var browser = supportBrowser || {};\n /*\n\n XXX: to test:\n\n - cloneNodes function:\n - drawing document containing canvas with page breaking\n - drawing document with named radio -s (should not clear selection)\n - IE9/IE10 don't support el.dataset; do they copy user data?\n\n - repeating table headers/footers on page breaking\n\n - forceBreak, keepTogether\n\n - avoidLinks\n\n */\n\n /* -----[ local vars ]----- */\n\n function slice$1$1(thing) {\n return Array.prototype.slice.call(thing);\n }\n\n var KENDO_PSEUDO_ELEMENT = \"KENDO-PSEUDO-ELEMENT\";\n var KENDO_BULLET_TYPE = 'data-kendo-bullet-type';\n\n var IMAGE_CACHE = {};\n\n var nodeInfo = {};\n nodeInfo._root = nodeInfo;\n\n /* -----[ Custom Text node to speed up rendering in kendo.pdf ]----- */\n\n var inBrowser = typeof window !== 'undefined';\n var microsoft = inBrowser ? browser.msie || browser.edge : false;\n\n var TextRect = (function (Text$$1) {\n function TextRect(str, rect, options) {\n Text$$1.call(this, str, rect.getOrigin(), options);\n this._pdfRect = rect;\n }\n\n extendStatic(TextRect, Text$$1);\n TextRect.prototype = Object.create( Text$$1 && Text$$1.prototype );\n TextRect.prototype.constructor = TextRect;\n TextRect.fn = TextRect.prototype;\n TextRect.fn.init = TextRect.fn.constructor;\n TextRect.prototype.rect = function rect () {\n // this is the crux of it: we can avoid a call to\n // measure(), which is what the base class does, since we\n // already know the rect. measure() is s-l-o-w.\n return this._pdfRect;\n };\n TextRect.prototype.rawBBox = function rawBBox () {\n // also let's avoid creating a new rectangle.\n return this._pdfRect;\n };\n\n return TextRect;\n }(Text));\n\n function addClass(el, cls) {\n if (el.classList) {\n el.classList.add(cls);\n } else {\n el.className += \" \" + cls;\n }\n }\n\n function removeClass(el, cls) {\n if (el.classList) {\n el.classList.remove(cls);\n } else {\n el.className = el.className.split(/\\s+/).reduce(function(a, word){\n if (word != cls) {\n a.push(word);\n }\n return a;\n }, []).join(\" \");\n }\n }\n\n function setCSS(el, styles) {\n Object.keys(styles).forEach(function(key){\n el.style[key] = styles[key];\n });\n }\n\n var matches = typeof Element !== \"undefined\" && Element.prototype && (function(p){\n if (p.matches) {\n return function(el, selector) { return el.matches(selector); };\n }\n if (p.webkitMatchesSelector) {\n return function(el, selector) { return el.webkitMatchesSelector(selector); };\n }\n if (p.mozMatchesSelector) {\n return function(el, selector) { return el.mozMatchesSelector(selector); };\n }\n if (p.msMatchesSelector) {\n return function(el, selector) { return el.msMatchesSelector(selector); };\n }\n return function(s) {\n \treturn [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n })(Element.prototype);\n\n function closest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n }\n // IE: stringifying rather than simply comparing with `document`,\n // which is not iframe-proof and fails in editor export —\n // https://github.com/telerik/kendo/issues/6721\n while (el && !/^\\[object (?:HTML)?Document\\]$/.test(String(el))) {\n if (el.nodeType == 1 /* Element */ && matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n }\n\n // clone nodes ourselves, so that we redraw (DOM or\n // jQuery clone will not)\n var cloneNodes = (function($){\n if ($) {\n // if we have Kendo and jQuery, use this version as it will\n // maintain proper links between cloned element and Kendo\n // widgets (i.e. it clones jQuery data(), which isn't the same\n // as element's data attributes).\n // https://github.com/telerik/kendo-ui-core/issues/2750\n return function cloneNodes(el) {\n var clone = el.cloneNode(false);\n if (el.nodeType == 1 /* Element */) {\n var $el = $(el), $clone = $(clone), i;\n var data = $el.data();\n for (i in data) {\n $clone.data(i, data[i]);\n }\n if (/^canvas$/i.test(el.tagName)) {\n clone.getContext(\"2d\").drawImage(el, 0, 0);\n } else if (/^(?:input|select|textarea|option)$/i.test(el.tagName)) {\n // drop the name attributes so that we don't affect the selection of the\n // original nodes (i.e. checked status of radio buttons) when we insert our copy\n // into the DOM. https://github.com/telerik/kendo/issues/5409\n clone.removeAttribute(\"id\");\n clone.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n clone.value = el.value;\n }\n clone.checked = el.checked;\n clone.selected = el.selected;\n }\n for (i = el.firstChild; i; i = i.nextSibling) {\n clone.appendChild(cloneNodes(i));\n }\n }\n return clone;\n };\n } else {\n // the no-jQuery version\n return function cloneNodes(el) {\n var clone = (function dive(node){\n var clone = node.cloneNode(false);\n if (node._kendoExportVisual) {\n clone._kendoExportVisual = node._kendoExportVisual;\n }\n for (var i = node.firstChild; i; i = i.nextSibling) {\n clone.appendChild(dive(i));\n }\n return clone;\n })(el);\n\n // re-draw canvases - https://github.com/telerik/kendo/issues/4872\n var canvases = el.querySelectorAll(\"canvas\");\n if (canvases.length) {\n slice$1$1(clone.querySelectorAll(\"canvas\")).forEach(function (canvas$$1, i) {\n canvas$$1.getContext(\"2d\").drawImage(canvases[i], 0, 0);\n });\n }\n\n // remove \"name\" attributes from elements -\n // https://github.com/telerik/kendo/issues/5409\n var orig = el.querySelectorAll(\"input, select, textarea, option\");\n slice$1$1(clone.querySelectorAll(\"input, select, textarea, option\")).forEach(function (el, i) {\n el.removeAttribute(\"id\");\n el.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n el.value = orig[i].value;\n }\n el.checked = orig[i].checked;\n el.selected = orig[i].selected;\n });\n\n return clone;\n };\n }\n })(typeof window !== \"undefined\" && window.kendo && window.kendo.jQuery);\n\n function getXY(thing) {\n if (typeof thing == \"number\") {\n return { x: thing, y: thing };\n }\n if (Array.isArray(thing)) {\n return { x: thing[0], y: thing[1] };\n }\n return { x: thing.x, y: thing.y };\n }\n\n function drawDOM(element, options) {\n if (!options) {\n options = {};\n }\n var promise = createPromise();\n\n if (!element) {\n return promise.reject(\"No element to export\");\n }\n\n if (typeof window.getComputedStyle != \"function\") {\n throw new Error(\"window.getComputedStyle is missing. You are using an unsupported browser, or running in IE8 compatibility mode. Drawing HTML is supported in Chrome, Firefox, Safari and IE9+.\");\n }\n\n kendo.pdf.defineFont(getFontFaces(element.ownerDocument));\n\n var scale = getXY(options.scale || 1);\n\n function doOne(element) {\n var group = new Group();\n\n // translate to start of page\n var pos = element.getBoundingClientRect();\n setTransform$1(group, [\n scale.x,\n 0,\n 0,\n scale.y,\n (-pos.left * scale.x),\n (-pos.top * scale.y)\n ]);\n\n nodeInfo._clipbox = false;\n nodeInfo._matrix = Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n\n if (options.avoidLinks === true) {\n nodeInfo._avoidLinks = \"a\";\n } else {\n nodeInfo._avoidLinks = options.avoidLinks;\n }\n\n addClass(element, \"k-pdf-export\");\n renderElement(element, group);\n removeClass(element, \"k-pdf-export\");\n\n return group;\n }\n\n cacheImages([ element ], function(){\n var forceBreak = options && options.forcePageBreak;\n var hasPaperSize = options && options.paperSize && options.paperSize != \"auto\";\n var paperOptions = kendo.pdf.getPaperOptions(function(key, def){\n if (key == \"paperSize\") {\n // PDF.getPaperOptions croaks on \"auto\", just pass dummy A4 as we might\n // still be interested in margins.\n return hasPaperSize ? options[key] : \"A4\";\n }\n return key in options ? options[key] : def;\n });\n var pageWidth = hasPaperSize && paperOptions.paperSize[0];\n var pageHeight = hasPaperSize && paperOptions.paperSize[1];\n var margin = options.margin && paperOptions.margin;\n var hasMargin = Boolean(margin);\n if (forceBreak || pageHeight) {\n if (!margin) {\n margin = { left: 0, top: 0, right: 0, bottom: 0 };\n }\n\n // we want paper size and margin to be unaffected by\n // scaling in the output, so we have to reverse-scale\n // before our calculations begin.\n if (pageWidth) { pageWidth /= scale.x; }\n if (pageHeight) { pageHeight /= scale.y; }\n margin.left /= scale.x;\n margin.right /= scale.x;\n margin.top /= scale.y;\n margin.bottom /= scale.y;\n\n var group = new Group({\n pdf: {\n multiPage : true,\n paperSize : hasPaperSize ? paperOptions.paperSize : \"auto\",\n _ignoreMargin : hasMargin // HACK! see exportPDF in pdf/drawing.js\n }\n });\n handlePageBreaks(\n function(x) {\n if (options.progress) {\n var canceled = false, pageNum = 0;\n (function next(){\n if (pageNum < x.pages.length) {\n var page = doOne(x.pages[pageNum]);\n group.append(page);\n options.progress({\n page: page,\n pageNum: ++pageNum,\n totalPages: x.pages.length,\n cancel: function() {\n canceled = true;\n }\n });\n if (!canceled) {\n setTimeout(next);\n } else {\n // XXX: should we also fail() the deferred object?\n x.container.parentNode.removeChild(x.container);\n }\n } else {\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n })();\n } else {\n x.pages.forEach(function(page){\n group.append(doOne(page));\n });\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n },\n element,\n forceBreak,\n pageWidth ? pageWidth - margin.left - margin.right : null,\n pageHeight ? pageHeight - margin.top - margin.bottom : null,\n margin,\n options\n );\n } else {\n promise.resolve(doOne(element));\n }\n });\n\n function makeTemplate(template) {\n if (template != null) {\n if (typeof template == \"string\") {\n template = kendo.template(template.replace(/^\\s+|\\s+$/g, \"\"));\n }\n if (typeof template == \"function\") {\n return function(data) {\n var el = template(data);\n if (el && typeof el == \"string\") {\n var div = document.createElement(\"div\");\n div.innerHTML = el;\n el = div.firstElementChild;\n }\n return el;\n };\n }\n // assumed DOM element\n return function() {\n return template.cloneNode(true);\n };\n }\n }\n\n function handlePageBreaks(callback, element, forceBreak, pageWidth, pageHeight, margin, options) {\n var template = makeTemplate(options.template);\n var doc = element.ownerDocument;\n var pages = [];\n var copy = options._destructive ? element : cloneNodes(element);\n var container = doc.createElement(\"KENDO-PDF-DOCUMENT\");\n var adjust = 0;\n\n // make sure elements are at the end (Grid widget\n // places TFOOT before TBODY, tricking our algorithm to\n // insert a page break right after the header).\n // https://github.com/telerik/kendo/issues/4699\n slice$1$1(copy.querySelectorAll(\"tfoot\")).forEach(function(tfoot){\n tfoot.parentNode.appendChild(tfoot);\n });\n\n // remember the index of each LI from an ordered list.\n // we'll use it to reconstruct the proper numbering.\n slice$1$1(copy.querySelectorAll(\"ol\")).forEach(function(ol){\n slice$1$1(ol.children).forEach(function(li, index){\n li.setAttribute(\"kendo-split-index\", index);\n });\n });\n\n setCSS(container, {\n display : \"block\",\n position : \"absolute\",\n boxSizing : \"content-box\",\n left : \"-10000px\",\n top : \"-10000px\"\n });\n\n if (pageWidth) {\n // subtle: if we don't set the width *and* margins here, the layout in this\n // container will be different from the one in our final page elements, and we'll\n // split at the wrong places.\n setCSS(container, {\n width : pageWidth + \"px\",\n paddingLeft : margin.left + \"px\",\n paddingRight : margin.right + \"px\"\n });\n\n // when the first element has a margin-top (i.e. a

    ) the page will be\n // inadvertently enlarged by that number (the browser will report the container's\n // bounding box top to start at the element's top, rather than including its\n // margin). Adding overflow: hidden seems to fix it.\n //\n // to understand the difference, try the following snippets in your browser:\n //\n // 1.
    \n //

    Foo

    \n //
    \n //\n // 2.
    \n //

    Foo

    \n //
    \n //\n // this detail is not important when automatic page breaking is not requested, hence\n // doing it only if pageWidth is defined.\n setCSS(copy, { overflow: \"hidden\" });\n }\n\n element.parentNode.insertBefore(container, element);\n container.appendChild(copy);\n\n // With cache disabled, images will still have height zero until their `complete` attribute\n // is true. `whenImagesAreActuallyLoaded` will wait for it.\n if (options.beforePageBreak) {\n whenImagesAreActuallyLoaded([ container ], function() {\n options.beforePageBreak(container, doPageBreak);\n });\n } else {\n whenImagesAreActuallyLoaded([ container ], doPageBreak);\n }\n\n function doPageBreak() {\n if (forceBreak != \"-\" || pageHeight) {\n splitElement(copy);\n }\n\n {\n var page = makePage();\n copy.parentNode.insertBefore(page, copy);\n page.appendChild(copy);\n }\n\n if (template) {\n pages.forEach(function(page, i){\n var el = template({\n element : page,\n pageNum : i + 1,\n totalPages : pages.length\n });\n if (el) {\n page.appendChild(el);\n }\n });\n }\n\n cacheImages(pages, callback.bind(null, { pages: pages, container: container }));\n }\n\n function keepTogether(el) {\n if (options.keepTogether && matches(el, options.keepTogether) && el.offsetHeight <= pageHeight - adjust) {\n return true;\n }\n\n var tag = el.tagName;\n if (/^h[1-6]$/i.test(tag) && el.offsetHeight >= pageHeight - adjust) {\n return false;\n }\n\n return (el.getAttribute(\"data-kendo-chart\") ||\n /^(?:img|tr|thead|th|tfoot|iframe|svg|object|canvas|input|textarea|select|video|h[1-6])/i.test(el.tagName));\n }\n\n function splitElement(element) {\n if (element.tagName == \"TABLE\") {\n setCSS(element, { tableLayout: \"fixed\" });\n }\n if (keepTogether(element)) {\n return;\n }\n var style = getComputedStyle$1(element);\n var bottomPadding = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var bottomBorder = parseFloat(getPropertyValue(style, \"border-bottom-width\"));\n var saveAdjust = adjust;\n adjust += bottomPadding + bottomBorder;\n var isFirst = true;\n for (var el = element.firstChild; el; el = el.nextSibling) {\n if (el.nodeType == 1 /* Element */) {\n isFirst = false;\n if (matches(el, forceBreak)) {\n breakAtElement(el);\n continue;\n }\n if (!pageHeight) {\n // we're in \"manual breaks mode\"\n splitElement(el);\n continue;\n }\n if (!/^(?:static|relative)$/.test(getPropertyValue(getComputedStyle$1(el), \"position\"))) {\n continue;\n }\n var fall = fallsOnMargin(el);\n if (fall == 1) {\n // element starts on next page, break before anyway.\n breakAtElement(el);\n }\n else if (fall) {\n // elements ends up on next page, or possibly doesn't fit on a page at\n // all. break before it anyway if it's an or , otherwise\n // attempt to split.\n if (keepTogether(el)) {\n breakAtElement(el);\n } else {\n splitElement(el);\n }\n }\n else {\n splitElement(el);\n }\n }\n else if (el.nodeType == 3 /* Text */ && pageHeight) {\n splitText(el, isFirst);\n isFirst = false;\n }\n }\n adjust = saveAdjust;\n }\n\n function firstInParent(el) {\n var p = el.parentNode, first = p.firstChild;\n if (el === first) {\n return true;\n }\n if (el === p.children[0]) {\n if (first.nodeType == 7 /* comment */ ||\n first.nodeType == 8 /* processing instruction */) {\n return true;\n }\n if (first.nodeType == 3 /* text */) {\n // if whitespace only we can probably consider it's first\n return !/\\S/.test(first.data);\n }\n }\n return false;\n }\n\n function breakAtElement(el) {\n if (el.nodeType == 1 && el !== copy && firstInParent(el)) {\n return breakAtElement(el.parentNode);\n }\n var table, colgroup, thead, grid, gridHead;\n table = closest(el, \"table\");\n colgroup = table && table.querySelector(\"colgroup\");\n if (options.repeatHeaders) {\n thead = table && table.querySelector(\"thead\");\n\n // If we break page in a Kendo Grid, repeat its header. This ugly hack is\n // necessary because a scrollable grid will keep the header in a separate\n // element from its content.\n //\n // XXX: This is likely to break as soon as the widget HTML is modified.\n grid = closest(el, \".k-grid\");\n if (grid && grid.querySelector(\".k-auto-scrollable\")) {\n gridHead = grid.querySelector(\".k-grid-header\");\n }\n }\n var page = makePage();\n var range = doc.createRange();\n range.setStartBefore(copy);\n range.setEndBefore(el);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(el.parentNode);\n if (table) {\n table = closest(el, \"table\"); // that's the
    on next page!\n if (options.repeatHeaders && thead) {\n table.insertBefore(thead.cloneNode(true), table.firstChild);\n }\n if (colgroup) {\n table.insertBefore(colgroup.cloneNode(true), table.firstChild);\n }\n }\n if (options.repeatHeaders && gridHead) {\n grid = closest(el, \".k-grid\");\n grid.insertBefore(gridHead.cloneNode(true), grid.firstChild);\n }\n }\n\n function makePage() {\n var page = doc.createElement(\"KENDO-PDF-PAGE\");\n setCSS(page, {\n display : \"block\",\n boxSizing: \"content-box\",\n width : pageWidth ? (pageWidth + \"px\") : \"auto\",\n padding : (margin.top + \"px \" +\n margin.right + \"px \" +\n margin.bottom + \"px \" +\n margin.left + \"px\"),\n\n // allow absolutely positioned elements to be relative to current page\n position : \"relative\",\n\n // without the following we might affect layout of subsequent pages\n height : pageHeight ? (pageHeight + \"px\") : \"auto\",\n overflow : pageHeight || pageWidth ? \"hidden\" : \"visible\",\n clear : \"both\"\n });\n\n // debug\n // $(\"
    \").css({\n // position : \"absolute\",\n // left : margin.left,\n // top : margin.top,\n // width : pageWidth,\n // height : pageHeight,\n // boxSizing : \"border-box\",\n // background: \"rgba(255, 255, 0, 0.5)\"\n // //border : \"1px solid red\"\n // }).appendTo(page);\n\n if (options && options.pageClassName) {\n page.className = options.pageClassName;\n }\n pages.push(page);\n return page;\n }\n\n function fallsOnMargin(thing) {\n var box = thing.getBoundingClientRect();\n if (box.width === 0 || box.height === 0) {\n // I'd say an element with dimensions zero fits on current page.\n return 0;\n }\n var top = copy.getBoundingClientRect().top;\n var available = pageHeight - adjust;\n return (box.height > available) ? 3\n : (box.top - top > available) ? 1\n : (box.bottom - top > available) ? 2\n : 0;\n }\n\n function splitText(node, isFirst) {\n if (!/\\S/.test(node.data)) {\n return;\n }\n\n var len = node.data.length;\n var range = doc.createRange();\n range.selectNodeContents(node);\n var fall = fallsOnMargin(range);\n if (!fall) {\n return; // the whole text fits on current page\n }\n\n var nextnode = node;\n if (fall == 1) {\n // starts on next page, break before anyway.\n if (isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n breakAtElement(node);\n }\n }\n else {\n (function findEOP(min, pos, max) {\n range.setEnd(node, pos);\n if (min == pos || pos == max) {\n return pos;\n }\n if (fallsOnMargin(range)) {\n return findEOP(min, (min + pos) >> 1, pos);\n } else {\n return findEOP(pos, (pos + max) >> 1, max);\n }\n })(0, len >> 1, len);\n\n if (!/\\S/.test(range.toString()) && isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n // This is only needed for IE, but it feels cleaner to do it anyway. Without\n // it, IE will truncate a very long text (playground/pdf-long-text-2.html).\n nextnode = node.splitText(range.endOffset);\n\n var page = makePage();\n range.setStartBefore(copy);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(nextnode.parentNode);\n }\n }\n\n splitText(nextnode);\n }\n\n function preventBulletOnListItem(el) {\n // set a hint on continued LI elements, to tell the\n // renderer not to draw the bullet again.\n // https://github.com/telerik/kendo-ui-core/issues/2732\n var li = closest(el, \"li\");\n if (li) {\n li.setAttribute(\"kendo-no-bullet\", \"1\");\n preventBulletOnListItem(li.parentNode);\n }\n }\n }\n\n return promise;\n }\n\n // This is needed for the Spreadsheet print functionality. Since\n // there we only need to draw text, this cuts through the ceremony\n // of drawDOM/renderElement and renders the text node directly.\n function drawText(element) {\n var group = new Group();\n nodeInfo._clipbox = false;\n nodeInfo._matrix = Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n pushNodeInfo(element, getComputedStyle$1(element), group);\n if (element.firstChild.nodeType == 3 /* Text */) {\n // avoid the penalty of renderElement\n renderText(element, element.firstChild, group);\n } else {\n _renderElement(element, group);\n }\n popNodeInfo();\n return group;\n }\n\n var parseBackgroundImage = (function(){\n var tok_linear_gradient = /^((-webkit-|-moz-|-o-|-ms-)?linear-gradient\\s*)\\(/;\n //var tok_radial_gradient = /^((-webkit-|-moz-|-o-|-ms-)?radial-gradient\\s*)\\(/;\n var tok_percent = /^([-0-9.]+%)/;\n var tok_length = /^([-0-9.]+px)/;\n var tok_keyword = /^(left|right|top|bottom|to|center)\\W/;\n var tok_angle = /^([-0-9.]+(deg|grad|rad|turn)|0)/;\n var tok_whitespace = /^(\\s+)/;\n var tok_popen = /^(\\()/;\n var tok_pclose = /^(\\))/;\n var tok_comma = /^(,)/;\n var tok_url = /^(url)\\(/;\n var tok_content = /^(.*?)\\)/;\n\n var cache1 = {}, cache2 = {};\n\n function parse(input) {\n var orig = input;\n if (hasOwnProperty(cache1, orig)) {\n return cache1[orig];\n }\n function skip_ws() {\n var m = tok_whitespace.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n }\n }\n function read(token) {\n skip_ws();\n var m = token.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n return m[1];\n }\n }\n\n function read_stop() {\n var color = kendo.parseColor(input, true);\n var length, percent;\n if (color) {\n var match =\n /^#[0-9a-f]+/i.exec(input) ||\n /^rgba?\\(.*?\\)/i.exec(input) ||\n /^..*?\\b/.exec(input); // maybe named color\n input = input.substr(match[0].length);\n color = color.toRGB();\n if (!(length = read(tok_length))) {\n percent = read(tok_percent);\n }\n return { color: color, length: length, percent: percent };\n }\n }\n\n function read_linear_gradient(propName) {\n var angle;\n var to1, to2;\n var stops = [];\n var reverse = false;\n\n if (read(tok_popen)) {\n // 1. [ || to , ]?\n angle = read(tok_angle);\n if (angle == \"0\") {\n angle = \"0deg\"; // Edge\n }\n if (angle) {\n angle = parseAngle(angle);\n read(tok_comma);\n }\n else {\n to1 = read(tok_keyword);\n if (to1 == \"to\") {\n to1 = read(tok_keyword);\n } else if (to1 && /^-/.test(propName)) {\n reverse = true;\n }\n to2 = read(tok_keyword);\n read(tok_comma);\n }\n\n if (/-moz-/.test(propName) && angle == null && to1 == null) {\n var x = read(tok_percent), y = read(tok_percent);\n reverse = true;\n if (x == \"0%\") {\n to1 = \"left\";\n } else if (x == \"100%\") {\n to1 = \"right\";\n }\n if (y == \"0%\") {\n to2 = \"top\";\n } else if (y == \"100%\") {\n to2 = \"bottom\";\n }\n read(tok_comma);\n }\n\n // 2. color stops\n while (input && !read(tok_pclose)) {\n var stop = read_stop();\n if (!stop) {\n break;\n }\n stops.push(stop);\n read(tok_comma);\n }\n\n return {\n type : \"linear\",\n angle : angle,\n to : to1 && to2 ? to1 + \" \" + to2 : to1 ? to1 : to2 ? to2 : null,\n stops : stops,\n reverse : reverse\n };\n }\n }\n\n function read_url() {\n if (read(tok_popen)) {\n var url = read(tok_content);\n url = url.replace(/^['\"]+|[\"']+$/g, \"\");\n read(tok_pclose);\n return { type: \"url\", url: url };\n }\n }\n\n var tok;\n\n if ((tok = read(tok_linear_gradient))) {\n tok = read_linear_gradient(tok);\n }\n else if ((tok = read(tok_url))) {\n tok = read_url();\n }\n\n return (cache1[orig] = tok || { type: \"none\" });\n }\n\n return function(input) {\n if (hasOwnProperty(cache2, input)) {\n return cache2[input];\n }\n return (cache2[input] = splitProperty(input).map(parse));\n };\n })();\n\n var splitProperty = (function(){\n var cache = {};\n return function(input, separator) {\n if (!separator) {\n separator = /^\\s*,\\s*/;\n }\n\n var cacheKey = input + separator;\n\n if (hasOwnProperty(cache, cacheKey)) {\n return cache[cacheKey];\n }\n\n var ret = [];\n var last$$1 = 0, pos = 0;\n var in_paren = 0;\n var in_string = false;\n var m;\n\n function looking_at(rx) {\n return (m = rx.exec(input.substr(pos)));\n }\n\n function trim(str) {\n return str.replace(/^\\s+|\\s+$/g, \"\");\n }\n\n while (pos < input.length) {\n if (!in_string && looking_at(/^[\\(\\[\\{]/)) {\n in_paren++;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\)\\]\\}]/)) {\n in_paren--;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\\"\\']/)) {\n in_string = m[0];\n pos++;\n }\n else if (in_string == \"'\" && looking_at(/^\\\\\\'/)) {\n pos += 2;\n }\n else if (in_string == '\"' && looking_at(/^\\\\\\\"/)) {\n pos += 2;\n }\n else if (in_string == \"'\" && looking_at(/^\\'/)) {\n in_string = false;\n pos++;\n }\n else if (in_string == '\"' && looking_at(/^\\\"/)) {\n in_string = false;\n pos++;\n }\n else if (looking_at(separator)) {\n if (!in_string && !in_paren && pos > last$$1) {\n ret.push(trim(input.substring(last$$1, pos)));\n last$$1 = pos + m[0].length;\n }\n pos += m[0].length;\n }\n else {\n pos++;\n }\n }\n if (last$$1 < pos) {\n ret.push(trim(input.substring(last$$1, pos)));\n }\n return (cache[cacheKey] = ret);\n };\n })();\n\n var getFontURL = (function(cache){\n return function(el){\n // XXX: for IE we get here the whole cssText of the rule,\n // because the computedStyle.src is empty. Next time we need\n // to fix these regexps we better write a CSS parser. :-\\\n var url = cache[el];\n if (!url) {\n var m;\n if ((m = /url\\((['\"]?)([^'\")]*?)\\1\\)\\s+format\\((['\"]?)truetype\\3\\)/.exec(el))) {\n url = cache[el] = m[2];\n } else if ((m = /url\\((['\"]?)([^'\")]*?\\.ttf)\\1\\)/.exec(el))) {\n url = cache[el] = m[2];\n }\n }\n return url;\n };\n })(Object.create ? Object.create(null) : {});\n\n var getFontHeight = (function(cache){\n return function(font) {\n var height = cache[font];\n if (height == null) {\n height = cache[font] = kendoUtil.measureText(\"Mapq\", { font: font }).height;\n }\n return height;\n };\n })(Object.create ? Object.create(null) : {});\n\n function getFontFaces(doc) {\n if (doc == null) {\n doc = document;\n }\n var result = {};\n for (var i = 0; i < doc.styleSheets.length; ++i) {\n doStylesheet(doc.styleSheets[i]);\n }\n return result;\n function doStylesheet(ss) {\n if (ss) {\n var rules = null;\n try {\n rules = ss.cssRules;\n } catch (ex) {}\n if (rules) {\n addRules(ss, rules);\n }\n }\n }\n function findFonts(rule) {\n var src = getPropertyValue(rule.style, \"src\");\n if (src) {\n return splitProperty(src).reduce(function(a, el){\n var font = getFontURL(el);\n if (font) {\n a.push(font);\n }\n return a;\n }, []);\n } else {\n // Internet Explorer\n // XXX: this is gross. should work though for valid CSS.\n var font = getFontURL(rule.cssText);\n return font ? [ font ] : [];\n }\n }\n function addRules(styleSheet, rules) {\n for (var i = 0; i < rules.length; ++i) {\n var r = rules[i];\n switch (r.type) {\n case 3: // CSSImportRule\n doStylesheet(r.styleSheet);\n break;\n case 5: // CSSFontFaceRule\n var style = r.style;\n var family = splitProperty(getPropertyValue(style, \"font-family\"));\n var bold = /^([56789]00|bold)$/i.test(getPropertyValue(style, \"font-weight\"));\n var italic = \"italic\" == getPropertyValue(style, \"font-style\");\n var src = findFonts(r);\n if (src.length > 0) {\n addRule(styleSheet, family, bold, italic, src[0]);\n }\n }\n }\n }\n function addRule(styleSheet, names, bold, italic, url) {\n // We get full resolved absolute URLs in Chrome, but sadly\n // not in Firefox.\n if (!(/^data:/i.test(url))) {\n if (!(/^[^\\/:]+:\\/\\//.test(url) || /^\\//.test(url))) {\n url = String(styleSheet.href).replace(/[^\\/]*$/, \"\") + url;\n }\n }\n names.forEach(function(name){\n name = name.replace(/^(['\"]?)(.*?)\\1$/, \"$2\"); // it's quoted\n if (bold) {\n name += \"|bold\";\n }\n if (italic) {\n name += \"|italic\";\n }\n result[name] = url;\n });\n }\n }\n\n function hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n\n function getCounter(name) {\n name = \"_counter_\" + name;\n return nodeInfo[name];\n }\n\n function getAllCounters(name) {\n var values = [], p = nodeInfo;\n name = \"_counter_\" + name;\n while (p) {\n if (hasOwnProperty(p, name)) {\n values.push(p[name]);\n }\n p = Object.getPrototypeOf(p);\n }\n return values.reverse();\n }\n\n function incCounter(name, inc) {\n var p = nodeInfo;\n name = \"_counter_\" + name;\n while (p && !hasOwnProperty(p, name)) {\n p = Object.getPrototypeOf(p);\n }\n if (!p) {\n p = nodeInfo._root;\n }\n p[name] = (p[name] || 0) + (inc == null ? 1 : inc);\n }\n\n function resetCounter(name, val) {\n name = \"_counter_\" + name;\n nodeInfo[name] = val == null ? 0 : val;\n }\n\n function doCounters(a, f, def) {\n for (var i = 0; i < a.length;) {\n var name = a[i++];\n var val = parseFloat(a[i]);\n if (isNaN(val)) {\n f(name, def);\n } else {\n f(name, val);\n ++i;\n }\n }\n }\n\n function updateCounters(style) {\n var counterReset = getPropertyValue(style, \"counter-reset\");\n if (counterReset) {\n doCounters(splitProperty(counterReset, /^\\s+/), resetCounter, 0);\n }\n var counterIncrement = getPropertyValue(style, \"counter-increment\");\n if (counterIncrement) {\n doCounters(splitProperty(counterIncrement, /^\\s+/), incCounter, 1);\n }\n }\n\n function parseColor$1(str, css) {\n var color = kendo.parseColor(str, true);\n if (color) {\n color = color.toRGB();\n if (css) {\n color = color.toCssRgba();\n } else if (color.a === 0) {\n color = null;\n }\n }\n return color;\n }\n\n function whenImagesAreActuallyLoaded(elements, callback) {\n var pending = 0;\n var done = false;\n elements.forEach(function(el){\n var images = el.querySelectorAll(\"img\");\n for (var i = 0; i < images.length; ++i) {\n var img = images[i];\n if (!img.complete) {\n pending++;\n img.onload = img.onerror = next;\n }\n }\n });\n\n if (!pending) {\n next();\n }\n\n function next() {\n if (!done && --pending <= 0) {\n callback();\n done = true;\n }\n }\n }\n\n function cacheImages(elements, callback) {\n var urls = [];\n function add(url) {\n if (!IMAGE_CACHE[url]) {\n IMAGE_CACHE[url] = true;\n urls.push(url);\n }\n }\n\n elements.forEach(function dive(element){\n if (/^img$/i.test(element.tagName)) {\n add(element.src);\n }\n parseBackgroundImage(\n getPropertyValue(\n getComputedStyle$1(element), \"background-image\"\n )\n ).forEach(function(bg){\n if (bg.type == \"url\") {\n add(bg.url);\n }\n });\n\n if (element.children) {\n slice$1$1(element.children).forEach(dive);\n }\n });\n\n var count = urls.length;\n function next() {\n if (--count <= 0) {\n // Even though we cached them, they simply won't be available immediately in the newly\n // created DOM. Previously we'd allow a 10ms timeout, but that's arbitrary and clearly\n // not working in all cases (https://github.com/telerik/kendo/issues/5399), so this\n // function will wait for their .complete attribute.\n whenImagesAreActuallyLoaded(elements, callback);\n }\n }\n if (count === 0) {\n next();\n }\n urls.forEach(function(url){\n var img = IMAGE_CACHE[url] = new window.Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n img.src = url;\n if (img.complete) {\n next();\n } else {\n img.onload = next;\n img.onerror = function() {\n IMAGE_CACHE[url] = null;\n next();\n };\n }\n });\n }\n\n function alphaNumeral(n) {\n var result = \"\";\n do {\n var r = n % 26;\n result = String.fromCharCode(97 + r) + result;\n n = Math.floor(n / 26);\n } while (n > 0);\n return result;\n }\n\n function pushNodeInfo(element, style, group) {\n nodeInfo = Object.create(nodeInfo);\n nodeInfo[element.tagName.toLowerCase()] = {\n element: element,\n style: style\n };\n var decoration = getPropertyValue(style, \"text-decoration\");\n if (decoration && decoration != \"none\") {\n var color = getPropertyValue(style, \"text-decoration-color\");\n decoration.split(/\\s+/g).forEach(function(name){\n if (!nodeInfo[name]) {\n nodeInfo[name] = color;\n if (name == \"underline\") {\n var offset = getPropertyValue(style, \"text-underline-offset\");\n if (offset != \"auto\") {\n nodeInfo[\"underline-offset\"] = parseFloat(offset);\n }\n }\n }\n });\n }\n\n if (createsStackingContext(style)) {\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n }\n }\n\n function popNodeInfo() {\n nodeInfo = Object.getPrototypeOf(nodeInfo);\n }\n\n function updateClipbox(path) {\n if (nodeInfo._clipbox != null) {\n var box = path.bbox(nodeInfo._matrix);\n if (nodeInfo._clipbox) {\n nodeInfo._clipbox = Rect.intersect(nodeInfo._clipbox, box);\n } else {\n nodeInfo._clipbox = box;\n }\n }\n }\n\n function emptyClipbox() {\n var cb = nodeInfo._clipbox;\n if (cb == null) {\n return true;\n }\n if (cb) {\n return cb.width() === 0 || cb.height() === 0;\n }\n }\n\n function createsStackingContext(style) {\n function prop(name) { return getPropertyValue(style, name); }\n if (prop(\"transform\") != \"none\" ||\n prop(\"position\") != \"static\" ||\n prop(\"z-index\") != \"auto\" ||\n prop(\"opacity\") < 1) {\n return true;\n }\n }\n\n function getComputedStyle$1(element, pseudoElt) {\n return window.getComputedStyle(element, pseudoElt || null);\n }\n\n function getPropertyValue(style, prop, defa) {\n var val = style.getPropertyValue(prop);\n if (val == null || val === \"\") {\n if (browser.webkit) {\n val = style.getPropertyValue(\"-webkit-\" + prop );\n } else if (browser.mozilla) {\n val = style.getPropertyValue(\"-moz-\" + prop );\n } else if (browser.opera) {\n val = style.getPropertyValue(\"-o-\" + prop);\n } else if (microsoft) {\n val = style.getPropertyValue(\"-ms-\" + prop);\n }\n }\n if (arguments.length > 2 && (val == null || val === \"\")) {\n return defa;\n } else {\n return val;\n }\n }\n\n function pleaseSetPropertyValue(style, prop, value, important) {\n style.setProperty(prop, value, important);\n if (browser.webkit) {\n style.setProperty(\"-webkit-\" + prop, value, important);\n } else if (browser.mozilla) {\n style.setProperty(\"-moz-\" + prop, value, important);\n } else if (browser.opera) {\n style.setProperty(\"-o-\" + prop, value, important);\n } else if (microsoft) {\n style.setProperty(\"-ms-\" + prop, value, important);\n prop = \"ms\" + prop.replace(/(^|-)([a-z])/g, function(s, p1, p2){\n return p1 + p2.toUpperCase();\n });\n style[prop] = value;\n }\n }\n\n function getBorder(style, side) {\n side = \"border-\" + side;\n return {\n width: parseFloat(getPropertyValue(style, side + \"-width\")),\n style: getPropertyValue(style, side + \"-style\"),\n color: parseColor$1(getPropertyValue(style, side + \"-color\"), true)\n };\n }\n\n function saveStyle(element, func) {\n var prev = element.style.cssText;\n var result = func();\n element.style.cssText = prev;\n return result;\n }\n\n function getBorderRadius(style, side) {\n var r = getPropertyValue(style, \"border-\" + side + \"-radius\").split(/\\s+/g).map(parseFloat);\n if (r.length == 1) {\n r.push(r[0]);\n }\n return sanitizeRadius({ x: r[0], y: r[1] });\n }\n\n function getContentBox(element) {\n var box = element.getBoundingClientRect();\n box = innerBox(box, \"border-*-width\", element);\n box = innerBox(box, \"padding-*\", element);\n return box;\n }\n\n function innerBox(box, prop, element) {\n var style, wt, wr, wb, wl;\n if (typeof prop == \"string\") {\n style = getComputedStyle$1(element);\n wt = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"top\")));\n wr = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"right\")));\n wb = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"bottom\")));\n wl = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"left\")));\n }\n else if (typeof prop == \"number\") {\n wt = wr = wb = wl = prop;\n }\n return {\n top : box.top + wt,\n right : box.right - wr,\n bottom : box.bottom - wb,\n left : box.left + wl,\n width : box.right - box.left - wr - wl,\n height : box.bottom - box.top - wb - wt\n };\n }\n\n function getTransform(style) {\n var transform$$1 = getPropertyValue(style, \"transform\");\n if (transform$$1 == \"none\") {\n return null;\n }\n var matrix = /^\\s*matrix\\(\\s*(.*?)\\s*\\)\\s*$/.exec(transform$$1);\n if (matrix) {\n var origin = getPropertyValue(style, \"transform-origin\");\n matrix = matrix[1].split(/\\s*,\\s*/g).map(parseFloat);\n origin = origin.split(/\\s+/g).map(parseFloat);\n return {\n matrix: matrix,\n origin: origin\n };\n }\n }\n\n function radiansToDegrees(radians) {\n return ((180 * radians) / Math.PI) % 360;\n }\n\n function parseAngle(angle) {\n var num = parseFloat(angle);\n if (/grad$/.test(angle)) {\n return Math.PI * num / 200;\n }\n else if (/rad$/.test(angle)) {\n return num;\n }\n else if (/turn$/.test(angle)) {\n return Math.PI * num * 2;\n }\n else if (/deg$/.test(angle)) {\n return Math.PI * num / 180;\n }\n }\n\n function setTransform$1(shape, m) {\n m = new Matrix(m[0], m[1], m[2], m[3], m[4], m[5]);\n shape.transform(m);\n return m;\n }\n\n function setClipping(shape, clipPath) {\n shape.clip(clipPath);\n }\n\n function addArcToPath(path, x, y, options) {\n var points = new Arc$2([ x, y ], options).curvePoints(), i = 1;\n while (i < points.length) {\n path.curveTo(points[i++], points[i++], points[i++]);\n }\n }\n\n function sanitizeRadius(r) {\n if (r.x <= 0 || r.y <= 0) {\n r.x = r.y = 0;\n }\n return r;\n }\n\n function adjustBorderRadiusForBox(box, rTL, rTR, rBR, rBL) {\n // adjust border radiuses such that the sum of adjacent\n // radiuses is not bigger than the length of the side.\n // seems the correct algorithm is variant (3) from here:\n // http://www.w3.org/Style/CSS/Tracker/issues/29?changelog\n var tl_x = Math.max(0, rTL.x), tl_y = Math.max(0, rTL.y);\n var tr_x = Math.max(0, rTR.x), tr_y = Math.max(0, rTR.y);\n var br_x = Math.max(0, rBR.x), br_y = Math.max(0, rBR.y);\n var bl_x = Math.max(0, rBL.x), bl_y = Math.max(0, rBL.y);\n\n var f = Math.min(\n box.width / (tl_x + tr_x),\n box.height / (tr_y + br_y),\n box.width / (br_x + bl_x),\n box.height / (bl_y + tl_y)\n );\n\n if (f < 1) {\n tl_x *= f; tl_y *= f;\n tr_x *= f; tr_y *= f;\n br_x *= f; br_y *= f;\n bl_x *= f; bl_y *= f;\n }\n\n return {\n tl: { x: tl_x, y: tl_y },\n tr: { x: tr_x, y: tr_y },\n br: { x: br_x, y: br_y },\n bl: { x: bl_x, y: bl_y }\n };\n }\n\n function elementRoundBox(element, box, type) {\n var style = getComputedStyle$1(element);\n\n var rTL = getBorderRadius(style, \"top-left\");\n var rTR = getBorderRadius(style, \"top-right\");\n var rBL = getBorderRadius(style, \"bottom-left\");\n var rBR = getBorderRadius(style, \"bottom-right\");\n\n if (type == \"padding\" || type == \"content\") {\n var bt = getBorder(style, \"top\");\n var br = getBorder(style, \"right\");\n var bb = getBorder(style, \"bottom\");\n var bl = getBorder(style, \"left\");\n rTL.x -= bl.width; rTL.y -= bt.width;\n rTR.x -= br.width; rTR.y -= bt.width;\n rBR.x -= br.width; rBR.y -= bb.width;\n rBL.x -= bl.width; rBL.y -= bb.width;\n if (type == \"content\") {\n var pt = parseFloat(getPropertyValue(style, \"padding-top\"));\n var pr = parseFloat(getPropertyValue(style, \"padding-right\"));\n var pb = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var pl = parseFloat(getPropertyValue(style, \"padding-left\"));\n rTL.x -= pl; rTL.y -= pt;\n rTR.x -= pr; rTR.y -= pt;\n rBR.x -= pr; rBR.y -= pb;\n rBL.x -= pl; rBL.y -= pb;\n }\n }\n\n if (typeof type == \"number\") {\n rTL.x -= type; rTL.y -= type;\n rTR.x -= type; rTR.y -= type;\n rBR.x -= type; rBR.y -= type;\n rBL.x -= type; rBL.y -= type;\n }\n\n return roundBox(box, rTL, rTR, rBR, rBL);\n }\n\n // Create a drawing.Path for a rounded rectangle. Receives the\n // bounding box and the border-radiuses in CSS order (top-left,\n // top-right, bottom-right, bottom-left). The radiuses must be\n // objects containing x (horiz. radius) and y (vertical radius).\n function roundBox(box, rTL0, rTR0, rBR0, rBL0) {\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n var path = new Path({ fill: null, stroke: null });\n path.moveTo(box.left, box.top + rTL.y);\n if (rTL.x) {\n addArcToPath(path, box.left + rTL.x, box.top + rTL.y, {\n startAngle: -180,\n endAngle: -90,\n radiusX: rTL.x,\n radiusY: rTL.y\n });\n }\n path.lineTo(box.right - rTR.x, box.top);\n if (rTR.x) {\n addArcToPath(path, box.right - rTR.x, box.top + rTR.y, {\n startAngle: -90,\n endAngle: 0,\n radiusX: rTR.x,\n radiusY: rTR.y\n });\n }\n path.lineTo(box.right, box.bottom - rBR.y);\n if (rBR.x) {\n addArcToPath(path, box.right - rBR.x, box.bottom - rBR.y, {\n startAngle: 0,\n endAngle: 90,\n radiusX: rBR.x,\n radiusY: rBR.y\n });\n }\n path.lineTo(box.left + rBL.x, box.bottom);\n if (rBL.x) {\n addArcToPath(path, box.left + rBL.x, box.bottom - rBL.y, {\n startAngle: 90,\n endAngle: 180,\n radiusX: rBL.x,\n radiusY: rBL.y\n });\n }\n return path.close();\n }\n\n function formatCounter(val, style) {\n var str = String(parseFloat(val));\n switch (style) {\n case \"decimal-leading-zero\":\n if (str.length < 2) {\n str = \"0\" + str;\n }\n return str;\n case \"lower-roman\":\n return arabicToRoman(val).toLowerCase();\n case \"upper-roman\":\n return arabicToRoman(val).toUpperCase();\n case \"lower-latin\":\n case \"lower-alpha\":\n return alphaNumeral(val - 1);\n case \"upper-latin\":\n case \"upper-alpha\":\n return alphaNumeral(val - 1).toUpperCase();\n default:\n return str;\n }\n }\n\n function evalPseudoElementContent(element, content) {\n function displayCounter(name, style, separator) {\n if (!separator) {\n return formatCounter(getCounter(name) || 0, style);\n }\n separator = separator.replace(/^\\s*([\"'])(.*)\\1\\s*$/, \"$2\");\n return getAllCounters(name).map(function(val){\n return formatCounter(val, style);\n }).join(separator);\n }\n var a = splitProperty(content, /^\\s+/);\n var result = [], m;\n a.forEach(function(el){\n var tmp;\n if ((m = /^\\s*([\"'])(.*)\\1\\s*$/.exec(el))) {\n result.push(m[2].replace(/\\\\([0-9a-f]{4})/gi, function(s, p){\n return String.fromCharCode(parseInt(p, 16));\n }));\n }\n else if ((m = /^\\s*counter\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[1]));\n }\n else if ((m = /^\\s*counters\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[2], tmp[1]));\n }\n else if ((m = /^\\s*attr\\((.*?)\\)\\s*$/.exec(el))) {\n result.push(element.getAttribute(m[1]) || \"\");\n }\n else {\n result.push(el);\n }\n });\n return result.join(\"\");\n }\n\n function getCssText(style) {\n if (style.cssText) {\n return style.cssText;\n }\n // Status: NEW. Report year: 2002. Current year: 2014.\n // Nice played, Mozillians.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=137687\n var result = [];\n for (var i = 0; i < style.length; ++i) {\n result.push(style[i] + \": \" + getPropertyValue(style, style[i]));\n }\n return result.join(\";\\n\");\n }\n\n function _renderWithPseudoElements(element, group) {\n if (element.tagName == KENDO_PSEUDO_ELEMENT) {\n _renderElement(element, group);\n return;\n }\n var fake = [];\n function pseudo(kind, place) {\n var style = getComputedStyle$1(element, kind), content = style.content;\n updateCounters(style);\n if (content && content != \"normal\" && content != \"none\" && style.width != \"0px\") {\n var psel = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n psel.style.cssText = getCssText(style);\n psel.textContent = evalPseudoElementContent(element, content);\n element.insertBefore(psel, place);\n fake.push(psel);\n }\n }\n pseudo(\":before\", element.firstChild);\n pseudo(\":after\", null);\n if (fake.length > 0) {\n var saveClass = element.className;\n element.className += \" kendo-pdf-hide-pseudo-elements\";\n _renderElement(element, group);\n element.className = saveClass;\n fake.forEach(function(el){ element.removeChild(el); });\n } else {\n _renderElement(element, group);\n }\n }\n\n function _renderElement(element, group) {\n var style = getComputedStyle$1(element);\n\n var top = getBorder(style, \"top\");\n var right = getBorder(style, \"right\");\n var bottom = getBorder(style, \"bottom\");\n var left = getBorder(style, \"left\");\n\n var rTL0 = getBorderRadius(style, \"top-left\");\n var rTR0 = getBorderRadius(style, \"top-right\");\n var rBL0 = getBorderRadius(style, \"bottom-left\");\n var rBR0 = getBorderRadius(style, \"bottom-right\");\n\n var dir = getPropertyValue(style, \"direction\");\n\n var backgroundColor = getPropertyValue(style, \"background-color\");\n backgroundColor = parseColor$1(backgroundColor);\n\n var backgroundImage = parseBackgroundImage( getPropertyValue(style, \"background-image\") );\n var backgroundRepeat = splitProperty( getPropertyValue(style, \"background-repeat\") );\n var backgroundPosition = splitProperty( getPropertyValue(style, \"background-position\") );\n var backgroundOrigin = splitProperty( getPropertyValue(style, \"background-origin\") );\n var backgroundSize = splitProperty( getPropertyValue(style, \"background-size\") );\n\n // IE shrinks the text with text-overflow: ellipsis,\n // apparently because the returned bounding box for the range\n // is limited to the visible area minus space for the dots,\n // instead of being the full width of the text.\n //\n // https://github.com/telerik/kendo/issues/5232\n // https://github.com/telerik/kendo-ui-core/issues/1868\n //\n // We have to test it here rather than in renderText because\n // text-overflow: ellipsis could be set on a parent element (not\n // necessarily the one containing the text); in this case,\n // getComputedStyle(elementWithTheText) will return \"clip\", not\n // \"ellipsis\" (which is probably a bug, but oh well...)\n var textOverflow, saveTextOverflow;\n if (microsoft) {\n textOverflow = style.textOverflow; // computed style\n if (textOverflow == \"ellipsis\") {\n saveTextOverflow = element.style.textOverflow; // own style.\n element.style.textOverflow = \"clip\";\n }\n }\n\n if (browser.msie && browser.version < 10) {\n // IE9 hacks. getPropertyValue won't return the correct\n // value. Sucks that we have to do it here, I'd prefer to\n // move it in getPropertyValue, but we don't have the\n // element.\n backgroundPosition = splitProperty(element.currentStyle.backgroundPosition);\n }\n\n var innerbox = innerBox(element.getBoundingClientRect(), \"border-*-width\", element);\n\n // CSS \"clip\" property - if present, replace the group with a\n // new one which is clipped. This must happen before drawing\n // the borders and background.\n (function(){\n var clip = getPropertyValue(style, \"clip\");\n var m = /^\\s*rect\\((.*)\\)\\s*$/.exec(clip);\n if (m) {\n var a = m[1].split(/[ ,]+/g);\n var top = a[0] == \"auto\" ? innerbox.top : parseFloat(a[0]) + innerbox.top;\n var right = a[1] == \"auto\" ? innerbox.right : parseFloat(a[1]) + innerbox.left;\n var bottom = a[2] == \"auto\" ? innerbox.bottom : parseFloat(a[2]) + innerbox.top;\n var left = a[3] == \"auto\" ? innerbox.left : parseFloat(a[3]) + innerbox.left;\n var tmp = new Group();\n var clipPath = new Path()\n .moveTo(left, top)\n .lineTo(right, top)\n .lineTo(right, bottom)\n .lineTo(left, bottom)\n .close();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n })();\n\n var boxes, i, cells;\n var display = getPropertyValue(style, \"display\");\n\n if (display == \"table-row\") {\n // because of rowspan/colspan, we shouldn't draw background of table row elements on the\n // box given by its getBoundingClientRect, because if we do we risk overwritting a\n // previously rendered cell. https://github.com/telerik/kendo/issues/4881\n boxes = [];\n for (i = 0, cells = element.children; i < cells.length; ++i) {\n boxes.push(cells[i].getBoundingClientRect());\n }\n } else {\n boxes = element.getClientRects();\n if (boxes.length == 1) {\n // Workaround the missing borders in Chrome! getClientRects() boxes contains values\n // rounded to integer. getBoundingClientRect() appears to work fine. We still need\n // getClientRects() to support cases where there are more boxes (continued inline\n // elements that might have border/background).\n boxes = [ element.getBoundingClientRect() ];\n }\n }\n\n // This function workarounds another Chrome bug, where boxes returned for a table with\n // border-collapse: collapse will overlap the table border. Our rendering is not perfect in\n // such case anyway, but with this is better than without it.\n boxes = adjustBoxes(boxes);\n\n for (i = 0; i < boxes.length; ++i) {\n drawOneBox(boxes[i], i === 0, i == boxes.length - 1);\n }\n\n // Render links as separate groups. We can't use boxes returned by element's getClientRects\n // because if display type is \"inline\" (default for ), boxes will not include the height of\n // images inside. https://github.com/telerik/kendo-ui-core/issues/3359\n if (element.tagName == \"A\" && element.href && !/^#?$/.test(element.getAttribute(\"href\"))) {\n if (!nodeInfo._avoidLinks || !matches(element, nodeInfo._avoidLinks)) {\n var r = document.createRange();\n r.selectNodeContents(element);\n slice$1$1(r.getClientRects()).forEach(function(box){\n var g = new Group();\n g._pdfLink = {\n url : element.href,\n top : box.top,\n right : box.right,\n bottom : box.bottom,\n left : box.left\n };\n group.append(g);\n });\n }\n }\n\n if (boxes.length > 0 && display == \"list-item\" && !element.getAttribute(\"kendo-no-bullet\")) {\n drawBullet(boxes[0]);\n }\n\n // overflow: hidden/auto - if present, replace the group with\n // a new one clipped by the inner box.\n (function(){\n function clipit() {\n var clipPath = elementRoundBox(element, innerbox, \"padding\");\n var tmp = new Group();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n if (isFormField(element)) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-x\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-y\"))) {\n clipit();\n }\n })();\n\n if (!maybeRenderWidget(element, group) && !maybeRenderBullet(element, group)) {\n renderContents(element, group);\n }\n\n if (microsoft && textOverflow == \"ellipsis\") {\n element.style.textOverflow = saveTextOverflow;\n }\n\n return group; // only utility functions after this line.\n\n function adjustBoxes(boxes) {\n if (/^td$/i.test(element.tagName)) {\n var table = nodeInfo.table;\n if (table && getPropertyValue(table.style, \"border-collapse\") == \"collapse\") {\n var tableBorderLeft = getBorder(table.style, \"left\").width;\n var tableBorderTop = getBorder(table.style, \"top\").width;\n // check if we need to adjust\n if (tableBorderLeft === 0 && tableBorderTop === 0) {\n return boxes; // nope\n }\n var tableBox = table.element.getBoundingClientRect();\n var firstCell = table.element.rows[0].cells[0];\n var firstCellBox = firstCell.getBoundingClientRect();\n if (firstCellBox.top == tableBox.top || firstCellBox.left == tableBox.left) {\n return slice$1$1(boxes).map(function(box){\n return {\n left : box.left + tableBorderLeft,\n top : box.top + tableBorderTop,\n right : box.right + tableBorderLeft,\n bottom : box.bottom + tableBorderTop,\n height : box.height,\n width : box.width\n };\n });\n }\n }\n }\n return boxes;\n }\n\n // this function will be called to draw each border. it\n // draws starting at origin and the resulted path must be\n // translated/rotated to be placed in the proper position.\n //\n // arguments are named as if it draws the top border:\n //\n // - `len` the length of the edge\n // - `Wtop` the width of the edge (i.e. border-top-width)\n // - `Wleft` the width of the left edge (border-left-width)\n // - `Wright` the width of the right edge\n // - `rl` and `rl` -- the border radius on the left and right\n // (objects containing x and y, for horiz/vertical radius)\n // - `transform` -- transformation to apply\n //\n function drawEdge(color, len, Wtop, Wleft, Wright, rl, rr, transform$$1) {\n if (Wtop <= 0) {\n return;\n }\n\n var path, edge = new Group();\n setTransform$1(edge, transform$$1);\n group.append(edge);\n\n sanitizeRadius(rl);\n sanitizeRadius(rr);\n\n // draw main border. this is the area without the rounded corners\n path = new Path({\n fill: { color: color },\n stroke: null\n });\n edge.append(path);\n path.moveTo(rl.x ? Math.max(rl.x, Wleft) : 0, 0)\n .lineTo(len - (rr.x ? Math.max(rr.x, Wright) : 0), 0)\n .lineTo(len - Math.max(rr.x, Wright), Wtop)\n .lineTo(Math.max(rl.x, Wleft), Wtop)\n .close();\n\n if (rl.x) {\n drawRoundCorner(Wleft, rl, [ -1, 0, 0, 1, rl.x, 0 ]);\n }\n\n if (rr.x) {\n drawRoundCorner(Wright, rr, [ 1, 0, 0, 1, len - rr.x, 0 ]);\n }\n\n // draws one round corner, starting at origin (needs to be\n // translated/rotated to be placed properly).\n function drawRoundCorner(Wright, r, transform$$1) {\n var angle = Math.PI/2 * Wright / (Wright + Wtop);\n\n // not sanitizing this one, because negative values\n // are useful to fill the box correctly.\n var ri = {\n x: r.x - Wright,\n y: r.y - Wtop\n };\n\n var path = new Path({\n fill: { color: color },\n stroke: null\n }).moveTo(0, 0);\n\n setTransform$1(path, transform$$1);\n\n addArcToPath(path, 0, r.y, {\n startAngle: -90,\n endAngle: -radiansToDegrees(angle),\n radiusX: r.x,\n radiusY: r.y\n });\n\n if (ri.x > 0 && ri.y > 0) {\n path.lineTo(ri.x * Math.cos(angle), r.y - ri.y * Math.sin(angle));\n addArcToPath(path, 0, r.y, {\n startAngle: -radiansToDegrees(angle),\n endAngle: -90,\n radiusX: ri.x,\n radiusY: ri.y,\n anticlockwise: true\n });\n }\n else if (ri.x > 0) {\n path.lineTo(ri.x, Wtop)\n .lineTo(0, Wtop);\n }\n else {\n path.lineTo(ri.x, Wtop)\n .lineTo(ri.x, 0);\n }\n\n edge.append(path.close());\n }\n }\n\n function drawBackground(box) {\n var background = new Group();\n setClipping(background, roundBox(box, rTL0, rTR0, rBR0, rBL0));\n group.append(background);\n\n if (backgroundColor) {\n var path = new Path({\n fill: { color: backgroundColor.toCssRgba() },\n stroke: null\n });\n path.moveTo(box.left, box.top)\n .lineTo(box.right, box.top)\n .lineTo(box.right, box.bottom)\n .lineTo(box.left, box.bottom)\n .close();\n background.append(path);\n }\n\n for (var i = backgroundImage.length; --i >= 0;) {\n drawOneBackground(\n background, box,\n backgroundImage[i],\n backgroundRepeat[i % backgroundRepeat.length],\n backgroundPosition[i % backgroundPosition.length],\n backgroundOrigin[i % backgroundOrigin.length],\n backgroundSize[i % backgroundSize.length]\n );\n }\n }\n\n function drawOneBackground(group, box, background, backgroundRepeat, backgroundPosition, backgroundOrigin, backgroundSize) {\n if (!background || (background == \"none\")) {\n return;\n }\n\n if (background.type == \"url\") {\n var img = IMAGE_CACHE[background.url];\n if (img && img.width > 0 && img.height > 0) {\n drawBackgroundImage(group, box, img.width, img.height, function(group, rect){\n group.append(new Image$1(background.url, rect));\n });\n }\n } else if (background.type == \"linear\") {\n drawBackgroundImage(group, box, box.width, box.height, gradientRenderer(background));\n } else {\n return;\n }\n\n function drawBackgroundImage(group, box, img_width, img_height, renderBG) {\n var aspect_ratio = img_width / img_height, f;\n\n // for background-origin: border-box the box is already appropriate\n var orgBox = box;\n if (backgroundOrigin == \"content-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n orgBox = innerBox(orgBox, \"padding-*\", element);\n } else if (backgroundOrigin == \"padding-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n }\n\n if (!/^\\s*auto(\\s+auto)?\\s*$/.test(backgroundSize)) {\n if (backgroundSize == \"contain\") {\n f = Math.min(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else if (backgroundSize == \"cover\") {\n f = Math.max(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else {\n var size = backgroundSize.split(/\\s+/g);\n // compute width\n if (/%$/.test(size[0])) {\n img_width = orgBox.width * parseFloat(size[0]) / 100;\n } else {\n img_width = parseFloat(size[0]);\n }\n // compute height\n if (size.length == 1 || size[1] == \"auto\") {\n img_height = img_width / aspect_ratio;\n } else if (/%$/.test(size[1])) {\n img_height = orgBox.height * parseFloat(size[1]) / 100;\n } else {\n img_height = parseFloat(size[1]);\n }\n }\n }\n\n var pos = String(backgroundPosition);\n\n // IE sometimes reports single-word positions\n // https://github.com/telerik/kendo-ui-core/issues/2786\n //\n // it seems to switch to percentages when the horizontal\n // position is not \"center\", therefore we don't handle\n // multi-word cases here. All other browsers return\n // percentages or pixels instead of keywords. At least\n // for now...\n switch (pos) {\n case \"bottom\" : pos = \"50% 100%\"; break;\n case \"top\" : pos = \"50% 0\"; break;\n case \"left\" : pos = \"0 50%\"; break;\n case \"right\" : pos = \"100% 50%\"; break;\n case \"center\" : pos = \"50% 50%\"; break;\n }\n\n pos = pos.split(/\\s+/);\n if (pos.length == 1) {\n pos[1] = \"50%\";\n }\n\n if (/%$/.test(pos[0])) {\n pos[0] = parseFloat(pos[0]) / 100 * (orgBox.width - img_width);\n } else {\n pos[0] = parseFloat(pos[0]);\n }\n if (/%$/.test(pos[1])) {\n pos[1] = parseFloat(pos[1]) / 100 * (orgBox.height - img_height);\n } else {\n pos[1] = parseFloat(pos[1]);\n }\n\n var rect = new Rect([ orgBox.left + pos[0], orgBox.top + pos[1] ], [ img_width, img_height ]);\n\n // XXX: background-repeat could be implemented more\n // efficiently as a fill pattern (at least for PDF\n // output, probably SVG too).\n\n function rewX() {\n while (rect.origin.x > box.left) {\n rect.origin.x -= img_width;\n }\n }\n\n function rewY() {\n while (rect.origin.y > box.top) {\n rect.origin.y -= img_height;\n }\n }\n\n function repeatX() {\n while (rect.origin.x < box.right) {\n renderBG(group, rect.clone());\n rect.origin.x += img_width;\n }\n }\n\n if (backgroundRepeat == \"no-repeat\") {\n renderBG(group, rect);\n }\n else if (backgroundRepeat == \"repeat-x\") {\n rewX();\n repeatX();\n }\n else if (backgroundRepeat == \"repeat-y\") {\n rewY();\n while (rect.origin.y < box.bottom) {\n renderBG(group, rect.clone());\n rect.origin.y += img_height;\n }\n }\n else if (backgroundRepeat == \"repeat\") {\n rewX();\n rewY();\n var origin = rect.origin.clone();\n while (rect.origin.y < box.bottom) {\n rect.origin.x = origin.x;\n repeatX();\n rect.origin.y += img_height;\n }\n }\n }\n }\n\n function drawBullet() {\n var listStyleType = getPropertyValue(style, \"list-style-type\");\n if (listStyleType == \"none\") {\n return;\n }\n var listStylePosition = getPropertyValue(style, \"list-style-position\");\n\n function _drawBullet(f) {\n saveStyle(element, function(){\n element.style.position = \"relative\";\n var bullet = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n bullet.style.position = \"absolute\";\n bullet.style.boxSizing = \"border-box\";\n if (listStylePosition == \"outside\") {\n bullet.style.width = \"6em\";\n bullet.style.left = \"-6.8em\";\n bullet.style.textAlign = \"right\";\n } else {\n bullet.style.left = \"0px\";\n }\n f(bullet);\n element.insertBefore(bullet, element.firstChild);\n renderElement(bullet, group);\n element.removeChild(bullet);\n });\n }\n\n function elementIndex(f) {\n var a = element.parentNode.children;\n var k = element.getAttribute(\"kendo-split-index\");\n if (k != null) {\n return f(k|0, a.length);\n }\n for (var i = 0; i < a.length; ++i) {\n if (a[i] === element) {\n return f(i, a.length);\n }\n }\n }\n\n switch (listStyleType) {\n case \"circle\":\n case \"disc\":\n case \"square\":\n _drawBullet(function(bullet){\n bullet.innerHTML = ' ';\n bullet.setAttribute(KENDO_BULLET_TYPE, listStyleType);\n });\n break;\n\n case \"decimal\":\n case \"decimal-leading-zero\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n ++idx;\n if (listStyleType == \"decimal-leading-zero\" && idx < 10) {\n idx = \"0\" + idx;\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-roman\":\n case \"upper-roman\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = arabicToRoman(idx + 1);\n if (listStyleType == \"upper-roman\") {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-latin\":\n case \"lower-alpha\":\n case \"upper-latin\":\n case \"upper-alpha\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = alphaNumeral(idx);\n if (/^upper/i.test(listStyleType)) {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n }\n }\n\n // draws a single border box\n function drawOneBox(box, isFirst, isLast) {\n if (box.width === 0 || box.height === 0) {\n return;\n }\n\n drawBackground(box);\n\n var shouldDrawLeft = (left.width > 0 && ((isFirst && dir == \"ltr\") || (isLast && dir == \"rtl\")));\n var shouldDrawRight = (right.width > 0 && ((isLast && dir == \"ltr\") || (isFirst && dir == \"rtl\")));\n\n // The most general case is that the 4 borders have different widths and border\n // radiuses. The way that is handled is by drawing 3 Paths for each border: the\n // straight line, and two round corners which represent half of the entire rounded\n // corner. To simplify code those shapes are drawed at origin (by the drawEdge\n // function), then translated/rotated into the right position.\n //\n // However, this leads to poor results due to rounding in the simpler cases where\n // borders are straight lines. Therefore we handle a few such cases separately with\n // straight lines. C^wC^wC^w -- nope, scratch that. poor rendering was because of a bug\n // in Chrome (getClientRects() returns rounded integer values rather than exact floats.\n // web dev is still a ghetto.)\n\n // first, just in case there is no border...\n if (top.width === 0 && left.width === 0 && right.width === 0 && bottom.width === 0) {\n return;\n }\n\n // START paint borders\n // if all borders have equal colors...\n if (top.color == right.color && top.color == bottom.color && top.color == left.color) {\n\n // if same widths too, we can draw the whole border by stroking a single path.\n if (top.width == right.width && top.width == bottom.width && top.width == left.width)\n {\n if (shouldDrawLeft && shouldDrawRight) {\n // reduce box by half the border width, so we can draw it by stroking.\n box = innerBox(box, top.width/2);\n\n // adjust the border radiuses, again by top.width/2, and make the path element.\n var path = elementRoundBox(element, box, top.width/2);\n path.options.stroke = {\n color: top.color,\n width: top.width\n };\n group.append(path);\n return;\n }\n }\n }\n\n // if border radiuses are zero and widths are at most one pixel, we can again use simple\n // paths.\n if (rTL0.x === 0 && rTR0.x === 0 && rBR0.x === 0 && rBL0.x === 0) {\n // alright, 1.9px will do as well. the difference in color blending should not be\n // noticeable.\n if (top.width < 2 && left.width < 2 && right.width < 2 && bottom.width < 2) {\n // top border\n if (top.width > 0) {\n group.append(\n new Path({\n stroke: { width: top.width, color: top.color }\n })\n .moveTo(box.left, box.top + top.width/2)\n .lineTo(box.right, box.top + top.width/2)\n );\n }\n\n // bottom border\n if (bottom.width > 0) {\n group.append(\n new Path({\n stroke: { width: bottom.width, color: bottom.color }\n })\n .moveTo(box.left, box.bottom - bottom.width/2)\n .lineTo(box.right, box.bottom - bottom.width/2)\n );\n }\n\n // left border\n if (shouldDrawLeft) {\n group.append(\n new Path({\n stroke: { width: left.width, color: left.color }\n })\n .moveTo(box.left + left.width/2, box.top)\n .lineTo(box.left + left.width/2, box.bottom)\n );\n }\n\n // right border\n if (shouldDrawRight) {\n group.append(\n new Path({\n stroke: { width: right.width, color: right.color }\n })\n .moveTo(box.right - right.width/2, box.top)\n .lineTo(box.right - right.width/2, box.bottom)\n );\n }\n\n return;\n }\n }\n // END paint borders\n\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n\n // top border\n drawEdge(top.color,\n box.width, top.width, left.width, right.width,\n rTL, rTR,\n [ 1, 0, 0, 1, box.left, box.top ]);\n\n // bottom border\n drawEdge(bottom.color,\n box.width, bottom.width, right.width, left.width,\n rBR, rBL,\n [ -1, 0, 0, -1, box.right, box.bottom ]);\n\n // for left/right borders we need to invert the border-radiuses\n function inv(p) {\n return { x: p.y, y: p.x };\n }\n\n // left border\n drawEdge(left.color,\n box.height, left.width, bottom.width, top.width,\n inv(rBL), inv(rTL),\n [ 0, -1, 1, 0, box.left, box.bottom ]);\n\n // right border\n drawEdge(right.color,\n box.height, right.width, top.width, bottom.width,\n inv(rTR), inv(rBR),\n [ 0, 1, -1, 0, box.right, box.top ]);\n }\n }\n\n function gradientRenderer(gradient) {\n return function(group, rect) {\n var width = rect.width(), height = rect.height();\n\n switch (gradient.type) {\n case \"linear\":\n\n // figure out the angle.\n var angle = gradient.angle != null ? gradient.angle : Math.PI;\n switch (gradient.to) {\n case \"top\":\n angle = 0;\n break;\n case \"left\":\n angle = -Math.PI / 2;\n break;\n case \"bottom\":\n angle = Math.PI;\n break;\n case \"right\":\n angle = Math.PI / 2;\n break;\n case \"top left\": case \"left top\":\n angle = -Math.atan2(height, width);\n break;\n case \"top right\": case \"right top\":\n angle = Math.atan2(height, width);\n break;\n case \"bottom left\": case \"left bottom\":\n angle = Math.PI + Math.atan2(height, width);\n break;\n case \"bottom right\": case \"right bottom\":\n angle = Math.PI - Math.atan2(height, width);\n break;\n }\n\n if (gradient.reverse) {\n angle -= Math.PI;\n }\n\n // limit the angle between 0..2PI\n angle %= 2 * Math.PI;\n if (angle < 0) {\n angle += 2 * Math.PI;\n }\n\n // compute gradient's start/end points. here len is the length of the gradient line\n // and x,y is the end point relative to the center of the rectangle in conventional\n // (math) axis direction.\n\n // this is the original (unscaled) length of the gradient line. needed to deal with\n // absolutely positioned color stops. formula from the CSS spec:\n // http://dev.w3.org/csswg/css-images-3/#linear-gradient-syntax\n var pxlen = Math.abs(width * Math.sin(angle)) + Math.abs(height * Math.cos(angle));\n\n // The math below is pretty simple, but it took a while to figure out. We compute x\n // and y, the *end* of the gradient line. However, we want to transform them into\n // element-based coordinates (SVG's gradientUnits=\"objectBoundingBox\"). That means,\n // x=0 is the left edge, x=1 is the right edge, y=0 is the top edge and y=1 is the\n // bottom edge.\n //\n // A naive approach would use the original angle for these calculations. Say we'd\n // like to draw a gradient angled at 45deg in a 100x400 box. When we use\n // objectBoundingBox, the renderer will draw it in a 1x1 *square* box, and then\n // scale that to the desired dimensions. The 45deg angle will look more like 70deg\n // after scaling. SVG (http://www.w3.org/TR/SVG/pservers.html#LinearGradients) says\n // the following:\n //\n // When gradientUnits=\"objectBoundingBox\" and 'gradientTransform' is the\n // identity matrix, the normal of the linear gradient is perpendicular to the\n // gradient vector in object bounding box space (i.e., the abstract coordinate\n // system where (0,0) is at the top/left of the object bounding box and (1,1) is\n // at the bottom/right of the object bounding box). When the object's bounding\n // box is not square, the gradient normal which is initially perpendicular to\n // the gradient vector within object bounding box space may render\n // non-perpendicular relative to the gradient vector in user space. If the\n // gradient vector is parallel to one of the axes of the bounding box, the\n // gradient normal will remain perpendicular. This transformation is due to\n // application of the non-uniform scaling transformation from bounding box space\n // to user space.\n //\n // which is an extremely long and confusing way to tell what I just said above.\n //\n // For this reason we need to apply the reverse scaling to the original angle, so\n // that when it'll finally be rendered it'll actually be at the desired slope. Now\n // I'll let you figure out the math yourself.\n\n var scaledAngle = Math.atan(width * Math.tan(angle) / height);\n var sin = Math.sin(scaledAngle), cos = Math.cos(scaledAngle);\n var len = Math.abs(sin) + Math.abs(cos);\n var x = len/2 * sin;\n var y = len/2 * cos;\n\n // Because of the arctangent, our scaledAngle ends up between -PI/2..PI/2, possibly\n // losing the intended direction of the gradient. The following fixes it.\n if (angle > Math.PI/2 && angle <= 3*Math.PI/2) {\n x = -x;\n y = -y;\n }\n\n // compute the color stops.\n var implicit = [], right = 0;\n var stops = gradient.stops.map(function(s, i){\n var offset = s.percent;\n if (offset) {\n offset = parseFloat(offset) / 100;\n } else if (s.length) {\n offset = parseFloat(s.length) / pxlen;\n } else if (i === 0) {\n offset = 0;\n } else if (i == gradient.stops.length - 1) {\n offset = 1;\n }\n var stop = {\n color: s.color.toCssRgba(),\n offset: offset\n };\n if (offset != null) {\n right = offset;\n // fix implicit offsets\n implicit.forEach(function(s, i){\n var stop = s.stop;\n stop.offset = s.left + (right - s.left) * (i + 1) / (implicit.length + 1);\n });\n implicit = [];\n } else {\n implicit.push({ left: right, stop: stop });\n }\n return stop;\n });\n\n var start = [ 0.5 - x, 0.5 + y ];\n var end = [ 0.5 + x, 0.5 - y ];\n\n // finally, draw it.\n group.append(\n Path.fromRect(rect)\n .stroke(null)\n .fill(new LinearGradient({\n start : start,\n end : end,\n stops : stops,\n userSpace : false\n }))\n );\n break;\n case \"radial\":\n // XXX:\n if (window.console && window.console.log) {\n window.console.log(\"Radial gradients are not yet supported in HTML renderer\");\n }\n break;\n }\n };\n }\n\n function maybeRenderWidget(element, group) {\n var visual;\n\n if (element._kendoExportVisual) {\n visual = element._kendoExportVisual();\n } else if (window.kendo && window.kendo.jQuery && element.getAttribute(window.kendo.attr(\"role\"))) {\n var widget = window.kendo.widgetInstance(window.kendo.jQuery(element));\n if (widget && (widget.exportDOMVisual || widget.exportVisual)) {\n if (widget.exportDOMVisual) {\n visual = widget.exportDOMVisual();\n } else {\n visual = widget.exportVisual();\n }\n }\n }\n\n if (!visual) {\n return false;\n }\n\n var wrap$$1 = new Group();\n wrap$$1.children.push(visual);\n\n var bbox = element.getBoundingClientRect();\n wrap$$1.transform(transform$1().translate(bbox.left, bbox.top));\n\n group.append(wrap$$1);\n\n return true;\n }\n\n function maybeRenderBullet(element, group) {\n var bulletType = element.getAttribute(KENDO_BULLET_TYPE);\n\n if (!bulletType) {\n return false;\n }\n\n var box = element.getBoundingClientRect();\n var color = getComputedStyle$1(element).color;\n\n if (bulletType === 'square') {\n var rectSize = box.height / 5;\n group.append(new Rect$2(new Rect([\n box.right - rectSize,\n box.top + box.height / 2.1\n ], [rectSize, rectSize])).fill(color).stroke(color));\n } else {\n var radius = box.height / 7;\n var center = [\n box.right - radius,\n box.top + (box.height + radius) / 2\n ];\n var circle = new Circle(new Circle$2(center, radius));\n if (bulletType === 'circle') {\n circle.stroke(color, 0.5);\n } else {\n circle.fill(color).stroke(null);\n }\n group.append(circle);\n }\n\n return true;\n }\n\n function renderImage(element, url, group) {\n var box = getContentBox(element);\n var rect = new Rect([ box.left, box.top ], [ box.width, box.height ]);\n var image = new Image$1(url, rect);\n setClipping(image, elementRoundBox(element, box, \"content\"));\n group.append(image);\n }\n\n function zIndexSort(a, b) {\n var sa = getComputedStyle$1(a);\n var sb = getComputedStyle$1(b);\n var za = parseFloat(getPropertyValue(sa, \"z-index\"));\n var zb = parseFloat(getPropertyValue(sb, \"z-index\"));\n var pa = getPropertyValue(sa, \"position\");\n var pb = getPropertyValue(sb, \"position\");\n if (isNaN(za) && isNaN(zb)) {\n if ((/static|absolute/.test(pa)) && (/static|absolute/.test(pb))) {\n return 0;\n }\n if (pa == \"static\") {\n return -1;\n }\n if (pb == \"static\") {\n return 1;\n }\n return 0;\n }\n if (isNaN(za)) {\n return zb === 0 ? 0 : zb > 0 ? -1 : 1;\n }\n if (isNaN(zb)) {\n return za === 0 ? 0 : za > 0 ? 1 : -1;\n }\n return parseFloat(za) - parseFloat(zb);\n }\n\n function isFormField(element) {\n return /^(?:textarea|select|input)$/i.test(element.tagName);\n }\n\n function getSelectedOption(element) {\n if (element.selectedOptions && element.selectedOptions.length > 0) {\n return element.selectedOptions[0];\n }\n return element.options[element.selectedIndex];\n }\n\n function renderCheckbox(element, group) {\n var style = getComputedStyle$1(element);\n var color = getPropertyValue(style, \"color\");\n var box = element.getBoundingClientRect();\n if (element.type == \"checkbox\") {\n group.append(\n Path.fromRect(\n new Rect([ box.left+1, box.top+1 ],\n [ box.width-2, box.height-2 ])\n ).stroke(color, 1)\n );\n if (element.checked) {\n // fill a rectangle inside? looks kinda ugly.\n // group.append(\n // Path.fromRect(\n // new geo.Rect([ box.left+4, box.top+4 ],\n // [ box.width-8, box.height-8])\n // ).fill(color).stroke(null)\n // );\n\n // let's draw a checkmark instead. artistic, eh?\n group.append(\n new Path()\n .stroke(color, 1.2)\n .moveTo(box.left + 0.22 * box.width,\n box.top + 0.55 * box.height)\n .lineTo(box.left + 0.45 * box.width,\n box.top + 0.75 * box.height)\n .lineTo(box.left + 0.78 * box.width,\n box.top + 0.22 * box.width)\n );\n }\n } else {\n group.append(\n new Circle(\n new Circle$2([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-2, box.height-2) / 2)\n ).stroke(color, 1)\n );\n if (element.checked) {\n group.append(\n new Circle(\n new Circle$2([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-8, box.height-8) / 2)\n ).fill(color).stroke(null)\n );\n }\n }\n }\n\n function renderFormField(element, group) {\n var tag = element.tagName.toLowerCase();\n if (tag == \"input\" && (element.type == \"checkbox\" || element.type == \"radio\")) {\n return renderCheckbox(element, group);\n }\n var p = element.parentNode;\n var doc = element.ownerDocument;\n var el = doc.createElement(KENDO_PSEUDO_ELEMENT);\n var option;\n el.style.cssText = getCssText(getComputedStyle$1(element));\n if (tag == \"input\") {\n el.style.whiteSpace = \"pre\";\n }\n if (tag == \"select\" || tag == \"textarea\") {\n el.style.overflow = \"auto\";\n }\n if (tag == \"select\") {\n if (element.multiple) {\n for (var i = 0; i < element.options.length; ++i) {\n option = doc.createElement(KENDO_PSEUDO_ELEMENT);\n option.style.cssText = getCssText(getComputedStyle$1(element.options[i]));\n option.style.display = \"block\"; // IE9 messes up without this\n option.textContent = element.options[i].textContent;\n el.appendChild(option);\n }\n } else {\n option = getSelectedOption(element);\n if (option) {\n el.textContent = option.textContent;\n }\n }\n } else {\n el.textContent = element.value;\n }\n p.insertBefore(el, element);\n el.scrollLeft = element.scrollLeft;\n el.scrollTop = element.scrollTop;\n\n // must temporarily hide the original element, otherwise it\n // may affect layout of the fake element we want to render.\n element.style.display = \"none\";\n\n renderContents(el, group);\n element.style.display = \"\";\n p.removeChild(el);\n }\n\n function serializeSVG(element) {\n var serializer = new window.XMLSerializer();\n var xml = serializer.serializeToString(element);\n\n if (browser.mozilla && !(element.getAttribute(\"width\") && element.getAttribute(\"height\"))) {\n var doc = new window.DOMParser().parseFromString(xml, \"image/svg+xml\");\n var svg$$1 = doc.documentElement;\n var box = getContentBox(element);\n svg$$1.setAttribute(\"width\", box.width);\n svg$$1.setAttribute(\"height\", box.height);\n xml = serializer.serializeToString(svg$$1);\n }\n\n return xml;\n }\n\n function renderContents(element, group) {\n if (nodeInfo._stackingContext.element === element) {\n // the group that was set in pushNodeInfo might have\n // changed due to clipping/transforms, update it here.\n nodeInfo._stackingContext.group = group;\n }\n switch (element.tagName.toLowerCase()) {\n case \"img\":\n renderImage(element, element.src, group);\n break;\n\n case \"svg\":\n var xml = serializeSVG(element);\n var dataURL = \"data:image/svg+xml;base64,\" + (encodeBase64(xml));\n renderImage(element, dataURL, group);\n break;\n\n case \"canvas\":\n try {\n renderImage(element, element.toDataURL(\"image/png\"), group);\n } catch (ex) {\n // tainted; can't draw it, ignore.\n }\n break;\n\n case \"textarea\":\n case \"input\":\n case \"select\":\n renderFormField(element, group);\n break;\n\n default:\n var children = [], floats = [], positioned = [];\n for (var i = element.firstChild; i; i = i.nextSibling) {\n switch (i.nodeType) {\n case 3: // Text\n if (/\\S/.test(i.data)) {\n renderText(element, i, group);\n }\n break;\n case 1: // Element\n var style = getComputedStyle$1(i);\n var floating = getPropertyValue(style, \"float\");\n var position = getPropertyValue(style, \"position\");\n if (position != \"static\") {\n positioned.push(i);\n }\n else if (floating != \"none\") {\n floats.push(i);\n } else {\n children.push(i);\n }\n break;\n }\n }\n\n mergeSort(children, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(floats, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(positioned, zIndexSort).forEach(function(el){ renderElement(el, group); });\n }\n }\n\n function renderText(element, node, group) {\n if (emptyClipbox()) {\n return;\n }\n var style = getComputedStyle$1(element);\n\n if (parseFloat(getPropertyValue(style, \"text-indent\")) < -500) {\n // assume it should not be displayed. the slider's\n // draggable handle displays a Drag text for some reason,\n // having text-indent: -3333px.\n return;\n }\n\n var text = node.data;\n var start = 0;\n var end = text.search(/\\S\\s*$/) + 1;\n\n if (!end) {\n return; // whitespace-only node\n }\n\n var fontSize = getPropertyValue(style, \"font-size\");\n var lineHeight = getPropertyValue(style, \"line-height\");\n\n // simply getPropertyValue(\"font\") doesn't work in Firefox :-\\\n var font = [\n getPropertyValue(style, \"font-style\"),\n getPropertyValue(style, \"font-variant\"),\n getPropertyValue(style, \"font-weight\"),\n fontSize, // no need for line height here; it breaks layout in FF\n getPropertyValue(style, \"font-family\")\n ].join(\" \");\n\n fontSize = parseFloat(fontSize);\n lineHeight = parseFloat(lineHeight);\n\n if (fontSize === 0 || isNaN(fontSize)) {\n return;\n }\n\n var color = getPropertyValue(style, \"color\");\n var range = element.ownerDocument.createRange();\n var align$$1 = getPropertyValue(style, \"text-align\");\n var isJustified = align$$1 == \"justify\";\n var columnCount = getPropertyValue(style, \"column-count\", 1);\n var whiteSpace = getPropertyValue(style, \"white-space\");\n var textTransform = getPropertyValue(style, \"text-transform\");\n\n // A line of 500px, with a font of 12px, contains an average of 80 characters, but since we\n // err, we'd like to guess a bigger number rather than a smaller one. Multiplying by 5\n // seems to be a good option.\n var estimateLineLength = element.getBoundingClientRect().width / fontSize * 5;\n if (estimateLineLength === 0) {\n estimateLineLength = 500;\n }\n\n // we'll maintain this so we can workaround bugs in Chrome's Range.getClientRects\n // https://github.com/telerik/kendo/issues/5740\n var prevLineBottom = null;\n\n var underline = nodeInfo[\"underline\"];\n var lineThrough = nodeInfo[\"line-through\"];\n var overline = nodeInfo[\"overline\"];\n var underlineOffset = nodeInfo[\"underline-offset\"];\n\n if (underline) {\n forEachRect(decorateUnder);\n }\n\n // doChunk returns true when all text has been rendered\n while (!doChunk()) {}\n\n if (lineThrough || overline) {\n forEachRect(decorateOver);\n }\n\n return; // only function declarations after this line\n\n function forEachRect(callback) {\n range.selectNode(node);\n var clientRects = slice$1$1(range.getClientRects());\n\n forEachRect = function (cb) { return clientRects.forEach(cb); };\n forEachRect(callback);\n }\n\n function actuallyGetRangeBoundingRect(range) {\n // XXX: to be revised when this Chrome bug is fixed:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=612459\n if (microsoft || browser.chrome || browser.safari) {\n // Workaround browser bugs: IE and Chrome would sometimes\n // return 0 or 1-width rectangles before or after the main\n // one. https://github.com/telerik/kendo/issues/4674\n\n // Actually Chrome 50 got worse, since the rectangles can now have the width of a\n // full character, making it hard to tell whether it's a bogus rectangle or valid\n // selection location. The workaround is to ignore rectangles that fall on the\n // previous line. https://github.com/telerik/kendo/issues/5740\n var rectangles = range.getClientRects(), box = {\n top : Infinity,\n right : -Infinity,\n bottom : -Infinity,\n left : Infinity\n }, done = false;\n for (var i = 0; i < rectangles.length; ++i) {\n var b = rectangles[i];\n if (b.width <= 1 || b.bottom === prevLineBottom) {\n continue; // bogus rectangle\n }\n box.left = Math.min(b.left , box.left);\n box.top = Math.min(b.top , box.top);\n box.right = Math.max(b.right , box.right);\n box.bottom = Math.max(b.bottom , box.bottom);\n done = true;\n }\n if (!done) {\n return range.getBoundingClientRect();\n }\n box.width = box.right - box.left;\n box.height = box.bottom - box.top;\n return box;\n }\n return range.getBoundingClientRect();\n }\n\n // Render a chunk of text, typically one line (but for justified text we render each word as\n // a separate Text object, because spacing is variable). Returns true when it finished the\n // current node. After each chunk it updates `start` to just after the last rendered\n // character.\n function doChunk() {\n var origStart = start;\n var box, pos = text.substr(start).search(/\\S/);\n start += pos;\n if (pos < 0 || start >= end) {\n return true;\n }\n\n // Select a single character to determine the height of a line of text. The box.bottom\n // will be essential for us to figure out where the next line begins.\n range.setStart(node, start);\n range.setEnd(node, start + 1);\n box = actuallyGetRangeBoundingRect(range);\n\n // for justified text we must split at each space, because space has variable width.\n var found = false;\n if (isJustified || columnCount > 1) {\n pos = text.substr(start).search(/\\s/);\n if (pos >= 0) {\n // we can only split there if it's on the same line, otherwise we'll fall back\n // to the default mechanism (see findEOL below).\n range.setEnd(node, start + pos);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom == box.bottom) {\n box = r;\n found = true;\n start += pos;\n }\n }\n }\n\n if (!found) {\n // This code does three things: (1) it selects one line of text in `range`, (2) it\n // leaves the bounding rect of that line in `box` and (3) it returns the position\n // just after the EOL. We know where the line starts (`start`) but we don't know\n // where it ends. To figure this out, we select a piece of text and look at the\n // bottom of the bounding box. If it changes, we have more than one line selected\n // and should retry with a smaller selection.\n //\n // To speed things up, we first try to select all text in the node (`start` ->\n // `end`). If there's more than one line there, then select only half of it. And\n // so on. When we find a value for `end` that fits in one line, we try increasing\n // it (also in halves) until we get to the next line. The algorithm stops when the\n // right side of the bounding box does not change.\n //\n // One more thing to note is that everything happens in a single Text DOM node.\n // There's no other tags inside it, therefore the left/top coordinates of the\n // bounding box will not change.\n pos = (function findEOL(min, eol, max){\n range.setEnd(node, eol);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom != box.bottom && min < eol) {\n return findEOL(min, (min + eol) >> 1, eol);\n } else if (r.right != box.right) {\n box = r;\n if (eol < max) {\n return findEOL(eol, (eol + max) >> 1, max);\n } else {\n return eol;\n }\n } else {\n return eol;\n }\n })(start, Math.min(end, start + estimateLineLength), end);\n\n if (pos == start) {\n // if EOL is at the start, then no more text fits on this line. Skip the\n // remainder of this node entirely to avoid a stack overflow.\n return true;\n }\n start = pos;\n\n pos = range.toString().search(/\\s+$/);\n if (pos === 0) {\n return false; // whitespace only; we should not get here.\n }\n if (pos > 0) {\n // eliminate trailing whitespace\n range.setEnd(node, range.startOffset + pos);\n box = actuallyGetRangeBoundingRect(range);\n }\n }\n\n // another workaround for IE: if we rely on getBoundingClientRect() we'll overlap with the bullet for LI\n // elements. Calling getClientRects() and using the *first* rect appears to give us the correct location.\n // Note: not to be used in Chrome as it randomly returns a zero-width rectangle from the previous line.\n if (microsoft) {\n box = range.getClientRects()[0];\n }\n\n var str = range.toString();\n if (!/^(?:pre|pre-wrap)$/i.test(whiteSpace)) {\n // node with non-significant space -- collapse whitespace.\n str = str.replace(/\\s+/g, \" \");\n }\n else if (/\\t/.test(str)) {\n // with significant whitespace we need to do something about literal TAB characters.\n // There's no TAB glyph in a font so they would be rendered in PDF as an empty box,\n // and the whole text will stretch to fill the original width. The core PDF lib\n // does not have sufficient context to deal with it.\n\n // calculate the starting column here, since we initially discarded any whitespace.\n var cc = 0;\n for (pos = origStart; pos < range.startOffset; ++pos) {\n var code = text.charCodeAt(pos);\n if (code == 9) {\n // when we meet a TAB we must round up to the next tab stop.\n // in all browsers TABs seem to be 8 characters.\n cc += 8 - cc % 8;\n } else if (code == 10 || code == 13) {\n // just in case we meet a newline we must restart.\n cc = 0;\n } else {\n // ordinary character --> advance one column\n cc++;\n }\n }\n\n // based on starting column, replace any TAB characters in the string we actually\n // have to display with spaces so that they align to columns multiple of 8.\n while ((pos = str.search(\"\\t\")) >= 0) {\n var indent = \" \".substr(0, 8 - (cc + pos) % 8);\n str = str.substr(0, pos) + indent + str.substr(pos + 1);\n }\n }\n\n if (!found) {\n prevLineBottom = box.bottom;\n }\n drawText(str, box);\n }\n\n function drawText(str, box) {\n // In IE the box height will be approximately lineHeight, while in\n // other browsers it'll (correctly) be the height of the bounding\n // box for the current text/font. Which is to say, IE sucks again.\n // The only good solution I can think of is to measure the text\n // ourselves and center the bounding box.\n if (microsoft && !isNaN(lineHeight)) {\n var height = getFontHeight(font);\n var top = (box.top + box.bottom - height) / 2;\n box = {\n top : top,\n right : box.right,\n bottom : top + height,\n left : box.left,\n height : height,\n width : box.right - box.left\n };\n }\n\n // var path = new Path({ stroke: { color: \"red\" }});\n // path.moveTo(box.left, box.top)\n // .lineTo(box.right, box.top)\n // .lineTo(box.right, box.bottom)\n // .lineTo(box.left, box.bottom)\n // .close();\n // group.append(path);\n\n switch (textTransform) {\n case \"uppercase\":\n str = str.toUpperCase();\n break;\n case \"lowercase\":\n str = str.toLowerCase();\n break;\n case \"capitalize\":\n str = str.replace(/(?:^|\\s)\\S/g, function (l) { return l.toUpperCase(); });\n break;\n }\n\n var text = new TextRect(\n str, new Rect([ box.left, box.top ],\n [ box.width, box.height ]),\n {\n font: font,\n fill: { color: color }\n }\n );\n group.append(text);\n }\n\n function drawTextLine(lineWidth, textBox, color, ypos) {\n if (color) {\n var path = new Path({ stroke: {\n width: lineWidth,\n color: color\n }});\n\n ypos -= lineWidth;\n path.moveTo(textBox.left, ypos)\n .lineTo(textBox.right, ypos);\n group.append(path);\n }\n }\n\n function decorateOver(box) {\n var width = fontSize / 12;\n drawTextLine(width, box, lineThrough, box.bottom - box.height / 2.7);\n drawTextLine(width, box, overline, box.top);\n }\n\n function decorateUnder(box) {\n var width = fontSize / 12;\n var underlinePos = box.bottom;\n if (underlineOffset != null) {\n underlinePos += underlineOffset;\n } else {\n underlinePos += width; // for \"auto\" it seems better to add line width\n }\n drawTextLine(width, box, underline, underlinePos);\n }\n }\n\n function groupInStackingContext(element, group, zIndex) {\n var main;\n if (zIndex != \"auto\") {\n // use the current stacking context\n main = nodeInfo._stackingContext.group;\n zIndex = parseFloat(zIndex);\n } else {\n // normal flow — use given container. we still have to\n // figure out where should we insert this element with the\n // assumption that its z-index is zero, as the group might\n // already contain elements with higher z-index.\n main = group;\n zIndex = 0;\n }\n var a = main.children;\n for (var i = 0; i < a.length; ++i) {\n if (a[i]._dom_zIndex != null && a[i]._dom_zIndex > zIndex) {\n break;\n }\n }\n\n var tmp = new Group();\n main.insert(i, tmp);\n tmp._dom_zIndex = zIndex;\n\n if (main !== group) {\n // console.log(\"Placing\", element, \"in\", nodeInfo._stackingContext.element, \"at position\", i, \" / \", a.length);\n // console.log(a.slice(i+1));\n\n // if (nodeInfo._matrix) {\n // tmp.transform(nodeInfo._matrix);\n // }\n if (nodeInfo._clipbox) {\n var m = nodeInfo._matrix.invert();\n var r = nodeInfo._clipbox.transformCopy(m);\n setClipping(tmp, Path.fromRect(r));\n // console.log(r);\n // tmp.append(Path.fromRect(r));\n // tmp.append(new Text(element.className || element.id, r.topLeft()));\n }\n }\n\n return tmp;\n }\n\n function renderElement(element, container) {\n var style = getComputedStyle$1(element);\n\n updateCounters(style);\n\n if (/^(style|script|link|meta|iframe|col|colgroup)$/i.test(element.tagName)) {\n return;\n }\n\n if (nodeInfo._clipbox == null) {\n return;\n }\n\n var opacity = parseFloat(getPropertyValue(style, \"opacity\"));\n var visibility = getPropertyValue(style, \"visibility\");\n var display = getPropertyValue(style, \"display\");\n\n if (opacity === 0 || visibility == \"hidden\" || display == \"none\") {\n return;\n }\n\n var tr = getTransform(style);\n var group;\n\n var zIndex = getPropertyValue(style, \"z-index\");\n if ((tr || opacity < 1) && zIndex == \"auto\") {\n zIndex = 0;\n }\n group = groupInStackingContext(element, container, zIndex);\n\n // XXX: remove at some point\n // group._pdfElement = element;\n // group.options._pdfDebug = \"\";\n // if (element.id) {\n // group.options._pdfDebug = \"#\" + element.id;\n // }\n // if (element.className) {\n // group.options._pdfDebug += \".\" + element.className.split(\" \").join(\".\");\n // }\n\n if (opacity < 1) {\n group.opacity(opacity * group.opacity());\n }\n\n pushNodeInfo(element, style, group);\n\n if (!tr) {\n _renderWithPseudoElements(element, group);\n }\n else {\n saveStyle(element, function(){\n // must clear transform, so getBoundingClientRect returns correct values.\n pleaseSetPropertyValue(element.style, \"transform\", \"none\", \"important\");\n\n // must also clear transitions, so correct values are returned *immediately*\n pleaseSetPropertyValue(element.style, \"transition\", \"none\", \"important\");\n\n // the presence of any transform makes it behave like it had position: relative,\n // because why not.\n // http://meyerweb.com/eric/thoughts/2011/09/12/un-fixing-fixed-elements-with-css-transforms/\n if (getPropertyValue(style, \"position\") == \"static\") {\n // but only if it's not already positioned. :-/\n pleaseSetPropertyValue(element.style, \"position\", \"relative\", \"important\");\n }\n\n // must translate to origin before applying the CSS\n // transformation, then translate back.\n var bbox = element.getBoundingClientRect();\n var x = bbox.left + tr.origin[0];\n var y = bbox.top + tr.origin[1];\n var m = [ 1, 0, 0, 1, -x, -y ];\n m = mmul(m, tr.matrix);\n m = mmul(m, [ 1, 0, 0, 1, x, y ]);\n m = setTransform$1(group, m);\n\n nodeInfo._matrix = nodeInfo._matrix.multiplyCopy(m);\n\n _renderWithPseudoElements(element, group);\n });\n }\n\n popNodeInfo();\n\n //drawDebugBox(element.getBoundingClientRect(), container);\n }\n\n // function drawDebugBox(box, group, color) {\n // var path = Path.fromRect(new geo.Rect([ box.left, box.top ], [ box.width, box.height ]));\n // if (color) {\n // path.stroke(color);\n // }\n // group.append(path);\n // }\n\n // function dumpTextNode(node) {\n // var txt = node.data.replace(/^\\s+/, \"\");\n // if (txt.length < 100) {\n // console.log(node.data.length + \": |\" + txt);\n // } else {\n // console.log(node.data.length + \": |\" + txt.substr(0, 50) + \"|...|\" + txt.substr(-50));\n // }\n // }\n\n function mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n }\n\n var drawing = {\n \tsvg: svg$1,\n \tcanvas: canvas,\n \tutil: util,\n \tHasObservers: HasObservers,\n \tPathParser: PathParser,\n \tparsePath: parsePath,\n \tBaseNode: BaseNode,\n \tOptionsStore: OptionsStore,\n \tSurface: Surface,\n \tSurfaceFactory: SurfaceFactory,\n \texportImage: exportImage,\n \texportSVG: exportSVG,\n \tQuadNode: QuadNode,\n \tShapesQuadTree: ShapesQuadTree,\n \tElement: Element$1,\n \tCircle: Circle,\n \tArc: Arc,\n \tPath: Path,\n \tMultiPath: MultiPath,\n \tText: Text,\n \tImage: Image$1,\n \tGroup: Group,\n \tLayout: Layout,\n \tRect: Rect$2,\n \talign: align,\n \tvAlign: vAlign,\n \tstack: stack,\n \tvStack: vStack,\n \twrap: wrap,\n \tvWrap: vWrap,\n \tfit: fit,\n \tLinearGradient: LinearGradient,\n \tRadialGradient: RadialGradient,\n \tGradientStop: GradientStop,\n \tGradient: Gradient,\n \tAnimation: Animation,\n \tAnimationFactory: AnimationFactory,\n \tdrawDOM: drawDOM,\n \tdrawText: drawText,\n \tgetFontFaces: getFontFaces\n };\n\n kendo.deepExtend(kendo, {\n drawing: drawing,\n geometry: geometry\n });\n\n // Use unique SVG Definition IDs for Kendo UI\n defId = 1000;\n\n kendo.drawing.Segment = kendo.geometry.Segment;\n kendo.dataviz.drawing = kendo.drawing;\n kendo.dataviz.geometry = kendo.geometry;\n kendo.drawing.util.measureText = kendo.util.measureText;\n kendo.drawing.util.objectKey = kendo.util.objectKey;\n kendo.drawing.Color = kendo.Color;\n kendo.util.encodeBase64 = kendo.drawing.util.encodeBase64;\n\n })(window.kendo.jQuery);\n\n (function($) {\n\n var NS = \".kendo\";\n var kendo = window.kendo;\n var deepExtend = kendo.deepExtend;\n var utils = kendo.drawing.util;\n var defined = utils.defined;\n var limitValue = utils.limitValue;\n var eventCoordinates = utils.eventCoordinates;\n var outerWidth = kendo._outerWidth;\n var outerHeight = kendo._outerHeight;\n\n var TOOLTIP_TEMPLATE = '
    ' +\n '
    ' +\n '
    ';\n var TOOLTIP_CLOSE_TEMPLATE = `
    ${kendo.ui.icon($(''), { icon: \"x\" })}
    `;\n\n var SurfaceTooltip = kendo.Class.extend({\n init: function(surface, options) {\n this.element = $(TOOLTIP_TEMPLATE);\n this.content = this.element.children(\".k-tooltip-content\");\n\n options = options || {};\n\n this.options = deepExtend({}, this.options, this._tooltipOptions(options));\n this.popupOptions = {\n appendTo: options.appendTo,\n animation: options.animation,\n copyAnchorStyles: false,\n collision: \"fit fit\"\n };\n\n this._openPopupHandler = this._openPopup.bind(this);\n\n this.surface = surface;\n this._bindEvents();\n },\n\n options: {\n position: \"top\",\n showOn: \"mouseenter\",\n offset: 7,\n autoHide: true,\n hideDelay: 0,\n showAfter: 100\n },\n\n _bindEvents: function() {\n this._showHandler = this._showEvent.bind(this);\n this._surfaceLeaveHandler = this._surfaceLeave.bind(this);\n this._mouseleaveHandler = this._mouseleave.bind(this);\n this._mousemoveHandler = this._mousemove.bind(this);\n\n this.surface.bind(\"click\", this._showHandler);\n this.surface.bind(\"mouseenter\", this._showHandler);\n this.surface.bind(\"mouseleave\", this._mouseleaveHandler);\n this.surface.bind(\"mousemove\", this._mousemoveHandler);\n\n this.surface.element.on(\"mouseleave\" + NS, this._surfaceLeaveHandler);\n\n this.element.on(\"click\" + NS, \".k-tooltip-button\", this._hideClick.bind(this));\n this.element.on(\"mouseleave\" + NS, this._tooltipLeave.bind(this));\n },\n\n getPopup: function() {\n if (!this.popup) {\n this.popup = new kendo.ui.Popup(this.element, this.popupOptions);\n }\n\n return this.popup;\n },\n\n destroy: function() {\n var popup = this.popup;\n\n this.surface.unbind(\"click\", this._showHandler);\n this.surface.unbind(\"mouseenter\", this._showHandler);\n this.surface.unbind(\"mouseleave\", this._mouseleaveHandler);\n this.surface.unbind(\"mousemove\", this._mousemoveHandler);\n\n this.surface.element.off(\"mouseleave\" + NS, this._surfaceLeaveHandler);\n this.element.off(\"click\" + NS);\n this.element.off(\"mouseleave\" + NS);\n\n if (popup) {\n popup.destroy();\n delete this.popup;\n }\n delete this.popupOptions;\n\n clearTimeout(this._timeout);\n\n delete this.element;\n delete this.content;\n delete this.surface;\n },\n\n _tooltipOptions: function(options) {\n options = options || {};\n return {\n position: options.position,\n showOn: options.showOn,\n offset: options.offset,\n autoHide: options.autoHide,\n width: options.width,\n height: options.height,\n content: options.content,\n shared: options.shared,\n hideDelay: options.hideDelay,\n showAfter: options.showAfter\n };\n },\n\n _tooltipShape: function(shape) {\n while (shape && !shape.options.tooltip) {\n shape = shape.parent;\n }\n return shape;\n },\n\n _updateContent: function(target, shape, options) {\n var content = options.content;\n if (kendo.isFunction(content)) {\n content = content({\n element: shape,\n target: target\n });\n }\n\n if (content) {\n this.content.html(content);\n return true;\n }\n },\n\n _position: function(shape, options, elementSize, event) {\n var position = options.position;\n var tooltipOffset = options.offset || 0;\n var surface = this.surface;\n var offset = surface._instance._elementOffset();\n var size = surface.getSize();\n var surfaceOffset = surface._instance._offset;\n var bbox = shape.bbox();\n var width = elementSize.width;\n var height = elementSize.height;\n var left = 0, top = 0;\n\n bbox.origin.translate(offset.left, offset.top);\n if (surfaceOffset) {\n bbox.origin.translate(-surfaceOffset.x, -surfaceOffset.y);\n }\n\n if (position == \"cursor\" && event) {\n var coord = eventCoordinates(event);\n left = coord.x - width / 2;\n top = coord.y - height - tooltipOffset;\n } else if (position == \"left\") {\n left = bbox.origin.x - width - tooltipOffset;\n top = bbox.center().y - height / 2;\n } else if (position == \"right\") {\n left = bbox.bottomRight().x + tooltipOffset;\n top = bbox.center().y - height / 2;\n } else if (position == \"bottom\") {\n left = bbox.center().x - width / 2;\n top = bbox.bottomRight().y + tooltipOffset;\n } else {\n left = bbox.center().x - width / 2;\n top = bbox.origin.y - height - tooltipOffset;\n }\n\n return {\n left: limitValue(left, offset.left, offset.left + size.width),\n top: limitValue(top, offset.top, offset.top + size.height)\n };\n },\n\n show: function(shape, options) {\n this._show(shape, shape, deepExtend({}, this.options, this._tooltipOptions(shape.options.tooltip), options));\n },\n\n hide: function() {\n var popup = this.popup;\n var current = this._current;\n\n delete this._current;\n clearTimeout(this._showTimeout);\n if (popup && popup.visible() && current &&\n !this.surface.trigger(\"tooltipClose\", { element: current.shape, target: current.target, popup: popup })) {\n popup.close();\n }\n },\n\n _hideClick: function(e) {\n e.preventDefault();\n this.hide();\n },\n\n _show: function(target, shape, options, event, delay) {\n var current = this._current;\n\n clearTimeout(this._timeout);\n\n if (current && ((current.shape === shape && options.shared) || current.target === target)) {\n return;\n }\n\n clearTimeout(this._showTimeout);\n\n var popup = this.getPopup();\n\n if (!this.surface.trigger(\"tooltipOpen\", { element: shape, target: target, popup: popup }) &&\n this._updateContent(target, shape, options)) {\n\n this._autoHide(options);\n var elementSize = this._measure(options);\n\n if (popup.visible()) {\n popup.close(true);\n }\n\n this._current = {\n options: options,\n elementSize: elementSize,\n shape: shape,\n target: target,\n position: this._position(options.shared ? shape : target, options, elementSize, event)\n };\n\n if (delay) {\n this._showTimeout = setTimeout(this._openPopupHandler, options.showAfter || 0);\n } else {\n this._openPopup();\n }\n }\n },\n\n _openPopup: function() {\n var current = this._current;\n var position = current.position;\n\n this.getPopup().open(position.left, position.top);\n },\n\n _autoHide: function(options) {\n if (options.autoHide && this._closeButton) {\n this.element.removeClass(\"k-tooltip-closable\");\n this._closeButton.remove();\n delete this._closeButton;\n }\n\n if (!options.autoHide && !this._closeButton) {\n this.element.addClass(\"k-tooltip-closable\");\n this._closeButton = $(TOOLTIP_CLOSE_TEMPLATE).appendTo(this.element);\n }\n },\n\n _showEvent: function(e) {\n var shape = this._tooltipShape(e.element);\n\n if (shape) {\n var options = deepExtend({}, this.options, this._tooltipOptions(shape.options.tooltip));\n\n if (options && options.showOn == e.type) {\n this._show(e.element, shape, options, e.originalEvent, true);\n }\n }\n },\n\n _measure: function(options) {\n this.element.css({\n width: defined(options.width) ? options.width : 'auto',\n height: defined(options.height) ? options.height : 'auto'\n });\n\n const clone = this.element.clone().appendTo(document.body).css({ visibility: 'hidden' });\n const width = outerWidth(clone);\n const height = outerHeight(clone);\n clone.remove();\n\n this.element.css({\n width: width,\n height: height\n });\n\n return {\n width: width,\n height: height\n };\n },\n\n _mouseleave: function(e) {\n if (this.popup && !this._popupRelatedTarget(e.originalEvent)) {\n var tooltip = this;\n var current = tooltip._current;\n\n if (current && current.options.autoHide) {\n tooltip._timeout = setTimeout(function() {\n clearTimeout(tooltip._showTimeout);\n tooltip.hide();\n }, current.options.hideDelay || 0);\n }\n }\n },\n\n _mousemove: function(e) {\n var current = this._current;\n if (current && e.element) {\n var options = current.options;\n if (options.position == \"cursor\") {\n var position = this._position(e.element, options, current.elementSize, e.originalEvent);\n current.position = position;\n this.getPopup().wrapper.css({ left: position.left, top: position.top });\n }\n }\n },\n\n _surfaceLeave: function(e) {\n if (this.popup && !this._popupRelatedTarget(e)) {\n clearTimeout(this._showTimeout);\n this.hide();\n }\n },\n\n _popupRelatedTarget: function(e) {\n return e.relatedTarget && $(e.relatedTarget).closest(this.popup.wrapper).length;\n },\n\n _tooltipLeave: function() {\n var tooltip = this;\n var current = tooltip._current;\n if (current && current.options.autoHide) {\n tooltip._timeout = setTimeout(function() {\n tooltip.hide();\n }, current.options.hideDelay || 0);\n }\n }\n });\n\n kendo.drawing.SurfaceTooltip = SurfaceTooltip;\n\n })(window.kendo.jQuery);\n\n (function($) {\n\n var kendo = window.kendo;\n var draw = kendo.drawing;\n var DrawingSurface = draw.Surface;\n var Widget = kendo.ui.Widget;\n var deepExtend = kendo.deepExtend;\n\n kendo.support.svg = DrawingSurface.support.svg;\n kendo.support.canvas = DrawingSurface.support.canvas;\n\n var Surface = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, {});\n\n this.options = deepExtend({}, this.options, options);\n\n this._instance = DrawingSurface.create(this.element[0], options);\n if (this._instance.translate) {\n this.translate = translate;\n }\n\n this._triggerInstanceHandler = this._triggerInstanceEvent.bind(this);\n this._bindHandler(\"click\");\n this._bindHandler(\"mouseenter\");\n this._bindHandler(\"mouseleave\");\n this._bindHandler(\"mousemove\");\n\n this._enableTracking();\n },\n\n options: {\n name: \"Surface\",\n tooltip: {}\n },\n\n events: [\n \"click\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"resize\",\n \"tooltipOpen\",\n \"tooltipClose\"\n ],\n\n _triggerInstanceEvent: function(e) {\n this.trigger(e.type, e);\n },\n\n _bindHandler: function(event) {\n this._instance.bind(event, this._triggerInstanceHandler);\n },\n\n draw: function(element) {\n this._instance.draw(element);\n },\n\n clear: function() {\n if (this._instance) {\n this._instance.clear();\n }\n this.hideTooltip();\n },\n\n destroy: function() {\n if (this._instance) {\n this._instance.destroy();\n delete this._instance;\n }\n\n if (this._tooltip) {\n this._tooltip.destroy();\n delete this._tooltip;\n }\n\n Widget.fn.destroy.call(this);\n },\n\n exportVisual: function() {\n return this._instance.exportVisual();\n },\n\n eventTarget: function(e) {\n return this._instance.eventTarget(e);\n },\n\n showTooltip: function(shape, options) {\n if (this._tooltip) {\n this._tooltip.show(shape, options);\n }\n },\n\n hideTooltip: function() {\n if (this._tooltip) {\n this._tooltip.hide();\n }\n },\n\n suspendTracking: function() {\n this._instance.suspendTracking();\n this.hideTooltip();\n },\n\n resumeTracking: function() {\n this._instance.resumeTracking();\n },\n\n getSize: function() {\n return {\n width: this.element.width(),\n height: this.element.height()\n };\n },\n\n setSize: function(size) {\n this.element.css({\n width: size.width,\n height: size.height\n });\n\n this._size = size;\n this._instance.currentSize(size);\n this._resize();\n },\n\n _resize: function() {\n this._instance.currentSize(this._size);\n this._instance._resize();\n },\n\n _enableTracking: function() {\n if (kendo.ui.Popup) {\n this._tooltip = new draw.SurfaceTooltip(this, this.options.tooltip || {});\n }\n }\n });\n\n kendo.ui.plugin(Surface);\n\n Surface.create = function(element, options) {\n return new Surface(element, options);\n };\n\n kendo.drawing.Surface = Surface;\n\n function translate(offset) {\n this._instance.translate(offset);\n }\n\n })(window.kendo.jQuery);\n\n (function($) {\n\n var kendo = window.kendo;\n var drawing = kendo.drawing;\n var drawDOM = drawing.drawDOM;\n\n drawing.drawDOM = function(element, options) {\n return drawDOM($(element)[0], options);\n };\n\n // Aliases used by spreadsheet/print.js\n drawing.drawDOM.drawText = drawing.drawText;\n drawing.drawDOM.getFontFaces = drawing.getFontFaces;\n\n })(window.kendo.jQuery);\n\n var __meta__$F = {\n id: \"drawing\",\n name: \"Drawing API\",\n category: \"framework\",\n description: \"The Kendo UI low-level drawing API\",\n depends: [ \"core\", \"color\", \"popup\", \"icons\" ]\n };\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-charts` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable space-before-blocks, space-before-function-paren, curly, object-curly-spacing */\n\n window.kendo.dataviz = window.kendo.dataviz || {};\n var drawing = kendo.drawing;\n var util = drawing.util;\n var Path = drawing.Path;\n var Group = drawing.Group;\n var Class = kendo.Class;\n var support = kendo.support;\n var geometry = kendo.geometry;\n var Rect = geometry.Rect;\n var Circle = geometry.Circle;\n var geometryTransform = geometry.transform;\n var Segment = geometry.Segment;\n var dataviz = kendo.dataviz;\n\n var deepExtend = kendo.deepExtend;\n var isFunction = kendo.isFunction;\n var __common_getter_js = kendo.getter;\n\n var ARC = \"arc\";\n var ARROW_UP = \"ArrowUp\";\n var ARROW_DOWN = \"ArrowDown\";\n var ARROW_LEFT = \"ArrowLeft\";\n var ARROW_RIGHT = \"ArrowRight\";\n var TAB = \"Tab\";\n var ARIA_ACTIVE_DESCENDANT = \"aria-activedescendant\";\n var AXIS_LABEL_CLICK = \"axisLabelClick\";\n var BLACK = \"#000\";\n var BOTTOM = \"bottom\";\n var CENTER = \"center\";\n var CIRCLE = \"circle\";\n var COORD_PRECISION = 3;\n var CROSS = \"cross\";\n var DATE = \"date\";\n var DEFAULT_FONT = \"12px sans-serif\";\n var DEFAULT_HEIGHT = 400;\n var DEFAULT_PRECISION = 10;\n var DEFAULT_WIDTH = 600;\n var END = \"end\";\n var ENTER = \"Enter\";\n var ESCAPE = \"Escape\";\n var FORMAT_REGEX = /\\{\\d+:?/;\n var HEIGHT = \"height\";\n var HIGHLIGHT_ZINDEX = 100;\n var INSIDE = \"inside\";\n var INHERIT = \"inherit\";\n var LEFT = \"left\";\n var MAX_VALUE = Number.MAX_VALUE;\n var MIN_VALUE = -Number.MAX_VALUE;\n var NONE = \"none\";\n var NOTE_CLICK = \"noteClick\";\n var NOTE_HOVER = \"noteHover\";\n var NOTE_LEAVE = \"noteLeave\";\n var OBJECT = \"object\";\n var OUTSIDE = \"outside\";\n var RIGHT = \"right\";\n var ROUNDED_RECT = \"roundedRect\";\n var START = \"start\";\n var STRING = \"string\";\n var TOP = \"top\";\n var TRIANGLE = \"triangle\";\n var SQUARE = \"square\";\n var RECT = \"rect\";\n var VALUE = \"value\";\n var WHITE = \"#fff\";\n var WIDTH = \"width\";\n var X = \"x\";\n var Y = \"y\";\n var DEFAULT_SERIES_OPACITY = 1;\n var POINTER = \"pointer\";\n var HORIZONTAL = \"horizontal\";\n var VERTICAL = \"vertical\";\n\n var constants = {\n \tARC: ARC,\n \tARROW_UP: ARROW_UP,\n \tARROW_DOWN: ARROW_DOWN,\n \tARROW_LEFT: ARROW_LEFT,\n \tARROW_RIGHT: ARROW_RIGHT,\n \tTAB: TAB,\n \tARIA_ACTIVE_DESCENDANT: ARIA_ACTIVE_DESCENDANT,\n \tAXIS_LABEL_CLICK: AXIS_LABEL_CLICK,\n \tBLACK: BLACK,\n \tBOTTOM: BOTTOM,\n \tCENTER: CENTER,\n \tCIRCLE: CIRCLE,\n \tCOORD_PRECISION: COORD_PRECISION,\n \tCROSS: CROSS,\n \tDATE: DATE,\n \tDEFAULT_FONT: DEFAULT_FONT,\n \tDEFAULT_HEIGHT: DEFAULT_HEIGHT,\n \tDEFAULT_PRECISION: DEFAULT_PRECISION,\n \tDEFAULT_WIDTH: DEFAULT_WIDTH,\n \tEND: END,\n \tENTER: ENTER,\n \tESCAPE: ESCAPE,\n \tFORMAT_REGEX: FORMAT_REGEX,\n \tHEIGHT: HEIGHT,\n \tHIGHLIGHT_ZINDEX: HIGHLIGHT_ZINDEX,\n \tINSIDE: INSIDE,\n \tINHERIT: INHERIT,\n \tLEFT: LEFT,\n \tMAX_VALUE: MAX_VALUE,\n \tMIN_VALUE: MIN_VALUE,\n \tNONE: NONE,\n \tNOTE_CLICK: NOTE_CLICK,\n \tNOTE_HOVER: NOTE_HOVER,\n \tNOTE_LEAVE: NOTE_LEAVE,\n \tOBJECT: OBJECT,\n \tOUTSIDE: OUTSIDE,\n \tRIGHT: RIGHT,\n \tROUNDED_RECT: ROUNDED_RECT,\n \tSTART: START,\n \tSTRING: STRING,\n \tTOP: TOP,\n \tTRIANGLE: TRIANGLE,\n \tSQUARE: SQUARE,\n \tRECT: RECT,\n \tVALUE: VALUE,\n \tWHITE: WHITE,\n \tWIDTH: WIDTH,\n \tX: X,\n \tY: Y,\n \tDEFAULT_SERIES_OPACITY: DEFAULT_SERIES_OPACITY,\n \tPOINTER: POINTER,\n \tHORIZONTAL: HORIZONTAL,\n \tVERTICAL: VERTICAL\n };\n\n function isArray(value) {\n return Array.isArray(value);\n }\n\n function addClass(element, classes) {\n var classArray = isArray(classes) ? classes : [ classes ];\n\n for (var idx = 0; idx < classArray.length; idx++) {\n var className = classArray[idx];\n if (element.className.indexOf(className) === -1) {\n element.className += \" \" + className;\n }\n }\n }\n\n var SPACE_REGEX = /\\s+/g;\n\n function removeClass(element, className) {\n if (element && element.className) {\n element.className = element.className.replace(className, \"\").replace(SPACE_REGEX, \" \");\n }\n }\n\n function alignPathToPixel(path) {\n var offset = 0.5;\n if (path.options.stroke && kendo.drawing.util.defined(path.options.stroke.width)) {\n if (path.options.stroke.width % 2 === 0) {\n offset = 0;\n }\n }\n\n for (var i = 0; i < path.segments.length; i++) {\n path.segments[i].anchor().round(0).translate(offset, offset);\n }\n\n return path;\n }\n\n 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 }\n\n function isNumber(value) {\n return typeof value === \"number\" && !isNaN(value);\n }\n\n function isString(value) {\n return typeof value === STRING;\n }\n\n function convertableToNumber(value) {\n return isNumber(value) || (isString(value) && isFinite(value));\n }\n\n function cycleUp(index, count) {\n return (index + 1) % count;\n }\n\n function cycleDown(index, count) {\n var result = index - 1;\n\n return result < 0 ? count - 1 : result;\n }\n\n 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 }\n\n function isObject(value) {\n return typeof value === \"object\";\n }\n\n function styleValue(value) {\n if (isNumber(value)) {\n return value + \"px\";\n }\n return value;\n }\n\n var SIZE_STYLES_REGEX = /width|height|top|left|bottom|right/i;\n\n function isSizeField(field) {\n return SIZE_STYLES_REGEX.test(field);\n }\n\n function elementStyles(element, styles) {\n var stylesArray = isString(styles) ? [ styles ] : styles;\n\n if (isArray(stylesArray)) {\n var result = {};\n var style = window.getComputedStyle(element);\n\n for (var idx = 0; idx < stylesArray.length; idx++) {\n var 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 (var field$1 in styles) {\n element.style[field$1] = styleValue(styles[field$1]);\n }\n }\n }\n\n function getSpacing(value, defaultSpacing) {\n if (defaultSpacing === void 0) { defaultSpacing = 0; }\n\n var 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 }\n\n var current = {\n compile: function(template) {\n return template;\n }\n };\n\n var TemplateService = Class.extend({\n\n });\n\n TemplateService.register = function(userImplementation) {\n current = userImplementation;\n };\n\n TemplateService.compile = function(template, options) {\n return current.compile(template, options);\n };\n\n function getTemplate(options) {\n if (options === void 0) { options = {}; }\n\n var 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\n function getTemplate$1(options) {\n if (options === void 0) { options = {}; }\n\n var 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\n function grep(array, callback) {\n var length = array.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n if (callback(array[idx])) {\n result .push(array[idx]);\n }\n }\n\n return result;\n }\n\n function hasClasses(element, classNames) {\n if (element.className) {\n var names = classNames.split(\" \");\n for (var 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\n // TODO: Remove and replace with Map/WeakMap.\n var HashMap = function HashMap() {\n this._map = new Map();\n };\n\n HashMap.prototype.get = function get (key) {\n return this._map.get(key);\n };\n\n HashMap.prototype.set = function set (key, value) {\n this._map.set(key, value);\n };\n\n function inArray(value, array) {\n if (array) {\n return array.indexOf(value) !== -1;\n }\n }\n\n function interpolateValue(start, end, progress) {\n return kendo.drawing.util.round(start + (end - start) * progress, COORD_PRECISION);\n }\n\n var TRIGGER = 'trigger';\n\n var InstanceObserver = Class.extend({\n init: function(observer, handlers) {\n this.observer = observer;\n this.handlerMap = deepExtend({}, this.handlerMap, handlers);\n },\n\n trigger: function(name, args) {\n var ref = this;\n var observer = ref.observer;\n var handlerMap = ref.handlerMap;\n var 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: function(fnName) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n return this.observer[fnName].apply(this.observer, args);\n },\n\n requiresHandlers: function(names) {\n var this$1$1 = this;\n\n if (this.observer.requiresHandlers) {\n return this.observer.requiresHandlers(names);\n }\n\n for (var idx = 0; idx < names.length; idx++) {\n if (this$1$1.handlerMap[names[idx]]) {\n return true;\n }\n }\n }\n });\n\n function isPlainObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n }\n\n function map(array, callback) {\n var length = array.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n var value = callback(array[idx]);\n if (kendo.drawing.util.defined(value)) {\n result.push(value);\n }\n }\n return result;\n }\n\n var browser = support.browser || {};\n\n function mousewheelDelta(e) {\n var 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\n var ref = kendo.drawing.util;\n var append = ref.append;\n var bindEvents = ref.bindEvents;\n var defined = ref.defined;\n var deg = ref.deg;\n var elementOffset = ref.elementOffset;\n var elementSize = ref.elementSize;\n var eventCoordinates = ref.eventCoordinates;\n var eventElement = ref.eventElement;\n var hashKey = ref.hashKey;\n var last = ref.last;\n var limitValue = ref.limitValue;\n var objectKey = ref.objectKey;\n var rad = ref.rad;\n var round = ref.round;\n var unbindEvents = ref.unbindEvents;\n var valueOrDefault = ref.valueOrDefault;\n\n var FontLoader = Class.extend({\n\n });\n\n FontLoader.fetchFonts = function(options, fonts, state) {\n if (state === void 0) { state = { depth: 0 }; }\n\n var 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 var 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 FontLoader.loadFonts = function(fonts, callback) {\n var 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 kendo.logToConsole(e);\n }\n\n Promise.all(promises).then(callback, callback);\n } else {\n callback();\n }\n };\n\n FontLoader.preloadFonts = function(options, callback) {\n var fonts = [];\n FontLoader.fetchFonts(options, fonts);\n\n FontLoader.loadFonts(fonts, callback);\n };\n\n function setDefaultOptions(type, options) {\n var proto = type.prototype;\n if (proto.options) {\n proto.options = deepExtend({}, proto.options, options);\n } else {\n proto.options = options;\n }\n }\n\n var KICON = 'k-icon';\n var KI_PREFFIX = 'k-i-';\n var KFONTICON = 'k-font-icon';\n var KSVGICON = 'k-svg-icon';\n var KSVG_PREFFIX = 'k-svg-i-';\n\n var HTMLBaseIcon = Class.extend({\n init: function(element, options) {\n this.element = element;\n this.options = deepExtend({}, this.options, options);\n\n this.wrapper();\n },\n\n wrapper: function() {\n this.addClasses();\n },\n\n addClasses: function() {\n },\n\n html: function() {\n return this.element.outerHTML;\n }\n });\n\n setDefaultOptions(HTMLBaseIcon, {\n name: '',\n size: 'none',\n themeColor: 'none',\n flip: 'default',\n iconClass: '',\n stylingOptions: [ 'size', 'themeColor', 'fill' ]\n });\n\n var HTMLFontIcon = HTMLBaseIcon.extend({\n init: function(element, options) {\n HTMLBaseIcon.fn.init.call(this, element, options);\n },\n\n wrapper: function() {\n // Find if there is an existing k-i- class appended to the element.\n var currentIconClass = this.element.className.split(\" \").find(function (x) { return x.startsWith(KI_PREFFIX); });\n var 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 addClass(this.element, KFONTICON);\n removeClass(this.element, currentIconClass); // Remove any existing icons.\n addClass(this.element, className);\n addClass(this.element, this.options.iconClass || '');\n\n HTMLBaseIcon.fn.wrapper.call(this);\n }\n });\n\n setDefaultOptions(HTMLFontIcon, {\n name: 'HTMLFontIcon',\n icon: null\n });\n\n var HTMLSvgIcon = HTMLBaseIcon.extend({\n init: function(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 HTMLBaseIcon.fn.init.call(this, element, options);\n },\n\n wrapper: function() {\n var icon = this.options.icon;\n var iconClass = this.options.iconClass;\n var currentIconClass = this.element.className.split(\" \").find(function (x) { return x.startsWith(KSVG_PREFFIX); });\n\n if (!icon && iconClass) {\n // match k-i-(some-icon-name)\n var regex = /k-i-(\\w+(?:-\\w+)*)/;\n var 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, function (x) { return x[1].toUpperCase(); });\n icon = this.options.svgIcons[icon] || this.options.svgIcons[(icon + \"Icon\")];\n }\n\n var 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 var 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 HTMLBaseIcon.fn.wrapper.call(this);\n }\n });\n\n setDefaultOptions(HTMLSvgIcon, {\n name: 'HTMLSvgIcon',\n icon: null,\n svgIcons: {}\n });\n\n var ICON_TYPES = {\n 'svg': HTMLSvgIcon,\n 'font': HTMLFontIcon\n };\n\n function renderIcon(iconElement, iconOptions) {\n var element = iconElement;\n var 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\n function sparseArrayLimits(arr) {\n var min = MAX_VALUE;\n var max = MIN_VALUE;\n\n for (var idx = 0, length = arr.length; idx < length; idx++) {\n var 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 }\n\n function find(array, predicate) {\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n }\n\n var Matrix = geometry.Matrix;\n var matrixRegexp = /matrix\\((.*)\\)/;\n\n function parseMatrix(matrixString) {\n var match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n var members = match[1].split(',').map(function (x) { return parseFloat(x); });\n return new (Function.prototype.bind.apply( Matrix, [ null ].concat( members) ));\n }\n\n function transformMatrix(element) {\n var transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n }\n\n function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n var matrix = transformMatrix(element);\n var parent = element.parentElement;\n while (parent) {\n var 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\n function autoTextColor(color) {\n var isDark = new kendo.Color(color).isDark();\n if (isDark) {\n return WHITE;\n }\n\n return BLACK;\n }\n\n var DELETED = {};\n\n var LegacySet = Class.extend({\n init: function(values) {\n var this$1$1 = this;\n\n this._index = {};\n this._values = values ? values.slice(0) : [];\n\n for (var i = 0; i < this._values.length; i++) {\n this$1$1._index[this$1$1._values[i]] = i;\n }\n },\n\n values: function() {\n return this._values.filter(function (item) { return item !== DELETED; });\n },\n\n has: function(value) {\n return this._index[value] !== undefined;\n },\n\n add: function(value) {\n if (!this.has(value)) {\n this._index[value] = this._values.length;\n this._values.push(value);\n }\n },\n\n delete: function(value) {\n var index = this._index[value];\n if (index !== undefined) {\n this._values[index] = DELETED;\n delete this._index[value];\n }\n },\n\n clear: function() {\n this._index = {};\n this._values = [];\n }\n });\n\n if (Object.defineProperties) {\n Object.defineProperties(LegacySet.fn, {\n size: {\n get: function() {\n return this._values.length;\n }\n }\n });\n }\n\n var SetWrapper = Class.extend({\n init: function(values) {\n this._set = new Set(values);\n },\n\n values: function() {\n return Array.from(this._set);\n },\n\n has: function(value) {\n return this._set.has(value);\n },\n\n add: function(value) {\n this._set.add(value);\n },\n\n delete: function(value) {\n this._set.delete(value);\n },\n\n clear: function() {\n this._set.clear();\n }\n });\n\n if (Object.defineProperties) {\n Object.defineProperties(SetWrapper.fn, {\n size: {\n get: function() {\n return this._set.size;\n }\n }\n });\n }\n\n // TODO: Drop LegacySet when removing support for IE10\n var supportsSet = function () {\n var supported = false;\n\n if (typeof Set === 'function') {\n var set = new Set([1]);\n supported = set.has(1);\n }\n\n return supported;\n };\n\n function createHashSet(values) {\n if (supportsSet()) {\n return new SetWrapper(values);\n }\n\n return new LegacySet(values);\n }\n\n function defaultErrorHandler(error) {\n throw error;\n }\n\n var 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\n function hasOwnProperty(obj, property) {\n return Object.prototype.hasOwnProperty.call(obj, property);\n }\n\n // Based on the implementation from kendo-spreadsheet-common/src/calc.js\n var Matrix$1 = Class.extend({\n init: function() {\n this.height = 0;\n this.width = 0;\n this.data = [];\n },\n\n clone: function() {\n var m = new Matrix$1();\n m.height = this.height;\n m.width = this.width;\n m.data = this.data.map(function (row) { return row.slice(); });\n return m;\n },\n\n get: function(row, col) {\n var line = this.data[row];\n var val = line ? line[col] : null;\n return val;\n },\n\n set: function(row, col, data) {\n var 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: function(f, includeEmpty) {\n var this$1$1 = this;\n\n for (var row = 0; row < this.height; ++row) {\n for (var col = 0; col < this.width; ++col) {\n var val = this$1$1.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: function(f, includeEmpty) {\n var m = new Matrix$1();\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: function() {\n var m = new Matrix$1();\n this.each(function(el, row, col) {\n m.set(col, row, el);\n });\n return m;\n },\n\n unit: function(n) {\n this.width = this.height = n;\n var a = this.data = new Array(n);\n for (var i = n; --i >= 0;) {\n var row = a[i] = new Array(n);\n for (var j = n; --j >= 0;) {\n row[j] = i === j ? 1 : 0;\n }\n }\n return this;\n },\n\n multiply: function(b) {\n var a = this;\n var m = new Matrix$1();\n for (var row = 0; row < a.height; ++row) {\n for (var col = 0; col < b.width; ++col) {\n var s = 0;\n for (var i = 0; i < a.width; ++i) {\n var va = a.get(row, i);\n var 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: function() {\n var n = this.width;\n var m = this.augment(new Matrix$1().unit(n));\n var 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 var loop = function ( k ) {\n var imax = argmax(k, n, function(i) { return a[i][k]; });\n if (!a[imax][k]) {\n return { v: null }; // singular matrix\n }\n if (k !== imax) {\n var tmp = a[k];\n a[k] = a[imax];\n a[imax] = tmp;\n }\n for (var i = k + 1; i < n; ++i) {\n for (var 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 for (var k = 0; k < n; ++k) {\n var returned = loop( k );\n\n if ( returned ) return returned.v;\n }\n\n // 2. Get 1-s on main diagonal, dividing by pivot\n for (var i$1 = 0; i$1 < n; ++i$1) {\n for (var f = a[i$1][i$1], j$1 = 0; j$1 < 2 * n; ++j$1) {\n a[i$1][j$1] /= 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 (var k$1 = n; --k$1 >= 0;) {\n for (var i$2 = k$1; --i$2 >= 0;) {\n if (a[i$2][k$1]) {\n for (var j$2 = 2 * n; --j$2 >= n;) {\n a[i$2][j$2] -= a[k$1][j$2] * a[i$2][k$1];\n }\n }\n }\n }\n\n return m.slice(0, n, n, n);\n },\n\n augment: function(m) {\n var ret = this.clone();\n var 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: function(row, col, height, width) {\n var this$1$1 = this;\n\n var m = new Matrix$1();\n for (var i = 0; i < height; ++i) {\n for (var j = 0; j < width; ++j) {\n m.set(i, j, this$1$1.get(row + i, col + j));\n }\n }\n return m;\n }\n });\n\n function argmax(start, end, f) {\n var max = f(start), pos = start;\n for (var i = start + 1; i < end; i++) {\n var v = f(start);\n if (v > max) {\n max = v;\n pos = start;\n }\n }\n return pos;\n }\n\n var STRING$1 = \"string\";\n var FUNCTION = \"function\";\n\n var preventDefault = function() {\n this._defaultPrevented = true;\n };\n\n var isDefaultPrevented = function() {\n return this._defaultPrevented === true;\n };\n\n var Observable$$1 = (function (Class$$1) {\n function Observable$$1() {\n Class$$1.call(this);\n this._events = {};\n }\n\n if ( Class$$1 ) Observable$$1.__proto__ = Class$$1;\n Observable$$1.prototype = Object.create( Class$$1 && Class$$1.prototype );\n Observable$$1.prototype.constructor = Observable$$1;\n\n Observable$$1.prototype.destroy = function destroy () {\n this.unbind();\n };\n\n Observable$$1.prototype.bind = function bind (event, handlers, one) {\n var that = this,\n idx,\n eventNames = typeof event === STRING$1 ? [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 var loop = function ( ) {\n var 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\n for (idx = 0, length = eventNames.length; idx < length; idx++) loop( );\n /* eslint-enable no-loop-func */\n\n return that;\n };\n\n Observable$$1.prototype.one = function one (eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n };\n\n Observable$$1.prototype.first = function first (eventName, handlers) {\n var that = this,\n idx,\n eventNames = typeof eventName === STRING$1 ? [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 var eventName$1 = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n if (handler) {\n events = that._events[eventName$1] = that._events[eventName$1] || [];\n events.unshift(handler);\n }\n }\n\n return that;\n };\n\n Observable$$1.prototype.trigger = function trigger (eventName, eventArgs) {\n var that = this,\n events = that._events[eventName],\n idx,\n length;\n\n if (events) {\n var 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 Observable$$1.prototype.unbind = function unbind (eventName, handler) {\n var 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 Observable$$1.prototype._setEvents = function _setEvents (options) {\n var this$1$1 = this;\n\n var length = (this.events || []).length;\n\n for (var idx = 0; idx < length; idx ++) {\n var e = this$1$1.events[idx];\n\n if (this$1$1.options[e] && options[e]) {\n this$1$1.unbind(e, this$1$1.options[e]);\n\n if (this$1$1._events && this$1$1._events[e]) {\n delete this$1$1._events[e];\n }\n }\n }\n\n this.bind(this.events, options);\n };\n\n return Observable$$1;\n }(Class));\n\n function autoMajorUnit(min, max) {\n var 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 var scale = Math.pow(10, Math.floor(Math.log(diff) / Math.log(10)));\n var relativeValue = round((diff / scale), DEFAULT_PRECISION);\n var 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 }\n\n var Point = Class.extend({\n init: function(x, y) {\n\n this.x = x || 0;\n this.y = y || 0;\n },\n\n clone: function() {\n return new Point(this.x, this.y);\n },\n\n equals: function(point) {\n return point && this.x === point.x && this.y === point.y;\n },\n\n rotate: function(center, degrees) {\n var theta = rad(degrees);\n var cosT = Math.cos(theta);\n var sinT = Math.sin(theta);\n var cx = center.x;\n var cy = center.y;\n var ref = this;\n var x = ref.x;\n var y = ref.y;\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: function(a) {\n\n this.x *= a;\n this.y *= a;\n\n return this;\n },\n\n distanceTo: function(point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n });\n\n Point.onCircle = function(center, angle, radius) {\n var 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 var Box = Class.extend({\n init: function(x1, y1, x2, y2) {\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: function(box) {\n return this.x1 === box.x1 && this.x2 === box.x2 &&\n this.y1 === box.y1 && this.y2 === box.y2;\n },\n\n width: function() {\n return this.x2 - this.x1;\n },\n\n height: function() {\n return this.y2 - this.y1;\n },\n\n translate: function(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: function(x, y) {\n var height = this.height();\n var 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: function(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: function(point) {\n var arrayPoint = isArray(point);\n var x = arrayPoint ? point[0] : point.x;\n var y = arrayPoint ? point[1] : point.y;\n this.wrap(new Box(x, y, x, y));\n\n return this;\n },\n\n snapTo: function(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: function(targetBox, anchor) {\n var height = this.height();\n var width = this.width();\n var axis = anchor === TOP || anchor === BOTTOM ? Y : X;\n var offset = axis === Y ? height : width;\n\n if (anchor === CENTER) {\n var targetCenter = targetBox.center();\n var 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: function(dw, dh) {\n\n this.x2 -= dw;\n this.y2 -= dh;\n\n return this;\n },\n\n expand: function(dw, dh) {\n this.shrink(-dw, -dh);\n return this;\n },\n\n pad: function(padding) {\n var 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: function(padding) {\n var 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: function() {\n return new Box(this.x1, this.y1, this.x2, this.y2);\n },\n\n center: function() {\n return new Point(\n this.x1 + this.width() / 2,\n this.y1 + this.height() / 2\n );\n },\n\n containsPoint: function(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: function() {\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: function() {\n return [ this.x1, this.y1, this.x2, this.y2 ].join(\",\");\n },\n\n overlaps: function(box) {\n return !(box.y2 < this.y1 || this.y2 < box.y1 || box.x2 < this.x1 || this.x2 < box.x1);\n },\n\n rotate: function(rotation) {\n var width = this.width();\n var height = this.height();\n var ref = this.center();\n var cx = ref.x;\n var cy = ref.y;\n\n var r1 = rotatePoint(0, 0, cx, cy, rotation);\n var r2 = rotatePoint(width, 0, cx, cy, rotation);\n var r3 = rotatePoint(width, height, cx, cy, rotation);\n var 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: function() {\n return new Rect([ this.x1, this.y1 ], [ this.width(), this.height() ]);\n },\n\n hasSize: function() {\n return this.width() !== 0 && this.height() !== 0;\n },\n\n align: function(targetBox, axis, alignment) {\n var c1 = axis + 1;\n var c2 = axis + 2;\n var sizeFunc = axis === X ? WIDTH : HEIGHT;\n var 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\n function rotatePoint(x, y, cx, cy, angle) {\n var 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\n var Ring = Class.extend({\n init: function(center, innerRadius, radius, startAngle, angle) {\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: function() {\n return new Ring(this.center, this.innerRadius, this.radius, this.startAngle, this.angle);\n },\n\n middle: function() {\n return this.startAngle + this.angle / 2;\n },\n\n setRadius: function(newRadius, innerRadius) {\n if (innerRadius) {\n this.innerRadius = newRadius;\n } else {\n this.radius = newRadius;\n }\n\n return this;\n },\n\n point: function(angle, innerRadius) {\n var radianAngle = rad(angle);\n var ax = Math.cos(radianAngle);\n var ay = Math.sin(radianAngle);\n var radius = innerRadius ? this.innerRadius : this.radius;\n var x = round(this.center.x - (ax * radius), COORD_PRECISION);\n var y = round(this.center.y - (ay * radius), COORD_PRECISION);\n\n return new Point(x, y);\n },\n\n adjacentBox: function(distance, width, height) {\n var sector = this.clone().expand(distance);\n var midAndle = sector.middle();\n var midPoint = sector.point(midAndle);\n var hw = width / 2;\n var hh = height / 2;\n var sa = Math.sin(rad(midAndle));\n var ca = Math.cos(rad(midAndle));\n var x = midPoint.x - hw;\n var 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: function(p) {\n var center = this.center;\n var innerRadius = this.innerRadius;\n var radius = this.radius;\n var startAngle = this.startAngle;\n var endAngle = this.startAngle + this.angle;\n var dx = p.x - center.x;\n var dy = p.y - center.y;\n var vector = new Point(dx, dy);\n var startPoint = this.point(startAngle);\n var startVector = new Point(startPoint.x - center.x, startPoint.y - center.y);\n var endPoint = this.point(endAngle);\n var endVector = new Point(endPoint.x - center.x, endPoint.y - center.y);\n var 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: function() {\n var this$1$1 = this;\n\n var box = new Box(MAX_VALUE, MAX_VALUE, MIN_VALUE, MIN_VALUE);\n var startAngle = round(this.startAngle % 360);\n var endAngle = round((startAngle + this.angle) % 360);\n var innerRadius = this.innerRadius;\n var allAngles = [ 0, 90, 180, 270, startAngle, endAngle ].sort(numericComparer);\n var startAngleIndex = allAngles.indexOf(startAngle);\n var endAngleIndex = allAngles.indexOf(endAngle);\n var 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 (var i = 0; i < angles.length; i++) {\n var point = this$1$1.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: function(value) {\n this.radius += value;\n return this;\n }\n });\n\n function numericComparer(a, b) {\n return a - b;\n }\n\n var Sector = Ring.extend({\n init: function(center, radius, startAngle, angle) {\n Ring.fn.init.call(this, center, 0, radius, startAngle, angle);\n },\n\n expand: function(value) {\n return Ring.fn.expand.call(this, value);\n },\n\n clone: function() {\n return new Sector(this.center, this.radius, this.startAngle, this.angle);\n },\n\n setRadius: function(newRadius) {\n this.radius = newRadius;\n\n return this;\n }\n });\n\n var DIRECTION_ANGLE = 0.001; //any value that will make the endAngle bigger than the start angle will work here.\n\n var ShapeBuilder = Class.extend({\n createRing: function(sector, options) {\n var startAngle = sector.startAngle + 180;\n var 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 var center = new geometry.Point(sector.center.x, sector.center.y);\n var radius = Math.max(sector.radius, 0);\n var innerRadius = Math.max(sector.innerRadius, 0);\n var arc = new geometry.Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radius,\n radiusY: radius\n });\n var path = Path.fromArc(arc, options).close();\n\n if (innerRadius) {\n arc.radiusX = arc.radiusY = innerRadius;\n var 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\n ShapeBuilder.current = new ShapeBuilder();\n\n var ChartElement = Class.extend({\n init: function(options) {\n\n this.children = [];\n\n this.options = deepExtend({}, this.options, this.initUserOptions(options));\n },\n\n initUserOptions: function(options) {\n return options;\n },\n\n reflow: function(targetBox) {\n var children = this.children;\n var box;\n\n for (var i = 0; i < children.length; i++) {\n var 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: function() {\n var children = this.children;\n\n if (this.animation) {\n this.animation.destroy();\n }\n\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n },\n\n getRoot: function() {\n var parent = this.parent;\n\n return parent ? parent.getRoot() : null;\n },\n\n getSender: function() {\n var service = this.getService();\n if (service) {\n return service.sender;\n }\n },\n\n getService: function() {\n var element = this;\n while (element) {\n if (element.chartService) {\n return element.chartService;\n }\n element = element.parent;\n }\n },\n\n translateChildren: function(dx, dy) {\n var children = this.children;\n var childrenCount = children.length;\n\n for (var i = 0; i < childrenCount; i++) {\n children[i].box.translate(dx, dy);\n }\n },\n\n append: function() {\n var arguments$1 = arguments;\n var this$1$1 = this;\n\n for (var i = 0; i < arguments.length; i++) {\n var item = arguments$1[i];\n this$1$1.children.push(item);\n item.parent = this$1$1;\n }\n },\n\n renderVisual: function() {\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: function() {\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: function() {\n var children = this.children;\n var length = children.length;\n for (var i = 0; i < length; i++) {\n children[i].renderVisual();\n }\n },\n\n createVisual: function() {\n this.visual = new Group({\n zIndex: this.options.zIndex,\n visible: valueOrDefault(this.options.visible, true)\n });\n },\n\n createAnimation: function() {\n if (this.visual && this.options.animation) {\n this.animation = drawing.Animation.create(\n this.visual, this.options.animation\n );\n }\n },\n\n appendVisual: function(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: function() {\n if (this.parent) {\n return this.parent.clipRoot();\n }\n\n return this;\n },\n\n stackRoot: function() {\n if (this.parent) {\n return this.parent.stackRoot();\n }\n\n return this;\n },\n\n stackVisual: function(childVisual) {\n var zIndex = childVisual.options.zIndex || 0;\n var visuals = this.visual.children;\n var length = visuals.length;\n var pos;\n\n for (pos = 0; pos < length; pos++) {\n var sibling = visuals[pos];\n var 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: function(callback) {\n var children = this.children;\n var length = children.length;\n\n for (var i = 0; i < length; i++) {\n var child = children[i];\n\n callback(child);\n if (child.traverse) {\n child.traverse(callback);\n }\n }\n },\n\n closest: function(match) {\n var element = this;\n var 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: function() {},\n\n hasHighlight: function() {\n var options = (this.options || {}).highlight;\n return !(!this.createHighlight || (options && options.visible === false) || this.visible === false);\n },\n\n toggleHighlight: function(show, opacity) {\n var this$1$1 = this;\n\n var options = (this.options || {}).highlight || {};\n var customVisual = options.visual;\n var highlight = this._highlight;\n\n if (!highlight) {\n var 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 $.extend(this.highlightVisualArgs(), {\n createVisual: function () { return this$1$1.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: function(show) {\n var options = ((this.options || {}).accessibility || {}).highlight || {};\n var focusHighlight = this._focusHighlight;\n\n if (!show && !focusHighlight) {\n return;\n }\n\n if (!focusHighlight) {\n var rootBackground = this.getRoot().options.background;\n var highlightColor = autoTextColor(rootBackground);\n var focusHighlightOptions = {\n fill: {\n opacity: options.opacity,\n color: options.color\n },\n stroke: $.extend({}, {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: function(element, options, gradientOptions) {\n var overlay = new Path($.extend({\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: function(options) {\n if (this.parent) {\n return this.parent.createGradient(options);\n }\n },\n\n supportsPointInactiveOpacity: function() {\n return true;\n }\n });\n\n ChartElement.prototype.options = { };\n\n var BoxElement = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n this.options.margin = getSpacing(this.options.margin);\n this.options.padding = getSpacing(this.options.padding);\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var options = this.options;\n var width = options.width;\n var height = options.height;\n var shrinkToFit = options.shrinkToFit;\n var hasSetSize = width && height;\n var margin = options.margin;\n var padding = options.padding;\n var borderWidth = options.border.width;\n var box;\n\n var reflowPaddingBox = function () {\n this$1$1.align(targetBox, X, options.align);\n this$1$1.align(targetBox, Y, options.vAlign);\n this$1$1.paddingBox = box.clone().unpad(margin).unpad(borderWidth);\n };\n\n var 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 ChartElement.fn.reflow.call(this, 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 var children = this.children;\n for (var i = 0; i < children.length; i++) {\n var item = children[i];\n item.reflow(item.box);\n }\n },\n\n align: function(targetBox, axis, alignment) {\n this.box.align(targetBox, axis, alignment);\n },\n\n hasBox: function() {\n var options = this.options;\n return options.border.width || options.background;\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n var options = this.options;\n if (options.visible && this.hasBox()) {\n this.visual.append(Path.fromRect(\n this.paddingBox.toRect(),\n this.visualStyle()\n ));\n }\n },\n\n visualStyle: function() {\n var options = this.options;\n var 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\n setDefaultOptions(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\n 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\n var ShapeElement = BoxElement.extend({\n init: function(options, pointData) {\n BoxElement.fn.init.call(this, options);\n\n this.pointData = pointData;\n },\n\n getElement: function() {\n var ref = this;\n var options = ref.options;\n var box = ref.paddingBox;\n var type = options.type;\n var rotation = options.rotation;\n var center = box.center();\n var halfWidth = box.width() / 2;\n var halfHeight = box.height() / 2;\n\n if (!options.visible || !this.hasBox()) {\n return null;\n }\n\n var style = this.visualStyle();\n var element;\n\n if (type === CIRCLE) {\n element = new drawing.Circle(\n new 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 = 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 drawing.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 var rect = box.toRect();\n if (type === ROUNDED_RECT) {\n var borderRadius = valueOrDefault(options.borderRadius, rect.width() / 5);\n rect.setCornerRadius(borderRadius);\n }\n\n element = Path.fromRect(rect, style);\n }\n\n if (rotation) {\n element.transform(geometryTransform()\n .rotate(-rotation, [ center.x, center.y ])\n );\n }\n\n element.options.zIndex = options.zIndex;\n\n return element;\n },\n\n createElement: function() {\n var this$1$1 = this;\n\n var customVisual = this.options.visual;\n var pointData = this.pointData || {};\n var 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: function () { return this$1$1.getElement(); }\n });\n } else {\n visual = this.getElement();\n }\n\n return visual;\n },\n\n visualOptions: function() {\n var 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: function() {\n this.visual = this.createElement();\n\n addAccessibilityAttributesToVisual(this.visual, this.options.accessibilityOptions);\n }\n });\n\n setDefaultOptions(ShapeElement, {\n type: CIRCLE,\n align: CENTER,\n vAlign: CENTER\n });\n\n var LINEAR = \"linear\";\n var RADIAL = \"radial\";\n\n var 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\n 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 var a = Math.min(r.x1, s.x1);\n var b = Math.max(r.x1, s.x1);\n var c = Math.min(r.x2, s.x2);\n var d = Math.max(r.x2, s.x2);\n var e = Math.min(r.y1, s.y1);\n var f = Math.max(r.y1, s.y1);\n var g = Math.min(r.y2, s.y2);\n var h = Math.max(r.y2, s.y2);\n var 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 }\n\n var RootElement = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n var 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: function() {\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var currentBox = new Box(0, 0, options.width, options.height);\n\n this.box = currentBox.unpad(options.margin);\n\n for (var 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: function() {\n this.visual = new Group();\n this.createBackground();\n },\n\n createBackground: function() {\n var options = this.options;\n var border = options.border || {};\n var box = this.box.clone().pad(options.margin).unpad(border.width);\n\n var background = 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: function() {\n return this;\n },\n\n createGradient: function(options) {\n var gradients = this.gradients;\n var hashCode = objectKey(options);\n var gradient = GRADIENTS[options.gradient];\n var drawingGradient;\n\n if (gradients[hashCode]) {\n drawingGradient = gradients[hashCode];\n } else {\n var gradientOptions = $.extend({}, gradient, options);\n if (gradient.type === \"linear\") {\n drawingGradient = new drawing.LinearGradient(gradientOptions);\n } else {\n if (options.innerRadius) {\n gradientOptions.stops = innerRadialStops(gradientOptions);\n }\n drawingGradient = new drawing.RadialGradient(gradientOptions);\n drawingGradient.supportVML = gradient.supportVML !== false;\n }\n gradients[hashCode] = drawingGradient;\n }\n\n return drawingGradient;\n },\n\n cleanGradients: function() {\n var gradients = this.gradients;\n for (var hashCode in gradients) {\n gradients[hashCode]._observers = [];//add clear observers method in drawing ObserversMixin\n }\n },\n\n size: function() {\n var options = this.options;\n return new Box(0, 0, options.width, options.height);\n }\n });\n\n setDefaultOptions(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\n function innerRadialStops(options) {\n var stops = options.stops;\n var usedSpace = ((options.innerRadius / options.radius) * 100);\n var length = stops.length;\n var currentStops = [];\n\n for (var i = 0; i < length; i++) {\n var currentStop = $.extend({}, stops[i]);\n currentStop.offset = (currentStop.offset * (100 - usedSpace) + usedSpace) / 100;\n currentStops.push(currentStop);\n }\n\n return currentStops;\n }\n\n var FloatElement = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n this._initDirection();\n },\n\n _initDirection: function() {\n var 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: function(targetBox) {\n this.box = targetBox.clone();\n this.reflowChildren();\n },\n\n reflowChildren: function() {\n var this$1$1 = this;\n\n var ref = this;\n var box = ref.box;\n var elementAxis = ref.elementAxis;\n var groupAxis = ref.groupAxis;\n var elementSizeField = ref.elementSizeField;\n var groupSizeField = ref.groupSizeField;\n var ref$1 = this.groupOptions();\n var groups = ref$1.groups;\n var groupsSize = ref$1.groupsSize;\n var maxGroupElementsSize = ref$1.maxGroupElementsSize;\n var groupsCount = groups.length;\n var groupsStart = box[groupAxis + 1] + this.alignStart(groupsSize, box[groupSizeField]());\n\n if (groupsCount) {\n var groupStart = groupsStart;\n\n for (var groupIdx = 0; groupIdx < groupsCount; groupIdx++) {\n var group = groups[groupIdx];\n var groupElements = group.groupElements;\n var elementStart = box[elementAxis + 1];\n var groupElementsCount = groupElements.length;\n\n for (var idx = 0; idx < groupElementsCount; idx++) {\n var element = groupElements[idx];\n var elementSize$$1 = this$1$1.elementSize(element);\n var groupElementStart = groupStart + this$1$1.alignStart(elementSize$$1[groupSizeField], group.groupSize);\n\n var elementBox = new Box();\n elementBox[groupAxis + 1] = groupElementStart;\n elementBox[groupAxis + 2] = groupElementStart + elementSize$$1[groupSizeField];\n elementBox[elementAxis + 1] = elementStart;\n elementBox[elementAxis + 2] = elementStart + elementSize$$1[elementSizeField];\n\n element.reflow(elementBox);\n\n elementStart += elementSize$$1[elementSizeField] + this$1$1.elementSpacing;\n }\n groupStart += group.groupSize + this$1$1.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: function(size, maxSize) {\n var start = 0;\n var 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: function() {\n var this$1$1 = this;\n\n var ref = this;\n var box = ref.box;\n var children = ref.children;\n var elementSizeField = ref.elementSizeField;\n var groupSizeField = ref.groupSizeField;\n var elementSpacing = ref.elementSpacing;\n var groupSpacing = ref.groupSpacing;\n var maxSize = round(box[elementSizeField]());\n var childrenCount = children.length;\n var groups = [];\n\n var groupSize = 0;\n var groupElementsSize = 0;\n var groupsSize = 0;\n var maxGroupElementsSize = 0;\n var groupElements = [];\n\n for (var idx = 0; idx < childrenCount; idx++) {\n var element = children[idx];\n if (!element.box) {\n element.reflow(box);\n }\n\n var elementSize$$1 = this$1$1.elementSize(element);\n if (this$1$1.options.wrap && round(groupElementsSize + elementSpacing + elementSize$$1[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$$1[groupSizeField]);\n if (groupElementsSize > 0) {\n groupElementsSize += elementSpacing;\n }\n groupElementsSize += elementSize$$1[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: function(element) {\n return {\n width: element.box.width(),\n height: element.box.height()\n };\n },\n\n createVisual: function() {}\n });\n\n setDefaultOptions(FloatElement, {\n vertical: true,\n wrap: true,\n vSpacing: 0,\n spacing: 0\n });\n\n var DrawingText = drawing.Text;\n\n var Text = ChartElement.extend({\n init: function(content, options) {\n ChartElement.fn.init.call(this, options);\n\n this.content = content;\n\n // Calculate size\n this.reflow(new Box());\n },\n\n reflow: function(targetBox) {\n var options = this.options;\n var size = options.size = 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: function() {\n var ref = this.options;\n var font = ref.font;\n var color = ref.color;\n var opacity = ref.opacity;\n var cursor = ref.cursor;\n var stroke = ref.stroke;\n var paintOrder = ref.paintOrder;\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 stroke: stroke,\n paintOrder: paintOrder\n });\n }\n });\n\n setDefaultOptions(Text, {\n font: DEFAULT_FONT,\n color: BLACK\n });\n\n function rectToBox(rect) {\n var origin = rect.origin;\n var bottomRight = rect.bottomRight();\n\n return new Box(origin.x, origin.y, bottomRight.x, bottomRight.y);\n }\n\n var ROWS_SPLIT_REGEX = /\\n/m;\n\n var TextBox = BoxElement.extend({\n init: function(content, options, data) {\n BoxElement.fn.init.call(this, 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: function() {\n var options = this.options;\n var rows = String(this.content).split(ROWS_SPLIT_REGEX);\n var floatElement = new FloatElement({ vertical: true, align: options.align, wrap: false });\n var textOptions = deepExtend({ }, options, { opacity: 1, animation: null });\n\n this.container = floatElement;\n this.append(floatElement);\n\n for (var rowIdx = 0; rowIdx < rows.length; rowIdx++) {\n var text = new Text(rows[rowIdx].trim(), textOptions);\n floatElement.append(text);\n }\n },\n\n reflow: function(targetBox) {\n var options = this.options;\n var visualFn = options.visual;\n this.container.options.align = options.align;\n\n if (visualFn && !this._boxReflow) {\n var visualBox = targetBox;\n if (!visualBox.hasSize()) {\n this._boxReflow = true;\n this.reflow(visualBox);\n this._boxReflow = false;\n visualBox = this.box;\n }\n var visual = this.visual = visualFn(this.visualContext(visualBox));\n\n if (visual) {\n visualBox = rectToBox(visual.clippedBBox() || new Rect());\n\n visual.options.zIndex = options.zIndex;\n }\n\n this.box = this.contentBox = this.paddingBox = visualBox;\n } else {\n BoxElement.fn.reflow.call(this, targetBox);\n\n if (options.rotation) {\n var margin = getSpacing(options.margin);\n var 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: function() {\n var options = this.options;\n\n this.visual = new Group({\n transform: this.rotationTransform(),\n zIndex: options.zIndex,\n noclip: options.noclip\n });\n\n if (this.hasBox()) {\n var box = Path.fromRect(this.paddingBox.toRect(), this.visualStyle());\n this.visual.append(box);\n }\n },\n\n renderVisual: function() {\n if (!this.options.visible) {\n return;\n }\n\n if (this.options.visual) {\n var 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 BoxElement.fn.renderVisual.call(this);\n }\n },\n\n visualContext: function(targetBox) {\n var this$1$1 = this;\n\n var context = {\n text: this.content,\n rect: targetBox.toRect(),\n sender: this.getSender(),\n options: this.options,\n createVisual: function () {\n this$1$1._boxReflow = true;\n this$1$1.reflow(targetBox);\n this$1$1._boxReflow = false;\n return this$1$1.getDefaultVisual();\n }\n };\n if (this.data) {\n $.extend(context, this.data);\n }\n\n return context;\n },\n\n getDefaultVisual: function() {\n this.createVisual();\n this.renderChildren();\n var visual = this.visual;\n delete this.visual;\n return visual;\n },\n\n rotate: function() {\n var 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: function() {\n var rotation = this.options.rotation;\n if (!rotation) {\n return null;\n }\n\n var ref = this.normalBox.center();\n var cx = ref.x;\n var cy = ref.y;\n var boxCenter = this.rotatedBox.center();\n\n return geometryTransform()\n .translate(boxCenter.x - cx, boxCenter.y - cy)\n .rotate(rotation, [ cx, cy ]);\n }\n });\n\n var Title = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n this._textBox = new TextBox(this.options.text, $.extend({}, this.options, {\n vAlign: this.options.position\n }));\n\n this.append(this._textBox);\n },\n\n reflow: function(targetBox) {\n ChartElement.fn.reflow.call(this, targetBox);\n this.box.snapTo(targetBox, X);\n }\n });\n\n Title.buildTitle = function(options, defaultOptions) {\n var titleOptions = options;\n\n if (typeof options === \"string\") {\n titleOptions = { text: options };\n }\n\n titleOptions = $.extend({ visible: true }, defaultOptions, titleOptions);\n\n var title;\n if (titleOptions && titleOptions.visible && titleOptions.text) {\n title = new Title(titleOptions);\n }\n\n return title;\n };\n\n Title.orderTitles = function(titles) {\n var items = [].concat(titles);\n var top = items.filter(function (item) { return item && item.options.position !== BOTTOM; });\n var bottom = items.filter(function (item) { return item && item.options.position === BOTTOM; });\n\n collapseVerticalMargins(top);\n collapseVerticalMargins(bottom);\n\n bottom.reverse();\n return top.concat(bottom);\n };\n\n function collapseVerticalMargins(items) {\n for (var i = 1; i < items.length; i++) {\n var box = items[i]._textBox;\n var prevBox = items[i - 1]._textBox;\n prevBox.options.margin = $.extend(getSpacing(prevBox.options.margin), { bottom: 0 });\n box.options.margin = $.extend(getSpacing(box.options.margin), { top: 0 });\n }\n }\n\n setDefaultOptions(Title, {\n color: BLACK,\n position: TOP,\n align: CENTER,\n margin: getSpacing(5),\n padding: getSpacing(5)\n });\n\n var AxisLabel = TextBox.extend({\n init: function(value, text, index, dataItem, options) {\n TextBox.fn.init.call(this, 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: function(targetBox) {\n var context = TextBox.fn.visualContext.call(this, 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: function(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: function() {\n if (this.options.alignRotation !== CENTER) {\n var box = this.normalBox.toRect();\n var transform = this.rotationTransform();\n\n this.box = rectToBox(box.bbox(transform.matrix()));\n } else {\n TextBox.fn.rotate.call(this);\n }\n\n return this.box;\n },\n\n rotationTransform: function() {\n var options = this.options;\n var rotation = options.rotation;\n if (!rotation) {\n return null;\n }\n\n if (options.alignRotation === CENTER) {\n return TextBox.fn.rotationTransform.call(this);\n }\n\n var rotationMatrix = geometryTransform().rotate(rotation).matrix();\n var box = this.normalBox.toRect();\n var rect = this.targetBox.toRect();\n\n var rotationOrigin = options.rotationOrigin || TOP;\n var alignAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? X : Y;\n var distanceAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? Y : X;\n var axisAnchor = rotationOrigin === TOP || rotationOrigin === LEFT ? rect.origin : rect.bottomRight();\n\n var topLeft = box.topLeft().transformCopy(rotationMatrix);\n var topRight = box.topRight().transformCopy(rotationMatrix);\n var bottomRight = box.bottomRight().transformCopy(rotationMatrix);\n var bottomLeft = box.bottomLeft().transformCopy(rotationMatrix);\n var rotatedBox = Rect.fromPoints(topLeft, topRight, bottomRight, bottomLeft);\n\n var translate = {};\n translate[distanceAxis] = rect.origin[distanceAxis] - rotatedBox.origin[distanceAxis];\n\n var distanceLeft = Math.abs(topLeft[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n var distanceRight = Math.abs(topRight[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n\n var 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 var alignCenter = alignStart[alignAxis] + (alignEnd[alignAxis] - alignStart[alignAxis]) / 2;\n translate[alignAxis] = rect.center()[alignAxis] - alignCenter;\n\n return geometryTransform()\n .translate(translate.x, translate.y)\n .rotate(rotation);\n }\n });\n\n setDefaultOptions(AxisLabel, {\n _autoReflow: false\n });\n\n var DEFAULT_ICON_SIZE = 7;\n var DEFAULT_LABEL_COLOR = \"#fff\";\n\n var Note = BoxElement.extend({\n init: function(fields, options, chartService) {\n BoxElement.fn.init.call(this, options);\n\n this.fields = fields;\n this.chartService = chartService;\n\n this.render();\n },\n\n hide: function() {\n this.options.visible = false;\n },\n\n show: function() {\n this.options.visible = true;\n },\n\n render: function() {\n var this$1$1 = this;\n\n var options = this.options;\n\n if (options.visible) {\n var label = options.label;\n var icon = options.icon;\n var box = new Box();\n var childAlias = function () { return this$1$1; };\n var size = icon.size;\n var text = this.fields.text;\n var width, height;\n\n if (defined(label) && label.visible) {\n var 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 var 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: function(targetBox) {\n var ref = this;\n var options = ref.options;\n var label = ref.label;\n var marker = ref.marker;\n var wrapperBox = ref.wrapperBox;\n var center = targetBox.center();\n var length = options.line.length;\n var position = options.position;\n\n // TODO: Review\n if (options.visible) {\n var 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: function() {\n BoxElement.fn.createVisual.call(this);\n this.visual.options.noclip = this.options.noclip;\n\n if (this.options.visible) {\n this.createLine();\n }\n },\n\n renderVisual: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var customVisual = options.visual;\n if (options.visible && customVisual) {\n this.visual = customVisual($.extend(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: function () {\n this$1$1.createVisual();\n this$1$1.renderChildren();\n var defaultVisual = this$1$1.visual;\n delete this$1$1.visual;\n return defaultVisual;\n }\n }));\n this.addVisual();\n } else {\n BoxElement.fn.renderVisual.call(this);\n }\n },\n\n createLine: function() {\n var options = this.options.line;\n\n if (this.linePoints) {\n var path = 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: function(widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_CLICK, args)) {\n e.preventDefault();\n }\n },\n\n over: function(widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_HOVER, args)) {\n e.preventDefault();\n }\n },\n\n out: function(widget, e) {\n var args = this.eventArgs(e);\n\n widget.trigger(NOTE_LEAVE, args);\n },\n\n eventArgs: function(e) {\n var options = this.options;\n\n return $.extend(this.fields, {\n element: eventElement(e),\n text: defined(options.label) ? options.label.text : \"\",\n visual: this.visual\n });\n }\n });\n\n setDefaultOptions(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\n var defaultImplementation = {\n format: function (format, value) { return value; },\n\n toString: function (value) { return value; },\n\n parseDate: function (value) { return new Date(value); },\n\n firstDay: function () { return 0; }\n };\n\n var current$1 = defaultImplementation;\n\n var IntlService = Class.extend({\n\n });\n\n IntlService.register = function(userImplementation) {\n current$1 = userImplementation;\n };\n\n if (Object.defineProperties) {\n Object.defineProperties(IntlService, {\n implementation: {\n get: function() {\n return current$1;\n }\n }\n });\n }\n\n // eslint-disable-next-line no-useless-escape\n var FORMAT_REPLACE_REGEX = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\n var FormatService = Class.extend({\n init: function(intlService) {\n this._intlService = intlService;\n },\n\n auto: function(formatString) {\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n\n var intl = this.intl;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n return intl.format.apply(intl, [ formatString ].concat( values ));\n }\n\n return intl.toString(values[0], formatString);\n },\n\n localeAuto: function(formatString, values, locale) {\n var intl = this.intl;\n var result;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n result = formatString.replace(FORMAT_REPLACE_REGEX, function(match, index, placeholderFormat) {\n var 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\n if (Object.defineProperties) {\n Object.defineProperties(FormatService.fn, {\n intl: {\n get: function() {\n return this._intlService || IntlService.implementation;\n },\n set: function(value) {\n this._intlService = value;\n }\n }\n });\n }\n\n var ChartService = Class.extend({\n init: function(chart, context) {\n if (context === void 0) { context = {}; }\n\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 notify: function(name, args) {\n if (this.chart) {\n this.chart.trigger(name, args);\n }\n },\n\n isPannable: function(axis) {\n var pannable = ((this.chart || {}).options || {}).pannable;\n return pannable && pannable.lock !== axis;\n }\n });\n\n if (Object.defineProperties) {\n Object.defineProperties(ChartService.fn, {\n intl: {\n get: function() {\n return this._intlService || IntlService.implementation;\n },\n set: function(value) {\n this._intlService = value;\n this.format.intl = value;\n }\n }\n });\n }\n\n var current$2;\n\n var DomEventsBuilder = Class.extend({\n\n });\n\n DomEventsBuilder.register = function(userImplementation) {\n current$2 = userImplementation;\n };\n\n DomEventsBuilder.create = function(element, events) {\n if (current$2) {\n return current$2.create(element, events);\n }\n };\n\n var services = {\n \tChartService: ChartService,\n \tDomEventsBuilder: DomEventsBuilder,\n \tFormatService: FormatService,\n \tIntlService: IntlService,\n \tTemplateService: TemplateService\n };\n\n function createAxisTick(options, tickOptions) {\n var tickX = options.tickX;\n var tickY = options.tickY;\n var position = options.position;\n\n var tick = new 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\n function createAxisGridLine(options, gridLine) {\n var lineStart = options.lineStart;\n var lineEnd = options.lineEnd;\n var position = options.position;\n\n var line = new 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 }\n\n var Axis = ChartElement.extend({\n init: function(options, chartService) {\n if (chartService === void 0) { chartService = new ChartService(); }\n\n ChartElement.fn.init.call(this, 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: function() {\n },\n\n labelsRange: function() {\n return {\n min: this.options.labels.skip,\n max: this.labelsCount()\n };\n },\n\n normalizeLabelRotation: function(labelOptions) {\n var rotation = labelOptions.rotation;\n\n if (isObject(rotation)) {\n labelOptions.alignRotation = rotation.align;\n labelOptions.rotation = rotation.angle;\n }\n },\n\n createLabels: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var align = options.vertical ? RIGHT : CENTER;\n var labelOptions = deepExtend({ }, options.labels, {\n align: align,\n zIndex: options.zIndex\n });\n var 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 var range = this.labelsRange();\n for (var idx = range.min; idx < range.max; idx += step) {\n var labelContext = { index: idx, count: range.max };\n var label = this$1$1.createAxisLabel(idx, labelOptions, labelContext);\n if (label) {\n this$1$1.append(label);\n this$1$1.labels.push(label);\n }\n }\n }\n },\n\n clearLabels: function() {\n this.children = grep(this.children, function (child) { return !(child instanceof AxisLabel); });\n this.labels = [];\n },\n\n clearTitle: function() {\n var this$1$1 = this;\n\n if (this.title) {\n this.children = grep(this.children, function (child) { return child !== this$1$1.title; });\n this.title = undefined;\n }\n },\n\n clear: function() {\n this.clearLabels();\n this.clearTitle();\n },\n\n lineBox: function() {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var axisX = mirror ? box.x1 : box.x2;\n var axisY = mirror ? box.y2 : box.y1;\n var 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: function() {\n var options = this.options;\n var 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 var title = new TextBox(titleOptions.text, titleOptions);\n this.append(title);\n this.title = title;\n }\n },\n\n createNotes: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var notes = options.notes;\n var items = notes.data || [];\n\n this.notes = [];\n\n for (var i = 0; i < items.length; i++) {\n var item = deepExtend({}, notes, items[i]);\n item.value = this$1$1.parseNoteValue(item.value);\n\n var note = new Note({\n value: item.value,\n text: item.label.text,\n dataItem: item\n }, item, this$1$1.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$1$1.append(note);\n this$1$1.notes.push(note);\n }\n }\n },\n\n parseNoteValue: function(value) {\n return value;\n },\n\n renderVisual: function() {\n ChartElement.fn.renderVisual.call(this);\n\n this.createPlotBands();\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n this.createBackground();\n this.createLine();\n },\n\n gridLinesVisual: function() {\n var gridLines = this._gridLines;\n if (!gridLines) {\n gridLines = this._gridLines = new Group({\n zIndex: -2\n });\n this.appendVisual(this._gridLines);\n }\n\n return gridLines;\n },\n\n createTicks: function(lineGroup) {\n var options = this.options;\n var lineBox = this.lineBox();\n var mirror = options.labels.mirror;\n var majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n var tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: options.vertical\n };\n\n function render(tickPositions, tickOptions, skipUnit) {\n var count = tickPositions.length;\n var step = Math.max(1, tickOptions.step);\n\n if (tickOptions.visible) {\n for (var 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: function() {\n var options = this.options;\n var line = options.line;\n var lineBox = this.lineBox();\n\n if (line.width > 0 && line.visible) {\n var path = new 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 var group = this._lineGroup = new Group();\n group.append(path);\n\n this.visual.append(group);\n this.createTicks(group);\n }\n },\n\n getActualTickSize: function() {\n var options = this.options;\n var 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: function() {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var background = options.background;\n\n if (background) {\n this._backgroundPath = 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: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var plotBands = options.plotBands || [];\n var vertical = options.vertical;\n var plotArea = this.plotArea;\n\n if (plotBands.length === 0) {\n return;\n }\n\n var group = this._plotbandGroup = new Group({\n zIndex: -1\n });\n\n var altAxis = grep(this.pane.axes, function (axis) { return axis.options.vertical !== this$1$1.options.vertical; })[0];\n\n for (var idx = 0; idx < plotBands.length; idx++) {\n var item = plotBands[idx];\n var slotX = (void 0), slotY = (void 0);\n var labelOptions = item.label;\n var label = (void 0);\n\n if (vertical) {\n slotX = (altAxis || plotArea.axisX).lineBox();\n slotY = this$1$1.getSlot(item.from, item.to, true);\n } else {\n slotX = this$1$1.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$1$1.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 var bandRect = new Rect(\n [ slotX.x1, slotY.y1 ],\n [ slotX.width(), slotY.height() ]\n );\n\n var path = 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: function(label, item, box) {\n\n if (label.visible === false) {\n return null;\n }\n\n var text = label.text;\n var textbox;\n\n if (defined(label) && label.visible) {\n var 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: function(altAxis) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var minorUnit = options.minorUnit;\n var vertical = options.vertical;\n var axisLineVisible = altAxis.options.line.visible;\n var majorUnit = majorGridLines.visible ? options.majorUnit : 0;\n var lineBox = altAxis.lineBox();\n var linePos = lineBox[vertical ? \"y1\" : \"x1\"];\n var lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n var majorTicks = [];\n\n var container = this.gridLinesVisual();\n\n function render(tickPositions, gridLine, skipUnit) {\n var count = tickPositions.length;\n var step = Math.max(1, gridLine.step);\n\n if (gridLine.visible) {\n for (var i = gridLine.skip; i < count; i += step) {\n var 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: function(box) {\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var title = ref.title;\n var vertical = options.vertical;\n var count = labels.length;\n var sizeFn = vertical ? WIDTH : HEIGHT;\n var titleSize = title ? title.box[sizeFn]() : 0;\n var space = this.getActualTickSize() + options.margin + titleSize;\n var rootBox = (this.getRoot() || {}).box || box;\n var boxSize = rootBox[sizeFn]();\n var maxLabelSize = 0;\n\n for (var i = 0; i < count; i++) {\n var 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: function() {\n return this.getMajorTickPositions();\n },\n\n labelTickIndex: function(label) {\n return label.index;\n },\n\n arrangeLabels: function() {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var labelsBetweenTicks = this.labelsBetweenTicks();\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var tickPositions = this.getLabelsTickPositions();\n\n for (var idx = 0; idx < labels.length; idx++) {\n var label = labels[idx];\n var tickIx = this$1$1.labelTickIndex(label);\n var labelSize = vertical ? label.box.height() : label.box.width();\n var firstTickPosition = tickPositions[tickIx];\n var nextTickPosition = tickPositions[tickIx + 1];\n var positionStart = (void 0), positionEnd = (void 0);\n\n if (vertical) {\n if (labelsBetweenTicks) {\n var 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$1$1.positionLabel(label, mirror, positionStart, positionEnd);\n }\n },\n\n positionLabel: function(label, mirror, positionStart, positionEnd) {\n if (positionEnd === void 0) { positionEnd = positionStart; }\n\n var options = this.options;\n var vertical = options.vertical;\n var lineBox = this.lineBox();\n var labelOffset = this.getActualTickSize() + options.margin;\n var labelBox;\n\n if (vertical) {\n var 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 var 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: function(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: function() {\n var this$1$1 = this;\n\n if (!this.options.autoRotateLabels || this.options.vertical) {\n return false;\n }\n\n var tickPositions = this.getMajorTickPositions();\n var labels = this.labels;\n var limit = Math.min(labels.length, tickPositions.length - 1);\n var angle = 0;\n\n for (var idx = 0; idx < limit; idx++) {\n var width = Math.abs(tickPositions[idx + 1] - tickPositions[idx]);\n var labelBox = labels[idx].box;\n var labelAngle = this$1$1.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 (var idx$1 = 0; idx$1 < labels.length; idx$1++) {\n labels[idx$1].options.rotation = angle;\n labels[idx$1].reflow(new Box());\n }\n\n return true;\n }\n },\n\n arrangeTitle: function() {\n var ref = this;\n var options = ref.options;\n var title = ref.title;\n var mirror = options.labels.mirror;\n var 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: function() {\n var this$1$1 = this;\n\n for (var idx = 0; idx < this.notes.length; idx++) {\n var item = this$1$1.notes[idx];\n var value = item.options.value;\n var slot = (void 0);\n\n if (defined(value)) {\n if (this$1$1.shouldRenderNote(value)) {\n item.show();\n } else {\n item.hide();\n }\n\n slot = this$1$1.noteSlot(value);\n } else {\n item.hide();\n }\n\n item.reflow(slot || this$1$1.lineBox());\n }\n },\n\n noteSlot: function(value) {\n return this.getSlot(value);\n },\n\n alignTo: function(secondAxis) {\n var lineBox = secondAxis.lineBox();\n var vertical = this.options.vertical;\n var 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: function(value, options, context) {\n var this$1$1 = this;\n\n var text;\n var tmpl = getTemplate(options);\n var defaultText = function () {\n if (!options.format) {\n return value;\n }\n\n return this$1$1.chartService.format.localeAuto(\n options.format, [ value ], options.culture\n );\n };\n\n if (tmpl) {\n var templateContext = $.extend({}, context, {\n get text() { return defaultText(); },\n value: 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: function(from , to, limit) {\n var slot = this.getSlot(from, to, limit);\n if (slot) {\n return slot.toRect();\n }\n },\n\n contentBox: function() {\n var box = this.box.clone();\n var labels = this.labels;\n if (labels.length) {\n var axis = this.options.vertical ? Y : X;\n if (this.chartService.isPannable(axis)) {\n var 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 var 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: function() {\n var this$1$1 = this;\n\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var labelsBetweenTicks = this.labelsBetweenTicks();\n var tickPositions = this.getLabelsTickPositions();\n var offsetField = vertical ? Y : X;\n var labels = this.labels;\n var startPosition = reverse ? 1 : 0;\n var endPosition = reverse ? 0 : 1;\n var maxStartOffset = 0;\n var maxEndOffset = 0;\n\n for (var idx = 0; idx < labels.length; idx++) {\n var label = labels[idx];\n var tickIx = this$1$1.labelTickIndex(label);\n var startTick = (void 0), endTick = (void 0);\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: function(from, to, min, max, offset) {\n var 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 var rangeSize = to - from;\n var minValue = from;\n var 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: function() {\n return {\n min: this.seriesMin,\n max: this.seriesMax\n };\n },\n\n lineDir: function() {\n /*\n * Axis line direction:\n * * Vertical: up.\n * * Horizontal: right.\n */\n\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n return (vertical ? -1 : 1) * (reverse ? -1 : 1);\n },\n\n lineInfo: function() {\n var ref = this.options;\n var vertical = ref.vertical;\n var lineBox = this.lineBox();\n var lineSize = vertical ? lineBox.height() : lineBox.width();\n var axis = vertical ? Y : X;\n var axisDir = this.lineDir();\n var startEdge = axisDir === 1 ? 1 : 2;\n var axisOrigin = axis + startEdge.toString();\n var lineStart = lineBox[axisOrigin];\n\n return {\n axis: axis,\n axisOrigin: axisOrigin,\n axisDir: axisDir,\n lineBox: lineBox,\n lineSize: lineSize,\n lineStart: lineStart\n };\n },\n\n pointOffset: function(point) {\n var ref = this.lineInfo();\n var axis = ref.axis;\n var axisDir = ref.axisDir;\n var axisOrigin = ref.axisOrigin;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var relative = axisDir > 0 ? point[axis] - lineBox[axisOrigin] : lineBox[axisOrigin] - point[axis];\n var offset = relative / lineSize;\n\n return offset;\n },\n\n scaleToDelta: function(rawScale, range) {\n // Scale >= 1 would result in axis range of 0.\n // Scale <= -1 would reverse the scale direction.\n var MAX_SCALE = 0.999;\n var scale = limitValue(rawScale, -MAX_SCALE, MAX_SCALE);\n\n var 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: function() {\n return !this.options.justified;\n },\n\n prepareUserOptions: function() {\n }\n });\n\n setDefaultOptions(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\n var MILLISECONDS = \"milliseconds\";\n var SECONDS = \"seconds\";\n var MINUTES = \"minutes\";\n var HOURS = \"hours\";\n var DAYS = \"days\";\n var WEEKS = \"weeks\";\n var MONTHS = \"months\";\n var YEARS = \"years\";\n\n var TIME_PER_MILLISECOND = 1;\n var TIME_PER_SECOND = 1000;\n var TIME_PER_MINUTE = 60 * TIME_PER_SECOND;\n var TIME_PER_HOUR = 60 * TIME_PER_MINUTE;\n var TIME_PER_DAY = 24 * TIME_PER_HOUR;\n var TIME_PER_WEEK = 7 * TIME_PER_DAY;\n var TIME_PER_MONTH = 31 * TIME_PER_DAY;\n var TIME_PER_YEAR = 365 * TIME_PER_DAY;\n var 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 function absoluteDateDiff(a, b) {\n var diff = a.getTime() - b;\n var offsetDiff = a.getTimezoneOffset() - b.getTimezoneOffset();\n\n return diff - (offsetDiff * TIME_PER_MINUTE);\n }\n\n function addTicks(date, ticks) {\n return new Date(date.getTime() + ticks);\n }\n\n function toDate(value) {\n var 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 }\n\n function startOfWeek(date, weekStartDay) {\n if (weekStartDay === void 0) { weekStartDay = 0; }\n\n var daysToSubtract = 0;\n var 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 }\n\n function 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\n function addHours(date, hours) {\n var roundedDate = new Date(date);\n\n roundedDate.setMinutes(0, 0, 0);\n\n var tzDiff = (date.getTimezoneOffset() - roundedDate.getTimezoneOffset()) * TIME_PER_MINUTE;\n\n return addTicks(roundedDate, tzDiff + hours * TIME_PER_HOUR);\n }\n\n function addDuration(dateValue, value, unit, weekStartDay) {\n var result = dateValue;\n\n if (dateValue) {\n var date = toDate(dateValue);\n var 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 }\n\n function floorDate(date, unit, weekStartDay) {\n return addDuration(toDate(date), 0, unit, weekStartDay);\n }\n\n function ceilDate(dateValue, unit, weekStartDay) {\n var 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 }\n\n function dateComparer(a, b) {\n if (a && b) {\n return a.getTime() - b.getTime();\n }\n\n return -1;\n }\n\n function dateDiff(a, b) {\n return a.getTime() - b;\n }\n\n function toTime(value) {\n if (isArray(value)) {\n var result = [];\n for (var 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 }\n\n function dateEquals(a, b) {\n if (a && b) {\n return toTime(a) === toTime(b);\n }\n\n return a === b;\n }\n\n function timeIndex(date, start, baseUnit) {\n return absoluteDateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n }\n\n function dateIndex(value, start, baseUnit, baseUnitStep) {\n var date = toDate(value);\n var startDate = toDate(start);\n var 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 function duration(a, b, unit) {\n var 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 }\n\n function lteDateIndex(date, sortedDates) {\n var low = 0;\n var high = sortedDates.length - 1;\n var index;\n\n while (low <= high) {\n index = Math.floor((low + high) / 2);\n var currentDate = sortedDates[index];\n\n if (currentDate < date) {\n low = index + 1;\n continue;\n }\n\n if (currentDate > date) {\n high = index - 1;\n continue;\n }\n\n while (dateEquals(sortedDates[index - 1], date)) {\n index--;\n }\n\n return index;\n }\n\n if (sortedDates[index] <= date) {\n return index;\n }\n\n return index - 1;\n }\n\n function parseDate(intlService, date) {\n var result;\n if (isString(date)) {\n result = intlService.parseDate(date) || toDate(date);\n } else {\n result = toDate(date);\n }\n return result;\n }\n\n function parseDates(intlService, dates) {\n if (isArray(dates)) {\n var result = [];\n for (var 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 }\n\n 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\n var MIN_CATEGORY_POINTS_RANGE = 0.01;\n var MIN_CATEGORY_RANGE = 0.1;\n\n function indexOf(value, arr) {\n if (value instanceof Date) {\n var length = arr.length;\n for (var 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\n var CategoryAxis = Axis.extend({\n initFields: function() {\n this._ticks = {};\n },\n\n categoriesHash: function() {\n return \"\";\n },\n\n clone: function() {\n var copy = new CategoryAxis($.extend({}, this.options, {\n categories: this.options.srcCategories\n }), this.chartService);\n copy.createLabels();\n\n return copy;\n },\n\n initUserOptions: function(options) {\n var categories = options.categories || [];\n var definedMin = defined(options.min);\n var definedMax = defined(options.max);\n options.srcCategories = options.categories = categories;\n\n if ((definedMin || definedMax) && categories.length) {\n var min = definedMin ? Math.floor(options.min) : 0;\n var 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: function() {\n var options = this.options;\n var length = options.categories.length || 1;\n var min = isNumber(options.min) ? options.min % 1 : 0;\n var 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: function() {\n var options = this.options;\n var min = isNumber(options.min) ? options.min : 0;\n var max = isNumber(options.max) ? options.max : this.totalRange().max;\n\n return {\n min: min,\n max: max\n };\n },\n\n roundedRange: function() {\n return this.range();\n },\n\n totalRange: function() {\n var options = this.options;\n return { min: 0, max: Math.max(this._seriesMax || 0, options.srcCategories.length) - (options.justified ? 1 : 0) };\n },\n\n scaleOptions: function() {\n var ref = this.rangeIndices();\n var min = ref.min;\n var max = ref.max;\n var lineBox = this.lineBox();\n var size = this.options.vertical ? lineBox.height() : lineBox.width();\n var 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: function() {\n Axis.fn.arrangeLabels.call(this);\n this.hideOutOfRangeLabels();\n },\n\n hideOutOfRangeLabels: function() {\n var ref = this;\n var box = ref.box;\n var labels = ref.labels;\n\n if (labels.length > 0) {\n var valueAxis = this.options.vertical ? Y : X;\n var start = box[valueAxis + 1];\n var end = box[valueAxis + 2];\n var firstLabel = labels[0];\n var 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: function() {\n return this.getTicks().majorTicks;\n },\n\n getMinorTickPositions: function() {\n return this.getTicks().minorTicks;\n },\n\n getLabelsTickPositions: function() {\n return this.getTicks().labelTicks;\n },\n\n tickIndices: function(stepSize) {\n var ref = this.rangeIndices();\n var min = ref.min;\n var max = ref.max;\n var limit = Math.ceil(max);\n var current = Math.floor(min);\n var indices = [];\n\n while (current <= limit) {\n indices.push(current);\n current += stepSize;\n }\n\n return indices;\n },\n\n getTickPositions: function(stepSize) {\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var min = ref$1.min;\n var pos = box[(vertical ? Y : X) + (reverse ? 2 : 1)];\n var indices = this.tickIndices(stepSize);\n var positions = [];\n\n for (var 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: function() {\n var options = this.options;\n var cache = this._ticks;\n var range = this.rangeIndices();\n var lineBox = this.lineBox();\n var hash = lineBox.getHash() + range.min + \",\" + range.max + options.reverse + options.justified;\n\n if (cache._hash !== hash) {\n var 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: function(positions, lineBox) {\n if (!positions.length) {\n return positions;\n }\n\n var axis = this.options.vertical ? Y : X;\n var inRange = function (position) { return lineBox[axis + 1] <= position && position <= lineBox[axis + 2]; };\n\n var end = positions.length - 1;\n var startIndex = 0;\n while (!inRange(positions[startIndex]) && startIndex <= end) {\n startIndex++;\n }\n\n var 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: function() {\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var lineBox = this.lineBox();\n var lineSize = vertical ? lineBox.height() : lineBox.width();\n var axis = vertical ? Y : X;\n var axisDir = reverse ? -1 : 1;\n var startEdge = axisDir === 1 ? 1 : 2;\n var axisOrigin = axis + startEdge.toString();\n var lineStart = lineBox[axisOrigin];\n\n return {\n axis: axis,\n axisOrigin: axisOrigin,\n axisDir: axisDir,\n lineBox: lineBox,\n lineSize: lineSize,\n lineStart: lineStart\n };\n },\n\n lineDir: function() {\n /*\n * Category axis line direction:\n * * Vertical: down.\n * * Horizontal: right.\n */\n\n var ref = this.options;\n var reverse = ref.reverse;\n return reverse ? -1 : 1;\n },\n\n getSlot: function(from, to, limit) {\n var options = this.options;\n var reverse = options.reverse;\n var justified = options.justified;\n var ref = this.scaleOptions();\n var scale = ref.scale;\n var box = ref.box;\n var min = ref.min;\n var ref$1 = this.lineInfo();\n var valueAxis = ref$1.axis;\n var lineStart = ref$1.lineStart;\n\n var slotBox = box.clone();\n var singleSlot = !defined(to);\n\n var start = valueOrDefault(from, 0);\n var 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 var p1 = lineStart + (start - min) * scale;\n var 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: function(slot) {\n var vertical = this.options.vertical;\n var valueAxis = vertical ? Y : X;\n var lineBox = this.lineBox();\n var 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: function(from, to, limit) {\n var min = Math.floor(this.options.min || 0);\n var start = from;\n var 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 Axis.fn.slot.call(this, start, end, limit);\n },\n\n pointCategoryIndex: function(point) {\n var ref = this.options;\n var reverse = ref.reverse;\n var justified = ref.justified;\n var vertical = ref.vertical;\n var valueAxis = vertical ? Y : X;\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var min = ref$1.min;\n var max = ref$1.max;\n var startValue = reverse ? max : min;\n var lineStart = box[valueAxis + 1];\n var lineEnd = box[valueAxis + 2];\n var pos = point[valueAxis];\n\n if (pos < lineStart || pos > lineEnd) {\n return null;\n }\n\n var value = startValue + (pos - lineStart) / scale;\n var 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: function(point) {\n var index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.options.categories[index];\n },\n\n categoryIndex: function(value) {\n return this.totalIndex(value) - Math.floor(this.options.min || 0);\n },\n\n categoryAt: function(index, total) {\n var options = this.options;\n\n return (total ? options.srcCategories : options.categories)[index];\n },\n\n categoriesCount: function() {\n return (this.options.categories || []).length;\n },\n\n translateRange: function(delta) {\n var options = this.options;\n var lineBox = this.lineBox();\n var size = options.vertical ? lineBox.height() : lineBox.width();\n var range = options.categories.length;\n var scale = size / range;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n return {\n min: offset,\n max: range + offset\n };\n },\n\n scaleRange: function(scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var rangeIndices = this.limitedRangeIndices();\n var range = rangeIndices.max - rangeIndices.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = rangeIndices.min + minDelta;\n var 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: function(scale, cursor) {\n var ref = this.totalRange();\n var totalMin = ref.min;\n var totalMax = ref.max;\n var 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: function() {\n var labelsRange = this.labelsRange();\n\n return labelsRange.max - labelsRange.min;\n },\n\n labelsRange: function() {\n var options = this.options;\n var justified = options.justified;\n var labelOptions = options.labels;\n var ref = this.limitedRangeIndices(true);\n var min = ref.min;\n var max = ref.max;\n var 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 var 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: function(index, labelOptions, labelContext) {\n var options = this.options;\n var dataItem = options.dataItems ? options.dataItems[index] : null;\n var category = valueOrDefault(options.categories[index], \"\");\n\n labelContext.dataItem = dataItem;\n var text = this.axisLabelText(category, labelOptions, labelContext);\n\n return new AxisLabel(category, text, index, dataItem, labelOptions);\n },\n\n shouldRenderNote: function(value) {\n var range = this.limitedRangeIndices();\n\n return Math.floor(range.min) <= value && value <= Math.ceil(range.max);\n },\n\n noteSlot: function(value) {\n var options = this.options;\n var index = value - Math.floor(options.min || 0);\n return this.getSlot(index);\n },\n\n arrangeNotes: function() {\n Axis.fn.arrangeNotes.call(this);\n this.hideOutOfRangeNotes();\n },\n\n hideOutOfRangeNotes: function() {\n var ref = this;\n var notes = ref.notes;\n var box = ref.box;\n if (notes && notes.length) {\n var valueAxis = this.options.vertical ? Y : X;\n var start = box[valueAxis + 1];\n var end = box[valueAxis + 2];\n\n for (var idx = 0; idx < notes.length; idx++) {\n var 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: function(delta) {\n var range = this.limitedRangeIndices(true);\n var ref = this.scaleOptions();\n var scale = ref.scale;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n var totalRange = this.totalRange();\n var min = range.min + offset;\n var max = range.max + offset;\n\n return this.limitRange(min, max, 0, totalRange.max, offset);\n },\n\n pointsRange: function(start, end) {\n var ref = this.options;\n var reverse = ref.reverse;\n var vertical = ref.vertical;\n var valueAxis = vertical ? Y : X;\n var range = this.limitedRangeIndices(true);\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var lineStart = box[valueAxis + (reverse ? 2 : 1)];\n\n var diffStart = start[valueAxis] - lineStart;\n var diffEnd = end[valueAxis] - lineStart;\n\n var min = range.min + diffStart / scale;\n var max = range.min + diffEnd / scale;\n var rangeMin = Math.min(min, max);\n var 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: function() {\n return this.range();\n },\n\n totalIndex: function(value) {\n var options = this.options;\n var index = this._categoriesMap ?\n this._categoriesMap.get(value) : indexOf(value, options.srcCategories);\n\n return index;\n },\n\n currentRangeIndices: function() {\n var options = this.options;\n var min = 0;\n\n if (isNumber(options.min)) {\n min = Math.floor(options.min);\n }\n\n var 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: function(totalLimit) {\n var options = this.options;\n var min = isNumber(options.min) ? options.min : 0;\n var 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 var 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: function() {\n return {\n min: 0,\n max: this.totalRange().max || 1\n };\n },\n\n indexCategories: function() {\n if (!this._categoriesMap) {\n var map$$1 = this._categoriesMap = new HashMap();\n var srcCategories = this.options.srcCategories;\n for (var idx = 0; idx < srcCategories.length; idx++) {\n map$$1.set(srcCategories[idx], idx);\n }\n }\n },\n\n totalCount: function() {\n return Math.max(this.options.srcCategories.length, this._seriesMax || 0);\n }\n });\n\n setDefaultOptions(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\n var COORDINATE_LIMIT = 300000;\n\n var 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\n var ZERO_THRESHOLD = 0.2;\n\n var AUTO = \"auto\";\n var BASE_UNITS = [\n MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS\n ];\n var FIT = \"fit\";\n\n function categoryRange(categories, clearCache) {\n if (clearCache) {\n categories._range = undefined;\n }\n\n var 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\n var EmptyDateRange = Class.extend({\n init: function(options) {\n this.options = options;\n },\n\n displayIndices: function() {\n return {\n min: 0,\n max: 1\n };\n },\n\n displayRange: function() {\n return {};\n },\n\n total: function() {\n return {};\n },\n\n valueRange: function() {\n return {};\n },\n\n valueIndex: function() {\n return -1;\n },\n\n values: function() {\n return [];\n },\n\n totalIndex: function() {\n return -1;\n },\n\n valuesCount: function() {\n return 0;\n },\n\n totalCount: function() {\n return 0;\n },\n\n dateAt: function() {\n return null;\n }\n });\n\n var DateRange = Class.extend({\n init: function(start, end, options) {\n this.options = options;\n options.baseUnitStep = options.baseUnitStep || 1;\n\n var roundToBaseUnit = options.roundToBaseUnit;\n var justified = options.justified;\n\n this.start = addDuration(start, 0, options.baseUnit, options.weekStartDay);\n var lowerEnd = this.roundToTotalStep(end);\n var expandEnd = !justified && dateEquals(end, lowerEnd) && !options.justifyEnd;\n\n this.end = this.roundToTotalStep(end, !justified, expandEnd ? 1 : 0);\n\n var min = options.min || start;\n this.valueStart = this.roundToTotalStep(min);\n this.displayStart = roundToBaseUnit ? this.valueStart : min;\n\n var max = options.max;\n if (!max) {\n this.valueEnd = lowerEnd;\n this.displayEnd = roundToBaseUnit || expandEnd ? this.end : end;\n } else {\n var 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: function() {\n return {\n min: this.displayStart,\n max: this.displayEnd\n };\n },\n\n displayIndices: function() {\n if (!this._indices) {\n var options = this.options;\n\n var baseUnit = options.baseUnit;\n var baseUnitStep = options.baseUnitStep;\n\n var minIdx = dateIndex(this.displayStart, this.valueStart, baseUnit, baseUnitStep);\n var 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: function() {\n return {\n min: this.start,\n max: this.end\n };\n },\n\n totalCount: function() {\n var last$$1 = this.totalIndex(this.end);\n\n return last$$1 + (this.options.justified ? 1 : 0);\n },\n\n valueRange: function() {\n return {\n min: this.valueStart,\n max: this.valueEnd\n };\n },\n\n valueIndex: function(value) {\n var options = this.options;\n return Math.floor(dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep));\n },\n\n totalIndex: function(value) {\n var options = this.options;\n return Math.floor(dateIndex(value, this.start, options.baseUnit, options.baseUnitStep));\n },\n\n dateIndex: function(value) {\n var options = this.options;\n return dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep);\n },\n\n valuesCount: function() {\n var maxIdx = this.valueIndex(this.valueEnd);\n\n return maxIdx + 1;\n },\n\n values: function() {\n var values = this._values;\n if (!values) {\n var options = this.options;\n var range = this.valueRange();\n this._values = values = [];\n\n for (var 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: function(index, total) {\n var options = this.options;\n\n return addDuration(total ? this.start : this.valueStart, options.baseUnitStep * index, options.baseUnit, options.weekStartDay);\n },\n\n roundToTotalStep: function(value, upper, next) {\n var ref = this.options;\n var baseUnit = ref.baseUnit;\n var baseUnitStep = ref.baseUnitStep;\n var weekStartDay = ref.weekStartDay;\n var start = this.start;\n\n var step = dateIndex(value, start, baseUnit, baseUnitStep);\n var 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 function autoBaseUnit(options, startUnit, startStep) {\n var categoryLimits = categoryRange(options.categories);\n var span = (options.max || categoryLimits.max) - (options.min || categoryLimits.min);\n var autoBaseUnitSteps = options.autoBaseUnitSteps;\n var maxDateGroups = options.maxDateGroups;\n var autoUnit = options.baseUnit === FIT;\n var autoUnitIx = startUnit ? BASE_UNITS.indexOf(startUnit) : 0;\n var baseUnit = autoUnit ? BASE_UNITS[autoUnitIx++] : options.baseUnit;\n var units = span / TIME_PER_UNIT[baseUnit];\n var totalUnits = units;\n var 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\n function defaultBaseUnit(options) {\n var categories = options.categories;\n var count = defined(categories) ? categories.length : 0;\n var minDiff = MAX_VALUE;\n var lastCategory, unit;\n\n for (var categoryIx = 0; categoryIx < count; categoryIx++) {\n var category = categories[categoryIx];\n\n if (category && lastCategory) {\n var 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\n function initUnit(options) {\n var baseUnit = (options.baseUnit || \"\").toLowerCase();\n var 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\n var DateCategoryAxis = CategoryAxis.extend({\n clone: function() {\n var copy = new DateCategoryAxis($.extend({}, this.options), this.chartService);\n copy.createLabels();\n\n return copy;\n },\n\n categoriesHash: function() {\n var start = this.dataRange.total().min;\n return this.options.baseUnit + this.options.baseUnitStep + start;\n },\n\n initUserOptions: function(options) {\n return options;\n },\n\n initFields: function() {\n CategoryAxis.fn.initFields.call(this);\n\n var chartService = this.chartService;\n var intlService = chartService.intl;\n var options = this.options;\n\n var 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 var range = categoryRange(categories, true);\n var maxDivisions = options.maxDivisions;\n var safeOptions = initUnit(options);\n\n var 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 var dataRange = this.dataRange.displayRange();\n\n var divisionOptions = $.extend({}, options, {\n justified: true,\n roundToBaseUnit: false,\n baseUnit: 'fit',\n min: dataRange.min,\n max: dataRange.max,\n maxDateGroups: maxDivisions\n });\n\n var 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: function(stepSize) {\n var ref = this;\n var dataRange = ref.dataRange;\n var divisionRange = ref.divisionRange;\n var valuesCount = divisionRange.valuesCount();\n\n if (!this.options.maxDivisions || !valuesCount) {\n return CategoryAxis.fn.tickIndices.call(this, stepSize);\n }\n\n var indices = [];\n var values = divisionRange.values();\n var 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 (var idx = 0; idx < values.length; idx++) {\n indices.push(dataRange.dateIndex(values[idx]) + offset);\n if (stepSize !== 1 && idx >= 1) {\n var last$$1 = indices.length - 1;\n indices.splice(idx, 0, indices[last$$1 - 1] + (indices[last$$1] - indices[last$$1 - 1]) * stepSize);\n }\n }\n\n return indices;\n },\n\n shouldRenderNote: function(value) {\n var range = this.range();\n var categories = this.options.categories || [];\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0 && categories.length;\n },\n\n parseNoteValue: function(value) {\n return parseDate(this.chartService.intl, value);\n },\n\n noteSlot: function(value) {\n return this.getSlot(value);\n },\n\n translateRange: function(delta) {\n var options = this.options;\n var baseUnit = options.baseUnit;\n var weekStartDay = options.weekStartDay;\n var vertical = options.vertical;\n var lineBox = this.lineBox();\n var size = vertical ? lineBox.height() : lineBox.width();\n var range = this.range();\n var scale = size / (range.max - range.min);\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if (range.min && range.max) {\n var from = addTicks(options.min || range.min, offset);\n var 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: function() {\n return {\n min: this.options.labels.skip,\n max: this.divisionRange.valuesCount()\n };\n },\n\n pan: function(delta) {\n if (this.isEmpty()) {\n return null;\n }\n\n var options = this.options;\n var lineBox = this.lineBox();\n var size = options.vertical ? lineBox.height() : lineBox.width();\n var ref = this.dataRange.displayRange();\n var min = ref.min;\n var max = ref.max;\n var totalLimits = this.dataRange.total();\n var scale = size / (max - min);\n var offset = round(delta / scale, DEFAULT_PRECISION) * (options.reverse ? -1 : 1);\n var from = addTicks(min, offset);\n var to = addTicks(max, offset);\n\n var 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: function(start, end) {\n if (this.isEmpty()) {\n return null;\n }\n\n var pointsRange = CategoryAxis.fn.pointsRange.call(this, start, end);\n var datesRange = this.dataRange.displayRange();\n var indicesRange = this.dataRange.displayIndices();\n var scale = dateDiff(datesRange.max, datesRange.min) / (indicesRange.max - indicesRange.min);\n var options = this.options;\n\n var min = addTicks(datesRange.min, pointsRange.min * scale);\n var 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: function(scale, cursor) {\n if (this.isEmpty()) {\n return {};\n }\n\n var options = this.options;\n var fit = options.userSetBaseUnit === FIT;\n var totalLimits = this.dataRange.total();\n var ref = this.dataRange.displayRange();\n var rangeMin = ref.min;\n var rangeMax = ref.max;\n\n var position = Math.abs(this.pointOffset(cursor));\n var range = rangeMax - rangeMin;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = Math.round(position * delta);\n var maxDelta = Math.round((1 - position) * delta);\n\n var ref$1 = this.dataRange.options;\n var baseUnit = ref$1.baseUnit;\n var min = new Date(rangeMin.getTime() + minDelta);\n var max = new Date(rangeMax.getTime() - maxDelta);\n\n if (fit) {\n var autoBaseUnitSteps = options.autoBaseUnitSteps;\n var maxDateGroups = options.maxDateGroups;\n\n var maxDiff = last(autoBaseUnitSteps[baseUnit]) * maxDateGroups * TIME_PER_UNIT[baseUnit];\n var rangeDiff = dateDiff(rangeMax, rangeMin);\n var diff = dateDiff(max, min);\n var baseUnitIndex = BASE_UNITS.indexOf(baseUnit);\n var 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 var 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: function(scale, cursor) {\n var totalLimits = this.dataRange.total();\n var 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: function() {\n return this.dataRange.displayRange();\n },\n\n createLabels: function() {\n CategoryAxis.fn.createLabels.call(this);\n this.createRangeLabels();\n },\n\n clearLabels: function() {\n CategoryAxis.fn.clearLabels.call(this);\n this.rangeLabels = [];\n },\n\n arrangeLabels: function() {\n this.arrangeRangeLabels();\n CategoryAxis.fn.arrangeLabels.call(this);\n },\n\n arrangeRangeLabels: function() {\n var ref = this;\n var options = ref.options;\n var rangeLabels = ref.rangeLabels;\n if (rangeLabels.length === 0) {\n return;\n }\n\n var lineBox = this.lineBox();\n var vertical = options.vertical;\n var mirror = options.rangeLabels.mirror || options.labels.mirror;\n\n var firstLabel = rangeLabels[0];\n if (firstLabel) {\n var position = vertical ? lineBox.y1 - (firstLabel.box.height() / 2) : lineBox.x1;\n this.positionLabel(firstLabel, mirror, position);\n }\n\n var lastLabel = rangeLabels[1];\n if (lastLabel) {\n var position$1 = vertical ? lineBox.y2 - (lastLabel.box.height() / 2) : lineBox.x2;\n this.positionLabel(lastLabel, mirror, position$1);\n }\n },\n\n autoRotateLabels: function() {\n CategoryAxis.fn.autoRotateLabels.call(this);\n this.autoRotateRangeLabels();\n },\n\n hideOutOfRangeLabels: function() {\n CategoryAxis.fn.hideOutOfRangeLabels.call(this);\n this.hideOverlappingLabels();\n },\n\n hideOverlappingLabels: function() {\n var ref = this;\n var rangeLabels = ref.rangeLabels;\n var labels = ref.labels;\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 var firstRangeLabel = rangeLabels[0];\n if (firstRangeLabel && firstRangeLabel.options.visible) {\n for (var i = 0; i < labels.length; i++) {\n var overlaps = clip(firstRangeLabel, labels[i]);\n if (!overlaps) {\n break;\n }\n }\n }\n\n var lastRangeLabel = rangeLabels[1];\n if (lastRangeLabel && lastRangeLabel.options.visible) {\n for (var i$1 = labels.length - 1; i$1 > 0; --i$1) {\n var overlaps$1 = clip(lastRangeLabel, labels[i$1]);\n if (!overlaps$1) {\n break;\n }\n }\n }\n },\n\n contentBox: function() {\n var box = CategoryAxis.fn.contentBox.call(this);\n var rangeLabels = this.rangeLabels;\n\n for (var i = 0; i < rangeLabels.length; i++) {\n var label = rangeLabels[i];\n if (label.options.visible) {\n box.wrap(label.box);\n }\n }\n\n return box;\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n if (labelContext === void 0) { labelContext = {}; }\n\n var options = this.options;\n var dataItem = options.dataItems && !options.maxDivisions ? options.dataItems[index] : null;\n var date = this.divisionRange.dateAt(index);\n var unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n\n labelOptions.format = labelOptions.format || unitFormat;\n labelContext.dataItem = dataItem;\n\n var text = this.axisLabelText(date, labelOptions, labelContext);\n if (text) {\n return new AxisLabel(date, text, index, dataItem, labelOptions);\n }\n },\n\n createRangeLabels: function() {\n var this$1$1 = this;\n\n var ref = this.divisionRange;\n var displayStart = ref.displayStart;\n var displayEnd = ref.displayEnd;\n var options = this.options;\n var labelOptions = $.extend({}, 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 var unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n var createLabel = function (index, date, text) {\n if (text) {\n var label = new AxisLabel(date, text, index, null, labelOptions);\n this$1$1.append(label);\n this$1$1.rangeLabels.push(label);\n }\n };\n\n var startText = this.axisLabelText(displayStart, labelOptions, { index: 0, count: 2 });\n createLabel(0, displayStart, startText);\n\n var endText = this.axisLabelText(displayEnd, labelOptions, { index: 1, count: 2 });\n createLabel(1, displayEnd, endText);\n },\n\n autoRotateRangeLabels: function() {\n var this$1$1 = this;\n\n var labels = this.rangeLabels;\n if (!this.options.autoRotateRangeLabels || this.options.vertical || labels.length !== 2) {\n return;\n }\n\n var rotateLabel = function (label, tickPositions, index) {\n var width = Math.abs(tickPositions[index + 1] - tickPositions[index]) * 2;\n var angle = this$1$1.autoRotateLabelAngle(label.box, width);\n if (angle !== 0) {\n label.options.rotation = angle;\n label.reflow(new Box());\n }\n };\n\n var tickPositions = this.getMajorTickPositions();\n rotateLabel(labels[0], tickPositions, 0);\n rotateLabel(labels[1], tickPositions, tickPositions.length - 2);\n },\n\n categoryIndex: function(value) {\n return this.dataRange.valueIndex(value);\n },\n\n slot: function(from, to, limit) {\n var dateRange = this.dataRange;\n var start = from;\n var 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 var slot = this.getSlot(start, end, limit);\n if (slot) {\n return slot.toRect();\n }\n },\n\n getSlot: function(a, b, limit) {\n var start = a;\n var 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 CategoryAxis.fn.getSlot.call(this, start, end, limit);\n },\n\n valueRange: function() {\n var options = this.options;\n var range = categoryRange(options.srcCategories);\n\n return {\n min: toDate(range.min),\n max: toDate(range.max)\n };\n },\n\n categoryAt: function(index, total) {\n return this.dataRange.dateAt(index, total);\n },\n\n categoriesCount: function() {\n return this.dataRange.valuesCount();\n },\n\n rangeIndices: function() {\n return this.dataRange.displayIndices();\n },\n\n labelsBetweenTicks: function() {\n return !this.divisionRange.options.justified;\n },\n\n prepareUserOptions: function() {\n if (this.isEmpty()) {\n return;\n }\n\n this.options.categories = this.dataRange.values();\n },\n\n getCategory: function(point) {\n var index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.dataRange.dateAt(index);\n },\n\n totalIndex: function(value) {\n return this.dataRange.totalIndex(value);\n },\n\n currentRangeIndices: function() {\n var 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: function() {\n return this.dataRange.total();\n },\n\n totalRangeIndices: function() {\n var 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: function() {\n return this.dataRange.totalCount();\n },\n\n isEmpty: function() {\n return !this.options.srcCategories.length;\n },\n\n roundedRange: function() {\n if (this.options.roundToBaseUnit !== false || this.isEmpty()) {\n return this.range();\n }\n\n var options = this.options;\n var datesRange = categoryRange(options.srcCategories);\n\n var dateRange = new DateRange(datesRange.min, datesRange.max, $.extend({}, options, {\n justified: false,\n roundToBaseUnit: true,\n justifyEnd: false\n }));\n\n return dateRange.displayRange();\n }\n });\n\n setDefaultOptions(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\n function autoAxisMin(min, max, narrow) {\n if (!min && !max) {\n return 0;\n }\n\n var axisMin;\n\n if (min >= 0 && max >= 0) {\n var minValue = min === max ? 0 : min;\n\n var 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\n function autoAxisMax(min, max, narrow) {\n if (!min && !max) {\n return 1;\n }\n\n var axisMax;\n\n if (min <= 0 && max <= 0) {\n var maxValue = min === max ? 0 : max;\n\n var 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 }\n\n function floor(value, step) {\n return round(Math.floor(value / step) * step, DEFAULT_PRECISION);\n }\n\n function ceil(value, step) {\n return round(Math.ceil(value / step) * step, DEFAULT_PRECISION);\n }\n\n function limitCoordinate(value) {\n return Math.max(Math.min(value, COORDINATE_LIMIT), -COORDINATE_LIMIT);\n }\n\n var MIN_VALUE_RANGE$1 = Math.pow(10, -DEFAULT_PRECISION + 1);\n\n var NumericAxis = Axis.extend({\n init: function(seriesMin, seriesMax, options, chartService) {\n Axis.fn.init.call(this, $.extend({}, options, {\n seriesMin: seriesMin,\n seriesMax: seriesMax\n }), chartService);\n },\n\n initUserOptions: function(options) {\n var autoOptions = autoAxisOptions(options.seriesMin, options.seriesMax, options);\n this.totalOptions = totalAxisOptions(autoOptions, options);\n\n return axisOptions(autoOptions, options);\n },\n\n initFields: function() {\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: function() {\n return new NumericAxis(\n this.seriesMin,\n this.seriesMax,\n $.extend({}, this.options),\n this.chartService\n );\n },\n\n startValue: function() {\n return 0;\n },\n\n range: function() {\n var options = this.options;\n return { min: options.min, max: options.max };\n },\n\n getDivisions: function(stepValue) {\n if (stepValue === 0) {\n return 1;\n }\n\n var options = this.options;\n var range = options.max - options.min;\n\n return Math.floor(round(range / stepValue, COORD_PRECISION)) + 1;\n },\n\n getTickPositions: function(unit, skipUnit) {\n var options = this.options;\n var ref = this.lineInfo();\n var axisDir = ref.axisDir;\n var axisOrigin = ref.axisOrigin;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var range = options.max - options.min;\n var scale = lineSize / range;\n var step = unit * scale;\n var divisions = this.getDivisions(unit);\n var positions = [];\n var pos = lineBox[axisOrigin];\n var skipStep = 0;\n\n if (skipUnit) {\n skipStep = skipUnit / unit;\n }\n\n for (var 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: function() {\n return this.getTickPositions(this.options.majorUnit);\n },\n\n getMinorTickPositions: function() {\n return this.getTickPositions(this.options.minorUnit);\n },\n\n getSlot: function(a, b, limit) {\n if (limit === void 0) { limit = false; }\n\n var options = this.options;\n var ref = this.lineInfo();\n var axis = ref.axis;\n var axisDir = ref.axisDir;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var lineStart = ref.lineStart;\n var step = axisDir * (lineSize / (options.max - options.min));\n\n var start = valueOrDefault(a, b || 0);\n var 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 var p1 = Math.min(start, end) - options.min;\n var p2 = Math.max(start, end) - options.min;\n\n var 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: function(point) {\n var options = this.options;\n var max = Number(options.max);\n var min = Number(options.min);\n var offset = this.pointOffset(point);\n var valueOffset = offset * (max - min);\n\n if (offset < 0 || offset > 1) {\n return null;\n }\n\n var value = min + valueOffset;\n return round(value, DEFAULT_PRECISION);\n },\n\n translateRange: function(delta) {\n var options = this.options;\n var vertical = options.vertical;\n var reverse = options.reverse;\n var max = options.max;\n var min = options.min;\n var ref = this.lineInfo();\n var lineSize = ref.lineSize;\n var range = max - min;\n var scale = lineSize / range;\n var 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: function() {\n return this.getDivisions(this.options.majorUnit);\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n var options = this.options;\n var value = round(options.min + (index * options.majorUnit), DEFAULT_PRECISION);\n var text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n },\n\n shouldRenderNote: function(value) {\n var range = this.range();\n return range.min <= value && value <= range.max;\n },\n\n pan: function(delta) {\n var range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n },\n\n pointsRange: function(start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var 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: function(scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var range = this.options.max - this.options.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = round(this.options.min + minDelta, DEFAULT_PRECISION);\n var max = round(this.options.max - maxDelta, DEFAULT_PRECISION);\n\n if (max - min < MIN_VALUE_RANGE$1) {\n max = min + MIN_VALUE_RANGE$1;\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n zoomRange: function(scale, cursor) {\n var ref = this;\n var totalMin = ref.totalMin;\n var totalMax = ref.totalMax;\n var 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: function(min, max) {\n return max - min > MIN_VALUE_RANGE$1;\n }\n });\n\n function autoAxisOptions(seriesMin, seriesMax, options) {\n var narrowRange = options.narrowRange;\n\n var autoMin = autoAxisMin(seriesMin, seriesMax, narrowRange);\n var autoMax = autoAxisMax(seriesMin, seriesMax, narrowRange);\n\n var majorUnit = autoMajorUnit(autoMin, autoMax);\n var 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\n function 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\n function clearNullValues(options, fields) {\n for (var idx = 0; idx < fields.length; idx++) {\n var field = fields[idx];\n if (options[field] === null) {\n options[field] = undefined;\n }\n }\n }\n\n function axisOptions(autoOptions, userOptions) {\n var options = userOptions;\n var userSetMin, userSetMax;\n\n if (userOptions) {\n clearNullValues(userOptions, [ 'min', 'max' ]);\n\n userSetMin = defined(userOptions.min);\n userSetMax = defined(userOptions.max);\n\n var 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 var 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\n function remainderClose(value, divisor, ratio) {\n var remainder = round(Math.abs(value % divisor), DEFAULT_PRECISION);\n var threshold = divisor * (1 - ratio);\n\n return remainder === 0 || remainder > threshold;\n }\n\n setDefaultOptions(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\n var MIN_VALUE_RANGE = 1000;\n\n var DateValueAxis = Axis.extend({\n init: function(seriesMin, seriesMax, axisOptions, chartService) {\n var min = toDate(seriesMin);\n var max = toDate(seriesMax);\n\n var intlService = chartService.intl;\n var 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 Axis.fn.init.call(this, options, chartService);\n\n this.intlService = intlService;\n this.seriesMin = min;\n this.seriesMax = max;\n\n var 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: function() {\n return new DateValueAxis(this.seriesMin, this.seriesMax, $.extend({}, this.options), this.chartService);\n },\n\n range: function() {\n var options = this.options;\n return { min: options.min, max: options.max };\n },\n\n getDivisions: function(stepValue) {\n var options = this.options;\n\n return Math.floor(\n duration(options.min, options.max, options.baseUnit) / stepValue + 1\n );\n },\n\n getTickPositions: function(step) {\n var options = this.options;\n var ref = this.lineInfo();\n var dir = ref.axisDir;\n var lineSize = ref.lineSize;\n var start = ref.lineStart;\n var divisions = this.getDivisions(step);\n var timeRange = dateDiff(options.max, options.min);\n var scale = lineSize / timeRange;\n var weekStartDay = options.weekStartDay || 0;\n\n var positions = [ start ];\n for (var i = 1; i < divisions; i++) {\n var date = addDuration(options.min, i * step, options.baseUnit, weekStartDay);\n var 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: function() {\n return this.getTickPositions(this.options.majorUnit);\n },\n\n getMinorTickPositions: function() {\n return this.getTickPositions(this.options.minorUnit);\n },\n\n getSlot: function(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: function(point) {\n var value = NumericAxis.prototype.getValue.call(this, point);\n\n return value !== null ? toDate(value) : null;\n },\n\n labelsCount: function() {\n return this.getDivisions(this.options.majorUnit);\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n var options = this.options;\n var offset = index * options.majorUnit;\n var weekStartDay = options.weekStartDay || 0;\n var date = options.min;\n\n if (offset > 0) {\n date = addDuration(date, offset, options.baseUnit, weekStartDay);\n }\n\n var unitFormat = labelOptions.dateFormats[options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n var text = this.axisLabelText(date, labelOptions, labelContext);\n return new AxisLabel(date, text, index, null, labelOptions);\n },\n\n translateRange: function(delta) {\n var options = this.options;\n var lineBox = this.lineBox();\n var vertical = options.vertical;\n var reverse = options.reverse;\n var size = vertical ? lineBox.height() : lineBox.width();\n var range = this.range();\n var scale = size / dateDiff(range.max, range.min);\n\n var offset = round(delta / scale, DEFAULT_PRECISION);\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n var from = addTicks(options.min, offset);\n var to = addTicks(options.max, offset);\n\n return {\n min: from,\n max: to,\n offset: offset\n };\n },\n\n shouldRenderNote: function(value) {\n var range = this.range();\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0;\n },\n\n pan: function(delta) {\n var range = this.translateRange(delta, true);\n var 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: function(start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n return {\n min: toDate(min),\n max: toDate(max)\n };\n },\n\n scaleRange: function(scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var range = this.options.max - this.options.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = toDate(toTime(this.options.min) + minDelta);\n var 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: function(scale, cursor) {\n var range = this.scaleRange(scale, cursor);\n var min = toDate(limitValue(toTime(range.min), this.totalMin, this.totalMax));\n var max = toDate(limitValue(toTime(range.max), this.totalMin, this.totalMax));\n\n return {\n min: min,\n max: max\n };\n }\n });\n\n function timeUnits(delta) {\n var 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\n function applyDefaults(seriesMin, seriesMax, options) {\n var min = options.min || seriesMin;\n var max = options.max || seriesMax;\n var baseUnit = options.baseUnit || (max && min ? timeUnits(absoluteDateDiff(max, min)) : HOURS);\n var baseUnitTime = TIME_PER_UNIT[baseUnit];\n var weekStartDay = options.weekStartDay || 0;\n var autoMin = floorDate(toTime(min) - 1, baseUnit, weekStartDay) || toDate(max);\n var autoMax = ceilDate(toTime(max) + 1, baseUnit, weekStartDay);\n var userMajorUnit = options.majorUnit ? options.majorUnit : undefined;\n var majorUnit = userMajorUnit || ceil(\n autoMajorUnit(autoMin.getTime(), autoMax.getTime()),\n baseUnitTime\n ) / baseUnitTime;\n var actualUnits = duration(autoMin, autoMax, baseUnit);\n var totalUnits = ceil(actualUnits, majorUnit);\n var unitsToAdd = totalUnits - actualUnits;\n var head = Math.floor(unitsToAdd / 2);\n var 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\n setDefaultOptions(DateValueAxis, {\n type: DATE,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n dateFormats: DateLabelFormats\n }\n });\n\n var DEFAULT_MAJOR_UNIT = 10;\n var MIN_VALUE_RANGE$2 = 1e-6;\n\n var LogarithmicAxis = Axis.extend({\n init: function(seriesMin, seriesMax, options, chartService) {\n\n var axisOptions = deepExtend({ majorUnit: DEFAULT_MAJOR_UNIT, min: seriesMin, max: seriesMax }, options);\n var base = axisOptions.majorUnit;\n var autoMax = autoAxisMax$1(seriesMax, base);\n var autoMin = autoAxisMin$1(seriesMin, seriesMax, axisOptions);\n var 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 Axis.fn.init.call(this, 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: function() {\n return new LogarithmicAxis(\n this.seriesMin,\n this.seriesMax,\n $.extend({}, this.options),\n this.chartService\n );\n },\n\n startValue: function() {\n return this.options.min;\n },\n\n getSlot: function(a, b, limit) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var base = options.majorUnit;\n var min = options.min;\n var max = options.max;\n var ref$1 = this.lineInfo();\n var axis = ref$1.axis;\n var axisDir = ref$1.axisDir;\n var lineBox = ref$1.lineBox;\n var lineSize = ref$1.lineSize;\n var lineStart = ref$1.lineStart;\n var step = axisDir * (lineSize / (logMax - logMin));\n var start = valueOrDefault(a, b || 1);\n var 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 var p1 = Math.min(start, end) - logMin;\n var p2 = Math.max(start, end) - logMin;\n\n var 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: function(point) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var base = options.majorUnit;\n var ref$1 = this.lineInfo();\n var axis = ref$1.axis;\n var axisDir = ref$1.axisDir;\n var lineStart = ref$1.lineStart;\n var lineSize = ref$1.lineSize;\n var step = ((logMax - logMin) / lineSize);\n var offset = axisDir * (point[axis] - lineStart);\n var valueOffset = offset * step;\n\n if (offset < 0 || offset > lineSize) {\n return null;\n }\n\n var value = logMin + valueOffset;\n\n return round(Math.pow(base, value), DEFAULT_PRECISION);\n },\n\n range: function() {\n var options = this.options;\n return { min: options.min, max: options.max };\n },\n\n translateRange: function(delta) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var reverse = options.reverse;\n var vertical = options.vertical;\n var base = options.majorUnit;\n var lineBox = this.lineBox();\n var size = vertical ? lineBox.height() : lineBox.width();\n var scale = size / (logMax - logMin);\n var 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: function() {\n var floorMax = Math.floor(this.logMax);\n var count = Math.floor(floorMax - this.logMin) + 1;\n\n return count;\n },\n\n getMajorTickPositions: function() {\n var ticks = [];\n\n this.traverseMajorTicksPositions(function (position) {\n ticks.push(position);\n }, { step: 1, skip: 0 });\n\n return ticks;\n },\n\n createTicks: function(lineGroup) {\n var options = this.options;\n var majorTicks = options.majorTicks;\n var minorTicks = options.minorTicks;\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var lineBox = this.lineBox();\n var ticks = [];\n var 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: function(altAxis) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var vertical = options.vertical;\n var lineBox = altAxis.lineBox();\n var lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n var majorTicks = [];\n\n var 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: function(callback, tickOptions) {\n var ref = this.lineInfo();\n var lineStart = ref.lineStart;\n var step = ref.step;\n var ref$1 = this;\n var logMin = ref$1.logMin;\n var logMax = ref$1.logMax;\n\n for (var power = Math.ceil(logMin) + tickOptions.skip; power <= logMax; power += tickOptions.step) {\n var position = round(lineStart + step * (power - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n },\n\n traverseMinorTicksPositions: function(callback, tickOptions) {\n var this$1$1 = this;\n\n var ref = this.options;\n var min = ref.min;\n var max = ref.max;\n var minorUnit = ref.minorUnit;\n var base = ref.majorUnit;\n var ref$1 = this.lineInfo();\n var lineStart = ref$1.lineStart;\n var step = ref$1.step;\n var ref$2 = this;\n var logMin = ref$2.logMin;\n var logMax = ref$2.logMax;\n var start = Math.floor(logMin);\n\n for (var power = start; power < logMax; power++) {\n var minorOptions = this$1$1._minorIntervalOptions(power);\n for (var idx = tickOptions.skip; idx < minorUnit; idx += tickOptions.step) {\n var value = minorOptions.value + idx * minorOptions.minorStep;\n if (value > max) {\n break;\n }\n if (value >= min) {\n var position = round(lineStart + step * (log(value, base) - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n }\n }\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n var power = Math.ceil(this.logMin + index);\n var value = Math.pow(this.options.majorUnit, power);\n var text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n },\n\n shouldRenderNote: function(value) {\n var range = this.range();\n return range.min <= value && value <= range.max;\n },\n\n pan: function(delta) {\n var range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n },\n\n pointsRange: function(start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n return {\n min: min,\n max: max\n };\n },\n\n scaleRange: function(scale, cursor) {\n var ref = this.options;\n var base = ref.majorUnit;\n var logMin = log(this.options.min, base);\n var logMax = log(this.options.max, base);\n var position = Math.abs(this.pointOffset(cursor));\n var range = logMax - logMin;\n var delta = this.scaleToDelta(scale, range);\n var min = Math.pow(base, logMin + position * delta);\n var max = Math.pow(base, logMax - (1 - position) * delta);\n\n if (max - min < MIN_VALUE_RANGE$2) {\n max = min + MIN_VALUE_RANGE$2;\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n zoomRange: function(scale, cursor) {\n var range = this.scaleRange(scale, cursor);\n var ref = this;\n var totalMin = ref.totalMin;\n var totalMax = ref.totalMax;\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n },\n\n _minorIntervalOptions: function(power) {\n var ref = this.options;\n var minorUnit = ref.minorUnit;\n var base = ref.majorUnit;\n var value = Math.pow(base, power);\n var nextValue = Math.pow(base, power + 1);\n var difference = nextValue - value;\n var minorStep = difference / minorUnit;\n\n return {\n value: value,\n minorStep: minorStep\n };\n },\n\n lineInfo: function() {\n var info = Axis.fn.lineInfo.call(this);\n info.step = info.axisDir * (info.lineSize / (this.logMax - this.logMin));\n\n return info;\n }\n });\n\n function initRange(autoMin, autoMax, axisOptions, options) {\n var min = axisOptions.min;\n var max = axisOptions.max;\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\n function autoAxisMin$1(min, max, options) {\n var base = options.majorUnit;\n var 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\n function autoAxisMax$1(max, base) {\n var logMaxRemainder = round(log(max, base), DEFAULT_PRECISION) % 1;\n var 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\n function throwNegativeValuesError() {\n throw new Error(\"Non positive values cannot be used for a logarithmic axis\");\n }\n\n function log(x, base) {\n return Math.log(x) / Math.log(base);\n }\n\n setDefaultOptions(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\n var GridLinesMixin = {\n createGridLines: function(altAxis) {\n var options = this.options;\n var radius = Math.abs(this.box.center().y - altAxis.lineBox().y1);\n var gridLines = [];\n var skipMajor = false;\n var 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 var 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 var style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n\n var center = this.box.center();\n var circle = new Circle([ center.x, center.y ], radius);\n var container = this.gridLinesVisual();\n\n for (var i = 0; i < angles.length; i++) {\n var line = new 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 var this$1$1 = this;\n\n var divs = this.intervals(size, skip, step, skipAngles);\n var options = altAxis.options;\n var altAxisVisible = options.visible && (options.line || {}).visible !== false;\n\n return map(divs, function (d) {\n var alpha = this$1$1.intervalAngle(d);\n\n if (!altAxisVisible || alpha !== 90) {\n return alpha;\n }\n });\n }\n };\n\n var RadarCategoryAxis = CategoryAxis.extend({\n range: function() {\n return { min: 0, max: this.options.categories.length };\n },\n\n reflow: function(box) {\n this.box = box;\n this.reflowLabels();\n },\n\n lineBox: function() {\n return this.box;\n },\n\n reflowLabels: function() {\n var this$1$1 = this;\n\n var ref = this;\n var labels = ref.labels;\n var labelOptions = ref.options.labels;\n var skip = labelOptions.skip || 0;\n var step = labelOptions.step || 1;\n var measureBox = new Box();\n\n for (var i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n var labelBox = labels[i].box;\n\n labels[i].reflow(this$1$1.getSlot(skip + i * step).adjacentBox(\n 0, labelBox.width(), labelBox.height()\n ));\n }\n },\n\n intervals: function(size, skipOption, stepOption, skipAngles) {\n if (skipAngles === void 0) { skipAngles = false; }\n\n var options = this.options;\n var categories = options.categories.length;\n var divCount = categories / size || 1;\n var divAngle = 360 / divCount;\n var skip = skipOption || 0;\n var step = stepOption || 1;\n var divs = [];\n var angle = 0;\n\n for (var 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: function() {\n return this.intervals(1);\n },\n\n minorIntervals: function() {\n return this.intervals(0.5);\n },\n\n intervalAngle: function(interval) {\n return (360 + interval + this.options.startAngle) % 360;\n },\n\n majorAngles: function() {\n var this$1$1 = this;\n\n return map(this.majorIntervals(), function (interval) { return this$1$1.intervalAngle(interval); });\n },\n\n createLine: function() {\n return [];\n },\n\n majorGridLineAngles: function(altAxis) {\n var majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, 1, majorGridLines.skip, majorGridLines.step);\n },\n\n minorGridLineAngles: function(altAxis, skipMajor) {\n var ref = this.options;\n var minorGridLines = ref.minorGridLines;\n var majorGridLines = ref.majorGridLines;\n var 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: function(radius, altAxis, skipMajor) {\n if (altAxis.options.type !== ARC) {\n var minorAngle = rad(360 / (this.options.categories.length * 2));\n var minorRadius = Math.cos(minorAngle) * radius;\n var majorAngles = this.majorAngles();\n\n var 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: function() {\n var this$1$1 = this;\n\n var plotBands = this.options.plotBands || [];\n\n var group = this._plotbandGroup = new Group({\n zIndex: -1\n });\n\n for (var i = 0; i < plotBands.length; i++) {\n var band = plotBands[i];\n var slot = this$1$1.plotBandSlot(band);\n var singleSlot = this$1$1.getSlot(band.from);\n\n var head = band.from - Math.floor(band.from);\n slot.startAngle += head * singleSlot.angle;\n\n var tail = Math.ceil(band.to) - band.to;\n slot.angle -= (tail + head) * singleSlot.angle;\n\n var 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: function(band) {\n return this.getSlot(band.from, band.to - 1);\n },\n\n getSlot: function(from, to) {\n var options = this.options;\n var justified = options.justified;\n var box = this.box;\n var divs = this.majorAngles();\n var totalDivs = divs.length;\n var slotAngle = 360 / totalDivs;\n var 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 var slotStart = divs[fromValue];\n\n if (justified) {\n slotStart = slotStart - slotAngle / 2;\n\n if (slotStart < 0) {\n slotStart += 360;\n }\n }\n\n var toValue = limitValue(Math.ceil(to || fromValue), fromValue, totalDivs - 1);\n var slots = toValue - fromValue + 1;\n var angle = slotAngle * slots;\n\n return new Ring(box.center(), 0, box.height() / 2, slotStart, angle);\n },\n\n slot: function(from, to) {\n var slot = this.getSlot(from, to);\n var startAngle = slot.startAngle + 180;\n var endAngle = startAngle + slot.angle;\n\n return new geometry.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: function(point) {\n var this$1$1 = this;\n\n var length = this.options.categories.length;\n var index = null;\n\n for (var i = 0; i < length; i++) {\n var slot = this$1$1.getSlot(i);\n if (slot.containsPoint(point)) {\n index = i;\n break;\n }\n }\n\n return index;\n }\n });\n\n setDefaultOptions(RadarCategoryAxis, {\n startAngle: 90,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n visible: true\n },\n justified: true\n });\n deepExtend(RadarCategoryAxis.prototype, GridLinesMixin);\n\n var PolarAxis = Axis.extend({\n init: function(options, chartService) {\n Axis.fn.init.call(this, options, chartService);\n\n var instanceOptions = this.options;\n\n instanceOptions.minorUnit = instanceOptions.minorUnit || instanceOptions.majorUnit / 2;\n },\n\n getDivisions: function(stepValue) {\n return NumericAxis.prototype.getDivisions.call(this, stepValue) - 1;\n },\n\n reflow: function(box) {\n this.box = box;\n this.reflowLabels();\n },\n\n reflowLabels: function() {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var labelOptions = ref.options.labels;\n var skip = labelOptions.skip || 0;\n var step = labelOptions.step || 1;\n\n var measureBox = new Box();\n var divs = this.intervals(options.majorUnit, skip, step);\n\n for (var i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n var labelBox = labels[i].box;\n\n labels[i].reflow(this$1$1.getSlot(divs[i]).adjacentBox(0, labelBox.width(), labelBox.height()));\n }\n },\n\n lineBox: function() {\n return this.box;\n },\n\n intervals: function(size, skipOption, stepOption, skipAngles) {\n if (skipAngles === void 0) { skipAngles = false; }\n\n var min = this.options.min;\n var divisions = this.getDivisions(size);\n var divs = [];\n var skip = skipOption || 0;\n var step = stepOption || 1;\n\n for (var i = skip; i < divisions; i += step) {\n var 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: function() {\n return this.intervals(this.options.majorUnit);\n },\n\n minorIntervals: function() {\n return this.intervals(this.options.minorUnit);\n },\n\n intervalAngle: function(i) {\n return (540 - i - this.options.startAngle) % 360;\n },\n\n createLine: function() {\n return [];\n },\n\n majorGridLineAngles: function(altAxis) {\n var majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, this.options.majorUnit, majorGridLines.skip, majorGridLines.step);\n },\n\n minorGridLineAngles: function(altAxis, skipMajor) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var 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: function(band) {\n return this.getSlot(band.from, band.to);\n },\n\n getSlot: function(a, b) {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var startAngle = options.startAngle;\n var start = limitValue(a, options.min, options.max);\n var 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 var 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: function(from, to) {\n if (to === void 0) { to = from; }\n\n var options = this.options;\n var start = 360 - options.startAngle;\n var slot = this.getSlot(from, to);\n var min = Math.min(from, to);\n var max = Math.max(from, to);\n var 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 geometry.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: function(point) {\n var options = this.options;\n var center = this.box.center();\n var dx = point.x - center.x;\n var dy = point.y - center.y;\n var theta = Math.round(deg(Math.atan2(dy, dx)));\n var 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: function() {\n return {\n min: 0,\n max: Math.PI * 2\n };\n }\n });\n\n setDefaultOptions(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\n deepExtend(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\n var RadarNumericAxisMixin = {\n options: {\n majorGridLines: {\n visible: true\n }\n },\n\n createPlotBands: function() {\n var this$1$1 = this;\n\n var ref = this.options;\n var type = ref.majorGridLines.type;\n var plotBands = ref.plotBands; if (plotBands === void 0) { plotBands = []; }\n var altAxis = this.plotArea.polarAxis;\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var group = this._plotbandGroup = new Group({\n zIndex: -1\n });\n\n for (var i = 0; i < plotBands.length; i++) {\n var band = plotBands[i];\n var bandStyle = {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n };\n\n var slot = this$1$1.getSlot(band.from, band.to, true);\n var ring = new Ring(center, center.y - slot.y2, center.y - slot.y1, 0, 360);\n\n var shape = (void 0);\n if (type === ARC) {\n shape = ShapeBuilder.current.createRing(ring, bandStyle);\n } else {\n shape = Path.fromPoints(this$1$1.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 var innerPoints = [];\n var outerPoints = [];\n var center = [ ring.center.x, ring.center.y ];\n var innerCircle = new Circle(center, ring.innerRadius);\n var outerCircle = new Circle(center, ring.radius);\n\n for (var 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 var options = this.options;\n var majorTicks = this.radarMajorGridLinePositions();\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var 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 var 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 var style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n var skip = options.skip; if (skip === void 0) { skip = 0; }\n var step = options.step; if (step === void 0) { step = 0; }\n var container = this.gridLinesVisual();\n\n for (var tickIx = skip; tickIx < ticks.length; tickIx += step) {\n var tickRadius = center.y - ticks[tickIx];\n if (tickRadius > 0) {\n var circle = new Circle([ center.x, center.y ], tickRadius);\n if (options.type === ARC) {\n container.append(new drawing.Circle(circle, style));\n } else {\n var line = new Path(style);\n for (var 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 var lineBox = this.lineBox();\n var altAxis = this.plotArea.polarAxis;\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var radius = point.distanceTo(center);\n var distance = radius;\n\n if (this.options.majorGridLines.type !== ARC && majorAngles.length > 1) {\n var dx = point.x - center.x;\n var dy = point.y - center.y;\n var 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 var midAngle = angularDistance(majorAngles[0], majorAngles[1]) / 2;\n var alpha = angularDistance(theta, majorAngles[0]);\n var gamma = 90 - midAngle;\n var 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\n function angularDistance(a, b) {\n return 180 - Math.abs(Math.abs(a - b) - 180);\n }\n\n var RadarNumericAxis = NumericAxis.extend({\n radarMajorGridLinePositions: function() {\n return this.getTickPositions(this.options.majorUnit);\n },\n\n radarMinorGridLinePositions: function() {\n var options = this.options;\n var minorSkipStep = 0;\n\n if (options.majorGridLines.visible) {\n minorSkipStep = options.majorUnit;\n }\n return this.getTickPositions(options.minorUnit, minorSkipStep);\n },\n\n axisType: function() {\n return NumericAxis;\n }\n });\n\n deepExtend(RadarNumericAxis.prototype, RadarNumericAxisMixin);\n\n var RadarLogarithmicAxis = LogarithmicAxis.extend({\n radarMajorGridLinePositions: function() {\n var positions = [];\n\n this.traverseMajorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.majorGridLines);\n\n return positions;\n },\n\n radarMinorGridLinePositions: function() {\n var positions = [];\n\n this.traverseMinorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.minorGridLines);\n\n return positions;\n },\n\n axisType: function() {\n return LogarithmicAxis;\n }\n });\n\n deepExtend(RadarLogarithmicAxis.prototype, RadarNumericAxisMixin);\n\n var WEIGHT = 0.333;\n var EXTREMUM_ALLOWED_DEVIATION = 0.01;\n\n var CurveProcessor = Class.extend({\n init: function(closed) {\n\n this.closed = closed;\n },\n\n process: function(dataPoints) {\n var this$1$1 = this;\n\n var points = dataPoints.slice(0);\n var segments = [];\n var closed = this.closed;\n var 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 var p0 = points[0];\n var p1 = points[1];\n var 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 var 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 Segment(\n p1,\n this.secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n var initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n var controlPoints = this.controlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n var tangent$1 = this.tangent(p0, p1, X,Y);\n initialControlPoint = this.firstControlPoint(tangent$1, p0, p1, X, Y);\n }\n\n var cp0 = initialControlPoint;\n for (var idx = 0; idx <= length - 3; idx++) {\n this$1$1.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 var controlPoints$1 = this$1$1.controlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints$1[1];\n\n var cp1 = controlPoints$1[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 var controlPoints$2 = this.controlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p1,\n controlPoints$2[0]\n ));\n\n last(segments).controlOut(controlPoints$2[1]);\n segments.push(new Segment(\n p2,\n lastControlPoint\n ));\n } else {\n var tangent$2 = this.tangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p2,\n this.secondControlPoint(tangent$2, p1, p2, X, Y)\n ));\n }\n\n return segments;\n },\n\n removeDuplicates: function(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: function(p0, p1, p2) {\n var 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 var fn = this.lineFunction(p0,p1);\n var 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: function(p0, p1, p2) {\n var fn = this.lineFunction(p0, p1);\n var 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: function(p1, p2) {\n var a = (p2.y - p1.y) / (p2.x - p1.x);\n var b = p1.y - a * p1.x;\n\n return [ b, a ];\n },\n\n controlPoints: function(p0, p1, p2) {\n var xField = X;\n var yField = Y;\n var restrict = false;\n var switchOrientation = false;\n var tangent;\n\n if (this.isLine(p0, p1, p2)) {\n tangent = this.tangent(p0, p1, X, Y);\n } else {\n var 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 var 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 var secondControlPoint = this.secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n var oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n var 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: function(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: function(p0, p1, xField, yField) {\n var x = p1[xField] - p0[xField];\n var y = p1[yField] - p0[yField];\n var tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n },\n\n isMonotonicByField: function(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: function(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return this.point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n },\n\n secondControlPoint: function(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return this.point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n },\n\n point: function(xValue, yValue, xField, yField) {\n var controlPoint = new geometry.Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n },\n\n calculateFunction: function(fn, x) {\n var length = fn.length;\n var result = 0;\n\n for (var i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n }\n });\n\n function numberSign(value) {\n return value <= 0 ? -1 : 1;\n }\n\n dataviz.Gradients = GRADIENTS;\n\n kendo.deepExtend(kendo.dataviz, {\n constants: constants,\n services: services,\n autoMajorUnit: autoMajorUnit,\n Point: Point,\n Box: Box,\n Ring: Ring,\n Sector: Sector,\n ShapeBuilder: ShapeBuilder,\n ShapeElement: ShapeElement,\n ChartElement: ChartElement,\n BoxElement: BoxElement,\n RootElement: RootElement,\n FloatElement: FloatElement,\n Text: Text,\n TextBox: TextBox,\n Title: Title,\n AxisLabel: AxisLabel,\n Axis: Axis,\n Note: Note,\n CategoryAxis: CategoryAxis,\n DateCategoryAxis: DateCategoryAxis,\n DateValueAxis: DateValueAxis,\n NumericAxis: NumericAxis,\n LogarithmicAxis: LogarithmicAxis,\n PolarAxis: PolarAxis,\n RadarCategoryAxis: RadarCategoryAxis,\n RadarNumericAxis: RadarNumericAxis,\n RadarLogarithmicAxis: RadarLogarithmicAxis,\n CurveProcessor: CurveProcessor,\n rectToBox: rectToBox,\n addClass: addClass,\n removeClass: removeClass,\n alignPathToPixel: alignPathToPixel,\n clockwise: clockwise,\n convertableToNumber: convertableToNumber,\n cycleUp: cycleUp,\n cycleDown: cycleDown,\n cycleIndex: cycleIndex,\n deepExtend: deepExtend,\n elementStyles: elementStyles,\n getSpacing: getSpacing,\n getTemplate: getTemplate,\n getAriaTemplate: getTemplate$1,\n getter: __common_getter_js,\n grep: grep,\n hasClasses: hasClasses,\n HashMap: HashMap,\n inArray: inArray,\n interpolateValue: interpolateValue,\n InstanceObserver: InstanceObserver,\n isArray: isArray,\n isFunction: isFunction,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isString: isString,\n map: map,\n mousewheelDelta: mousewheelDelta,\n FontLoader: FontLoader,\n renderIcon: renderIcon,\n setDefaultOptions: setDefaultOptions,\n sparseArrayLimits: sparseArrayLimits,\n styleValue: styleValue,\n find: find,\n elementScale: elementScale,\n autoTextColor: autoTextColor,\n createHashSet: createHashSet,\n defaultErrorHandler: defaultErrorHandler,\n keys: keys,\n hasOwnProperty: hasOwnProperty,\n Matrix: Matrix$1,\n Observable: Observable$$1,\n append: append,\n bindEvents: bindEvents,\n Class: Class,\n defined: defined,\n deg: deg,\n elementOffset: elementOffset,\n elementSize: elementSize,\n eventCoordinates: eventCoordinates,\n eventElement: eventElement,\n hashKey: hashKey,\n last: last,\n limitValue: limitValue,\n logToConsole: kendo.logToConsole,\n objectKey: objectKey,\n rad: rad,\n round: round,\n unbindEvents: unbindEvents,\n valueOrDefault: valueOrDefault,\n absoluteDateDiff: absoluteDateDiff,\n addDuration: addDuration,\n addTicks: addTicks,\n ceilDate: ceilDate,\n dateComparer: dateComparer,\n dateDiff: dateDiff,\n dateEquals: dateEquals,\n dateIndex: dateIndex,\n duration: duration,\n floorDate: floorDate,\n lteDateIndex: lteDateIndex,\n startOfWeek: startOfWeek,\n toDate: toDate,\n parseDate: parseDate,\n parseDates: parseDates,\n toTime: toTime,\n firstDay: firstDay\n });\n\n })(window.kendo.jQuery);\n\n (function($) {\n\n var dataviz = kendo.dataviz;\n var services = dataviz.services;\n var draw = kendo.drawing;\n\n dataviz.SASS_THEMES = [\"sass\", \"default-v2\", \"bootstrap-v4\", \"material-v2\"];\n\n dataviz.ExportMixin = {\n extend: function(proto, skipLegacy) {\n if (!proto.exportVisual) {\n throw new Error(\"Mixin target has no exportVisual method defined.\");\n }\n\n proto.exportSVG = this.exportSVG;\n proto.exportImage = this.exportImage;\n proto.exportPDF = this.exportPDF;\n\n if (!skipLegacy) {\n proto.svg = this.svg;\n proto.imageDataURL = this.imageDataURL;\n }\n },\n\n exportSVG: function(options) {\n return draw.exportSVG(this.exportVisual(), options);\n },\n\n exportImage: function(options) {\n return draw.exportImage(this.exportVisual(options), options);\n },\n\n exportPDF: function(options) {\n return draw.exportPDF(this.exportVisual(), options);\n },\n\n svg: function() {\n if (draw.svg.Surface) {\n return draw.svg.exportGroup(this.exportVisual());\n } else {\n throw new Error(\"SVG Export failed. Unable to export instantiate kendo.drawing.svg.Surface\");\n }\n },\n\n imageDataURL: function() {\n if (!kendo.support.canvas) {\n return null;\n }\n\n if (draw.canvas.Surface) {\n var container = $(\"
    \").css({\n display: \"none\",\n width: this.element.width(),\n height: this.element.height()\n }).appendTo(document.body);\n\n var surface = new draw.canvas.Surface(container[0]);\n surface.draw(this.exportVisual());\n var image = surface._rootElement.toDataURL();\n\n surface.destroy();\n container.remove();\n\n return image;\n } else {\n throw new Error(\"Image Export failed. Unable to export instantiate kendo.drawing.canvas.Surface\");\n }\n }\n };\n\n services.IntlService.register({\n format: function(format) {\n return kendo.format.apply(null, [format].concat(Array.prototype.slice.call(arguments, 1)));\n },\n toString: kendo.toString,\n parseDate: kendo.parseDate,\n firstDay: function() {\n return kendo.culture().calendars.standard.firstDay;\n }\n });\n\n services.TemplateService.register({\n compile: kendo.template\n });\n\n dataviz.Point2D = dataviz.Point;\n dataviz.Box2D = dataviz.Box;\n dataviz.mwDelta = function(e) {\n return dataviz.mousewheelDelta(e.originalEvent);\n };\n\n })(window.kendo.jQuery);\n\n var __meta__$E = {\n id: \"dataviz.core\",\n name: \"Core\",\n description: \"The DataViz core functions\",\n category: \"dataviz\",\n depends: [ \"core\", \"drawing\" ],\n hidden: true\n };\n\n var kendo$G = kendo;\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-charts` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable space-before-blocks, space-before-function-paren, object-curly-spacing */\n\n window.kendo.dataviz = window.kendo.dataviz || {};\n\n var AREA = \"area\";\n var LINE = \"line\";\n\n var INHERIT = \"inherit\";\n\n var BAR_GAP = 1.5;\n var BAR_SPACING = 0.4;\n var BLACK$$1 = '#000';\n var SANS = 'Arial, Helvetica, sans-serif';\n var SANS11 = \"11px \" + SANS;\n var SANS12 = '12px ' + SANS;\n var SANS16 = '16px ' + SANS;\n var TRANSPARENT = 'transparent';\n var WHITE$$1 = '#fff';\n\n var lineSeriesLegendItem = {\n type: LINE\n };\n\n var areaSeriesLegendItem = {\n type: AREA\n };\n\n var areaNoMarkersSeriesLegendItem = $.extend({}, areaSeriesLegendItem,\n {markers: {\n visible: false\n },\n highlight: {\n visible: false\n }});\n\n var notes = function () { return ({\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\n var axisDefaults = function () { return ({\n labels: {\n font: SANS12\n },\n notes: notes(),\n title: {\n font: SANS16,\n margin: 5\n }\n }); };\n\n var areaSeries = function () { return ({\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\n var rangeAreaSeries = function () { return ({\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\n var barSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n legendItem: areaNoMarkersSeriesLegendItem,\n }); };\n\n var boxPlotSeries = function () { return ({\n outliersField: \"\",\n meanField: \"\",\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE$$1,\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\n var bubbleSeries = function () { return ({\n border: {\n width: 0\n },\n labels: {\n background: TRANSPARENT\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n opacity: 0.6\n }); };\n\n var bulletSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n target: {\n color: \"#ff0000\"\n },\n legendItem: areaNoMarkersSeriesLegendItem\n }); };\n\n var candlestickSeries = function () { return ({\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE$$1,\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$$1,\n width: 1\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n spacing: 0.3\n }); };\n\n var columnSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n legendItem: areaNoMarkersSeriesLegendItem\n }); };\n\n var radarColumnSeries = function () { return ({\n legendItem: areaNoMarkersSeriesLegendItem\n }); };\n\n var polarScatterSeries = function () { return ({\n legendItem: lineSeriesLegendItem\n }); };\n\n var scatterSeries = function () { return ({\n legendItem: lineSeriesLegendItem\n }); };\n\n var donutSeries = function () { return ({\n margin: 1,\n legendItem: areaNoMarkersSeriesLegendItem\n }); };\n\n var lineSeries = function () { return ({\n width: 2,\n legendItem: lineSeriesLegendItem\n }); };\n\n var ohlcSeries = function () { return ({\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\n var radarAreaSeries = function () { return ({\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\n var radarLineSeries = function () { return ({\n markers: {\n visible: false\n },\n legendItem: lineSeriesLegendItem,\n width: 2\n }); };\n\n var rangeBarSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n legendItem: areaNoMarkersSeriesLegendItem\n }); };\n\n var rangeColumnSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n legendItem: areaNoMarkersSeriesLegendItem\n }); };\n\n var scatterLineSeries = function () { return ({\n width: 1,\n legendItem: lineSeriesLegendItem\n }); };\n\n var waterfallSeries = function () { return ({\n gap: 0.5,\n line: {\n color: BLACK$$1,\n width: 1\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n spacing: BAR_SPACING\n }); };\n\n var pieSeries = function () { return ({\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\n var funnelSeries = function () { return ({\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\n var pyramidSeries = funnelSeries;\n\n var heatmapSeries = function () { return ({\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\n var trendlineSeriesDefaults = function (options) { return $.extend({\n color: INHERIT,\n trendline: {},\n markers: {\n visible: false\n },\n width: 1,\n dashType: 'longDash',\n legendItem: lineSeriesLegendItem\n }, options); };\n\n var seriesDefaults = function (options) { return ({\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\n var title = function () { return ({\n font: SANS16\n }); };\n\n var subtitle = function () { return ({\n font: SANS12\n }); };\n\n var legend = function () { return ({\n labels: {\n font: SANS12\n }\n }); };\n\n var baseTheme = function (options) {\n if (options === void 0) { options = {}; }\n\n return ({\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 kendo.deepExtend(kendo.dataviz, {\n chartBaseTheme: baseTheme\n });\n\n })(window.kendo.jQuery);\n\n (function($) {\n var cache;\n var SERIES_COLORS = 30;\n\n function seriesTemplate() {\n var template =\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n\n for (var i = 0; i < SERIES_COLORS; i++) {\n template += '
    ';\n }\n\n return template;\n }\n\n function autoTheme(force) {\n if (!force && cache) {\n return cache;\n }\n\n var theme = { chart: kendo.dataviz.chartBaseTheme() };\n var hook = $(\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 seriesTemplate() +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ').hide().appendTo(document.body);\n\n function mapColor(key, varName) {\n set(key, queryStyle(varName, \"backgroundColor\"));\n }\n\n function queryStyle(varName, prop) {\n return hook.find(\".k-var--\" + varName).css(prop);\n }\n\n function set(path, value) {\n var store = theme;\n var parts = path.split('.');\n var key = parts.shift();\n\n while (parts.length > 0) {\n store = store[key] = store[key] || {};\n key = parts.shift();\n }\n\n store[key] = value;\n }\n\n function setInactiveOpacity(seriesTypes, selector) {\n var inactiveOpacity = parseFloat(queryStyle(selector, \"opacity\"));\n if (!isNaN(inactiveOpacity) && inactiveOpacity < 1) {\n seriesTypes.forEach(function(type) {\n set(\"chart.seriesDefaults.\" + type + \".highlight.inactiveOpacity\", inactiveOpacity);\n });\n }\n }\n\n (function setColors() {\n mapColor(\"chart.axisDefaults.crosshair.color\", \"chart-crosshair-background\");\n mapColor(\"chart.axisDefaults.labels.color\", \"normal-text-color\");\n mapColor(\"chart.axisDefaults.line.color\", \"chart-major-lines\");\n mapColor(\"chart.axisDefaults.majorGridLines.color\", \"chart-major-lines\");\n mapColor(\"chart.axisDefaults.minorGridLines.color\", \"chart-minor-lines\");\n mapColor(\"chart.axisDefaults.notes.icon.background\", \"chart-notes-background\");\n mapColor(\"chart.axisDefaults.notes.icon.border.color\", \"chart-notes-border\");\n mapColor(\"chart.axisDefaults.notes.line.color\", \"chart-notes-lines\");\n mapColor(\"chart.axisDefaults.title.color\", \"normal-text-color\");\n mapColor('chart.chartArea.background', 'background');\n mapColor(\"chart.legend.inactiveItems.labels.color\", \"chart-inactive\");\n mapColor(\"chart.legend.inactiveItems.markers.color\", \"chart-inactive\");\n mapColor(\"chart.legend.labels.color\", \"normal-text-color\");\n mapColor(\"chart.seriesDefaults.boxPlot.downColor\", \"chart-major-lines\");\n mapColor(\"chart.seriesDefaults.boxPlot.mean.color\", \"base\");\n mapColor(\"chart.seriesDefaults.boxPlot.median.color\", \"base\");\n mapColor(\"chart.seriesDefaults.boxPlot.whiskers.color\", \"primary\");\n mapColor(\"chart.seriesDefaults.bullet.target.color\", \"primary\");\n mapColor(\"chart.seriesDefaults.candlestick.downColor\", \"normal-text-color\");\n mapColor(\"chart.seriesDefaults.candlestick.line.color\", \"normal-text-color\");\n mapColor(\"chart.seriesDefaults.errorBars.color\", \"chart-error-bars-background\");\n mapColor(\"chart.seriesDefaults.horizontalWaterfall.line.color\", \"chart-major-lines\");\n mapColor(\"chart.seriesDefaults.icon.border.color\", \"chart-major-lines\");\n mapColor(\"chart.seriesDefaults.labels.background\", \"background\");\n mapColor(\"chart.seriesDefaults.labels.color\", \"normal-text-color\");\n mapColor(\"chart.seriesDefaults.notes.icon.background\", \"chart-notes-background\");\n mapColor(\"chart.seriesDefaults.notes.icon.border.color\", \"chart-notes-border\");\n mapColor(\"chart.seriesDefaults.notes.line.color\", \"chart-notes-lines\");\n mapColor(\"chart.seriesDefaults.verticalBoxPlot.downColor\", \"chart-major-lines\");\n mapColor(\"chart.seriesDefaults.verticalBoxPlot.mean.color\", \"base\");\n mapColor(\"chart.seriesDefaults.verticalBoxPlot.median.color\", \"base\");\n mapColor(\"chart.seriesDefaults.verticalBoxPlot.whiskers.color\", \"primary\");\n mapColor(\"chart.seriesDefaults.verticalBullet.target.color\", \"primary\");\n mapColor(\"chart.seriesDefaults.waterfall.line.color\", \"chart-major-lines\");\n mapColor(\"chart.title.color\", \"normal-text-color\");\n mapColor(\"chart.subtitle.color\", \"normal-text-color\");\n\n mapColor(\"diagram.shapeDefaults.fill.color\", \"primary\");\n mapColor(\"diagram.shapeDefaults.content.color\", \"primary-contrast\");\n mapColor(\"diagram.shapeDefaults.connectorDefaults.fill.color\", \"normal-text-color\");\n mapColor(\"diagram.shapeDefaults.connectorDefaults.stroke.color\", \"primary-contrast\");\n mapColor(\"diagram.shapeDefaults.connectorDefaults.hover.fill.color\", \"primary-contrast\");\n mapColor(\"diagram.shapeDefaults.connectorDefaults.hover.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.editable.resize.handles.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.editable.resize.handles.fill.color\", \"normal-background\");\n mapColor(\"diagram.editable.resize.handles.hover.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.editable.resize.handles.hover.fill.color\", \"normal-text-color\");\n mapColor(\"diagram.selectable.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.connectionDefaults.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.connectionDefaults.content.color\", \"normal-text-color\");\n mapColor(\"diagram.connectionDefaults.selection.handles.fill.color\", \"primary-contrast\");\n mapColor(\"diagram.connectionDefaults.selection.handles.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.connectionDefaults.selection.stroke.color\", \"normal-text-color\");\n\n mapColor(\"gauge.pointer.color\", \"gauge-pointer\");\n mapColor(\"gauge.scale.labels.color\", \"normal-text-color\");\n mapColor(\"gauge.scale.minorTicks.color\", \"normal-text-color\");\n mapColor(\"gauge.scale.majorTicks.color\", \"normal-text-color\");\n mapColor(\"gauge.scale.line.color\", \"normal-text-color\");\n mapColor(\"gauge.scale.rangePlaceholderColor\", \"gauge-track\");\n\n var opacity = parseFloat(queryStyle(\"chart-area-opacity\", \"opacity\"));\n if (!isNaN(opacity)) {\n set(\"chart.seriesDefaults.area.opacity\", opacity);\n set(\"chart.seriesDefaults.radarArea.opacity\", opacity);\n set(\"chart.seriesDefaults.verticalArea.opacity\", opacity);\n set(\"chart.seriesDefaults.labels.opacity\", opacity);\n }\n\n setInactiveOpacity([\"area\", \"verticalArea\"], \"chart-area-inactive-opacity\");\n setInactiveOpacity([\"line\", \"verticalLine\"], \"chart-line-inactive-opacity\");\n })();\n\n (function setSizes() {\n set(\"diagram.connectionDefaults.selection.handles.width\", 8);\n set(\"diagram.connectionDefaults.selection.handles.height\", 8);\n })();\n\n (function setFonts() {\n function font(varName) {\n return queryStyle(varName, \"fontWeight\") + \" \" +\n queryStyle(varName, \"fontSize\") + \" \" +\n queryStyle(varName, \"fontFamily\");\n }\n\n var defaultFont = font(\"chart-font\");\n var titleFont = font(\"chart-title-font\");\n var paneTitleFont = font(\"chart-pane-title-font\");\n var labelFont = font(\"chart-label-font\");\n\n set(\"chart.axisDefaults.labels.font\", labelFont);\n set(\"chart.axisDefaults.notes.label.font\", defaultFont);\n set(\"chart.axisDefaults.title.font\", defaultFont);\n set(\"chart.legend.labels.font\", defaultFont);\n set(\"chart.seriesDefaults.labels.font\", labelFont);\n set(\"chart.seriesDefaults.notes.label.font\", defaultFont);\n set(\"chart.title.font\", titleFont);\n set(\"chart.subtitle.font\", paneTitleFont);\n set(\"chart.paneDefaults.title.font\", paneTitleFont);\n })();\n\n (function setSeriesColors() {\n function letterPos(letter) {\n return letter.toLowerCase().charCodeAt(0) - \"a\".charCodeAt(0);\n }\n\n function seriesPos(name) {\n var alpha = name.match(/series-([a-z])$/);\n if (alpha !== null) {\n return letterPos(alpha[1]);\n }\n\n var num = name.split('--series-')[1];\n return parseInt(num, 10) - 1;\n }\n\n var series = $(\".k-var--series div\").toArray();\n var unsetColor = $('.k-var--series-unset').css(\"backgroundColor\");\n var seriesColors = series.reduce(\n function(arr, el) {\n var pos = seriesPos(el.className);\n var color = $(el).css(\"backgroundColor\");\n\n if (color !== unsetColor) {\n arr[pos] = color;\n }\n\n return arr;\n },\n [] // Will populate the series colors in this array\n );\n\n set(\"chart.seriesColors\", seriesColors);\n })();\n\n hook.remove();\n\n cache = theme;\n\n return theme;\n }\n\n kendo.dataviz.autoTheme = autoTheme;\n })(window.kendo.jQuery);\n\n (function($) {\n\n // Imports ================================================================\n var kendo = window.kendo,\n ui = kendo.dataviz.ui,\n deepExtend = kendo.deepExtend;\n\n // Constants ==============================================================\n var BLACK = \"#000\",\n SANS = \"Arial,Helvetica,sans-serif\",\n SANS12 = \"12px \" + SANS,\n WHITE = \"#fff\";\n\n var chartBaseTheme = kendo.dataviz.chartBaseTheme({\n gradients: true\n });\n\n var gaugeBaseTheme = {\n scale: {\n labels: {\n font: SANS12\n }\n }\n };\n\n var diagramBaseTheme = {\n shapeDefaults: {\n hover: {\n opacity: 0.2\n },\n stroke: {\n width: 0\n }\n },\n editable: {\n resize: {\n handles: {\n width: 7,\n height: 7\n }\n }\n },\n selectable: {\n stroke: {\n width: 1,\n dashType: \"dot\"\n }\n },\n connectionDefaults: {\n stroke: {\n width: 2\n },\n selection: {\n handles: {\n width: 8,\n height: 8\n }\n },\n editable: {\n tools: [\"edit\", \"delete\"]\n }\n }\n };\n\n var themes = ui.themes,\n registerTheme = ui.registerTheme = function(themeName, options) {\n var result = {};\n // Apply base theme\n result.chart = deepExtend({}, chartBaseTheme, options.chart);\n result.gauge = deepExtend({}, gaugeBaseTheme, options.gauge);\n result.diagram = deepExtend({}, diagramBaseTheme, options.diagram);\n result.treeMap = deepExtend({}, options.treeMap);\n\n // Copy the line/area chart settings for their vertical counterparts\n var defaults = result.chart.seriesDefaults;\n defaults.verticalLine = deepExtend({}, defaults.line);\n defaults.verticalArea = deepExtend({}, defaults.area);\n defaults.rangeArea = deepExtend({}, defaults.area);\n defaults.verticalRangeArea = deepExtend({}, defaults.rangeArea);\n defaults.verticalBoxPlot = deepExtend({}, defaults.boxPlot);\n defaults.polarArea = deepExtend({}, defaults.radarArea);\n defaults.polarLine = deepExtend({}, defaults.radarLine);\n\n themes[themeName] = result;\n };\n\n registerTheme(\"black\", {\n chart: {\n title: {\n color: WHITE\n },\n subtitle: {\n color: WHITE\n },\n legend: {\n labels: {\n color: WHITE\n },\n inactiveItems: {\n labels: {\n color: \"#919191\"\n },\n markers: {\n color: \"#919191\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: WHITE\n },\n errorBars: {\n color: WHITE\n },\n notes: {\n icon: {\n background: \"#3b3b3b\",\n border: {\n color: \"#8e8e8e\"\n }\n },\n label: {\n color: WHITE\n },\n line: {\n color: \"#8e8e8e\"\n }\n },\n pie: {\n overlay: {\n gradient: \"sharpBevel\"\n }\n },\n donut: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n line: {\n markers: {\n background: \"#3d3d3d\"\n }\n },\n scatter: {\n markers: {\n background: \"#3d3d3d\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#3d3d3d\"\n }\n },\n waterfall: {\n line: {\n color: \"#8e8e8e\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#8e8e8e\"\n }\n },\n candlestick: {\n downColor: \"#555\",\n line: {\n color: WHITE\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: WHITE,\n opacity: 0.2\n }\n }\n },\n ohlc: {\n line: {\n color: WHITE\n }\n }\n },\n chartArea: {\n background: \"#3d3d3d\"\n },\n seriesColors: [\"#0081da\", \"#3aafff\", \"#99c900\", \"#ffeb3d\", \"#b20753\", \"#ff4195\"],\n axisDefaults: {\n line: {\n color: \"#8e8e8e\"\n },\n labels: {\n color: WHITE\n },\n majorGridLines: {\n color: \"#545454\"\n },\n minorGridLines: {\n color: \"#454545\"\n },\n title: {\n color: WHITE\n },\n crosshair: {\n color: \"#8e8e8e\"\n },\n notes: {\n icon: {\n background: \"#3b3b3b\",\n border: {\n color: \"#8e8e8e\"\n }\n },\n label: {\n color: WHITE\n },\n line: {\n color: \"#8e8e8e\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#0070e4\"\n },\n scale: {\n rangePlaceholderColor: \"#1d1d1d\",\n labels: {\n color: WHITE\n },\n minorTicks: {\n color: WHITE\n },\n majorTicks: {\n color: WHITE\n },\n line: {\n color: WHITE\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#0066cc\"\n },\n connectorDefaults: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#384049\"\n },\n hover: {\n fill: {\n color: \"#3d3d3d\"\n },\n stroke: {\n color: \"#efefef\"\n }\n }\n },\n content: {\n color: WHITE\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: \"#3d3d3d\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: WHITE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: WHITE\n },\n fill: {\n color: WHITE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: WHITE\n }\n },\n connectionDefaults: {\n stroke: {\n color: WHITE\n },\n content: {\n color: WHITE\n },\n selection: {\n handles: {\n fill: {\n color: \"#3d3d3d\"\n },\n stroke: {\n color: \"#efefef\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#0081da\", \"#314b5c\"],\n [\"#3aafff\", \"#3c5464\"],\n [\"#99c900\", \"#4f5931\"],\n [\"#ffeb3d\", \"#64603d\"],\n [\"#b20753\", \"#543241\"],\n [\"#ff4195\", \"#643e4f\"]]\n }\n });\n\n registerTheme(\"blueopal\", {\n chart: {\n title: {\n color: \"#293135\"\n },\n subtitle: {\n color: \"#293135\"\n },\n legend: {\n labels: {\n color: \"#293135\"\n },\n inactiveItems: {\n labels: {\n color: \"#27A5BA\"\n },\n markers: {\n color: \"#27A5BA\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: BLACK,\n background: WHITE,\n opacity: 0.5\n },\n errorBars: {\n color: \"#293135\"\n },\n candlestick: {\n downColor: \"#c4d0d5\",\n line: {\n color: \"#9aabb2\"\n }\n },\n waterfall: {\n line: {\n color: \"#9aabb2\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#9aabb2\"\n }\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#9aabb2\"\n }\n },\n label: {\n color: \"#293135\"\n },\n line: {\n color: \"#9aabb2\"\n }\n }\n },\n seriesColors: [\"#0069a5\", \"#0098ee\", \"#7bd2f6\", \"#ffb800\", \"#ff8517\", \"#e34a00\"],\n axisDefaults: {\n line: {\n color: \"#9aabb2\"\n },\n labels: {\n color: \"#293135\"\n },\n majorGridLines: {\n color: \"#c4d0d5\"\n },\n minorGridLines: {\n color: \"#edf1f2\"\n },\n title: {\n color: \"#293135\"\n },\n crosshair: {\n color: \"#9aabb2\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#9aabb2\"\n }\n },\n label: {\n color: \"#293135\"\n },\n line: {\n color: \"#9aabb2\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#005c83\"\n },\n scale: {\n rangePlaceholderColor: \"#daecf4\",\n\n labels: {\n color: \"#293135\"\n },\n minorTicks: {\n color: \"#293135\"\n },\n majorTicks: {\n color: \"#293135\"\n },\n line: {\n color: \"#293135\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#7ec6e3\"\n },\n connectorDefaults: {\n fill: {\n color: \"#003f59\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#003f59\"\n }\n }\n },\n content: {\n color: \"#293135\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#003f59\"\n },\n hover: {\n fill: {\n color: \"#003f59\"\n },\n stroke: {\n color: \"#003f59\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#003f59\"\n },\n fill: {\n color: \"#003f59\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#003f59\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#003f59\"\n },\n content: {\n color: \"#293135\"\n },\n selection: {\n handles: {\n fill: {\n color: \"#3d3d3d\"\n },\n stroke: {\n color: \"#efefef\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#0069a5\", \"#bad7e7\"],\n [\"#0098ee\", \"#b9e0f5\"],\n [\"#7bd2f6\", \"#ceeaf6\"],\n [\"#ffb800\", \"#e6e3c4\"],\n [\"#ff8517\", \"#e4d8c8\"],\n [\"#e34a00\", \"#ddccc2\"]\n ]\n }\n });\n\n registerTheme(\"highcontrast\", {\n chart: {\n title: {\n color: \"#ffffff\"\n },\n subtitle: {\n color: \"#ffffff\"\n },\n legend: {\n labels: {\n color: \"#ffffff\"\n },\n inactiveItems: {\n labels: {\n color: \"#66465B\"\n },\n markers: {\n color: \"#66465B\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#ffffff\"\n },\n errorBars: {\n color: \"#ffffff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#ffffff\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#ffffff\"\n }\n },\n pie: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n donut: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n line: {\n markers: {\n background: \"#2c232b\"\n }\n },\n scatter: {\n markers: {\n background: \"#2c232b\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#2c232b\"\n }\n },\n area: {\n opacity: 0.5\n },\n waterfall: {\n line: {\n color: \"#ffffff\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#ffffff\"\n }\n },\n candlestick: {\n downColor: \"#664e62\",\n line: {\n color: \"#ffffff\"\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: \"#ffffff\",\n opacity: 1\n }\n }\n },\n ohlc: {\n line: {\n color: \"#ffffff\"\n }\n }\n },\n chartArea: {\n background: \"#2c232b\"\n },\n seriesColors: [\"#a7008f\", \"#ffb800\", \"#3aafff\", \"#99c900\", \"#b20753\", \"#ff4195\"],\n axisDefaults: {\n line: {\n color: \"#ffffff\"\n },\n labels: {\n color: \"#ffffff\"\n },\n majorGridLines: {\n color: \"#664e62\"\n },\n minorGridLines: {\n color: \"#4f394b\"\n },\n title: {\n color: \"#ffffff\"\n },\n crosshair: {\n color: \"#ffffff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#ffffff\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#ffffff\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#a7008f\"\n },\n scale: {\n rangePlaceholderColor: \"#2c232b\",\n\n labels: {\n color: \"#ffffff\"\n },\n minorTicks: {\n color: \"#2c232b\"\n },\n majorTicks: {\n color: \"#664e62\"\n },\n line: {\n color: \"#ffffff\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#a7018f\"\n },\n connectorDefaults: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#2c232b\"\n },\n hover: {\n fill: {\n color: \"#2c232b\"\n },\n stroke: {\n color: WHITE\n }\n }\n },\n content: {\n color: WHITE\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: \"#2c232b\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: WHITE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: WHITE\n },\n fill: {\n color: WHITE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: WHITE\n }\n },\n connectionDefaults: {\n stroke: {\n color: WHITE\n },\n content: {\n color: WHITE\n },\n selection: {\n handles: {\n fill: {\n color: \"#2c232b\"\n },\n stroke: {\n color: WHITE\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#a7008f\", \"#451c3f\"],\n [\"#ffb800\", \"#564122\"],\n [\"#3aafff\", \"#2f3f55\"],\n [\"#99c900\", \"#424422\"],\n [\"#b20753\", \"#471d33\"],\n [\"#ff4195\", \"#562940\"]\n ]\n }\n });\n\n registerTheme(\"default\", {\n chart: {\n title: {\n color: \"#8e8e8e\"\n },\n subtitle: {\n color: \"#8e8e8e\"\n },\n legend: {\n labels: {\n color: \"#232323\"\n },\n inactiveItems: {\n labels: {\n color: \"#919191\"\n },\n markers: {\n color: \"#919191\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: BLACK,\n background: WHITE,\n opacity: 0.5\n },\n errorBars: {\n color: \"#232323\"\n },\n candlestick: {\n downColor: \"#dedede\",\n line: {\n color: \"#8d8d8d\"\n }\n },\n waterfall: {\n line: {\n color: \"#8e8e8e\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#8e8e8e\"\n }\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#8e8e8e\"\n }\n },\n label: {\n color: \"#232323\"\n },\n line: {\n color: \"#8e8e8e\"\n }\n }\n },\n seriesColors: [\"#ff6800\", \"#a0a700\", \"#ff8d00\", \"#678900\", \"#ffb53c\", \"#396000\"],\n axisDefaults: {\n line: {\n color: \"#8e8e8e\"\n },\n labels: {\n color: \"#232323\"\n },\n minorGridLines: {\n color: \"#f0f0f0\"\n },\n majorGridLines: {\n color: \"#dfdfdf\"\n },\n title: {\n color: \"#232323\"\n },\n crosshair: {\n color: \"#8e8e8e\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#8e8e8e\"\n }\n },\n label: {\n color: \"#232323\"\n },\n line: {\n color: \"#8e8e8e\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#ea7001\"\n },\n scale: {\n rangePlaceholderColor: \"#dedede\",\n\n labels: {\n color: \"#2e2e2e\"\n },\n minorTicks: {\n color: \"#2e2e2e\"\n },\n majorTicks: {\n color: \"#2e2e2e\"\n },\n line: {\n color: \"#2e2e2e\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#e15613\"\n },\n connectorDefaults: {\n fill: {\n color: \"#282828\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#282828\"\n }\n }\n },\n content: {\n color: \"#2e2e2e\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#282828\"\n },\n hover: {\n fill: {\n color: \"#282828\"\n },\n stroke: {\n color: \"#282828\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#282828\"\n },\n fill: {\n color: \"#282828\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#a7018f\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#282828\"\n },\n content: {\n color: \"#2e2e2e\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#282828\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#ff6800\", \"#edcfba\"],\n [\"#a0a700\", \"#dadcba\"],\n [\"#ff8d00\", \"#edd7ba\"],\n [\"#678900\", \"#cfd6ba\"],\n [\"#ffb53c\", \"#eddfc6\"],\n [\"#396000\", \"#c6ceba\"]\n ]\n }\n });\n\n registerTheme(\"silver\", {\n chart: {\n title: {\n color: \"#4e5968\"\n },\n subtitle: {\n color: \"#4e5968\"\n },\n legend: {\n labels: {\n color: \"#4e5968\"\n },\n inactiveItems: {\n labels: {\n color: \"#B1BCC8\"\n },\n markers: {\n color: \"#B1BCC8\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#293135\",\n background: \"#eaeaec\",\n opacity: 0.5\n },\n errorBars: {\n color: \"#4e5968\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#4e5968\"\n }\n },\n label: {\n color: \"#4e5968\"\n },\n line: {\n color: \"#4e5968\"\n }\n },\n line: {\n markers: {\n background: \"#eaeaec\"\n }\n },\n scatter: {\n markers: {\n background: \"#eaeaec\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#eaeaec\"\n }\n },\n pie: {\n connectors: {\n color: \"#A6B1C0\"\n }\n },\n donut: {\n connectors: {\n color: \"#A6B1C0\"\n }\n },\n waterfall: {\n line: {\n color: \"#a6b1c0\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#a6b1c0\"\n }\n },\n candlestick: {\n downColor: \"#a6afbe\"\n }\n },\n chartArea: {\n background: \"#eaeaec\"\n },\n seriesColors: [\"#007bc3\", \"#76b800\", \"#ffae00\", \"#ef4c00\", \"#a419b7\", \"#430B62\"],\n axisDefaults: {\n line: {\n color: \"#a6b1c0\"\n },\n labels: {\n color: \"#4e5968\"\n },\n majorGridLines: {\n color: \"#dcdcdf\"\n },\n minorGridLines: {\n color: \"#eeeeef\"\n },\n title: {\n color: \"#4e5968\"\n },\n crosshair: {\n color: \"#a6b1c0\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#4e5968\"\n }\n },\n label: {\n color: \"#4e5968\"\n },\n line: {\n color: \"#4e5968\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#0879c0\"\n },\n scale: {\n rangePlaceholderColor: \"#f3f3f4\",\n\n labels: {\n color: \"#515967\"\n },\n minorTicks: {\n color: \"#515967\"\n },\n majorTicks: {\n color: \"#515967\"\n },\n line: {\n color: \"#515967\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#1c82c2\"\n },\n connectorDefaults: {\n fill: {\n color: \"#515967\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#282828\"\n }\n }\n },\n content: {\n color: \"#515967\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#515967\"\n },\n hover: {\n fill: {\n color: \"#515967\"\n },\n stroke: {\n color: \"#515967\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#515967\"\n },\n fill: {\n color: \"#515967\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#515967\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#515967\"\n },\n content: {\n color: \"#515967\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#515967\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#007bc3\", \"#c2dbea\"],\n [\"#76b800\", \"#dae7c3\"],\n [\"#ffae00\", \"#f5e5c3\"],\n [\"#ef4c00\", \"#f2d2c3\"],\n [\"#a419b7\", \"#e3c7e8\"],\n [\"#430b62\", \"#d0c5d7\"]\n ]\n }\n });\n\n registerTheme(\"metro\", {\n chart: {\n title: {\n color: \"#777777\"\n },\n subtitle: {\n color: \"#777777\"\n },\n legend: {\n labels: {\n color: \"#777777\"\n },\n inactiveItems: {\n labels: {\n color: \"#CBCBCB\"\n },\n markers: {\n color: \"#CBCBCB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: BLACK\n },\n errorBars: {\n color: \"#777777\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#777777\"\n }\n },\n label: {\n color: \"#777777\"\n },\n line: {\n color: \"#777777\"\n }\n },\n candlestick: {\n downColor: \"#c7c7c7\",\n line: {\n color: \"#787878\"\n }\n },\n waterfall: {\n line: {\n color: \"#c7c7c7\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#c7c7c7\"\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: [\"#8ebc00\", \"#309b46\", \"#25a0da\", \"#ff6900\", \"#e61e26\", \"#d8e404\", \"#16aba9\", \"#7e51a1\", \"#313131\", \"#ed1691\"],\n axisDefaults: {\n line: {\n color: \"#c7c7c7\"\n },\n labels: {\n color: \"#777777\"\n },\n minorGridLines: {\n color: \"#c7c7c7\"\n },\n majorGridLines: {\n color: \"#c7c7c7\"\n },\n title: {\n color: \"#777777\"\n },\n crosshair: {\n color: \"#c7c7c7\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#777777\"\n }\n },\n label: {\n color: \"#777777\"\n },\n line: {\n color: \"#777777\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#8ebc00\"\n },\n scale: {\n rangePlaceholderColor: \"#e6e6e6\",\n\n labels: {\n color: \"#777\"\n },\n minorTicks: {\n color: \"#777\"\n },\n majorTicks: {\n color: \"#777\"\n },\n line: {\n color: \"#777\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#8ebc00\"\n },\n connectorDefaults: {\n fill: {\n color: BLACK\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: BLACK\n }\n }\n },\n content: {\n color: \"#777\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#787878\"\n },\n hover: {\n fill: {\n color: \"#787878\"\n },\n stroke: {\n color: \"#787878\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#787878\"\n },\n fill: {\n color: \"#787878\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#515967\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#787878\"\n },\n content: {\n color: \"#777\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#787878\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#8ebc00\", \"#e8f2cc\"],\n [\"#309b46\", \"#d6ebda\"],\n [\"#25a0da\", \"#d3ecf8\"],\n [\"#ff6900\", \"#ffe1cc\"],\n [\"#e61e26\", \"#fad2d4\"],\n [\"#d8e404\", \"#f7facd\"],\n [\"#16aba9\", \"#d0eeee\"],\n [\"#7e51a1\", \"#e5dcec\"],\n [\"#313131\", \"#d6d6d6\"],\n [\"#ed1691\", \"#fbd0e9\"]\n ]\n }\n });\n\n registerTheme(\"metroblack\", {\n chart: {\n title: {\n color: \"#ffffff\"\n },\n subtitle: {\n color: \"#ffffff\"\n },\n legend: {\n labels: {\n color: \"#ffffff\"\n },\n inactiveItems: {\n labels: {\n color: \"#797979\"\n },\n markers: {\n color: \"#797979\"\n }\n }\n },\n seriesDefaults: {\n border: {\n _brightness: 1\n },\n labels: {\n color: \"#ffffff\"\n },\n errorBars: {\n color: \"#ffffff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#cecece\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#cecece\"\n }\n },\n line: {\n markers: {\n background: \"#0e0e0e\"\n }\n },\n bubble: {\n opacity: 0.6\n },\n scatter: {\n markers: {\n background: \"#0e0e0e\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#0e0e0e\"\n }\n },\n candlestick: {\n downColor: \"#828282\",\n line: {\n color: \"#ffffff\"\n }\n },\n waterfall: {\n line: {\n color: \"#cecece\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#cecece\"\n }\n },\n overlay: {\n gradient: \"none\"\n }\n },\n chartArea: {\n background: \"#0e0e0e\"\n },\n seriesColors: [\"#00aba9\", \"#309b46\", \"#8ebc00\", \"#ff6900\", \"#e61e26\", \"#d8e404\", \"#25a0da\", \"#7e51a1\", \"#313131\", \"#ed1691\"],\n axisDefaults: {\n line: {\n color: \"#cecece\"\n },\n labels: {\n color: \"#ffffff\"\n },\n minorGridLines: {\n color: \"#2d2d2d\"\n },\n majorGridLines: {\n color: \"#333333\"\n },\n title: {\n color: \"#ffffff\"\n },\n crosshair: {\n color: \"#cecece\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#cecece\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#cecece\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#00aba9\"\n },\n scale: {\n rangePlaceholderColor: \"#2d2d2d\",\n\n labels: {\n color: \"#ffffff\"\n },\n minorTicks: {\n color: \"#333333\"\n },\n majorTicks: {\n color: \"#cecece\"\n },\n line: {\n color: \"#cecece\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#00aba9\"\n },\n connectorDefaults: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#0e0e0e\"\n },\n hover: {\n fill: {\n color: \"#0e0e0e\"\n },\n stroke: {\n color: WHITE\n }\n }\n },\n content: {\n color: WHITE\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: \"#0e0e0e\"\n },\n stroke: {\n color: \"#787878\"\n },\n hover: {\n fill: {\n color: \"#787878\"\n },\n stroke: {\n color: \"#787878\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: WHITE\n },\n fill: {\n color: WHITE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#787878\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: WHITE\n },\n content: {\n color: WHITE\n },\n selection: {\n handles: {\n fill: {\n color: \"#0e0e0e\"\n },\n stroke: {\n color: WHITE\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#00aba9\", \"#0b2d2d\"],\n [\"#309b46\", \"#152a19\"],\n [\"#8ebc00\", \"#28310b\"],\n [\"#ff6900\", \"#3e200b\"],\n [\"#e61e26\", \"#391113\"],\n [\"#d8e404\", \"#36390c\"],\n [\"#25a0da\", \"#132b37\"],\n [\"#7e51a1\", \"#241b2b\"],\n [\"#313131\", \"#151515\"],\n [\"#ed1691\", \"#3b1028\"]\n ]\n }\n });\n\n registerTheme(\"moonlight\", {\n chart: {\n title: {\n color: \"#ffffff\"\n },\n subtitle: {\n color: \"#ffffff\"\n },\n legend: {\n labels: {\n color: \"#ffffff\"\n },\n inactiveItems: {\n labels: {\n color: \"#A1A7AB\"\n },\n markers: {\n color: \"#A1A7AB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#ffffff\"\n },\n errorBars: {\n color: \"#ffffff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#8c909e\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#8c909e\"\n }\n },\n pie: {\n overlay: {\n gradient: \"sharpBevel\"\n }\n },\n donut: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n line: {\n markers: {\n background: \"#212a33\"\n }\n },\n bubble: {\n opacity: 0.6\n },\n scatter: {\n markers: {\n background: \"#212a33\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#212a33\"\n }\n },\n area: {\n opacity: 0.3\n },\n candlestick: {\n downColor: \"#757d87\",\n line: {\n color: \"#ea9d06\"\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: WHITE,\n opacity: 0.2\n }\n }\n },\n waterfall: {\n line: {\n color: \"#8c909e\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#8c909e\"\n }\n },\n ohlc: {\n line: {\n color: \"#ea9d06\"\n }\n }\n },\n chartArea: {\n background: \"#212a33\"\n },\n seriesColors: [\"#ffca08\", \"#ff710f\", \"#ed2e24\", \"#ff9f03\", \"#e13c02\", \"#a00201\"],\n axisDefaults: {\n line: {\n color: \"#8c909e\"\n },\n minorTicks: {\n color: \"#8c909e\"\n },\n majorTicks: {\n color: \"#8c909e\"\n },\n labels: {\n color: \"#ffffff\"\n },\n majorGridLines: {\n color: \"#3e424d\"\n },\n minorGridLines: {\n color: \"#2f3640\"\n },\n title: {\n color: \"#ffffff\"\n },\n crosshair: {\n color: \"#8c909e\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#8c909e\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#8c909e\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#f4af03\"\n },\n scale: {\n rangePlaceholderColor: \"#2f3640\",\n\n labels: {\n color: WHITE\n },\n minorTicks: {\n color: \"#8c909e\"\n },\n majorTicks: {\n color: \"#8c909e\"\n },\n line: {\n color: \"#8c909e\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#f3ae03\"\n },\n connectorDefaults: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#414550\"\n },\n hover: {\n fill: {\n color: \"#414550\"\n },\n stroke: {\n color: WHITE\n }\n }\n },\n content: {\n color: WHITE\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: \"#414550\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: WHITE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: WHITE\n },\n fill: {\n color: WHITE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: WHITE\n }\n },\n connectionDefaults: {\n stroke: {\n color: WHITE\n },\n content: {\n color: WHITE\n },\n selection: {\n handles: {\n fill: {\n color: \"#414550\"\n },\n stroke: {\n color: WHITE\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#ffca08\", \"#4e4b2b\"],\n [\"#ff710f\", \"#4e392d\"],\n [\"#ed2e24\", \"#4b2c31\"],\n [\"#ff9f03\", \"#4e422a\"],\n [\"#e13c02\", \"#482e2a\"],\n [\"#a00201\", \"#3b232a\"]\n ]\n }\n });\n\n registerTheme(\"uniform\", {\n chart: {\n title: {\n color: \"#686868\"\n },\n subtitle: {\n color: \"#686868\"\n },\n legend: {\n labels: {\n color: \"#686868\"\n },\n inactiveItems: {\n labels: {\n color: \"#B6B6B6\"\n },\n markers: {\n color: \"#B6B6B6\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#686868\"\n },\n errorBars: {\n color: \"#686868\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#9e9e9e\"\n }\n },\n label: {\n color: \"#686868\"\n },\n line: {\n color: \"#9e9e9e\"\n }\n },\n pie: {\n overlay: {\n gradient: \"sharpBevel\"\n }\n },\n donut: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n line: {\n markers: {\n background: \"#ffffff\"\n }\n },\n bubble: {\n opacity: 0.6\n },\n scatter: {\n markers: {\n background: \"#ffffff\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#ffffff\"\n }\n },\n area: {\n opacity: 0.3\n },\n candlestick: {\n downColor: \"#cccccc\",\n line: {\n color: \"#cccccc\"\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: \"#cccccc\",\n opacity: 0.2\n }\n }\n },\n waterfall: {\n line: {\n color: \"#9e9e9e\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#9e9e9e\"\n }\n },\n ohlc: {\n line: {\n color: \"#cccccc\"\n }\n }\n },\n chartArea: {\n background: \"#ffffff\"\n },\n seriesColors: [\"#527aa3\", \"#6f91b3\", \"#8ca7c2\", \"#a8bdd1\", \"#c5d3e0\", \"#e2e9f0\"],\n axisDefaults: {\n line: {\n color: \"#9e9e9e\"\n },\n minorTicks: {\n color: \"#aaaaaa\"\n },\n majorTicks: {\n color: \"#888888\"\n },\n labels: {\n color: \"#686868\"\n },\n majorGridLines: {\n color: \"#dadada\"\n },\n minorGridLines: {\n color: \"#e7e7e7\"\n },\n title: {\n color: \"#686868\"\n },\n crosshair: {\n color: \"#9e9e9e\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#9e9e9e\"\n }\n },\n label: {\n color: \"#686868\"\n },\n line: {\n color: \"#9e9e9e\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#527aa3\"\n },\n scale: {\n rangePlaceholderColor: \"#e7e7e7\",\n\n labels: {\n color: \"#686868\"\n },\n minorTicks: {\n color: \"#aaaaaa\"\n },\n majorTicks: {\n color: \"#888888\"\n },\n line: {\n color: \"#9e9e9e\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#d1d1d1\"\n },\n connectorDefaults: {\n fill: {\n color: \"#686868\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#686868\"\n }\n }\n },\n content: {\n color: \"#686868\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#686868\"\n },\n hover: {\n fill: {\n color: \"#686868\"\n },\n stroke: {\n color: \"#686868\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#686868\"\n },\n fill: {\n color: \"#686868\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#686868\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#686868\"\n },\n content: {\n color: \"#686868\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#686868\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#527aa3\", \"#d0d8e1\"],\n [\"#6f91b3\", \"#d6dde4\"],\n [\"#8ca7c2\", \"#dce1e7\"],\n [\"#a8bdd1\", \"#e2e6ea\"],\n [\"#c5d3e0\", \"#e7eaed\"],\n [\"#e2e9f0\", \"#edeff0\"]\n ]\n }\n });\n\n registerTheme(\"bootstrap\", {\n chart: {\n title: {\n color: \"#333333\"\n },\n subtitle: {\n color: \"#333333\"\n },\n legend: {\n labels: {\n color: \"#333333\"\n },\n inactiveItems: {\n labels: {\n color: \"#999999\"\n },\n markers: {\n color: \"#9A9A9A\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#333333\"\n },\n overlay: {\n gradient: \"none\"\n },\n errorBars: {\n color: \"#343434\"\n },\n notes: {\n icon: {\n background: \"#000000\",\n border: {\n color: \"#000000\"\n }\n },\n label: {\n color: \"#333333\"\n },\n line: {\n color: \"#000000\"\n }\n },\n pie: {\n overlay: {\n gradient: \"none\"\n }\n },\n donut: {\n overlay: {\n gradient: \"none\"\n }\n },\n line: {\n markers: {\n background: \"#ffffff\"\n }\n },\n bubble: {\n opacity: 0.6\n },\n scatter: {\n markers: {\n background: \"#ffffff\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#ffffff\"\n }\n },\n area: {\n opacity: 0.8\n },\n candlestick: {\n downColor: \"#d0d0d0\",\n line: {\n color: \"#333333\"\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: \"#b8b8b8\",\n opacity: 0.2\n }\n }\n },\n waterfall: {\n line: {\n color: \"#cccccc\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#cccccc\"\n }\n },\n ohlc: {\n line: {\n color: \"#333333\"\n }\n }\n },\n chartArea: {\n background: \"#ffffff\"\n },\n seriesColors: [\"#428bca\", \"#5bc0de\", \"#5cb85c\", \"#f2b661\", \"#e67d4a\", \"#da3b36\"],\n axisDefaults: {\n line: {\n color: \"#cccccc\"\n },\n minorTicks: {\n color: \"#ebebeb\"\n },\n majorTicks: {\n color: \"#cccccc\"\n },\n labels: {\n color: \"#333333\"\n },\n majorGridLines: {\n color: \"#cccccc\"\n },\n minorGridLines: {\n color: \"#ebebeb\"\n },\n title: {\n color: \"#333333\"\n },\n crosshair: {\n color: \"#000000\"\n },\n notes: {\n icon: {\n background: \"#000000\",\n border: {\n color: \"#000000\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#000000\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#428bca\"\n },\n scale: {\n rangePlaceholderColor: \"#cccccc\",\n labels: {\n color: \"#333333\"\n },\n minorTicks: {\n color: \"#ebebeb\"\n },\n majorTicks: {\n color: \"#cccccc\"\n },\n line: {\n color: \"#cccccc\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#428bca\"\n },\n connectorDefaults: {\n fill: {\n color: \"#333333\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#333333\"\n }\n }\n },\n content: {\n color: \"#333333\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#333333\"\n },\n hover: {\n fill: {\n color: \"#333333\"\n },\n stroke: {\n color: \"#333333\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#333333\"\n },\n fill: {\n color: \"#333333\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#333333\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#c4c4c4\"\n },\n content: {\n color: \"#333333\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#333333\"\n }\n },\n stroke: {\n color: \"#333333\"\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#428bca\", \"#d1e0ec\"],\n [\"#5bc0de\", \"#d6eaf0\"],\n [\"#5cb85c\", \"#d6e9d6\"],\n [\"#5cb85c\", \"#f4e8d7\"],\n [\"#e67d4a\", \"#f2ddd3\"],\n [\"#da3b36\", \"#f0d0cf\"]\n ]\n }\n });\n\n registerTheme(\"flat\", {\n chart: {\n title: {\n color: \"#4c5356\"\n },\n subtitle: {\n color: \"#4c5356\"\n },\n legend: {\n labels: {\n color: \"#4c5356\"\n },\n inactiveItems: {\n labels: {\n color: \"#CBCBCB\"\n },\n markers: {\n color: \"#CBCBCB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#4c5356\"\n },\n errorBars: {\n color: \"#4c5356\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#cdcdcd\"\n }\n },\n label: {\n color: \"#4c5356\"\n },\n line: {\n color: \"#cdcdcd\"\n }\n },\n candlestick: {\n downColor: \"#c7c7c7\",\n line: {\n color: \"#787878\"\n }\n },\n area: {\n opacity: 0.9\n },\n waterfall: {\n line: {\n color: \"#cdcdcd\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#cdcdcd\"\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: [\"#10c4b2\", \"#ff7663\", \"#ffb74f\", \"#a2df53\", \"#1c9ec4\", \"#ff63a5\", \"#1cc47b\"],\n axisDefaults: {\n line: {\n color: \"#cdcdcd\"\n },\n labels: {\n color: \"#4c5356\"\n },\n minorGridLines: {\n color: \"#cdcdcd\"\n },\n majorGridLines: {\n color: \"#cdcdcd\"\n },\n title: {\n color: \"#4c5356\"\n },\n crosshair: {\n color: \"#cdcdcd\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#cdcdcd\"\n }\n },\n label: {\n color: \"#4c5356\"\n },\n line: {\n color: \"#cdcdcd\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#10c4b2\"\n },\n scale: {\n rangePlaceholderColor: \"#cdcdcd\",\n\n labels: {\n color: \"#4c5356\"\n },\n minorTicks: {\n color: \"#4c5356\"\n },\n majorTicks: {\n color: \"#4c5356\"\n },\n line: {\n color: \"#4c5356\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#10c4b2\"\n },\n connectorDefaults: {\n fill: {\n color: \"#363940\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#363940\"\n }\n }\n },\n content: {\n color: \"#4c5356\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#363940\"\n },\n hover: {\n fill: {\n color: \"#363940\"\n },\n stroke: {\n color: \"#363940\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#363940\"\n },\n fill: {\n color: \"#363940\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#363940\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#cdcdcd\"\n },\n content: {\n color: \"#4c5356\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#363940\"\n }\n },\n stroke: {\n color: \"#363940\"\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#10c4b2\", \"#cff3f0\"],\n [\"#ff7663\", \"#ffe4e0\"],\n [\"#ffb74f\", \"#fff1dc\"],\n [\"#a2df53\", \"#ecf9dd\"],\n [\"#1c9ec4\", \"#d2ecf3\"],\n [\"#ff63a5\", \"#ffe0ed\"],\n [\"#1cc47b\", \"#d2f3e5\"]\n ]\n }\n });\n\n\n registerTheme(\"material\", {\n chart: {\n title: {\n color: \"#444444\"\n },\n subtitle: {\n color: \"#444444\"\n },\n legend: {\n labels: {\n color: \"#444444\"\n },\n inactiveItems: {\n labels: {\n color: \"#CBCBCB\"\n },\n markers: {\n color: \"#CBCBCB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#444444\"\n },\n errorBars: {\n color: \"#444444\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#e5e5e5\"\n }\n },\n label: {\n color: \"#444444\"\n },\n line: {\n color: \"#e5e5e5\"\n }\n },\n candlestick: {\n downColor: \"#c7c7c7\",\n line: {\n color: \"#787878\"\n }\n },\n area: {\n opacity: 0.9\n },\n waterfall: {\n line: {\n color: \"#e5e5e5\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#e5e5e5\"\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: [\"#3f51b5\", \"#03a9f4\", \"#4caf50\", \"#f9ce1d\", \"#ff9800\", \"#ff5722\"],\n axisDefaults: {\n line: {\n color: \"#e5e5e5\"\n },\n labels: {\n color: \"#444444\"\n },\n minorGridLines: {\n color: \"#e5e5e5\"\n },\n majorGridLines: {\n color: \"#e5e5e5\"\n },\n title: {\n color: \"#444444\"\n },\n crosshair: {\n color: \"#7f7f7f\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#e5e5e5\"\n }\n },\n label: {\n color: \"#444444\"\n },\n line: {\n color: \"#e5e5e5\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#3f51b5\"\n },\n scale: {\n rangePlaceholderColor: \"#e5e5e5\",\n\n labels: {\n color: \"#444444\"\n },\n minorTicks: {\n color: \"#444444\"\n },\n majorTicks: {\n color: \"#444444\"\n },\n line: {\n color: \"#444444\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#3f51b5\"\n },\n connectorDefaults: {\n fill: {\n color: \"#7f7f7f\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#7f7f7f\"\n }\n }\n },\n content: {\n color: \"#444444\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#444444\"\n },\n hover: {\n fill: {\n color: \"#444444\"\n },\n stroke: {\n color: \"#444444\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#444444\"\n },\n fill: {\n color: \"#444444\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#444444\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#7f7f7f\"\n },\n content: {\n color: \"#444444\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#444444\"\n }\n },\n stroke: {\n color: \"#444444\"\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#3f51b5\", \"#cff3f0\"],\n [\"#03a9f4\", \"#e5f6fe\"],\n [\"#4caf50\", \"#edf7ed\"],\n [\"#f9ce1d\", \"#fefae8\"],\n [\"#ff9800\", \"#fff4e5\"],\n [\"#ff5722\", \"#ffeee8\"]\n ]\n }\n });\n\n registerTheme(\"materialblack\", {\n chart: {\n title: {\n color: \"#fff\"\n },\n subtitle: {\n color: \"#fff\"\n },\n legend: {\n labels: {\n color: \"#fff\"\n },\n inactiveItems: {\n labels: {\n color: \"#CBCBCB\"\n },\n markers: {\n color: \"#CBCBCB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#fff\"\n },\n errorBars: {\n color: \"#fff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#e5e5e5\"\n }\n },\n label: {\n color: \"#fff\"\n },\n line: {\n color: \"#e5e5e5\"\n }\n },\n candlestick: {\n downColor: \"#c7c7c7\",\n line: {\n color: \"#787878\"\n }\n },\n area: {\n opacity: 0.9\n },\n waterfall: {\n line: {\n color: \"#4d4d4d\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#4d4d4d\"\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n chartArea: {\n background: \"#1c1c1c\"\n },\n seriesColors: [\"#3f51b5\", \"#03a9f4\", \"#4caf50\", \"#f9ce1d\", \"#ff9800\", \"#ff5722\"],\n axisDefaults: {\n line: {\n color: \"#4d4d4d\"\n },\n labels: {\n color: \"#fff\"\n },\n minorGridLines: {\n color: \"#4d4d4d\"\n },\n majorGridLines: {\n color: \"#4d4d4d\"\n },\n title: {\n color: \"#fff\"\n },\n crosshair: {\n color: \"#7f7f7f\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#4d4d4d\"\n }\n },\n label: {\n color: \"#fff\"\n },\n line: {\n color: \"#4d4d4d\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#3f51b5\"\n },\n scale: {\n rangePlaceholderColor: \"#4d4d4d\",\n\n labels: {\n color: \"#fff\"\n },\n minorTicks: {\n color: \"#fff\"\n },\n majorTicks: {\n color: \"#fff\"\n },\n line: {\n color: \"#fff\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#3f51b5\"\n },\n connectorDefaults: {\n fill: {\n color: \"#7f7f7f\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#7f7f7f\"\n }\n }\n },\n content: {\n color: \"#fff\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#fff\"\n },\n hover: {\n fill: {\n color: \"#fff\"\n },\n stroke: {\n color: \"#fff\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#fff\"\n },\n fill: {\n color: \"#fff\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#fff\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#7f7f7f\"\n },\n content: {\n color: \"#fff\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#fff\"\n }\n },\n stroke: {\n color: \"#fff\"\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#3f51b5\", \"#cff3f0\"],\n [\"#03a9f4\", \"#e5f6fe\"],\n [\"#4caf50\", \"#edf7ed\"],\n [\"#f9ce1d\", \"#fefae8\"],\n [\"#ff9800\", \"#fff4e5\"],\n [\"#ff5722\", \"#ffeee8\"]\n ]\n }\n });\n\n (function() {\n var TEXT = \"#333333\";\n var INACTIVE = \"#7f7f7f\";\n var INACTIVE_SHAPE = \"#bdbdbd\";\n var AXIS = \"#c8c8c8\";\n var AXIS_MINOR = \"#dddddd\";\n var SERIES = [\"#008fd3\", \"#99d101\", \"#f39b02\", \"#f05662\", \"#c03c53\", \"#acacac\"];\n var SERIES_LIGHT = [\"#cbe8f5\", \"#eaf5cb\", \"#fceacc\", \"#fbdcdf\", \"#f2d7dc\", \"#eeeeee\"];\n var PRIMARY = SERIES[0];\n var DIAGRAM_HOVER = WHITE;\n\n function noteStyle() {\n return {\n icon: {\n background: \"#007cc0\",\n border: {\n color: \"#007cc0\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: AXIS\n }\n };\n }\n\n registerTheme(\"fiori\", {\n chart: {\n title: {\n color: TEXT\n },\n subtitle: {\n color: TEXT\n },\n legend: {\n labels: {\n color: TEXT\n },\n inactiveItems: {\n labels: {\n color: INACTIVE\n },\n markers: {\n color: INACTIVE\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: TEXT\n },\n errorBars: {\n color: TEXT\n },\n notes: noteStyle(),\n candlestick: {\n downColor: AXIS,\n line: {\n color: INACTIVE_SHAPE\n }\n },\n area: {\n opacity: 0.8\n },\n waterfall: {\n line: {\n color: AXIS\n }\n },\n horizontalWaterfall: {\n line: {\n color: AXIS\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: SERIES,\n axisDefaults: {\n line: {\n color: AXIS\n },\n labels: {\n color: TEXT\n },\n minorGridLines: {\n color: AXIS_MINOR\n },\n majorGridLines: {\n color: AXIS\n },\n title: {\n color: TEXT\n },\n crosshair: {\n color: INACTIVE\n },\n notes: noteStyle()\n }\n },\n gauge: {\n pointer: {\n color: PRIMARY\n },\n scale: {\n rangePlaceholderColor: AXIS,\n labels: {\n color: TEXT\n },\n minorTicks: {\n color: TEXT\n },\n majorTicks: {\n color: TEXT\n },\n line: {\n color: TEXT\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: PRIMARY\n },\n connectorDefaults: {\n fill: {\n color: TEXT\n },\n stroke: {\n color: DIAGRAM_HOVER\n },\n hover: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: TEXT\n }\n }\n },\n content: {\n color: TEXT\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n },\n hover: {\n fill: {\n color: INACTIVE_SHAPE\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n fill: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n connectionDefaults: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n content: {\n color: INACTIVE_SHAPE\n },\n selection: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n })();\n\n (function() {\n var TEXT = \"#4e4e4e\";\n var INACTIVE = \"#7f7f7f\";\n var INACTIVE_SHAPE = \"#bdbdbd\";\n var AXIS = \"#c8c8c8\";\n var AXIS_MINOR = \"#e5e5e5\";\n var SERIES = [\"#0072c6\", \"#5db2ff\", \"#008a17\", \"#82ba00\", \"#ff8f32\", \"#ac193d\"];\n var SERIES_LIGHT = [\"#cbe2f3\", \"#deeffe\", \"#cbe7d0\", \"#e5f0cb\", \"#fee8d5\", \"#eed0d7\"];\n var PRIMARY = SERIES[0];\n var DIAGRAM_HOVER = WHITE;\n\n function noteStyle() {\n return {\n icon: {\n background: \"#00b0ff\",\n border: {\n color: \"#00b0ff\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: AXIS\n }\n };\n }\n\n registerTheme(\"office365\", {\n chart: {\n title: {\n color: TEXT\n },\n subtitle: {\n color: TEXT\n },\n legend: {\n labels: {\n color: TEXT\n },\n inactiveItems: {\n labels: {\n color: INACTIVE\n },\n markers: {\n color: INACTIVE\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: TEXT\n },\n errorBars: {\n color: TEXT\n },\n notes: noteStyle(),\n candlestick: {\n downColor: AXIS,\n line: {\n color: INACTIVE_SHAPE\n }\n },\n area: {\n opacity: 0.8\n },\n waterfall: {\n line: {\n color: AXIS\n }\n },\n horizontalWaterfall: {\n line: {\n color: AXIS\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: SERIES,\n axisDefaults: {\n line: {\n color: AXIS\n },\n labels: {\n color: TEXT\n },\n minorGridLines: {\n color: AXIS_MINOR\n },\n majorGridLines: {\n color: AXIS\n },\n title: {\n color: TEXT\n },\n crosshair: {\n color: INACTIVE\n },\n notes: noteStyle()\n }\n },\n gauge: {\n pointer: {\n color: PRIMARY\n },\n scale: {\n rangePlaceholderColor: AXIS,\n labels: {\n color: TEXT\n },\n minorTicks: {\n color: TEXT\n },\n majorTicks: {\n color: TEXT\n },\n line: {\n color: TEXT\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: PRIMARY\n },\n connectorDefaults: {\n fill: {\n color: TEXT\n },\n stroke: {\n color: DIAGRAM_HOVER\n },\n hover: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: TEXT\n }\n }\n },\n content: {\n color: TEXT\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n },\n hover: {\n fill: {\n color: INACTIVE_SHAPE\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n fill: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n connectionDefaults: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n content: {\n color: INACTIVE_SHAPE\n },\n selection: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n })();\n\n (function() {\n var TEXT = \"#32364c\";\n var INACTIVE = \"#7f7f7f\";\n var INACTIVE_SHAPE = \"#bdbdbd\";\n var AXIS = \"#dfe0e1\";\n var AXIS_MINOR = \"#dfe0e1\";\n var SERIES = [\"#ff4350\", \"#ff9ea5\", \"#00acc1\", \"#80deea\", \"#ffbf46\", \"#ffd78c\"];\n var SERIES_LIGHT = [\"#ffd9dc\", \"#ffeced\", \"#cceef3\", \"#e6f8fb\", \"#fff2da\", \"#fff7e8\"];\n var PRIMARY = SERIES[0];\n var DIAGRAM_HOVER = WHITE;\n\n function noteStyle() {\n return {\n icon: {\n background: \"#007cc0\",\n border: {\n color: \"#007cc0\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: AXIS\n }\n };\n }\n\n registerTheme(\"nova\", {\n chart: {\n title: {\n color: TEXT\n },\n subtitle: {\n color: TEXT\n },\n legend: {\n labels: {\n color: TEXT\n },\n inactiveItems: {\n labels: {\n color: INACTIVE\n },\n markers: {\n color: INACTIVE\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: TEXT\n },\n errorBars: {\n color: TEXT\n },\n notes: noteStyle(),\n candlestick: {\n downColor: AXIS,\n line: {\n color: INACTIVE_SHAPE\n }\n },\n area: {\n opacity: 0.8\n },\n waterfall: {\n line: {\n color: AXIS\n }\n },\n horizontalWaterfall: {\n line: {\n color: AXIS\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: SERIES,\n axisDefaults: {\n line: {\n color: AXIS\n },\n labels: {\n color: TEXT\n },\n minorGridLines: {\n color: AXIS_MINOR\n },\n majorGridLines: {\n color: AXIS\n },\n title: {\n color: TEXT\n },\n crosshair: {\n color: TEXT\n },\n notes: noteStyle()\n }\n },\n gauge: {\n pointer: {\n color: PRIMARY\n },\n scale: {\n rangePlaceholderColor: AXIS,\n labels: {\n color: TEXT\n },\n minorTicks: {\n color: TEXT\n },\n majorTicks: {\n color: TEXT\n },\n line: {\n color: TEXT\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: PRIMARY\n },\n connectorDefaults: {\n fill: {\n color: TEXT\n },\n stroke: {\n color: DIAGRAM_HOVER\n },\n hover: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: TEXT\n }\n }\n },\n content: {\n color: TEXT\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n },\n hover: {\n fill: {\n color: INACTIVE_SHAPE\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n fill: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n connectionDefaults: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n content: {\n color: INACTIVE_SHAPE\n },\n selection: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n })();\n\n (function() {\n var SERIES = [\"#ff6358\", \"#ffd246\", \"#78d237\", \"#28b4c8\", \"#2d73f5\", \"#aa46be\"];\n var SERIES_LIGHT = [\"#ffd9dc\", \"#ffeced\", \"#cceef3\", \"#e6f8fb\", \"#fff2da\", \"#fff7e8\"];\n\n registerTheme(\"default-v2\", {\n chart: { /* read from DOM */ },\n gauge: { /* read from DOM */ },\n diagram: { /* read from DOM */ },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n\n themes.sass = themes[\"default-v2\"];\n })();\n\n\n (function() {\n var TEXT = \"#292b2c\";\n var AXIS = \"rgba(0, 0, 0, .04)\";\n var SERIES = [\"#0275d8\", \"#5bc0de\", \"#5cb85c\", \"#f0ad4e\", \"#e67d4a\", \"#d9534f\"];\n var SERIES_LIGHT = [\"#ffd9dc\", \"#ffeced\", \"#cceef3\", \"#e6f8fb\", \"#fff2da\", \"#fff7e8\"];\n var PRIMARY = SERIES[0];\n\n registerTheme(\"bootstrap-v4\", {\n chart: { /* read from DOM */ },\n gauge: {\n pointer: {\n color: PRIMARY\n },\n scale: {\n rangePlaceholderColor: AXIS,\n labels: {\n color: TEXT\n },\n minorTicks: {\n color: TEXT\n },\n majorTicks: {\n color: TEXT\n },\n line: {\n color: TEXT\n }\n }\n },\n diagram: { /* read from DOM */ },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n })();\n\n function fuse(arr1, arr2) {\n return $.map(arr1, function(item, index) {\n return [\n [item, arr2[index]]\n ];\n });\n }\n\n })(window.kendo.jQuery);\n\n var __meta__$D = {\n id: \"dataviz.themes\",\n name: \"Themes\",\n description: \"Built-in themes for the DataViz widgets\",\n category: \"dataviz\",\n depends: [ \"dataviz.core\" ],\n hidden: true\n };\n var kendo$F = kendo;\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-charts` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable */\n\n window.kendo.dataviz = window.kendo.dataviz || {};\n var dataviz = kendo.dataviz;\n var Class = dataviz.Class;\n var isNumber = dataviz.isNumber;\n var datavizConstants = dataviz.constants;\n var MAX_VALUE = datavizConstants.MAX_VALUE;\n var MIN_VALUE = datavizConstants.MIN_VALUE;\n var VALUE = datavizConstants.VALUE;\n var DATE = datavizConstants.DATE;\n var CENTER = datavizConstants.CENTER;\n var TOP = datavizConstants.TOP;\n var BOTTOM = datavizConstants.BOTTOM;\n var LEFT = datavizConstants.LEFT;\n var WHITE = datavizConstants.WHITE;\n var CIRCLE = datavizConstants.CIRCLE;\n var X = datavizConstants.X;\n var Y = datavizConstants.Y;\n var RIGHT = datavizConstants.RIGHT;\n var BLACK = datavizConstants.BLACK;\n var COORD_PRECISION = datavizConstants.COORD_PRECISION;\n var END = datavizConstants.END;\n var START = datavizConstants.START;\n var DEFAULT_PRECISION = datavizConstants.DEFAULT_PRECISION;\n var ARC = datavizConstants.ARC;\n var defined = dataviz.defined;\n var getter = dataviz.getter;\n var isArray = dataviz.isArray;\n var ChartElement = dataviz.ChartElement;\n var Point = dataviz.Point;\n var Box = dataviz.Box;\n var alignPathToPixel = dataviz.alignPathToPixel;\n var setDefaultOptions = dataviz.setDefaultOptions;\n var isString = dataviz.isString;\n var inArray = dataviz.inArray;\n var isFunction = dataviz.isFunction;\n var valueOrDefault = dataviz.valueOrDefault;\n var isObject = dataviz.isObject;\n var parseDate = dataviz.parseDate;\n var deepExtend = dataviz.deepExtend;\n var last = dataviz.last;\n var eventElement = dataviz.eventElement;\n var TextBox = dataviz.TextBox;\n var getTemplate = dataviz.getTemplate;\n var ShapeElement = dataviz.ShapeElement;\n var getSpacing = dataviz.getSpacing;\n var CurveProcessor = dataviz.CurveProcessor;\n var append = dataviz.append;\n var styleValue = dataviz.styleValue;\n var CategoryAxis = dataviz.CategoryAxis;\n var BoxElement = dataviz.BoxElement;\n var Title = dataviz.Title;\n var round = dataviz.round;\n var limitValue = dataviz.limitValue;\n var cycleIndex = dataviz.cycleIndex;\n var grep = dataviz.grep;\n var elementStyles = dataviz.elementStyles;\n var autoTextColor = dataviz.autoTextColor;\n var rad = dataviz.rad;\n var bindEvents = dataviz.bindEvents;\n var services = dataviz.services;\n var unbindEvents = dataviz.unbindEvents;\n var support = kendo.support;\n var drawing = kendo.drawing;\n var Path = drawing.Path;\n var Animation = drawing.Animation;\n var AnimationFactory = drawing.AnimationFactory;\n var Group = drawing.Group;\n var Circle = drawing.Circle;\n var MultiPath = drawing.MultiPath;\n var Color = kendo.Color;\n var geometry = kendo.geometry;\n var GeometryPoint = geometry.Point;\n var GeometryCircle = geometry.Circle;\n var transform = geometry.transform;\n\n var ChartAxis = Class.extend({\n init: function(axis) {\n\n this._axis = axis;\n this.options = axis.options;\n },\n\n value: function(point) {\n var axis = this._axis;\n var value = axis.getCategory ? axis.getCategory(point) : axis.getValue(point);\n\n return value;\n },\n\n slot: function(from, to, limit) {\n if (limit === void 0) { limit = true; }\n\n return this._axis.slot(from, to, limit);\n },\n\n range: function() {\n return this._axis.range();\n },\n\n valueRange: function() {\n return this._axis.valueRange();\n }\n });\n\n function findAxisByName(name, axes) {\n for (var 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 }\n\n var ChartPane = kendo.Class.extend({\n init: function(pane) {\n this.visual = pane.visual;\n this.chartsVisual = pane.chartContainer.visual;\n this._pane = pane;\n },\n\n findAxisByName: function(name) {\n return findAxisByName(name, this._pane.axes);\n }\n });\n\n var ChartPlotArea = Class.extend({\n init: function(plotArea) {\n\n this._plotArea = plotArea;\n this.visual = plotArea.visual;\n this.backgroundVisual = plotArea._bgVisual;\n }\n });\n\n function countNumbers(values) {\n var length = values.length;\n var count = 0;\n\n for (var i = 0; i < length; i++) {\n var num = values[i];\n if (isNumber(num)) {\n count++;\n }\n }\n\n return count;\n }\n\n var Aggregates = {\n min: function(values) {\n var length = values.length;\n var min = MAX_VALUE;\n\n for (var i = 0; i < length; i++) {\n var 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 var length = values.length;\n var max = MIN_VALUE;\n\n for (var i = 0; i < length; i++) {\n var 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 var length = values.length;\n var sum = 0;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n sum += value;\n }\n }\n\n return sum;\n },\n\n sumOrNull: function(values) {\n var result = null;\n\n if (countNumbers(values)) {\n result = Aggregates.sum(values);\n }\n\n return result;\n },\n\n count: function(values) {\n var length = values.length;\n var count = 0;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (value !== null && defined(value)) {\n count++;\n }\n }\n\n return count;\n },\n\n avg: function(values) {\n var count = countNumbers(values);\n var 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 var length = values.length;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (value !== null && defined(value)) {\n return value;\n }\n }\n\n return values[0];\n }\n };\n\n function getField(field, row) {\n if (row === null) {\n return row;\n }\n\n var get = getter(field, true);\n return get(row);\n }\n\n var SeriesBinder = Class.extend({\n init: function() {\n\n this._valueFields = {};\n this._otherFields = {};\n this._nullValue = {};\n this._undefinedValue = {};\n },\n\n register: function(seriesTypes, valueFields, otherFields) {\n var this$1$1 = this;\n if (valueFields === void 0) { valueFields = [ VALUE ]; }\n if (otherFields === void 0) { otherFields = {}; }\n\n for (var i = 0; i < seriesTypes.length; i++) {\n var type = seriesTypes[i];\n\n this$1$1._valueFields[type] = valueFields;\n this$1$1._otherFields[type] = otherFields;\n this$1$1._nullValue[type] = this$1$1._makeValue(valueFields, null);\n this$1$1._undefinedValue[type] = this$1$1._makeValue(valueFields, undefined);\n }\n },\n\n canonicalFields: function(series) {\n return this.valueFields(series).concat(this.otherFields(series));\n },\n\n valueFields: function(series) {\n return this._valueFields[series.type] || [ VALUE ];\n },\n\n otherFields: function(series) {\n return this._otherFields[series.type] || [ VALUE ];\n },\n\n bindPoint: function(series, pointIx, item) {\n var data = series.data;\n var pointData = defined(item) ? item : data[pointIx];\n var result = { valueFields: { value: pointData } };\n var valueFields = this.valueFields(series);\n var otherFields = this._otherFields[series.type];\n var 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 var fieldData = pointData.slice(valueFields.length);\n value = this._bindFromArray(pointData, valueFields);\n fields = this._bindFromArray(fieldData, otherFields);\n } else if (typeof pointData === \"object\") {\n var srcValueFields = this.sourceFields(series, valueFields);\n var 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: function(fields, initialValue) {\n var value = {};\n var length = fields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = fields[i];\n value[fieldName] = initialValue;\n }\n\n return value;\n },\n\n _bindFromArray: function(array, fields) {\n var value = {};\n\n if (fields) {\n var length = Math.min(fields.length, array.length);\n\n for (var i = 0; i < length; i++) {\n value[fields[i]] = array[i];\n }\n }\n\n return value;\n },\n\n _bindFromObject: function(object, fields, srcFields) {\n if (srcFields === void 0) { srcFields = fields; }\n\n var value = {};\n\n if (fields) {\n var length = fields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = fields[i];\n var srcFieldName = srcFields[i];\n if (srcFieldName !== null) {\n value[fieldName] = getField(srcFieldName, object);\n }\n }\n }\n\n return value;\n },\n\n sourceFields: function(series, canonicalFields) {\n var sourceFields = [];\n\n if (canonicalFields) {\n var length = canonicalFields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = canonicalFields[i];\n var 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\n SeriesBinder.current = new SeriesBinder();\n\n var STD_ERR = \"stderr\";\n var STD_DEV = \"stddev\";\n var percentRegex = /percent(?:\\w*)\\((\\d+)\\)/;\n var standardDeviationRegex = new RegExp(\"^\" + STD_DEV + \"(?:\\\\((\\\\d+(?:\\\\.\\\\d+)?)\\\\))?$\");\n\n var ErrorRangeCalculator = Class.extend({\n init: function(errorValue, series, field) {\n\n this.initGlobalRanges(errorValue, series, field);\n },\n\n initGlobalRanges: function(errorValue, series, field) {\n var data = series.data;\n var deviationMatch = standardDeviationRegex.exec(errorValue);\n\n if (deviationMatch) {\n this.valueGetter = this.createValueGetter(series, field);\n\n var average = this.getAverage(data);\n var deviation = this.getStandardDeviation(data, average, false);\n var multiple = deviationMatch[1] ? parseFloat(deviationMatch[1]) : 1;\n var 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 var 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: function(series, field) {\n var data = series.data;\n var binder = SeriesBinder.current;\n var valueFields = binder.valueFields(series);\n var item = defined(data[0]) ? data[0] : {};\n var valueGetter;\n\n if (isArray(item)) {\n var index = field ? valueFields.indexOf(field) : 0;\n valueGetter = getter(\"[\" + index + \"]\");\n } else if (isNumber(item)) {\n valueGetter = getter();\n } else if (typeof item === datavizConstants.OBJECT) {\n var srcValueFields = binder.sourceFields(series, valueFields);\n valueGetter = getter(srcValueFields[valueFields.indexOf(field)]);\n }\n\n return valueGetter;\n },\n\n getErrorRange: function(pointValue, errorValue) {\n var 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 var 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: function(data, average) {\n return this.getStandardDeviation(data, average, true) / Math.sqrt(average.count);\n },\n\n getStandardDeviation: function(data, average, isSample) {\n var this$1$1 = this;\n\n var length = data.length;\n var total = isSample ? average.count - 1 : average.count;\n var squareDifferenceSum = 0;\n\n for (var idx = 0; idx < length; idx++) {\n var value = this$1$1.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: function(data) {\n var this$1$1 = this;\n\n var length = data.length;\n var sum = 0;\n var count = 0;\n\n for (var idx = 0; idx < length; idx++) {\n var value = this$1$1.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\n var browser = support.browser || {};\n\n var INITIAL_ANIMATION_DURATION = 600;\n var FADEIN = \"fadeIn\";\n\n var GLASS = \"glass\";\n var BORDER_BRIGHTNESS = 0.8;\n var TOOLTIP_OFFSET = 5;\n var START_SCALE = browser.msie ? 0.001 : 0;\n var ERROR_LOW_FIELD = \"errorLow\";\n var ERROR_HIGH_FIELD = \"errorHigh\";\n var X_ERROR_LOW_FIELD = \"xErrorLow\";\n var X_ERROR_HIGH_FIELD = \"xErrorHigh\";\n var Y_ERROR_LOW_FIELD = \"yErrorLow\";\n var Y_ERROR_HIGH_FIELD = \"yErrorHigh\";\n var LINE_MARKER_SIZE = 8;\n var ZERO = \"zero\";\n var INTERPOLATE = \"interpolate\";\n var GAP = \"gap\";\n var ABOVE = \"above\";\n var BELOW = \"below\";\n\n var SMOOTH = \"smooth\";\n var STEP = \"step\";\n\n var AREA = \"area\";\n var BAR = \"bar\";\n var BOX_PLOT = \"boxPlot\";\n var BUBBLE = \"bubble\";\n var BULLET = \"bullet\";\n var CANDLESTICK = \"candlestick\";\n var COLUMN = \"column\";\n var DONUT = \"donut\";\n var FUNNEL = \"funnel\";\n var PYRAMID = \"pyramid\";\n var HEATMAP = \"heatmap\";\n var HORIZONTAL_WATERFALL = \"horizontalWaterfall\";\n var LINE = \"line\";\n var OHLC = \"ohlc\";\n var PIE = \"pie\";\n var POLAR_AREA = \"polarArea\";\n var POLAR_LINE = \"polarLine\";\n var POLAR_SCATTER = \"polarScatter\";\n var RADAR_AREA = \"radarArea\";\n var RADAR_COLUMN = \"radarColumn\";\n var RADAR_LINE = \"radarLine\";\n var RANGE_AREA = \"rangeArea\";\n var RANGE_BAR = \"rangeBar\";\n var RANGE_COLUMN = \"rangeColumn\";\n var SCATTER = \"scatter\";\n var SCATTER_LINE = \"scatterLine\";\n var VERTICAL_AREA = \"verticalArea\";\n var VERTICAL_BOX_PLOT = \"verticalBoxPlot\";\n var VERTICAL_BULLET = \"verticalBullet\";\n var VERTICAL_LINE = \"verticalLine\";\n var VERTICAL_RANGE_AREA = \"verticalRangeArea\";\n var WATERFALL = \"waterfall\";\n var EQUALLY_SPACED_SERIES = [\n BAR, COLUMN, OHLC, CANDLESTICK, BOX_PLOT, VERTICAL_BOX_PLOT,\n BULLET, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL\n ];\n\n var TRENDLINE_EXPONENTIAL = 'exponentialTrendline';\n var TRENDLINE_LINEAR = 'linearTrendline';\n var TRENDLINE_LOGARITHMIC = 'logarithmicTrendline';\n var TRENDLINE_MOVING_AVERAGE = 'movingAverageTrendline';\n var TRENDLINE_POLYNOMIAL = 'polynomialTrendline';\n var TRENDLINE_POWER = 'powerTrendline';\n var TRENDLINE_SERIES = [\n TRENDLINE_EXPONENTIAL,\n TRENDLINE_LINEAR,\n TRENDLINE_LOGARITHMIC,\n TRENDLINE_MOVING_AVERAGE,\n TRENDLINE_POLYNOMIAL,\n TRENDLINE_POWER\n ];\n\n var LEGEND_ITEM_CLICK = \"legendItemClick\";\n var LEGEND_ITEM_HOVER = \"legendItemHover\";\n var LEGEND_ITEM_LEAVE = \"legendItemLeave\";\n var SERIES_CLICK = \"seriesClick\";\n var SERIES_HOVER = \"seriesHover\";\n var SERIES_OVER = \"seriesOver\";\n var SERIES_LEAVE = \"seriesLeave\";\n var PLOT_AREA_CLICK = \"plotAreaClick\";\n var PLOT_AREA_HOVER = \"plotAreaHover\";\n var PLOT_AREA_LEAVE = \"plotAreaLeave\";\n var DRAG = \"drag\";\n var DRAG_END = \"dragEnd\";\n var DRAG_START = \"dragStart\";\n var ZOOM_START = \"zoomStart\";\n var ZOOM = \"zoom\";\n var ZOOM_END = \"zoomEnd\";\n var SELECT_START = \"selectStart\";\n var SELECT = \"select\";\n var SELECT_END = \"selectEnd\";\n var RENDER = \"render\";\n var SHOW_TOOLTIP = \"showTooltip\";\n var HIDE_TOOLTIP = \"hideTooltip\";\n var PANE_RENDER = \"paneRender\";\n\n var CHART_POINT_ROLE = \"graphics-symbol\";\n var CHART_POINT_CLASSNAME = \"k-chart-point\";\n var CHART_POINT_ROLE_DESCRIPTION = \"Point\";\n var LEGEND_ITEM_ROLE = \"checkbox\";\n var LEGEND_ITEM_CLASSNAME = \"k-chart-legend-item\";\n var LEGEND_ITEM_ARIA_ROLE_DESCRIPTION = \"Legend item\";\n\n var LOGARITHMIC = \"log\";\n var CATEGORY = \"category\";\n\n var INSIDE_END = \"insideEnd\";\n var INSIDE_BASE = \"insideBase\";\n var OUTSIDE_END = \"outsideEnd\";\n\n var MOUSEWHEEL = \"wheel\";\n var MOUSEWHEEL_DELAY = 150;\n var MOUSEWHEEL_ZOOM_RATE = 0.3;\n\n var DRILLDOWN = \"drilldown\";\n var DRILLDOWN_FIELD = \"drilldown\";\n\n var MIN_MOVING_AVERAGE_PERIOD = 2;\n\n var constants = {\n \tINITIAL_ANIMATION_DURATION: INITIAL_ANIMATION_DURATION,\n \tFADEIN: FADEIN,\n \tLEGEND_ITEM_CLICK: LEGEND_ITEM_CLICK,\n \tLEGEND_ITEM_HOVER: LEGEND_ITEM_HOVER,\n \tLEGEND_ITEM_LEAVE: LEGEND_ITEM_LEAVE,\n \tSERIES_CLICK: SERIES_CLICK,\n \tSERIES_HOVER: SERIES_HOVER,\n \tSERIES_OVER: SERIES_OVER,\n \tSERIES_LEAVE: SERIES_LEAVE,\n \tGLASS: GLASS,\n \tBORDER_BRIGHTNESS: BORDER_BRIGHTNESS,\n \tTOOLTIP_OFFSET: TOOLTIP_OFFSET,\n \tSTART_SCALE: START_SCALE,\n \tERROR_LOW_FIELD: ERROR_LOW_FIELD,\n \tERROR_HIGH_FIELD: ERROR_HIGH_FIELD,\n \tX_ERROR_LOW_FIELD: X_ERROR_LOW_FIELD,\n \tX_ERROR_HIGH_FIELD: X_ERROR_HIGH_FIELD,\n \tY_ERROR_LOW_FIELD: Y_ERROR_LOW_FIELD,\n \tY_ERROR_HIGH_FIELD: Y_ERROR_HIGH_FIELD,\n \tLINE_MARKER_SIZE: LINE_MARKER_SIZE,\n \tINTERPOLATE: INTERPOLATE,\n \tZERO: ZERO,\n \tSMOOTH: SMOOTH,\n \tSTEP: STEP,\n \tCATEGORY: CATEGORY,\n \tFUNNEL: FUNNEL,\n \tPYRAMID: PYRAMID,\n \tBAR: BAR,\n \tCANDLESTICK: CANDLESTICK,\n \tPIE: PIE,\n \tCOLUMN: COLUMN,\n \tAREA: AREA,\n \tVERTICAL_BULLET: VERTICAL_BULLET,\n \tBOX_PLOT: BOX_PLOT,\n \tOHLC: OHLC,\n \tWATERFALL: WATERFALL,\n \tLINE: LINE,\n \tBULLET: BULLET,\n \tVERTICAL_LINE: VERTICAL_LINE,\n \tVERTICAL_AREA: VERTICAL_AREA,\n \tRANGE_AREA: RANGE_AREA,\n \tVERTICAL_RANGE_AREA: VERTICAL_RANGE_AREA,\n \tRANGE_COLUMN: RANGE_COLUMN,\n \tVERTICAL_BOX_PLOT: VERTICAL_BOX_PLOT,\n \tRANGE_BAR: RANGE_BAR,\n \tHORIZONTAL_WATERFALL: HORIZONTAL_WATERFALL,\n \tSCATTER: SCATTER,\n \tSCATTER_LINE: SCATTER_LINE,\n \tBUBBLE: BUBBLE,\n \tRADAR_AREA: RADAR_AREA,\n \tRADAR_LINE: RADAR_LINE,\n \tRADAR_COLUMN: RADAR_COLUMN,\n \tPOLAR_LINE: POLAR_LINE,\n \tPOLAR_AREA: POLAR_AREA,\n \tPOLAR_SCATTER: POLAR_SCATTER,\n \tRENDER: RENDER,\n \tPLOT_AREA_CLICK: PLOT_AREA_CLICK,\n \tPLOT_AREA_HOVER: PLOT_AREA_HOVER,\n \tPLOT_AREA_LEAVE: PLOT_AREA_LEAVE,\n \tLOGARITHMIC: LOGARITHMIC,\n \tDRAG: DRAG,\n \tDRAG_START: DRAG_START,\n \tDRAG_END: DRAG_END,\n \tZOOM_START: ZOOM_START,\n \tZOOM: ZOOM,\n \tZOOM_END: ZOOM_END,\n \tSELECT_START: SELECT_START,\n \tSELECT: SELECT,\n \tSELECT_END: SELECT_END,\n \tPANE_RENDER: PANE_RENDER,\n \tGAP: GAP,\n \tDONUT: DONUT,\n \tINSIDE_END: INSIDE_END,\n \tINSIDE_BASE: INSIDE_BASE,\n \tOUTSIDE_END: OUTSIDE_END,\n \tMOUSEWHEEL: MOUSEWHEEL,\n \tMOUSEWHEEL_DELAY: MOUSEWHEEL_DELAY,\n \tMOUSEWHEEL_ZOOM_RATE: MOUSEWHEEL_ZOOM_RATE,\n \tSHOW_TOOLTIP: SHOW_TOOLTIP,\n \tHIDE_TOOLTIP: HIDE_TOOLTIP,\n \tEQUALLY_SPACED_SERIES: EQUALLY_SPACED_SERIES,\n \tABOVE: ABOVE,\n \tBELOW: BELOW,\n \tHEATMAP: HEATMAP,\n \tDRILLDOWN: DRILLDOWN,\n \tDRILLDOWN_FIELD: DRILLDOWN_FIELD,\n \tMIN_MOVING_AVERAGE_PERIOD: MIN_MOVING_AVERAGE_PERIOD,\n \tTRENDLINE_SERIES: TRENDLINE_SERIES,\n \tTRENDLINE_EXPONENTIAL: TRENDLINE_EXPONENTIAL,\n \tTRENDLINE_LINEAR: TRENDLINE_LINEAR,\n \tTRENDLINE_LOGARITHMIC: TRENDLINE_LOGARITHMIC,\n \tTRENDLINE_MOVING_AVERAGE: TRENDLINE_MOVING_AVERAGE,\n \tTRENDLINE_POLYNOMIAL: TRENDLINE_POLYNOMIAL,\n \tTRENDLINE_POWER: TRENDLINE_POWER,\n \tCHART_POINT_ROLE: CHART_POINT_ROLE,\n \tCHART_POINT_CLASSNAME: CHART_POINT_CLASSNAME,\n \tCHART_POINT_ROLE_DESCRIPTION: CHART_POINT_ROLE_DESCRIPTION,\n \tLEGEND_ITEM_ROLE: LEGEND_ITEM_ROLE,\n \tLEGEND_ITEM_CLASSNAME: LEGEND_ITEM_CLASSNAME,\n \tLEGEND_ITEM_ARIA_ROLE_DESCRIPTION: LEGEND_ITEM_ARIA_ROLE_DESCRIPTION\n };\n\n var DEFAULT_ERROR_BAR_WIDTH = 4;\n\n var ErrorBarBase = ChartElement.extend({\n init: function(low, high, isVertical, chart, series, options) {\n ChartElement.fn.init.call(this, 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: function(targetBox) {\n var endCaps = this.options.endCaps;\n var isVertical = this.isVertical;\n var axis = this.getAxis();\n var valueBox = axis.getSlot(this.low, this.high);\n var centerBox = targetBox.center();\n var capsWidth = this.getCapsWidth(targetBox, isVertical);\n var capValue = isVertical ? centerBox.x : centerBox.y;\n var capStart = capValue - capsWidth;\n var capEnd = capValue + capsWidth;\n var 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: function(box, isVertical) {\n var boxSize = isVertical ? box.width() : box.height();\n var capsWidth = Math.min(Math.floor(boxSize / 2), DEFAULT_ERROR_BAR_WIDTH) || DEFAULT_ERROR_BAR_WIDTH;\n\n return capsWidth;\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var 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: function () {\n this$1$1.createDefaultVisual();\n var defaultVisual = this$1$1.visual;\n delete this$1$1.visual;\n return defaultVisual;\n }\n });\n } else {\n this.createDefaultVisual();\n }\n },\n\n createDefaultVisual: function() {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var linePoints = ref.linePoints;\n var lineOptions = {\n stroke: {\n color: options.color,\n width: options.line.width,\n dashType: options.line.dashType\n }\n };\n\n ChartElement.fn.createVisual.call(this);\n\n for (var idx = 0; idx < linePoints.length; idx += 2) {\n var line = new 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$1$1.visual.append(line);\n }\n }\n });\n\n setDefaultOptions(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\n var CategoricalErrorBar = ErrorBarBase.extend({\n getAxis: function() {\n var axis = this.chart.seriesValueAxis(this.series);\n\n return axis;\n }\n });\n\n function anyHasZIndex(elements) {\n for (var idx = 0; idx < elements.length; idx++) {\n if (defined(elements[idx].zIndex)) {\n return true;\n }\n }\n }\n\n function appendIfNotNull(array, element) {\n if (element !== null) {\n array.push(element);\n }\n }\n\n function areNumbers(values) {\n return countNumbers(values) === values.length;\n }\n\n function segmentVisible(series, fields, index) {\n var visible = fields.visible;\n if (defined(visible)) {\n return visible;\n }\n\n var pointVisibility = series.pointVisibility;\n if (pointVisibility) {\n return pointVisibility[index];\n }\n }\n\n function bindSegments(series) {\n var data = series.data;\n var points = [];\n var sum = 0;\n var count = 0;\n\n for (var idx = 0; idx < data.length; idx++) {\n var pointData = SeriesBinder.current.bindPoint(series, idx);\n var value = pointData.valueFields.value;\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 }\n\n function categoriesCount(series) {\n var seriesCount = series.length;\n var categories = 0;\n\n for (var i = 0; i < seriesCount; i++) {\n categories = Math.max(categories, series[i].data.length);\n }\n\n return categories;\n }\n\n function equalsIgnoreCase(a, b) {\n if (a && b) {\n return a.toLowerCase() === b.toLowerCase();\n }\n\n return a === b;\n }\n\n var MAX_EXPAND_DEPTH = 5;\n\n function evalOptions(options, context, state, dryRun) {\n if (state === void 0) { state = {}; }\n if (dryRun === void 0) { dryRun = false; }\n\n var defaults = state.defaults = state.defaults || {};\n var depth = state.depth = state.depth || 0;\n var needsEval = false;\n\n state.excluded = state.excluded || [];\n\n if (depth > MAX_EXPAND_DEPTH) {\n return null;\n }\n\n for (var property in options) {\n if (!inArray(property, state.excluded) && dataviz.hasOwnProperty(options, property)) {\n var 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 }\n\n function filterSeriesByType(series, types) {\n var result = [];\n\n var seriesTypes = [].concat(types);\n for (var idx = 0; idx < series.length; idx++) {\n var currentSeries = series[idx];\n if (inArray(currentSeries.type, seriesTypes)) {\n result.push(currentSeries);\n }\n }\n\n return result;\n }\n\n var dateCache = new WeakMap();\n\n function parseDateCategory(category, row, intlService) {\n if (row === null || typeof row !== 'object') {\n return parseDate(intlService, category);\n }\n\n var date = dateCache.get(row);\n if (!date) {\n date = parseDate(intlService, category);\n dateCache.set(row, date);\n }\n\n return date;\n }\n\n function hasGradientOverlay(options) {\n var overlay = options.overlay;\n\n return overlay && overlay.gradient && overlay.gradient !== \"none\";\n }\n\n function hasValue(value) {\n return defined(value) && value !== null;\n }\n\n function isDateAxis(axisOptions, sampleCategory) {\n var type = axisOptions.type;\n var dateCategory = sampleCategory instanceof Date;\n\n return (!type && dateCategory) || equalsIgnoreCase(type, DATE);\n }\n\n function singleItemOrArray(array) {\n return array.length === 1 ? array[0] : array;\n }\n\n var AREA_REGEX = /area/i;\n\n function 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\n function hasValue$1(series, item) {\n var fields = SeriesBinder.current.bindPoint(series, null, item);\n var valueFields = fields.valueFields;\n\n for (var field in valueFields) {\n if (dataviz.convertableToNumber(valueFields[field])) {\n return true;\n }\n }\n }\n\n function findNext(ref) {\n var start = ref.start;\n var dir = ref.dir;\n var min = ref.min;\n var max = ref.max;\n var getter$$1 = ref.getter;\n var hasItem = ref.hasItem;\n var series = ref.series;\n\n var pointHasValue, outPoint;\n var 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$$1(idx);\n pointHasValue = hasValue$1(series, outPoint.item);\n }\n } while (min <= idx && idx <= max && !pointHasValue);\n\n if (pointHasValue) {\n return outPoint;\n }\n }\n\n function createOutOfRangePoints(series, range, count, getter$$1, hasItem) {\n var min = range.min;\n var max = range.max;\n var hasMinPoint = min > 0 && min < count;\n var hasMaxPoint = max + 1 < count;\n\n if (hasMinPoint || hasMaxPoint) {\n var missingValues = seriesMissingValues(series);\n var minPoint, maxPoint;\n if (missingValues !== INTERPOLATE) {\n if (hasMinPoint) {\n minPoint = getter$$1(min - 1);\n }\n\n if (hasMaxPoint) {\n maxPoint = getter$$1(max + 1);\n }\n } else {\n var outPoint, pointHasValue;\n if (hasMinPoint) {\n outPoint = getter$$1(min - 1);\n pointHasValue = hasValue$1(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$$1,\n hasItem: hasItem,\n series: series\n });\n } else {\n minPoint = outPoint;\n }\n }\n\n if (hasMaxPoint) {\n outPoint = getter$$1(max + 1);\n pointHasValue = hasValue$1(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$$1,\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 }\n\n var CategoricalChart = ChartElement.extend({\n init: function(plotArea, options) {\n ChartElement.fn.init.call(this, 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: function() {\n this.traverseDataPoints(this.addValue.bind(this));\n },\n\n pointOptions: function(series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var 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: function(point) {\n if (!point) {\n return 0;\n }\n\n if (this.options.isStacked100 && isNumber(point.value)) {\n var categoryIx = point.categoryIx;\n var categoryPoints = this.categoryPoints[categoryIx];\n var otherValues = [];\n var categorySum = 0;\n\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n if (other) {\n var stack = point.series.stack;\n var 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: function(point, startValue) {\n var this$1$1 = this;\n if (startValue === void 0) { startValue = 0; }\n\n var categoryPoints = this.categoryPoints[point.categoryIx];\n\n if (this.options.isStacked) {\n var plotValue = this.plotValue(point);\n var positive = plotValue >= 0;\n var prevValue = startValue;\n var isStackedBar = false;\n var stack = defined(point.series.stack) ? point.series.stack : this.options.defaultStack;\n var isNonGroupStack = function (stack) { return stack === true || typeof stack === datavizConstants.OBJECT && !stack.group; };\n\n if (stack) {\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n var otherStack = defined(other.series.stack) ? other.series.stack : this$1$1.options.defaultStack;\n\n if (!otherStack) {\n continue;\n }\n\n if (typeof stack === datavizConstants.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 var otherValue = this$1$1.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$1$1.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 var series = point.series;\n var valueAxis = this.seriesValueAxis(series);\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, dataviz.convertableToNumber(point.value) ? point.value : axisCrossingValue ];\n },\n\n stackLimits: function(axisName, stackName) {\n var this$1$1 = this;\n\n var min = MAX_VALUE;\n var max = MIN_VALUE;\n\n for (var i = 0; i < this.categoryPoints.length; i++) {\n var categoryPoints = this$1$1.categoryPoints[i];\n if (!categoryPoints) {\n continue;\n }\n\n for (var pIx = 0; pIx < categoryPoints.length; pIx++) {\n var point = categoryPoints[pIx];\n if (point) {\n if (point.series.stack === stackName || point.series.axis === axisName) {\n var to = this$1$1.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: function() {\n var this$1$1 = this;\n\n var ref = this.options;\n var isStacked = ref.isStacked;\n var chartSeries = ref.series;\n var limitsCache = {};\n\n if (isStacked) {\n for (var i = 0; i < chartSeries.length; i++) {\n var series = chartSeries[i];\n var axisName = series.axis;\n var key = axisName + series.stack;\n\n var limits = limitsCache[key];\n if (!limits) {\n limits = this$1$1.stackLimits(axisName, series.stack);\n\n var errorTotals = this$1$1.errorTotals;\n if (errorTotals) {\n if (errorTotals.negative.length) {\n limits.min = Math.min(limits.min, dataviz.sparseArrayLimits(errorTotals.negative).min);\n }\n if (errorTotals.positive.length) {\n limits.max = Math.max(limits.max, dataviz.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$1$1.valueAxisRanges[axisName] = limits;\n }\n }\n }\n },\n\n addErrorBar: function(point, data, categoryIx) {\n var value = point.value;\n var series = point.series;\n var seriesIx = point.seriesIx;\n var errorBars = point.options.errorBars;\n var lowValue = data.fields[ERROR_LOW_FIELD];\n var highValue = data.fields[ERROR_HIGH_FIELD];\n var 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: function(point, categoryIx) {\n var isVertical = !this.options.invertAxes;\n var options = point.options.errorBars;\n var series = point.series;\n var low = point.low;\n var high = point.high;\n\n if (this.options.isStacked) {\n var stackedErrorRange = this.stackedErrorRange(point, categoryIx);\n low = stackedErrorRange.low;\n high = stackedErrorRange.high;\n } else {\n var fields = { categoryIx: categoryIx, series: series };\n this.updateRange({ value: low }, fields);\n this.updateRange({ value: high }, fields);\n }\n\n var errorBar = new CategoricalErrorBar(low, high, isVertical, this, series, options);\n point.errorBars = [ errorBar ];\n point.append(errorBar);\n },\n\n stackedErrorRange: function(point, categoryIx) {\n var plotValue = this.plotRange(point, 0)[1] - point.value;\n var low = point.low + plotValue;\n var 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: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n\n var categoryPoints = this.categoryPoints[categoryIx];\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n var seriesPoints = this.seriesPoints[seriesIx];\n if (!seriesPoints) {\n this.seriesPoints[seriesIx] = seriesPoints = [];\n }\n\n var point = this.createPoint(data, fields);\n if (point) {\n $.extend(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: function(options, value, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var 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 var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var 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: function(data, fields) {\n var axisName = fields.series.axis;\n var value = data.value;\n var 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: function(series) {\n var plotArea = this.plotArea;\n var axisName = series.axis;\n var 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: function(targetBox) {\n var this$1$1 = this;\n\n var categorySlots = this.categorySlots = [];\n var chartPoints = this.points;\n var categoryAxis = this.categoryAxis;\n var pointIx = 0;\n\n this.traverseDataPoints(function (data, fields) {\n var categoryIx = fields.categoryIx;\n var currentSeries = fields.series;\n\n var valueAxis = this$1$1.seriesValueAxis(currentSeries);\n var point = chartPoints[pointIx++];\n\n var categorySlot = categorySlots[categoryIx];\n if (!categorySlot) {\n categorySlots[categoryIx] = categorySlot =\n this$1$1.categorySlot(categoryAxis, categoryIx, valueAxis);\n }\n\n if (point) {\n var plotRange = this$1$1.plotRange(point, valueAxis.startValue());\n var valueSlot = this$1$1.valueSlot(valueAxis, plotRange);\n if (valueSlot) {\n var pointSlot = this$1$1.pointSlot(categorySlot, valueSlot);\n\n point.aboveAxis = this$1$1.aboveAxis(point, valueAxis);\n point.stackValue = plotRange[1];\n\n if (this$1$1.options.isStacked100) {\n point.percentage = this$1$1.plotValue(point);\n }\n\n this$1$1.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: function(valueAxis, plotRange) {\n return valueAxis.getSlot(plotRange[0], plotRange[1], !this.options.clip);\n },\n\n limitPoints: function() {\n var this$1$1 = this;\n\n var categoryPoints = this.categoryPoints;\n var points = categoryPoints[0].concat(last(categoryPoints));\n for (var idx = 0; idx < points.length; idx++) {\n if (points[idx]) {\n this$1$1.limitPoint(points[idx]);\n }\n }\n },\n\n limitPoint: function(point) {\n var limitedSlot = this.categoryAxis.limitSlot(point.box);\n if (!limitedSlot.equals(point.box)) {\n point.reflow(limitedSlot);\n }\n },\n\n aboveAxis: function(point, valueAxis) {\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n var value = point.value;\n\n return valueAxis.options.reverse ?\n value < axisCrossingValue : value >= axisCrossingValue;\n },\n\n categoryAxisCrossingValue: function(valueAxis) {\n var categoryAxis = this.categoryAxis;\n var options = valueAxis.options;\n var crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n\n return crossingValues[categoryAxis.axisIndex || 0] || 0;\n },\n\n reflowPoint: function(point, pointSlot) {\n point.reflow(pointSlot);\n },\n\n reflowCategories: function() { },\n\n pointSlot: function(categorySlot, valueSlot) {\n var options = this.options;\n var invertAxes = options.invertAxes;\n var slotX = invertAxes ? valueSlot : categorySlot;\n var slotY = invertAxes ? categorySlot : valueSlot;\n\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n },\n\n categorySlot: function(categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var series = this.options.series;\n var count = categoriesCount(series);\n var seriesCount = series.length;\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n this$1$1._outOfRangeCallback(series[seriesIx], \"_outOfRangeMinPoint\", seriesIx, callback);\n }\n\n for (var categoryIx = 0; categoryIx < count; categoryIx++) {\n for (var seriesIx$1 = 0; seriesIx$1 < seriesCount; seriesIx$1++) {\n var currentSeries = series[seriesIx$1];\n var currentCategory = this$1$1.categoryAxis.categoryAt(categoryIx);\n var pointData = this$1$1.plotArea.bindPoint(currentSeries, categoryIx);\n\n callback(pointData, {\n category: currentCategory,\n categoryIx: categoryIx,\n categoriesCount: count,\n series: currentSeries,\n seriesIx: seriesIx$1\n });\n }\n }\n\n for (var seriesIx$2 = 0; seriesIx$2 < seriesCount; seriesIx$2++) {\n this$1$1._outOfRangeCallback(series[seriesIx$2], \"_outOfRangeMaxPoint\", seriesIx$2, callback);\n }\n },\n\n _outOfRangeCallback: function(series, field, seriesIx, callback) {\n var outOfRangePoint = series[field];\n if (outOfRangePoint) {\n var categoryIx = outOfRangePoint.categoryIx;\n var 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: function(point, format) {\n if (point.value === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value);\n },\n\n pointValue: function(data) {\n return data.valueFields.value;\n }\n });\n\n setDefaultOptions(CategoricalChart, {\n series: [],\n invertAxes: false,\n isStacked: false,\n clip: true,\n limitPoints: true\n });\n\n var 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\n var NoteMixin = {\n createNote: function() {\n var options = this.options.notes;\n var text = this.noteText || options.label.text;\n\n if (options.visible !== false && defined(text) && text !== null) {\n this.note = new dataviz.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\n function guid() {\n var id = \"\";\n var i;\n var 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 }\n\n var LinePoint = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this);\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: function() {\n var ref = this.options;\n var markers = ref.markers;\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: function() {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n this.label = this.createLabelElement(labels);\n this.append(this.label);\n }\n },\n\n createLabelElement: function(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: function(options) {\n var 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: function() {\n var labels = this.options.labels;\n var ariaTemplate = dataviz.getAriaTemplate(labels);\n\n if (ariaTemplate) {\n return ariaTemplate(this.pointData());\n }\n\n return this.getLabelText(labels);\n },\n\n markerBorder: function() {\n var options = this.options.markers;\n var background = options.background;\n var 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: function() {},\n\n createMarker: function() {\n var options = this.options.markers;\n var 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: function() {\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: function(targetBox) {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var aboveAxis = ref.aboveAxis;\n var vertical = options.vertical;\n\n this.render();\n\n this.box = targetBox;\n var 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 (var i = 0; i < this.errorBars.length; i++) {\n this$1$1.errorBars[i].reflow(childBox);\n }\n }\n\n if (this.note) {\n var noteTargetBox = this.markerBox();\n\n if (!(options.markers.visible && options.markers.size)) {\n var 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: function(box) {\n var ref = this;\n var options = ref.options;\n var label = ref.label;\n var 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: function() {\n var markers = this.options.highlight.markers;\n var defaultColor = this.markerBorder().color;\n var options = this.options.markers;\n var size = options.size + (options.border.width || 0) + (markers.border.width || 0);\n\n var 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: function() {\n return (this.marker || {}).visual;\n },\n\n highlightVisualArgs: function() {\n var marker = this.marker;\n var visual, rect;\n\n if (marker) {\n rect = marker.paddingBox.toRect();\n visual = marker.visual;\n } else {\n var size = this.options.markers.size;\n var halfSize = size / 2;\n var center = this.box.center();\n rect = new geometry.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: function() {\n var markerOptions = this.options.markers;\n var highlightOptions = this.options.accessibility.highlight;\n var size = markerOptions.size + (markerOptions.border.width || 0);\n\n var 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: function() {\n var markerBox = this.markerBox();\n var clipBox = this.owner.pane.clipBox();\n var showTooltip = !clipBox || clipBox.overlaps(markerBox);\n\n if (showTooltip) {\n var x = markerBox.x2 + TOOLTIP_OFFSET;\n var horizontalAlign = LEFT;\n var 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: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n overlapsBox: function(box) {\n var markerBox = this.markerBox();\n return markerBox.overlaps(box);\n },\n\n unclipElements: function() {\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: function() {\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: function() {\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: function() {\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: function() {\n return defined(this.categoryIx) ? this.categoryIx : this.pointIx;\n }\n });\n\n LinePoint.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: datavizConstants.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\n deepExtend(LinePoint.prototype, PointEventsMixin);\n deepExtend(LinePoint.prototype, NoteMixin);\n\n var LineSegment = ChartElement.extend({\n init: function(linePoints, series, seriesIx) {\n ChartElement.fn.init.call(this);\n\n this.linePoints = linePoints;\n this.series = series;\n this.seriesIx = seriesIx;\n },\n\n points: function() {\n return this.toGeometryPoints(this.linePoints);\n },\n\n toGeometryPoints: function(points) {\n var result = [];\n for (var 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: function() {\n var this$1$1 = this;\n\n var 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: function () {\n this$1$1.segmentVisual();\n\n return this$1$1.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: function() {\n var ref = this;\n var options = ref.options;\n var series = ref.series;\n var color = series.color;\n var defaults = series._defaults;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var line = 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: function(e, coords) {\n return this.parent.getNearestPoint(coords.x, coords.y, this.seriesIx);\n }\n });\n\n setDefaultOptions(LineSegment, {\n closed: false\n });\n\n var StepLineMixin = {\n calculateStepPoints: function(points) {\n var categoryAxis = this.parent.plotArea.seriesCategoryAxis(this.series);\n var ref = categoryAxis.options;\n var justified = ref.justified;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n\n var stepAxis = vertical ? X : Y;\n var axis = vertical ? Y : X;\n var stepDir = reverse ? 2 : 1;\n var dir = stepDir;\n\n var previousPoint = toGeometryPoint(points[0], stepAxis, stepDir, axis, dir);\n var result = [ previousPoint ];\n\n for (var idx = 1; idx < points.length; idx++) {\n var point = toGeometryPoint(points[idx], stepAxis, stepDir, axis, dir);\n\n if (previousPoint[stepAxis] !== point[stepAxis]) {\n var stepPoint = new GeometryPoint();\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\n function toGeometryPoint(lintPoint, stepAxis, stepDir, axis, dir) {\n var box = lintPoint.box;\n var result = new GeometryPoint();\n\n result[stepAxis] = box[stepAxis + stepDir];\n result[axis] = box[axis + dir];\n\n return result;\n }\n\n var StepLineSegment = LineSegment.extend({\n points: function() {\n return this.calculateStepPoints(this.linePoints);\n }\n });\n\n deepExtend(StepLineSegment.prototype, StepLineMixin);\n\n var SplineSegment = LineSegment.extend({\n segmentVisual: function() {\n var series = this.series;\n var defaults = series._defaults;\n var color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var curveProcessor = new CurveProcessor(this.options.closed);\n var segments = curveProcessor.process(this.points());\n var curve = new 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\n var LineChartMixin = {\n renderSegments: function() {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var seriesPoints = ref.seriesPoints;\n var series = options.series;\n var seriesCount = seriesPoints.length;\n var lastSegment;\n\n this._segments = [];\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n var currentSeries = series[seriesIx];\n var sortedPoints = this$1$1.sortPoints(seriesPoints[seriesIx]);\n var pointCount = sortedPoints.length;\n var linePoints = [];\n\n for (var pointIx = 0; pointIx < pointCount; pointIx++) {\n var point = sortedPoints[pointIx];\n if (point) {\n linePoints.push(point);\n } else if (this$1$1.seriesMissingValues(currentSeries) !== INTERPOLATE) {\n if (linePoints.length > 1) {\n lastSegment = this$1$1.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this$1$1._addSegment(lastSegment);\n }\n linePoints = [];\n }\n }\n\n if (linePoints.length > 1) {\n lastSegment = this$1$1.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this$1$1._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 var missingValues = series.missingValues;\n var assumeZero = !missingValues && this.options.isStacked;\n\n return assumeZero ? ZERO : missingValues || INTERPOLATE;\n },\n\n getNearestPoint: function(x, y, seriesIx) {\n var target = new Point(x, y);\n var allPoints = this.seriesPoints[seriesIx];\n var nearestPointDistance = MAX_VALUE;\n var nearestPoint;\n\n for (var i = 0; i < allPoints.length; i++) {\n var point = allPoints[i];\n\n if (point && defined(point.value) && point.value !== null && point.visible !== false) {\n var pointBox = point.box;\n var 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\n var ClipAnimation = Animation.extend({\n setup: function() {\n this._setEnd(this.options.box.x1);\n },\n\n step: function(pos) {\n var box = this.options.box;\n this._setEnd(dataviz.interpolateValue(box.x1, box.x2, pos));\n },\n\n _setEnd: function(x) {\n var element = this.element;\n var segments = element.segments;\n var topRight = segments[1].anchor();\n var bottomRight = segments[2].anchor();\n\n element.suspend();\n topRight.setX(x);\n element.resume();\n bottomRight.setX(x);\n }\n });\n\n setDefaultOptions(ClipAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n });\n\n AnimationFactory.current.register(\"clip\", ClipAnimation);\n\n var ClipAnimationMixin = {\n createAnimation: function() {\n var root = this.getRoot();\n if (root && (root.options || {}).transitions !== false) {\n var box = root.size();\n var clipPath = 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 var points = this.animationPoints();\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point && point.visual && defined(point.visual.options.zIndex)) {\n point.visual.clip(clipPath);\n }\n }\n }\n };\n\n var LineChart = CategoricalChart.extend({\n render: function() {\n\n CategoricalChart.fn.render.call(this);\n\n this.updateStackRange();\n this.renderSegments();\n },\n\n pointType: function() {\n return LinePoint;\n },\n\n createPoint: function(data, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var missingValues = this.seriesMissingValues(series);\n var 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 var pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n var color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n plotRange: function(point) {\n var this$1$1 = this;\n\n var plotValue = this.plotValue(point);\n\n if (this.options.isStacked) {\n var categoryIx = point.categoryIx;\n var categoryPoints = this.categoryPoints[categoryIx];\n\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n plotValue += this$1$1.plotValue(other);\n\n if (this$1$1.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n\n }\n\n return [ plotValue, plotValue ];\n },\n\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var 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: function() {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result.concat(this._segments);\n },\n\n supportsPointInactiveOpacity: function() {\n return false;\n }\n });\n\n deepExtend(LineChart.prototype, LineChartMixin, ClipAnimationMixin);\n\n var AreaSegment = LineSegment.extend({\n init: function(linePoints, currentSeries, seriesIx, prevSegment, stackPoints) {\n LineSegment.fn.init.call(this, linePoints, currentSeries, seriesIx);\n\n this.prevSegment = prevSegment;\n this.stackPoints = stackPoints;\n },\n\n createVisual: function() {\n var series = this.series;\n var defaults = series._defaults;\n var lineOptions = series.line || {};\n var color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n this.visual = new 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: function() {\n var segments = this._strokeSegments;\n\n if (!segments) {\n segments = this._strokeSegments = this.createStrokeSegments();\n }\n\n return segments;\n },\n\n createStrokeSegments: function() {\n return this.segmentsFromPoints(this.points());\n },\n\n stackSegments: function() {\n if (this.prevSegment) {\n return this.prevSegment.createStackSegments(this.stackPoints);\n }\n\n return this.createStackSegments(this.stackPoints);\n },\n\n createStackSegments: function(stackPoints) {\n return this.segmentsFromPoints(this.toGeometryPoints(stackPoints)).reverse();\n },\n\n segmentsFromPoints: function(points) {\n return points.map(function (point) { return new geometry.Segment(point); });\n },\n\n createStroke: function(style) {\n var stroke = new Path(style);\n stroke.segments.push.apply(stroke.segments, this.strokeSegments());\n\n this.visual.append(stroke);\n },\n\n hasStackSegment: function() {\n return this.prevSegment || (this.stackPoints && this.stackPoints.length);\n },\n\n createFill: function(style) {\n var strokeSegments = this.strokeSegments();\n var fillSegments = strokeSegments.slice(0);\n var hasStackSegments = this.hasStackSegment();\n\n if (hasStackSegments) {\n var stackSegments = this.stackSegments();\n\n append(fillSegments, stackSegments);\n }\n\n var fill = new 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: function(fillPath) {\n var chart = this.parent;\n var invertAxes = chart.options.invertAxes;\n var valueAxis = chart.seriesValueAxis(this.series);\n var crossingValue = chart.categoryAxisCrossingValue(valueAxis);\n var endSlot = valueAxis.getSlot(crossingValue, crossingValue, true);\n var segments = this.strokeSegments();\n var firstPoint = segments[0].anchor();\n var lastPoint = last(segments).anchor();\n var 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\n var StepAreaSegment = AreaSegment.extend({\n createStrokeSegments: function() {\n return this.segmentsFromPoints(this.calculateStepPoints(this.linePoints));\n },\n\n createStackSegments: function(stackPoints) {\n return this.segmentsFromPoints(this.calculateStepPoints(stackPoints)).reverse();\n }\n });\n\n deepExtend(StepAreaSegment.prototype, StepLineMixin);\n\n var SplineAreaSegment = AreaSegment.extend({\n createStrokeSegments: function() {\n var curveProcessor = new CurveProcessor(this.options.closed);\n var linePoints = this.points();\n\n return curveProcessor.process(linePoints);\n },\n\n createStackSegments: function() {\n var strokeSegments = this.strokeSegments();\n var stackSegments = [];\n for (var idx = strokeSegments.length - 1; idx >= 0; idx--) {\n var segment = strokeSegments[idx];\n stackSegments.push(new geometry.Segment(\n segment.anchor(),\n segment.controlOut(),\n segment.controlIn()\n ));\n }\n\n return stackSegments;\n }\n });\n\n var AreaChart = LineChart.extend({\n createSegment: function(linePoints, currentSeries, seriesIx, prevSegment) {\n var isStacked = this.options.isStacked;\n var style = (currentSeries.line || {}).style;\n var previousSegment;\n\n var stackPoints;\n if (isStacked && seriesIx > 0 && prevSegment) {\n var 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 var 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: function(targetBox) {\n var this$1$1 = this;\n\n LineChart.fn.reflow.call(this, targetBox);\n\n var stackPoints = this._stackPoints;\n if (stackPoints) {\n for (var idx = 0; idx < stackPoints.length; idx++) {\n var stackPoint = stackPoints[idx];\n var pointSlot = this$1$1.categoryAxis.getSlot(stackPoint.categoryIx);\n stackPoint.reflow(pointSlot);\n }\n }\n },\n\n _gapStackPoints: function(linePoints, seriesIx, style) {\n var this$1$1 = this;\n\n var seriesPoints = this.seriesPoints;\n var startIdx = linePoints[0].categoryIx;\n var length = linePoints.length;\n if (startIdx < 0) {\n startIdx = 0;\n length--;\n }\n\n var endIdx = startIdx + length;\n var pointOffset = this.seriesOptions[0]._outOfRangeMinPoint ? 1 : 0;\n var stackPoints = [];\n\n this._stackPoints = this._stackPoints || [];\n for (var categoryIx = startIdx; categoryIx < endIdx; categoryIx++) {\n var pointIx = categoryIx + pointOffset;\n var currentSeriesIx = seriesIx;\n var point = (void 0);\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$1$1._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$1$1._previousSegmentPoint(categoryIx, pointIx, pointIx + 1, currentSeriesIx));\n }\n } else {\n var gapStackPoint = this$1$1._createGapStackPoint(categoryIx);\n this$1$1._stackPoints.push(gapStackPoint);\n stackPoints.push(gapStackPoint);\n }\n }\n\n return stackPoints;\n },\n\n _previousSegmentPoint: function(categoryIx, pointIx, segmentIx, seriesIdx) {\n var seriesPoints = this.seriesPoints;\n var index = seriesIdx;\n var 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: function(categoryIx) {\n var options = this.pointOptions({}, 0);\n var point = new LinePoint(0, options);\n point.categoryIx = categoryIx;\n point.series = {};\n\n return point;\n },\n\n seriesMissingValues: function(series) {\n return series.missingValues || ZERO;\n },\n\n supportsPointInactiveOpacity: function() {\n return false;\n }\n });\n\n var AxisGroupRangeTracker = Class.extend({\n init: function() {\n\n this.axisRanges = {};\n },\n\n update: function(chartAxisRanges) {\n var axisRanges = this.axisRanges;\n\n for (var axisName in chartAxisRanges) {\n var chartRange = chartAxisRanges[axisName];\n var 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: function(axisName) {\n this.axisRanges[axisName] = undefined;\n },\n\n query: function(axisName) {\n return this.axisRanges[axisName];\n }\n });\n\n var BarLabel = ChartElement.extend({\n init: function(content, options, pointData) {\n ChartElement.fn.init.call(this, options);\n\n this.textBox = new TextBox(content, this.options, pointData);\n this.append(this.textBox);\n },\n\n createVisual: function() {\n this.textBox.options.noclip = this.options.noclip;\n },\n\n reflow: function(targetBox) {\n var options = this.options;\n var vertical = options.vertical;\n var aboveAxis = options.aboveAxis;\n var text = this.children[0];\n var textOptions = text.options;\n var box = text.box;\n var padding = text.options.padding;\n var 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: function(clipBox) {\n var vertical = this.options.vertical;\n var field = vertical ? Y : X;\n var start = field + \"1\";\n var end = field + \"2\";\n var text = this.children[0];\n var parentBox = this.parent.box;\n\n if (parentBox[start] < clipBox[start] || clipBox[end] < parentBox[end]) {\n var 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\n setDefaultOptions(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\n 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\n var AccessibilityAttributesMixin = {\n addAccessibilityAttributesToVisual: function() {\n this._id = this._id || guid();\n\n var accessibilityOptions = deepExtend({\n ariaLabel: this.getAriaLabelText()\n }, this.options.accessibility);\n\n addAccessibilityAttributesToVisual(this.visual, accessibilityOptions);\n },\n\n getAriaLabelText: function getAriaLabelText() {\n var labels = this.options.labels;\n var ariaTemplate = dataviz.getAriaTemplate(labels);\n\n if (ariaTemplate) {\n return ariaTemplate(this.pointData());\n }\n\n return this.getLabelText(labels);\n },\n\n focusVisual: function focusVisual() {\n this.visual.options.set(\"id\", this._id);\n this.toggleFocusHighlight(true);\n },\n\n clearFocusFromVisual: function clearFocusFromVisual() {\n this.visual.options.set(\"id\", \"\");\n this.toggleFocusHighlight(false);\n }\n };\n\n var BAR_ALIGN_MIN_WIDTH = 6;\n\n var Bar = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this);\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: function() {\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: function() {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n this.label = this.createLabelElement(labels);\n this.append(this.label);\n }\n },\n\n createLabelElement: function(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: function(options) {\n var labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n }\n\n return this.formatValue(options.format);\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n this.render();\n\n var 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 (var i = 0; i < this.errorBars.length; i++) {\n this$1$1.errorBars[i].reflow(targetBox);\n }\n }\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var ref = this;\n var box = ref.box;\n var options = ref.options;\n var customVisual = options.visual;\n\n if (this.visible !== false) {\n ChartElement.fn.createVisual.call(this);\n\n this.addAccessibilityAttributesToVisual();\n\n if (customVisual) {\n var 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: function () {\n var group = new Group();\n this$1$1.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: function(visual) {\n var options = this.options;\n var border = options.border;\n var strokeOpacity = defined(border.opacity) ? border.opacity : options.opacity;\n var rect = this.box.toRect();\n\n rect.size.width = Math.round(rect.size.width);\n\n var path = this.rectVisual = 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 var width = this.box.width();\n var height = this.box.height();\n\n var 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 var 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: function(style) {\n var highlight = Path.fromRect(this.box.toRect(), style);\n\n return alignPathToPixel(highlight);\n },\n\n highlightVisual: function() {\n return this.rectVisual;\n },\n\n highlightVisualArgs: function() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n },\n\n createFocusHighlight: function(style) {\n var borderWidth = this.options.accessibility.highlight.border.width;\n var highlight = Path.fromRect(this.box.pad(borderWidth / 2).toRect(), style);\n\n return alignPathToPixel(highlight);\n },\n\n getBorderColor: function() {\n var color = this.color;\n var border = this.options.border;\n var brightness = border._brightness || BORDER_BRIGHTNESS;\n var 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: function() {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var aboveAxis = ref.aboveAxis;\n var clipBox = this.owner.pane.clipBox() || box;\n var horizontalAlign = LEFT;\n var verticalAlign = TOP;\n var 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 var x1 = Math.max(box.x1, clipBox.x1);\n var 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: function(box) {\n return this.box.overlaps(box);\n },\n\n pointData: function() {\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: function() {\n return this.categoryIx;\n }\n });\n\n deepExtend(Bar.prototype, PointEventsMixin);\n deepExtend(Bar.prototype, NoteMixin);\n deepExtend(Bar.prototype, AccessibilityAttributesMixin);\n\n Bar.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\n function forEach(elements, callback) {\n elements.forEach(callback);\n }\n\n function forEachReverse(elements, callback) {\n var length = elements.length;\n\n for (var idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx - length - 1);\n }\n }\n\n var ClusterLayout = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n },\n\n reflow: function(box) {\n var ref = this.options;\n var vertical = ref.vertical;\n var gap = ref.gap;\n var spacing = ref.spacing;\n var children = this.children;\n var count = children.length;\n var axis = vertical ? Y : X;\n var slots = count + gap + (spacing * (count - 1));\n var slotSize = (vertical ? box.height() : box.width()) / slots;\n var position = box[axis + 1] + slotSize * (gap / 2);\n\n this.forEach(children, function (child, idx) {\n var 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\n setDefaultOptions(ClusterLayout, {\n vertical: false,\n gap: 0,\n spacing: 0\n });\n\n var StackWrap = ChartElement.extend({\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var positionAxis = this.options.vertical ? X : Y;\n var children = this.children;\n var childrenCount = children.length;\n var box = this.box = new Box();\n\n for (var i = 0; i < childrenCount; i++) {\n var currentChild = children[i];\n\n if (currentChild.visible !== false) {\n var childBox = currentChild.box.clone();\n childBox.snapTo(targetBox, positionAxis);\n\n if (i === 0) {\n box = this$1$1.box = childBox.clone();\n }\n\n currentChild.reflow(childBox);\n box.wrap(childBox);\n }\n }\n }\n });\n\n setDefaultOptions(StackWrap, {\n vertical: true\n });\n\n var BarChart = CategoricalChart.extend({\n render: function() {\n CategoricalChart.fn.render.call(this);\n this.updateStackRange();\n },\n\n pointType: function() {\n return Bar;\n },\n\n clusterType: function() {\n return ClusterLayout;\n },\n\n stackType: function() {\n return StackWrap;\n },\n\n stackLimits: function(axisName, stackName) {\n var limits = CategoricalChart.fn.stackLimits.call(this, axisName, stackName);\n\n return limits;\n },\n\n createPoint: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var stackOrDefault = defined(series.stack) ? series.stack : options.defaultStack;\n var value = this.pointValue(data);\n var pointOptions = this.pointOptions(series, seriesIx);\n\n var 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 var 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 var pointType = this.pointType();\n var point = new pointType(value, pointOptions);\n point.color = color;\n\n var cluster = children[categoryIx];\n if (!cluster) {\n var 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 var stackWrap = this.getStackWrap(stackOrDefault, cluster);\n stackWrap.append(point);\n } else {\n cluster.append(point);\n }\n\n return point;\n },\n\n getStackWrap: function(stack, cluster) {\n var stackGroup = (typeof stack === datavizConstants.OBJECT) ? (stack.group || true) : stack;\n var wraps = cluster.children;\n var stackWrap;\n\n if (typeof stackGroup === datavizConstants.STRING || stackGroup === true) {\n for (var 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 var 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: function(categoryAxis, categoryIx, valueAxis) {\n var options = this.options;\n var categorySlot = categoryAxis.getSlot(categoryIx);\n var startValue = valueAxis.startValue();\n\n if (options.isStacked) {\n var zeroSlot = valueAxis.getSlot(startValue, startValue, true);\n var stackAxis = options.invertAxes ? X : Y;\n categorySlot[stackAxis + 1] = categorySlot[stackAxis + 2] = zeroSlot[stackAxis + 1];\n }\n\n return categorySlot;\n },\n\n reflowCategories: function(categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n },\n\n createAnimation: function() {\n this._setAnimationOptions();\n CategoricalChart.fn.createAnimation.call(this);\n\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation();\n }\n },\n\n _setChildrenAnimation: function() {\n var this$1$1 = this;\n\n var points = this.points;\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n var pointVisual = point.visual;\n if (pointVisual && defined(pointVisual.options.zIndex)) {\n point.options.animation = this$1$1.options.animation;\n point.createAnimation();\n }\n }\n },\n\n _setAnimationOptions: function() {\n var options = this.options;\n var animation = options.animation || {};\n var origin;\n\n if (options.isStacked) {\n var 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 GeometryPoint(origin.x1, origin.y1);\n animation.vertical = !options.invertAxes;\n }\n });\n\n setDefaultOptions(BarChart, {\n animation: {\n type: BAR\n }\n });\n\n var Candlestick = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this, options);\n this.value = value;\n },\n\n getLabelText: function(options) {\n return this.formatValue(options.format);\n },\n\n reflow: function(box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var ocSlot = valueAxis.getSlot(value.open, value.close);\n var 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 var mid = lhSlot.center().x;\n var 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: function() {\n if (this.note) {\n this.note.reflow(this.box);\n }\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\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: function(options) {\n var group = new Group();\n\n this.createBody(group, options);\n this.createLines(group, options);\n\n return group;\n },\n\n createBody: function(container, options) {\n var body = 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: function(container, options) {\n this.drawLines(container, options, this.lines, options.line);\n },\n\n drawLines: function(container, options, lines, lineOptions) {\n if (!lines) {\n return;\n }\n\n var 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 (var i = 0; i < lines.length; i++) {\n var line = Path.fromPoints(lines[i], lineStyle);\n alignPathToPixel(line);\n container.append(line);\n }\n },\n\n getBorderColor: function() {\n var border = this.options.border;\n var 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: function() {\n var overlay = 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: function() {\n var highlight = this.options.highlight;\n var normalColor = this.color;\n\n this.color = highlight.color || this.color;\n var 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: function() {\n return this._mainVisual;\n },\n\n highlightVisualArgs: function() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this._mainVisual\n };\n },\n\n tooltipAnchor: function() {\n var box = this.box;\n var 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: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n overlapsBox: function(box) {\n return this.box.overlaps(box);\n },\n\n pointData: function() {\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: function() {\n return this.categoryIx;\n }\n });\n\n Candlestick.prototype.createFocusHighlight = Bar.prototype.createFocusHighlight;\n\n setDefaultOptions(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\n deepExtend(Candlestick.prototype, PointEventsMixin);\n deepExtend(Candlestick.prototype, NoteMixin);\n deepExtend(Candlestick.prototype, AccessibilityAttributesMixin);\n\n var CandlestickChart = CategoricalChart.extend({\n reflowCategories: function(categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n },\n\n addValue: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var value = data.valueFields;\n var valueParts = this.splitValue(value);\n var hasValue = areNumbers(valueParts);\n var dataItem = series.data[categoryIx];\n var categoryPoints = this.categoryPoints[categoryIx];\n var point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n var 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: function() {\n return Candlestick;\n },\n\n createPoint: function(data, fields) {\n var series = fields.series;\n var pointType = this.pointType();\n var value = data.valueFields;\n var pointOptions = deepExtend({}, series);\n var 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 var point = new pointType(value, pointOptions);\n point.color = color;\n\n return point;\n },\n\n splitValue: function(value) {\n return [ value.low, value.open, value.close, value.high ];\n },\n\n updateRange: function(value, fields) {\n var axisName = fields.series.axis;\n var parts = this.splitValue(value);\n var 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: function(point, format) {\n var 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: function() {\n return this.points;\n }\n });\n\n deepExtend(CandlestickChart.prototype, ClipAnimationMixin);\n\n var BoxPlot = Candlestick.extend({\n init: function(value, options) {\n Candlestick.fn.init.call(this, value, options);\n\n this.createNote();\n },\n\n reflow: function(box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var 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 var medianSlot = valueAxis.getSlot(value.median);\n\n if (value.mean) {\n var 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: function(box) {\n this.boxSlot.x1 = box.x1;\n this.boxSlot.x2 = box.x2;\n },\n\n reflowWhiskerSlot: function(box) {\n this.whiskerSlot.x1 = box.x1;\n this.whiskerSlot.x2 = box.x2;\n },\n\n calcMeanPoints: function(box, meanSlot) {\n return [\n [ [ box.x1, meanSlot.y1 ], [ box.x2, meanSlot.y1 ] ]\n ];\n },\n\n calcWhiskerPoints: function(boxSlot, whiskerSlot) {\n var 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: function(box, medianSlot) {\n return [\n [ [ box.x1, medianSlot.y1 ], [ box.x2, medianSlot.y1 ] ]\n ];\n },\n\n renderOutliers: function(options) {\n var this$1$1 = this;\n\n var value = this.value;\n var outliers = value.outliers || [];\n var outerFence = Math.abs(value.q3 - value.q1) * 3;\n var elements = [];\n var markers = options.markers || {};\n\n for (var i = 0; i < outliers.length; i++) {\n var 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 var markersBorder = deepExtend({}, markers.border);\n\n if (!defined(markersBorder.color)) {\n if (defined(this$1$1.color)) {\n markersBorder.color = this$1$1.color;\n } else {\n markersBorder.color =\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n }\n\n var 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: function(outliers) {\n var this$1$1 = this;\n\n var valueAxis = this.owner.seriesValueAxis(this.options);\n var center = this.box.center();\n\n for (var i = 0; i < outliers.length; i++) {\n var outlierValue = outliers[i].value;\n var markerBox = valueAxis.getSlot(outlierValue);\n\n if (this$1$1.options.vertical) {\n markerBox.move(center.x);\n } else {\n markerBox.move(undefined, center.y);\n }\n\n this$1$1.box = this$1$1.box.wrap(markerBox);\n outliers[i].reflow(markerBox);\n }\n },\n\n mainVisual: function(options) {\n var group = Candlestick.fn.mainVisual.call(this, options);\n var outliers = this.renderOutliers(options);\n\n for (var i = 0; i < outliers.length; i++) {\n var element = outliers[i].getElement();\n if (element) {\n group.append(element);\n }\n }\n\n return group;\n },\n\n createLines: function(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: function() {\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 Candlestick.fn.getBorderColor.call(this);\n }\n });\n\n setDefaultOptions(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: datavizConstants.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\n deepExtend(BoxPlot.prototype, PointEventsMixin);\n\n var VerticalBoxPlot = BoxPlot.extend({\n reflowBoxSlot: function(box) {\n this.boxSlot.y1 = box.y1;\n this.boxSlot.y2 = box.y2;\n },\n\n reflowWhiskerSlot: function(box) {\n this.whiskerSlot.y1 = box.y1;\n this.whiskerSlot.y2 = box.y2;\n },\n\n calcMeanPoints: function(box, meanSlot) {\n return [\n [ [ meanSlot.x1, box.y1 ], [ meanSlot.x1, box.y2 ] ]\n ];\n },\n\n calcWhiskerPoints: function(boxSlot, whiskerSlot) {\n var 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: function(box, medianSlot) {\n return [\n [ [ medianSlot.x1, box.y1 ], [ medianSlot.x1, box.y2 ] ]\n ];\n }\n });\n\n var BoxPlotChart = CandlestickChart.extend({\n addValue: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var value = data.valueFields;\n var valueParts = this.splitValue(value);\n var hasValue = areNumbers(valueParts);\n var dataItem = series.data[categoryIx];\n var categoryPoints = this.categoryPoints[categoryIx];\n var point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n var 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: function() {\n if (this.options.invertAxes) {\n return VerticalBoxPlot;\n }\n\n return BoxPlot;\n },\n\n splitValue: function(value) {\n return [\n value.lower, value.q1, value.median,\n value.q3, value.upper\n ];\n },\n\n updateRange: function(value, fields) {\n var axisName = fields.series.axis;\n var parts = this.splitValue(value).concat(this.filterOutliers(value.outliers));\n\n if (defined(value.mean)) {\n parts = parts.concat(value.mean);\n }\n\n var 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: function(point, format) {\n var 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: function(items) {\n var length = (items || []).length;\n var result = [];\n\n for (var i = 0; i < length; i++) {\n var item = items[i];\n if (defined(item) && item !== null) {\n result.push(item);\n }\n }\n\n return result;\n },\n\n supportsPointInactiveOpacity: function() {\n return false;\n }\n });\n\n var ScatterErrorBar = ErrorBarBase.extend({\n getAxis: function() {\n var axes = this.chart.seriesAxes(this.series);\n var axis = this.isVertical ? axes.y : axes.x;\n\n return axis;\n }\n });\n\n var ScatterChart = ChartElement.extend({\n init: function(plotArea, options) {\n\n ChartElement.fn.init.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n },\n\n _initFields: function() {\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: function() {\n this.traverseDataPoints(this.addValue.bind(this));\n },\n\n addErrorBar: function(point, field, fields) {\n var value = point.value[field];\n var valueErrorField = field + \"Value\";\n var lowField = field + \"ErrorLow\";\n var highField = field + \"ErrorHigh\";\n var seriesIx = fields.seriesIx;\n var series = fields.series;\n var errorBars = point.options.errorBars;\n var lowValue = fields[lowField];\n var highValue = fields[highField];\n\n if (isNumber(value)) {\n var 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: function(errorRange, point, field) {\n var low = errorRange.low;\n var high = errorRange.high;\n var series = point.series;\n var options = point.options.errorBars;\n var isVertical = field === Y;\n var item = {};\n\n point[field + \"Low\"] = low;\n point[field + \"High\"] = high;\n\n point.errorBars = point.errorBars || [];\n var 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: function(value, fields) {\n var x = value.x;\n var y = value.y;\n var seriesIx = fields.seriesIx;\n var series = this.options.series[seriesIx];\n var missingValues = this.seriesMissingValues(series);\n var seriesPoints = this.seriesPoints[seriesIx];\n\n var pointValue = value;\n if (!(hasValue(x) && hasValue(y))) {\n pointValue = this.createMissingValue(pointValue, missingValues);\n }\n\n var point;\n if (pointValue) {\n point = this.createPoint(pointValue, fields);\n if (point) {\n $.extend(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: function(series) {\n return series.missingValues;\n },\n\n createMissingValue: function() {},\n\n updateRange: function(value, series) {\n var intlService = this.chartService.intl;\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var x = value.x;\n var y = value.y;\n var xAxisRange = this.xAxisRanges[xAxisName];\n var 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: function(options, value, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var 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 var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var 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: function() {\n return LinePoint;\n },\n\n pointOptions: function(series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var 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: function(value, fields) {\n var series = fields.series;\n var pointOptions = this.pointOptions(series, fields.seriesIx);\n var 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 var point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n seriesAxes: function(series) {\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var plotArea = this.plotArea;\n var xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n var 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: function(targetBox) {\n var this$1$1 = this;\n\n var chartPoints = this.points;\n var limit = !this.options.clip;\n var pointIx = 0;\n\n this.traverseDataPoints(function (value, fields) {\n var point = chartPoints[pointIx++];\n var seriesAxes = this$1$1.seriesAxes(fields.series);\n var slotX = seriesAxes.x.getSlot(value.x, value.x, limit);\n var slotY = seriesAxes.y.getSlot(value.y, value.y, limit);\n\n if (point) {\n if (slotX && slotY) {\n var pointSlot = this$1$1.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: function(slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n var seriesPoints = ref.seriesPoints;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var currentSeriesPoints = seriesPoints[seriesIx];\n if (!currentSeriesPoints) {\n seriesPoints[seriesIx] = [];\n }\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$1 = this$1$1.plotArea.bindPoint(currentSeries, pointIx);\n var value = ref$1.valueFields;\n var fields = ref$1.fields;\n\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this$1$1\n }, fields));\n }\n }\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y);\n },\n\n animationPoints: function() {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n }\n });\n setDefaultOptions(ScatterChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}\"\n },\n labels: {\n format: \"{0}, {1}\"\n },\n clip: true\n });\n deepExtend(ScatterChart.prototype, ClipAnimationMixin);\n\n var Bubble = LinePoint.extend({\n init: function(value, options) {\n LinePoint.fn.init.call(this, value, options);\n\n this.category = value.category;\n },\n\n createHighlight: function() {\n var highlight = this.options.highlight;\n var border = highlight.border;\n var markers = this.options.markers;\n var center = this.box.center();\n var radius = (markers.size + markers.border.width + border.width) / 2;\n var highlightGroup = new Group();\n var shadow = new Circle(new GeometryCircle([ 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 var overlay = new Circle(new GeometryCircle([ 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: function(style) {\n var highlightOptions = this.options.accessibility.highlight;\n var markers = this.options.markers;\n var center = this.box.center();\n var radius = (markers.size + markers.border.width) / 2 + highlightOptions.border.width / 2;\n var highlight = new Circle(new GeometryCircle([ center.x, center.y ], radius), style);\n\n return highlight;\n }\n });\n\n Bubble.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\n Bubble.prototype.defaults.highlight.zIndex = undefined;\n\n var BubbleChart = ScatterChart.extend({\n _initFields: function() {\n this._maxSize = MIN_VALUE;\n ScatterChart.fn._initFields.call(this);\n },\n\n addValue: function(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 ScatterChart.fn.addValue.call(this, value, fields);\n } else {\n this.points.push(null);\n this.seriesPoints[fields.seriesIx].push(null);\n }\n },\n\n reflow: function(box) {\n this.updateBubblesSize(box);\n ScatterChart.fn.reflow.call(this, box);\n },\n\n pointType: function() {\n return Bubble;\n },\n\n createPoint: function(value, fields) {\n var series = fields.series;\n var pointsCount = series.data.length;\n var delay = fields.pointIx * (INITIAL_ANIMATION_DURATION / pointsCount);\n var animationOptions = {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay,\n type: BUBBLE\n };\n\n var 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 var 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 var point = new Bubble(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n updateBubblesSize: function(box) {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n var boxSize = Math.min(box.width(), box.height());\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesPoints = this$1$1.seriesPoints[seriesIx];\n var minSize = currentSeries.minSize || Math.max(boxSize * 0.02, 10);\n var maxSize = currentSeries.maxSize || boxSize * 0.2;\n var minR = minSize / 2;\n var maxR = maxSize / 2;\n var minArea = Math.PI * minR * minR;\n var maxArea = Math.PI * maxR * maxR;\n var areaRange = maxArea - minArea;\n var areaRatio = areaRange / this$1$1._maxSize;\n\n for (var pointIx = 0; pointIx < seriesPoints.length; pointIx++) {\n var point = seriesPoints[pointIx];\n if (point) {\n var area = Math.abs(point.value.size) * areaRatio;\n var radius = Math.sqrt((minArea + area) / Math.PI);\n var baseZIndex = valueOrDefault(point.options.zIndex, 0);\n var 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: function(point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.size, point.category);\n },\n\n createAnimation: function() {},\n\n createVisual: function() {}\n });\n\n setDefaultOptions(BubbleChart, {\n tooltip: {\n format: \"{3}\"\n },\n labels: {\n format: \"{3}\"\n }\n });\n\n var Target = ShapeElement.extend({\n\n });\n\n deepExtend(Target.prototype, PointEventsMixin);\n\n var Bullet = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this, options);\n\n this.aboveAxis = this.options.aboveAxis;\n this.color = options.color || WHITE;\n this.value = value;\n },\n\n render: function() {\n var 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: function() {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n this.label = this.createLabelElement(labels);\n this.append(this.label);\n }\n },\n\n createLabelElement: function(options) {\n return new BarLabel(this.getLabelText(options),\n options,\n this.pointData());\n },\n\n getLabelText: function(options) {\n var labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n }\n\n return this.formatValue(options.format);\n },\n\n reflow: function(box) {\n this.render();\n\n var ref = this;\n var options = ref.options;\n var target = ref.target;\n var chart = ref.owner;\n var invertAxes = options.invertAxes;\n var valueAxis = chart.seriesValueAxis(this.options);\n var categorySlot = chart.categorySlot(chart.categoryAxis, options.categoryIx, valueAxis);\n var targetValueSlot = valueAxis.getSlot(this.value.target);\n var targetSlotX = invertAxes ? targetValueSlot : categorySlot;\n var targetSlotY = invertAxes ? categorySlot : targetValueSlot;\n\n if (target) {\n var 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 var 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: function() {\n ChartElement.fn.createVisual.call(this);\n\n this.addAccessibilityAttributesToVisual();\n\n var options = this.options;\n var body = 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: function() {\n if (this.bodyVisual) {\n this.animation = Animation.create(\n this.bodyVisual, this.options.animation\n );\n }\n },\n\n createHighlight: function(style) {\n return Path.fromRect(this.box.toRect(), style);\n },\n\n highlightVisual: function() {\n return this.bodyVisual;\n },\n\n highlightVisualArgs: function() {\n return {\n rect: this.box.toRect(),\n visual: this.bodyVisual,\n options: this.options\n };\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n pointData: function() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series\n };\n },\n\n overlapsBox: function(box) {\n return this.box.overlaps(box);\n },\n\n getIndex: function() {\n return this.categoryIx;\n }\n });\n\n Bullet.prototype.tooltipAnchor = Bar.prototype.tooltipAnchor;\n Bullet.prototype.createFocusHighlight = Bar.prototype.createFocusHighlight;\n\n setDefaultOptions(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\n deepExtend(Bullet.prototype, PointEventsMixin);\n deepExtend(Bullet.prototype, NoteMixin);\n deepExtend(Bullet.prototype, AccessibilityAttributesMixin);\n\n var BulletChart = CategoricalChart.extend({\n init: function(plotArea, options) {\n\n wrapData(options);\n\n CategoricalChart.fn.init.call(this, plotArea, options);\n },\n\n reflowCategories: function(categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n },\n\n plotRange: function(point) {\n var series = point.series;\n var valueAxis = this.seriesValueAxis(series);\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, point.value.current || axisCrossingValue ];\n },\n\n createPoint: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var value = data.valueFields;\n\n var bulletOptions = deepExtend({\n vertical: !options.invertAxes,\n overlay: series.overlay,\n categoryIx: categoryIx,\n invertAxes: options.invertAxes\n }, series);\n\n var 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 var bullet = new Bullet(value, bulletOptions);\n bullet.color = color;\n\n var 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: function(value, fields) {\n var current = value.current;\n var target = value.target;\n var axisName = fields.series.axis;\n var 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: function(point, format) {\n return this.chartService.format.auto(format, point.value.current, point.value.target);\n },\n\n pointValue: function(data) {\n return data.valueFields.current;\n },\n\n aboveAxis: function(point) {\n var value = point.value.current;\n\n return value > 0;\n },\n\n createAnimation: function() {\n var this$1$1 = this;\n\n var points = this.points;\n\n this._setAnimationOptions();\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n point.options.animation = this$1$1.options.animation;\n point.createAnimation();\n }\n }\n });\n\n BulletChart.prototype._setAnimationOptions = BarChart.prototype._setAnimationOptions;\n\n setDefaultOptions(BulletChart, {\n animation: {\n type: BAR\n }\n });\n\n function wrapData(options) {\n var series = options.series;\n\n for (var i = 0; i < series.length; i++) {\n var seriesItem = series[i];\n var data = seriesItem.data;\n if (data && !isArray(data[0]) && !isObject(data[0])) {\n seriesItem.data = [ data ];\n }\n }\n }\n\n var BaseTooltip = Class.extend({\n init: function(chartService, options) {\n\n this.chartService = chartService;\n this.options = deepExtend({}, this.options, options);\n },\n\n getStyle: function(options, point) {\n var background = options.background;\n var border = options.border.color;\n\n if (point) {\n var pointColor = point.color || point.options.color;\n background = valueOrDefault(background, pointColor);\n border = valueOrDefault(border, pointColor);\n }\n\n var 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: function(options, tooltipOptions, point) {\n options.format = tooltipOptions.format;\n\n var style = this.getStyle(tooltipOptions, point);\n options.style = style;\n\n var 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: function() {\n if (this.chartService) {\n this.chartService.notify(HIDE_TOOLTIP);\n }\n\n this.visible = false;\n },\n\n destroy: function() {\n delete this.chartService;\n }\n });\n\n setDefaultOptions(BaseTooltip, {\n border: {\n width: 1\n },\n opacity: 1\n });\n\n var CrosshairTooltip = BaseTooltip.extend({\n init: function(chartService, crosshair, options) {\n BaseTooltip.fn.init.call(this, chartService, options);\n\n this.crosshair = crosshair;\n this.formatService = chartService.format;\n this.initAxisName();\n },\n\n initAxisName: function() {\n var axis = this.crosshair.axis;\n var plotArea = axis.plotArea;\n var 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: function(point) {\n var ref = this;\n var axis = ref.crosshair.axis;\n var options = ref.options;\n var value = axis[options.stickyMode ? \"getCategory\" : \"getValue\"](point);\n var 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: function() {\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: function() {\n var ref = this;\n var crosshair = ref.crosshair;\n var ref_options = ref.options;\n var position = ref_options.position;\n var padding = ref_options.padding;\n var vertical = !crosshair.axis.options.vertical;\n var lineBox = crosshair.line.bbox();\n var 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\n setDefaultOptions(CrosshairTooltip, {\n padding: 10\n });\n\n var Crosshair = ChartElement.extend({\n init: function(chartService, axis, options) {\n ChartElement.fn.init.call(this, options);\n\n this.axis = axis;\n this.stickyMode = axis instanceof CategoryAxis;\n\n var 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: function(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: function() {\n this.line.visible(false);\n\n if (this.tooltip) {\n this.tooltip.hide();\n }\n },\n\n moveLine: function() {\n var ref = this;\n var axis = ref.axis;\n var point = ref.point;\n var vertical = axis.options.vertical;\n var box = this.getBox();\n var dim = vertical ? Y : X;\n var lineStart = new GeometryPoint(box.x1, box.y1);\n var lineEnd;\n\n if (vertical) {\n lineEnd = new GeometryPoint(box.x2, box.y1);\n } else {\n lineEnd = new GeometryPoint(box.x1, box.y2);\n }\n\n if (point) {\n if (this.stickyMode) {\n var 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: function() {\n var axis = this.axis;\n var axes = axis.pane.axes;\n var length = axes.length;\n var vertical = axis.options.vertical;\n var box = axis.lineBox().clone();\n var dim = vertical ? X : Y;\n var axisLineBox;\n\n for (var i = 0; i < length; i++) {\n var 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: function() {\n ChartElement.fn.createVisual.call(this);\n\n var options = this.options;\n this.line = new 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: function() {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n\n ChartElement.fn.destroy.call(this);\n }\n });\n\n setDefaultOptions(Crosshair, {\n color: BLACK,\n width: 2,\n zIndex: -1,\n tooltip: {\n visible: false\n }\n });\n\n var ChartContainer = ChartElement.extend({\n init: function(options, pane) {\n ChartElement.fn.init.call(this, options);\n this.pane = pane;\n },\n\n shouldClip: function() {\n var children = this.children;\n var length = children.length;\n\n for (var i = 0; i < length; i++) {\n if (children[i].options.clip === true) {\n return true;\n }\n }\n return false;\n },\n\n _clipBox: function() {\n return this.pane.chartsBox();\n },\n\n createVisual: function() {\n this.visual = new Group({\n zIndex: 0\n });\n\n if (this.shouldClip()) {\n var clipBox = this.clipBox = this._clipBox();\n var clipRect = clipBox.toRect();\n var clipPath = Path.fromRect(clipRect);\n alignPathToPixel(clipPath);\n\n this.visual.clip(clipPath);\n this.unclipLabels();\n }\n },\n\n stackRoot: function() {\n return this;\n },\n\n unclipLabels: function() {\n var ref = this;\n var charts = ref.children;\n var clipBox = ref.clipBox;\n\n for (var i = 0; i < charts.length; i++) {\n var points = charts[i].points || {};\n var length = points.length;\n\n for (var j = 0; j < length; j++) {\n var point = points[j];\n if (point && point.visible !== false && point.overlapsBox && point.overlapsBox(clipBox)) {\n if (point.unclipElements) {\n point.unclipElements();\n } else {\n var label = point.label;\n var note = point.note;\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: function() {\n ChartElement.fn.destroy.call(this);\n\n delete this.parent;\n }\n });\n\n ChartContainer.prototype.isStackRoot = true;\n\n var Pane = BoxElement.extend({\n init: function(options) {\n BoxElement.fn.init.call(this, 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: function() {\n var 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: function(axis) {\n this.content.append(axis);\n this.axes.push(axis);\n axis.pane = this;\n },\n\n appendAxisAt: function(axis, pos) {\n this.content.append(axis);\n this.axes.splice(pos, 0, axis);\n axis.pane = this;\n },\n\n appendChart: function(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: function() {\n var this$1$1 = this;\n\n var plotArea = this.parent;\n\n if (plotArea) {\n for (var i = 0; i < this.axes.length; i++) {\n plotArea.removeAxis(this$1$1.axes[i]);\n }\n\n for (var i$1 = 0; i$1 < this.charts.length; i$1++) {\n plotArea.removeChart(this$1$1.charts[i$1]);\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: function(targetBox) {\n // Content (such as charts) is rendered, but excluded from reflows\n var content;\n if (last(this.children) === this.content) {\n content = this.children.pop();\n }\n\n BoxElement.fn.reflow.call(this, 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: function() {\n var style = BoxElement.fn.visualStyle.call(this);\n style.zIndex = -10;\n\n return style;\n },\n\n renderComplete: function() {\n if (this.options.visible) {\n this.createGridLines();\n }\n },\n\n stackRoot: function() {\n return this;\n },\n\n clipRoot: function() {\n return this;\n },\n\n createGridLines: function() {\n var axes = this.axes;\n var allAxes = axes.concat(this.parent.axes);\n var vGridLines = [];\n var hGridLines = [];\n\n // TODO\n // Is full combination really necessary?\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var vertical = axis.options.vertical;\n var gridLines = vertical ? vGridLines : hGridLines;\n for (var j = 0; j < allAxes.length; j++) {\n if (gridLines.length === 0) {\n var altAxis = allAxes[j];\n if (vertical !== altAxis.options.vertical) {\n append(gridLines, axis.createGridLines(altAxis));\n }\n }\n }\n }\n },\n\n refresh: function() {\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: function() {\n var axes = this.axes;\n var length = axes.length;\n var chartsBox = new Box();\n\n for (var idx = 0; idx < length; idx++) {\n var axis = axes[idx];\n var axisValueField = axis.options.vertical ? Y : X;\n var 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 var allAxes = this.parent.axes;\n var length$1 = allAxes.length;\n\n for (var idx$1 = 0; idx$1 < length$1; idx$1++) {\n var axis$1 = allAxes[idx$1];\n if (!axis$1.options.vertical) {\n var lineBox$1 = axis$1.lineBox();\n chartsBox.x1 = lineBox$1.x1;\n chartsBox.x2 = lineBox$1.x2;\n }\n }\n }\n return chartsBox;\n },\n\n clipBox: function() {\n return this.chartContainer.clipBox;\n },\n\n notifyRender: function() {\n var 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\n var ID = 1;\n\n function paneID() {\n return \"pane\" + ID++;\n }\n\n Pane.prototype.isStackRoot = true;\n\n setDefaultOptions(Pane, {\n zIndex: -1,\n shrinkToFit: true,\n title: {\n align: LEFT\n },\n visible: true\n });\n\n var PlotAreaBase = ChartElement.extend({\n init: function(series, options, chartService) {\n ChartElement.fn.init.call(this, 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: function() { },\n\n initSeries: function() {\n var series = this.series;\n\n for (var i = 0; i < series.length; i++) {\n series[i].index = i;\n }\n },\n\n bindPoint: function(series, pointIx, item) {\n var cached = this._bindCache.get(series);\n if (!cached) {\n cached = [];\n this._bindCache.set(series, cached);\n }\n\n var 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: function() {\n var this$1$1 = this;\n\n var titleOptions = this.options.title || {};\n var paneDefaults = this.options.paneDefaults;\n var paneOptions = this.options.panes || [];\n var panesLength = Math.max(paneOptions.length, 1);\n var panes = [];\n\n var defaults = deepExtend({\n title: {\n color: titleOptions.color\n }\n }, paneDefaults);\n\n for (var i = 0; i < panesLength; i++) {\n var options = deepExtend({}, defaults, paneOptions[i]);\n if (isString(options.title)) {\n options.title = deepExtend({ text: options.title }, defaults.title);\n }\n\n var currentPane = new Pane(options);\n currentPane.paneIndex = i;\n\n panes.push(currentPane);\n this$1$1.append(currentPane);\n }\n\n this.panes = panes;\n },\n\n crosshairOptions: function(axis) {\n return axis.options.crosshair;\n },\n\n createCrosshairs: function(panes) {\n var this$1$1 = this;\n if (panes === void 0) { panes = this.panes; }\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n for (var j = 0; j < pane.axes.length; j++) {\n var axis = pane.axes[j];\n var options = this$1$1.crosshairOptions(axis);\n if (options && options.visible) {\n var currentCrosshair = new Crosshair(this$1$1.chartService, axis, options);\n\n this$1$1.crosshairs.push(currentCrosshair);\n pane.content.append(currentCrosshair);\n }\n }\n }\n },\n\n removeCrosshairs: function(pane) {\n var crosshairs = this.crosshairs;\n var axes = pane.axes;\n\n for (var i = crosshairs.length - 1; i >= 0; i--) {\n for (var 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: function() {\n var crosshairs = this.crosshairs;\n for (var idx = 0; idx < crosshairs.length; idx++) {\n crosshairs[idx].hide();\n }\n },\n\n findPane: function(name) {\n var panes = this.panes;\n var matchingPane;\n\n for (var 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: function(point) {\n var panes = this.panes;\n var matchingPane;\n\n for (var 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: function(axis) {\n var pane = this.findPane(axis.options.pane);\n\n pane.appendAxis(axis);\n this.axes.push(axis);\n axis.plotArea = this;\n },\n\n removeAxis: function(axisToRemove) {\n var this$1$1 = this;\n\n var filteredAxes = [];\n\n for (var i = 0; i < this.axes.length; i++) {\n var axis = this$1$1.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: function(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: function(chartToRemove) {\n var this$1$1 = this;\n\n var filteredCharts = [];\n\n for (var i = 0; i < this.charts.length; i++) {\n var chart = this$1$1.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: function(series) {\n var count = series.length;\n var legend = this.options.legend;\n var labels = legend.labels || {};\n var inactiveItems = legend.inactiveItems || {};\n var inactiveItemsLabels = inactiveItems.labels || {};\n var data = [];\n\n for (var i = 0; i < count; i++) {\n var currentSeries = series[i];\n var seriesVisible = currentSeries.visible !== false;\n if (currentSeries.visibleInLegend === false) {\n continue;\n }\n\n var text = currentSeries.name;\n var 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 var defaults = currentSeries._defaults;\n var color = currentSeries.color;\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var itemLabelOptions = (void 0), markerColor = (void 0);\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: function(panes) {\n var xAxes = [];\n var yAxes = [];\n\n for (var paneIx = 0; paneIx < panes.length; paneIx++) {\n var paneAxes = panes[paneIx].axes;\n for (var axisIx = 0; axisIx < paneAxes.length; axisIx++) {\n var 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: function() {\n var this$1$1 = this;\n\n var series = this.series;\n var seriesByPane = {};\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var pane = this$1$1.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: function(series) {\n var result = [];\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n if (currentSeries.visible !== false) {\n result.push(currentSeries);\n }\n }\n\n return result;\n },\n\n reflow: function(targetBox) {\n var options = this.options.plotArea;\n var panes = this.panes;\n var 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: function(panes) {\n var this$1$1 = this;\n\n var panesArray = [].concat(panes);\n this.initSeries();\n\n //prevents leak during partial redraws. the cached gradients observers retain reference to the destroyed elements.\n var root = this.getRoot();\n if (root) {\n root.cleanGradients();\n }\n\n for (var i = 0; i < panesArray.length; i++) {\n this$1$1.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 (var i$1 = 0; i$1 < panesArray.length; i$1++) {\n panesArray[i$1].refresh();\n }\n },\n\n axisCrossingValues: function(axis, crossingAxes) {\n var options = axis.options;\n var crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n var valuesToAdd = crossingAxes.length - crossingValues.length;\n var defaultValue = crossingValues[0] || 0;\n\n for (var i = 0; i < valuesToAdd; i++) {\n crossingValues.push(defaultValue);\n }\n\n return crossingValues;\n },\n\n alignAxisTo: function(axis, targetAxis, crossingValue, targetCrossingValue) {\n var slot = axis.getSlot(crossingValue, crossingValue, true);\n var slotEdge = axis.options.reverse ? 2 : 1;\n var targetSlot = targetAxis.getSlot(targetCrossingValue, targetCrossingValue, true);\n var targetEdge = targetAxis.options.reverse ? 2 : 1;\n var 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: function(xAxes, yAxes) {\n var this$1$1 = this;\n\n var xAnchor = xAxes[0];\n var yAnchor = yAxes[0];\n var xAnchorCrossings = this.axisCrossingValues(xAnchor, yAxes);\n var yAnchorCrossings = this.axisCrossingValues(yAnchor, xAxes);\n var leftAnchors = {};\n var rightAnchors = {};\n var topAnchors = {};\n var bottomAnchors = {};\n\n for (var i = 0; i < yAxes.length; i++) {\n var axis = yAxes[i];\n var pane = axis.pane;\n var paneId = pane.id;\n var visible = axis.options.visible !== false;\n\n // Locate pane anchor, if any, and use its axisCrossingValues\n var anchor = paneAnchor(xAxes, pane) || xAnchor;\n var anchorCrossings = xAnchorCrossings;\n\n if (anchor !== xAnchor) {\n anchorCrossings = this$1$1.axisCrossingValues(anchor, yAxes);\n }\n\n this$1$1.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$1$1.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 var paneYAnchor = paneAnchor(yAxes, pane) || yAnchor;\n if (paneYAnchor !== axis) {\n axis.alignTo(paneYAnchor);\n axis.reflow(axis.box);\n }\n }\n\n for (var i$1 = 0; i$1 < xAxes.length; i$1++) {\n var axis$1 = xAxes[i$1];\n var pane$1 = axis$1.pane;\n var paneId$1 = pane$1.id;\n var visible$1 = axis$1.options.visible !== false;\n\n // Locate pane anchor and use its axisCrossingValues\n var anchor$1 = paneAnchor(yAxes, pane$1) || yAnchor;\n var anchorCrossings$1 = yAnchorCrossings;\n if (anchor$1 !== yAnchor) {\n anchorCrossings$1 = this$1$1.axisCrossingValues(anchor$1, xAxes);\n }\n\n this$1$1.alignAxisTo(axis$1, anchor$1, xAnchorCrossings[i$1], anchorCrossings$1[i$1]);\n\n if (axis$1.options._overlap) {\n continue;\n }\n\n if (round(axis$1.lineBox().y1) === round(anchor$1.lineBox().y1)) {\n // Flip the labels on top if we're at the top of the pane\n if (!axis$1._mirrored) {\n axis$1.options.labels.mirror = !axis$1.options.labels.mirror;\n axis$1._mirrored = true;\n }\n this$1$1.alignAxisTo(axis$1, anchor$1, xAnchorCrossings[i$1], anchorCrossings$1[i$1]);\n\n // Push the axis above the previous x-axis so they don't overlap\n if (topAnchors[paneId$1]) {\n axis$1.reflow(axis$1.box\n .alignTo(topAnchors[paneId$1].box, TOP)\n .translate(0, -axis$1.options.margin)\n );\n }\n\n if (visible$1) {\n topAnchors[paneId$1] = axis$1;\n }\n }\n\n if (round(axis$1.lineBox().y2, COORD_PRECISION) === round(anchor$1.lineBox().y2, COORD_PRECISION)) {\n // Push the axis below the previous x-axis so they don't overlap\n if (bottomAnchors[paneId$1]) {\n axis$1.reflow(axis$1.box\n .alignTo(bottomAnchors[paneId$1].box, BOTTOM)\n .translate(0, axis$1.options.margin)\n );\n }\n\n if (visible$1) {\n bottomAnchors[paneId$1] = axis$1;\n }\n }\n\n if (i$1 !== 0) {\n axis$1.alignTo(xAnchor);\n axis$1.reflow(axis$1.box);\n }\n }\n },\n\n shrinkAxisWidth: function(panes) {\n var axes = this.groupAxes(panes).any;\n var axisBox = axisGroupBox(axes);\n var overflowX = 0;\n\n for (var i = 0; i < panes.length; i++) {\n var 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 (var i$1 = 0; i$1 < axes.length; i$1++) {\n var currentAxis = axes[i$1];\n\n if (!currentAxis.options.vertical) {\n currentAxis.reflow(currentAxis.box.shrink(overflowX, 0));\n }\n }\n }\n },\n\n shrinkAxisHeight: function(panes) {\n var shrinked;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n var axes = currentPane.axes;\n var overflowY = Math.max(0, axisGroupBox(axes).height() - currentPane.contentBox.height());\n\n if (overflowY !== 0) {\n for (var j = 0; j < axes.length; j++) {\n var 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: function(panes) {\n var axes = this.groupAxes(panes).any;\n var offsetX = 0;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n var paneAxes = currentPane.axes;\n var paneBox = currentPane.contentBox;\n\n if (paneAxes.length > 0) {\n var axisBox = axisGroupBox(paneAxes);\n // OffsetY is calculated and applied per pane\n var 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 for (var j = 0; j < paneAxes.length; j++) {\n var currentAxis = paneAxes[j];\n\n currentAxis.reflow(\n currentAxis.box.translate(0, offsetY)\n );\n }\n }\n }\n\n for (var i$1 = 0; i$1 < axes.length; i$1++) {\n var currentAxis$1 = axes[i$1];\n\n currentAxis$1.reflow(\n currentAxis$1.box.translate(offsetX, 0)\n );\n }\n },\n\n reflowAxes: function(panes) {\n var this$1$1 = this;\n\n var axes = this.groupAxes(panes);\n\n for (var i = 0; i < panes.length; i++) {\n this$1$1.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: function(groupedAxes) {\n var this$1$1 = this;\n\n var ref = this;\n var panes = ref.panes;\n var axes = allPaneAxes(panes);\n var rotated;\n\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n if (axis.autoRotateLabels()) {\n rotated = true;\n }\n }\n\n if (rotated) {\n for (var idx$1 = 0; idx$1 < panes.length; idx$1++) {\n this$1$1.reflowPaneAxes(panes[idx$1]);\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: function(pane) {\n var axes = pane.axes;\n var length = axes.length;\n\n if (length > 0) {\n for (var i = 0; i < length; i++) {\n axes[i].reflow(pane.contentBox);\n }\n }\n },\n\n reflowCharts: function(panes) {\n var charts = this.charts;\n var count = charts.length;\n var box = this.box;\n\n for (var i = 0; i < count; i++) {\n var chartPane = charts[i].pane;\n if (!chartPane || inArray(chartPane, panes)) {\n charts[i].reflow(box);\n }\n }\n },\n\n reflowPanes: function() {\n var ref = this;\n var box = ref.box;\n var panes = ref.panes;\n var panesLength = panes.length;\n var remainingHeight = box.height();\n var autoHeightPanes = 0;\n var top = box.y1;\n\n for (var i = 0; i < panesLength; i++) {\n var currentPane = panes[i];\n var 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 var 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 (var i$1 = 0; i$1 < panesLength; i$1++) {\n var currentPane$1 = panes[i$1];\n\n if (!currentPane$1.options.height) {\n currentPane$1.options.height = remainingHeight / autoHeightPanes;\n }\n }\n\n for (var i$2 = 0; i$2 < panesLength; i$2++) {\n var currentPane$2 = panes[i$2];\n var paneBox = box\n .clone()\n .move(box.x1, top);\n\n currentPane$2.reflow(paneBox);\n\n top += currentPane$2.options.height;\n }\n },\n\n backgroundBox: function() {\n var axes = this.axes;\n var axesCount = axes.length;\n var box;\n\n for (var i = 0; i < axesCount; i++) {\n var axisA = axes[i];\n\n for (var j = 0; j < axesCount; j++) {\n var axisB = axes[j];\n\n if (axisA.options.vertical !== axisB.options.vertical) {\n var 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: function() {\n var panes = this.panes;\n var boxes = [];\n\n for (var idx = 0; idx < panes.length; idx++) {\n boxes.push(panes[idx].chartsBox());\n }\n\n return boxes;\n },\n\n addBackgroundPaths: function(multipath) {\n var boxes = this.chartsBoxes();\n for (var idx = 0; idx < boxes.length; idx++) {\n multipath.paths.push(Path.fromRect(boxes[idx].toRect()));\n }\n },\n\n backgroundContainsPoint: function(point) {\n var boxes = this.chartsBoxes();\n for (var idx = 0; idx < boxes.length; idx++) {\n if (boxes[idx].containsPoint(point)) {\n return true;\n }\n }\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n var options = this.options.plotArea;\n var opacity = options.opacity;\n var background = options.background;\n var border = options.border; if (border === void 0) { border = {}; }\n if (isTransparent(background)) {\n background = WHITE;\n opacity = 0;\n }\n\n var bg = this._bgVisual = new 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: function(categoryIndex) {\n var charts = this.charts;\n var result = [];\n\n if (categoryIndex !== null) {\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n\n if (chart.pane.options.name === \"_navigator\") {\n continue;\n }\n\n var points = charts[i].categoryPoints[categoryIndex];\n if (points && points.length) {\n for (var j = 0; j < points.length; j++) {\n var 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: function(seriesIndex) {\n return this.filterPoints(function(point) {\n return point.series.index === seriesIndex;\n });\n },\n\n pointsByPointIndex: function(pointIndex) {\n return this.filterPoints(function(point) {\n return point.getIndex() === pointIndex;\n });\n },\n\n pointsBySeriesName: function(name) {\n return this.filterPoints(function(point) {\n return point.series.name === name;\n });\n },\n\n filterPoints: function(callback) {\n var charts = this.charts;\n var result = [];\n\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n var points = chart.points;\n for (var j = 0; j < points.length; j++) {\n var 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: function(callback) {\n var charts = this.charts;\n\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n var points = chart.points;\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && point.visible !== false && callback(point)) {\n return point;\n }\n }\n }\n },\n\n paneByPoint: function(point) {\n var panes = this.panes;\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n if (pane.box.containsPoint(point)) {\n return pane;\n }\n }\n },\n\n detachLabels: function() {\n var axes = this.groupAxes(this.panes);\n var xAxes = axes.x;\n var yAxes = axes.y;\n\n this.detachAxisGroupLabels(yAxes, xAxes);\n this.detachAxisGroupLabels(xAxes, yAxes);\n },\n\n detachAxisGroupLabels: function(axes, crossingAxes) {\n var this$1$1 = this;\n\n var labelAxisCount = 0;\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var pane = axis.pane;\n var anchor = paneAnchor(crossingAxes, pane) || crossingAxes[0];\n var axisIndex = i + labelAxisCount;\n var labelAxis = this$1$1.createLabelAxis(axis, axisIndex, anchor);\n\n if (labelAxis) {\n labelAxisCount++;\n\n var pos = pane.axes.indexOf(axis) + labelAxisCount;\n pane.appendAxisAt(labelAxis, pos);\n }\n }\n },\n\n createLabelAxis: function(axis, axisIndex, anchor) {\n var labelOptions = axis.options.labels;\n var position = labelOptions.position;\n var onAxis = position !== END && position !== START;\n var visible = labelOptions.visible;\n\n if (onAxis || visible === false) {\n return null;\n }\n\n var allAxes = this.groupAxes(this.panes);\n var crossingAxes = anchor.options.vertical ? allAxes.x : allAxes.y;\n var anchorCrossings = this.axisCrossingValues(anchor, crossingAxes);\n var end = position === END;\n var range = anchor.range();\n var edge = end ? range.max : range.min;\n var 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 var 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: function(series) {\n return series && inArray(series.type, TRENDLINE_SERIES);\n },\n\n trendlineFactory: function() { /* abstract */ },\n\n createTrendlineSeries: function() {\n var this$1$1 = this;\n\n var modifiedSeries = [];\n\n this.series = this.series.map(function (series) {\n if (!this$1$1.isTrendline(series)) {\n return series;\n }\n\n var forSeries = this$1$1.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 var valueFields = SeriesBinder.current.valueFields(forSeries);\n var field = last(valueFields); // Use the last field for multi-field series\n\n var trendlineSeries = this$1$1.trendlineFactory($.extend({}, {field: field}, series), forSeries);\n if (trendlineSeries) {\n if (forSeries.visible === false) {\n trendlineSeries.visible = false;\n }\n\n if (trendlineSeries.color === datavizConstants.INHERIT) {\n trendlineSeries.color = forSeries.color;\n }\n\n modifiedSeries.push(trendlineSeries);\n }\n\n return trendlineSeries;\n }).filter(function (series) { return series !== null; });\n\n return modifiedSeries;\n },\n\n seriesByName: function(name) {\n return this.series.find(function (series) { return series.name === name; });\n },\n\n getFirstPoint: function() {\n return this.pointsBySeriesIndex(0)[0];\n },\n\n getPointBelow: function(point) {\n return this._getNextPoint(point, this._pointsByVertical, 1);\n },\n\n getPointAbove: function(point) {\n return this._getNextPoint(point, this._pointsByVertical, -1);\n },\n\n getPointToTheRight: function(point) {\n return this._getNextPoint(point, this._pointsByHorizontal, 1);\n },\n\n getPointToTheLeft: function(point) {\n return this._getNextPoint(point, this._pointsByHorizontal, -1);\n },\n\n _getNextPoint: function(point, getPointsFunc, increment) {\n var this$1$1 = this;\n\n var points = getPointsFunc.call(this, point);\n var pointIndex = points.indexOf(point);\n var nextIndex = pointIndex + increment;\n var loopPoints = function (direction) {\n // loop over to last non-empty collection\n var result;\n var offset = 0;\n do {\n offset += direction;\n result = getPointsFunc.call(this$1$1, 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: function(basePoint) {\n return this.pointsByPointIndex(basePoint.getIndex());\n },\n\n _pointsByHorizontal: function(basePoint, offset) {\n if (offset === void 0) { offset = 0; }\n\n var index = cycleIndex(basePoint.series.index + offset, this.series.length);\n return this.pointsBySeriesIndex(index);\n }\n });\n\n function isSingleAxis(axis) {\n return !axis.pane.axes.some(function (a) { return a.options.vertical === axis.options.vertical && a !== axis && a.options.visible !== false; }\n );\n }\n\n function axisGroupBox(axes) {\n var length = axes.length;\n var box;\n\n for (var i = 0; i < length; i++) {\n var axis = axes[i];\n var visible = axis.options.visible !== false;\n if (visible || isSingleAxis(axis)) {\n var 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\n function paneAnchor(axes, pane) {\n for (var i = 0; i < axes.length; i++) {\n var anchor = axes[i];\n if (anchor && anchor.pane === pane) {\n return anchor;\n }\n }\n }\n\n function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n }\n\n var allPaneAxes = function (panes) { return panes.reduce(function (acc, pane) { return acc.concat(pane.axes); }, []); };\n\n setDefaultOptions(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\n var 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\n var SeriesAggregator = Class.extend({\n init: function(series, binder, defaultAggregates) {\n\n var canonicalFields = binder.canonicalFields(series);\n var valueFields = binder.valueFields(series);\n var sourceFields = binder.sourceFields(series, canonicalFields);\n var seriesFields = this._seriesFields = [];\n var defaults = defaultAggregates.query(series.type);\n var rootAggregate = series.aggregate || defaults;\n\n this._series = series;\n this._binder = binder;\n\n for (var i = 0; i < canonicalFields.length; i++) {\n var field = canonicalFields[i];\n var fieldAggregate = (void 0);\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: function(srcPoints, group) {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref._series;\n var seriesFields = ref._seriesFields;\n var data = this._bindPoints(srcPoints || []);\n var firstDataItem = data.dataItems[0];\n var result = {};\n\n if (firstDataItem && !isNumber(firstDataItem) && !isArray(firstDataItem)) {\n var fn = function() {};\n fn.prototype = firstDataItem;\n result = new fn();\n }\n\n for (var i = 0; i < seriesFields.length; i++) {\n var field = seriesFields[i];\n var srcValues = this$1$1._bindField(data.values, field.canonicalName);\n var 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: function(points) {\n var ref = this;\n var binder = ref._binder;\n var series = ref._series;\n var values = [];\n var dataItems = [];\n\n for (var i = 0; i < points.length; i++) {\n var 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: function(data, field) {\n var values = [];\n var count = data.length;\n\n for (var i = 0; i < count; i++) {\n var item = data[i];\n var valueFields = item.valueFields;\n var value = (void 0);\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\n function setValue(fieldName, target, value) {\n var parentObj = target;\n var field = fieldName;\n\n if (fieldName.indexOf(\".\") > -1) {\n var 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\n var DefaultAggregates = Class.extend({\n init: function() {\n\n this._defaults = {};\n },\n\n register: function(seriesTypes, aggregates) {\n var this$1$1 = this;\n\n for (var i = 0; i < seriesTypes.length; i++) {\n this$1$1._defaults[seriesTypes[i]] = aggregates;\n }\n },\n\n query: function(seriesType) {\n return this._defaults[seriesType];\n }\n });\n\n DefaultAggregates.current = new DefaultAggregates();\n\n var RangeBar = Bar.extend({\n createLabel: function() {\n var labels = this.options.labels;\n var fromOptions = deepExtend({}, labels, labels.from);\n var 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: function(targetBox) {\n this.render();\n\n var ref = this;\n var labelFrom = ref.labelFrom;\n var labelTo = ref.labelTo;\n var value = ref.value;\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\n RangeBar.prototype.defaults = deepExtend({}, RangeBar.prototype.defaults, {\n labels: {\n format: \"{0} - {1}\"\n },\n tooltip: {\n format: \"{1}\"\n }\n });\n\n var RangeBarChart = BarChart.extend({\n pointType: function() {\n return RangeBar;\n },\n\n pointValue: function(data) {\n return data.valueFields;\n },\n\n formatPointValue: function(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: function(point) {\n if (!point) {\n return 0;\n }\n\n return [ point.value.from, point.value.to ];\n },\n\n updateRange: function(value, fields) {\n var axisName = fields.series.axis;\n var from = value.from;\n var to = value.to;\n var 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: function(point) {\n var value = point.value;\n return value.from < value.to;\n }\n });\n\n RangeBarChart.prototype.plotLimits = CategoricalChart.prototype.plotLimits;\n\n var RangeLinePoint = LinePoint.extend({\n aliasFor: function() {\n return this.parent;\n }\n });\n\n var AUTO = 'auto';\n var DEFAULT_FROM_FORMAT = '{0}';\n var DEFAULT_TO_FORMAT = '{1}';\n\n var RangeAreaPoint = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this);\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: function() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n var ref = this.options;\n var markers = ref.markers;\n var labels = ref.labels;\n var value = this.value;\n\n var fromPoint = this.fromPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.from,\n markers: markers.from\n }));\n\n var 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: function(targetBox) {\n this.render();\n\n var fromBox = targetBox.from;\n var toBox = targetBox.to;\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: function() {\n var group = new Group();\n group.append(this.fromPoint.createHighlight());\n group.append(this.toPoint.createHighlight());\n\n return group;\n },\n\n highlightVisual: function() {\n return this.visual;\n },\n\n highlightVisualArgs: function() {\n return {\n options: this.options,\n from: this.fromPoint.highlightVisualArgs(),\n to: this.toPoint.highlightVisualArgs()\n };\n },\n\n createFocusHighlight: function() {\n var group = new Group();\n group.append(this.fromPoint.createFocusHighlight());\n group.append(this.toPoint.createFocusHighlight());\n\n return group;\n },\n\n tooltipAnchor: function() {\n var clipBox = this.owner.pane.clipBox();\n var showTooltip = !clipBox || clipBox.overlaps(this.box);\n\n if (showTooltip) {\n var box = this.box;\n var center = box.center();\n var horizontalAlign = LEFT;\n var 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: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n overlapsBox: function(box) {\n return this.box.overlaps(box);\n },\n\n unclipElements: function() {\n this.fromPoint.unclipElements();\n this.toPoint.unclipElements();\n },\n\n initLabelsFormat: function() {\n var labels = this.options.labels;\n if (!labels.format) {\n if (!labels.from || !labels.from.format) {\n labels.from = $.extend({}, labels.from, {\n format: DEFAULT_FROM_FORMAT\n });\n }\n\n if (!labels.to || !labels.to.format) {\n labels.to = $.extend({}, labels.to, {\n format: DEFAULT_TO_FORMAT\n });\n }\n }\n },\n\n positionLabels: function(fromBox, toBox) {\n var ref = this.options;\n var labels = ref.labels;\n var vertical = ref.vertical;\n\n if (labels.position === AUTO) {\n var 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: function(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: function() {\n this.fromPoint.focusVisual();\n },\n\n clearFocusFromVisual: function() {\n this.toPoint.clearFocusFromVisual();\n },\n\n getIndex: function() {\n return this.categoryIx;\n }\n });\n\n deepExtend(RangeAreaPoint.prototype, PointEventsMixin);\n deepExtend(RangeAreaPoint.prototype, NoteMixin);\n\n RangeAreaPoint.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: datavizConstants.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\n var RangeAreaSegment = AreaSegment.extend({\n createStrokeSegments: function() {\n return this.segmentsFromPoints(this.toGeometryPoints(this.toPoints()));\n },\n\n stackSegments: function() {\n var 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: function(style) {\n var toPath = new Path(style);\n var fromPath = new 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: function() {\n return true;\n },\n\n fromPoints: function() {\n return this.linePoints.map(function (point) { return point.fromPoint; });\n },\n\n toPoints: function() {\n return this.linePoints.map(function (point) { return point.toPoint; });\n }\n });\n\n var SplineRangeAreaSegment = RangeAreaSegment.extend({\n createStrokeSegments: function() {\n return this.createCurveSegments(this.toPoints());\n },\n\n stackSegments: function() {\n var 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: function(points) {\n var curveProcessor = new CurveProcessor();\n\n return curveProcessor.process(this.toGeometryPoints(points));\n }\n });\n\n var StepRangeAreaSegment = RangeAreaSegment.extend({\n createStrokeSegments: function() {\n return this.segmentsFromPoints(this.calculateStepPoints(this.toPoints()));\n },\n\n stackSegments: function() {\n var 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\n deepExtend(StepRangeAreaSegment.prototype, StepLineMixin);\n\n var RangeAreaChart = CategoricalChart.extend({\n render: function() {\n CategoricalChart.fn.render.call(this);\n\n this.renderSegments();\n },\n\n pointType: function() {\n return RangeAreaPoint;\n },\n\n createPoint: function(data, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var 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 var pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n var color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new RangeAreaPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = (currentSeries.line || {}).style;\n var 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: function(point, startValue) {\n if (!point) {\n return [ startValue, startValue ];\n }\n\n return [ point.value.from, point.value.to ];\n },\n\n valueSlot: function(valueAxis, plotRange) {\n var fromSlot = valueAxis.getSlot(plotRange[0], plotRange[0], !this.options.clip);\n var 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: function(categorySlot, valueSlot) {\n var from = valueSlot.from;\n var to = valueSlot.to;\n var 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: function(data, fields) {\n var 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 CategoricalChart.fn.addValue.call(this, data, fields);\n },\n\n updateRange: function(value, fields) {\n if (value !== null && isNumber(value.from) && isNumber(value.to)) {\n var axisName = fields.series.axis;\n var axisRange = this.valueAxisRanges[axisName] = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n var from = value.from;\n var to = value.to;\n\n axisRange.min = Math.min(axisRange.min, from, to);\n axisRange.max = Math.max(axisRange.max, from, to);\n }\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format, value.from, value.to);\n },\n\n animationPoints: function() {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n var 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\n deepExtend(RangeAreaChart.prototype, LineChartMixin, ClipAnimationMixin);\n\n var OHLCPoint = Candlestick.extend({\n reflow: function(box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var oPoints = [];\n var cPoints = [];\n var lhPoints = [];\n\n var lhSlot = valueAxis.getSlot(value.low, value.high);\n var oSlot = valueAxis.getSlot(value.open, value.open);\n var 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 var 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: function() {}\n });\n\n var OHLCChart = CandlestickChart.extend({\n pointType: function() {\n return OHLCPoint;\n }\n });\n\n var WaterfallSegment = ChartElement.extend({\n init: function(from, to, series) {\n ChartElement.fn.init.call(this);\n\n this.from = from;\n this.to = to;\n this.series = series;\n },\n\n linePoints: function() {\n var from = this.from;\n var ref = this;\n var fromBox = ref.from.box;\n var toBox = ref.to.box;\n var points = [];\n\n if (from.isVertical) {\n var y = from.aboveAxis ? fromBox.y1 : fromBox.y2;\n points.push(\n [ fromBox.x1, y ],\n [ toBox.x2, y ]\n );\n } else {\n var 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: function() {\n ChartElement.fn.createVisual.call(this);\n\n var line = this.series.line || {};\n\n var path = 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\n setDefaultOptions(WaterfallSegment, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n });\n\n var WaterfallChart = BarChart.extend({\n render: function() {\n BarChart.fn.render.call(this);\n this.createSegments();\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var series = this.options.series;\n var totalCategories = categoriesCount(series);\n var isVertical = !this.options.invertAxes;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var total = 0;\n var runningTotal = 0;\n\n for (var categoryIx = 0; categoryIx < totalCategories; categoryIx++) {\n var data = SeriesBinder.current.bindPoint(currentSeries, categoryIx);\n var value = data.valueFields.value;\n var summary = data.fields.summary;\n var from = total;\n var to = (void 0);\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$1$1.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: function(value, fields) {\n BarChart.fn.updateRange.call(this, { value: fields.to }, fields);\n },\n\n aboveAxis: function(point) {\n return point.value >= 0;\n },\n\n plotRange: function(point) {\n return [ point.from, point.to ];\n },\n\n createSegments: function() {\n var this$1$1 = this;\n\n var series = this.options.series;\n var seriesPoints = this.seriesPoints;\n var segments = this.segments = [];\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var points = seriesPoints[seriesIx];\n\n if (points) {\n var prevPoint = (void 0);\n for (var pointIx = 0; pointIx < points.length; pointIx++) {\n var point = points[pointIx];\n\n if (point && prevPoint) {\n var segment = new WaterfallSegment(prevPoint, point, currentSeries);\n segments.push(segment);\n this$1$1.append(segment);\n }\n\n prevPoint = point;\n }\n }\n }\n }\n });\n\n function trendlineFactory(registry, type, context) {\n var impl = registry[String(type)];\n if (impl) {\n return impl(context);\n }\n\n return null;\n }\n\n // Optimized version of calculatePolynomial for order = 1\n function calculateSlope(sourceValues, valueGetter) {\n var x = 0;\n var y = 0;\n var x2 = 0;\n var xy = 0;\n var count = 0;\n var slope, intercept;\n var xMin = Number.MAX_VALUE;\n var xMax = Number.MIN_VALUE;\n\n for (var i = 0; i < sourceValues.length; i++) {\n var value = sourceValues[i];\n var ref = valueGetter(value);\n var xValue = ref.xValue;\n var yValue = ref.yValue;\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: slope, intercept: intercept, count: count, xMin: xMin, xMax: xMax };\n }\n\n var checkAllPositive = function (sourceValues, fieldName) { return sourceValues.every(function (ref) {\n var valueFields = ref.valueFields;\n\n return !hasValue(valueFields[fieldName]) || valueFields[fieldName] > 0;\n }); };\n\n function getTrendlineData(valueMapper, categoryAxis) {\n var data = [];\n var totalRange = categoryAxis.totalRangeIndices();\n var currentRange = categoryAxis.currentRangeIndices();\n var 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 (var i = range.min; i < range.max; i++) {\n var x = (i + 1);\n data[i] = {\n category: categoryAxis.categoryAt(i, true),\n value: valueMapper(x)\n };\n }\n\n return data;\n }\n\n function exponentialTrendline(context) {\n var options = context.options;\n var categoryAxis = context.categoryAxis;\n var seriesValues = context.seriesValues;\n\n var data = getData({ seriesValues: seriesValues, categoryAxis: categoryAxis, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n }\n\n var valueGetter = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: categoryIx + 1, yValue: Math.log(valueFields[fieldName]) });\n } };\n\n function getData(ref) {\n var seriesValues = ref.seriesValues;\n var categoryAxis = ref.categoryAxis;\n var options = ref.options;\n\n var sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, options.field)) {\n return null;\n }\n\n var ref$1 = calculateSlope(sourceValues, valueGetter(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n if (count > 0) {\n // Exponential trendline equation:\n // y = a * e ^ (b * x)\n var a = Math.exp(intercept);\n var b = slope;\n\n return getTrendlineData(function (x) { return a * Math.exp(b * x); }, categoryAxis);\n }\n\n return null;\n }\n\n function linearTrendline(context) {\n var options = context.options;\n var categoryAxis = context.categoryAxis;\n var seriesValues = context.seriesValues;\n\n var data = getData$1({ seriesValues: seriesValues, categoryAxis: categoryAxis, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n }\n\n var valueGetter$1 = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: categoryIx + 1, yValue: valueFields[fieldName] });\n } };\n\n function getData$1(ref) {\n var seriesValues = ref.seriesValues;\n var categoryAxis = ref.categoryAxis;\n var options = ref.options;\n\n var ref$1 = calculateSlope(seriesValues(), valueGetter$1(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n\n if (count > 0) {\n return getTrendlineData(function (x) { return slope * x + intercept; }, categoryAxis);\n }\n\n return null;\n }\n\n function logarithmicTrendline(context) {\n var options = context.options;\n var categoryAxis = context.categoryAxis;\n var seriesValues = context.seriesValues;\n\n var data = getData$2({ seriesValues: seriesValues, categoryAxis: categoryAxis, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n }\n\n var valueGetter$2 = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: Math.log(categoryIx + 1), yValue: valueFields[fieldName] });\n } };\n\n function getData$2(ref) {\n var seriesValues = ref.seriesValues;\n var categoryAxis = ref.categoryAxis;\n var options = ref.options;\n\n var ref$1 = calculateSlope(seriesValues(), valueGetter$2(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n if (count > 0) {\n // Logarithmic trendline equation:\n // y = a * ln (x) + b\n var a = slope;\n var b = intercept;\n return getTrendlineData(function (x) { return a * Math.log(x) + b; }, categoryAxis);\n }\n\n return null;\n }\n\n function calculateMovingAverage(sourceValues, valueGetter, period) {\n var averagePoints = [];\n var values = [];\n var start = Math.max(MIN_MOVING_AVERAGE_PERIOD, period) - 1;\n\n var end = 0;\n var sum = 0;\n\n for (var i = 0; i < sourceValues.length; i++) {\n var value = sourceValues[i];\n var ref = valueGetter(value);\n var xValue = ref.xValue;\n var yValue = ref.yValue;\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 var count = values.filter(function (value) { return value !== null; }).length;\n var lastValue = values.shift() || 0;\n\n if (count > 0) {\n var 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\n function movingAverageTrendline(context) {\n var options = context.options;\n\n var data = getData$3(context);\n if (data) {\n return $.extend({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n }\n\n var valueGetter$3 = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: categoryIx, yValue: valueFields[fieldName] });\n } };\n\n function calculatePoints(ref) {\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var seriesValues = ref.seriesValues;\n\n var period = (options.trendline || {}).period || MIN_MOVING_AVERAGE_PERIOD;\n var totalRange = categoryAxis.totalRangeIndices();\n var currentRange = categoryAxis.currentRangeIndices();\n var 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$3(options.field), period);\n }\n\n function getData$3(context) {\n var categoryAxis = context.categoryAxis;\n var points = calculatePoints(context);\n var data = [];\n points.forEach(function (ref) {\n var categoryIx = ref[0];\n var value = ref[1];\n\n data[categoryIx] = {\n category: categoryAxis.categoryAt(categoryIx, true),\n value: value\n };\n });\n\n if (data.length > 0) {\n return data;\n }\n\n return null;\n }\n\n var MIN_ORDER = 1;\n var MAX_ORDER = 6;\n\n function calculatePolynomial(sourceValues, valueGetter, order) {\n var k = Math.min(Math.max(order || MIN_ORDER, MIN_ORDER), MAX_ORDER) + 1;\n var X$$1 = new dataviz.Matrix();\n var Y$$1 = new dataviz.Matrix();\n var count = 0;\n var xMin = Number.MAX_VALUE;\n var xMax = Number.MIN_VALUE;\n var valueMapper = function (x) { return x; };\n var coefficients = [];\n\n for (var i = 0; i < sourceValues.length; i++) {\n var value = sourceValues[i];\n var ref = valueGetter(value);\n var xValue = ref.xValue;\n var yValue = ref.yValue;\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$$1.set(i, 0, yValue);\n\n // Set indicator column to 1 for valid values\n X$$1.set(i, 0, 1);\n X$$1.set(i, 1, xValue);\n for (var pow = 2; pow <= k; pow++) {\n X$$1.set(i, pow, Math.pow(X$$1.get(i, 1), pow));\n }\n } else {\n // Set indicator column to 0 for missing values\n X$$1.set(i, 0, 0);\n }\n }\n\n // Limit order to number of values.\n X$$1.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$$1, Y$$1);\n valueMapper = function (x) { return coefficients.reduce(function (y, a, n) { return y + a * Math.pow(x, n); }, 0); };\n }\n\n return {\n coefficients: coefficients,\n count: count,\n valueMapper: valueMapper,\n xMin: xMin,\n xMax: xMax\n };\n }\n\n function linearRegression(X$$1, Y$$1) {\n var Xt = X$$1.transpose();\n var B = Xt.multiply(X$$1).inverse().multiply(Xt).multiply(Y$$1); // the last square estimate of the coefficients\n\n var coefficients = [];\n for (var 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\n function polynomialTrendline(context) {\n var options = context.options;\n var categoryAxis = context.categoryAxis;\n var seriesValues = context.seriesValues;\n\n var data = getData$4({ seriesValues: seriesValues, categoryAxis: categoryAxis, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n }\n\n var valueGetter$4 = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: categoryIx + 1, yValue: valueFields[fieldName] });\n } };\n\n function getData$4(ref) {\n var seriesValues = ref.seriesValues;\n var categoryAxis = ref.categoryAxis;\n var options = ref.options;\n\n var order = (options.trendline || {}).order;\n var ref$1 = calculatePolynomial(seriesValues(), valueGetter$4(options.field), order);\n var count = ref$1.count;\n var valueMapper = ref$1.valueMapper;\n\n if (count > 0) {\n // Polynomial trendline equation:\n // y = aN * x^N + ... + a2 * x^2 + a1 * x + a0\n\n return getTrendlineData(function (x) { return valueMapper(x); }, categoryAxis);\n }\n\n return null;\n }\n\n function powerTrendline(context) {\n var options = context.options;\n var categoryAxis = context.categoryAxis;\n var seriesValues = context.seriesValues;\n\n var data = getData$5({ seriesValues: seriesValues, categoryAxis: categoryAxis, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n }\n\n var valueGetter$5 = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: Math.log(categoryIx + 1), yValue: Math.log(valueFields[fieldName]) });\n } };\n\n function getData$5(ref) {\n var seriesValues = ref.seriesValues;\n var categoryAxis = ref.categoryAxis;\n var options = ref.options;\n\n var sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, options.field)) {\n return null;\n }\n\n var ref$1 = calculateSlope(sourceValues, valueGetter$5(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n if (count > 0) {\n // Power trendline equation:\n // y = a * x ^ b\n var a = Math.exp(intercept);\n var b = slope;\n\n return getTrendlineData(function (x) { return a * Math.pow(x, b); }, categoryAxis);\n }\n\n return null;\n }\n\n var registry = {};\n registry[TRENDLINE_EXPONENTIAL] = exponentialTrendline;\n registry[TRENDLINE_LINEAR] = linearTrendline;\n registry[TRENDLINE_LOGARITHMIC] = logarithmicTrendline;\n registry[TRENDLINE_MOVING_AVERAGE] = movingAverageTrendline;\n registry[TRENDLINE_POLYNOMIAL] = polynomialTrendline;\n registry[TRENDLINE_POWER] = powerTrendline;\n\n var AREA_SERIES = [ AREA, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA ];\n var OUT_OF_RANGE_SERIES = [ LINE, VERTICAL_LINE ].concat(AREA_SERIES);\n\n var CategoricalPlotArea = PlotAreaBase.extend({\n initFields: function(series) {\n var this$1$1 = this;\n\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 (var i = 0; i < series.length; i++) {\n var stack = series[i].stack;\n if (stack && stack.type === \"100%\") {\n this$1$1.stack100 = true;\n break;\n }\n }\n }\n },\n\n render: function(panes) {\n if (panes === void 0) { panes = this.panes; }\n\n this.series = [].concat( 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: function(axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.fn.removeAxis.call(this, 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: function(options, series) {\n var categoryAxis = this.seriesCategoryAxis(options);\n var seriesValues = this.seriesValues.bind(this, series.index);\n\n var trendline = trendlineFactory(registry, options.type, {\n options: options,\n categoryAxis: categoryAxis,\n seriesValues: 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: function() {\n return this.series\n .map(function (series) { return (series.trendline || {}).forecast; })\n .filter(function (forecast) { return forecast !== undefined; })\n .reduce(function (result, forecast) { return ({\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: function(seriesIx, range) {\n var this$1$1 = this;\n\n var result = [];\n\n var series = this.srcSeries[seriesIx];\n var categoryAxis = this.seriesCategoryAxis(series);\n var 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 var min = range ? range.min : 0;\n var max = range ? range.max : series.data.length;\n for (var categoryIx = min; categoryIx < max; categoryIx++) {\n var data = this$1$1.bindPoint(series, categoryIx);\n result.push({ categoryIx: categoryIx, category: data.fields.category, valueFields: data.valueFields });\n }\n\n return result;\n },\n\n createCharts: function(panes) {\n var this$1$1 = this;\n\n var seriesByPane = this.groupSeriesByPane();\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1$1.addToLegend(paneSeries);\n\n var visibleSeries = this$1$1.filterVisibleSeries(paneSeries);\n if (!visibleSeries) {\n continue;\n }\n\n var groups = this$1$1.groupSeriesByCategoryAxis(visibleSeries);\n for (var groupIx = 0; groupIx < groups.length; groupIx++) {\n this$1$1.createChartGroup(groups[groupIx], pane);\n }\n }\n },\n\n createChartGroup: function(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: function(panes) {\n var this$1$1 = this;\n\n var series = [].concat( this.series );\n var processedSeries = [];\n this._currentPointsCache = {};\n this._seriesPointsCache = this._seriesPointsCache || {};\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n\n if (!this$1$1.isTrendline(currentSeries)) {\n var categoryAxis = this$1$1.seriesCategoryAxis(currentSeries);\n var axisPane = this$1$1.findPane(categoryAxis.options.pane);\n var dateAxis = equalsIgnoreCase(categoryAxis.options.type, DATE);\n\n if ((dateAxis || currentSeries.categoryField) && inArray(axisPane, panes)) {\n currentSeries = this$1$1.aggregateSeries(currentSeries, categoryAxis, categoryAxis.currentRangeIndices());\n } else {\n currentSeries = this$1$1.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: function(series, categoryAxis) {\n var 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 var range = categoryAxis.currentRangeIndices();\n var outOfRangePoints = inArray(series.type, OUT_OF_RANGE_SERIES);\n var currentSeries = deepExtend({}, series);\n\n currentSeries.data = (currentSeries.data || []).slice(range.min, range.max + 1);\n\n if (outOfRangePoints) {\n createOutOfRangePoints(currentSeries, range, dataLength, function (idx) { return ({\n item: series.data[idx],\n category: categoryAxis.categoryAt(idx, true),\n categoryIx: idx - range.min\n }); }, function (idx) { return defined(series.data[idx]); });\n }\n\n return currentSeries;\n },\n\n clearSeriesPointsCache: function() {\n this._seriesPointsCache = {};\n },\n\n seriesSourcePoints: function(series, categoryAxis) {\n var this$1$1 = this;\n\n var 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 var axisOptions = categoryAxis.options;\n var srcCategories = axisOptions.srcCategories;\n var dateAxis = equalsIgnoreCase(axisOptions.type, DATE);\n var srcData = series.data;\n var result = [];\n if (!dateAxis) {\n categoryAxis.indexCategories();\n }\n\n for (var idx = 0; idx < srcData.length; idx++) {\n var category = SeriesBinder.current.bindPoint(series, idx).fields.category;\n if (dateAxis) {\n category = parseDateCategory(category, srcData[idx], this$1$1.chartService.intl);\n }\n\n if (!defined(category)) {\n category = srcCategories[idx];\n }\n\n if (defined(category) && category !== null) {\n var 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: function(series, categoryAxis, range) {\n var srcData = series.data;\n if (!srcData.length) {\n return series;\n }\n\n var srcPoints = this.seriesSourcePoints(series, categoryAxis);\n var result = deepExtend({}, series);\n var aggregator = new SeriesAggregator(deepExtend({}, series), SeriesBinder.current, DefaultAggregates.current);\n var data = result.data = [];\n\n var dataItems = categoryAxis.options.dataItems || [];\n\n var categoryItem = function (idx) {\n var categoryIdx = idx - range.min;\n var point = srcPoints[idx];\n if (!point) {\n point = srcPoints[idx] = {};\n }\n\n point.categoryIx = categoryIdx;\n\n if (!point.item) {\n var 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 (var idx = range.min; idx <= range.max; idx++) {\n var 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, function (idx) { return srcPoints[idx]; });\n }\n\n categoryAxis.options.dataItems = dataItems;\n\n return result;\n },\n\n appendChart: function(chart, pane) {\n var series = chart.options.series;\n var categoryAxis = this.seriesCategoryAxis(series[0]);\n var categories = categoryAxis.options.categories;\n var 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 PlotAreaBase.fn.appendChart.call(this, chart, pane);\n },\n\n seriesPaneName: function(series) {\n var options = this.options;\n var axisName = series.axis;\n var axisOptions = [].concat(options.valueAxis);\n var axis = grep(axisOptions, function(a) { return a.name === axisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = (panes[0] || {}).name || \"default\";\n var paneName = (axis || {}).pane || defaultPaneName;\n\n return paneName;\n },\n\n seriesCategoryAxis: function(series) {\n var axisName = series.categoryAxis;\n var 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: function(series, pane) {\n var anyStackedSeries = series.some(function (s) { return s.stack; });\n var isStacked100 = series.some(function (s) { return s.stack && s.stack.type === \"100%\"; });\n var 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: function(series) {\n var categoryAxes = [];\n var unique = {};\n for (var idx = 0; idx < series.length; idx++) {\n var name = series[idx].categoryAxis || \"$$default$$\";\n if (!dataviz.hasOwnProperty(unique, name)) {\n unique[name] = true;\n categoryAxes.push(name);\n }\n }\n\n var groups = [];\n for (var axisIx = 0; axisIx < categoryAxes.length; axisIx++) {\n var axis = categoryAxes[axisIx];\n var 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: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var barChart = new BarChart(this, $.extend({\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: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var 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: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var 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: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var lineChart = new LineChart(this, $.extend({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(series, pane)));\n\n this.appendChart(lineChart, pane);\n },\n\n createAreaChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var areaChart = new AreaChart(this, $.extend({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(series, pane)));\n\n this.appendChart(areaChart, pane);\n },\n\n createRangeAreaChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var 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: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var 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: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var 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: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var 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: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var 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: function(categoryAxisName, categoryAxisIndex) {\n var this$1$1 = this;\n\n var centeredSeries = filterSeriesByType(this.series, EQUALLY_SPACED_SERIES);\n\n for (var seriesIx = 0; seriesIx < this.series.length; seriesIx++) {\n var currentSeries = this$1$1.series[seriesIx];\n if (inArray(currentSeries.type, AREA_SERIES)) {\n var line = currentSeries.line;\n if (line && line.style === STEP) {\n centeredSeries.push(currentSeries);\n }\n }\n }\n\n for (var seriesIx$1 = 0; seriesIx$1 < centeredSeries.length; seriesIx$1++) {\n var seriesAxis = centeredSeries[seriesIx$1].categoryAxis || \"\";\n if (seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) {\n return true;\n }\n }\n },\n\n aggregatedAxis: function(categoryAxisName, categoryAxisIndex) {\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var seriesAxis = series[seriesIx].categoryAxis || \"\";\n if ((seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) && series[seriesIx].categoryField) {\n return true;\n }\n }\n },\n\n createCategoryAxesLabels: function() {\n var axes = this.axes;\n for (var i = 0; i < axes.length; i++) {\n if (axes[i] instanceof CategoryAxis) {\n axes[i].createLabels();\n }\n }\n },\n\n createCategoryAxes: function(panes) {\n var this$1$1 = this;\n\n var invertAxes = this.invertAxes;\n var definitions = [].concat(this.options.categoryAxis);\n var axes = [];\n\n for (var i = 0; i < definitions.length; i++) {\n var axisOptions = definitions[i];\n var axisPane = this$1$1.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n var name = axisOptions.name;\n var categories = axisOptions.categories; if (categories === void 0) { categories = []; }\n axisOptions = deepExtend({\n vertical: invertAxes,\n reverse: !invertAxes && this$1$1.chartService.rtl,\n axisCrossingValue: invertAxes ? MAX_VALUE : 0\n }, axisOptions);\n\n if (!defined(axisOptions.justified)) {\n axisOptions.justified = this$1$1.isJustified();\n }\n\n if (this$1$1.axisRequiresRounding(name, i)) {\n axisOptions.justified = false;\n }\n\n var categoryAxis = (void 0);\n\n if (isDateAxis(axisOptions, categories[0])) {\n axisOptions._forecast = this$1$1.trendlineAggregateForecast();\n categoryAxis = new dataviz.DateCategoryAxis(axisOptions, this$1$1.chartService);\n } else {\n categoryAxis = new CategoryAxis(axisOptions, this$1$1.chartService);\n }\n\n definitions[i].categories = categoryAxis.options.srcCategories;\n\n if (name) {\n if (this$1$1.namedCategoryAxes[name]) {\n throw new Error((\"Category axis with name \" + name + \" is already defined\"));\n }\n this$1$1.namedCategoryAxes[name] = categoryAxis;\n }\n\n categoryAxis.axisIndex = i;\n axes.push(categoryAxis);\n this$1$1.appendAxis(categoryAxis);\n }\n }\n\n var 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: function() {\n var series = this.series;\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n if (!inArray(currentSeries.type, AREA_SERIES)) {\n return false;\n }\n }\n\n return true;\n },\n\n createValueAxes: function(panes) {\n var this$1$1 = this;\n\n var tracker = this.valueAxisRangeTracker;\n var defaultRange = tracker.query();\n var definitions = [].concat(this.options.valueAxis);\n var invertAxes = this.invertAxes;\n var baseOptions = { vertical: !invertAxes, reverse: invertAxes && this.chartService.rtl };\n var axes = [];\n\n if (this.stack100) {\n baseOptions.roundToMajorUnit = false;\n baseOptions.labels = { format: \"P0\" };\n }\n\n for (var i = 0; i < definitions.length; i++) {\n var axisOptions = definitions[i];\n var axisPane = this$1$1.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n var name = axisOptions.name;\n var defaultAxisRange = equalsIgnoreCase(axisOptions.type, LOGARITHMIC) ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n var 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 var axisType = (void 0);\n if (equalsIgnoreCase(axisOptions.type, LOGARITHMIC)) {\n axisType = dataviz.LogarithmicAxis;\n } else {\n axisType = dataviz.NumericAxis;\n }\n\n var valueAxis = new axisType(range.min, range.max,\n deepExtend({}, baseOptions, axisOptions),\n this$1$1.chartService\n );\n\n if (name) {\n if (this$1$1.namedValueAxes[name]) {\n throw new Error((\"Value axis with name \" + name + \" is already defined\"));\n }\n this$1$1.namedValueAxes[name] = valueAxis;\n }\n valueAxis.axisIndex = i;\n\n axes.push(valueAxis);\n this$1$1.appendAxis(valueAxis);\n }\n }\n\n var 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: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var pane = this.pointPane(point);\n var categories = [];\n var values = [];\n\n if (!pane) {\n return;\n }\n\n var allAxes = pane.axes;\n for (var i = 0; i < allAxes.length; i++) {\n var 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: function(point) {\n var panes = this.panes;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n if (currentPane.contentBox.containsPoint(point)) {\n return currentPane;\n }\n }\n },\n\n updateAxisOptions: function(axis, options) {\n updateAxisOptions(this.options, axis, options);\n updateAxisOptions(this.originalOptions, axis, options);\n },\n\n _pointsByVertical: function(basePoint, offset) {\n if (offset === void 0) { offset = 0; }\n\n if (this.invertAxes) {\n return this._siblingsBySeriesIndex(basePoint.series.index, offset);\n }\n\n return this._siblingsByPointIndex(basePoint.getIndex());\n },\n\n _pointsByHorizontal: function(basePoint, offset) {\n if (offset === void 0) { offset = 0; }\n\n if (this.invertAxes) {\n return this._siblingsByPointIndex(basePoint.getIndex());\n }\n\n var 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: function(pointIndex) {\n var this$1$1 = this;\n\n var charts = this.charts;\n var result = [];\n\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n\n if (chart.pane && chart.pane.options.name === \"_navigator\") {\n continue;\n }\n\n var chartPoints = chart.points\n .filter(function (point) { return point && point.visible !== false && point.getIndex() === pointIndex; }\n );\n\n result.push.apply(result, chartPoints.sort(this$1$1._getSeriesCompareFn(chartPoints[0])));\n }\n\n return result;\n },\n\n _siblingsBySeriesIndex: function(seriesIndex, offset) {\n var index = cycleIndex(seriesIndex + offset, this.series.length);\n\n return this.pointsBySeriesIndex(index);\n },\n\n _getSeriesCompareFn: function(point) {\n var isStacked = this._isInStackedSeries(point);\n\n if (isStacked && this.invertAxes || !isStacked && !this.invertAxes) {\n return function (a, b) { return a.box.center().x - b.box.center().x; };\n }\n\n return function (a, b) { return a.box.center().y - b.box.center().y; };\n },\n\n _isInStackedSeries: function(point) {\n var sortableSeries = inArray(point.series.type,\n [ AREA, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA, LINE, VERTICAL_LINE, RADAR_LINE, RADAR_AREA]);\n\n var stackableSeries = inArray(point.series.type, [ COLUMN, BAR]);\n\n return sortableSeries || stackableSeries && point.options.isStacked;\n }\n });\n\n function updateAxisOptions(targetOptions, axis, options) {\n var axesOptions = axis instanceof CategoryAxis ? [].concat(targetOptions.categoryAxis) : [].concat(targetOptions.valueAxis);\n deepExtend(axesOptions[axis.axisIndex], options);\n }\n\n function groupSeries(series, axis, axisIx) {\n return grep(series, function(s) {\n return (axisIx === 0 && !s.categoryAxis) || (s.categoryAxis === axis);\n });\n }\n\n setDefaultOptions(CategoricalPlotArea, {\n categoryAxis: {},\n valueAxis: {}\n });\n\n deepExtend(CategoricalPlotArea.prototype, PlotAreaEventsMixin);\n\n var Highlight = Class.extend({\n init: function() {\n\n this._points = [];\n },\n\n destroy: function() {\n this._points = [];\n },\n\n show: function(points, opacity) {\n var this$1$1 = this;\n\n var arrayPoints = [].concat(points);\n this.hide();\n\n for (var i = 0; i < arrayPoints.length; i++) {\n var point = arrayPoints[i];\n if (point && point.toggleHighlight && point.hasHighlight()) {\n this$1$1.togglePointHighlight(point, true, opacity);\n this$1$1._points.push(point);\n }\n }\n },\n\n togglePointHighlight: function(point, show, opacity) {\n var toggleHandler = (point.options.highlight || {}).toggle;\n if (toggleHandler) {\n var 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: function() {\n var this$1$1 = this;\n\n var points = this._points;\n while (points.length) {\n this$1$1.togglePointHighlight(points.pop(), false);\n }\n },\n\n isHighlighted: function(element) {\n var points = this._points;\n\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n if (element === point) {\n return true;\n }\n }\n\n return false;\n }\n });\n\n function preventDefault() {\n this._defaultPrevented = true;\n }\n\n function acceptKey(e, mouseKey) {\n var key = (mouseKey || \"\").toLowerCase();\n var event = e.event;\n var accept = (key === \"none\" && !(event.ctrlKey || event.shiftKey || event.altKey)) || event[key + \"Key\"];\n\n return accept;\n }\n\n function toChartAxisRanges(axisRanges) {\n var ranges = {};\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var 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 }\n\n var Pannable = Class.extend({\n init: function(plotArea, options) {\n\n this.plotArea = plotArea;\n this.options = deepExtend({}, this.options, options);\n },\n\n start: function(e) {\n this._active = acceptKey(e, this.options.key);\n return this._active;\n },\n\n move: function(e) {\n if (this._active) {\n var 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: function() {\n var active = this._active;\n this._active = false;\n\n return active;\n },\n\n pan: function() {\n var ref = this;\n var plotArea = ref.plotArea;\n var axisRanges = ref.axisRanges;\n if (axisRanges.length) {\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var range = axisRanges[idx];\n plotArea.updateAxisOptions(range.axis, range.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n },\n\n destroy: function() {\n delete this.plotArea;\n },\n\n _panAxes: function(e, position) {\n var plotArea = this.plotArea;\n var delta = -e[position].delta;\n var lock = (this.options.lock || \"\").toLowerCase();\n var updatedAxes = [];\n\n if (delta !== 0 && (lock || \"\").toLowerCase() !== position) {\n var axes = plotArea.axes;\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n\n if (position === X && !axis.options.vertical || position === Y && axis.options.vertical) {\n var 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\n Pannable.prototype.options = {\n key: \"none\",\n lock: \"none\"\n };\n\n var ZoomSelection = Class.extend({\n init: function(chart, options) {\n\n this.chart = chart;\n this.options = deepExtend({}, this.options, options);\n this.createElement();\n },\n\n createElement: function() {\n var marquee = this._marquee = document.createElement(\"div\");\n marquee.className = \"k-marquee\";\n var marqueeColor = document.createElement(\"div\");\n marqueeColor.className = \"k-marquee-color\";\n marquee.appendChild(marqueeColor);\n },\n\n removeElement: function() {\n if (this._marquee.parentNode) {\n this._marquee.parentNode.removeChild(this._marquee);\n }\n },\n\n setStyles: function(styles) {\n elementStyles(this._marquee, styles);\n },\n\n start: function(e) {\n if (acceptKey(e, this.options.key)) {\n var chart = this.chart;\n var point = chart._eventCoordinates(e);\n var zoomPane = this._zoomPane = chart._plotArea.paneByPoint(point);\n var clipBox = zoomPane ? zoomPane.chartsBox().clone() : null;\n\n if (zoomPane && clipBox) {\n var 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: function() {\n var chartElement = this.chart.element;\n var ref = elementStyles(chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n var offset = dataviz.elementOffset(chartElement);\n\n return {\n left: paddingLeft + offset.left,\n top: paddingTop + offset.top\n };\n },\n\n move: function(e) {\n var zoomPane = this._zoomPane;\n if (zoomPane) {\n this.setStyles(this._selectionPosition(e));\n }\n },\n\n end: function(e) {\n var zoomPane = this._zoomPane;\n if (zoomPane) {\n var elementOffset$$1 = this._elementOffset();\n var selectionPosition = this._selectionPosition(e);\n selectionPosition.left -= elementOffset$$1.left;\n selectionPosition.top -= elementOffset$$1.top;\n\n var start = { x: selectionPosition.left, y: selectionPosition.top };\n var 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: function() {\n var axisRanges = this.axisRanges;\n if (axisRanges && axisRanges.length) {\n var plotArea = this.chart._plotArea;\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n },\n\n destroy: function() {\n this.removeElement();\n delete this._marquee;\n delete this.chart;\n },\n\n _updateAxisRanges: function(start, end) {\n var lock = (this.options.lock || \"\").toLowerCase();\n var axisRanges = [];\n\n var axes = this._zoomPane.axes;\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n var vertical = axis.options.vertical;\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && defined(axis.axisIndex)) {\n var 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: function(e) {\n var clipBox = this._zoomPaneClipBox;\n var startLocation = {\n x: e.x.startLocation,\n y: e.y.startLocation\n };\n var pageX = e.x.location;\n var pageY = e.y.location;\n var lock = (this.options.lock || \"\").toLowerCase();\n var left = Math.min(startLocation.x, pageX);\n var top = Math.min(startLocation.y, pageY);\n var width = Math.abs(startLocation.x - pageX);\n var 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\n ZoomSelection.prototype.options = {\n key: \"shift\",\n lock: \"none\"\n };\n\n var ref = drawing.util;\n var limitValue$1 = ref.limitValue;\n var valueOrDefault$1 = ref.valueOrDefault;\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.\n var MIN_RATE = 0.01;\n var MAX_RATE = 0.9;\n var DEFAULT_RATE = 0.3;\n\n var MousewheelZoom = Class.extend({\n init: function(chart, options) {\n\n this.chart = chart;\n this.options = deepExtend({\n rate: DEFAULT_RATE\n }, this.options, options);\n },\n\n updateRanges: function(delta, coords) {\n var this$1$1 = this;\n\n var lock = (this.options.lock || \"\").toLowerCase();\n var axisRanges = [];\n var axes = this.chart._plotArea.axes;\n\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n var vertical = axis.options.vertical;\n\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && axis.zoomRange) {\n var rate = limitValue$1(this$1$1.options.rate, MIN_RATE, MAX_RATE);\n var 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: function() {\n var axisRanges = this.axisRanges;\n var plotArea = this.chart._plotArea;\n\n if (axisRanges && axisRanges.length && plotArea.updateAxisOptions) {\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n },\n\n destroy: function() {\n delete this.chart;\n }\n });\n\n var LegendLayout = ChartElement.extend({\n init: function(options, chartService) {\n ChartElement.fn.init.call(this, options);\n\n this.chartService = chartService;\n },\n\n render: function() {\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var vertical = options.vertical;\n\n this.visual = new drawing.Layout(null, {\n spacing: vertical ? 0 : options.spacing,\n lineSpacing: vertical ? options.spacing : 0,\n orientation: vertical ? datavizConstants.VERTICAL : datavizConstants.HORIZONTAL,\n reverse: options.rtl,\n alignItems: vertical ? START : CENTER\n });\n\n for (var idx = 0; idx < children.length; idx++) {\n var legendItem = children[idx];\n legendItem.reflow(new Box());\n legendItem.renderVisual();\n }\n },\n\n reflow: function(box) {\n this.visual.rect(box.toRect());\n this.visual.reflow();\n var bbox = this.visual.clippedBBox();\n\n if (bbox) {\n this.box = dataviz.rectToBox(bbox);\n } else {\n this.box = new Box();\n }\n },\n\n renderVisual: function() {\n this.addVisual();\n },\n\n createVisual: function() {}\n });\n\n var DEFAULT_MARKER_SIZE = 10;\n var DEFAULT_MARKER_BORDER_WIDTH = 2;\n\n var LegendItemMarker = ShapeElement.extend({\n visualStyle: function() {\n var options = this.markerOptions();\n var border = options.border;\n\n return {\n stroke: {\n width: border.width,\n color: border.color,\n opacity: valueOrDefault$1(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: function() {\n return this.options;\n },\n\n markerHighlightOptions: function() {\n var options = this.markerOptions();\n var borderWidth = options.highlight.border.width;\n\n return deepExtend(\n {},\n options,\n { background: options.border.color },\n options.highlight,\n options.type === datavizConstants.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: function() {\n var highlight = new ShapeElement(this.markerHighlightOptions());\n var 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\n setDefaultOptions(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\n var ChartElement$1 = Class.extend({\n init: function(options) {\n\n this.children = [];\n\n this.options = deepExtend({}, this.options, this.initUserOptions(options));\n },\n\n initUserOptions: function(options) {\n return options;\n },\n\n reflow: function(targetBox) {\n var children = this.children;\n var box;\n\n for (var i = 0; i < children.length; i++) {\n var 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: function() {\n var children = this.children;\n\n if (this.animation) {\n this.animation.destroy();\n }\n\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n },\n\n getRoot: function() {\n var parent = this.parent;\n\n return parent ? parent.getRoot() : null;\n },\n\n getSender: function() {\n var service = this.getService();\n if (service) {\n return service.sender;\n }\n },\n\n getService: function() {\n var element = this;\n while (element) {\n if (element.chartService) {\n return element.chartService;\n }\n element = element.parent;\n }\n },\n\n translateChildren: function(dx, dy) {\n var children = this.children;\n var childrenCount = children.length;\n\n for (var i = 0; i < childrenCount; i++) {\n children[i].box.translate(dx, dy);\n }\n },\n\n append: function() {\n var arguments$1 = arguments;\n var this$1$1 = this;\n\n for (var i = 0; i < arguments.length; i++) {\n var item = arguments$1[i];\n this$1$1.children.push(item);\n item.parent = this$1$1;\n }\n },\n\n renderVisual: function() {\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: function() {\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: function() {\n var children = this.children;\n var length = children.length;\n for (var i = 0; i < length; i++) {\n children[i].renderVisual();\n }\n },\n\n createVisual: function() {\n this.visual = new Group({\n zIndex: this.options.zIndex,\n visible: valueOrDefault(this.options.visible, true)\n });\n },\n\n createAnimation: function() {\n if (this.visual && this.options.animation) {\n this.animation = Animation.create(\n this.visual, this.options.animation\n );\n }\n },\n\n appendVisual: function(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: function() {\n if (this.parent) {\n return this.parent.clipRoot();\n }\n\n return this;\n },\n\n stackRoot: function() {\n if (this.parent) {\n return this.parent.stackRoot();\n }\n\n return this;\n },\n\n stackVisual: function(childVisual) {\n var zIndex = childVisual.options.zIndex || 0;\n var visuals = this.visual.children;\n var length = visuals.length;\n var pos;\n\n for (pos = 0; pos < length; pos++) {\n var sibling = visuals[pos];\n var 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: function(callback) {\n var children = this.children;\n var length = children.length;\n\n for (var i = 0; i < length; i++) {\n var child = children[i];\n\n callback(child);\n if (child.traverse) {\n child.traverse(callback);\n }\n }\n },\n\n closest: function(match) {\n var element = this;\n var 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: function() {},\n\n hasHighlight: function() {\n var options = (this.options || {}).highlight;\n return !(!this.createHighlight || (options && options.visible === false) || this.visible === false);\n },\n\n toggleHighlight: function(show, opacity) {\n var this$1$1 = this;\n\n var options = (this.options || {}).highlight || {};\n var customVisual = options.visual;\n var highlight = this._highlight;\n\n if (!highlight) {\n var 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 $.extend(this.highlightVisualArgs(), {\n createVisual: function () { return this$1$1.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: function(show) {\n var options = ((this.options || {}).accessibility || {}).highlight || {};\n var focusHighlight = this._focusHighlight;\n\n if (!show && !focusHighlight) {\n return;\n }\n\n if (!focusHighlight) {\n var rootBackground = this.getRoot().options.background;\n var highlightColor = autoTextColor(rootBackground);\n var focusHighlightOptions = {\n fill: {\n opacity: options.opacity,\n color: options.color\n },\n stroke: $.extend({}, {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: function(element, options, gradientOptions) {\n var overlay = new Path($.extend({\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: function(options) {\n if (this.parent) {\n return this.parent.createGradient(options);\n }\n },\n\n supportsPointInactiveOpacity: function() {\n return true;\n }\n });\n\n ChartElement$1.prototype.options = { };\n\n var Point$1 = Class.extend({\n init: function(x, y) {\n\n this.x = x || 0;\n this.y = y || 0;\n },\n\n clone: function() {\n return new Point$1(this.x, this.y);\n },\n\n equals: function(point) {\n return point && this.x === point.x && this.y === point.y;\n },\n\n rotate: function(center, degrees) {\n var theta = rad(degrees);\n var cosT = Math.cos(theta);\n var sinT = Math.sin(theta);\n var cx = center.x;\n var cy = center.y;\n var ref = this;\n var x = ref.x;\n var y = ref.y;\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: function(a) {\n\n this.x *= a;\n this.y *= a;\n\n return this;\n },\n\n distanceTo: function(point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n });\n\n Point$1.onCircle = function(center, angle, radius) {\n var radians = rad(angle);\n\n return new Point$1(\n center.x - radius * Math.cos(radians),\n center.y - radius * Math.sin(radians)\n );\n };\n\n var Box$1 = Class.extend({\n init: function(x1, y1, x2, y2) {\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: function(box) {\n return this.x1 === box.x1 && this.x2 === box.x2 &&\n this.y1 === box.y1 && this.y2 === box.y2;\n },\n\n width: function() {\n return this.x2 - this.x1;\n },\n\n height: function() {\n return this.y2 - this.y1;\n },\n\n translate: function(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: function(x, y) {\n var height = this.height();\n var 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: function(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: function(point) {\n var arrayPoint = isArray(point);\n var x = arrayPoint ? point[0] : point.x;\n var y = arrayPoint ? point[1] : point.y;\n this.wrap(new Box$1(x, y, x, y));\n\n return this;\n },\n\n snapTo: function(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: function(targetBox, anchor) {\n var height = this.height();\n var width = this.width();\n var axis = anchor === TOP || anchor === BOTTOM ? Y : X;\n var offset = axis === Y ? height : width;\n\n if (anchor === CENTER) {\n var targetCenter = targetBox.center();\n var 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: function(dw, dh) {\n\n this.x2 -= dw;\n this.y2 -= dh;\n\n return this;\n },\n\n expand: function(dw, dh) {\n this.shrink(-dw, -dh);\n return this;\n },\n\n pad: function(padding) {\n var 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: function(padding) {\n var 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: function() {\n return new Box$1(this.x1, this.y1, this.x2, this.y2);\n },\n\n center: function() {\n return new Point$1(\n this.x1 + this.width() / 2,\n this.y1 + this.height() / 2\n );\n },\n\n containsPoint: function(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: function() {\n return [\n new Point$1(this.x1, this.y1),\n new Point$1(this.x2, this.y1),\n new Point$1(this.x2, this.y2),\n new Point$1(this.x1, this.y2)\n ];\n },\n\n getHash: function() {\n return [ this.x1, this.y1, this.x2, this.y2 ].join(\",\");\n },\n\n overlaps: function(box) {\n return !(box.y2 < this.y1 || this.y2 < box.y1 || box.x2 < this.x1 || this.x2 < box.x1);\n },\n\n rotate: function(rotation) {\n var width = this.width();\n var height = this.height();\n var ref = this.center();\n var cx = ref.x;\n var cy = ref.y;\n\n var r1 = rotatePoint(0, 0, cx, cy, rotation);\n var r2 = rotatePoint(width, 0, cx, cy, rotation);\n var r3 = rotatePoint(width, height, cx, cy, rotation);\n var 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: function() {\n return new geometry.Rect([ this.x1, this.y1 ], [ this.width(), this.height() ]);\n },\n\n hasSize: function() {\n return this.width() !== 0 && this.height() !== 0;\n },\n\n align: function(targetBox, axis, alignment) {\n var c1 = axis + 1;\n var c2 = axis + 2;\n var sizeFunc = axis === X ? datavizConstants.WIDTH : datavizConstants.HEIGHT;\n var 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\n function rotatePoint(x, y, cx, cy, angle) {\n var theta = rad(angle);\n\n return new Point$1(\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\n var BoxElement$1 = ChartElement$1.extend({\n init: function(options) {\n ChartElement$1.fn.init.call(this, options);\n\n this.options.margin = getSpacing(this.options.margin);\n this.options.padding = getSpacing(this.options.padding);\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var options = this.options;\n var width = options.width;\n var height = options.height;\n var shrinkToFit = options.shrinkToFit;\n var hasSetSize = width && height;\n var margin = options.margin;\n var padding = options.padding;\n var borderWidth = options.border.width;\n var box;\n\n var reflowPaddingBox = function () {\n this$1$1.align(targetBox, X, options.align);\n this$1$1.align(targetBox, Y, options.vAlign);\n this$1$1.paddingBox = box.clone().unpad(margin).unpad(borderWidth);\n };\n\n var 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 ChartElement$1.fn.reflow.call(this, contentBox);\n\n if (hasSetSize) {\n box = this.box = new Box$1(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 var children = this.children;\n for (var i = 0; i < children.length; i++) {\n var item = children[i];\n item.reflow(item.box);\n }\n },\n\n align: function(targetBox, axis, alignment) {\n this.box.align(targetBox, axis, alignment);\n },\n\n hasBox: function() {\n var options = this.options;\n return options.border.width || options.background;\n },\n\n createVisual: function() {\n ChartElement$1.fn.createVisual.call(this);\n\n var options = this.options;\n if (options.visible && this.hasBox()) {\n this.visual.append(Path.fromRect(\n this.paddingBox.toRect(),\n this.visualStyle()\n ));\n }\n },\n\n visualStyle: function() {\n var options = this.options;\n var 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\n setDefaultOptions(BoxElement$1, {\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\n var ShapeElement$1 = BoxElement$1.extend({\n init: function(options, pointData) {\n BoxElement$1.fn.init.call(this, options);\n\n this.pointData = pointData;\n },\n\n getElement: function() {\n var ref = this;\n var options = ref.options;\n var box = ref.paddingBox;\n var type = options.type;\n var rotation = options.rotation;\n var center = box.center();\n var halfWidth = box.width() / 2;\n var halfHeight = box.height() / 2;\n\n if (!options.visible || !this.hasBox()) {\n return null;\n }\n\n var style = this.visualStyle();\n var element;\n\n if (type === CIRCLE) {\n element = new Circle(\n new GeometryCircle([\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 === datavizConstants.TRIANGLE) {\n element = 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 === datavizConstants.CROSS) {\n element = new 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 var rect = box.toRect();\n if (type === datavizConstants.ROUNDED_RECT) {\n var borderRadius = valueOrDefault$1(options.borderRadius, rect.width() / 5);\n rect.setCornerRadius(borderRadius);\n }\n\n element = Path.fromRect(rect, style);\n }\n\n if (rotation) {\n element.transform(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: function() {\n var this$1$1 = this;\n\n var customVisual = this.options.visual;\n var pointData = this.pointData || {};\n var 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: function () { return this$1$1.getElement(); }\n });\n } else {\n visual = this.getElement();\n }\n\n return visual;\n },\n\n visualOptions: function() {\n var 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: function() {\n this.visual = this.createElement();\n\n addAccessibilityAttributesToVisual(this.visual, this.options.accessibilityOptions);\n }\n });\n\n setDefaultOptions(ShapeElement$1, {\n type: CIRCLE,\n align: CENTER,\n vAlign: CENTER\n });\n\n var MarkerLineArea = ShapeElement$1.extend({\n getElement: function() {\n var group = new Group();\n var element = new MultiPath(this.visualStyle());\n var ref = this;\n var box = ref.paddingBox;\n var 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\n setDefaultOptions(MarkerLineArea, {\n width: 15,\n height: 15,\n align: RIGHT,\n vAlign: BOTTOM,\n margin: {\n right: -2,\n bottom: 2\n }\n });\n\n var LegendItemLine = ShapeElement$1.extend({\n getElement: function() {\n var group = new Group();\n var element = new 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 var box = this.paddingBox;\n var 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: function() {\n this.highlight = [ this.createHighlightLine(), this.createHighlightMarker() ];\n return this.highlight;\n },\n\n createHighlightLine: function() {\n var 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 var 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: function() {\n var options = deepExtend({}, {\n background: this.options.background,\n }, this.options.highlight.markers);\n var highlightMarker = new ShapeElement$1(options);\n var paddingBox = this.parent.paddingBox;\n var borderWidth = options.border.width;\n var 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\n setDefaultOptions(LegendItemLine, {\n border: {\n width: 0\n },\n type: datavizConstants.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\n var LegendItemSquare = ShapeElement$1.extend({\n createHighlight: function() {\n var options = deepExtend({}, {\n background: this.options.background,\n }, this.options.highlight.markers);\n var highlight = new ShapeElement$1(options);\n\n var box = this.paddingBox.clone();\n var 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\n setDefaultOptions(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\n var LegendItem = BoxElement.extend({\n init: function(options) {\n BoxElement.fn.init.call(this, 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: function() {\n this.container = new dataviz.FloatElement({ vertical: false, wrap: false, align: CENTER, spacing: this.options.spacing });\n this.append(this.container);\n },\n\n createMarker: function() {\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: function() {\n var options = this.options;\n var markerColor = options.markerColor;\n var line = options.line; if (line === void 0) { line = {}; }\n var 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: function() {\n var options = this.options;\n var markers = options.markers; if (markers === void 0) { markers = {}; }\n var markerColor = options.markerColor;\n var border = markers.border; if (border === void 0) { border = {}; }\n markers.zIndex = undefined;\n\n return deepExtend({}, markers, {\n border: { color: border.color || markerColor },\n highlight: options.highlight.markers\n });\n },\n\n _highlightOptions: function() {\n var options = this.options;\n return deepExtend(\n { markers: { type: options.markers.type } },\n options.highlight\n );\n },\n\n _createLine: function(lineOptions) {\n var 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: function(lineOptions, line) {\n var 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: function() {\n var options = this.options;\n if (options.type === AREA) {\n this._square = new LegendItemSquare($.extend({}, {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: function() {\n return new LegendItemMarker(this.markerOptions());\n },\n\n _highlightMarkers: function() {\n if (this.options.active) {\n this._toggleHighlight(true);\n }\n },\n\n _restoreMarkers: function() {\n this._toggleHighlight(false);\n },\n\n _toggleHighlight: function(show) {\n var this$1$1 = this;\n\n if (!this.options.highlight.visible) {\n return;\n }\n\n var 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 var highlight = element.highlight;\n\n if (!highlight) {\n highlight = element.createHighlight();\n highlight.forEach(function (h) { return h && this$1$1.markerWrap.appendVisual(h); });\n }\n\n highlight.forEach(function (h) { return h && h.visible(show); });\n }\n },\n\n createLabel: function() {\n var options = this.options;\n var labelOptions = deepExtend({}, options.labels);\n\n this.container.append(new TextBox(options.text, labelOptions));\n },\n\n getAriaLabelText: function() {\n return this.options.text;\n },\n\n focusVisual: function() {\n this.visual.options.set(\"id\", this._id);\n this.toggleFocusHighlight(true);\n this._highlightMarkers();\n },\n\n clearFocusFromVisual: function() {\n this.visual.options.set(\"id\", \"\");\n this.toggleFocusHighlight(false);\n this._restoreMarkers();\n },\n\n renderComplete: function() {\n BoxElement.fn.renderComplete.call(this);\n\n var cursor = this.options.cursor || {};\n var eventSink = this._itemOverlay = 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: function(widget, e) {\n var 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: function(widget, e) {\n var 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: function(widget, e) {\n widget._unsetActivePoint();\n this._restoreMarkers();\n\n widget.trigger(LEGEND_ITEM_LEAVE, this.eventArgs(e));\n },\n\n eventArgs: function(e) {\n var 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: function() {\n BoxElement.fn.createVisual.call(this);\n var options = this.options;\n\n if (this.options.visible) {\n var accessibilityOptions = deepExtend({\n ariaLabel: options.text\n }, options.accessibility);\n\n addAccessibilityAttributesToVisual(this.visual, accessibilityOptions);\n }\n },\n\n renderVisual: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var 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: function () {\n this$1$1.createVisual();\n this$1$1.renderChildren();\n this$1$1.renderComplete();\n\n var defaultVisual = this$1$1.visual;\n\n delete this$1$1.visual;\n\n return defaultVisual;\n }\n });\n this._marker = this._markerLineArea = this._square = this._line = null;\n this.addVisual();\n } else {\n BoxElement.fn.renderVisual.call(this);\n }\n },\n\n createFocusHighlight: function(style) {\n var borderWidth = style.stroke.width;\n return Path.fromRect(this.container.box.pad(borderWidth / 2).toRect(), style);\n }\n });\n\n setDefaultOptions(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\n var CUSTOM = \"custom\";\n\n var Legend = ChartElement.extend({\n init: function(options, chartService) {\n if (chartService === void 0) { chartService = {}; }\n\n ChartElement.fn.init.call(this, 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: function() {\n var options = this.options;\n var position = options.position;\n var userAlign = options.align;\n var align = position;\n var 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: function() {\n var chartService = this.getService();\n var options = this.options;\n var vertical = this.isVertical();\n var innerElement = new LegendLayout({\n vertical: vertical,\n spacing: options.spacing,\n rtl: chartService.rtl\n }, chartService);\n var data = options.data;\n\n if (options.reverse) {\n data = data.slice(0).reverse();\n }\n\n var count = data.length;\n\n for (var i = 0; i < count; i++) {\n var dataItem = data[i];\n var ref = dataItem.series || {};\n var markers = ref.markers; if (markers === void 0) { markers = {}; }\n var dashType = ref.dashType;\n var legendItem = ref.legendItem;\n var opacity = ref.opacity;\n var markersOptions = deepExtend({ visible: markers.visible !== false, type: CIRCLE }, markers);\n delete markersOptions.size;\n\n var itemOptions = deepExtend({},\n {\n markers: markersOptions,\n labels: options.labels,\n rtl: chartService.rtl,\n line: $.extend({}, {dashType: dashType},\n options.line),\n area: $.extend({}, {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: function() {\n var ref = this.options;\n var orientation = ref.orientation;\n var position = ref.position;\n var vertical = (position === CUSTOM && orientation !== datavizConstants.HORIZONTAL) ||\n (defined(orientation) ? orientation !== datavizConstants.HORIZONTAL : inArray(position, [ LEFT, RIGHT ]));\n\n return vertical;\n },\n\n hasItems: function() {\n return this.container.children[0].children.length > 0;\n },\n\n getItems: function() {\n return this.itemsContainer.children[0].children;\n },\n\n reflow: function(targetBox) {\n var options = this.options;\n var 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: function(targetBox) {\n var ref = this;\n var options = ref.options;\n var container = ref.container;\n var position = options.position;\n var width = options.width;\n var height = options.height;\n var pos = position === TOP || position === BOTTOM ? X : Y;\n var vertical = this.isVertical();\n var alignTarget = targetBox.clone();\n var 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 var 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: function(targetBox) {\n var ref = this;\n var options = ref.options;\n var container = ref.container;\n var offsetX = options.offsetX;\n var offsetY = options.offsetY;\n var width = options.width;\n var height = options.height;\n var vertical = this.isVertical();\n var 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: function() {\n if (this.hasItems()) {\n ChartElement.fn.renderVisual.call(this);\n }\n },\n\n createLegendTitle: function(title) {\n var titleOptions = deepExtend({}, {\n color: BLACK,\n position: TOP,\n align: CENTER\n }, title);\n var text = titleOptions.text;\n\n if (!title || title.visible === false || !title.text) {\n return;\n }\n\n if (defined(titleOptions) && titleOptions.visible) {\n var 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: function() {\n this.layout = new dataviz.FloatElement({\n vertical: true,\n wrap: false\n });\n\n this.container.append(this.layout);\n },\n\n hasTitle: function() {\n return Boolean(this.options.title && this.options.title.visible !== false && this.options.title.text);\n },\n\n appendTitleLayoutContent: function() {\n var 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\n setDefaultOptions(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: datavizConstants.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: datavizConstants.POINTER,\n opacity: 1\n },\n area: {\n type: datavizConstants.SQUARE,\n align: RIGHT,\n width: 15,\n height: 15,\n }\n });\n\n var PlotAreaFactory = Class.extend({\n init: function() {\n\n this._registry = [];\n },\n\n register: function(type, seriesTypes) {\n this._registry.push({\n type: type,\n seriesTypes: seriesTypes\n });\n },\n\n create: function(srcSeries, options, chartService) {\n var registry = this._registry;\n var match = registry[0];\n var series;\n\n for (var idx = 0; idx < registry.length; idx++) {\n var entry = registry[idx];\n series = filterSeriesByType(srcSeries, entry.seriesTypes);\n var 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\n PlotAreaFactory.current = new PlotAreaFactory();\n\n var ZOOM_ACCELERATION = 3;\n var SELECTOR_HEIGHT_ADJUST = 0.1;\n\n function createDiv(classNames) {\n var element = document.createElement(\"div\");\n if (classNames) {\n element.className = classNames;\n }\n\n return element;\n }\n\n function closestHandle(element) {\n var current = element;\n while (current && !dataviz.hasClasses(current, \"k-handle\")) {\n current = current.parentNode;\n }\n\n return current;\n }\n\n var Selection = Class.extend({\n init: function(chart, categoryAxis, options, observer) {\n\n var 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 dataviz.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: function(pane) {\n return this.categoryAxis.pane === pane;\n },\n\n createElements: function() {\n var options = this.options;\n var 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 var 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 var body = this.body = createDiv(\"k-selection-bg k-pointer-events-none\");\n selection.appendChild(body);\n\n var leftHandle = this.leftHandle = createDiv(\"k-handle k-left-handle k-pointer-events-auto\");\n var 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 var selectionStyles = elementStyles(selection, [ \"borderLeftWidth\", \"borderRightWidth\", \"height\" ]);\n var leftHandleHeight = elementStyles(leftHandle, \"height\").height;\n var 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: function() {\n if (this.options.mousewheel !== false) {\n this._mousewheelHandler = this._mousewheel.bind(this);\n var obj;\n bindEvents(this.chartElement, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));\n }\n\n this._domEvents = services.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: function() {\n var ref = this;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var box = categoryAxis.pane.chartsBox();\n var 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 var ref$1 = elementStyles(this.chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref$1.paddingLeft;\n var paddingTop = ref$1.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: function() {\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 var obj;\n unbindEvents(this.chartElement, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));\n this._mousewheelHandler = null;\n }\n\n this.chartElement.removeChild(this.wrapper);\n this.wrapper = null;\n }\n },\n\n _rangeEventArgs: function(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: function(x, y) {\n var paneBox = this.categoryAxis.pane.box;\n var modelCoords = this.chart._toModelCoordinates(x, y);\n return paneBox.containsPoint(modelCoords);\n },\n\n _start: function(e) {\n var options = this.options;\n var target = eventElement(e);\n if (this._state || !target) {\n return;\n }\n\n var coords = dataviz.eventCoordinates(e);\n var inPane = this._pointInPane(coords.x, coords.y);\n if (!inPane) {\n return;\n }\n\n var handle = closestHandle(target);\n var bodyRect = this.body.getBoundingClientRect();\n var 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: inBody,\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n\n var 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: function(e) {\n var handle;\n if (this._state) {\n handle = this._state.moveTarget;\n } else {\n handle = closestHandle(eventElement(e));\n }\n if (handle) {\n dataviz.addClass(handle, \"k-handle-active\");\n }\n },\n\n _move: function(e) {\n if (!this._state) {\n return;\n }\n\n var ref = this;\n var state = ref._state;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var range = state.range;\n var target = state.moveTarget;\n var reverse = categoryAxis.options.reverse;\n var from = this._index(options.from);\n var to = this._index(options.to);\n var min = this._index(options.min);\n var max = this._index(options.max);\n var delta = state.startLocation - e.x.location;\n var oldRange = { from: range.from, to: range.to };\n var span = range.to - range.from;\n var scale = elementStyles(this.wrapper, \"width\").width / (categoryAxis.categoriesCount() - 1);\n var offset = Math.round(delta / scale) * (reverse ? -1 : 1);\n\n if (!target && !state.inBody) {\n return;\n }\n\n var leftHandle = target && dataviz.hasClasses(target, \"k-left-handle\");\n var rightHandle = target && dataviz.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: function() {\n if (this._state) {\n var moveTarget = this._state.moveTarget;\n if (moveTarget) {\n dataviz.removeClass(moveTarget, \"k-handle-active\");\n }\n\n var 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: function(e) {\n var ref = this;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var coords = this.chart._eventCoordinates(e);\n var categoryIx = categoryAxis.pointCategoryIndex(new Point(coords.x, categoryAxis.box.y1));\n var from = this._index(options.from);\n var to = this._index(options.to);\n var min = this._index(options.min);\n var max = this._index(options.max);\n var span = to - from;\n var mid = from + span / 2;\n var range = {};\n var rightClick = e.event.which === 3;\n var offset = Math.round(mid - categoryIx);\n\n if (this._state || rightClick) {\n return;\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: function(e) {\n var this$1$1 = this;\n\n var delta = dataviz.mousewheelDelta(e);\n\n this._start(e);\n\n if (this._state) {\n var 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(function () {\n this$1$1._end();\n }, MOUSEWHEEL_DELAY);\n }\n },\n\n _gesturestart: function(e) {\n var options = this.options;\n var touch = e.touches[0];\n var 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 var 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: function() {\n if (this._state) {\n this.trigger(SELECT_END, this._rangeEventArgs(this._state.range));\n delete this._state;\n }\n },\n\n _gesturechange: function(e) {\n if (!this._state) {\n return;\n }\n\n var ref = this;\n var chart = ref.chart;\n var state = ref._state;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var range = state.range;\n var p0 = chart._toModelCoordinates(e.touches[0].x.location).x;\n var p1 = chart._toModelCoordinates(e.touches[1].x.location).x;\n var left = Math.min(p0, p1);\n var 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: function(value) {\n var index = value;\n\n if (value instanceof Date) {\n index = this.categoryAxis.categoryIndex(value);\n }\n\n return index;\n },\n\n _value: function(index) {\n var 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: function(value) {\n var categoryAxis = this.categoryAxis;\n var index = this._index(value);\n\n return categoryAxis.getSlot(index, index, true);\n },\n\n move: function(from, to) {\n var options = this.options;\n var reverse = this.categoryAxis.options.reverse;\n var offset = options.offset;\n var padding = options.padding;\n var border = options.selection.border;\n var left = reverse ? to : from;\n var right = reverse ? from : to;\n var edge = 'x' + (reverse ? 2 : 1);\n\n var box = this._slot(left);\n var 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 var rightMaskWidth = round(options.width - (box[edge] - offset.left + padding.left));\n elementStyles(this.rightMask, {\n width: rightMaskWidth\n });\n\n var 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: function(from, to) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var fromValue = limitValue(this._index(from), min, max);\n var 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: function(delta) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var zDir = options.mousewheel.zoom;\n var from = this._index(options.from);\n var to = this._index(options.to);\n var range = { from: from, to: to };\n var 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: function(delta, coords) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var from = this._index(options.from);\n var to = this._index(options.to);\n var range = { from: from, to: to };\n var oldRange = deepExtend({}, range);\n\n var ref = this.categoryAxis.options;\n var reverse = ref.reverse;\n var origin = X + (reverse ? '2' : '1');\n var lineBox = this.categoryAxis.lineBox();\n var relative = Math.abs(lineBox[origin] - coords[X]);\n var size = lineBox.width();\n var position = round(relative / size, 2);\n var minDelta = round(position * delta);\n var 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: function(name, args) {\n return (this.observer || this.chart).trigger(name, args);\n }\n });\n\n setDefaultOptions(Selection, {\n visible: true,\n mousewheel: {\n zoom: \"both\"\n },\n min: MIN_VALUE,\n max: MAX_VALUE\n });\n\n var Tooltip = BaseTooltip.extend({\n show: function(point) {\n if (!point || !point.tooltipAnchor || (this._current && this._current === point)) {\n return;\n }\n\n var options = deepExtend({}, this.options, point.options.tooltip);\n var anchor = point.tooltipAnchor();\n\n if (anchor) {\n this._current = point;\n BaseTooltip.fn.show.call(this, {\n point: point,\n anchor: anchor\n }, options, point);\n } else {\n this.hide();\n }\n },\n\n hide: function() {\n delete this._current;\n BaseTooltip.fn.hide.call(this);\n }\n });\n\n var SharedTooltip = BaseTooltip.extend({\n init: function(plotArea, options) {\n BaseTooltip.fn.init.call(this, plotArea.chartService, options);\n\n this.plotArea = plotArea;\n this.formatService = plotArea.chartService.format;\n },\n\n showAt: function(points, coords) {\n var tooltipPoints = grep(points, function(point) {\n var tooltip = point.series.tooltip;\n var excluded = tooltip && tooltip.visible === false;\n\n return !excluded;\n });\n\n if (tooltipPoints.length > 0) {\n var point = tooltipPoints[0];\n var slot = this.plotArea.categoryAxis.getSlot(point.categoryIx);\n\n var 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: function(point, slot) {\n var axis = this.plotArea.categoryAxis;\n var 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: function(point, slot) {\n var box = point.owner.pane.chartsBox();\n var vertical = this.plotArea.categoryAxis.options.vertical;\n var center = box.center();\n var slotCenter = slot.center();\n var align = {\n horizontal: \"center\",\n vertical: \"center\"\n };\n\n var 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\n setDefaultOptions(SharedTooltip, {\n categoryFormat: '{0:d}'\n });\n\n var BarChartAnimation = Animation.extend({\n setup: function() {\n var ref = this;\n var element = ref.element;\n var options = ref.options;\n var bbox = element.bbox();\n\n if (bbox) {\n this.origin = options.origin;\n var axis = options.vertical ? Y : X;\n\n var fromScale = this.fromScale = new GeometryPoint(1, 1);\n fromScale[axis] = START_SCALE;\n\n element.transform(transform()\n .scale(fromScale.x, fromScale.y)\n );\n } else {\n this.abort();\n }\n },\n\n step: function(pos) {\n var scaleX = dataviz.interpolateValue(this.fromScale.x, 1, pos);\n var scaleY = dataviz.interpolateValue(this.fromScale.y, 1, pos);\n\n this.element.transform(transform()\n .scale(scaleX, scaleY, this.origin)\n );\n },\n\n abort: function() {\n Animation.fn.abort.call(this);\n this.element.transform(null);\n }\n });\n\n setDefaultOptions(BarChartAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n });\n\n AnimationFactory.current.register(BAR, BarChartAnimation);\n\n var BubbleAnimation = Animation.extend({\n setup: function() {\n var center = this.center = this.element.bbox().center();\n this.element.transform(transform()\n .scale(START_SCALE, START_SCALE, center)\n );\n },\n\n step: function(pos) {\n this.element.transform(transform()\n .scale(pos, pos, this.center)\n );\n }\n });\n\n setDefaultOptions(BubbleAnimation, {\n easing: \"easeOutElastic\"\n });\n\n AnimationFactory.current.register(BUBBLE, BubbleAnimation);\n\n var FadeInAnimation = Animation.extend({\n setup: function() {\n this.fadeTo = this.element.opacity();\n this.element.opacity(0);\n },\n\n step: function(pos) {\n this.element.opacity(pos * this.fadeTo);\n }\n });\n\n setDefaultOptions(FadeInAnimation, {\n duration: 200,\n easing: \"linear\"\n });\n\n AnimationFactory.current.register(FADEIN, FadeInAnimation);\n\n var PieAnimation = Animation.extend({\n setup: function() {\n this.element.transform(transform()\n .scale(START_SCALE, START_SCALE, this.options.center)\n );\n },\n\n step: function(pos) {\n this.element.transform(transform()\n .scale(pos, pos, this.options.center)\n );\n }\n });\n\n setDefaultOptions(PieAnimation, {\n easing: \"easeOutElastic\",\n duration: INITIAL_ANIMATION_DURATION\n });\n\n AnimationFactory.current.register(PIE, PieAnimation);\n\n var ScatterLineChart = ScatterChart.extend({\n render: function() {\n ScatterChart.fn.render.call(this);\n\n this.renderSegments();\n },\n\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var 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: function() {\n var points = ScatterChart.fn.animationPoints.call(this);\n return points.concat(this._segments);\n },\n\n createMissingValue: function(value, missingValues) {\n if (missingValues === ZERO) {\n var 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\n deepExtend(ScatterLineChart.prototype, LineChartMixin);\n\n function autoMajorUnit(min, max) {\n var 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 var scale = Math.pow(10, Math.floor(Math.log(diff) / Math.log(10)));\n var relativeValue = round((diff / scale), DEFAULT_PRECISION);\n var 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 }\n\n function getScatterTrendlineData(valueMapper, range, options) {\n var data = [];\n var xMin = range.xMin;\n var xMax = range.xMax;\n\n var 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 var samplingInterval = (options || {}).samplingInterval;\n var delta = valueOrDefault(samplingInterval, autoMajorUnit(xMin, xMax) / 10);\n if (samplingInterval <= 0) {\n delta = xMax - xMin;\n }\n\n for (var x = xMin; x <= xMax; x += delta) {\n data.push([\n x,\n valueMapper(x)\n ]);\n }\n\n return data;\n }\n\n function scatterExponentialTrendline(context) {\n var options = context.options;\n var seriesValues = context.seriesValues;\n\n var data = getData$6({ seriesValues: seriesValues, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n }\n\n var valueGetter$6 = function (fieldName) { return function (ref) {\n var valueFields = ref.valueFields;\n\n return ({ xValue: valueFields.x, yValue: Math.log(valueFields[fieldName]) });\n } };\n\n function getData$6(ref) {\n var seriesValues = ref.seriesValues;\n var options = ref.options;\n\n var sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, options.field)) {\n return null;\n }\n\n var ref$1 = calculateSlope(sourceValues, valueGetter$6(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n var xMin = ref$1.xMin;\n var xMax = ref$1.xMax;\n var range = { xMin: xMin, xMax: xMax };\n\n if (count > 0) {\n // Exponential trendline equation:\n // y = a * e ^ (b * x)\n var a = Math.exp(intercept);\n var b = slope;\n\n return getScatterTrendlineData(function (x) { return a * Math.exp(b * x); }, range, options.trendline);\n }\n\n return null;\n }\n\n var scatterValueGetter = function (fieldName) { return function (ref) {\n var valueFields = ref.valueFields;\n\n return ({ xValue: valueFields.x, yValue: valueFields[fieldName] });\n } };\n\n function scatterLinearTrendline(context) {\n var options = context.options;\n var seriesValues = context.seriesValues;\n\n var data = getData$7({ seriesValues: seriesValues, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n }\n\n function getData$7(ref) {\n var seriesValues = ref.seriesValues;\n var options = ref.options;\n\n var ref$1 = calculateSlope(seriesValues(), scatterValueGetter(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n var xMin = ref$1.xMin;\n var xMax = ref$1.xMax;\n var range = { xMin: xMin, xMax: xMax };\n\n if (count > 0) {\n return getScatterTrendlineData(function (x) { return slope * x + intercept; }, range, options.trendline);\n }\n\n return null;\n }\n\n function xValueLimits(sourceValues, valueGetter) {\n var xMin = Number.MAX_VALUE;\n var xMax = Number.MIN_VALUE;\n\n for (var i = 0; i < sourceValues.length; i++) {\n var value = sourceValues[i];\n var ref = valueGetter(value);\n var xValue = ref.xValue;\n var yValue = ref.yValue;\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: xMin, xMax: xMax };\n }\n\n function scatterLogarithmicTrendline(context) {\n var options = context.options;\n var seriesValues = context.seriesValues;\n\n var data = getData$8({ seriesValues: seriesValues, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n }\n\n var valueGetter$7 = function (fieldName) { return function (ref) {\n var valueFields = ref.valueFields;\n\n return ({ xValue: valueFields.x, yValue: valueFields[fieldName] });\n } };\n\n var logValueGetter = function (fieldName) { return function (ref) {\n var valueFields = ref.valueFields;\n\n return ({ xValue: Math.log(valueFields.x), yValue: valueFields[fieldName] });\n } };\n\n function getData$8(ref) {\n var seriesValues = ref.seriesValues;\n var options = ref.options;\n\n var sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, 'x')) {\n return null;\n }\n\n var ref$1 = calculateSlope(sourceValues, logValueGetter(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n var range = xValueLimits(sourceValues, valueGetter$7(options.field));\n\n if (count > 0) {\n // Logarithmic trendline equation:\n // y = a * ln (x) + b\n var a = slope;\n var b = intercept;\n\n return getScatterTrendlineData(function (x) { return a * Math.log(x) + b; }, range, options.trendline);\n }\n\n return null;\n }\n\n function scatterMovingAverageTrendline(context) {\n var options = context.options;\n\n var data = getData$9(context);\n if (data) {\n return $.extend({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n }\n\n function getData$9(ref) {\n var options = ref.options;\n var seriesValues = ref.seriesValues;\n\n var period = (options.trendline || {}).period || MIN_MOVING_AVERAGE_PERIOD;\n var range = { before: period, after: period };\n var data = calculateMovingAverage(seriesValues(range), scatterValueGetter(options.field), period);\n\n if (data.length > 0) {\n return data;\n }\n\n return null;\n }\n\n function scatterPolynomialTrendline(context) {\n var options = context.options;\n var seriesValues = context.seriesValues;\n\n var data = getData$10({ seriesValues: seriesValues, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n }\n\n function getData$10(ref) {\n var seriesValues = ref.seriesValues;\n var options = ref.options;\n\n var order = (options.trendline || {}).order;\n var valueGetter = scatterValueGetter(options.field);\n var ref$1 = calculatePolynomial(seriesValues(), valueGetter, order);\n var count = ref$1.count;\n var valueMapper = ref$1.valueMapper;\n var xMin = ref$1.xMin;\n var xMax = ref$1.xMax;\n var range = { xMin: xMin, xMax: 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\n function scatterPowerTrendline(context) {\n var options = context.options;\n var seriesValues = context.seriesValues;\n\n var data = getData$11({ seriesValues: seriesValues, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n }\n\n var valueGetter$8 = function (fieldName) { return function (ref) {\n var valueFields = ref.valueFields;\n\n return ({ xValue: Math.log(valueFields.x), yValue: Math.log(valueFields[fieldName]) });\n } };\n\n function getData$11(ref) {\n var seriesValues = ref.seriesValues;\n var options = ref.options;\n\n var sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, 'x')) {\n return null;\n }\n\n var ref$1 = calculateSlope(sourceValues, valueGetter$8(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n var range = xValueLimits(sourceValues, scatterValueGetter(options.field));\n\n if (count > 0) {\n // Power trendline equation:\n // y = a * x ^ b\n var a = Math.exp(intercept);\n var b = slope;\n return getScatterTrendlineData(function (x) { return a * Math.pow(x, b); }, range, options.trendline);\n }\n\n return null;\n }\n\n var scatterRegistry = {};\n scatterRegistry[TRENDLINE_EXPONENTIAL] = scatterExponentialTrendline;\n scatterRegistry[TRENDLINE_LINEAR] = scatterLinearTrendline;\n scatterRegistry[TRENDLINE_LOGARITHMIC] = scatterLogarithmicTrendline;\n scatterRegistry[TRENDLINE_MOVING_AVERAGE] = scatterMovingAverageTrendline;\n scatterRegistry[TRENDLINE_POLYNOMIAL] = scatterPolynomialTrendline;\n scatterRegistry[TRENDLINE_POWER] = scatterPowerTrendline;\n\n var XYPlotArea = PlotAreaBase.extend({\n initFields: function() {\n this.namedXAxes = {};\n this.namedYAxes = {};\n\n this.xAxisRangeTracker = new AxisGroupRangeTracker();\n this.yAxisRangeTracker = new AxisGroupRangeTracker();\n },\n\n render: function(panes) {\n var this$1$1 = this;\n if (panes === void 0) { panes = this.panes; }\n\n this.series = [].concat( this.originalSeries );\n this.createTrendlineSeries();\n\n var seriesByPane = this.groupSeriesByPane();\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1$1.addToLegend(paneSeries);\n var filteredSeries = this$1$1.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this$1$1.createScatterChart(\n filterSeriesByType(filteredSeries, SCATTER),\n pane\n );\n\n this$1$1.createScatterLineChart(\n filterSeriesByType(filteredSeries, SCATTER_LINE),\n pane\n );\n\n this$1$1.createBubbleChart(\n filterSeriesByType(filteredSeries, BUBBLE),\n pane\n );\n }\n\n this.createAxes(panes);\n },\n\n appendChart: function(chart, pane) {\n this.xAxisRangeTracker.update(chart.xAxisRanges);\n this.yAxisRangeTracker.update(chart.yAxisRanges);\n\n PlotAreaBase.fn.appendChart.call(this, chart, pane);\n },\n\n removeAxis: function(axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.fn.removeAxis.call(this, 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 seriesPaneName: function(series) {\n var options = this.options;\n var xAxisName = series.xAxis;\n var xAxisOptions = [].concat(options.xAxis);\n var xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n var yAxisName = series.yAxis;\n var yAxisOptions = [].concat(options.yAxis);\n var yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = panes[0].name || \"default\";\n var paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n },\n\n createScatterChart: function(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: function(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: function(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: function(options, vertical, axisIndex) {\n var axisName = options.name;\n var namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n var tracker = vertical ? this.yAxisRangeTracker : this.xAxisRangeTracker;\n var axisOptions = deepExtend({ reverse: !vertical && this.chartService.rtl }, options, { vertical: vertical });\n var isLog = equalsIgnoreCase(axisOptions.type, LOGARITHMIC);\n var defaultRange = tracker.query();\n var defaultAxisRange = isLog ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n var range = tracker.query(axisName) || defaultRange || defaultAxisRange;\n var typeSamples = [ axisOptions.min, axisOptions.max ];\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n var 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 var inferredDate;\n\n for (var i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n var axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = dataviz.DateValueAxis;\n } else if (isLog) {\n axisType = dataviz.LogarithmicAxis;\n } else {\n axisType = dataviz.NumericAxis;\n }\n\n var 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: function(panes) {\n var this$1$1 = this;\n\n var options = this.options;\n var xAxesOptions = [].concat(options.xAxis);\n var xAxes = [];\n var yAxesOptions = [].concat(options.yAxis);\n var yAxes = [];\n\n for (var idx = 0; idx < xAxesOptions.length; idx++) {\n var axisPane = this$1$1.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this$1$1.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (var idx$1 = 0; idx$1 < yAxesOptions.length; idx$1++) {\n var axisPane$1 = this$1$1.findPane(yAxesOptions[idx$1].pane);\n if (inArray(axisPane$1, panes)) {\n yAxes.push(this$1$1.createXYAxis(yAxesOptions[idx$1], true, idx$1));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n },\n\n _dispatchEvent: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var allAxes = this.axes;\n var length = allAxes.length;\n var xValues = [];\n var yValues = [];\n\n for (var i = 0; i < length; i++) {\n var axis = allAxes[i];\n var values = axis.options.vertical ? yValues : xValues;\n var 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: function(axis, options) {\n var vertical = axis.options.vertical;\n var axes = this.groupAxes(this.panes);\n var index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions$1(this.options, index, vertical, options);\n updateAxisOptions$1(this.originalOptions, index, vertical, options);\n },\n\n trendlineFactory: function(options, series) {\n var seriesValues = this.seriesValues.bind(this, series.index);\n\n var trendline = trendlineFactory(scatterRegistry, options.type, {\n options: options,\n seriesValues: 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: function(seriesIx) {\n var this$1$1 = this;\n\n var result = [];\n var currentSeries = this.series[seriesIx];\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var data = this$1$1.bindPoint(currentSeries, pointIx);\n result.push({ pointIx: pointIx, valueFields: data.valueFields });\n }\n\n return result;\n }\n });\n\n function updateAxisOptions$1(targetOptions, axisIndex, vertical, options) {\n var axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n }\n\n setDefaultOptions(XYPlotArea, {\n xAxis: {},\n yAxis: {}\n });\n\n deepExtend(XYPlotArea.prototype, PlotAreaEventsMixin);\n\n var PieSegment = ChartElement.extend({\n init: function(value, sector, options) {\n ChartElement.fn.init.call(this, options);\n\n this.value = value;\n this.sector = sector;\n },\n\n render: function() {\n if (this._rendered || this.visible === false) {\n return;\n }\n this._rendered = true;\n\n this.createLabel();\n },\n\n createLabel: function() {\n var labels = this.options.labels;\n var chartService = this.owner.chartService;\n var 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 var themeLabels = chartService.theme.seriesDefaults.labels;\n labels.color = labels.color || themeLabels.color;\n labels.background = labels.background || themeLabels.background;\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: function(options) {\n var 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: function(targetBox) {\n this.render();\n this.box = targetBox;\n this.reflowLabel();\n },\n\n reflowLabel: function() {\n var ref = this;\n var labelsOptions = ref.options.labels;\n var label = ref.label;\n var sector = this.sector.clone();\n var labelsDistance = labelsOptions.distance;\n var angle = sector.middle();\n\n if (label) {\n var labelHeight = label.box.height();\n var labelWidth = label.box.width();\n var 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 var 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: function() {\n var this$1$1 = this;\n\n var ref = this;\n var sector = ref.sector;\n var options = ref.options;\n\n ChartElement.fn.createVisual.call(this);\n\n this.addAccessibilityAttributesToVisual();\n\n if (this.value) {\n if (options.visual) {\n var startAngle = (sector.startAngle + 180) % 360;\n var 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 GeometryPoint(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: function () {\n var group = new Group();\n this$1$1.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: function(group) {\n var ref = this;\n var sector = ref.sector;\n var options = ref.options;\n var borderOptions = options.border || {};\n var 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 var color = options.color;\n var fill = {\n color: color,\n opacity: options.opacity\n };\n var 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: function(sector, options) {\n if (options.singleSegment) {\n return new Circle(new GeometryCircle(new GeometryPoint(sector.center.x, sector.center.y), sector.radius), options);\n }\n\n return dataviz.ShapeBuilder.current.createRing(sector, options);\n },\n\n createAnimation: function() {\n var ref = this;\n var options = ref.options;\n var center = ref.sector.center;\n\n deepExtend(options, {\n animation: {\n center: [ center.x, center.y ],\n delay: this.animationDelay\n }\n });\n\n ChartElement.fn.createAnimation.call(this);\n },\n\n createHighlight: function(options) {\n var highlight = this.options.highlight || {};\n var 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: function() {\n return this.visual.children[0];\n },\n\n highlightVisualArgs: function() {\n var sector = this.sector;\n\n return {\n options: this.options,\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n center: new GeometryPoint(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: function(style) {\n var borderWidth = this.options.accessibility.highlight.border.width;\n var result = this.createSegment(this.sector, deepExtend({}, style, {\n stroke: {\n width: borderWidth * 2\n }\n }));\n\n var clipPath = new MultiPath();\n\n clipPath.paths.push(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: function() {\n var sector = this.sector.clone().expand(TOOLTIP_OFFSET);\n var midAndle = sector.middle();\n var midPoint = sector.point(midAndle);\n\n return {\n point: midPoint,\n align: tooltipAlignment(midAndle + 180)\n };\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n pointData: function() {\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: function() {\n return this.index;\n }\n });\n\n var RAD_30 = round(rad(30), DEFAULT_PRECISION);\n var RAD_60 = round(rad(60), DEFAULT_PRECISION);\n\n function tooltipAlignment(angle) {\n var radians = rad(angle);\n var sine = round(Math.sin(radians), DEFAULT_PRECISION);\n var cosine = round(Math.cos(radians), DEFAULT_PRECISION);\n\n var 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 var 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\n setDefaultOptions(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: datavizConstants.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\n deepExtend(PieSegment.prototype, PointEventsMixin);\n deepExtend(PieSegment.prototype, AccessibilityAttributesMixin);\n\n var PieChartMixin = {\n createLegendItem: function(value, point, options) {\n var legendOptions = this.options.legend || {};\n var labelsOptions = legendOptions.labels || {};\n var inactiveItems = legendOptions.inactiveItems || {};\n var inactiveItemsLabels = inactiveItems.labels || {};\n\n if (options && options.visibleInLegend !== false) {\n var pointVisible = options.visible !== false;\n var labelTemplate = pointVisible ? getTemplate(labelsOptions) :\n getTemplate(inactiveItemsLabels) || getTemplate(labelsOptions);\n var 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 var 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\n var PIE_SECTOR_ANIM_DELAY = 70;\n\n var PieChart = ChartElement.extend({\n init: function(plotArea, options) {\n ChartElement.fn.init.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.points = [];\n this.legendItems = [];\n this.render();\n },\n\n render: function() {\n this.traverseDataPoints(this.addValue.bind(this));\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var seriesColors = ref.plotArea.options.seriesColors; if (seriesColors === void 0) { seriesColors = []; }\n var colorsCount = seriesColors.length;\n var series = options.series;\n var seriesCount = series.length;\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n var currentSeries = series[seriesIx];\n var data = currentSeries.data;\n var ref$1 = bindSegments(currentSeries);\n var total = ref$1.total;\n var points = ref$1.points;\n var count = ref$1.count;\n var anglePerValue = 360 / total;\n var constantAngle = (void 0);\n if (!isFinite(anglePerValue)) {\n constantAngle = 360 / count;\n }\n var currentAngle = (void 0);\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 (var i = 0; i < points.length; i++) {\n var pointData = points[i];\n if (!pointData) {\n continue;\n }\n\n var fields = pointData.fields;\n var value = pointData.value;\n var visible = pointData.visible;\n var angle = value !== 0 ? (constantAngle || (value * anglePerValue)) : 0;\n var 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 dataviz.Ring(null, 0, 0, currentAngle, angle), {\n owner: this$1$1,\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$1$1.animationDelay(i, seriesIx, seriesCount)\n });\n\n if (visible !== false) {\n currentAngle += angle;\n }\n }\n }\n },\n\n evalSegmentOptions: function(options, value, fields) {\n var 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: function(value, sector, fields) {\n var 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 var segment = new PieSegment(value, sector, segmentOptions);\n $.extend(segment, fields);\n this.append(segment);\n this.points.push(segment);\n },\n\n reflow: function(targetBox) {\n var ref = this;\n var options = ref.options;\n var points = ref.points;\n var seriesConfigs = ref.seriesConfigs; if (seriesConfigs === void 0) { seriesConfigs = []; }\n var count = points.length;\n var box = targetBox.clone();\n var space = 5;\n var minWidth = Math.min(box.width(), box.height());\n var halfMinWidth = minWidth / 2;\n var defaultPadding = minWidth - minWidth * 0.85;\n var newBox = new Box(box.x1, box.y1, box.x1 + minWidth, box.y1 + minWidth);\n var newBoxCenter = newBox.center();\n var boxCenter = box.center();\n var seriesCount = options.series.length;\n var leftSideLabels = [];\n var rightSideLabels = [];\n var 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 var radius = halfMinWidth - padding;\n var center = new Point(\n radius + newBox.x1 + padding,\n radius + newBox.y1 + padding\n );\n\n for (var i = 0; i < count; i++) {\n var segment = points[i];\n var sector = segment.sector;\n var seriesIndex = segment.seriesIx;\n sector.radius = radius;\n sector.center = center;\n\n if (seriesConfigs.length) {\n var 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 var 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: function(labels) {\n var distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n },\n\n rightLabelsReflow: function(labels) {\n var distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n },\n\n distanceBetweenLabels: function(labels) {\n var segment = last(this.points);\n var sector = segment.sector;\n var count = labels.length - 1;\n var lr = sector.radius + segment.options.labels.distance;\n var distances = [];\n var firstBox = labels[0].box;\n var distance = round(firstBox.y1 - (sector.center.y - lr - firstBox.height() - firstBox.height() / 2));\n\n distances.push(distance);\n\n for (var i = 0; i < count; i++) {\n var 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: function(distances, labels) {\n var this$1$1 = this;\n\n var count = distances.length;\n var left, right, remaining;\n\n for (var 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$1$1._takeDistance(distances, i, --left, remaining);\n remaining = this$1$1._takeDistance(distances, i, ++right, remaining);\n }\n }\n\n this.reflowLabels(distances, labels);\n },\n\n _takeDistance: function(distances, anchor, position, amount) {\n var result = amount;\n if (distances[position] > 0) {\n var 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: function(distances, labels) {\n var this$1$1 = this;\n\n var segment = last(this.points);\n var sector = segment.sector;\n var labelOptions = segment.options.labels;\n var labelsCount = labels.length;\n var labelDistance = labelOptions.distance;\n var boxY = sector.center.y - (sector.radius + labelDistance) - labels[0].box.height();\n var boxX;\n\n distances[0] += 2;\n for (var i = 0; i < labelsCount; i++) {\n var label = labels[i];\n var box = label.box;\n\n boxY += distances[i];\n boxX = this$1$1.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: function() {\n var this$1$1 = this;\n\n var ref = this;\n var connectors = ref.options.connectors;\n var points = ref.points;\n var count = points.length;\n var space = 4;\n\n ChartElement.fn.createVisual.call(this);\n\n this._connectorLines = [];\n\n for (var i = 0; i < count; i++) {\n var segment = points[i];\n var sector = segment.sector;\n var label = segment.label;\n var angle = sector.middle();\n var connectorsColor = (segment.options.connectors || {}).color || connectors.color;\n\n if (label) {\n var connectorLine = new 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 var box = label.box;\n var centerPoint = sector.center;\n var start = sector.point(angle);\n var middle = new Point(box.x1, box.center().y);\n var sr = (void 0), end = (void 0), crossing = (void 0);\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$1$1.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$1$1.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$1$1._connectorLines.push(connectorLine);\n this$1$1.visual.append(connectorLine);\n }\n }\n }\n },\n\n renderVisual: function() {\n ChartElement.fn.renderVisual.call(this);\n\n if (dataviz.find(this.options.series, function (options) { return options.autoFit; })) {\n var targetBox = this.targetBox;\n var pieCenter = this.box.center();\n var bbox = this.visual.bbox();\n if (!bbox) {\n return;\n }\n\n var bboxBottom = bbox.bottomRight();\n\n var 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(transform().scale(scale, scale, [ pieCenter.x, pieCenter.y ]));\n }\n }\n },\n\n labelComparator: function(reverse) {\n var reverseValue = reverse ? -1 : 1;\n\n return function(a, b) {\n var first = (a.parent.sector.middle() + 270) % 360;\n var second = (b.parent.sector.middle() + 270) % 360;\n return (first - second) * reverseValue;\n };\n },\n\n hAlignLabel: function(originalX, sector, y1, y2, direction) {\n var radius = sector.radius;\n var sector_center = sector.center;\n var cx = sector_center.x;\n var cy = sector_center.y;\n var 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: function(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: function(point, format) {\n return this.chartService.format.auto(format, point.value);\n },\n\n animationDelay: function(categoryIndex) {\n return categoryIndex * PIE_SECTOR_ANIM_DELAY;\n },\n\n stackRoot: function() {\n return this;\n }\n });\n\n function intersection(a1, a2, b1, b2) {\n var uat = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x);\n var ub = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n\n var result;\n if (ub !== 0) {\n var 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\n setDefaultOptions(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\n deepExtend(PieChart.prototype, PieChartMixin);\n\n PieChart.prototype.isStackRoot = true;\n\n var PiePlotArea = PlotAreaBase.extend({\n render: function() {\n this.createPieChart(this.series);\n },\n\n createPieChart: function(series) {\n var firstSeries = series[0];\n var 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: function(chart, pane) {\n PlotAreaBase.fn.appendChart.call(this, chart, pane);\n append(this.options.legend.data, chart.legendItems);\n },\n\n getPointBelow: function(point) {\n return this.getPointToTheRight(point);\n },\n\n getPointAbove: function(point) {\n return this.getPointToTheLeft(point);\n }\n });\n\n var DonutSegment = PieSegment.extend({\n reflowLabel: function() {\n var ref = this;\n var labelsOptions = ref.options.labels;\n var label = ref.label;\n var sector = this.sector.clone();\n var angle = sector.middle();\n\n if (label) {\n var labelHeight = label.box.height();\n if (labelsOptions.position === CENTER) {\n sector.radius -= (sector.radius - sector.innerRadius) / 2;\n\n var lp = sector.point(angle);\n\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n PieSegment.fn.reflowLabel.call(this);\n }\n }\n },\n\n createSegment: function(sector, options) {\n return dataviz.ShapeBuilder.current.createRing(sector, options);\n }\n });\n\n setDefaultOptions(DonutSegment, {\n overlay: {\n gradient: \"roundedGlass\"\n },\n labels: {\n position: CENTER\n },\n animation: {\n type: PIE\n }\n });\n\n deepExtend(DonutSegment.prototype, PointEventsMixin);\n\n var DONUT_SECTOR_ANIM_DELAY = 50;\n\n var DonutChart = PieChart.extend({\n addValue: function(value, sector, fields) {\n var 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 var segment = new DonutSegment(value, sector, segmentOptions);\n\n $.extend(segment, fields);\n this.append(segment);\n this.points.push(segment);\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var options = this.options;\n var box = targetBox.clone();\n var space = 5;\n var minWidth = Math.min(box.width(), box.height());\n var halfMinWidth = minWidth / 2;\n var defaultPadding = minWidth - minWidth * 0.85;\n var series = options.series;\n var seriesCount = series.length;\n\n var padding = valueOrDefault(options.padding, defaultPadding);\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n\n var totalSize = halfMinWidth - padding;\n var seriesWithoutSize = 0;\n var holeSize;\n\n for (var i = 0; i < seriesCount; i++) {\n var 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 var currentSize = (halfMinWidth - padding) / (seriesCount + 0.75);\n holeSize = currentSize * 0.75;\n totalSize -= holeSize;\n }\n\n var innerRadius = holeSize;\n var margin = 0;\n var size, radius;\n\n this.seriesConfigs = [];\n\n for (var i$1 = 0; i$1 < seriesCount; i$1++) {\n var currentSeries$1 = series[i$1];\n size = valueOrDefault(currentSeries$1.size, totalSize / seriesWithoutSize);\n innerRadius += margin;\n radius = innerRadius + size;\n this$1$1.seriesConfigs.push({ innerRadius: innerRadius, radius: radius });\n margin = currentSeries$1.margin || 0;\n innerRadius = radius;\n }\n\n PieChart.fn.reflow.call(this, targetBox);\n },\n\n animationDelay: function(categoryIndex, seriesIndex, seriesCount) {\n return categoryIndex * DONUT_SECTOR_ANIM_DELAY +\n (INITIAL_ANIMATION_DURATION * (seriesIndex + 1) / (seriesCount + 1));\n }\n });\n\n setDefaultOptions(DonutChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n }\n });\n\n var DonutPlotArea = PiePlotArea.extend({\n render: function() {\n this.createDonutChart(this.series);\n },\n\n createDonutChart: function(series) {\n var firstSeries = series[0];\n var 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 getPointBelow: function(point) {\n return this._getNextPoint(point, this._pointsByVertical, -1);\n },\n\n getPointAbove: function(point) {\n return this._getNextPoint(point, this._pointsByVertical, 1);\n }\n });\n\n var DEFAULT_PADDING = 0.15;\n\n var PolarPlotAreaBase = PlotAreaBase.extend({\n initFields: function() {\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n },\n\n render: function() {\n this.addToLegend(this.series);\n this.createPolarAxis();\n this.createCharts();\n this.createValueAxis();\n },\n\n alignAxes: function() {\n var axis = this.valueAxis;\n var range = axis.range();\n var crossingValue = axis.options.reverse ? range.max : range.min;\n var slot = axis.getSlot(crossingValue);\n var center = this.polarAxis.getSlot(0).center;\n var axisBox = axis.box.translate(\n center.x - slot.x1,\n center.y - slot.y1\n );\n\n axis.reflow(axisBox);\n },\n\n createValueAxis: function() {\n var tracker = this.valueAxisRangeTracker;\n var defaultRange = tracker.query();\n var axisOptions = this.valueAxisOptions({\n roundToMajorUnit: false,\n zIndex: -1\n });\n var axisType, axisDefaultRange;\n\n if (axisOptions.type === LOGARITHMIC) {\n axisType = dataviz.RadarLogarithmicAxis;\n axisDefaultRange = { min: 0.1, max: 1 };\n } else {\n axisType = dataviz.RadarNumericAxis;\n axisDefaultRange = { min: 0, max: 1 };\n }\n\n var 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 var 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: function() {\n var ref = this;\n var options = ref.options.plotArea;\n var valueAxis = ref.valueAxis;\n var polarAxis = ref.polarAxis;\n var box = ref.box;\n var defaultPadding = Math.min(box.width(), box.height()) * DEFAULT_PADDING;\n var padding = getSpacing(options.padding || {}, defaultPadding);\n var paddingBox = box.clone().unpad(padding);\n var axisBox = paddingBox.clone();\n\n axisBox.y2 = axisBox.y1 + Math.min(axisBox.width(), axisBox.height());\n axisBox.align(paddingBox, Y, CENTER);\n\n var valueAxisBox = axisBox.clone().shrink(0, axisBox.height() / 2);\n\n polarAxis.reflow(axisBox);\n valueAxis.reflow(valueAxisBox);\n var 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: function() {\n return this.box;\n },\n\n detachLabels: function() {}\n });\n\n var PolarScatterChart = ScatterChart.extend({\n pointSlot: function(slotX, slotY) {\n var valueRadius = slotX.center.y - slotY.y1;\n var slot = Point.onCircle(slotX.center, slotX.startAngle, valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n }\n });\n\n setDefaultOptions(PolarScatterChart, {\n clip: false\n });\n\n var PolarLineChart = ScatterLineChart.extend({\n\n });\n\n PolarLineChart.prototype.pointSlot = PolarScatterChart.prototype.pointSlot;\n\n setDefaultOptions(PolarLineChart, {\n clip: false\n });\n\n var SplinePolarAreaSegment = SplineAreaSegment.extend({\n fillToAxes: function(fillPath) {\n var center = this._polarAxisCenter();\n fillPath.lineTo(center.x, center.y);\n },\n\n _polarAxisCenter: function() {\n var polarAxis = this.parent.plotArea.polarAxis;\n var center = polarAxis.box.center();\n return center;\n },\n\n strokeSegments: function() {\n var segments = this._strokeSegments;\n\n if (!segments) {\n var center = this._polarAxisCenter();\n var curveProcessor = new CurveProcessor(false);\n var 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\n var PolarAreaSegment = AreaSegment.extend({\n fillToAxes: function(fillPath) {\n var polarAxis = this.parent.plotArea.polarAxis;\n var center = polarAxis.box.center();\n var centerSegment = new geometry.Segment([ center.x, center.y ]);\n\n fillPath.segments.unshift(centerSegment);\n fillPath.segments.push(centerSegment);\n }\n });\n\n var PolarAreaChart = PolarLineChart.extend({\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = (currentSeries.line || {}).style;\n var 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: function(value, missingValues) {\n var 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: function(series) {\n return series.missingValues || ZERO;\n },\n\n _hasMissingValuesGap: function() {\n var this$1$1 = this;\n\n var series = this.options.series;\n\n for (var idx = 0; idx < series.length; idx++) {\n if (this$1$1.seriesMissingValues(series[idx]) === GAP) {\n return true;\n }\n }\n },\n\n sortPoints: function(points) {\n var this$1$1 = this;\n\n points.sort(xComparer);\n\n if (this._hasMissingValuesGap()) {\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point) {\n var value = point.value;\n if (!hasValue(value.y) && this$1$1.seriesMissingValues(point.series) === GAP) {\n delete points[idx];\n }\n }\n }\n }\n\n return points;\n }\n });\n\n function xComparer(a, b) {\n return a.value.x - b.value.x;\n }\n\n var PolarPlotArea = PolarPlotAreaBase.extend({\n createPolarAxis: function() {\n var polarAxis = new dataviz.PolarAxis(this.options.xAxis, this.chartService);\n\n this.polarAxis = polarAxis;\n this.axisX = polarAxis;\n this.appendAxis(polarAxis);\n },\n\n render: function() {\n this.series = [].concat( this.originalSeries );\n this.createTrendlineSeries();\n\n PolarPlotAreaBase.fn.render.call(this);\n },\n\n valueAxisOptions: function(defaults) {\n return deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n }, this.options.yAxis);\n },\n\n createValueAxis: function() {\n PolarPlotAreaBase.fn.createValueAxis.call(this);\n this.axisY = this.valueAxis;\n },\n\n trendlineFactory: function(options, series) {\n var 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: function(chart, pane) {\n this.valueAxisRangeTracker.update(chart.yAxisRanges);\n\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n },\n\n createCharts: function() {\n var series = this.filterVisibleSeries(this.series);\n var 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: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var lineChart = new PolarLineChart(this, { series: series });\n\n this.appendChart(lineChart, pane);\n },\n\n createScatterChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var scatterChart = new PolarScatterChart(this, { series: series });\n\n this.appendChart(scatterChart, pane);\n },\n\n createAreaChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var areaChart = new PolarAreaChart(this, { series: series });\n\n this.appendChart(areaChart, pane);\n },\n\n _dispatchEvent: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var xValue = this.axisX.getValue(point);\n var 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: function() {}\n });\n\n setDefaultOptions(PolarPlotArea, {\n xAxis: {},\n yAxis: {}\n });\n\n deepExtend(PolarPlotArea.prototype, PlotAreaEventsMixin, {\n seriesValues: XYPlotArea.prototype.seriesValues\n });\n\n function groupBySeriesIx(segments) {\n var seriesSegments = [];\n for (var idx = 0; idx < segments.length; idx++) {\n var segment = segments[idx];\n seriesSegments[segment.seriesIx] = seriesSegments[segment.seriesIx] || [];\n seriesSegments[segment.seriesIx].push(segment);\n }\n\n return seriesSegments;\n }\n\n var RadarLineChart = LineChart.extend({\n pointSlot: function(categorySlot, valueSlot) {\n var valueRadius = categorySlot.center.y - valueSlot.y1;\n var 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: function() {\n LineChart.fn.renderSegments.call(this);\n\n if (this._segments && this._segments.length > 1) {\n var seriesSegments = groupBySeriesIx(this._segments);\n\n for (var idx = 0; idx < seriesSegments.length; idx++) {\n var segments = seriesSegments[idx];\n if (segments && segments.length > 1) {\n var firstPoint = segments[0].linePoints[0];\n var lastSegment = last(segments);\n var lastPoint = last(lastSegment.linePoints);\n var isFirstDataPoint = firstPoint.categoryIx === 0;\n var isLastDataPoint = lastPoint.categoryIx === lastPoint.categoriesCount - 1;\n if (isFirstDataPoint && isLastDataPoint) {\n last(segments).linePoints.push(firstPoint);\n }\n }\n }\n }\n },\n\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n var segment = new pointType(linePoints, currentSeries, seriesIx);\n var 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\n setDefaultOptions(RadarLineChart, {\n clip: false,\n limitPoints: false\n });\n\n var SplineRadarAreaSegment = SplineAreaSegment.extend({\n fillToAxes: function() {}\n });\n\n var RadarAreaSegment = AreaSegment.extend({\n fillToAxes: function() {}\n });\n\n var RadarAreaChart = RadarLineChart.extend({\n createSegment: function(linePoints, currentSeries, seriesIx, prevSegment) {\n var isStacked = this.options.isStacked;\n var style = (currentSeries.line || {}).style;\n var previousSegment;\n var stackPoints;\n var 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: function(series) {\n return series.missingValues || ZERO;\n }\n });\n\n var RadarSegment = DonutSegment.extend({\n init: function(value, options) {\n DonutSegment.fn.init.call(this, value, null, options);\n },\n\n getIndex: function() {\n return this.categoryIx;\n }\n });\n\n setDefaultOptions(RadarSegment, {\n overlay: {\n gradient: \"none\"\n },\n labels: {\n distance: 10\n }\n });\n\n var RadarClusterLayout = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n },\n\n reflow: function(sector) {\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var gap = options.gap;\n var spacing = options.spacing;\n var count = children.length;\n var slots = count + gap + (spacing * (count - 1));\n var slotAngle = sector.angle / slots;\n var angle = sector.startAngle + slotAngle * (gap / 2);\n\n this.forEach(children, function (child) {\n var 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\n setDefaultOptions(RadarClusterLayout, {\n gap: 1,\n spacing: 0\n });\n\n var RadarStackLayout = ChartElement.extend({\n reflow: function(sector) {\n var ref = this;\n var reverse = ref.options.reverse;\n var children = ref.children;\n var childrenCount = children.length;\n var first = reverse ? childrenCount - 1 : 0;\n var step = reverse ? -1 : 1;\n\n this.box = new Box();\n\n for (var i = first; i >= 0 && i < childrenCount; i += step) {\n var childSector = children[i].sector;\n childSector.startAngle = sector.startAngle;\n childSector.angle = sector.angle;\n }\n }\n });\n\n var RadarBarChart = BarChart.extend({\n pointType: function() {\n return RadarSegment;\n },\n\n clusterType: function() {\n return RadarClusterLayout;\n },\n\n stackType: function() {\n return RadarStackLayout;\n },\n\n categorySlot: function(categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n },\n\n pointSlot: function(categorySlot, valueSlot) {\n var slot = categorySlot.clone();\n var 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: function(point, pointSlot) {\n point.sector = pointSlot;\n point.reflow();\n },\n\n createAnimation: function() {\n this.options.animation.center = this.box.toRect().center();\n BarChart.fn.createAnimation.call(this);\n }\n });\n\n RadarBarChart.prototype.reflow = CategoricalChart.prototype.reflow;\n\n setDefaultOptions(RadarBarChart, {\n clip: false,\n limitPoints: false,\n animation: {\n type: \"pie\"\n }\n });\n\n var RadarPlotArea = PolarPlotAreaBase.extend({\n createPolarAxis: function() {\n var categoryAxis = new dataviz.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: function(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: function() {\n // No separate panes in radar charts\n CategoricalPlotArea.prototype.aggregateCategories.call(this, this.panes);\n },\n\n createCategoryAxesLabels: function() {\n CategoricalPlotArea.prototype.createCategoryAxesLabels.call(this, this.panes);\n },\n\n filterSeries: function(currentSeries) {\n // Not supported for radar charts\n return currentSeries;\n },\n\n trendlineFactory: function(options, series) {\n var 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: function() {\n var series = this.filterVisibleSeries(this.series);\n var 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: function(series) {\n var options = { series: series };\n var firstSeries = series[0];\n if (firstSeries) {\n var filteredSeries = this.filterVisibleSeries(series);\n var 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: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var areaChart = new RadarAreaChart(this, this.chartOptions(series));\n this.appendChart(areaChart, pane);\n },\n\n createLineChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var lineChart = new RadarLineChart(this, this.chartOptions(series));\n this.appendChart(lineChart, pane);\n },\n\n createBarChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var options = this.chartOptions(series);\n var filteredSeries = this.filterVisibleSeries(series);\n var anyStackedSeries = filteredSeries.some(function (s) { return s.stack; });\n var isStacked100 = filteredSeries.some(function (s) { return 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 var barChart = new RadarBarChart(this, options);\n this.appendChart(barChart, pane);\n\n this._hasBarCharts = true;\n },\n\n seriesCategoryAxis: function() {\n return this.categoryAxis;\n },\n\n _dispatchEvent: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var category = this.categoryAxis.getCategory(point);\n var 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: function() {},\n\n _pointsByVertical: function(basePoint) {\n return PolarPlotAreaBase.fn._pointsByVertical.call(this, basePoint).sort(this._getSeriesCompareFn());\n },\n\n _getSeriesCompareFn: function() {\n return function (a, b) { return b.value - a.value; };\n }\n });\n\n deepExtend(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\n setDefaultOptions(RadarPlotArea, {\n categoryAxis: {\n categories: []\n },\n valueAxis: {}\n });\n\n var FunnelSegment = ChartElement.extend({\n init: function(value, options, segmentOptions) {\n ChartElement.fn.init.call(this, options);\n\n this.value = value;\n this.options.index = segmentOptions.index;\n },\n\n getLabelText: function(options) {\n var 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: function(chartBox) {\n var points = this.points;\n var label = this.children[0];\n var x1 = Math.min(points[0].x, points[3].x);\n var 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: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var visual;\n\n ChartElement.fn.createVisual.call(this);\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: function () { return this$1$1.createPath(); }\n });\n } else {\n visual = this.createPath();\n }\n\n if (visual) {\n this.visual.append(visual);\n }\n },\n\n createPath: function() {\n var options = this.options;\n var border = options.border;\n var path = 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: function(style) {\n return Path.fromPoints(this.points, style);\n },\n\n highlightVisual: function() {\n return this.visual.children[0];\n },\n\n highlightVisualArgs: function() {\n var path = Path.fromPoints(this.points).close();\n\n return {\n options: this.options,\n path: path\n };\n },\n\n createFocusHighlight: function(style) {\n var borderWidth = this.options.accessibility.highlight.border.width;\n var result = Path.fromPoints(this.points, deepExtend({}, style, {\n stroke: {\n width: borderWidth * 2\n }\n })).close();\n\n var clipPath = new MultiPath();\n\n clipPath.paths.push(Path.fromRect(this.box.clone().pad(borderWidth).toRect()));\n clipPath.paths.push(Path.fromPoints(this.points));\n\n result.clip(clipPath);\n\n return result;\n },\n\n tooltipAnchor: function() {\n var 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: function(format) {\n var point = this;\n return point.owner.formatPointValue(point, format);\n },\n\n pointData: function() {\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: function() {\n return this.index;\n }\n });\n\n setDefaultOptions(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\n deepExtend(FunnelSegment.prototype, PointEventsMixin);\n deepExtend(FunnelSegment.prototype, AccessibilityAttributesMixin);\n\n var FunnelChart = ChartElement.extend({\n init: function(plotArea, options) {\n ChartElement.fn.init.call(this, 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: function(point, format) {\n return this.plotArea.chartService.format.auto(format,point.value);\n },\n\n render: function() {\n var this$1$1 = this;\n\n var seriesIx = 0;\n var ref = this;\n var options = ref.options;\n var seriesColors = ref.plotArea.options.seriesColors; if (seriesColors === void 0) { seriesColors = []; }\n var series = options.series[seriesIx];\n var data = series.data;\n\n if (!data) {\n return;\n }\n\n var ref$1 = bindSegments(series);\n var total = ref$1.total;\n var points = ref$1.points;\n\n for (var i = 0; i < points.length; i++) {\n var pointData = points[i];\n\n if (!pointData) {\n continue;\n }\n\n var 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$1$1,\n series: series,\n seriesIx: seriesIx,\n dataItem: data[i],\n percentage: pointData.value / total\n }, fields, { visible: pointData.visible });\n\n var value = pointData.valueFields.value;\n var segment = this$1$1.createSegment(value, fields);\n var label = this$1$1.createLabel(value, fields);\n\n if (segment && label) {\n segment.append(label);\n }\n }\n },\n\n evalSegmentOptions: function(options, value, fields) {\n var 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: function(value, fields) {\n var 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 var segment = new FunnelSegment(value, seriesOptions, fields);\n $.extend(segment, fields);\n\n this.append(segment);\n this.points.push(segment);\n\n return segment;\n }\n },\n\n createLabel: function(value, fields) {\n var series = fields.series;\n var dataItem = fields.dataItem;\n var labels = deepExtend({}, this.options.labels, series.labels);\n var text = value;\n\n if (labels.visible) {\n var labelTemplate = getTemplate(labels);\n var 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 var 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: function() {\n var labels = this.labels;\n var padding = { left: 0, right: 0 };\n\n for (var i = 0; i < labels.length; i++) {\n var label = labels[i];\n var align = label.options.align;\n if (align !== CENTER) {\n var 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: function(box, width, totalHeight) {\n var ref = this;\n var options = ref.options;\n var segments = ref.points;\n var count = segments.length;\n var firstSegment = segments[0];\n var maxSegment = firstSegment;\n\n for (var idx = 0; idx < segments.length; idx++) {\n if (segments[idx].percentage > maxSegment.percentage) {\n maxSegment = segments[idx];\n }\n }\n\n var lastUpperSide = (firstSegment.percentage / maxSegment.percentage) * width;\n var previousOffset = (width - lastUpperSide) / 2;\n var previousHeight = 0;\n\n for (var idx$1 = 0; idx$1 < count; idx$1++) {\n var percentage = segments[idx$1].percentage;\n var nextSegment = segments[idx$1 + 1];\n var nextPercentage = (nextSegment ? nextSegment.percentage : percentage);\n var points = segments[idx$1].points = [];\n var height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n var offset = (void 0);\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 GeometryPoint(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new GeometryPoint(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new GeometryPoint(box.x1 + width - offset, box.y1 + height + previousHeight));\n points.push(new GeometryPoint(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: function(box, width, totalHeight) {\n var ref = this;\n var options = ref.options;\n var segments = ref.points;\n var count = segments.length;\n var decreasingWidth = options.neckRatio <= 1;\n var neckRatio = decreasingWidth ? options.neckRatio * width : width;\n var previousOffset = decreasingWidth ? 0 : (width - width / options.neckRatio) / 2;\n var topMostWidth = decreasingWidth ? width : width - previousOffset * 2;\n var finalNarrow = (topMostWidth - neckRatio) / 2;\n var previousHeight = 0;\n\n for (var idx = 0; idx < count; idx++) {\n var points = segments[idx].points = [];\n var percentage = segments[idx].percentage;\n var offset = (options.dynamicHeight) ? (finalNarrow * percentage) : (finalNarrow / count);\n var height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n\n points.push(new GeometryPoint(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new GeometryPoint(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new GeometryPoint(box.x1 + width - previousOffset - offset, box.y1 + height + previousHeight));\n points.push(new GeometryPoint(box.x1 + previousOffset + offset,box.y1 + height + previousHeight));\n previousOffset += offset;\n previousHeight += height + options.segmentSpacing;\n }\n },\n\n reflow: function(chartBox) {\n var points = this.points;\n var count = points.length;\n\n if (!count) {\n return;\n }\n\n var options = this.options;\n var box = chartBox.clone().unpad(this.labelPadding());\n var totalHeight = box.height() - options.segmentSpacing * (count - 1);\n var 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 (var idx = 0; idx < count; idx++) {\n points[idx].reflow(chartBox);\n }\n }\n });\n\n setDefaultOptions(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\n deepExtend(FunnelChart.prototype, PieChartMixin);\n\n var MAX_NECK_RATIO = 1e6;\n\n var PyramidChart = FunnelChart.extend({\n init: function(plotArea, options) {\n options.dynamicSlope = false;\n options.neckRatio = MAX_NECK_RATIO;\n\n FunnelChart.fn.init.call(this, plotArea, options);\n }\n });\n\n var FunnelPlotArea = PlotAreaBase.extend({\n render: function() {\n this.createChart(FunnelChart, filterSeriesByType(this.series, [ FUNNEL ]));\n this.createChart(PyramidChart, filterSeriesByType(this.series, [ PYRAMID ]));\n },\n\n createChart: function(chartType, series) {\n var firstSeries = series[0];\n if (!firstSeries) {\n return;\n }\n\n var 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: function(chart, pane) {\n PlotAreaBase.fn.appendChart.call(this, chart, pane);\n append(this.options.legend.data, chart.legendItems);\n },\n\n _pointsByVertical: function(basePoint) {\n return this.pointsBySeriesIndex(basePoint.series.index);\n },\n\n getPointToTheRight: function(point) {\n return this.getPointBelow(point);\n },\n\n getPointToTheLeft: function(point) {\n return this.getPointAbove(point);\n }\n });\n\n // Linear color scale from the given color to white minus minimum lightness offset.\n var colorScale = function (color, minLightnessOffset) {\n if (minLightnessOffset === void 0) { minLightnessOffset = 0.05; }\n\n var baseColor = kendo.parseColor(color);\n var offset = 1 - minLightnessOffset;\n\n return function (value) {\n var hsl = baseColor.toHSL();\n var range = 100 - hsl.l;\n var point = offset - value;\n hsl.l += Math.min(point * range, range);\n\n return hsl.toCss();\n };\n };\n\n var HeatmapPoint = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this);\n\n this.options = options;\n this.color = options.color || WHITE;\n this.value = value;\n },\n\n render: function() {\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: function() {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n this.label = this.createLabelElement(labels);\n this.append(this.label);\n }\n },\n\n createLabelElement: function(options) {\n var 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: function(options) {\n var labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n }\n\n return this.formatValue(options.format);\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n reflow: function(targetBox) {\n this.render();\n\n var 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: function() {\n ChartElement.fn.createVisual.call(this);\n\n this.addAccessibilityAttributesToVisual();\n },\n\n markerBox: function() {\n var options = this.options;\n var markers = options.markers;\n var border = markers.border;\n var rect = this.box.toRect();\n var type = valueOrDefault(markers.type, 'rect');\n var isRoundRect = type === datavizConstants.ROUNDED_RECT;\n var borderWidth = valueOrDefault(border.width, isRoundRect ? 1 : 0);\n var halfBorderWidth = Math.round(borderWidth / 2);\n\n if (markers.size) {\n var 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 dataviz.rectToBox(rect);\n },\n\n markerBorder: function() {\n var options = this.options;\n var markers = options.markers;\n var border = markers.border;\n var 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: function() {\n var options = this.options;\n var markerOptions = options.markers;\n var 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: function(style) {\n var options = this.options;\n var markerOptions = this.options.highlight.markers || this.options.markers;\n\n var 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 var visual = highlight.getElement();\n\n visual.options.fill = style.fill;\n visual.options.stroke = style.stroke;\n\n return visual;\n },\n\n highlightVisual: function() {\n return this.rectVisual;\n },\n\n highlightVisualArgs: function() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n },\n\n createFocusHighlight: function() {\n var markerOptions = this.options.markers;\n var highlightOptions = this.options.accessibility.highlight;\n\n var 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: function() {\n var left = this.box.center().x;\n var 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: function(box) {\n return this.box.overlaps(box);\n },\n\n unclipElements: function() {\n /* noop, clip labels */\n },\n\n pointData: function() {\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\n deepExtend(HeatmapPoint.prototype, PointEventsMixin);\n deepExtend(HeatmapPoint.prototype, NoteMixin);\n deepExtend(HeatmapPoint.prototype, AccessibilityAttributesMixin);\n\n HeatmapPoint.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\n var HeatmapChart = ChartElement.extend({\n init: function(plotArea, options) {\n ChartElement.fn.init.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n },\n\n _initFields: function() {\n this.points = [];\n this.seriesOptions = [];\n this.valueRange = { min: MAX_VALUE, max: MIN_VALUE };\n this._evalSeries = [];\n },\n\n render: function() {\n this.setRange();\n this.traverseDataPoints(this.addValue.bind(this));\n },\n\n setRange: function() {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$1 = this$1$1.plotArea.bindPoint(currentSeries, pointIx);\n var valueFields = ref$1.valueFields;\n if (defined(valueFields.value) && valueFields.value !== null) {\n this$1$1.valueRange.min = Math.min(this$1$1.valueRange.min, valueFields.value);\n this$1$1.valueRange.max = Math.max(this$1$1.valueRange.max, valueFields.value);\n }\n }\n }\n },\n\n addValue: function(value, fields) {\n var point;\n if (value && defined(value.value) && value.value !== null) {\n point = this.createPoint(value, fields);\n if (point) {\n $.extend(point, fields);\n }\n }\n\n this.points.push(point);\n },\n\n evalPointOptions: function(options, value, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"tooltip\", \"content\", \"template\",\n \"visual\", \"toggle\", \"drilldownSeriesFactory\",\n \"ariaTemplate\", \"ariaContent\"\n ]\n };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var 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: function() {\n return HeatmapPoint;\n },\n\n pointOptions: function(series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var 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: function(value, fields) {\n var series = fields.series;\n var pointOptions = this.pointOptions(series, fields.seriesIx);\n var 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 var scale = colorScale(color);\n color = scale(value.value / this.valueRange.max);\n }\n\n var point = new HeatmapPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n seriesAxes: function(series) {\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var plotArea = this.plotArea;\n var xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n var 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: xAxis, yAxis: yAxis };\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var chartPoints = this.points;\n var limit = !this.options.clip;\n var pointIx = 0;\n\n this.traverseDataPoints(function (value, fields) {\n var point = chartPoints[pointIx++];\n var ref = this$1$1.seriesAxes(fields.series);\n var xAxis = ref.xAxis;\n var yAxis = ref.yAxis;\n var indexX = xAxis.categoryIndex(value.x);\n var indexY = yAxis.categoryIndex(value.y);\n var slotX = xAxis.getSlot(indexX, indexX, limit);\n var slotY = yAxis.getSlot(indexY, indexY, limit);\n\n if (point) {\n if (slotX && slotY) {\n var pointSlot = this$1$1.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: function(slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var ref$1 = this$1$1.seriesAxes(currentSeries);\n var xAxis = ref$1.xAxis;\n var yAxis = ref$1.yAxis;\n var xRange = xAxis.currentRangeIndices();\n var yRange = yAxis.currentRangeIndices();\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$2 = this$1$1.plotArea.bindPoint(currentSeries, pointIx);\n var value = ref$2.valueFields;\n var fields = ref$2.fields;\n var xIndex = xAxis.totalIndex(value.x);\n var yIndex = yAxis.totalIndex(value.y);\n var xIn = xRange.min <= xIndex && xIndex <= xRange.max;\n var 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$1$1\n }, fields));\n }\n }\n }\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.value);\n },\n\n animationPoints: function() {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n }\n });\n setDefaultOptions(HeatmapChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}: {2}\"\n },\n labels: {\n format: \"{2}\"\n },\n clip: true\n });\n\n var HeatmapPlotArea = PlotAreaBase.extend({\n initFields: function() {\n this.namedXAxes = {};\n this.namedYAxes = {};\n },\n\n render: function(panes) {\n if (panes === void 0) { panes = this.panes; }\n\n this.bindCategories();\n this.createAxes(panes);\n this.createCharts(panes);\n this.createAxisLabels();\n },\n\n bindCategories: function() {\n var this$1$1 = this;\n\n var series = this.srcSeries || this.series;\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var data = currentSeries.data || [];\n var ref = this$1$1.seriesAxes(currentSeries);\n var xAxis = ref.xAxis;\n var yAxis = ref.yAxis;\n\n var xCategories = dataviz.createHashSet(xAxis.categories || []);\n var yCategories = dataviz.createHashSet(yAxis.categories || []);\n\n for (var pointIndex = 0; pointIndex < data.length; pointIndex++) {\n var ref$1 = SeriesBinder.current.bindPoint(currentSeries, pointIndex).valueFields;\n var x = ref$1.x;\n var y = ref$1.y;\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: function(panes) {\n var this$1$1 = this;\n\n var seriesByPane = this.groupSeriesByPane();\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1$1.addToLegend(paneSeries);\n var filteredSeries = this$1$1.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this$1$1.createHeatmapChart(\n filterSeriesByType(filteredSeries, [ HEATMAP ]),\n pane\n );\n }\n },\n\n createHeatmapChart: function(series, pane) {\n var chart = new HeatmapChart(this, {\n series: series\n });\n\n this.appendChart(chart, pane);\n },\n\n seriesPaneName: function(series) {\n var options = this.options;\n var xAxisName = series.xAxis;\n var xAxisOptions = [].concat(options.xAxis);\n var xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n var yAxisName = series.yAxis;\n var yAxisOptions = [].concat(options.yAxis);\n var yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = panes[0].name || \"default\";\n var paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n },\n\n seriesAxes: function(series) {\n var xAxis;\n var yAxis;\n\n var options = this.options;\n\n var xAxisOptions = [].concat(options.xAxis);\n var xAxisName = series.xAxis;\n if (xAxisName) {\n xAxis = xAxisOptions.find(function (axis) { return axis.name === xAxisName; });\n } else {\n xAxis = xAxisOptions[0];\n }\n\n var yAxisOptions = [].concat(options.yAxis);\n var yAxisName = series.yAxis;\n if (yAxisName) {\n yAxis = yAxisOptions.find(function (axis) { return 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: xAxis, yAxis: yAxis };\n },\n\n createAxisLabels: function() {\n var axes = this.axes;\n for (var i = 0; i < axes.length; i++) {\n axes[i].createLabels();\n }\n },\n\n createXYAxis: function(options, vertical, axisIndex) {\n var axisName = options.name;\n var namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n var axisOptions = $.extend({\n axisCrossingValue: 0\n }, options, {\n vertical: vertical,\n reverse: (vertical || this.chartService.rtl) ? !options.reverse : options.reverse,\n justified: false\n });\n var firstCategory = axisOptions.categories ? axisOptions.categories[0] : null;\n var typeSamples = [ axisOptions.min, axisOptions.max, firstCategory ];\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n var firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n var inferredDate;\n\n for (var i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n var axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = dataviz.DateCategoryAxis;\n } else {\n axisType = CategoryAxis;\n }\n\n var 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: function(panes) {\n var this$1$1 = this;\n\n var options = this.options;\n var xAxesOptions = [].concat(options.xAxis);\n var xAxes = [];\n var yAxesOptions = [].concat(options.yAxis);\n var yAxes = [];\n\n for (var idx = 0; idx < xAxesOptions.length; idx++) {\n var axisPane = this$1$1.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this$1$1.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (var idx$1 = 0; idx$1 < yAxesOptions.length; idx$1++) {\n var axisPane$1 = this$1$1.findPane(yAxesOptions[idx$1].pane);\n if (inArray(axisPane$1, panes)) {\n yAxes.push(this$1$1.createXYAxis(yAxesOptions[idx$1], true, idx$1));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n },\n\n removeAxis: function(axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.fn.removeAxis.call(this, 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: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var allAxes = this.axes;\n var length = allAxes.length;\n var xValues = [];\n var yValues = [];\n\n for (var i = 0; i < length; i++) {\n var axis = allAxes[i];\n var 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: function(axis, options) {\n var vertical = axis.options.vertical;\n var axes = this.groupAxes(this.panes);\n var index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions$2(this.options, index, vertical, options);\n updateAxisOptions$2(this.originalOptions, index, vertical, options);\n },\n\n crosshairOptions: function(axis) {\n // Stack the crosshair above the series points.\n return $.extend({}, axis.options.crosshair, { zIndex: 0 });\n },\n\n _pointsByVertical: function(basePoint, offset) {\n var this$1$1 = this;\n if (offset === void 0) { offset = 0; }\n\n var normalizedOffset = this.axisX.options.reverse ? offset * -1 : offset;\n var axisXItems = this.axisX.children;\n var xIndex = this._getPointAxisXIndex(basePoint) + normalizedOffset;\n\n xIndex = cycleIndex(xIndex, axisXItems.length);\n var targetXValue = axisXItems[xIndex].value;\n\n var points = this\n .filterPoints(function (point) { return compareValues(point.pointData().x, targetXValue); })\n .sort(function (a, b) { return this$1$1._getPointAxisYIndex(a) - this$1$1._getPointAxisYIndex(b); });\n\n if (this.axisY.options.reverse) {\n return points.reverse();\n }\n\n return points;\n },\n\n _pointsByHorizontal: function(basePoint, offset) {\n var this$1$1 = this;\n if (offset === void 0) { offset = 0; }\n\n var normalizedOffset = this.axisY.options.reverse ? offset * -1 : offset;\n var axisYItems = this.axisY.children;\n var yIndex = this._getPointAxisYIndex(basePoint) + normalizedOffset;\n\n yIndex = cycleIndex(yIndex, axisYItems.length);\n var targetYValue = axisYItems[yIndex].value;\n\n var points = this\n .filterPoints(function (point) { return compareValues(point.pointData().y, targetYValue); })\n .sort(function (a, b) { return this$1$1._getPointAxisXIndex(a) - this$1$1._getPointAxisXIndex(b); });\n\n if (this.axisX.options.reverse) {\n return points.reverse();\n }\n\n return points;\n },\n\n _getPointAxisXIndex: function(point) {\n return this._getPointAxisIndex(this.axisX, point.pointData().x);\n },\n\n _getPointAxisYIndex: function(point) {\n return this._getPointAxisIndex(this.axisY, point.pointData().y);\n },\n\n _getPointAxisIndex: function(axis, pointValue) {\n return axis.children.findIndex(function (axisItem) { return compareValues(pointValue, axisItem.value); });\n }\n });\n\n function compareValues(a, b) {\n if (a instanceof Date && b instanceof Date) {\n return dataviz.dateEquals(a, b);\n }\n\n return a === b;\n }\n\n function updateAxisOptions$2(targetOptions, axisIndex, vertical, options) {\n var axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n }\n\n setDefaultOptions(HeatmapPlotArea, {\n xAxis: {},\n yAxis: {}\n });\n\n deepExtend(HeatmapPlotArea.prototype, PlotAreaEventsMixin);\n\n var COLOR = \"color\";\n var FIRST = \"first\";\n var FROM = \"from\";\n var MAX = \"max\";\n var MIN = \"min\";\n var NOTE_TEXT = \"noteText\";\n var SUMMARY_FIELD = \"summary\";\n var TO = \"to\";\n\n PlotAreaFactory.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 ].concat( TRENDLINE_SERIES\n ));\n\n PlotAreaFactory.current.register(XYPlotArea, [\n SCATTER, SCATTER_LINE, BUBBLE ].concat( TRENDLINE_SERIES\n ));\n\n PlotAreaFactory.current.register(PiePlotArea, [ PIE ]);\n PlotAreaFactory.current.register(DonutPlotArea, [ DONUT ]);\n PlotAreaFactory.current.register(FunnelPlotArea, [ FUNNEL, PYRAMID ]);\n\n PlotAreaFactory.current.register(PolarPlotArea, [\n POLAR_AREA, POLAR_LINE, POLAR_SCATTER ].concat( TRENDLINE_SERIES\n ));\n\n PlotAreaFactory.current.register(RadarPlotArea, [\n RADAR_AREA, RADAR_COLUMN, RADAR_LINE ].concat( TRENDLINE_SERIES\n ));\n\n PlotAreaFactory.current.register(HeatmapPlotArea, [ HEATMAP ]);\n\n SeriesBinder.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\n SeriesBinder.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n [ FROM, TO ], [ CATEGORY, COLOR, NOTE_TEXT, DRILLDOWN_FIELD ]\n );\n\n SeriesBinder.current.register(\n [ WATERFALL, HORIZONTAL_WATERFALL ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, SUMMARY_FIELD, DRILLDOWN_FIELD ]\n );\n\n SeriesBinder.current.register([ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ], [ X, Y ], [ COLOR, DRILLDOWN_FIELD ]);\n SeriesBinder.current.register([ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ], [ VALUE ], [ CATEGORY, COLOR, DRILLDOWN_FIELD ]);\n\n SeriesBinder.current.register(\n [ FUNNEL, PYRAMID ],\n [ VALUE ], [ CATEGORY, COLOR, \"visibleInLegend\", \"visible\", DRILLDOWN_FIELD ]\n );\n\n DefaultAggregates.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\n DefaultAggregates.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n { from: MIN, to: MAX, color: FIRST, noteText: FIRST }\n );\n\n DefaultAggregates.current.register(\n [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ],\n { value: MAX, color: FIRST }\n );\n\n SeriesBinder.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\n SeriesBinder.current.register(\n [ BUBBLE ], [ X, Y, \"size\" ], [ COLOR, CATEGORY, NOTE_TEXT ]\n );\n\n SeriesBinder.current.register(\n [ HEATMAP ],\n [ X, Y, VALUE ], [ COLOR, NOTE_TEXT ]\n );\n\n SeriesBinder.current.register(\n [ CANDLESTICK, OHLC ],\n [ \"open\", \"high\", \"low\", \"close\" ], [ CATEGORY, COLOR, \"downColor\", NOTE_TEXT ]\n );\n\n DefaultAggregates.current.register(\n [ CANDLESTICK, OHLC ],\n { open: MAX, high: MAX, low: MIN, close: MAX,\n color: FIRST, downColor: FIRST, noteText: FIRST }\n );\n\n SeriesBinder.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n [ \"lower\", \"q1\", \"median\", \"q3\", \"upper\", \"mean\", \"outliers\" ], [ CATEGORY, COLOR, NOTE_TEXT, DRILLDOWN_FIELD ]\n );\n\n DefaultAggregates.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\n SeriesBinder.current.register(\n [ BULLET, VERTICAL_BULLET ],\n [ \"current\", \"target\" ], [ CATEGORY, COLOR, \"visibleInLegend\", NOTE_TEXT, DRILLDOWN_FIELD ]\n );\n\n DefaultAggregates.current.register(\n [ BULLET, VERTICAL_BULLET ],\n { current: MAX, target: MAX, color: FIRST, noteText: FIRST }\n );\n\n SeriesBinder.current.register(\n [ PIE, DONUT ],\n [ VALUE ], [ CATEGORY, COLOR, \"explode\", \"visibleInLegend\", \"visible\", DRILLDOWN_FIELD ]\n );\n\n var AXIS_NAMES = [ CATEGORY, VALUE, X, Y ];\n\n var MOUSEDOWN = \"mousedown\";\n var MOUSEMOVE = \"mousemove\";\n var CONTEXTMENU = \"contextmenu\";\n var MOUSELEAVE = \"mouseleave\";\n var KEYDOWN = \"keydown\";\n var FOCUS = \"focus\";\n var BLUR = \"blur\";\n var MOUSEMOVE_DELAY = 20;\n\n var Chart = Class.extend({\n init: function(element, userOptions, themeOptions, context) {\n var this$1$1 = this;\n if (context === void 0) { context = {}; }\n\n this.observers = [];\n this.addObserver(context.observer);\n this.chartService = new services.ChartService(this, context);\n this.chartService.theme = themeOptions;\n\n this._initElement(element);\n\n var 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 dataviz.FontLoader.preloadFonts(userOptions, function () {\n this$1$1.fontLoaded = true;\n if (!this$1$1._destroyed) {\n this$1$1.trigger('init');\n this$1$1._redraw();\n this$1$1._attachEvents();\n }\n });\n },\n\n _initElement: function(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: function(element) {\n dataviz.addClass(element, \"k-chart\");\n },\n\n _initTheme: function(options, themeOptions) {\n var seriesCopies = [];\n var series = options.series || [];\n\n for (var i = 0; i < series.length; i++) {\n seriesCopies.push($.extend({}, 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: function() {\n var chartArea = this.options.chartArea || {};\n var width = chartArea.width ? parseInt(chartArea.width, 10) : Math.floor(this.element.offsetWidth);\n var 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: function(force) {\n var size = this.getSize();\n var currentSize = this._size;\n var 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 && dataviz.find(this._selections, function (s) { return !s.visible; })) {\n this._destroySelections();\n this._setupSelection();\n }\n },\n\n _resize: function() {\n this._noTransitionsRedraw();\n },\n\n redraw: function(paneName) {\n this.applyDefaults(this.options);\n this.applySeriesColors();\n\n if (paneName) {\n var plotArea = this._model._plotArea;\n var pane = plotArea.findPane(paneName);\n plotArea.redraw(pane);\n } else {\n this._redraw();\n }\n },\n\n getAxis: function(name) {\n return findAxisByName(name, this._plotArea.axes);\n },\n\n findAxisByName: function(name) {\n return this.getAxis(name);\n },\n\n findPaneByName: function(name) {\n var panes = this._plotArea.panes;\n\n for (var 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: function(idx) {\n var panes = this._plotArea.panes;\n if (panes[idx]) {\n return new ChartPane(panes[idx]);\n }\n },\n\n plotArea: function() {\n return new ChartPlotArea(this._plotArea);\n },\n\n toggleHighlight: function(show, filter) {\n var plotArea = this._plotArea;\n var firstSeries = (plotArea.srcSeries || plotArea.series || [])[0];\n var points;\n\n if (isFunction(filter)) {\n points = plotArea.filterPoints(filter);\n } else {\n var 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: function(show, points) {\n var highlight = this._highlight;\n for (var idx = 0; idx < points.length; idx++) {\n highlight.togglePointHighlight(points[idx], show);\n }\n },\n\n showTooltip: function(filter) {\n var shared = this._sharedTooltip();\n var ref = this;\n var tooltip = ref._tooltip;\n var plotArea = ref._plotArea;\n var 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 var points = this._plotArea.pointsByCategoryIndex(categoryIndex);\n tooltip.showAt(points);\n }\n } else if (point) {\n tooltip.show(point);\n }\n },\n\n hideTooltip: function() {\n this._tooltip.hide();\n },\n\n _initSurface: function() {\n var surface = this.surface;\n var wrap = this._surfaceWrap();\n\n var chartArea = this.options.chartArea || {};\n if (chartArea.width) {\n dataviz.elementSize(wrap, { width: chartArea.width });\n }\n if (chartArea.height) {\n dataviz.elementSize(wrap, { height: chartArea.height });\n }\n\n if (!surface || surface.options.type !== this.options.renderAs) {\n this._destroySurface();\n\n this.surface = drawing.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: function() {\n return this.element;\n },\n\n _redraw: function() {\n var 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 this._redrawFocusHighlight();\n },\n\n _redrawFocusHighlight: function() {\n var ref = this;\n var ref_focusState = ref._focusState;\n var legendInFocus = ref_focusState.legendInFocus;\n var preserveHighlight = ref_focusState.preserveHighlight;\n\n if (legendInFocus && preserveHighlight) {\n this._focusElement(this._getFocusedLegendItem(), false);\n this._focusState.preserveHighlight = false;\n }\n },\n\n _setElementAccessibilityAttributes: function() {\n var titleOptions = this.options.title;\n var title = isString(titleOptions) ? titleOptions : (titleOptions.description || titleOptions.text);\n\n if (title) {\n this.element.setAttribute(\"aria-roledescription\", title);\n }\n },\n\n exportVisual: function(exportOptions) {\n var visual;\n if (exportOptions && (exportOptions.width || exportOptions.height || exportOptions.options)) {\n var currentOptions = this.options;\n var 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 var 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: function() {\n return this._plotArea instanceof CategoricalPlotArea && this.options.tooltip && this.options.tooltip.shared;\n },\n\n _createPannable: function() {\n var options = this.options;\n if (options.pannable !== false) {\n this._pannable = new Pannable(this._plotArea, options.pannable);\n }\n },\n\n _createZoomSelection: function() {\n var zoomable = this.options.zoomable;\n var selection = (zoomable || {}).selection;\n if (zoomable !== false && selection !== false) {\n this._zoomSelection = new ZoomSelection(this, selection);\n }\n },\n\n _createMousewheelZoom: function() {\n var zoomable = this.options.zoomable;\n var mousewheel = (zoomable || {}).mousewheel;\n if (zoomable !== false && mousewheel !== false) {\n this._mousewheelZoom = new MousewheelZoom(this, mousewheel);\n }\n },\n\n _toggleDragZoomEvents: function() {\n var pannable = this.options.pannable;\n var zoomable = this.options.zoomable;\n var selection = (zoomable || {}).selection;\n var mousewheel = (zoomable || {}).mousewheel;\n var allowDrag = !pannable && (zoomable === false || selection === false) && !this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ]);\n var allowZoom = (zoomable === false || mousewheel === false) && !this.requiresHandlers([ ZOOM_START, ZOOM, ZOOM_END ]);\n var 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: function(drag, zoom) {\n var 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: function() {\n var ref = this;\n var tooltipOptions = ref.options.tooltip;\n var 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: function(options) {\n return new SharedTooltip(this._plotArea, options);\n },\n\n applyDefaults: function(options, themeOptions) {\n applyAxisDefaults(options, themeOptions);\n applySeriesDefaults(options, themeOptions);\n },\n\n applySeriesColors: function() {\n var options = this.options;\n var series = options.series;\n var colors = options.seriesColors || [];\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var seriesColor = colors[i % colors.length];\n var 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: function() {\n var options = this.options;\n var plotArea = this._createPlotArea();\n var model = new dataviz.RootElement(this._modelOptions());\n model.chart = this;\n model._plotArea = plotArea;\n\n var title = Title.buildTitle(options.title);\n var 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 var 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: function() {\n var options = this.options;\n var size = this.getSize();\n\n return deepExtend({\n transitions: options.transitions,\n width: size.width || datavizConstants.DEFAULT_WIDTH,\n height: size.height || datavizConstants.DEFAULT_HEIGHT\n }, options.chartArea);\n },\n\n _createPlotArea: function(skipSeries) {\n var options = this.options;\n\n var plotArea = PlotAreaFactory.current.create(skipSeries ? [] : options.series, options, this.chartService);\n\n return plotArea;\n },\n\n _setupSelection: function() {\n var this$1$1 = this;\n\n var ref = this;\n var axes = ref._plotArea.axes;\n var selections = this._selections = [];\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var options = axis.options;\n if (axis instanceof CategoryAxis && options.select && !options.vertical) {\n var range = axis.range();\n\n var selection = new Selection(this$1$1, axis,\n deepExtend({ min: range.min, max: range.max }, options.select)\n );\n\n selections.push(selection);\n }\n }\n },\n\n _selectStart: function(e) {\n return this.trigger(SELECT_START, e);\n },\n\n _select: function(e) {\n return this.trigger(SELECT, e);\n },\n\n _selectEnd: function(e) {\n return this.trigger(SELECT_END, e);\n },\n\n _initHandlers: function() {\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 = kendo.throttle(\n this._mousemove.bind(this),\n MOUSEMOVE_DELAY\n );\n },\n\n addObserver: function(observer) {\n if (observer) {\n this.observers.push(observer);\n }\n },\n\n removeObserver: function(observer) {\n var index = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n },\n\n requiresHandlers: function(eventNames) {\n var observers = this.observers;\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].requiresHandlers(eventNames)) {\n return true;\n }\n }\n },\n\n trigger: function(name, args) {\n if (args === void 0) { args = {}; }\n\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 var observers = this.observers;\n var isDefaultPrevented = false;\n for (var 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: function() {\n var element = this.element;\n\n this._touchAction = element.style.touchAction;\n\n var obj;\n bindEvents(element, ( obj = {}, obj[ CONTEXTMENU ] = this._clickHandler, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj[ MOUSELEAVE ] = this._mouseleaveHandler, obj[ KEYDOWN ] = this._keydownHandler, obj[ MOUSEDOWN ] = this._mousedownHandler, obj[ FOCUS ] = this._focusHandler, obj[ BLUR] = this._blurHandler, obj ));\n\n if (this._shouldAttachMouseMove()) {\n var obj$1;\n bindEvents(element, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mousemove, obj$1 ));\n }\n\n this.domEvents = services.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: function(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: function() {\n if (this.domEvents && this.domEvents.cancel) {\n this.domEvents.cancel();\n }\n },\n\n _gesturestart: function(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: function(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: function(e) {\n var mousewheelZoom = this._mousewheelZoom;\n\n if (mousewheelZoom && !this._stopChartHandlers(e)) {\n e.preventDefault();\n var previousGestureDistance = this._gestureDistance;\n var 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 var args = { delta: scaleDelta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n var coords = this._eventCoordinates(e);\n\n if (!this._zooming) {\n this._zooming = true;\n }\n\n var 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: function(e) {\n if (e.element) {\n var element = this._drawingChartElement(e.element, e);\n\n if (element && element.leave) {\n element.leave(this, e.originalEvent);\n }\n }\n },\n\n _start: function(e) {\n var coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\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: function(e) {\n var ref = this;\n var state = ref._navState;\n var pannable = ref._pannable;\n\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n if (pannable) {\n var ranges = pannable.move(e);\n\n if (ranges && !this.trigger(DRAG, { axisRanges: ranges, originalEvent: e })) {\n pannable.pan();\n }\n } else if (state) {\n var ranges$1 = {};\n var axes = state.axes;\n\n for (var i = 0; i < axes.length; i++) {\n var currentAxis = axes[i];\n var axisName = currentAxis.options.name;\n if (axisName) {\n var axis = currentAxis.options.vertical ? e.y : e.x;\n var delta = axis.startLocation - axis.location;\n\n if (delta !== 0) {\n ranges$1[currentAxis.options.name] = currentAxis.translateRange(delta);\n }\n }\n }\n\n state.axisRanges = ranges$1;\n this.trigger(DRAG, {\n axisRanges: ranges$1,\n originalEvent: e\n });\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.move(e);\n }\n },\n\n _end: function(e) {\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n var 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 var 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: function(e) {\n var selections = this._selections || [];\n if (!selections.length) {\n return false;\n }\n\n var coords = this._eventCoordinates(e);\n var pane = this._plotArea.paneByPoint(coords);\n if (pane) {\n for (var idx = 0; idx < selections.length; idx++) {\n if (selections[idx].onPane(pane)) {\n return true;\n }\n }\n }\n },\n\n _mousewheelZoomRate: function() {\n var zoomable = this.options.zoomable;\n var mousewheel = (zoomable || {}).mousewheel || {};\n return valueOrDefault(mousewheel.rate, MOUSEWHEEL_ZOOM_RATE);\n },\n\n _mousewheel: function(e) {\n var this$1$1 = this;\n\n var delta = dataviz.mousewheelDelta(e);\n var mousewheelZoom = this._mousewheelZoom;\n var coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n if (mousewheelZoom) {\n var 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(function () {\n this$1$1.trigger(ZOOM_END, args);\n this$1$1._zooming = false;\n if (this$1$1.surface) {\n this$1$1.surface.resumeTracking();\n }\n }, MOUSEWHEEL_DELAY);\n }\n } else {\n var state = this._navState;\n if (!state) {\n var prevented = this._startNavigation(e, coords, ZOOM_START);\n if (!prevented) {\n state = this._navState;\n }\n }\n\n if (state) {\n var totalDelta = state.totalDelta || delta;\n state.totalDelta = totalDelta + delta;\n\n var axes = this._navState.axes;\n var ranges = {};\n\n for (var i = 0; i < axes.length; i++) {\n var currentAxis = axes[i];\n var axisName = currentAxis.options.name;\n if (axisName) {\n ranges[axisName] = currentAxis.scaleRange(-totalDelta * this$1$1._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(function () {\n this$1$1._endNavigation(e, ZOOM_END);\n }, MOUSEWHEEL_DELAY);\n }\n }\n },\n\n _startNavigation: function(e, coords, chartEvent) {\n var plotArea = this._model._plotArea;\n var pane = plotArea.findPointPane(coords);\n var axes = plotArea.axes.slice(0);\n\n if (!pane) {\n return;\n }\n\n var ranges = axisRanges(axes);\n\n var 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: function(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: function(e, match) {\n var element = this.surface.eventTarget(e);\n if (element) {\n return this._drawingChartElement(element, e, match);\n }\n },\n\n _drawingChartElement: function(element, e, match) {\n var current = element;\n var 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: function(e) {\n var coordinates = dataviz.eventCoordinates(e);\n return this._toModelCoordinates(coordinates.x, coordinates.y);\n },\n\n _elementPadding: function() {\n if (!this._padding) {\n var ref = elementStyles(this.element, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n this._padding = {\n top: paddingTop,\n left: paddingLeft\n };\n }\n\n return this._padding;\n },\n\n _toDocumentCoordinates: function(point) {\n var padding = this._elementPadding();\n var offset = dataviz.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 _toModelCoordinates: function(clientX, clientY) {\n var element = this.element;\n var offset = dataviz.elementOffset(element);\n var padding = this._elementPadding();\n var inverseTransform = dataviz.elementScale(element).invert();\n var point = new GeometryPoint(\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: function(e) {\n var this$1$1 = this;\n\n var drawingElement = this.surface.eventTarget(e);\n var element = this._drawingChartElement(drawingElement, e);\n var 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(function () {\n this$1$1.handlingTap = false;\n }, 0);\n },\n\n _click: function(e) {\n var element = this._getChartElement(e);\n this._propagateClick(element, e);\n },\n\n _propagateClick: function(element, e) {\n var this$1$1 = this;\n\n var current = element;\n while (current) {\n if (current.click) {\n current.click(this$1$1, e);\n }\n\n current = current.parent;\n }\n },\n\n _isLegendBeforeChart: function() {\n var ref = this;\n var legendPosition = ref.options.legend.position;\n var legend = ref._legend;\n\n return legend && legend.hasItems() && (legendPosition === TOP || legendPosition === LEFT);\n },\n\n _focus: function() {\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: function(e) {\n var ref = this;\n var ref_focusState = ref._focusState;\n var legendInFocus = ref_focusState.legendInFocus;\n var focusedElement = ref_focusState.focusedElement;\n var legend = ref._legend;\n\n if (e.key === datavizConstants.TAB) {\n this._clearFocusedElement();\n var 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 (e.key === datavizConstants.ESCAPE) {\n if (focusedElement) {\n e.stopPropagation();\n }\n\n if (this._tooltip && this._tooltip.visible) {\n this._hideTooltip();\n } else {\n this._blur();\n }\n } else if (e.key === datavizConstants.ENTER) {\n if (focusedElement) {\n this._focusState.preserveHighlight = true;\n this._propagateClick(focusedElement, e);\n this._focusElement(focusedElement);\n }\n } else if (!legendInFocus) {\n this._navigatePoints(e);\n } else {\n this._navigateLegend(e);\n }\n },\n\n _navigatePoints: function(e) {\n var this$1$1 = this;\n\n var ref = this;\n var focusState = ref._focusState;\n var plotArea = ref._plotArea;\n\n focusState.legendInFocus = false;\n\n if (!focusState.focusedElement) {\n this._focusFirstPoint();\n e.preventDefault();\n return;\n }\n\n var moveFocus = function (point) {\n focusState.focusedPoint = point;\n\n this$1$1._focusElement(focusState.focusedPoint);\n this$1$1._displayTooltip(point);\n e.preventDefault();\n };\n\n switch (e.key) {\n case datavizConstants.ARROW_RIGHT:\n moveFocus(plotArea.getPointToTheRight(focusState.focusedPoint));\n break;\n case datavizConstants.ARROW_LEFT:\n moveFocus(plotArea.getPointToTheLeft(focusState.focusedPoint));\n break;\n case datavizConstants.ARROW_DOWN:\n moveFocus(plotArea.getPointBelow(focusState.focusedPoint));\n break;\n case datavizConstants.ARROW_UP:\n moveFocus(plotArea.getPointAbove(focusState.focusedPoint));\n break;\n default:\n break;\n }\n },\n\n _navigateLegend: function(e) {\n var this$1$1 = this;\n\n var ref = this;\n var focusState = ref._focusState;\n var legend = ref._legend;\n var rtl = ref.chartService.rtl;\n\n focusState.legendInFocus = true;\n\n if (!focusState.focusedElement) {\n this._focusFirstLegendItem();\n e.preventDefault();\n return;\n }\n\n var itemsLength = legend.getItems().length;\n var moveFocus = function (cycleFunc) {\n focusState.focusedLegendItemIndex = cycleFunc(\n focusState.focusedLegendItemIndex,\n itemsLength\n );\n this$1$1._focusElement(this$1$1._getFocusedLegendItem());\n e.preventDefault();\n };\n\n switch (e.key) {\n case datavizConstants.ARROW_UP:\n case datavizConstants.ARROW_LEFT:\n moveFocus(rtl ? dataviz.cycleUp : dataviz.cycleDown);\n break;\n case datavizConstants.ARROW_DOWN:\n case datavizConstants.ARROW_RIGHT:\n moveFocus(rtl ? dataviz.cycleDown : dataviz.cycleUp);\n break;\n default:\n break;\n }\n },\n\n _focusFirstPoint: function() {\n var point = this._focusState.focusedPoint = this._plotArea.getFirstPoint();\n\n if (point) {\n this._focusElement(point);\n this._displayTooltip(point);\n }\n },\n\n _hasFocus: function() {\n return this.element.ownerDocument.activeElement === this.element;\n },\n\n _mousedown: function() {\n if (!this._hasFocus()) {\n this._preventInitialPointFocus = true;\n }\n },\n\n _focusChart: function() {\n if (!this._hasFocus()) {\n this._preventInitialPointFocus = true;\n this.element.focus();\n }\n },\n\n _focusPoint: function(point) {\n this._focusState.focusedPoint = point;\n\n this._focusChart();\n\n this._focusElement(point, true);\n },\n\n _focusFirstLegendItem: function() {\n var ref = this;\n var focusState = ref._focusState;\n\n focusState.focusedLegendItemIndex = 0;\n this._focusElement(this._getFocusedLegendItem());\n focusState.legendInFocus = true;\n\n this._hideTooltip();\n },\n\n _focusLegendItem: function(args) {\n var ref = this;\n var focusState = ref._focusState;\n\n focusState.focusedLegendItemIndex = this._legend\n .getItems()\n .findIndex(function (x) { return 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: function() {\n var ref = this;\n var focusState = ref._focusState;\n var legend = ref._legend;\n\n return legend.getItems()[focusState.focusedLegendItemIndex];\n },\n\n _focusElement: function(element, omitHighlight) {\n var ref = this;\n var focusState = ref._focusState;\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 var options = element.options;\n\n this._showSeriesInactiveOpacity(options.series.index, options.pointIndex);\n } else {\n this._showInactiveOpacity(element);\n }\n }\n },\n\n _clearFocusedElement: function() {\n var ref = this;\n var focusState = ref._focusState;\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: function(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(datavizConstants.ARIA_ACTIVE_DESCENDANT, element._id);\n },\n\n _clearElementActiveDescendant: function() {\n if (this._pseudoFocusedElement) {\n this._pseudoFocusedElement.remove();\n this._pseudoFocusedElement = null;\n }\n\n this.element.removeAttribute(datavizConstants.ARIA_ACTIVE_DESCENDANT);\n },\n\n _createPseudoFocusedElement: function(element) {\n var pseudoElement = document.createElement(\"div\");\n var 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 var checked = accessibilityOptions.ariaChecked;\n if (defined(checked)) {\n pseudoElement.setAttribute(\"aria-checked\", checked);\n }\n\n return pseudoElement;\n },\n\n _blur: function() {\n this._focusState.legendInFocus = false;\n this._clearFocusedElement();\n this._hideInactiveOpacity();\n },\n\n _startHover: function(element, e) {\n if (this._suppressHover) {\n return false;\n }\n\n var point = this._drawingChartElement(element, e, function(element) {\n return (element.hover || element.over) && !(element instanceof PlotAreaBase);\n });\n\n var 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: function(point) {\n var tooltipOptions = deepExtend({}, this.options.tooltip, point.options.tooltip);\n if (tooltipOptions.visible) {\n this._tooltip.show(point);\n }\n },\n\n _hideTooltip: function() {\n if (this._tooltip) {\n this._tooltip.hide();\n }\n },\n\n _displayInactiveOpacity: function(activePoint, multipleSeries, highlightPoints) {\n var 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 var 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: function(activePoint, chartInstance) {\n var allPoints = this._getAllPointsOfType(chartInstance, activePoint.constructor);\n\n return allPoints.filter(function (point) { return point !== activePoint; });\n },\n\n _getAllPointsOfType: function(container, type) {\n var this$1$1 = this;\n\n var points = [];\n\n for (var i = 0; i < container.children.length; i++) {\n var 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$1$1._getAllPointsOfType(element, type));\n }\n }\n\n return points;\n },\n\n _updateHoveredPoint: function(point, e) {\n var 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: function(point) {\n if (!point || !point.series) {\n return;\n }\n\n var ref = SeriesBinder.current.bindPoint(point.series, null, point.dataItem);\n var fields = ref.fields;\n if (fields.drilldown) {\n this._drilldownState = { cursor: this.element.style.cursor };\n this.element.style.cursor = 'pointer';\n }\n },\n\n _resetDrilldownPoint: function() {\n if (this._drilldownState) {\n this.element.style.cursor = this._drilldownState.cursor;\n this._drilldownState = null;\n }\n },\n\n _startDrilldown: function(point) {\n if (!point || !point.series) {\n return;\n }\n\n var series = point.series;\n var ref = SeriesBinder.current.bindPoint(series, null, point.dataItem);\n var fields = ref.fields;\n var value = fields.drilldown;\n if (value) {\n var args = { series: series, point: point, value: value, sender: this };\n this.trigger(DRILLDOWN, args);\n }\n },\n\n _updateSeriesOpacity: function(point, resetOpacity) {\n var this$1$1 = this;\n\n var plotArea = this._plotArea;\n var length = plotArea.series.length;\n\n for (var i = 0; i < length; i++) {\n var currSeries = plotArea.series[i];\n var defaultOpacity = this$1$1._getDefaultOpacityForSeries(currSeries);\n var inactiveOpacity = this$1$1._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: function(elements, activeSeries, reset, series) {\n var this$1$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var currSeries = element.series || series;\n var shouldHighlight = currSeries && (currSeries.highlight || {}).visible;\n\n if (shouldHighlight && element.visual) {\n var 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$1$1._applySeriesOpacity(element.children, activeSeries, reset, element.series);\n }\n }\n },\n\n _chartInstanceFromPoint: function(point) {\n var chartInstance = point.parent;\n\n while (chartInstance && !chartInstance.plotArea) {\n chartInstance = chartInstance.parent;\n }\n\n return chartInstance;\n },\n\n _showInactiveOpacity: function(point) {\n var multipleSeries = this._plotArea.series.length > 1;\n var hasInactiveOpacity = this._hasInactiveOpacity();\n\n if (hasInactiveOpacity) {\n this._displayInactiveOpacity(point, multipleSeries);\n } else {\n this._highlight.show(point);\n }\n },\n\n _hideInactiveOpacity: function(point) {\n var multipleSeries = this._plotArea.series.length > 1;\n var 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: function() {\n var hasDefaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity !== undefined;\n var hasInactiveOpacity = this.options.series.filter(function (s) { return s.highlight.inactiveOpacity !== undefined; } ).length > 0;\n return hasDefaultInactiveOpacity || hasInactiveOpacity;\n },\n\n _getInactiveOpacityForSeries: function(series) {\n var defaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity;\n var seriesInactiveOpacity = series.highlight.inactiveOpacity;\n return seriesInactiveOpacity || defaultInactiveOpacity || series.opacity || datavizConstants.DEFAULT_SERIES_OPACITY;\n },\n\n _getDefaultOpacityForSeries: function(series) {\n return series.defaultOpacity || series.opacity || datavizConstants.DEFAULT_SERIES_OPACITY;\n },\n\n _mouseover: function(e) {\n var 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 var obj;\n bindEvents(document, ( obj = {}, obj[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj ));\n }\n },\n\n _mouseMoveTracking: function(e) {\n var ref = this;\n var options = ref.options;\n var tooltip = ref._tooltip;\n var highlight = ref._highlight;\n var point = ref._activePoint;\n var coords = this._eventCoordinates(e);\n\n if (this._plotArea.box.containsPoint(coords)) {\n if (point && point.tooltipTracking && point.series && point.parent.getNearestPoint) {\n var 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 var 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 var obj;\n unbindEvents(document, ( obj = {}, obj[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj ));\n this._unsetActivePoint();\n this._clearFocusedElement();\n this._mouseMoveTrackHandler = null;\n\n this._hideInactiveOpacity(point);\n }\n },\n\n _mousemove: function(e) {\n var coords = this._eventCoordinates(e);\n var plotArea = this._plotArea;\n\n this._trackCrosshairs(coords);\n\n if (plotArea.hover) {\n var 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: function(coords) {\n var crosshairs = this._plotArea.crosshairs;\n\n for (var i = 0; i < crosshairs.length; i++) {\n var 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: function(coords, e, toggle) {\n if (this._suppressHover) {\n return;\n }\n\n var ref = this;\n var tooltipOptions = ref.options.tooltip;\n var plotArea = ref._plotArea;\n var categoryAxis = ref._plotArea.categoryAxis;\n var tooltip = ref._tooltip;\n var highlight = ref._highlight;\n\n if (plotArea.backgroundContainsPoint(coords)) {\n var index = categoryAxis.pointCategoryIndex(coords);\n if (index !== this._tooltipCategoryIx || (!this._sharedHighlight && toggle)) {\n var points = plotArea.pointsByCategoryIndex(index);\n var pointArgs = points.map(function(point) {\n return point.eventArgs(e);\n });\n var 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: function(options) {\n var plotArea = this._plotArea;\n this._mousemove.cancel();\n\n plotArea.hideCrosshairs();\n\n this._unsetActivePoint(options);\n },\n\n _unsetActivePoint: function(options) {\n var ref = this;\n var highlight = ref._highlight;\n\n this._activePoint = null;\n this._hoveredPoint = null;\n\n if (!options || !options.keepTooltipOpen) {\n this._hideTooltip();\n }\n\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n\n if (highlight) {\n highlight.hide();\n }\n },\n\n _deferRedraw: function() {\n this._redraw();\n },\n\n _clearRedrawTimeout: function() {\n if (this._redrawTimeout) {\n clearInterval(this._redrawTimeout);\n this._redrawTimeout = null;\n }\n },\n\n bindCategories: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var definitions = [].concat(options.categoryAxis);\n\n for (var axisIx = 0; axisIx < definitions.length; axisIx++) {\n var axis = definitions[axisIx];\n if (axis.autoBind !== false) {\n this$1$1.bindCategoryAxisFromSeries(axis, axisIx);\n }\n }\n },\n\n bindCategoryAxisFromSeries: function(axis, axisIx) {\n var this$1$1 = this;\n\n var uniqueCategories = new Set();\n var seriesOnAxis = this.options.series.filter(function (series) { return series.categoryAxis === axis.name || (!series.categoryAxis && axisIx === 0); });\n var hasCategoryBinding = seriesOnAxis.some(function (series) { return Boolean(series.categoryField); });\n var seriesWithData = seriesOnAxis.filter(function (series) { return series.data && series.data.length > 0; });\n var categorySamples = seriesWithData.map(function (series) { return SeriesBinder.current.bindPoint(series, 0).fields.category; });\n var dateAxis = categorySamples.reduce(function (result, firstCategory) { return result || isDateAxis(axis, firstCategory); }, false);\n var seriesWithBinding = seriesWithData.filter(function (series, seriesIx) { return series.categoryField || defined(categorySamples[seriesIx]); });\n\n seriesWithBinding.forEach(function (series) { return series.data.forEach(function (row, index) {\n var category = SeriesBinder.current.bindPoint(series, index).fields.category;\n if (dateAxis) {\n var date = parseDateCategory(category, row, this$1$1.chartService.intl);\n category = date ? date.getTime() : undefined;\n }\n\n uniqueCategories.add(category);\n }); });\n\n if (uniqueCategories.size > 0) {\n var categories = Array.from(uniqueCategories.values());\n if (dateAxis) {\n categories = categories.sort().map(function (time) { return time && new Date(time); });\n }\n\n axis.categories = categories;\n } else if (hasCategoryBinding) {\n axis.categories = [];\n }\n },\n\n _isBindable: function(series) {\n var valueFields = SeriesBinder.current.valueFields(series);\n var result = true;\n\n for (var i = 0; i < valueFields.length; i++) {\n var 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: function() {\n var options = this.options;\n var 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: function(seriesIndex, pointIndex) {\n this._showSeriesInactiveOpacity(seriesIndex, pointIndex);\n },\n\n _showSeriesInactiveOpacity: function(seriesIndex, pointIndex) {\n var ref = this;\n var plotArea = ref._plotArea;\n var highlight = ref._highlight;\n var currentSeries = (plotArea.srcSeries || plotArea.series)[seriesIndex];\n var 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 var multipleSeries = plotArea.series.length > 1;\n var point = items.length ? items[0] : items;\n\n this._displayInactiveOpacity(point, multipleSeries, items);\n } else {\n highlight.show(items);\n }\n },\n\n _shouldAttachMouseMove: function() {\n return this._plotArea.crosshairs.length || (this._tooltip && this._sharedTooltip()) || this.requiresHandlers([ PLOT_AREA_HOVER, PLOT_AREA_LEAVE ]);\n },\n\n updateMouseMoveHandler: function() {\n var obj;\n unbindEvents(this.element, ( obj = {}, obj[ MOUSEMOVE ] = this._mousemove, obj ));\n\n if (this._shouldAttachMouseMove()) {\n var obj$1;\n bindEvents(this.element, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mousemove, obj$1 ));\n }\n },\n\n applyOptions: function(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: function(options, theme) {\n this.applyOptions(options, theme);\n this.bindCategories();\n this.redraw();\n this.updateMouseMoveHandler();\n },\n\n setDirection: function(rtl) {\n this.chartService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this._destroySurface();\n }\n },\n\n setIntlService: function(intl) {\n this.chartService.intl = intl;\n },\n\n noTransitionsRedraw: function() {\n this._noTransitionsRedraw();\n },\n\n destroy: function() {\n this._destroyed = true;\n\n var obj;\n unbindEvents(this.element, ( obj = {}, obj[ CONTEXTMENU ] = this._clickHandler, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj[ MOUSEMOVE ] = this._mousemove, obj[ MOUSELEAVE ] = this._mouseleaveHandler, obj[ KEYDOWN ] = this._keydownHandler, obj[ FOCUS ] = this._focusHandler, obj[ BLUR] = this._blurHandler, obj ));\n\n if (this.domEvents) {\n this.domEvents.destroy();\n delete this.domEvents;\n }\n\n if (this._mouseMoveTrackHandler) {\n var obj$1;\n unbindEvents(document, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj$1 ));\n }\n\n this._focusState = null;\n\n this._destroyView();\n\n this._destroySurface();\n\n this._clearRedrawTimeout();\n },\n\n _destroySurface: function() {\n var 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: function() {\n var selections = this._selections;\n\n if (selections) {\n while (selections.length > 0) {\n selections.shift().destroy();\n }\n }\n },\n\n _destroyView: function() {\n var 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\n function resolveAxisAliases(options) {\n var aliases = AXIS_NAMES;\n\n for (var idx = 0; idx < aliases.length; idx++) {\n var alias = aliases[idx] + \"Axes\";\n if (options[alias]) {\n options[aliases[idx] + \"Axis\"] = options[alias];\n delete options[alias];\n }\n }\n }\n\n function pointByCategoryName(points, name) {\n if (points) {\n for (var idx = 0; idx < points.length; idx++) {\n if (points[idx].category === name) {\n return [ points[idx] ];\n }\n }\n }\n }\n\n function applyAxisDefaults(options, themeOptions) {\n var themeAxisDefaults = ((themeOptions || {}).axisDefaults) || {};\n var axisName, axisDefaults, axes;\n\n function mapAxisOptions(axisOptions) {\n var axisColor = (axisOptions || {}).color || axisDefaults.color;\n var 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 (var 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\n function applySeriesDefaults(options, themeOptions) {\n var series = options.series;\n var seriesLength = series.length;\n var seriesDefaults = options.seriesDefaults;\n var commonDefaults = deepExtend({}, options.seriesDefaults);\n var themeSeriesDefaults = themeOptions ? deepExtend({}, themeOptions.seriesDefaults) : {};\n var commonThemeDefaults = deepExtend({}, themeSeriesDefaults);\n\n cleanupNestedSeriesDefaults(commonDefaults);\n cleanupNestedSeriesDefaults(commonThemeDefaults);\n\n for (var i = 0; i < seriesLength; i++) {\n var seriesType = series[i].type || options.seriesDefaults.type;\n\n var 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\n function 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 function axisRanges(axes) {\n var ranges = {};\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var axisName = axis.options.name;\n if (axisName) {\n ranges[axisName] = axis.range();\n }\n }\n\n return ranges;\n }\n\n var DATA_FIELDS = [ 'data', 'categories' ];\n\n function clearMissingValues(originalOptions, options) {\n for (var field in options) {\n if (!inArray(field, DATA_FIELDS) && dataviz.hasOwnProperty(options, field)) {\n var fieldValue = options[field];\n var originalValue = originalOptions[field];\n if (defined(originalValue)) {\n var 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\n function triggerPaneRender(panes) {\n for (var idx = 0; idx < panes.length; idx++) {\n panes[idx].notifyRender();\n }\n }\n\n setDefaultOptions(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\n kendo.deepExtend(kendo.dataviz, {\n constants: constants,\n Aggregates: Aggregates,\n AreaChart: AreaChart,\n AreaSegment: AreaSegment,\n AxisGroupRangeTracker: AxisGroupRangeTracker,\n Bar: Bar,\n BarChart: BarChart,\n BarLabel: BarLabel,\n BoxPlotChart: BoxPlotChart,\n BoxPlot: BoxPlot,\n BubbleChart: BubbleChart,\n Bullet: Bullet,\n BulletChart: BulletChart,\n CandlestickChart: CandlestickChart,\n Candlestick: Candlestick,\n CategoricalChart: CategoricalChart,\n CategoricalErrorBar: CategoricalErrorBar,\n CategoricalPlotArea: CategoricalPlotArea,\n Chart: Chart,\n ChartContainer: ChartContainer,\n ClipAnimation: ClipAnimation,\n ClusterLayout: ClusterLayout,\n Crosshair: Crosshair,\n CrosshairTooltip: CrosshairTooltip,\n DefaultAggregates: DefaultAggregates,\n DonutChart: DonutChart,\n DonutPlotArea: DonutPlotArea,\n DonutSegment: DonutSegment,\n ErrorBarBase: ErrorBarBase,\n ErrorRangeCalculator: ErrorRangeCalculator,\n Highlight: Highlight,\n SharedTooltip: SharedTooltip,\n Legend: Legend,\n LegendItem: LegendItem,\n LegendLayout: LegendLayout,\n LineChart: LineChart,\n LinePoint: LinePoint,\n LineSegment: LineSegment,\n Pane: Pane,\n PieAnimation: PieAnimation,\n PieChart: PieChart,\n PieChartMixin: PieChartMixin,\n PiePlotArea: PiePlotArea,\n PieSegment: PieSegment,\n PlotAreaBase: PlotAreaBase,\n PlotAreaEventsMixin: PlotAreaEventsMixin,\n PlotAreaFactory: PlotAreaFactory,\n PointEventsMixin: PointEventsMixin,\n RangeBar: RangeBar,\n RangeBarChart: RangeBarChart,\n RangeAreaPoint: RangeAreaPoint,\n RangeAreaChart: RangeAreaChart,\n ScatterChart: ScatterChart,\n ScatterErrorBar: ScatterErrorBar,\n ScatterLineChart: ScatterLineChart,\n Selection: Selection,\n SeriesAggregator: SeriesAggregator,\n SeriesBinder: SeriesBinder,\n SplineSegment: SplineSegment,\n SplineAreaSegment: SplineAreaSegment,\n StackWrap: StackWrap,\n Tooltip: Tooltip,\n OHLCChart: OHLCChart,\n OHLCPoint: OHLCPoint,\n WaterfallChart: WaterfallChart,\n WaterfallSegment: WaterfallSegment,\n XYPlotArea: XYPlotArea,\n MousewheelZoom: MousewheelZoom,\n ZoomSelection: ZoomSelection,\n Pannable: Pannable,\n ChartAxis: ChartAxis,\n ChartPane: ChartPane,\n ChartPlotArea: ChartPlotArea,\n findAxisByName: findAxisByName,\n anyHasZIndex: anyHasZIndex,\n appendIfNotNull: appendIfNotNull,\n areNumbers: areNumbers,\n bindSegments: bindSegments,\n categoriesCount: categoriesCount,\n countNumbers: countNumbers,\n equalsIgnoreCase: equalsIgnoreCase,\n evalOptions: evalOptions,\n filterSeriesByType: filterSeriesByType,\n parseDateCategory: parseDateCategory,\n getField: getField,\n hasGradientOverlay: hasGradientOverlay,\n hasValue: hasValue,\n isDateAxis: isDateAxis,\n segmentVisible: segmentVisible,\n singleItemOrArray: singleItemOrArray,\n createOutOfRangePoints: createOutOfRangePoints\n });\n\n })(window.kendo.jQuery);\n\n var __meta__$C = {\n id: \"breadcrumb\",\n name: \"Breadcrumb\",\n category: \"web\",\n description: \"The Breadcrumb widget displays navigation breadcrumb.\",\n depends: [ \"core\", \"icons\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n extend = $.extend,\n mediaQuery = kendo.mediaQuery,\n isPlainObject = $.isPlainObject,\n support = kendo.support,\n encode = kendo.htmlEncode,\n\n BREADCRUMB = \".kendoBreadcrumb\",\n\n ARIA_HIDDEN = \"aria-hidden\",\n ARIA_LABEL = \"aria-label\",\n\n CLICK = \"click\",\n FOCUS = \"focus\",\n BLUR = \"blur\",\n KEYDOWN = \"keydown\",\n CHANGE = \"change\",\n DOT = \".\";\n\n var breadcrumbStyles = {\n widget: \"k-breadcrumb\",\n overlay: \"k-breadcrumb-container\",\n textbox: \"k-input-inner\",\n textboxWrapper: \"k-textbox k-input k-input-md k-rounded-md k-input-solid\",\n link: \"k-breadcrumb-link\",\n item: \"k-breadcrumb-item\",\n delimiter: \"k-breadcrumb-delimiter-icon\",\n rootItem: \"k-breadcrumb-root-item\",\n rootLink: \"k-breadcrumb-root-link\",\n overflowIcon: \"k-breadcrumb-overflow-icon\",\n focused: \"k-focus\",\n hidden: \"k-hidden\",\n inputWrapper: \"k-breadcrumb-input-container\"\n };\n\n var Breadcrumb = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n options = options || {};\n\n Widget.fn.init.call(that, element, options);\n\n that._wrapper();\n\n if (options.editable) {\n that._editable();\n that._tabindex();\n }\n\n that.wrapper.on(CLICK + BREADCRUMB, \"a:not(.k-disabled)\", that._click.bind(that));\n\n if (options.value || options.bindToLocation || !options.items) {\n that._value();\n } else if (options.items) {\n that.items(options.items);\n }\n\n that._applyCssClasses();\n\n that._resizeHandler = kendo.onResize(function() {\n that.resize(true);\n });\n },\n\n options: {\n editable: false,\n navigational: false,\n bindToLocation: false,\n items: null,\n name: \"Breadcrumb\",\n size: \"medium\",\n gap: 0,\n rootIcon: \"home\",\n delimiterIcon: \"chevron-right\",\n messages: {\n rootTitle: \"Go to root\"\n }\n },\n\n events: [ CHANGE, CLICK ],\n\n destroy: function() {\n var that = this;\n\n Widget.fn.destroy.call(that);\n\n kendo.unbindResize(that._resizeHandler);\n\n that.wrapper\n .add(that.wrapper.find(\"input\"))\n .add(that.wrapper.find(\"a\"))\n .off(BREADCRUMB);\n },\n\n items: function(items) {\n var that = this;\n\n if (items === undefined$1) {\n return that.options.items;\n }\n\n that.options.items = items;\n that._segments = items;\n that.refresh();\n },\n\n _update: function(val) {\n var that = this;\n\n if (val !== that.value()) {\n that._generateSegments(val);\n that.refresh();\n that.trigger(CHANGE, { sender: this, value: val });\n }\n },\n\n _generateSegments: function(value) {\n var that = this,\n options = that.options,\n items = options.items,\n path, segments;\n\n segments = that._split(value);\n\n if (!items) {\n that.options.items = that._segments = segments;\n return;\n }\n\n that._segments = [];\n\n for (var i = 0; i < segments.length; i++) {\n path = that._path(items.slice(0, i + 1));\n\n if (path !== \"\" && value.indexOf(path) > -1 && items[i] && items[i].text === segments[i]) {\n that._segments.push(items[i]);\n } else {\n that._segments.push(segments[i]);\n }\n }\n },\n\n _click: function(e) {\n var that = this,\n options = that.options,\n item = $(e.target).closest(DOT + breadcrumbStyles.item),\n previousDomItems = item.prevAll().addBack(),\n previousItems = that._getItems(previousDomItems),\n path = that._path(previousItems),\n segment = that._segments[item.index()];\n\n if (!options.navigational) {\n e.preventDefault();\n }\n\n if (!that.trigger(CLICK, { sender: that, originalEvent: e, isRoot: segment.type === \"rootitem\", item: segment })) {\n that._update(path);\n }\n },\n\n _getItems: function(items) {\n var that = this;\n\n return $.map(items, function(item) {\n return that._segments[$(item).index()] || item.innerText;\n });\n },\n\n _edit: function() {\n var that = this,\n input = that.input;\n\n that.oldValue = that.value();\n that.inputWrapper.css(\"height\", that.wrapper.height());\n that.overlay.hide();\n that.input.val(that.value());\n that.input.attr(ARIA_HIDDEN, false);\n that.inputWrapper.show();\n\n setTimeout(function() {\n input.select();\n });\n },\n\n _blur: function(shouldRestoreValue) {\n var that = this,\n input = that.input,\n inputWrapper = that.inputWrapper,\n wrapper = that.wrapper,\n overlay = that.overlay,\n val = input.val().replace(/\\/{2,}/g, \"/\");\n\n if (overlay.is(\":visible\")) {\n return;\n }\n\n if (shouldRestoreValue) {\n val = that.oldValue;\n }\n\n input.attr(ARIA_HIDDEN, true);\n inputWrapper.hide();\n overlay.show();\n input.val(\"\");\n that._update(val);\n wrapper.removeClass(breadcrumbStyles.focused);\n },\n\n _keydown: function(e) {\n var that = this,\n key = e.keyCode,\n isEnter = key === kendo.keys.ENTER,\n isEsc = key === kendo.keys.ESC;\n\n if (isEnter || isEsc) {\n that._blur(isEsc);\n\n setTimeout(function() {\n that.overlay.find(\"a\").first().trigger(\"focus\");\n });\n }\n },\n\n isNavigational: function(target) {\n var canNavigate =\n target.hasClass(breadcrumbStyles.textbox) ||\n target.closest(DOT + breadcrumbStyles.item);\n\n if (target[0] === this.wrapper[0]) {\n return false;\n }\n\n return canNavigate && !target.hasClass(\"k-breadcrumb-last-item\");\n },\n\n _wrapperKeydown: function(ev) {\n var that = this,\n target = $(ev.target),\n isNavigational = that.isNavigational(target);\n\n if (ev.keyCode === kendo.keys.ENTER && !isNavigational) {\n that._edit();\n }\n },\n\n _wrapperClick: function(ev) {\n var that = this,\n target = $(ev.target),\n isNavigational = that.isNavigational(target);\n\n if (!isNavigational) {\n this._edit();\n }\n },\n\n _wrapperFocus: function(ev) {\n $(ev.target).addClass(breadcrumbStyles.focused);\n },\n\n _wrapperBlur: function(ev) {\n $(ev.target).removeClass(breadcrumbStyles.focused);\n },\n\n _wrapper: function() {\n var that = this,\n element = this.element,\n elementIsInput = element.is(\"input\"),\n inputWrapper = $(\"
    \");\n\n that.wrapper = elementIsInput ? element\n .wrap($(\"