{"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","wrapResize","element","autosize","shouldCorrectWidth","outerWidth","_outerWidth","outerHeight","_outerHeight","parent","wrapper","closest","visible","is","wrapperStyle","style","elementHeight","height","css","display","position","test","width","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","calendar","groupInteger","start","integer","integerLength","newGroupSize","decimalIndex","indexOf","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","includeMargin","nonBreakingSpaceRegExp","spaceRegExp","exponentRegExp","shortTimeZoneRegExp","longTimeZoneRegExp","dateRegExp","offsetRegExp","FORMATS_SEQUENCE","STANDARD_FORMATS","outOfRange","designatorPredicate","designator","mapDesignators","designators","map","lowerArray","array","lowerLocalInfo","localInfo","newLocalInfo","parseExact","strict","shouldUnpadZeros","count","pmHour","UTC","amDesignators","pmDesignators","hoursOffset","minutesOffset","lookAhead","getNumber","rg","valueIdx","isInteger","unpadZero","substr","getIndexByName","lower","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","sort","b","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","percentage","windowOuterWidth","removeClass","hasClass","percentWidth","percentHeight","forceWidth","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","remove","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","from","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","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","appendTo","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","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","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","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","_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","_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","allCss","classList","mapTransform","renderTransform","transformChange","mapStyle","cursor","renderOpacity","renderId","renderClassName","renderRole","renderAriaLabel","renderAriaRoleDescription","ariaRoleDescription","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","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","renderPath","ctx","prevOut","bezierCurveTo","Node$2","initClip","clearClip","setClip","beginPath","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","_resetCursor","_shapeCursor","_current","_defaultCursor","_getCursor","_setCursor","PathNode$2","renderPoints","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","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","fontSize","lineHeight","paddingRight","fontFamily","disc","circle","square","drawBullet","clipit","isFormField","exportDOMVisual","wrap$$1","maybeRenderWidget","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","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","rectSize","drawDOM","defineFont","doOne","cls","avoidLinks","forceBreak","forcePageBreak","hasPaperSize","paperSize","paperOptions","getPaperOptions","pageWidth","pageHeight","hasMargin","multiPage","_ignoreMargin","makeTemplate","pages","_destructive","adjust","tfoot","ol","li","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","COORD_PRECISION","DEFAULT_HEIGHT","DEFAULT_WIDTH","HIGHLIGHT_ZINDEX","INHERIT","DEFAULT_SERIES_OPACITY","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","DELETED","LegacySet","_index","_values","has","delete","SetWrapper","Set","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","createGradientOverlay","gradientOptions","overlay","createGradient","supportsPointInactiveOpacity","BoxElement","shrinkToFit","hasSetSize","borderWidth","border","reflowPaddingBox","paddingBox","contentBox","hasBox","visualStyle","ShapeElement","pointData","getElement","borderRadius","visualOptions","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","line","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","mapCategories","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","i$1","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","field$1","hasClasses","interpolateValue","mousewheelDelta","iconElement","iconOptions","predicate","autoTextColor","createHashSet","supported","defaultErrorHandler","lteDateIndex","sortedDates","high","SASS_THEMES","ExportMixin","skipLegacy","exportPDF","imageDataURL","Point2D","Box2D","mwDelta","TRENDLINE_SERIES","BAR_GAP","BAR_SPACING","BLACK$$1","SANS","SANS11","SANS12","SANS16","TRANSPARENT","WHITE$$1","boxPlotSeries","outliersField","meanField","_brightness","downColor","whiskers","mean","median","bulletSeries","waterfallSeries","funnelSeries","pyramidSeries","seriesDefaults","area","markers","rangeArea","verticalRangeArea","bar","boxPlot","bubble","candlestick","column","heatmap","pie","donut","funnel","pyramid","horizontalWaterfall","ohlc","radarArea","radarLine","polarArea","polarLine","rangeBar","rangeColumn","scatterLine","verticalArea","verticalBoxPlot","verticalBullet","verticalLine","waterfall","trendline","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","scatter","chartArea","seriesColors","crosshair","rangePlaceholderColor","connectorDefaults","thumb","connectors","INACTIVE","INACTIVE_SHAPE","AXIS","PRIMARY","DIAGRAM_HOVER","noteStyle","sass","datavizConstants","GeometryPoint","ChartAxis","_axis","findAxisByName","ChartPane","chartsVisual","chartContainer","_pane","ChartPlotArea","_plotArea","backgroundVisual","_bgVisual","countNumbers","Aggregates","sumOrNull","avg","getField","row","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_LINEAR","TRENDLINE_MOVING_AVERAGE","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","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","getDateField","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","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","labelText","formatValue","markerBorder","markerBox","_childBox","childBox","reflowLabel","noteTargetBox","defaultColor","highlightVisual","halfSize","tooltipAnchor","clipBox","verticalAlign","horizontalAlign","overlapsBox","unclipElements","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","Bar","rectVisual","createRect","strokeOpacity","getBorderColor","baseColor","borderColor","ClusterLayout","slots","slotSize","StackWrap","positionAxis","BarChart","clusterType","stackType","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","CandlestickChart","splitValue","BoxPlot","whiskerSlot","boxSlot","q1","q3","reflowBoxSlot","reflowWhiskerSlot","medianSlot","meanSlot","meanPoints","calcMeanPoints","whiskerPoints","calcWhiskerPoints","medianPoints","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","WeakMap","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","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","i$2","currentPane$2","backgroundBox","axesCount","axisA","axisB","chartsBoxes","addBackgroundPaths","multipath","backgroundContainsPoint","pointsByCategoryIndex","pointsBySeriesIndex","seriesIndex","filterPoints","pointsBySeriesName","findPoint","paneByPoint","detachAxisGroupLabels","labelAxisCount","labelAxis","createLabelAxis","onAxis","isTrendline","trendlineFactory","createTrendlineSeries","modifiedSeries","forSeries","seriesByName","for","trendlineSeries","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","_createLabel","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","calculateMovingAverage","period","averagePoints","lastValue","valueGetter$1","seriesValues","currentRange","getData","categoryField","calculatePoints","getData$1","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","getFn","aggregator","categoryItem","categoryIdx","categoriesToAdd","defaultPaneName","stackableChartOptions","firstSeries","categoryAxes","axisSeries","groupSeries","barChart","rangeColumnChart","bulletChart","lineChart","areaChart","rangeAreaChart","waterfallChart","axisRequiresRounding","categoryAxisName","categoryAxisIndex","centeredSeries","seriesAxis","aggregatedAxis","primaryAxis","tracker","defaultRange","baseOptions","defaultAxisRange","eventType","_eventCoordinates","pointPane","updateAxisOptions","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","MousewheelZoom","rate","updateRanges","LegendLayout","legendItem","LegendItem","createContainer","markerOptions","eventSink","_itemOverlay","_legendItemHover","pointIndex","_unsetActivePoint","HORIZONTAL","CUSTOM","Legend","createContainers","createLegendTitle","createItems","userAlign","hasTitle","itemsContainer","innerElement","hasItems","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","scatterValueGetter","scatterRegistry","samplingInterval","getData$2","getData$3","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","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","COLOR","FIRST","MAX","MIN","NOTE_TEXT","errorLow","errorHigh","AXIS_NAMES","MOUSEMOVE","CONTEXTMENU","MOUSELEAVE","Chart","themeOptions","_initElement","_originalOptions","_theme","_initTheme","_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","_createTooltip","_createPannable","_createZoomSelection","_createMousewheelZoom","triggerPaneRender","_navState","_cancelDomEvents","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","_mouseover","_mouseout","_toDocumentCoordinates","_updateDrilldownPoint","_resetDrilldownPoint","_startDrilldown","obj$1","_shouldAttachMouseMove","_hoveredPoint","_plotAreaHovered","_hasInactiveOpacity","_activeChartInstance","_applySeriesOpacity","_updateSeriesOpacity","_stopChartHandlers","_gestureDistance","_zooming","mousewheelZoom","previousGestureDistance","_drawingChartElement","leave","_startNavigation","_suppressHover","ranges$1","_endNavigation","_mousewheelZoomRate","totalDelta","chartEvent","_getChartElement","_elementPadding","_padding","drawingElement","sharedTooltip","_startHover","_trackSharedTooltip","_propagateClick","handlingTap","_showInactiveOpacity","_displayTooltip","_displayInactiveOpacity","activePoint","multipleSeries","highlightPoints","chartInstance","_chartInstanceFromPoint","inactivePoints","_getInactivePoints","_getInactiveOpacityForSeries","_getAllPointsOfType","_updateHoveredPoint","hoveredPoint","drilldown","_drilldownState","resetOpacity","currSeries","defaultOpacity","_getDefaultOpacityForSeries","activeSeries","_activePoint","hasInactiveOpacity","_hideInactiveOpacity","hasDefaultInactiveOpacity","defaultInactiveOpacity","_mouseMoveTrackHandler","_mouseMoveTracking","seriesPoint","_trackCrosshairs","overPlotArea","_tooltipCategoryIx","_sharedHighlight","pointArgs","hoverArgs","hideElements","keepTooltipOpen","_deferRedraw","_clearRedrawTimeout","_redrawTimeout","bindCategoryAxisFromSeries","uniqueCategories","bindable","dataIx","dataRow","srcDates","sortDates","uniqueDates","rowCount","rowIx","colCount","colIx","transpose","_isBindable","transitionsState","updateMouseMoveHandler","applyOptions","setDirection","setIntlService","noTransitionsRedraw","DATA_FIELDS","fieldValue","originalValue","nullValue","BREADCRUMB","ARIA_HIDDEN","CLICK","BLUR","KEYDOWN","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","findIndex","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","Point$1","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","B","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","exp","PI_DIV_4","Mercator","MAX_LNG","MAX_LAT","INVERSE_ITERATIONS","INVERSE_CONVERGENCE","centralMeridian","clamp","proj","lng0","_projectLat","ecc","ts","con","inverse","_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","_createMarker","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","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","resources","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","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","col","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","FOCUS","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","focusedElement","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","_focusHandler","_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","_marker","_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","kendo$h","$$1","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","description","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","valueMapper","_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","_focusElement","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","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","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","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","ariaTemplate","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","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","_focusTimeout","_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: '2023.3.1114'.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 = \"2023.3.1114\".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 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 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) { return $(element).outerWidth(includeMargin || false) || 0; };\n kendo._outerHeight = function(element, includeMargin) { return $(element).outerHeight(includeMargin || false) || 0; };\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 },\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 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.length === 3 && 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) {\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, nameLength);\n\n if (lower) {\n subValue = subValue.toLowerCase();\n }\n\n if (subValue == name && nameLength > matchLength) {\n matchLength = nameLength;\n matchIdx = i;\n }\n }\n\n if (matchLength) {\n 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);\n if (!pmHour && !getIndexByName(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 wrap(element, autosize, resize, shouldCorrectWidth) {\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 forceWidth = element.hasClass(\"k-tooltip\") || element.is(\".k-menu-horizontal.k-context-menu\");\n\n percentage = percentWidth || percentHeight;\n\n if (!percentWidth && (!autosize || (autosize && width) || forceWidth)) { width = autosize ? outerWidth(element) + 1 : outerWidth(element); }\n if (!percentHeight && (!autosize || (autosize && height)) || element.is(\".k-menu-horizontal.k-context-menu\")) { height = outerHeight(element); }\n\n element.wrap(\n $(\"
\")\n .addClass(\"k-child-animation-container\")\n .css({\n width: 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 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) + 1 : outerWidth(element),\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\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 {\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\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 },\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 var model = this._createNewModel(item);\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.id === model.id) {\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) {\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 = 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, math.max(math.floor(groupItemsSkip / pageSize), 0) * pageSize, 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 data.groupPaging = true;\n }\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 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)\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.wrapper.removeClass(\"k-animation-container-shown\");\n that._toggleResize(false);\n\n if (that._closing || that._trigger(CLOSE)) {\n that._toggleResize(true);\n return;\n }\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 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 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 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 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 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 _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 _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 if (kendo._outerHeight(that.popup.element) > kendo._outerHeight(that.popup.wrapper)) {\n that.popup.wrapper.css(\"height\", kendo._outerHeight(that.popup.element) + \"px\");\n that.popup.position();\n that._positionCallout();\n }\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.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 === \"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.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.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.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 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 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 renderPath(ctx, this.clip);\n ctx.clip();\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 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\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)) {\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 // XXX: the science behind these values is called \"trial and error\".\n bullet.style.fontSize = \"60%\";\n bullet.style.lineHeight = \"200%\";\n bullet.style.paddingRight = \"0.5em\";\n bullet.style.fontFamily = \"DejaVu Serif\";\n bullet.innerHTML = {\n \"disc\" : \"\\u25cf\",\n \"circle\" : \"\\u25ef\",\n \"square\" : \"\\u25a0\"\n }[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 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 */\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 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 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\n var constants = {\n \tARC: ARC,\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 \tVALUE: VALUE,\n \tWHITE: WHITE,\n \tWIDTH: WIDTH,\n \tX: X,\n \tY: Y,\n \tDEFAULT_SERIES_OPACITY: DEFAULT_SERIES_OPACITY\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 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 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 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 && 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 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 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 });\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 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 mapCategories: 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 = absoluteDateDiff(category, lastCategory);\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 deepExtend: deepExtend,\n elementStyles: elementStyles,\n getSpacing: getSpacing,\n getTemplate: getTemplate,\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 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 */\n\n window.kendo.dataviz = window.kendo.dataviz || {};\n\n var TRENDLINE_LINEAR = 'linearTrendline';\n var TRENDLINE_MOVING_AVERAGE = 'movingAverageTrendline';\n var TRENDLINE_SERIES = [\n TRENDLINE_LINEAR, TRENDLINE_MOVING_AVERAGE\n ];\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 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 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 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 opacity: 0.4\n }); };\n\n var barSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\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 }); };\n\n var bubbleSeries = function () { return ({\n border: {\n width: 0\n },\n labels: {\n background: TRANSPARENT\n },\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 }); };\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 spacing: 0.3\n }); };\n\n var columnSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n }); };\n\n var donutSeries = function () { return ({\n margin: 1\n }); };\n\n var lineSeries = function () { return ({\n width: 2\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 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 opacity: 0.5\n }); };\n\n var radarLineSeries = function () { return ({\n markers: {\n visible: false\n },\n width: 2\n }); };\n\n var rangeBarSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n }); };\n\n var rangeColumnSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n }); };\n\n var scatterLineSeries = function () { return ({\n width: 1\n }); };\n\n var waterfallSeries = function () { return ({\n gap: 0.5,\n line: {\n color: BLACK$$1,\n width: 1\n },\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 }); };\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 }); };\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 }); };\n\n var trendlineSeriesDefaults = function () { return TRENDLINE_SERIES.reduce(\n function (options, type) {\n options[type] = {\n color: INHERIT,\n trendline: {},\n markers: {\n visible: false\n },\n width: 1,\n dashType: 'longDash'\n };\n\n return options;\n }, {}); };\n\n var seriesDefaults = function (options) { return ($.extend({\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 polarArea: radarAreaSeries(),\n polarLine: radarLineSeries(),\n rangeBar: rangeBarSeries(),\n rangeColumn: rangeColumnSeries(),\n scatterLine: scatterLineSeries(),\n verticalArea: areaSeries(),\n verticalBoxPlot: boxPlotSeries(),\n verticalBullet: bulletSeries(),\n verticalLine: lineSeries(),\n waterfall: waterfallSeries()\n },\n 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 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 getTemplate = dataviz.getTemplate;\n var TextBox = dataviz.TextBox;\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 grep = dataviz.grep;\n var elementStyles = dataviz.elementStyles;\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 Color = kendo.Color;\n var geometry = kendo.geometry;\n var GeometryPoint = geometry.Point;\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_LINEAR = 'linearTrendline';\n var TRENDLINE_MOVING_AVERAGE = 'movingAverageTrendline';\n var TRENDLINE_SERIES = [\n TRENDLINE_LINEAR, TRENDLINE_MOVING_AVERAGE\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 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_LINEAR: TRENDLINE_LINEAR,\n \tTRENDLINE_MOVING_AVERAGE: TRENDLINE_MOVING_AVERAGE\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) && options.hasOwnProperty(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 function getDateField(field, row, intlService) {\n if (row === null) {\n return row;\n }\n\n var key = \"_date_\" + field;\n var value = row[key];\n\n if (!value) {\n value = parseDate(intlService, getter(field, true)(row));\n row[key] = value;\n }\n\n return value;\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\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 stack = point.series.stack;\n var otherStack = other.series.stack;\n if (stack && otherStack) {\n if (typeof stack === datavizConstants.STRING && stack !== otherStack) {\n continue;\n }\n\n if (stack.group && stack.group !== otherStack.group) {\n continue;\n }\n }\n\n var otherValue = this$1$1.plotValue(other);\n if ((otherValue >= 0 && positive) ||\n (otherValue < 0 && !positive)) {\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 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\"\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 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 },\n\n render: function() {\n var ref = this.options;\n var markers = ref.markers;\n var labels = ref.labels;\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 if (labels.visible) {\n var labelTemplate = getTemplate(labels);\n var pointData = this.pointData();\n var labelText = this.value;\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else if (labels.format) {\n labelText = this.formatValue(labels.format);\n }\n this.label = new TextBox(labelText,\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n }, labels),\n pointData\n );\n this.append(this.label);\n }\n\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\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 }, {\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 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\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 };\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 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 var pointData = this.pointData();\n var labelTemplate = getTemplate(labels);\n var labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n this.label = new BarLabel(labelText,\n deepExtend({\n vertical: options.vertical\n },\n labels\n ), pointData);\n this.append(this.label);\n }\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 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 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\n deepExtend(Bar.prototype, PointEventsMixin);\n deepExtend(Bar.prototype, NoteMixin);\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 };\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 isStacked = options.isStacked;\n var value = this.pointValue(data);\n var pointOptions = this.pointOptions(series, seriesIx);\n\n var labelOptions = pointOptions.labels;\n if (isStacked) {\n if (labelOptions.position === OUTSIDE_END) {\n labelOptions.position = INSIDE_END;\n }\n }\n\n pointOptions.isStacked = isStacked;\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 (isStacked) {\n var stackWrap = this.getStackWrap(series, cluster);\n stackWrap.append(point);\n } else {\n cluster.append(point);\n }\n\n return point;\n },\n\n getStackWrap: function(series, cluster) {\n var stack = series.stack;\n var stackGroup = stack ? stack.group || stack : stack;\n var wraps = cluster.children;\n var stackWrap;\n\n if (typeof stackGroup === datavizConstants.STRING) {\n for (var i = 0; i < wraps.length; i++) {\n if (wraps[i]._stackGroup === stackGroup) {\n stackWrap = wraps[i];\n break;\n }\n }\n } else {\n stackWrap = wraps[0];\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 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 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\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 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 });\n\n deepExtend(Candlestick.prototype, PointEventsMixin);\n deepExtend(Candlestick.prototype, NoteMixin);\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) {\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];\n\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange = 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 axisRange = this.valueAxisRanges[axisName];\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 axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange = 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\"\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 drawing.Circle(new geometry.Circle([ center.x, center.y + radius / 5 + border.width / 2 ], radius + border.width / 2), {\n stroke: {\n color: 'none'\n },\n fill: this.createGradient({\n gradient: 'bubbleShadow',\n color: markers.background,\n stops: [ {\n offset: 0,\n color: markers.background,\n opacity: 0.3\n }, {\n offset: 1,\n color: markers.background,\n opacity: 0\n } ]\n })\n });\n var overlay = new drawing.Circle(new geometry.Circle([ center.x, center.y ], radius), {\n stroke: {\n color: border.color ||\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex(),\n width: border.width,\n opacity: border.opacity\n },\n fill: {\n color: markers.background,\n opacity: highlight.opacity\n }\n });\n\n highlightGroup.append(shadow, overlay);\n\n return highlightGroup;\n }\n });\n\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 var pointData = this.pointData();\n var labelTemplate = getTemplate(labels);\n var labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n this.label = new BarLabel(labelText, labels, pointData);\n this.append(this.label);\n }\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 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\n Bullet.prototype.tooltipAnchor = Bar.prototype.tooltipAnchor;\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 });\n\n deepExtend(Bullet.prototype, PointEventsMixin);\n deepExtend(Bullet.prototype, NoteMixin);\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.items = [];\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.items, 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 if (i !== 0 && yAnchor.pane === axis.pane) {\n axis.alignTo(yAnchor);\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, datavizConstants.COORD_PRECISION) === round(anchor$1.lineBox().y2, datavizConstants.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 remainingPanes = panesLength;\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 remainingPanes--;\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 drawing.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 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 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 !== datavizConstants.END && position !== datavizConstants.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 === datavizConstants.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\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._createLabel(fromOptions);\n this.append(this.labelFrom);\n }\n\n if (toOptions.visible) {\n this.labelTo = this._createLabel(toOptions);\n this.append(this.labelTo);\n }\n },\n\n _createLabel: function(options) {\n var labelTemplate = getTemplate(options);\n var pointData = this.pointData();\n\n var labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(options.format);\n }\n\n return new BarLabel(labelText,\n deepExtend({\n vertical: this.options.vertical\n },\n options\n ), pointData);\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.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 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\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 };\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 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 function linearTrendline(context) {\n var options = context.options;\n var categoryAxis = context.categoryAxis;\n var seriesValues = context.seriesValues;\n\n var ref = getData({ seriesValues: seriesValues, categoryAxis: categoryAxis, options: options });\n var data = ref.data;\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: 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 ref$1 = calculateSlope(seriesValues(), valueGetter(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 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 data[i] = {\n category: categoryAxis.categoryAt(i, true),\n value: slope * (i + 1) + intercept\n };\n }\n\n return { data: data };\n }\n\n return { data: 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 ref = getData$1(context);\n var data = ref.data;\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, 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$1(options.field), period);\n }\n\n function getData$1(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: data };\n }\n\n return { data: null };\n }\n\n var registry = {};\n registry[TRENDLINE_LINEAR] = linearTrendline;\n registry[TRENDLINE_MOVING_AVERAGE] = movingAverageTrendline;\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 getFn = dateAxis ? getDateField : getField;\n var result = [];\n if (!dateAxis) {\n categoryAxis.mapCategories(); //fixes major performance issue caused by searching for the index for large data\n }\n\n for (var idx = 0; idx < srcData.length; idx++) {\n var category = (void 0);\n if (series.categoryField) {\n category = getFn(series.categoryField, srcData[idx], this$1$1.chartService.intl);\n } else {\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(firstSeries, pane) {\n var stack = firstSeries.stack;\n var isStacked100 = stack && stack.type === \"100%\";\n var clip = pane.options.clip;\n\n return {\n isStacked: stack,\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 (!unique.hasOwnProperty(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(firstSeries, 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 firstSeries = series[0];\n var lineChart = new LineChart(this, $.extend({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(firstSeries, 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 firstSeries = series[0];\n var areaChart = new AreaChart(this, $.extend({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(firstSeries, 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\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\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 ? \"vertical\" : \"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 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\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.container.append(new ShapeElement(this.markerOptions()));\n },\n\n markerOptions: function() {\n var options = this.options;\n var markerColor = options.markerColor;\n return deepExtend({}, options.markers, {\n background: markerColor,\n border: {\n color: markerColor\n }\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 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 }\n\n // Don't trigger point hover for legend items\n return true;\n },\n\n out: function(widget, e) {\n widget._unsetActivePoint();\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 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 markers: 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.addVisual();\n } else {\n BoxElement.fn.renderVisual.call(this);\n }\n }\n });\n\n var HORIZONTAL = \"horizontal\";\n var POINTER = \"pointer\";\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 items = options.items;\n\n if (options.reverse) {\n items = items.slice(0).reverse();\n }\n\n var count = items.length;\n\n for (var i = 0; i < count; i++) {\n var item = items[i];\n\n innerElement.append(new LegendItem(deepExtend({}, {\n markers: options.markers,\n labels: options.labels,\n rtl: chartService.rtl\n }, options.item, item)));\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 !== HORIZONTAL) ||\n (defined(orientation) ? orientation !== 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 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) {\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);\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 items: [],\n offsetX: 0,\n offsetY: 0,\n margin: getSpacing(5),\n padding: getSpacing(5),\n border: {\n color: BLACK,\n width: 0\n },\n item: {\n cursor: POINTER,\n spacing: 6\n },\n spacing: 6,\n background: \"\",\n zIndex: 1,\n markers: {\n border: {\n width: 0\n },\n width: 15,\n height: 3,\n type: \"rect\",\n align: LEFT,\n vAlign: CENTER\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 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$2({ 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$2(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\n if (count > 0) {\n var data = [];\n var forecast = (options.trendline || {}).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.trendline || {}).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([ x,\n slope * x + intercept\n ]);\n }\n\n return data;\n }\n\n return null;\n }\n\n function scatterMovingAverageTrendline(context) {\n var options = context.options;\n\n var data = getData$3(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$3(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 var scatterRegistry = {};\n scatterRegistry[TRENDLINE_LINEAR] = scatterLinearTrendLine;\n scatterRegistry[TRENDLINE_MOVING_AVERAGE] = scatterMovingAverageTrendline;\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 var labels = this.options.labels;\n var chartService = this.owner.chartService;\n var labelText = this.value;\n\n if (this._rendered || this.visible === false) {\n return;\n }\n this._rendered = true;\n\n var labelTemplate = getTemplate(labels);\n var pointData = this.pointData();\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else if (labels.format) {\n labelText = chartService.format.auto(labels.format, labelText);\n }\n\n if (labels.visible && (labelText || labelText === 0)) {\n if (labels.position === CENTER || labels.position === INSIDE_END) {\n if (!labels.color) {\n labels.color = dataviz.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 }), pointData);\n\n this.append(this.label);\n }\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 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 drawing.Circle(new geometry.Circle(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 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\n var RAD_30 = round(dataviz.rad(30), DEFAULT_PRECISION);\n var RAD_60 = round(dataviz.rad(60), DEFAULT_PRECISION);\n\n function tooltipAlignment(angle) {\n var radians = dataviz.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 });\n\n deepExtend(PieSegment.prototype, PointEventsMixin);\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: [ \"data\", \"content\", \"template\", \"visual\", \"toggle\" ] });\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.items, 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\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 options.gap = firstSeries.gap;\n options.spacing = firstSeries.spacing;\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\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 reflow: function(chartBox) {\n var points = this.points;\n var label = this.children[0];\n\n this.box = new Box(points[0].x, points[0].y, points[1].x, 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 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 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\n setDefaultOptions(FunnelSegment, {\n color: WHITE,\n border: {\n width: 1\n }\n });\n\n deepExtend(FunnelSegment.prototype, PointEventsMixin);\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.points = [];\n this.labels = [];\n this.legendItems = [];\n this.render();\n },\n\n formatPointValue: function(point, format) {\n return this.chartService.format.auto(format,point.value);\n },\n\n render: function() {\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 series = options.series[0];\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 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: [ \"data\", \"content\", \"template\", \"toggle\", \"visual\" ] });\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.plotArea.chartService.format.auto(labels.format, text);\n }\n\n if (!labels.color) {\n labels.color = dataviz.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.items, chart.legendItems);\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 var pointData = this.pointData();\n var labelTemplate = getTemplate(labels);\n var labelText;\n var labelColor = labels.color;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n if (!labelColor) {\n labelColor = dataviz.autoTextColor(this.color);\n }\n\n this.label = new TextBox(labelText,\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n },\n labels, {\n color: labelColor\n }),\n pointData\n );\n this.append(this.label);\n }\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 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 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\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 };\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 ]\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.mapCategories();\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\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 ], [ 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 MOUSEMOVE = \"mousemove\";\n var CONTEXTMENU = \"contextmenu\";\n var MOUSELEAVE = \"mouseleave\";\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\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 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 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._model = model;\n this._plotArea = model._plotArea;\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 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 model.append(new Legend(plotArea.options.legend, this.chartService));\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._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._startDrilldown(args.point);\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 ));\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.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._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.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._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 _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 this._showInactiveOpacity(point, e);\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, e) {\n var activePoint = this._activePoint;\n var multipleSeries = this._plotArea.series.length > 1;\n var hasInactiveOpacity = this._hasInactiveOpacity();\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 if (hasInactiveOpacity) {\n this._displayInactiveOpacity(point, multipleSeries);\n } else {\n this._highlight.show(point);\n }\n }\n }\n\n return point;\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._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 series = this.options.series;\n var seriesLength = series.length;\n var uniqueCategories = new dataviz.HashMap();//perf improvement in case type category with dates\n var items = [];\n var bindable = false;\n var dateAxis;\n\n for (var seriesIx = 0; seriesIx < seriesLength; seriesIx++) {\n var s = series[seriesIx];\n var onAxis = s.categoryAxis === axis.name || (!s.categoryAxis && axisIx === 0);\n var data = s.data;\n var dataLength = data.length;\n var bind = s.categoryField && onAxis;\n bindable = bind || bindable;\n\n if (bind && dataLength > 0) {\n dateAxis = isDateAxis(axis, getField(s.categoryField, data[0]));\n\n var getFn = dateAxis ? getDateField : getField;\n\n for (var dataIx = 0; dataIx < dataLength; dataIx++) {\n var dataRow = data[dataIx];\n var category = getFn(s.categoryField, dataRow, this$1$1.chartService.intl);\n\n if (dateAxis || !uniqueCategories.get(category)) {\n items.push([ category, dataRow ]);\n\n if (!dateAxis) {\n uniqueCategories.set(category, true);\n }\n }\n }\n }\n }\n\n if (items.length > 0) {\n if (dateAxis) {\n items = uniqueDates(items, function(a, b) {\n return dataviz.dateComparer(a[0], b[0]);\n });\n }\n\n var result = transpose(items);\n axis.categories = result[0];\n } else if (bindable) {\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 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 ));\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._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._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 function sortDates(dates, comparer) {\n if (comparer === void 0) { comparer = dataviz.dateComparer; }\n\n for (var i = 1, length = dates.length; i < length; i++) {\n if (comparer(dates[i], dates[i - 1]) < 0) {\n dates.sort(comparer);\n break;\n }\n }\n\n return dates;\n }\n\n function uniqueDates(srcDates, comparer) {\n if (comparer === void 0) { comparer = dataviz.dateComparer; }\n\n var dates = sortDates(srcDates, comparer);\n var length = dates.length;\n var result = length > 0 ? [ dates[0] ] : [];\n\n for (var i = 1; i < length; i++) {\n if (comparer(dates[i], last(result)) !== 0) {\n result.push(dates[i]);\n }\n }\n\n return result;\n }\n\n function transpose(rows) {\n var rowCount = rows.length;\n var result = [];\n\n for (var rowIx = 0; rowIx < rowCount; rowIx++) {\n var row = rows[rowIx];\n var colCount = row.length;\n\n for (var colIx = 0; colIx < colCount; colIx++) {\n result[colIx] = result[colIx] || [];\n result[colIx].push(row[colIx]);\n }\n }\n\n return result;\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) && options.hasOwnProperty(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 },\n categoryAxis: {},\n seriesDefaults: {\n type: COLUMN,\n data: [],\n highlight: {\n visible: true\n },\n labels: {},\n negativeValues: {\n visible: false\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 getDateField: getDateField,\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($(\"