{"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","arguments$1","arguments","target","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","e$1","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","ref","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","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","_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","_requestInProgress","_pending","_shouldWrap","_updateTotalForAction","_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","_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","bodyRegExp","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","ACTIVEBORDER","ACTIVEBORDERREGEXP","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","_hideDirClass","_closing","_toggleResize","fixed","_shouldCorrectWidth","listbox","_resizeOnWrap","flipped","_position","_openAnimation","_showDirClass","_location","dirClass","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","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","parameterBooleanIcon","parameterDateTimeIcon","parameterFloatIcon","parameterIntegerIcon","parameterStringIcon","parametersByteArrayIcon","parametersIcon","parametersUnknownIcon","passwordIcon","pauseIcon","pauseSmIcon","pencilIcon","percentIcon","photosIcon","pinIcon","pinterestBoxIcon","pinterestIcon","playIcon","playSmIcon","playlistIcon","plusCircleIcon","plusIcon","plusOutlineIcon","plusSmIcon","pointerIcon","positionBottomIcon","positionLeftIcon","positionRightIcon","positionTopIcon","printIcon","puzzlePieceIcon","qrCodeIcon","qrCodeOutlineIcon","qrCodeScannerIcon","questionCircleIcon","radiobuttonCheckedIcon","radiobuttonIcon","redditBoxIcon","redditIcon","redoIcon","regularExpressionIcon","removeHorizontalSpacingIcon","removeVerticalSpacingIcon","reorderIcon","replaceAllIcon","replaceSingleIcon","reportElementIcon","rewindIcon","rightDoubleQuotesIcon","rotateIcon","rotateLeftIcon","rotateRightIcon","roundCornersIcon","rowFreezeIcon","rowsIcon","rssBoxIcon","rssIcon","saveIcon","searchIcon","selectAllIcon","selectBoxIcon","setColumnPositionIcon","shapeLineIcon","shapesIcon","shareIcon","sharpenIcon","signatureIcon","silverlightIcon","sizeToGridIcon","slidersIcon","slnIcon","snapGridIcon","snapToGridlinesIcon","snapToSnaplinesIcon","sortAscIcon","sortAscSmallIcon","sortClearIcon","sortDescIcon","sortDescSmallIcon","sparklesIcon","spellCheckerIcon","starIcon","starOutlineIcon","stickIcon","stopIcon","stopSmIcon","strikethroughIcon","stripAllFormattingIcon","stripCssFormatIcon","stripFontElementsIcon","stripSpanElementsIcon","stripWordFormattingIcon","stumbleUponBoxIcon","stumbleUponIcon","subreportIcon","subscriptIcon","sumIcon","supscriptIcon","symbolIcon","tableAddIcon","tableAlignBottomCenterIcon","tableAlignBottomLeftIcon","tableAlignBottomRightIcon","tableAlignMiddleCenterIcon","tableAlignMiddleLeftIcon","tableAlignMiddleRightIcon","tableAlignRemoveIcon","tableAlignTopCenterIcon","tableAlignTopLeftIcon","tableAlignTopRightIcon","tableBodyIcon","tableCellDeleteIcon","tableCellIcon","tableCellPropertiesIcon","tableColumnDeleteIcon","tableColumnGroupsIcon","tableColumnInsertLeftIcon","tableColumnInsertRightIcon","tableCornerIcon","tableDeleteIcon","tableIcon","tablePositionCenterIcon","tablePositionEndIcon","tablePositionStartIcon","tablePropertiesIcon","tableRowDeleteIcon","tableRowGroupsIcon","tableRowInsertAboveIcon","tableRowInsertBelowIcon","tableUnmergeIcon","tableWizardIcon","tellAFriendBoxIcon","tellAFriendIcon","templateManagerIcon","textClipIcon","textOverflowIcon","textTruncateIcon","textWrapArrowIcon","textWrapIcon","textareaIcon","textboxHiddenIcon","textboxIcon","thumbDownIcon","thumbDownOutlineIcon","thumbUpIcon","thumbUpOutlineIcon","thumbnailsDownIcon","thumbnailsLeftIcon","thumbnailsRightIcon","thumbnailsUpIcon","tocSectionIcon","tocSectionLevelIcon","toggleFullScreenModeIcon","toolbarFloatIcon","trackChangesAcceptAllIcon","trackChangesAcceptIcon","trackChangesEnableIcon","trackChangesIcon","trackChangesRejectAllIcon","trackChangesRejectIcon","transparencyIcon","trashIcon","tumblrBoxIcon","tumblrIcon","twitterBoxIcon","twitterIcon","underlineIcon","undoIcon","ungroupIcon","unlinkIcon","unlinkVerticalIcon","unlockIcon","unpinIcon","unstickIcon","uploadIcon","userIcon","validationDataIcon","validationXhtmlIcon","vbIcon","vbprojIcon","videoExternalIcon","vimeoBoxIcon","vimeoIcon","volumeDownIcon","volumeMuteIcon","volumeUpIcon","warningCircleIcon","warningTriangleIcon","wholeWordIcon","windowIcon","windowMinimizeIcon","windowRestoreIcon","wrenchIcon","xCircleIcon","xIcon","xOutlineIcon","yammerBoxIcon","yammerIcon","youtubeBoxIcon","youtubeIcon","zoomActualSizeIcon","zoomBestFitIcon","zoomInIcon","zoomOutIcon","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","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","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","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","fillText","strokeText","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","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","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","eventArgs","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","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","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","legendInFocus","isLegendBeforeChart","_navigatePoints","_navigateLegend","focusState","focusedElement","moveFocus","focusedPoint","_focusElement","cycleFunc","focusedLegendItemIndex","_getFocusedLegendItem","_hasFocus","_focusChart","omitHighlight","_setElementActiveDescendant","_showSeriesInactiveOpacity","_showInactiveOpacity","_clearElementActiveDescendant","_pseudoFocusedElement","_createPseudoFocusedElement","pseudoElement","_hideInactiveOpacity","activePoint","_activePoint","_updateHoveredPoint","_displayTooltip","_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","linkClasses","iconElm","delimiterElm","encoded","linkElm","_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","_hideTooltip","_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","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","currentTheme","areaGeometry","_surfaceElement","_getSize","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","kValue","postnet","VALID_CODE_LENGTHS","DIGIT_SEPARATOR","baseHeight","ean13","calculateChecksum","leftKey","leftPart","rightPart","addPieces","addSide","keyTable","arrToAdd","limitedHeight","even","ean8","Barcode","surfaceWrap","_setOptions","_render","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","layer","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","links","outgoing","incoming","weight","associatedShape","shortForm","isVirtual","isIsolated","isLinkedTo","getComplement","getChildren","getParents","balance","adjacentTo","removeLink","hasLinkTo","degree","incidentWith","getLinksWith","getNeighbors","neighbors","Link","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","drawingRect","_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","currentHeight","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","sourceNode","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","maxDepth","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","link1","link2","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","KWIDGET","preventKeyNav","badgeEl","getKendoToggleButton","getKendoButton","_toggleIndex","_resetIndexes","_addButton","btn","_keyDown","buttonGroup","focusableItems","buttons","excludedNodesRegExp","MENU","LINK","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","isLink","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","TOGGLE_BUTTON","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","_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","HTMLInput","labelPosition","inputClass","labelEl","labelClass","optionalClass","optionalText","wrapperHtml","HTMLCheckBox","HTMLRadioButton","renderCheckBox","renderRadioButton","CheckBox","FOCUSED","STATEDISABLED","NOCLICKCLASS","STATEREADONLY","FloatingLabel","widgetWrapper","useReadOnlyClass","floatCheck","inputInner","kendo$h","$$2","isFunction$1","Label","_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","columns","_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","_cascade","_cascadeHandlerProxy","_cascadeHandler","_cascadeFilterRequests","_selectedValue","_toggleCascadeOnFocus","valueBeforeCascade","_clearSelection","_cascadeChange","filterValue","cascadeFromParentField","cascadeFromField","cascadeOnCustomValue","currentHandler","STATIC_LIST_NS","aria","_touchHandlers","_optionID","_selectedIndices","_dataItems","_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","_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","SELECTABLE","CHANGING","UNSELECT","UNSELECTING","INPUTSELECTOR_ICONSSELECTOR_FONT","INPUTSELECTOR_ICONSSELECTOR_SVG","replaceAll","INPUTSELECTOR_SVG_PARTS","INPUTSELECTOR","supportEventDelegation","Selectable","dragToSelect","_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","resetTouchEvents","continuousItems","toCompare","elementPosition","firstRect","secondRect","selectableMode","asLowerString","extractFormat","transitionOrigin","cellTemplate","emptyCellTemplate","otherMonthCellTemplate","weekNumberTemplate","KEYDOWN_NS","SLIDE","CENTURY","NAVIGATE","OTHERMONTH","CELLSELECTOR","CELLSELECTORVALID","FOCUS_WITH_NS","MOUSEENTER_WITH_NS","PREVARROW","NEXTARROW","decade","century","HEADERSELECTOR","Calendar","disableDates","getDisabledExpr","_viewWrapper","hasFooter","_today","mousetoggle","toDateObject","_focusView","focusOnNav","_setCurrent","_selectDates","restrictValue","_addClassProxy","_cell","todayString","toDateString","getToday","_cellByDate","_removeClassProxy","selectDates","weekColumnHeader","navigateTo","parentViews","classic","actionAttr","linksSelector","modern","_destroySelectable","_title","_table","_bindTable","_option","navigateToPast","navigateToFuture","navigateUp","navigateDown","isEqualDate","currentView","_oldTable","future","viewWrapper","_changeView","otherMonth","isWeekColumnVisible","addClassToViewContainer","_animate","_visualizeSelectedDatesInView","_selectCell","validSelectedDates","datesUnique","_validateValue","createDate","isInRange","selectedDates","selectableOptions","_onRelatedTarget","_toggleSelection","_cellsBySelector","_addSelectedCellsToArray","_rangeSelection","currentCell","toDateCell","daysDifference","fromDate","daysBetweenTwoDates","addDaysToArray","currentDateIndex","_dateInView","firstDateInView","_isNavigatable","cellIndex","isDisabled","prevent","_todayClick","_keyboardToggleSelection","focusedDate","_nextNavigatable","_keyboardRangeSelection","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","dateString","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","wrapperClass","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","prefixContainer","suffixContainer","prefixInsertBefore","suffixInsertAfter","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","urlRegExp","CHECKBOXSELECTOR","NUMBERINPUTSELECTOR","NAME","FORM","NOVALIDATE","VALIDATE","VALIDATE_INPUT","patternMatcher","matcher","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","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","renderHiddenForMvcCheckbox","kendoCheckBox","convertItems","kendoEditor","editor","tagElement","checkboxes","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","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","contentRect","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","_removeDataItems","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 var breakpoints;\n var EVENT = \"change\";\n\n var 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 var mediaQueryList = window.matchMedia(query);\n var onEnterCallbacks = [];\n var onLeaveCallbacks = [];\n var onChangeHandlers = [];\n var kendoMediaQuery = { mediaQueryList: mediaQueryList };\n\n var onChangeHandler = function (ev) {\n onChangeHandlers.forEach(function (cb) { return cb(ev); });\n\n if (ev.matches) {\n onEnterCallbacks.forEach(function (cb) { return cb(ev); });\n } else {\n onLeaveCallbacks.forEach(function (cb) { return cb(ev); });\n }\n };\n\n mediaQueryList.addEventListener(EVENT, onChangeHandler);\n\n var onChange = function (cb) {\n onChangeHandlers.push(cb);\n return kendoMediaQuery;\n };\n\n var onEnter = function (cb) {\n onEnterCallbacks.push(cb);\n\n if (mediaQueryList.matches) {\n var media = mediaQueryList.media;\n var matches = true;\n\n var ev = new MediaQueryListEvent(EVENT, {\n media: media,\n matches: matches,\n });\n\n cb(ev);\n }\n\n return kendoMediaQuery;\n };\n\n var onLeave = function (cb) {\n onLeaveCallbacks.push(cb);\n return kendoMediaQuery;\n };\n\n var destroy = function () {\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__$W = {\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.1.130'.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 arguments$1 = arguments;\n\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$1[ 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.1.130\".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 var isPresent = kendo.isPresent = function (value) { return value !== null && value !== undefined$1; };\n var isBlank = kendo.isBlank = function (value) { return value === null || value === undefined$1; };\n var isString = kendo.isString = function (value) { return typeof value === 'string'; };\n var isNumeric = kendo.isNumeric = function (value) { return !isNaN(value - parseFloat(value)); };\n var isDate = kendo.isDate = function (value) { return value && value.getTime; };\n var isFunction = kendo.isFunction = function (value) { return 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 = function (designators) { return Array.from(designators).sort(function (a, b) { return b.length - a.length; })[0].length; },\n getNumber = function(size) {\n var rg, match, part = \"\";\n if (size === 2) {\n for (var 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, autowidth) {\n if ( shouldCorrectWidth === void 0 ) shouldCorrectWidth = true;\n\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 arguments$1 = arguments;\n\n var i = 1,\n length = arguments.length;\n\n for (i = 1; i < length; i++) {\n deepExtendOne(destination, arguments$1[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$1) {\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: function (expression, safe) {\n expression = expression || \"\";\n\n return expression.indexOf(\".\") >= 0 || expression.indexOf(\"[\") >= 0 ?\n expression.split(/[[\\].]/).map(function (v) { return v.replace(/[\"']/g, ''); }).filter(function (v) { return v; }) :\n expression === \"\" ? [] : [expression];\n },\n\n getter: function(expression, safe) {\n var key = expression + safe;\n\n return getterCache[key] = getterCache[key] || (function (obj) {\n var fields = kendo.exprToArray(expression, safe);\n\n var result = obj;\n for (var 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] || (function (obj, value) {\n var fields = kendo.exprToArray(expression);\n\n var innerSetter = function (ref) {\n var parent = ref.parent;\n var val = ref.val;\n var prop = ref.prop;\n var props = ref.props;\n\n if (props.length) {\n parent = parent[props.shift()];\n innerSetter({ parent: parent, val: val, prop: prop, props: 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).replace(\"dddd\", \"EEEE\").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 var type = options.type;\n var nameType = options.nameType;\n var 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 var 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 var info = kendo.culture();\n var dateFields = info.calendar.dateFields;\n var 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 var selector = styleProps.map(function (styleProp){ return (\"[\" + (kendo.attr((\"style-\" + styleProp))) + \"]\"); }).join(',');\n element.find(selector).addBack(selector).each(function (_, currentElement) {\n var $currentElement = $(currentElement);\n styleProps.forEach(function(styleProp) {\n var 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$W = kendo;\n\n var __meta__$V = {\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$V = kendo;\n\n var __meta__$U = {\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$U = 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 var logic = {\n \"or\": {\n concat: function (acc, fn) { return function (a) { return acc(a) || fn(a); }; },\n identity: function () { return false; }\n },\n \"and\": {\n concat: function (acc, fn) { return function (a) { return acc(a) && fn(a); }; },\n identity: function () { return true; }\n }\n };\n\n var operatorsMap = {\n isnullorempty: function (a) { return kendo.isBlank(a) || a === ''; },\n isnotnullorempty: function (a) { return kendo.isPresent(a) && a !== ''; },\n contains: function (a, b) { return (a + '').indexOf(b) >= 0; },\n doesnotcontain: function (a, b) { return (a + '').indexOf(b) === -1; },\n doesnotendwith: function (a, b) { return (a + '').indexOf(b, (a || \"\").length - (b || \"\").length) < 0; },\n doesnotstartwith: function (a, b) { return (a + '').lastIndexOf(b, 0) === -1; },\n endswith: function (a, b) { return (a + '').indexOf(b, (a || \"\").length - (b || \"\").length) >= 0; },\n eq: function (a, b) { return a === b; },\n gt: function (a, b) { return a > b; },\n gte: function (a, b) { return a >= b; },\n isempty: function (a) { return a === ''; },\n isnotempty: function (a) { return a !== ''; },\n isnotnull: function (a) { return kendo.isPresent(a); },\n isnull: function (a) { return kendo.isBlank(a); },\n lt: function (a, b) { return a < b; },\n lte: function (a, b) { return a <= b; },\n neq: function (a, b) { return a != b; },\n startswith: function (a, b) { return (a + '').lastIndexOf(b, 0) === 0; }\n };\n\n var dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\n\n var convertValue = function (value, ignoreCase, accentFoldingFiltering) {\n if (value != null && kendo.isString(value)) {\n var 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 var typedGetter = function (prop, value, ignoreCase, accentFoldingFiltering) {\n if (!kendo.isPresent(value)) {\n return prop;\n }\n\n var acc = prop;\n\n if (kendo.isString(value)) {\n var date = dateRegExp.exec(value);\n if (date) {\n value = new Date(+date[1]);\n } else {\n acc = function (a) {\n var 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 function (a) {\n var x = acc(a);\n return kendo.isDate(x) ? x.getTime() : x;\n };\n }\n return acc;\n };\n\n var transformFilter = function (ref) {\n var field = ref.field;\n var ignoreCase = ref.ignoreCase;\n var value = ref.value;\n var operator = ref.operator; if ( operator === void 0 ) operator = 'eq';\n var accentFoldingFiltering = ref.accentFoldingFiltering;\n\n field = !kendo.isPresent(field) ? function (a) { return a; } : field;\n\n ignoreCase = kendo.isPresent(ignoreCase) ? ignoreCase : true;\n\n var 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 var op = kendo.isFunction(operator) ? operator : operatorsMap[operator];\n\n return function (a) { return op(itemProp(a), value, ignoreCase); };\n };\n\n var isCompositeFilterDescriptor = function (source) { return kendo.isPresent(source.filters); };\n\n var transformCompositeFilter = function (filter) {\n var accentFoldingFiltering = filter.accentFoldingFiltering;\n var combiner = logic[filter.logic || 'and'];\n return filter.filters\n .filter(kendo.isPresent)\n .map(function (x) { return (isCompositeFilterDescriptor(x) ? transformCompositeFilter(extendAccentFolding(x, accentFoldingFiltering)) : transformFilter(extendAccentFolding(x, accentFoldingFiltering))); })\n .reduce(combiner.concat, combiner.identity);\n };\n\n var extendAccentFolding = function (filter, accentFoldingFiltering) { return (kendo.isPresent(accentFoldingFiltering) ? Object.assign(filter, { accentFoldingFiltering: accentFoldingFiltering }) : filter); };\n\n var filterExprNoEval = function(expr) {\n return transformCompositeFilter(expr);\n };\n\n var __meta__$T = {\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$T = kendo;\n\n var __meta__$S = {\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$S = kendo;\n\n var __meta__$R = {\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(function (f) { return 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) {\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) {\n if ( options === void 0 ) options = { noEval: false };\n\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 = function (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 arguments$1 = arguments;\n\n var idx, length;\n\n for (idx = 0, length = arguments.length; idx < length; idx++) {\n if (arguments$1[idx]) {\n that._accept(arguments$1[idx]);\n }\n }\n\n that._storeData(true);\n\n that._syncEnd();\n\n that._change({ action: \"sync\" });\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 }, 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 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 _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 var that = this, idx, 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 (that.options.autoSync && (action === \"add\" || action === \"remove\" || action === \"itemchange\")) {\n\n var handler = function(args) {\n if (args.action === \"sync\") {\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$R = kendo;\n\n var __meta__$Q = {\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 = function (data) {\n var valueAttr = kendo.getter(options.valueField || options.textField)(data);\n var innerText = kendo.getter(options.textField || options.valueField)(data);\n return (\"\");\n };\n } else {\n template = function (data) { return (\"\"); };\n }\n } else if (nodeName == \"tbody\") {\n template = function (data) { return (\"\" + (encode(data)) + \"\"); };\n } else if (nodeName == \"ul\" || nodeName == \"ol\") {\n template = function (data) { return (\"
  • \" + (encode(data)) + \"
  • \"); };\n } else {\n template = function (data) { return (\"\" + (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 },\n\n refresh: function() {\n if (this.widget.enable) {\n this.widget.enable(this.bindings.enabled.get());\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 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$Q = kendo;\n\n var __meta__$P = {\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 bodyRegExp = /]*>(([\\u000a\\u000d\\u2028\\u2029]|.)*)<\\/body>/i;\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 (bodyRegExp.test(html)) {\n html = RegExp.$1;\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 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$P = kendo;\n\n var __meta__$O = {\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$O = kendo;\n\n var __meta__$N = {\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$N = kendo;\n\n var __meta__$M = {\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', function (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$M = kendo;\n\n var __meta__$L = {\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$L = kendo;\n\n var __meta__$K = {\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 ACTIVEBORDER = \"k-state-border\",\n ACTIVEBORDERREGEXP = /k-state-border-(\\w+)/,\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._hideDirClass();\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._showDirClass(animation);\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 _hideDirClass: function() {\n var anchor = $(this.options.anchor);\n var direction = ((anchor.attr(\"class\") || \"\").match(ACTIVEBORDERREGEXP) || [\"\", \"down\"])[1];\n var dirClass = ACTIVEBORDER + \"-\" + direction;\n\n anchor\n .removeClass(dirClass)\n .children(ACTIVECHILDREN)\n .removeClass(ACTIVE)\n .removeClass(dirClass);\n\n this.element.removeClass(ACTIVEBORDER + \"-\" + kendo.directions[direction].reverse);\n },\n\n _showDirClass: function(animation) {\n var direction = animation.effects.slideIn ? animation.effects.slideIn.direction : \"down\";\n var dirClass = ACTIVEBORDER + \"-\" + direction;\n\n $(this.options.anchor)\n .addClass(dirClass)\n .children(ACTIVECHILDREN)\n .addClass(ACTIVE)\n .addClass(dirClass);\n },\n\n position: function() {\n if (this.visible()) {\n this.flipped = this._position();\n //this._hideDirClass();\n //this._showDirClass(this._openAnimation());\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$K = kendo;\n\n var __meta__$J = {\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$J = kendo;\n\n var __meta__$I = {\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': function (element, options) { return new HTMLSvgIcon(element, options); },\n 'font': function (element, options) { return 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(function (x) { return 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(function (x) { return 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(function (x) { return x.includes(KSVG_PREFFIX); }),\n svgElm = $(''),\n className;\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 (kendo.isString(icon)) {\n // remove k-i- and convert kebab-case-icon to camelCaseIcon\n icon = icon.replace('k-i-', '').replace(/-./g, function (x){ return 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: function (type) { return 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$I = kendo;\n\n var caretTrIcon = {\n name: 'caret-tr',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretBrIcon = {\n name: 'caret-br',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretBlIcon = {\n name: 'caret-bl',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretTlIcon = {\n name: 'caret-tl',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltUpIcon = {\n name: 'caret-alt-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltRightIcon = {\n name: 'caret-alt-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltDownIcon = {\n name: 'caret-alt-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltLeftIcon = {\n name: 'caret-alt-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltToTopIcon = {\n name: 'caret-alt-to-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltToRightIcon = {\n name: 'caret-alt-to-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltToBottomIcon = {\n name: 'caret-alt-to-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltToLeftIcon = {\n name: 'caret-alt-to-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretDoubleAltUpIcon = {\n name: 'caret-double-alt-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretDoubleAltRightIcon = {\n name: 'caret-double-alt-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretDoubleAltDownIcon = {\n name: 'caret-double-alt-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretDoubleAltLeftIcon = {\n name: 'caret-double-alt-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltExpandIcon = {\n name: 'caret-alt-expand',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsNoChangeIcon = {\n name: 'arrows-no-change',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowOverflowDownIcon = {\n name: 'arrow-overflow-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronUpIcon = {\n name: 'chevron-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronRightIcon = {\n name: 'chevron-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronDownIcon = {\n name: 'chevron-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronLeftIcon = {\n name: 'chevron-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowUpIcon = {\n name: 'arrow-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowRightIcon = {\n name: 'arrow-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowDownIcon = {\n name: 'arrow-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowLeftIcon = {\n name: 'arrow-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var levelDownIcon = {\n name: 'level-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var levelUpIcon = {\n name: 'level-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var levelToTopIcon = {\n name: 'level-to-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var colResizeIcon = {\n name: 'col-resize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsAxesIcon = {\n name: 'arrows-axes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsSwapIcon = {\n name: 'arrows-swap',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dragAndDropIcon = {\n name: 'drag-and-drop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var categorizeIcon = {\n name: 'categorize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gridIcon = {\n name: 'grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gridLayoutIcon = {\n name: 'grid-layout',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var groupIcon = {\n name: 'group',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var ungroupIcon = {\n name: 'ungroup',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var handleDragIcon = {\n name: 'handle-drag',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var layoutIcon = {\n name: 'layout',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var layout1By4Icon = {\n name: 'layout-1-by-4',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var layout2By2Icon = {\n name: 'layout-2-by-2',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var layoutSideBySideIcon = {\n name: 'layout-side-by-side',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var layoutStackedIcon = {\n name: 'layout-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var columnsIcon = {\n name: 'columns',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rowsIcon = {\n name: 'rows',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var reorderIcon = {\n name: 'reorder',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var menuIcon = {\n name: 'menu',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var moreVerticalIcon = {\n name: 'more-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var moreHorizontalIcon = {\n name: 'more-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var overlapIcon = {\n name: 'overlap',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var homeIcon = {\n name: 'home',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsLeftRightIcon = {\n name: 'arrows-left-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsTopBottomIcon = {\n name: 'arrows-top-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderRadiusBottomLeftIcon = {\n name: 'border-radius-bottom-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderRadiusBottomRightIcon = {\n name: 'border-radius-bottom-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderRadiusTopLeftIcon = {\n name: 'border-radius-top-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderRadiusTopRightIcon = {\n name: 'border-radius-top-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderRadiusIcon = {\n name: 'border-radius',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderStyleBottomIcon = {\n name: 'border-style-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderStyleLeftIcon = {\n name: 'border-style-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderStyleRightIcon = {\n name: 'border-style-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderStyleTopIcon = {\n name: 'border-style-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderStyleIcon = {\n name: 'border-style',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var boxSizingIcon = {\n name: 'box-sizing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronDoubleDownIcon = {\n name: 'chevron-double-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronDoubleLeftIcon = {\n name: 'chevron-double-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronDoubleRightIcon = {\n name: 'chevron-double-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronDoubleUpIcon = {\n name: 'chevron-double-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataOdsIcon = {\n name: 'data-ods',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var nonRecurrenceIcon = {\n name: 'non-recurrence',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var displayBlockIcon = {\n name: 'display-block',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var displayFlexIcon = {\n name: 'display-flex',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var displayInlineFlexIcon = {\n name: 'display-inline-flex',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dropletSliderIcon = {\n name: 'droplet-slider',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileReportIcon = {\n name: 'file-report',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gapColumnIcon = {\n name: 'gap-column',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gapRowIcon = {\n name: 'gap-row',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var handleResizeAltIcon = {\n name: 'handle-resize-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var handleResizeIcon = {\n name: 'handle-resize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imagesIcon = {\n name: 'images',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var letterSpaceIcon = {\n name: 'letter-space',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var lineHeightIcon = {\n name: 'line-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listLatinBigIcon = {\n name: 'list-latin-big',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listLatinSmallIcon = {\n name: 'list-latin-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listRomanBigIcon = {\n name: 'list-roman-big',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listRomanSmallIcon = {\n name: 'list-roman-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listUnorderedOutlineIcon = {\n name: 'list-unordered-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listUnorderedSquareIcon = {\n name: 'list-unordered-square',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var maxHeightIcon = {\n name: 'max-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var maxWidthIcon = {\n name: 'max-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var minHeightIcon = {\n name: 'min-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var minWidthIcon = {\n name: 'min-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var outlineOffsetIcon = {\n name: 'outline-offset',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var outlineWidthIcon = {\n name: 'outline-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paddingBottomIcon = {\n name: 'padding-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paddingLeftIcon = {\n name: 'padding-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paddingRightIcon = {\n name: 'padding-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paddingTopIcon = {\n name: 'padding-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paddingIcon = {\n name: 'padding',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var positionBottomIcon = {\n name: 'position-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var positionLeftIcon = {\n name: 'position-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var positionRightIcon = {\n name: 'position-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var positionTopIcon = {\n name: 'position-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var regularExpressionIcon = {\n name: 'regular-expression',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var replaceAllIcon = {\n name: 'replace-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var replaceSingleIcon = {\n name: 'replace-single',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var reportElementIcon = {\n name: 'report-element',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rightDoubleQuotesIcon = {\n name: 'right-double-quotes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var wholeWordIcon = {\n name: 'whole-word',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataSdsIcon = {\n name: 'data-sds',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var downloadLightIcon = {\n name: 'download-light',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var eyeSlashIcon = {\n name: 'eye-slash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var displayInlineBlockIcon = {\n name: 'display-inline-block',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paperPlaneIcon = {\n name: 'paper-plane',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gaugeLinearIcon = {\n name: 'gauge-linear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gaugeRadialIcon = {\n name: 'gauge-radial',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var envelopeBoxIcon = {\n name: 'envelope-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var envelopeLinkIcon = {\n name: 'envelope-link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var envelopeIcon = {\n name: 'envelope',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var warningCircleIcon = {\n name: 'warning-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var warningTriangleIcon = {\n name: 'warning-triangle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var infoSolidIcon = {\n name: 'info-solid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fontGrowIcon = {\n name: 'font-grow',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fontShrinkIcon = {\n name: 'font-shrink',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textOverflowIcon = {\n name: 'text-overflow',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textWrapArrowIcon = {\n name: 'text-wrap-arrow',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textTruncateIcon = {\n name: 'text-truncate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textClipIcon = {\n name: 'text-clip',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderColorIcon = {\n name: 'border-color',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderTypeIcon = {\n name: 'border-type',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var thumbDownOutlineIcon = {\n name: 'thumb-down-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var thumbDownIcon = {\n name: 'thumb-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var thumbUpOutlineIcon = {\n name: 'thumb-up-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var thumbUpIcon = {\n name: 'thumb-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sparklesIcon = {\n name: 'sparkles',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var undoIcon = {\n name: 'undo',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var redoIcon = {\n name: 'redo',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowRotateCcwIcon = {\n name: 'arrow-rotate-ccw',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowRotateCwIcon = {\n name: 'arrow-rotate-cw',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsNoRepeatIcon = {\n name: 'arrows-no-repeat',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowRotateCcwSmallIcon = {\n name: 'arrow-rotate-ccw-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowRotateCwSmallIcon = {\n name: 'arrow-rotate-cw-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clockIcon = {\n name: 'clock',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var calendarIcon = {\n name: 'calendar',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var saveIcon = {\n name: 'save',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var printIcon = {\n name: 'print',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pencilIcon = {\n name: 'pencil',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trashIcon = {\n name: 'trash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paperclipIcon = {\n name: 'paperclip',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paperclipAltIcon = {\n name: 'paperclip-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var linkIcon = {\n name: 'link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var unlinkIcon = {\n name: 'unlink',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var linkVerticalIcon = {\n name: 'link-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var unlinkVerticalIcon = {\n name: 'unlink-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var lockIcon = {\n name: 'lock',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var unlockIcon = {\n name: 'unlock',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cancelIcon = {\n name: 'cancel',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cancelOutlineIcon = {\n name: 'cancel-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cancelCircleIcon = {\n name: 'cancel-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkIcon = {\n name: 'check',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkOutlineIcon = {\n name: 'check-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkCircleIcon = {\n name: 'check-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var xIcon = {\n name: 'x',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var xOutlineIcon = {\n name: 'x-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var xCircleIcon = {\n name: 'x-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var plusIcon = {\n name: 'plus',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var plusOutlineIcon = {\n name: 'plus-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var plusCircleIcon = {\n name: 'plus-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var minusIcon = {\n name: 'minus',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var minusOutlineIcon = {\n name: 'minus-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var minusCircleIcon = {\n name: 'minus-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sortAscIcon = {\n name: 'sort-asc',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sortDescIcon = {\n name: 'sort-desc',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sortClearIcon = {\n name: 'sort-clear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sortAscSmallIcon = {\n name: 'sort-asc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sortDescSmallIcon = {\n name: 'sort-desc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterIcon = {\n name: 'filter',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterClearIcon = {\n name: 'filter-clear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterSmallIcon = {\n name: 'filter-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterSortAscSmallIcon = {\n name: 'filter-sort-asc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterSortDescSmallIcon = {\n name: 'filter-sort-desc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterAddExpressionIcon = {\n name: 'filter-add-expression',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterAddGroupIcon = {\n name: 'filter-add-group',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var loginIcon = {\n name: 'login',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var logoutIcon = {\n name: 'logout',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var downloadIcon = {\n name: 'download',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var uploadIcon = {\n name: 'upload',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var hyperlinkOpenIcon = {\n name: 'hyperlink-open',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var hyperlinkOpenSmIcon = {\n name: 'hyperlink-open-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var launchIcon = {\n name: 'launch',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var windowIcon = {\n name: 'window',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var windowRestoreIcon = {\n name: 'window-restore',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var windowMinimizeIcon = {\n name: 'window-minimize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gearIcon = {\n name: 'gear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gearsIcon = {\n name: 'gears',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var wrenchIcon = {\n name: 'wrench',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var eyeIcon = {\n name: 'eye',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var searchIcon = {\n name: 'search',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var zoomInIcon = {\n name: 'zoom-in',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var zoomOutIcon = {\n name: 'zoom-out',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsMoveIcon = {\n name: 'arrows-move',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var calculatorIcon = {\n name: 'calculator',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cartIcon = {\n name: 'cart',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var connectorIcon = {\n name: 'connector',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var plusSmIcon = {\n name: 'plus-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var minusSmIcon = {\n name: 'minus-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var kpiStatusDenyIcon = {\n name: 'kpi-status-deny',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var kpiStatusHoldIcon = {\n name: 'kpi-status-hold',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var kpiStatusOpenIcon = {\n name: 'kpi-status-open',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var equalIcon = {\n name: 'equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var notEqualIcon = {\n name: 'not-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var lessOrEqualIcon = {\n name: 'less-or-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var greaterOrEqualIcon = {\n name: 'greater-or-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var divideIcon = {\n name: 'divide',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var accessibilityIcon = {\n name: 'accessibility',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var barcodeOutlineIcon = {\n name: 'barcode-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var barcodeIcon = {\n name: 'barcode',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var barcodeScannerIcon = {\n name: 'barcode-scanner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var qrCodeOutlineIcon = {\n name: 'qr-code-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var qrCodeIcon = {\n name: 'qr-code',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var qrCodeScannerIcon = {\n name: 'qr-code-scanner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var barcodeQrCodeScannerIcon = {\n name: 'barcode-qr-code-scanner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var signatureIcon = {\n name: 'signature',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var handIcon = {\n name: 'hand',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pointerIcon = {\n name: 'pointer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stickIcon = {\n name: 'stick',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var unstickIcon = {\n name: 'unstick',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var setColumnPositionIcon = {\n name: 'set-column-position',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clockArrowRotateIcon = {\n name: 'clock-arrow-rotate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var playIcon = {\n name: 'play',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pauseIcon = {\n name: 'pause',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stopIcon = {\n name: 'stop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rewindIcon = {\n name: 'rewind',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var forwardIcon = {\n name: 'forward',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var volumeDownIcon = {\n name: 'volume-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var volumeUpIcon = {\n name: 'volume-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var volumeMuteIcon = {\n name: 'volume-mute',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var hdIcon = {\n name: 'hd',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var closedCaptionsIcon = {\n name: 'closed-captions',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var playlistIcon = {\n name: 'playlist',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var musicNotesIcon = {\n name: 'music-notes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var playSmIcon = {\n name: 'play-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pauseSmIcon = {\n name: 'pause-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stopSmIcon = {\n name: 'stop-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var heartOutlineIcon = {\n name: 'heart-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var heartIcon = {\n name: 'heart',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var starOutlineIcon = {\n name: 'star-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var starIcon = {\n name: 'star',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkboxIcon = {\n name: 'checkbox',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkboxCheckedIcon = {\n name: 'checkbox-checked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkboxIndeterminateIcon = {\n name: 'checkbox-indeterminate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkboxNullIcon = {\n name: 'checkbox-null',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var circleIcon = {\n name: 'circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var radiobuttonIcon = {\n name: 'radiobutton',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var radiobuttonCheckedIcon = {\n name: 'radiobutton-checked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bellIcon = {\n name: 'bell',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var infoCircleIcon = {\n name: 'info-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var questionCircleIcon = {\n name: 'question-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var exclamationCircleIcon = {\n name: 'exclamation-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cameraIcon = {\n name: 'camera',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageIcon = {\n name: 'image',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageExportIcon = {\n name: 'image-export',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var zoomActualSizeIcon = {\n name: 'zoom-actual-size',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var zoomBestFitIcon = {\n name: 'zoom-best-fit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageResizeIcon = {\n name: 'image-resize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cropIcon = {\n name: 'crop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var mirrorIcon = {\n name: 'mirror',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var flipHorizontalIcon = {\n name: 'flip-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var flipVerticalIcon = {\n name: 'flip-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rotateIcon = {\n name: 'rotate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rotateRightIcon = {\n name: 'rotate-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rotateLeftIcon = {\n name: 'rotate-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var brushIcon = {\n name: 'brush',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paletteIcon = {\n name: 'palette',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dropletIcon = {\n name: 'droplet',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var shapeLineIcon = {\n name: 'shape-line',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var brightnessContrastIcon = {\n name: 'brightness-contrast',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var slidersIcon = {\n name: 'sliders',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var invertColorsIcon = {\n name: 'invert-colors',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var transparencyIcon = {\n name: 'transparency',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var grayscaleIcon = {\n name: 'grayscale',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var blurIcon = {\n name: 'blur',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sharpenIcon = {\n name: 'sharpen',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var shapesIcon = {\n name: 'shapes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var roundCornersIcon = {\n name: 'round-corners',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bringToFrontIcon = {\n name: 'bring-to-front',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bringToBackIcon = {\n name: 'bring-to-back',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bringForwardIcon = {\n name: 'bring-forward',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bringBackwardIcon = {\n name: 'bring-backward',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfStartIcon = {\n name: 'align-self-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfCenterIcon = {\n name: 'align-self-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfEndIcon = {\n name: 'align-self-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfStartAltIcon = {\n name: 'align-self-start-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfCenterAltIcon = {\n name: 'align-self-center-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfEndAltIcon = {\n name: 'align-self-end-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var thumbnailsUpIcon = {\n name: 'thumbnails-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var thumbnailsRightIcon = {\n name: 'thumbnails-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var thumbnailsDownIcon = {\n name: 'thumbnails-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var thumbnailsLeftIcon = {\n name: 'thumbnails-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fullscreenIcon = {\n name: 'fullscreen',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fullscreenExitIcon = {\n name: 'fullscreen-exit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dropletSlashIcon = {\n name: 'droplet-slash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var photosIcon = {\n name: 'photos',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignToGridIcon = {\n name: 'align-to-grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sizeToGridIcon = {\n name: 'size-to-grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var makeSameSizeIcon = {\n name: 'make-same-size',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var makeSameWidthIcon = {\n name: 'make-same-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var makeSameHeightIcon = {\n name: 'make-same-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var makeHorizontalSpacingEqualIcon = {\n name: 'make-horizontal-spacing-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var increaseHorizontalSpacingIcon = {\n name: 'increase-horizontal-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var decreaseHorizontalSpacingIcon = {\n name: 'decrease-horizontal-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var removeHorizontalSpacingIcon = {\n name: 'remove-horizontal-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var makeVerticalSpacingEqualIcon = {\n name: 'make-vertical-spacing-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var increaseVerticalSpacingIcon = {\n name: 'increase-vertical-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var decreaseVerticalSpacingIcon = {\n name: 'decrease-vertical-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var removeVerticalSpacingIcon = {\n name: 'remove-vertical-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var eyedropperIcon = {\n name: 'eyedropper',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var snapGridIcon = {\n name: 'snap-grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var snapToGridlinesIcon = {\n name: 'snap-to-gridlines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var snapToSnaplinesIcon = {\n name: 'snap-to-snaplines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dimensionsIcon = {\n name: 'dimensions',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfStretchIcon = {\n name: 'align-self-stretch',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfStretchAltIcon = {\n name: 'align-self-stretch-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsStartIcon = {\n name: 'align-items-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsCenterIcon = {\n name: 'align-items-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsEndIcon = {\n name: 'align-items-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsStretchIcon = {\n name: 'align-items-stretch',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsBaselineIcon = {\n name: 'align-items-baseline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsStartAltIcon = {\n name: 'align-items-start-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsCenterAltIcon = {\n name: 'align-items-center-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsEndAltIcon = {\n name: 'align-items-end-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsStretchAltIcon = {\n name: 'align-items-stretch-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsBaselineAltIcon = {\n name: 'align-items-baseline-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentStartIcon = {\n name: 'justify-content-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentCenterIcon = {\n name: 'justify-content-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentEndIcon = {\n name: 'justify-content-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentBetweenIcon = {\n name: 'justify-content-between',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentAroundIcon = {\n name: 'justify-content-around',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentStartAltIcon = {\n name: 'justify-content-start-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentCenterAltIcon = {\n name: 'justify-content-center-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentEndAltIcon = {\n name: 'justify-content-end-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentBetweenAltIcon = {\n name: 'justify-content-between-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentAroundAltIcon = {\n name: 'justify-content-around-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileWrenchIcon = {\n name: 'file-wrench',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var boldIcon = {\n name: 'bold',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var italicIcon = {\n name: 'italic',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var underlineIcon = {\n name: 'underline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fontFamilyIcon = {\n name: 'font-family',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var foregroundColorIcon = {\n name: 'foreground-color',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var convertLowercaseIcon = {\n name: 'convert-lowercase',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var convertUppercaseIcon = {\n name: 'convert-uppercase',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var strikethroughIcon = {\n name: 'strikethrough',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var subscriptIcon = {\n name: 'subscript',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var supscriptIcon = {\n name: 'supscript',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var divIcon = {\n name: 'div',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var allIcon = {\n name: 'all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var h1Icon = {\n name: 'h1',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var h2Icon = {\n name: 'h2',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var h3Icon = {\n name: 'h3',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var h4Icon = {\n name: 'h4',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var h5Icon = {\n name: 'h5',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var h6Icon = {\n name: 'h6',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listOrderedIcon = {\n name: 'list-ordered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listUnorderedIcon = {\n name: 'list-unordered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var indentIcon = {\n name: 'indent',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var outdentIcon = {\n name: 'outdent',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var insertTopIcon = {\n name: 'insert-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var insertMiddleIcon = {\n name: 'insert-middle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var insertBottomIcon = {\n name: 'insert-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignTopIcon = {\n name: 'align-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignMiddleIcon = {\n name: 'align-middle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignBottomIcon = {\n name: 'align-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignLeftIcon = {\n name: 'align-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignCenterIcon = {\n name: 'align-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignRightIcon = {\n name: 'align-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignJustifyIcon = {\n name: 'align-justify',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignRemoveIcon = {\n name: 'align-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textWrapIcon = {\n name: 'text-wrap',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var horizontalRuleIcon = {\n name: 'horizontal-rule',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignTopLeftIcon = {\n name: 'table-align-top-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignTopCenterIcon = {\n name: 'table-align-top-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignTopRightIcon = {\n name: 'table-align-top-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignMiddleLeftIcon = {\n name: 'table-align-middle-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignMiddleCenterIcon = {\n name: 'table-align-middle-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignMiddleRightIcon = {\n name: 'table-align-middle-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignBottomLeftIcon = {\n name: 'table-align-bottom-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignBottomCenterIcon = {\n name: 'table-align-bottom-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignBottomRightIcon = {\n name: 'table-align-bottom-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignRemoveIcon = {\n name: 'table-align-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersAllIcon = {\n name: 'borders-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersOutsideIcon = {\n name: 'borders-outside',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersInsideIcon = {\n name: 'borders-inside',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersInsideHorizontalIcon = {\n name: 'borders-inside-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersInsideVerticalIcon = {\n name: 'borders-inside-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderTopIcon = {\n name: 'border-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderBottomIcon = {\n name: 'border-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderLeftIcon = {\n name: 'border-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderRightIcon = {\n name: 'border-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersNoneIcon = {\n name: 'borders-none',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersShowHideIcon = {\n name: 'borders-show-hide',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var formIcon = {\n name: 'form',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var formElementIcon = {\n name: 'form-element',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var codeSnippetIcon = {\n name: 'code-snippet',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var selectAllIcon = {\n name: 'select-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var buttonIcon = {\n name: 'button',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var selectBoxIcon = {\n name: 'select-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var calendarDateIcon = {\n name: 'calendar-date',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var groupBoxIcon = {\n name: 'group-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textareaIcon = {\n name: 'textarea',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textboxIcon = {\n name: 'textbox',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textboxHiddenIcon = {\n name: 'textbox-hidden',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var passwordIcon = {\n name: 'password',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paragraphAddIcon = {\n name: 'paragraph-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var editToolsIcon = {\n name: 'edit-tools',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var templateManagerIcon = {\n name: 'template-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var changeManuallyIcon = {\n name: 'change-manually',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trackChangesIcon = {\n name: 'track-changes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trackChangesEnableIcon = {\n name: 'track-changes-enable',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trackChangesAcceptIcon = {\n name: 'track-changes-accept',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trackChangesAcceptAllIcon = {\n name: 'track-changes-accept-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trackChangesRejectIcon = {\n name: 'track-changes-reject',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trackChangesRejectAllIcon = {\n name: 'track-changes-reject-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var documentManagerIcon = {\n name: 'document-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var customIconIcon = {\n name: 'custom-icon',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bookIcon = {\n name: 'book',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageAddIcon = {\n name: 'image-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageEditIcon = {\n name: 'image-edit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageMapEditorIcon = {\n name: 'image-map-editor',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var commentIcon = {\n name: 'comment',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var commentRemoveIcon = {\n name: 'comment-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var commentsRemoveIcon = {\n name: 'comments-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var silverlightIcon = {\n name: 'silverlight',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var mediaManagerIcon = {\n name: 'media-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var videoExternalIcon = {\n name: 'video-external',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var flashManagerIcon = {\n name: 'flash-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var binocularsIcon = {\n name: 'binoculars',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var copyIcon = {\n name: 'copy',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cutIcon = {\n name: 'cut',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardIcon = {\n name: 'clipboard',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardCodeIcon = {\n name: 'clipboard-code',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardWordIcon = {\n name: 'clipboard-word',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardWordAltIcon = {\n name: 'clipboard-word-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardHtmlIcon = {\n name: 'clipboard-html',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardMarkdownIcon = {\n name: 'clipboard-markdown',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardTextIcon = {\n name: 'clipboard-text',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var applyFormatIcon = {\n name: 'apply-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clearCssIcon = {\n name: 'clear-css',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var copyFormatIcon = {\n name: 'copy-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stripAllFormattingIcon = {\n name: 'strip-all-formatting',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stripCssFormatIcon = {\n name: 'strip-css-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stripFontElementsIcon = {\n name: 'strip-font-elements',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stripSpanElementsIcon = {\n name: 'strip-span-elements',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stripWordFormattingIcon = {\n name: 'strip-word-formatting',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var formatCodeBlockIcon = {\n name: 'format-code-block',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var buildingBlocksIcon = {\n name: 'building-blocks',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var puzzlePieceIcon = {\n name: 'puzzle-piece',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var linkAddIcon = {\n name: 'link-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var globeLinkIcon = {\n name: 'globe-link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var globeUnlinkIcon = {\n name: 'globe-unlink',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var envelopLinkIcon = {\n name: 'envelop-link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var anchorIcon = {\n name: 'anchor',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAddIcon = {\n name: 'table-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableIcon = {\n name: 'table',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tablePropertiesIcon = {\n name: 'table-properties',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableCellIcon = {\n name: 'table-cell',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableCellPropertiesIcon = {\n name: 'table-cell-properties',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableColumnInsertLeftIcon = {\n name: 'table-column-insert-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableColumnInsertRightIcon = {\n name: 'table-column-insert-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableRowInsertAboveIcon = {\n name: 'table-row-insert-above',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableRowInsertBelowIcon = {\n name: 'table-row-insert-below',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableColumnDeleteIcon = {\n name: 'table-column-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableRowDeleteIcon = {\n name: 'table-row-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableCellDeleteIcon = {\n name: 'table-cell-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableDeleteIcon = {\n name: 'table-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cellsMergeIcon = {\n name: 'cells-merge',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cellsMergeHorizontallyIcon = {\n name: 'cells-merge-horizontally',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cellsMergeVerticallyIcon = {\n name: 'cells-merge-vertically',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cellSplitHorizontallyIcon = {\n name: 'cell-split-horizontally',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cellSplitVerticallyIcon = {\n name: 'cell-split-vertically',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableUnmergeIcon = {\n name: 'table-unmerge',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paneFreezeIcon = {\n name: 'pane-freeze',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rowFreezeIcon = {\n name: 'row-freeze',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var columnFreezeIcon = {\n name: 'column-freeze',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var toolbarFloatIcon = {\n name: 'toolbar-float',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var spellCheckerIcon = {\n name: 'spell-checker',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var validationXhtmlIcon = {\n name: 'validation-xhtml',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var validationDataIcon = {\n name: 'validation-data',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var toggleFullScreenModeIcon = {\n name: 'toggle-full-screen-mode',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var formulaFxIcon = {\n name: 'formula-fx',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sumIcon = {\n name: 'sum',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var symbolIcon = {\n name: 'symbol',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dollarIcon = {\n name: 'dollar',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var percentIcon = {\n name: 'percent',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var customFormatIcon = {\n name: 'custom-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var decimalIncreaseIcon = {\n name: 'decimal-increase',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var decimalDecreaseIcon = {\n name: 'decimal-decrease',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fontSizeIcon = {\n name: 'font-size',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageAbsolutePositionIcon = {\n name: 'image-absolute-position',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableWizardIcon = {\n name: 'table-wizard',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var crosstabIcon = {\n name: 'crosstab',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var crosstabWizardIcon = {\n name: 'crosstab-wizard',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableBodyIcon = {\n name: 'table-body',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableColumnGroupsIcon = {\n name: 'table-column-groups',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableCornerIcon = {\n name: 'table-corner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableRowGroupsIcon = {\n name: 'table-row-groups',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var globeOutlineIcon = {\n name: 'globe-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var globeIcon = {\n name: 'globe',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var mapMarkerIcon = {\n name: 'map-marker',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var mapMarkerTargetIcon = {\n name: 'map-marker-target',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pinIcon = {\n name: 'pin',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var unpinIcon = {\n name: 'unpin',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var shareIcon = {\n name: 'share',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var userIcon = {\n name: 'user',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var inboxIcon = {\n name: 'inbox',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bloggerIcon = {\n name: 'blogger',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bloggerBoxIcon = {\n name: 'blogger-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var deliciousIcon = {\n name: 'delicious',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var deliciousBoxIcon = {\n name: 'delicious-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var diggIcon = {\n name: 'digg',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var diggBoxIcon = {\n name: 'digg-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var envelopIcon = {\n name: 'envelop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var envelopBoxIcon = {\n name: 'envelop-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var facebookIcon = {\n name: 'facebook',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var facebookBoxIcon = {\n name: 'facebook-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var googleIcon = {\n name: 'google',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var googleBoxIcon = {\n name: 'google-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var googlePlusIcon = {\n name: 'google-plus',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var googlePlusBoxIcon = {\n name: 'google-plus-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var linkedinIcon = {\n name: 'linkedin',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var linkedinBoxIcon = {\n name: 'linkedin-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var myspaceIcon = {\n name: 'myspace',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var myspaceBoxIcon = {\n name: 'myspace-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pinterestIcon = {\n name: 'pinterest',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pinterestBoxIcon = {\n name: 'pinterest-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var redditIcon = {\n name: 'reddit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var redditBoxIcon = {\n name: 'reddit-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stumbleUponIcon = {\n name: 'stumble-upon',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stumbleUponBoxIcon = {\n name: 'stumble-upon-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tellAFriendIcon = {\n name: 'tell-a-friend',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tellAFriendBoxIcon = {\n name: 'tell-a-friend-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tumblrIcon = {\n name: 'tumblr',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tumblrBoxIcon = {\n name: 'tumblr-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var twitterIcon = {\n name: 'twitter',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var twitterBoxIcon = {\n name: 'twitter-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var yammerIcon = {\n name: 'yammer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var yammerBoxIcon = {\n name: 'yammer-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var behanceIcon = {\n name: 'behance',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var behanceBoxIcon = {\n name: 'behance-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dribbbleIcon = {\n name: 'dribbble',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dribbbleBoxIcon = {\n name: 'dribbble-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rssIcon = {\n name: 'rss',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rssBoxIcon = {\n name: 'rss-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var vimeoIcon = {\n name: 'vimeo',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var vimeoBoxIcon = {\n name: 'vimeo-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var youtubeIcon = {\n name: 'youtube',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var youtubeBoxIcon = {\n name: 'youtube-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var folderIcon = {\n name: 'folder',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var folderOpenIcon = {\n name: 'folder-open',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var folderAddIcon = {\n name: 'folder-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var folderUpIcon = {\n name: 'folder-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var folderMoreIcon = {\n name: 'folder-more',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var aggregateFieldsIcon = {\n name: 'aggregate-fields',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileIcon = {\n name: 'file',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileAddIcon = {\n name: 'file-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileTxtIcon = {\n name: 'file-txt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileCsvIcon = {\n name: 'file-csv',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileExcelIcon = {\n name: 'file-excel',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileWordIcon = {\n name: 'file-word',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileMdbIcon = {\n name: 'file-mdb',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filePptIcon = {\n name: 'file-ppt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filePdfIcon = {\n name: 'file-pdf',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filePsdIcon = {\n name: 'file-psd',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileFlashIcon = {\n name: 'file-flash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileConfigIcon = {\n name: 'file-config',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileAscxIcon = {\n name: 'file-ascx',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileBacIcon = {\n name: 'file-bac',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileZipIcon = {\n name: 'file-zip',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filmIcon = {\n name: 'film',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var css3Icon = {\n name: 'css3',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var html5Icon = {\n name: 'html5',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var codeIcon = {\n name: 'code',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cssIcon = {\n name: 'css',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var jsIcon = {\n name: 'js',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var exeIcon = {\n name: 'exe',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var csprojIcon = {\n name: 'csproj',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var vbprojIcon = {\n name: 'vbproj',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var csIcon = {\n name: 'cs',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var vbIcon = {\n name: 'vb',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var slnIcon = {\n name: 'sln',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cloudIcon = {\n name: 'cloud',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileHorizontalIcon = {\n name: 'file-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var subreportIcon = {\n name: 'subreport',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataIcon = {\n name: 'data',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileHeaderIcon = {\n name: 'file-header',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileFooterIcon = {\n name: 'file-footer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var groupHeaderSectionIcon = {\n name: 'group-header-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var groupFooterSectionIcon = {\n name: 'group-footer-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pageHeaderSectionIcon = {\n name: 'page-header-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pageFooterSectionIcon = {\n name: 'page-footer-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var detailSectionIcon = {\n name: 'detail-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tocSectionIcon = {\n name: 'toc-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var groupSectionIcon = {\n name: 'group-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parametersIcon = {\n name: 'parameters',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataCsvIcon = {\n name: 'data-csv',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataJsonIcon = {\n name: 'data-json',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataSqlIcon = {\n name: 'data-sql',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataWebIcon = {\n name: 'data-web',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var groupCollectionIcon = {\n name: 'group-collection',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parameterBooleanIcon = {\n name: 'parameter-boolean',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parameterDateTimeIcon = {\n name: 'parameter-date-time',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parameterFloatIcon = {\n name: 'parameter-float',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parameterIntegerIcon = {\n name: 'parameter-integer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parameterStringIcon = {\n name: 'parameter-string',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tocSectionLevelIcon = {\n name: 'toc-section-level',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var inheritedIcon = {\n name: 'inherited',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileVideoIcon = {\n name: 'file-video',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileAudioIcon = {\n name: 'file-audio',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileImageIcon = {\n name: 'file-image',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filePresentationIcon = {\n name: 'file-presentation',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileDataIcon = {\n name: 'file-data',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileDiscImageIcon = {\n name: 'file-disc-image',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileProgrammingIcon = {\n name: 'file-programming',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parametersByteArrayIcon = {\n name: 'parameters-byte-array',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parametersUnknownIcon = {\n name: 'parameters-unknown',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileErrorIcon = {\n name: 'file-error',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filesErrorIcon = {\n name: 'files-error',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataRestIcon = {\n name: 'data-rest',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileTypescriptIcon = {\n name: 'file-typescript',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tablePositionStartIcon = {\n name: 'table-position-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tablePositionCenterIcon = {\n name: 'table-position-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tablePositionEndIcon = {\n name: 'table-position-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listRomanUpperIcon = {\n name: 'list-roman-upper',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listRomanLowerIcon = {\n name: 'list-roman-lower',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var importIcon = {\n name: 'import',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var exportIcon = {\n name: 'export',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var graphIcon = {\n name: 'graph',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartColumnClusteredIcon = {\n name: 'chart-column-clustered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartColumnStackedIcon = {\n name: 'chart-column-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartColumnStacked100Icon = {\n name: 'chart-column-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartColumnRangeIcon = {\n name: 'chart-column-range',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartBarClusteredIcon = {\n name: 'chart-bar-clustered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartBarStackedIcon = {\n name: 'chart-bar-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartBarStacked100Icon = {\n name: 'chart-bar-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartBarRangeIcon = {\n name: 'chart-bar-range',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartAreaClusteredIcon = {\n name: 'chart-area-clustered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartAreaStackedIcon = {\n name: 'chart-area-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartAreaStacked100Icon = {\n name: 'chart-area-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartAreaRangeIcon = {\n name: 'chart-area-range',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartLineIcon = {\n name: 'chart-line',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartLineStackedIcon = {\n name: 'chart-line-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartLineStacked100Icon = {\n name: 'chart-line-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartLineMarkersIcon = {\n name: 'chart-line-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartLineStackedMarkersIcon = {\n name: 'chart-line-stacked-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartLineStacked100MarkersIcon = {\n name: 'chart-line-stacked100-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartPieIcon = {\n name: 'chart-pie',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartDoughnutIcon = {\n name: 'chart-doughnut',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartScatterIcon = {\n name: 'chart-scatter',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartScatterSmoothLinesMarkersIcon = {\n name: 'chart-scatter-smooth-lines-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartScatterSmoothLinesIcon = {\n name: 'chart-scatter-smooth-lines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartScatterStraightLinesMarkersIcon = {\n name: 'chart-scatter-straight-lines-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartScatterStraightLinesIcon = {\n name: 'chart-scatter-straight-lines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartBubbleIcon = {\n name: 'chart-bubble',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartCandlestickIcon = {\n name: 'chart-candlestick',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartOhlcIcon = {\n name: 'chart-ohlc',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartRadarIcon = {\n name: 'chart-radar',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartRadarMarkersIcon = {\n name: 'chart-radar-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartRadarFilledIcon = {\n name: 'chart-radar-filled',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartRoseIcon = {\n name: 'chart-rose',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var 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 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 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__$H = {\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$H = kendo;\n\n var __meta__$G = {\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 = function (ref) {\n var autoHide = ref.autoHide;\n var callout = ref.callout;\n var dir = ref.dir;\n\n return \"
    \" +\n '
    ' +\n (!autoHide ? (\"
    \" + (kendo.ui.icon($(''), { icon: \"x\" })) + \"
    \") : '') +\n (callout ? (\"
    \") : '') +\n '
    ';\n },\n IFRAMETEMPLATE = kendo.template(function (ref) {\n var content = ref.content;\n\n return \"\";\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()) {\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: function _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$G = 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__$F = {\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\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 arguments$1 = arguments;\n\n var points = [], len = arguments.length;\n while ( len-- ) { points[ len ] = arguments$1[ 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\", value);\n } else {\n this.removeAttr(\"aria-label\");\n }\n } else if (field === \"ariaRoleDescription\") {\n if (value) {\n this.attr(\"aria-roledescription\", value);\n } else {\n this.removeAttr(\"aria-roledescription\");\n }\n } else if (field === \"ariaChecked\") {\n if (defined(value)) {\n this.attr(\"aria-checked\", value);\n } else {\n this.removeAttr(\"aria-checked\");\n }\n } else if (field === \"className\") {\n this.className(value);\n }\n };\n\n 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 return renderAttr(\"aria-label\", this.srcElement.options.ariaLabel);\n };\n\n Node.prototype.renderAriaRoleDescription = function renderAriaRoleDescription () {\n return renderAttr(\"aria-roledescription\", this.srcElement.options.ariaRoleDescription);\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 = kendo.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 = kendo.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 = kendo.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.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\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 (this.setFill(ctx)) {\n ctx.fillText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n if (this.setStroke(ctx)) {\n this.setLineDash(ctx);\n ctx.strokeText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n ctx.restore();\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 var clone = this.element.clone().appendTo(document.body).css({ visibility: 'hidden' });\n var width = outerWidth(clone);\n var 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__$E = {\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 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 \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 arguments$1 = arguments;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) { args[ len ] = arguments$1[ 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 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 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 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\n this.visual = new DrawingText(this.content, this.box.toRect().topLeft(), {\n font: font,\n fill: { color: color, opacity: opacity },\n cursor: cursor\n });\n }\n });\n\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 arguments$1 = arguments;\n\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) { values[ len ] = arguments$1[ 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 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__$D = {\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$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 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__$C = {\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$E = 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\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 (stack === true && otherStack !== true) {\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 = stack ? stack.group || stack : 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\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\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\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 _pointsByHorizontal: function(basePoint) {\n return [basePoint];\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\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 legendInFocus = ref._focusState.legendInFocus;\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 (!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 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 }\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\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 _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 tooltip = ref._tooltip;\n var highlight = ref._highlight;\n\n this._activePoint = null;\n this._hoveredPoint = null;\n\n if (tooltip && !(options && options.keepTooltipOpen)) {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n\n if (highlight) {\n highlight.hide();\n }\n },\n\n _deferRedraw: 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__$B = {\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 k-breadcrumb-wrap\",\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($(\"