{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/app/assets/integralui/components/integralui.base.grid.js","webpack:///./src/app/assets/integralui/components/integralui.base.list.js","webpack:///./src/app/assets/integralui/services/integralui.common.service.js","webpack:///./src/app/assets/integralui/components/integralui.scrollbar.js","webpack:///./src/app/assets/integralui/components/integralui.groupbox.js","webpack:///./src/app/assets/integralui/components/integralui.menuitem.js","webpack:///./src/app/treegrid/components/issue.details.component.ts","webpack:///./src/app/treegrid/components/treegrid.configuration.ts","webpack:///./src/app/treegrid/components/treegrid.component.ts","webpack:///./src/app/assets/integralui/components/integralui.combobox.js","webpack:///./src/app/assets/integralui/directives/integralui.dropdown.js","webpack:///./src/app/assets/integralui/components/integralui.grid.js","webpack:///./src/app/assets/integralui/components/integralui.splitter.js","webpack:///./src/app/assets/integralui/components/integralui.listgroup.js","webpack:///./src/app/assets/integralui/components/integralui.tab.js","webpack:///./src/app/assets/integralui/components/integralui.treeitem.js","webpack:///./src/app/base/config.ts","webpack:///./src/assets/scss/index.scss","webpack:///./node_modules/@angular/core/@angular lazy namespace object","webpack:///./src/app/assets/integralui/services/integralui.data.service.js","webpack:///./src/app/app.resolvers.ts","webpack:///./src/app/base/services/env.service.ts","webpack:///./src/app/base/services/env.atlassian.service.ts","webpack:///./src/app/base/services/env.microsoft.service.ts","webpack:///./src/app/base/services/issue.atlassian.service.ts","webpack:///./src/app/base/services/issue.microsoft.service.ts","webpack:///./src/app/base/components/index.ts","webpack:///./src/app/base/components/help-modal.component.ts","webpack:///./src/app/treegrid/components/treegrid-page.component.ts","webpack:///./src/app/assets/integralui/integralui.core.module.ts","webpack:///./src/app/base/services/local.storage.service.ts","webpack:///./src/app/treegrid/components/treegrid-toolbar.component.ts","webpack:///./src/app/treegrid/components/treegrid-header.component.ts","webpack:///./src/app/treegrid/components/grid.dialog.component.ts","webpack:///./src/app/assets/integralui/components/integralui.dialog.js","webpack:///./src/app/assets/integralui/directives/integralui.frame.js","webpack:///./src/app/assets/integralui/components/integralui.paginator.js","webpack:///./src/app/assets/integralui/directives/integralui.range.js","webpack:///./src/app/assets/integralui/directives/integralui.resize.js","webpack:///./src/app/assets/integralui/directives/integralui.tooltip.js","webpack:///./src/app/assets/integralui/components/integralui.accordion.js","webpack:///./src/app/assets/integralui/components/integralui.layout.js","webpack:///./src/app/assets/integralui/components/integralui.listbar.js","webpack:///./src/app/assets/integralui/components/integralui.listbox.js","webpack:///./src/app/assets/integralui/components/integralui.listview.js","webpack:///./src/app/assets/integralui/directives/integralui.contextmenu.js","webpack:///./src/app/assets/integralui/components/integralui.menu.js","webpack:///./src/app/assets/integralui/components/integralui.slidebar.js","webpack:///./src/app/assets/integralui/components/integralui.splitcontainer.js","webpack:///./src/app/assets/integralui/components/integralui.tabstrip.js","webpack:///./src/app/assets/integralui/components/integralui.treegrid.js","webpack:///./src/app/assets/integralui/components/integralui.treelist.js","webpack:///./src/app/assets/integralui/components/integralui.treeview.js","webpack:///./src/index.ts","webpack:///./src/app/assets/integralui/components/integralui.core.js","webpack:///./src/assets/fontello/css/fontello.css","webpack:///./src/assets/scss/index.scss?0029","webpack:///./src/app/assets/integralui/services/integralui.filter.service.js","webpack:///./src/assets/css/app.css","webpack:///./src/assets/css/aui.css","webpack:///./src/app/app.module.ts","webpack:///./src/app/app.routes.ts","webpack:///./src/app/base/services/http.service.ts","webpack:///./src/app/base/services/storage.service.ts","webpack:///./src/app/config.ts","webpack:///./src/app/base/services/socket.service.ts","webpack:///./src/app/base/services/data.service.ts","webpack:///./src/app/base/services/notification.service.ts","webpack:///./src/app/base/services/user.atlassian.service.ts","webpack:///./src/app/base/services/user.microsoft.service.ts","webpack:///./src/app/base/services/user.service.ts","webpack:///./src/app/base/services/index.ts","webpack:///./src/app/base/services/board.service.ts","webpack:///./src/app/base/services/filter.service.ts","webpack:///./src/app/base/utils/misc.ts","webpack:///./src/app/base/services/issue.service.ts","webpack:///./src/app/base/services/map.service.ts","webpack:///./src/app/base/components/utils/modal.component.ts","webpack:///./src/app/base/components/utils/form-typeahead.component.ts","webpack:///./src/app/base/components/header.component.ts","webpack:///./src/app/base/components/header-map.component.ts","webpack:///./src/app/base/components/header-configuration.component.ts","webpack:///./src/app/base/components/notification-list.component.ts","webpack:///./src/app/base/components/notification.component.ts","webpack:///./src/app/base/components/default.component.ts","webpack:///./src/app/base/components/license.component.ts","webpack:///./src/app/base/components/upgrade.atlassian.component.ts","webpack:///./src/app/base/components/configuration-migration.atlassian.component.ts","webpack:///./src/app/base/components/configuration-settings.atlassian.component.ts","webpack:///./src/app/base/components/map.component.ts","webpack:///./src/app/base/components/map-filter.component.ts","webpack:///./src/app/base/components/map-grid.component.ts","webpack:///./src/app/base/components/map-grid-issue.component.ts","webpack:///./src/app/base/components/map-grid-issue-actions.component.ts","webpack:///./src/app/base/components/map-grid-issue-properties.component.ts","webpack:///./src/app/base/components/map-grid-issue-subissues.component.ts","webpack:///./src/app/base/components/map-grid-issue-group.atlassian.component.ts","webpack:///./src/app/base/components/map-grid-issue-group.microsoft.component.ts","webpack:///./src/app/base/components/map-grid-group.component.ts","webpack:///./src/app/base/components/map-tree.component.ts","webpack:///./src/app/treegrid/components/index.ts","webpack:///./src/app/assets/integralui/services/integralui.dragdrop.service.js","webpack:///./src/app/assets/integralui/components/integralui.listitem.js","webpack:///./src/app/assets/integralui/integralui.common.module.ts","webpack:///./src/app/treegrid/services/treegrid.service.ts","webpack:///./src/app/treegrid/components/treegrid-filterbar.component.ts","webpack:///./src/app/treegrid/treegrid.module.ts","webpack:///./src/app/assets/integralui/integralui.module.ts","webpack:///./src/app/assets/integralui/integralui.accordion.module.ts","webpack:///./src/app/assets/integralui/integralui.basegrid.module.ts","webpack:///./src/app/assets/integralui/integralui.baselist.module.ts","webpack:///./src/app/assets/integralui/integralui.grid.module.ts","webpack:///./src/app/assets/integralui/integralui.layout.module.js","webpack:///./src/app/assets/integralui/integralui.listbar.module.ts","webpack:///./src/app/assets/integralui/integralui.listbox.module.ts","webpack:///./src/app/assets/integralui/integralui.listview.module.ts","webpack:///./src/app/assets/integralui/integralui.menu.module.ts","webpack:///./src/app/assets/integralui/integralui.slidebar.module.ts","webpack:///./src/app/assets/integralui/integralui.splitcontainer.module.ts","webpack:///./src/app/assets/integralui/integralui.tabstrip.module.ts","webpack:///./src/app/assets/integralui/integralui.treegrid.module.ts","webpack:///./src/app/assets/integralui/integralui.treelist.module.ts","webpack:///./src/app/assets/integralui/integralui.treeview.module.ts","webpack:///./src/app/base/directives/index.ts","webpack:///./src/app/base/directives/dnd.directive.ts","webpack:///./src/app/base/directives/dropdown.directive.ts","webpack:///./src/app/base/directives/misc.directive.ts","webpack:///./src/app/base/directives/last.directive.ts","webpack:///./src/app/base/pipes/index.ts","webpack:///./src/app/base/pipes/misc.pipe.ts","webpack:///./src/app/base/utils/atlassian_backend.ts","webpack:///./src/app/base/utils/microsoft_backend.ts","webpack:///./src/app/app.component.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","IntegralUIGridLines","IntegralUIDragDropDisplayMode","__extends","this","b","__","constructor","__decorate","decorators","target","desc","arguments","getOwnPropertyDescriptor","Reflect","decorate","__metadata","k","v","metadata","core_1","integralui_core_1","integralui_common_service_1","integralui_data_service_1","integralui_dragdrop_service_1","integralui_filter_service_1","IntegralUIDirection","IntegralUIBaseGrid","_super","dataService","dragDropService","elemRef","elemRenderer","commonService","filterService","changeRef","cmpResolver","_this","dragGhost","emptyRowObj","cells","draggable","isEmpty","status","style","prevEmptyRowObj","isEmptyPrev","dragMode","Handle","currentColumnList","currentRowList","dataColumns","dataRows","options","scrollColumnList","scrollRowList","columnDataKey","rowDataKey","dropMarkElem","dragCmpRef","dragCmp","cloneElem","cloneElemStartPos","x","y","isCtrlDragEntered","isFirstDragEnter","isDragHandleVisible","dragRowList","targetDropRow","targetDropPos","prevTargetDropPos","dragHandlePos","top","left","dragObjIndent","isDragActive","dragStartPos","dragEndPos","expandColIndex","hoverColumn","hoverRow","isGridHovered","currentIndex","prevIndex","tabIndexCount","gridCursor","columnStartPos","resizeColumn","resizeColumnIndex","reorderColumn","columnReorderActive","currentFocusCell","isKeyboardActive","allowUpdate","avgRowHeight","columnPadding","right","bottom","currentGridLines","Both","headerHeight","footerHeight","viewIndexRange","middle","visibleRange","isAutoSizeColumnsActive","isHeaderVisible","isFooterVisible","scrollSize","width","height","clientRect","contentLeftPos","allColWidth","prevClientRect","horScrollElemPos","cornerScrollElemPos","paginatorPos","currentPageNumber","onlyCurrentPage","currentPageList","pageNumber","pageList","pageRowCount","paginatorHeight","originalScrollColumnList","reorderColumnObj","reorderColumnObjPos","reorderColumnStartPos","reorderColumnCurrentPos","reorderColIndex","reorderNewColIndex","startColumnReorder","isColumnResizing","currentScrollPos","maxScrollPos","accelerator","scrollTimerID","isScrollTimerActive","scrollCount","isScrollActive","prevScrollPos","scrollBarSize","scrollLargeChange","currentSelectedColumn","currentSelectedRow","currentSelectionMode","IntegralUISelectionMode","One","shiftFirstSelectedRow","removeIndex","currentSelectedRows","isExpandBoxTouched","touchStartPos","touchEndPos","rowHeight","afterSelect","EventEmitter","beforeEdit","beforeSelect","beforeUpdate","change","columnAdding","columnAdded","columnClick","columnOrderChanged","columnRemoving","columnRemoved","columnsCleared","columnSizeChanged","dragEnter","dragDrop","dragLeave","dragOver","dragStart","keyDown","keyPress","keyUp","pageChanged","rowAdding","rowAdded","rowClick","rowDblClick","rowHover","rowRemoving","rowRemoved","rowsCleared","loadComplete","scrollPosChanged","selectionChanged","updateComplete","sortColumn","sortComparer","targetDropObj","updateOptions","getEmptyObj","found","removeEmptyRow","obj","index","indexOf","updateDragHandlePos","e","updateScrollRowListDragOver","row","set","allowColumnReorder","configurable","allowDrag","allowDrop","allowFilter","allowFocus","refresh","updateLayout","updateData","updateDataFields","updatePaging","resetPageNumber","updateCurrentLayout","processColumnSelection","processRowSelection","clearPrevSelection","None","emit","showScroll","updateShowScroll","sorting","ngOnInit","init","columns","fields","columnFields","rows","rowFields","addColumn","column","callEventAddColumn","clearColumns","clear","insertColumnAt","insertColumnBefore","refColumn","insertColumnAfter","removeColumn","callEventRemoveColumn","removeColumnAt","type","flag","eventObj","cancel","insert","insertByRef","retValue","removeAt","addRow","parent","callEventAddRow","clearRows","clearSelection","insertRowAt","insertRowBefore","refRow","insertRowAfter","removeRow","callEventRemoveRow","removeRowAt","updateColumnFields","updateRowFields","updateCellFields","cell","allowAnimation","isFieldAvailable","allowCellFocus","animationSpeed","autoExpand","displayMode","editorSettings","activate","enabled","undefined","fillSpace","gridLines","hoverSelection","indent","labelEdit","loadRows","mouseWheelSpeed","pathSeparator","rtl","selectedColumn","selectedIndex","selectedRow","selectedRows","selectionMode","showFooter","showHeader","showIcons","IntegralUISortOrder","paging","dataFields","aggregation","allowGrouping","allowResize","canSelect","cellTemplateUrl","comparer","contentAlignment","contextMenu","editorType","editorTemplate","filterParams","filterTemplate","fixed","fixedWidth","footerAlignment","footerContent","footerTemplate","footerTemplateModel","footerText","footerTooltip","groupText","headerAlignment","headerContent","headerTemplate","headerTemplateModel","headerText","headerTooltip","icon","id","minWidth","maxWidth","selected","templateSettings","visible","allowEdit","autoCheck","checkBoxSettings","checked","checkState","content","gid","expanded","hasChildren","objects","pid","statusIcon","subobjects","templateObj","text","tooltip","cellFields","cid","isGroup","rid","tag","valueID","valueType","horizontal","vertical","processLoadData","flat","self","treeData","tempList_1","forEach","currentPID","updateScrollColumnList","updateScrollRowList","addDropMark","pos","appRef","removeDropMark","factory","resolveComponentFactory","IntegralUIDragWindow","createComponent","_component","_hostElement","component","destroy","callDragDropEvent","action","dragRow","source","dropPos","event","isDropAllowed","allow","mousePos","getMousePos","resume","drop","getData","clearData","sourceCtrl","targetCtrl","targetRow","checkEmptySpace","contentSize","getContentSize","ctrlPageRect","getPageRect","nativeElement","firstElementChild","emptySpace","shiftPos","getShiftPos","ctrlDragEnter","isEnabled","processDragEnter","ctrlDragDrop","processDragDrop","stopPropagation","ctrlDragLeave","processDragLeave","ctrlDragOver","processDragOver","ctrlDragEnd","dropMark","removeDragHandle","pageX","pageY","displayValue","display","updateDragComponent","updatePos","isDragAllowed","sourceData","Array","isArray","isEqual","isParentOf","isChildOf","processDragStart","processDragStartHandle","processDragStartPopup","shiftKey","dragDropData","clone","cloneRow","handle","MultiSimple","MultiExtended","createCloneList","setData","preventDefault","dataTransfer","effectAllowed","toString","originalEvent","getObjIndexFromScrollList","stopScrollTimer","rowBounds","processDragOverHandle","processDragOverPopup","changeCursor","pass","checkDropType","getDropPos","eventData","dragResult","targetObj","getObjFromRow","tempMousePos","cssTopValue","cssLeftValue","dropMarkerClass","class","dropEffect","clearDragDropSettings","updateDropMarkTimeout","setTimeout","clearTimeout","dropList","processDataDrop","isRowRemoved","callAfterSelectEvent","expandBoxMouseDown","buttons","toggle","expandBoxMouseUp","expandBoxTouchStart","updateExpandingCell","expColID","expColumn","getExpandingColumn","getCellByColumnId","convertToCSV","list","line","subList","exportToCSV","cellList","currentObj","rowList","getFullList","currentRow","columnID","Date","toLocaleDateString","JSON","stringify","exportToJSON","spacing","exportColumnsToJSON","exportRowsToJSON","fieldList","filter","params","cursorType","checkStatus","cloneList","getCellWidth","rowObj","cellWidth","getColumnWidth","getColumnIndexFromList","getColumnAllowResize","getColumnById","foundColumn","getList","getColumnCurrentIndex","fieldName","setColumnWidth","Math","min","max","getPrevColumn","colWidth","isColumnWidthFixed","getFilterTree","foundTree","getCurrentList","getTopRow","createScrollObjFromRow","scrollIndex","getRowCurrentIndex","getRowIndent","isExpandBoxAllowed","getRowLevel","getRowFromComponent","cmp","isColumnVisible","isComponentIndexInRange","isIndexInRange","isRowAllowed","colID","cellValue","callback","match","conditions","formula","caseSensitive","allowParent","filterIsThereChildren","isRowEnabled","isRowFixed","isRowHovered","isRowSelected","processStateChanged","updateExpandStatus","cellGotFocus","cellLostFocus","onContentScroll","srcElement","scrollTop","scrollLeft","onGridScroll","cellMouseDown","cellKeyDown","keyCode","processPageUpKey","processPageDownKey","processEndKey","processHomeKey","processLeftArrowKey","processUpArrowKey","processRightArrowKey","processDownArrowKey","cellKeyPress","cellKeyUp","downCell","getDownCell","row_1","getRowFromCell","self_1","selTimeout_1","isLastRow","scrollPos","endCell","self_2","colIndex","selTimeout_2","homeCell","self_3","selTimeout_3","prevCell","getPrevCell","isFirstCell","self_4","self_5","rowIndex","selTimeout_4","upCell","self_6","selTimeout_5","nextCell","getNextCell","isLastCell","self_7","getUpCell","row_2","self_8","selTimeout_6","isFirstRow","nextRowIndex","nextRow","cellIndex","nextIndex","prevRowIndex","prevRow","moveFocusFromCell","direction","cellObj","getObjFromCell","onWindowKeyDown","onWindowKeyUp","clearComponentSelection","state","IntegralUIObjectState","suspendLayout","resumeLayout","updateColumnWidth","sumColWidth","colCount","childList","scrollWidth","isVerScrollVisible","widthFactor","updateColumnWidthByFactor","addFactor","updateCellWidth","remFactor","checkWidthChanges","emptySpaceWidth","newWidth","updateRange","getFooterBottomPos","isHorScrollVisible","isPaginationEnabled","onCtrlMouseEnter","setElementStyle","onCtrlMouseLeave","currentPage","getMaxPages","firstPage","lastPage","nextPage","prevPage","updatePageNumber","showControlPanel","pageSize","paginatorPageChanged","page","maxPages","getColumnOpacity","updateOrignalScrollColumnList","updateReorderColumnPos","headerRect","getHeaderRect","getColumnIndexFromScrollList","moveObject","resetReorderColumnSettings","restoreColumnOrder","from","to","floor","changeHorizontalScrollPos","changeVerticalScrollPos","updateView","gridMouseWheel","delta","wheelDelta","detail","wheelStep","newValue","onVerticalScrollStart","onVerticalScrollEnd","onVerticalScrollChanged","onHorizontalScrollStart","onHorizontalScrollEnd","onHorizontalScrollChanged","tempTimeout","processScroll","extraTopSpace","extraBottomSpace","boundRect","additionalTopSpace","additionalBottomSpace","upperLimit","lowerLimit","startScrollTimer","interval","scrollInterval","setInterval","scrollTimerElapsed","clearInterval","oldPos","scrollStep","scrollTo","findRowById","findObjectById","findRowByText","findObjectByText","isRowInSelectionList","isThereSelectedRows","currentSelRow","ctrlKey","metaKey","areCmdKeysActive","firstSelIndex","lastSelIndex","tempIndex","currentSelValue","selectRows","updateRowSelection","which","countSelRows","sort","order","getCellIndexInCollection","colId","isSortingAllowed","Ascending","Descending","isSortingColumn","applySorting","sortColumnIndex_1","sortColumnId_1","firstObj","secondObj","firstIndex","isObject","secondIndex","getColumnInlineStyle","header","footer","getRowInlineStyle","cursor","hide","columnTouchStart","rowTouchStart","ctrlTouchStart","touchData","getTouchData","ctrlTouchEnd","delta_1","dx","dy","isHorizontalEnd_1","isVerticalEnd_1","touchScrollPos_1","startScrollPos_1","touchScrollInterval_1","newScrollPos","IntegralUIBaseComponent","Input","Number","Boolean","Output","HostListener","Function","Component","selector","template","providers","IntegralUIDataService","IntegralUIDragDropService","ElementRef","Renderer","IntegralUICommonService","IntegralUIFilterService","ChangeDetectorRef","ComponentFactoryResolver","a","g","f","IntegralUIBaseList","h","currentList","selectedItem","dataItems","scrollItemList","hoverItem","currentFocusItem","avgItemHeight","blockSize","virtualization","updateTimer","horScrollOrientation","IntegralUIOrientation","Horizontal","shiftFirstSelectedItem","currentSelectedItems","refreshTimer","itemAdding","itemAdded","itemRemoving","itemRemoved","currentSelection","processSelection","item","items","itemClassName","itemContentClassName","initStyle","defaultStyle","general","disabled","generalClassName","focused","normal","hovered","updateStyle","controlStyle","updateControlClass","addItem","callEventAdd","clearItems","insertItemAt","insertItemBefore","insertItemAfter","removeItem","callEventRemove","removeItemAt","processItemAdd","updateItem","processItemRemoval","updateCurrentList","updateScrollItemList","dragItem","targetItem","cloneItem","itemDragStart","itemDragOver","getItemElemList","itemDragDrop","createTree","getObjFromItem","getObjFromScrollItem","getItemCurrentIndex","getItemFromComponent","getTopItem","virtualMode","invokeMethod","updateSelection","itemList","isItemAllowed","isItemEnabled","isItemHovered","isItemSelected","updateItemList","itemMouseEnter","updateItemStyle","itemMouseLeave","itemGotFocus","itemLostFocus","itemKeyDown","itemKeyPress","itemKeyUp","getDownItem","isLastItem","getUpItem","isFirstItem","moveFocusFromItem","updateBlockSize","resetLayout","clientWidth","clientHeight","updateVisibleRange","offsetHeight","updateScrollSize","updateCloneElemPos","itemMouseDown","itemMouseUp","itemClickEvent","itemDblClickEvent","onScroll","scrollHeight","processMouseWheel","findItemById","findItemByText","isItemInSelectionList","selectItems","currentStyle","getItemStyle","getItemGeneralStyle","getItemContentStyle","getDefaultItemStyle","isString","getDefaultItemGeneralStyle","getDefaultItemContentStyle","getDefaultListStyle","getDefaultGeneralStyle","getGeneralStyle","calcMargin","getComputedStyle","parseInt","marginTop","marginRight","marginBottom","marginLeft","checkHit","getBodyElem","offsetParent","getBorderWidth","borderTopWidth","borderRightWidth","borderLeftWidth","getMargin","getObjFromListById","getPadding","paddingTop","paddingRight","paddingBottom","paddingLeft","getBoundingClientRect","document","body","documentElement","getUniqueId","random","substring","String","Injectable","IntegralUIScrollBar","currentMaxValue","currentMinValue","currentValue","currentSplitterDistance","maxPos","thumbSize","thumbPos","smallChange","largeChangeValue","orientation","Vertical","scrollStart","scrollEnd","valueChanged","thumbStartPos","isThumbActive","prevPos","scrollTimeout","ngAfterViewInit","ngAfterContentInit","ngOnDestroy","clearScrolling","isVertical","getSize","offsetWidth","setScrollSize","thumbMouseDown","onWindowMouseMove","onWindowMouseUp","changeScrollPos","processLargeChange","offsetY","offsetX","getScrollBarStyle","inputs","encapsulation","ViewEncapsulation","IntegralUIGroupBoxTags","Directive","IntegralUIGroupBox","baseService","expandState","isExpanded","isSelected","supressCallback","contentHeight","contentDisplay","contentOpacity","maxBlockHeight","parentCtrl","contentClassName","headerClassName","headerExpandBoxClassName","contentClass","headerBlockClass","afterCollapse","afterExpand","beforeCollapse","beforeExpand","selectedChanged","callBeforeEvent","animationState","updateContentClass","toggleContent","group","updateHeaderBlockClass","invokeEvent","callAfterEvent","getComponent","expandBox","collapsed","contentElem","cloneNode","position","controlElem","append","remove","onHeaderClick","collapse","expand","getContentHeight","setContentHeight","getContentClass","getContentStyle","getHeaderBlockClass","getHeaderClass","getHeaderGeneralStyle","getHeaderStyle","getCurrentHeaderStyle","setOpacity","ViewChild","read","ViewContainerRef","IntegralUIHeaderItem","IntegralUIBaseService","IntegralUIMenuItem_1","IntegralUIMenuItem","contentAnimation","eventList","blockPos","popupOrder","blockDisplay","blockElemWidth","blockElemHeight","blockOverflow","blockOpacity","pauseTimer","parentItem","pause","blockClassName","expandBoxClassName","expandBoxSpaceClassName","separatorClassName","animated","separator","onExpandBoxMouseDown","getDataType","getItemLevel","level","isThereChildren","isBlockVisible","parentElement","onMouseDown","mouseDown","onMouseEnter","mouseEnter","onMouseLeave","removePauseTimer","mouseLeave","onContextMenu","onChildItemMouseDown","blockElem","getItemDisplay","ctrlClass","getSeparatorClass","getExpandBoxClass","getExpandBoxSpaceClass","getBlockClass","getGeneralClass","getExpandBoxStyle","IntegralUIItem","ContentChildren","QueryList","split","outputs","envService","issueService","notificationService","colapseDetails","colapsePeople","colapseDates","colapseComments","colapseDescription","colapseSubTasks","colapseLinks","config","butonSelect","console","log","retriveComments","subscribe","comments","hash","getElementById","scrollIntoView","createLink","path","dateFormat","date","onButtonSelect","url","platform","IssueDetailsComponent","templateUrl","styleUrls","EnvService","IssueService","NotificationService","contextMenuReference","rowMenu","watching","adjustment","enableProdMode","http","storageService","gridService","configChanged","_data","_issues","_indexes","_locks","ranks","groups","issues","laneGroups","columnGroups","isBusy","storageKey","issuePropertiesModal","dialogData","versions","changed","fieldID","addList","removeList","fixVersions","components","dropDownRef","groupSettings","showAddButton","currentExpandLevel","firstGridSize","secondGridSize","splitterDistance","layoutMode","layoutConfigurationList","layoutConfigurationComboStyle","columnConfigurationList","columnConfigurationComboStyle","epicColumnId","checkBoxColumnId","markerColumnId","handleColumnId","iconsColumnId","lastColumnId","versionsID","fixVersionsID","componentsID","columns2","rows2","columnList","columnList2","columnDropDownList","columnDropDownList2","gridGroups","gridGroups2","currentIssueSelected","showIssueDetails","gridStyle","columnDropDownComboStyle","isColumnDropDownPanelOpen","activeColumn","columnPanelOptions","comboList","activeCell","isRowMenuOpen","isRankButtonActive","selMode","selectedCell","expandStatusList","showNewIssuePanel","activeCellPanel","issuePanelSettings","tempRow","newRowID","cutList","rowFullList","comparerByIndex","first","second","filterList","isPinActive","isSearchActive","serverData","groupListByRows","currentEditCell","dropFieldNames","dropFieldValues","dropFieldRemoveValues","dropListIssues","targetDropObject","sourceDropList","targetDragOverGroupCell","rankList","comparerByRank","rank","rankComparer","firstRow","secondRow","getRankValue","prevColumn","sorting2","sortColumn2","prevColumn2","getSortValue","toLowerCase","sortComparer2","getCellAggregationValue","getAggregationTypeByID","aggregationType","createColumnList","groupID","processGeneralAggregation","createColumn","icons","processIconsAggregation","processToolboxAggregation","observables","getAllFields","updateGridOnInit","addData","webhook","issue","getGridComponent","findRowByIssueKey","updateRowsFromIssue","removeDuplicates","view","getScopePreferences","preferences","handleToolBarActions","autoClose","dropdown","createView","setColumnList","updateConfiguration","refreshRows","setGroups","getFieldsByGroup","changeColumnConfiguration","expandGrid","collapseGrid","openEditor","createCopies","pasteRows","atlassian","createDialog","pinButtonClicked","rankButtonClicked","exportToExcel","addNewIssue","downloadCSV","fileName","blob","Blob","link","createElement","download","URL","createObjectURL","setAttribute","generateFileName","appendChild","click","removeChild","toLocaleTimeString","unsubscribe","loadConfiguration","layout","updateAppSize","updateColumnDropDownList","dropDownList","grid2","grid1","getActiveProject","board","location","removeTemporaryRow","onGridRowHover","isAddNewIssueButtonAllowed","rowID","getFirstRowIssue","groupAddNewIssue","closeActivePanel","rowAddNewSubtask","parentCell","checkSubtask","getCreateIssueMeta","projects","projectTypes","projectIndex","projectID","typeID","activeProjectID","iconUrl","avatarUrls","types","issuetypes","currentType","summary","selProjectIndex","selProjectID","selTypeID","dropDownSize","isSubtask","manual","detectChanges","err","message","newIssuePanelMouseDown","onNewIssuePanelOpening","appRect","appElemRef","appSize","onNewIssuePanelOpen","onNewIssuePanelProjectSelectionChanged","updateComboIssueTypes","onNewIssuePanelSubTaskChanged","comboNewIssueTypeComp","currentProject","subtask","onNewIssuePanelTypeSelectionChanged","onNewIssuePanelCreateClicked","fieldNames","fieldValues","extractDataFromTargetGroup","extractDataFromTargetRow","concat","createIssue","issueAtl","relatedIssue","find","newRow","createRow","updateRank","updateGrids","onNewIssuePanelCancelClicked","onNewIssuePanelSwitchClicked","getNewIssuePanelElem","panelObj","getNewIssuePanel","elemList","newIssuePanelElems","toArray","newIssuePanels","keepListInOrder","resetCellStatus","allowCopy","getCellById","getRowIndex","selRow","fullList","isMultiValueGroupPresent","resetDialogData","targetGroup","getParentGroup","addValueToDialogListFromGroup","addValueToDialogList","openDialog","updateServerData","updateGridOnPaste","selIndex","collapseGroupsByLevel","expandGroupsAndRows","rowLevel","collapseByDefault","addChildrenToFilterList","filterBySearch","searchValue","operation","onSplitterMoved","onPanel1SizeChanged","size","padding","onPanel2SizeChanged","onResize","innerHeight","onColumnConfigurationSelectionChanged","onColumnConfigurationSelectionChanged2","tempColumnList","configList","local","InitFromLocalStorageFirstGrid","InitFromLocalStorageSecondGrid","tempColumns","tempConfigList","isGrouping","columnOrder","columnStored","getAggregation","sortColumnID","sortOrder","ranking","groups2","columnOrder2","sortColumnID2","sortOrder2","saveConfiguration","getColumnList","getColumnOrder","expandLevel","createExpandStatusList","columnObj","dataConfig","onColumnConfigurationOpening","checkBoxClicked","newList","checkBoxMouseUp","onColumnDropDownPanelOpening","elem","getColumnPanelElem","elemRect","checkedConfirmed","onColumnDropDownPanelOpen","columnDropDownPanelMouseDown","columnDropDownPanelMouseUp","onColumnDropDownComboSelectionChanged","columnDropDownPanelOK","columnDropDownPanelCancel","columnDropDownPanelDelete","getColumnPanel","columnPanels","settings","columnPanelElems","currentPanel","close","currentNewIssuePanel","onIconsPanelItemChecked","isIconAllowed","listMouseDown","isIndexinRange","addColumnFromList","onAddColumnOpening","onDropDownOpen","convertDataToRows","restoreGroupExpandStatus","expandStatus","getRowExpandStatus","loadExpandLevel","expLevelTimeout","extractData","res","json","handleError","error","errMsg","Response","statusText","Observable","throw","updateFullList","isFolder","isChild","createListFromFieldValue","getValuesFromIssue","cartesian","helper","arr","createPermutations","permutations","tempGroups","multiValueGroups","values","currentIssue","addGroupFromRow","tagHide","findObjInList","getSchemaTypeByID","isGroupPresent","createCellFromValue","fieldValue","linkColor","editText","getFieldNameByID","multiValue","getCellValue","isThereSubTasks","subtasks","isThereIssueLinks","issuelinks","createEpicLinkCell","links","colorKey","currentPermutation","permutation","rowType","createRowCells","createIconCell","createIssueFolder","createRowSubTask","issueGot","getLinkGroup","foundGroup","isLinkGroupPresent","createGroupsFromIssueLinks","linkGroups","createLinkGroupList","linkGroup","createRowFromLinkGroup","createRowFromLink","outwardIssue","inwardIssue","setIssueIcon","issuetype","createCell","iconErrorHandler","getCellIcon","iconID","iconSet","getProgressValue","getFieldNameByIDFromConfig","getColumnId","columnName","foundID","rowMenuItemClick","issueID","actionValue","actionParameters","extractRowsFromFullList","rowMenuCellMouseDown","findGroupByIssueKey","issueKey","rowMenuOpening","removeMe","transitions","title","description","watches","isWatching","rowMenuOpened","rowMenuClosed","foundCell","selList","onGridBeforeSelect","onGridAfterSelect","resetEditor","moveUpClicked","moveRow","Up","moveDownClicked","Down","moveLeftClicked","Left","moveRightClicked","Right","gridDragDrop","showEditor","cellStartEdit","editorKeyDown","cancelEdit","editRevertChanges","editDone","update","issueRefreshed","closeEditor","gridMouseUp","findByKey","cellMouseUp","selectContent","setSelectionRange","cellPadding","onGridClick","onGridMouseDown","onGridScrollPosChanged","onGroupAdding","onGroupAdded","collapseByDelay","onGroupRemoving","onGroupRemoved","onGroupOrderChanged","getFirstGroupChildRow","getFieldName","getFieldValue","createIDList","isFolderPresent","updateRow","createRowsFromIssue","removeExistingRows","addMissingRows","getRowsByIssueKey","related","isDialogValuePresent","targetList","getDialogList","groupValue","parentGroup","onGridDragStart","onGridDragOver","createDropList","onGridDrop","groupCell","processRank","clearGridSelection","getNextRow","targetIssue","reverse","updateIssues","skipDialogGroup","objValue","schemaType","groupName","createRemoveListFromDropRows","groupObj","targetCell","isValuePresent","sourceCell","closeDialog","addDropFields","targetData","onDialogSubmit","onDialogCancel","displayName","valueOf","isActive","currentComparer","gridColumnOrderChanged","gridColumnSizeChanged","gridColumnClick","tempSortColumn","isModified","toDo","inProgress","done","getColumnSortClass","className","gridKeyDown","onGridBeforeCollapse","onGridBeforeExpand","onGridBeforeUpdate","onGridAfterCollapse","onGridAfterExpand","fieldObj","Subject","IntegralUIGrid","ViewChildren","IntegralUIDropDown","IntegralUISplitter","IntegralUIComboBox","TreeGridComponent","LocalStorageService","TreeGridService","Http","initStatus","contentBorder","contentOverflowY","listSize","itemSizeList","itemGeneralClassName","dropDownClosed","dropDownClosing","dropDownOpened","dropDownOpening","selectedItemChanged","selectedIndexChanged","integralHeight","maxDropDownItems","comboWidth","expandStateTimer_1","headerElem","dropDownWidth","attachItemEvents","contentList","changes","updateSelectedIndex","initTimeout","calcBlockHeight","closeDropDown","comboClick","openDropDown","dropDownBlurEvent","closeTimer_1","dropDownElem","blur","focusTimeout","focus","getComboIcon","getComboIconUrl","getComboText","getDropDownWidth","itemSize","itemMargin","margin","getDropDownHeight","dropDownHeight","blockHeight","lastItemMargin","counter_2","prevItemHeight_1","isThereDifferentSizeItems_1","factor","num","currentHeight","openTimer_1","closeTimer_2","currentCmp","selIndexTimer_1","classValue","IntegralUIDropDownComponent","showTimer","popupTimer","dropdownDisplay","dropdownPos","dropdownSize","closed","dropdownOptions","focusTimer","updateAdjustment","autoPopDelay","initialDelay","showMarker","updateDropDownSize","onBlur","removeTimers","open","elemPageRect","elemSize","show","updateMousePos","templateData","isDropDownOpen","cmpRef","templateList","dropDownOpen","dropDownClose","templates","getTemplate","mouseEvent","innerWidth","isOpenManual","IntegralUITemplate","integralui_base_grid_1","integralui_scrollbar_1","dragHandleShiftPos","headerData","rowData","cellData","footerData","expandTimeout","expandRow","isGroupPanelHovered","isThereChildRows","dataGroups","groupList","activeGroups","groupExpandList","isGroupListItemSelected","groupPanelSize","groupPanelHeight","dragGroupSettings","label","groupReorderMargin","reorderGroupWidth","blockMarginTop","isExpandBoxVisible","trialRef","groupAdding","groupAdded","groupRemoving","groupRemoved","groupOrderChanged","groupReorderActive","hoverGroup","reorderGroup","dragGroupElemSize","groupCoordinates","reorderGroupPos","updateGrouping","grouping","gridRect","currentExpandColumnID","setComponent","columnClassName","columnHeaderClassName","columnBodyClassName","columnFooterClassName","rowClassName","cellBorderClassName","cellClassName","gridLinesClassName","sortingClassName","targetDropRowClassName","ascending","descending","load","none","both","ngAfterContentChecked","autoUpdate","groupingPanelElem","paginatorElem","updateGroupFields","groupFields","scrollObj","inlineStyle","updateColumnStyle","updateRowStyle","getCellIndexById","currentCell","align","getCellAlignment","expandBoxAllowed","tabIndex","prevTargetIndex","targetIndex","currentEmptyObj","isRowExpanded","targetIndex_1","newIndex","addColumnToCurrentList","filterTree","updateCurrentColumnList","getGroup","addRowToGroup","prevGroup","groupDefaultName","isGroupExpandedFromRow","updateGroupList","groupAggregation","aggregatedCell","createGroupExpandList","showColumns","showPanel","getGroupExpandObj","updateGroupExpandValue","updateCurrentRowList","addChildRows","updatePageList","parentRow","addRowToCurrentList","visibleChildCount","isThereVisibleChildren","loadData","expandOnDelay","rowDragStart","rowDragStartHandle","rowDragStartPopup","rowElems","rowRect","index_1","rowDragOver","rowDragDrop","getParent","processDataDropAtTargetGroup","processDataDropAtTargetRow","groupCells","getRowParent","columnId","expandedValue","findGroupById","findColumnById","getColumnRealIndex","realColIndex","getColumnFromCell","getColumnAlignment","isGroupExpanded","getGroupTextFromColumn","getGroupText","updateDragGroupElem","panelPadding","elemBoundRect","dragGroupElem","elemPos","groupPanelDragEnter","groupPanelMouseEnter","groupPanelMouseMove","groupPanelMouseLeave","checkColumnPresence","groupPanelMouseUp","reorderGroupIndex","newGroupIndex","addGroup","groupMouseEnter","groupMouseLeave","groupMouseDown","groupButtonMouseDown","removeGroup","groupListItemSelected","groupListMouseDown","onAddGroupDropDownOpen","columnMouseDown","columnMouseUp","columnMouseMove","columnElems","elemIndex","columnRect","rightMargin","leftMargin","columnMouseEnter","columnMouseLeave","gridMouseMove","gridMouseEnter","gridMouseLeave","rowMouseEnter","rowMouseLeave","rowMouseMove","abs","isLeftLimitFound","isMiddleLimitFound","isRightLimitFound","viewScrollLimit","rightScrollLimit","sumWidth","full","bodyElem","updateExpandingColumn","groupPanelBorder","groupPanelPadding","columnLayoutTimer","footerElems","cellElems","footerElem","rowLayoutTimer","elemList_1","sumHeight","getRowScrollIndex","newPos","widthChange","newWidthPrevColumn","minWidthPrevColumn","getPrevRow","parent_1","parent_2","newRowIndex","At","First","moveList","moveRowAt","Last","Before","After","beginLoad","endLoad","isRowLoading","headerRowElem","parent_3","scrollToTimeout_1","rowMouseDown","rowMouseUp","rowClickEvent","rowDblClickEvent","getColumnStyle","getColumnHeaderStyle","getColumnBodyStyle","getColumnFooterStyle","getColumnSortingStyle","getDefaultColumnStyle","getDefaultColumnHeaderStyle","getDefaultColumnBodyStyle","getDefaultColumnFooterStyle","getColumnSortingNormalStyle","getColumnSortingSelectedStyle","getDefaultColumnSortingStyle","getRowStyle","getRowGeneralStyle","getRowExpandBoxStyle","getRowCellStyle","getDefaultRowStyle","getDefaultRowGeneralStyle","getDefaultRowExpandBoxStyle","getDefaultRowCellStyle","getGridLinesStyle","getDefaultGridLinesStyle","getDefaultGridStyle","resetRefresh","obj_1","clientSize","panel1Size","panel2Size","splitterSize","splitterHandleSize","prevMaxPos","handleClass","orientationChanged","splitterMoved","splitterMoving","splitterStartPos","isSplitterActive","getMaxPos","currentPanel2","handleClassName","updateHandleClass","initLayout","updateSettings","panel1","panel2","handleElem","updatePanelSize","calcSplitterDistance","splitterMouseDown","getSplitterStyle","getSplitterHandleStyle","getHandleClass","getHandleStyle","IntegralUIListGroup","numItems","itemEventList","onHeaderExpand","getComponentData","getItemDataIndex","updateSelectedItemFromComponent","IntegralUITab","topPos","leftPos","elemWidth","elemHeight","elemOrder","elemBorderColor","getLayoutParams","children","getCurrentTabStyle","getTabContentClass","IntegralUITreeItem_1","IntegralUITreeItem","blockClass","expandBoxClass","updateBlockClass","updateExpandBoxClass","isItemExpanded","isBlockExpanded","getComponentFromItem","getDataFields","selectItem","isItemLoading","IntegralUIListItem","webpackEmptyAsyncContext","req","Promise","resolve","then","Error","code","keys","insertAt","createCloneIds","parse","searchObj","findParent","getKey","canActivate","route","queryParams","EnvironmentProvider","router","isLicensed","license","navigate","IsLicensedProvider","Router","ngZone","reject","isAtlassian","retriveBoard","runOutsideAngular","combineLatest","retriveFilter","retriveFields","retriveIssueTypes","retriveIssueLinkTypes","retriveEpics","retriveQuickFilters","isMicrosoft","microsoft","retriveUsers","MapResolver","NgZone","GenericResolver","storage","AP","JIRA","jira","platforms","ATLASSIAN","VSS","MICROSOFT","environment","production","cookie","includes","new","getPreferences","getSettings","setPreferences","isAtlassianServer","EnvAtlassianService","EnvMicrosoftService","setScopePreferences","scopeKey","getScopeKey","assign","setSettings","createFlag","resize","Storage","AppHttp","httpGlobal","_options","api","base","agile","dialog","_settings","isAtlassianCloud","substr","search","server","baseUrl","urlBoard","getFieldRank","fieldId","getFieldPoints","estimation","getFieldSprint","getFieldBySchema","getFieldEpicLink","getFieldEpicName","getFieldEpicColor","getFieldEpicStatus","getFieldParentLink","schema","custom","getFieldByName","field","clauseNames","getIssueLinkByName","issueLinkTypes","observable","epics","epicsMap","retriveSprints","sprints","quickfilter","subscriber","complete","retriveVersions","retriveProjects","retriveComponents","issueTypes","retrivePriorities","priorities","getBackup","URLSearchParams","map","maps","prop","backup","setBackup","context","getWebContext","host","project","urlProject","urlCollection","collection","baseProject","share","reduce","output","iconClass","iconStyle","team","users","uniqueName","socket","envAtlassianService","userAtlassianService","_params","jql","startAt","maxResults","_appliedQuickFiltes","on","isUnlocked","retrive","delete","format","atlassianIssue","atlassianList","fieldKey","parseJavaObject","others","epicLinkParent","linkParent","reporter","avatarUrl","getAvatarUrl","assignee","epic","color","epicColors","newGen","entityId","priority","points","progress","findIndex","locks","createHierarchy","maxLevel","fieldConfiguration","hierachy","parentLink","navigable","orderable","portfolio","customId","searchable","createSubTaskHierarchy","sub","createLinksHierarchy","linkTypes","child","isLocked","isEpic","isSubTask","isFeature","listObservable","ReplaySubject","jQuery","extend","_list","tmpSQL","_applyQuickFiltet2Jql","loadParentIssues","parents","_observables","next","parentList","parentFieldId","parentKeys","hasEpicLinkFieldDependency","updated","_view","toggleQuickFilter","quickFilters","orderBy","orderByIndex","trim","updateIssues_TEST","removefieldValue","_transformeHierarchyFieds","parentId","levelNew","updateMultipleIssueFields","parameters","commentsObservable","dataUpdate","_buildUpdateData","_update","post","updateMultivalueField","updateEpic","updateSprintforSingleIssue","updatePoints","updateStatus","updateIssueLinkCreate","updateIssueLinkDelete","addValues","removeValues","isOthers","extras","OTHERS","updates","add","put","updateDescription","updateProject","epicId","transition","inwardIssueId","outwardIssueId","typeId","updateSprint","sprint","is","issueBefore","issueAfter","rankBeforeIssue","rankAfterIssue","createFromBackendError","updateGroup","groupId","PROJECT","EPIC","SPRINT","POINTS","VERSION_AFFECTED","VERSION_FIXED","COMPONENT","STATUS","PRIORITY","TYPE","ASSIGNEE","REPORTER","DUPLICATES","DUPLICATED","BLOCKS","BLOCKED","updateGroupProperties","addGroups","removeGroups","isUpdateGroup","watch","unwatch","openCreateIssueDialog","issueDetailsDialog","href","openEditIssueDialog","issueId","editDialog","assignDialog","commentDialog","openAddCommentIssueDialog","viewVotersDialog","attachFileDialog","manageWatchersDialog","moveIssueDialog","cloneIssueDetailsDialog","linkJiraIssueDialog","editLabelsDialog","createSubissueDialog","openCreateSubIssueDialog","issueData","retriveObservable","IssueAtlassianService","AppSocket","UserAtlassianService","DataService","envMicrosoftService","userMicrosoftService","_paramsQuery","query","microsoftIssue","microsoftList","relations","customFields","_findUser","itemRelation","microsoftIssueRelationId","_desctructIssueLink","microsoftIssueRelation","rel","dataQuery","issueIds","workItems","paramIds","paramsList","ids","patch","op","issueBeforeRank","issueAfterRank","step","round","updateRelation","relation","relationUrl","updateRemoveObservable","updateAddObservable","relationIndex","_consctructIssueLink","createUrl","require","workItemServices","WorkItemFormNavigationService","getService","workItemNavSvc","openNewWorkItem","openWorkItem","pop","IssueMicrosoftService","UserMicrosoftService","cancelEvent","onCancel","HelpModalComponent","env","toolbarEvent","isLoading","toolbarHeight","gridHeight","modal","toolbar","formOptions","FormGroup","expandedMap","FormControl","expandedIssue","resize_NEW","onRenderingFinished","onConfigChanged","onSearchValueChanged","gridComponent","onModalCancel","TreeGridPageComponent","MapService","IntegralUICoreModule","NgModule","imports","CommonModule","FormsModule","declarations","IntegralUIDraggable","IntegralUIFocus","IntegralUITComponent","IntegralUITemplateOutlet","entryComponents","localStorage","setItem","getItem","searchValueChanged","pin","quickfilters","onModalSubmit","isQuickFilterApplied","filterId","forward","onSearchChange","TreeGridToolbarComponent","getBoard","TreeGridHeaderComponent","modalTitle","submitEvent","isDialogVisible","onSubmit","onDialogClosed","FormArray","GridDialogComponent","onItemChecked","GridDialogListComponent","IntegralUIDialog","isVisible","closing","opened","opening","IntegralUIFrame","startPos","currentPos","newSizeDistance","parentElem","sizeChanged","resizerElem","setElementClass","IntegralUIVisibility","Hover","hideFrame","showFrame","getElemSize","onMouseUp","updateSize","elemPadding","newSize","IntegralUIPaginator","minPageNumber","maxPageNumber","numPages","inputWidth","prevValue","updateCurrentPage","onCurrentPageChange","inputLabelElem","IntegralUIRange","defaultSettings","anchor","IntegralUIAnchorStyle","Top","maxHeight","minHeight","ref","resizeInterval","originalElemSize","currentSettings","originalParentSize","newParentSize","sizeChange","currentParentSize","onChange","parentPadding","Bottom","IntegralUIResize","prevElemSize","elemSizeChanged","isThereChange","borderWidth","IntegralUITooltipComponent","tooltipDisplay","tooltipPos","tooltipSize","tooltipOptions","openTimer","IntegralUITooltip","closeTooltip","tooltipRef","onMouseMove","integralui_groupbox_1","IntegralUIAccordion","numGroups","currentSelectedIndex","selectedComponent","prevComponent","toggleTimer","selectComponentByIndex","selectGroup","selectedGroup","clearGroups","insertGroupAt","insertGroupBefore","insertGroupAfter","removeGroupAt","getComponentFromGroup","closeGroups","collapseComponent","toggleGroups","endToggle","getGroupCurrentIndex","getGroupDataIndex","getGroupData","getGroupIndex","selectComponent","clearCmpSelection","IntegralUILayout","dataPanels","ctrlData","panels","panel","addChildPanels","addPanelToCurrentList","isPanelAllowed","parentBounds","updatePanelLayout","bounds","getCurrentPanelObj","currentBounds","currentOrientation","currentSize","remSize","ContentChild","TemplateRef","integralui_listgroup_1","IntegralUIListBar","buttonWidth","groupEventList","initScrollPos","isScrollVisible","scrollTimer","stopScrolling","attachGroupEvents","buttonUpElem","buttonDownElem","scrollUpPressed","startScroll","scrollUpReleased","stopScroll","scrollDownPressed","scrollDownReleased","listMouseWheel","setScrollPos","integralui_base_list_1","integralui_listitem_1","IntegralUIListBox","addItemToCurrentList","itemElems","IntegralUIListView","clientSpace","contentPos","currentItemSize","itemsPerColumn","itemsPerRow","numColumns","numRows","currentScrollMode","IntegralUIScrollMode","overflowSettings","updateOverflowSettings","scrollMode","getItemIndex","getLeftItem","getRightItem","updateLayoutVirtual","updateLayoutNormal","updateSelectedItem","listViewMouseWheel","updateSelectedItemFromElem","integralui_core_2","integralui_menuitem_1","IntegralUIContextMenuComponent","inverse","itemClick","menuOpened","menuClosed","trialTimer","contentRef","onRightClick","adjustPosition","openMode","menuSize","Above","IntegralUIContextMenu","viewContainer","isMenuActive","menuClick","menuOpening","itemTemplate","closeMenu","processMenuOpen","contextMenuRef","createMenuList","IntegralUIMenu","getItemParent","IntegralUISlide","IntegralUISlideBar","animationTimeout","animationTimer","arrowTopPos","arrowDisplay","numSlides","cloneAdded","blockMargin","slideSize","selectedSlideComponent","animationPause","slideAdding","slideAdded","slideChanged","slideRemoving","slideRemoved","selectSlideByIndex","slides","slideList","contentSlideList","checkClone","selectedSlide","changeSlide","clearSlides","addSlide","insertSlideAt","insertSlideBefore","insertSlideAfter","removeSlide","removeSlideAt","slide","getButtonClass","getSlideCurrentIndex","getSlideDataIndex","getSlideData","ctrlMouseEnter","ctrlMouseLeave","prevSlide","nextSlide","arrowElem","cancelAnimation","startAnimation","getSpeedFactor","stopAnimation","selectSlide","IntegralUISplitContainerTags","IntegralUISplitContainer","panel1Data","panel2Data","swap","tabSize","splitterBlockSize","swapButtonSize","tab1Size","tab1ContentSize","tab2Size","tab2ContentSize","panelClass","splitterClass","swapButtonClass","tabClass","panelsSwapped","panelClassName","splitterClassName","swapButtonClassName","tabClassName","splitter","swapButton","tab","ctrlRect","swapButtonClicked","splitterElem","tab1ContentElem","tab2ContentElem","ctrlMouseMove","getInlinePanel1Style","getInlinePanel2Style","getInlineSplitterStyle","getInlineTab1Style","getInlineTab1ContentStyle","getInlineTab2Style","getInlineTab2ContentStyle","getInlineHandleBlockStyle","getInlineHandleStyle","getInlineSwapButtonStyle","updateSplitterClass","getSplitterClass","updatePanelClass","getPanelClass","updateSwapButtonClass","getSwapButtonClass","updateTabClass","getTabClass","getPanelStyle","getSplitterGeneralStyle","getSwapButtonStyle","getTabStyle","getDefaultSplitterStyle","getDefaultStyle","getDefaultPanelStyle","integralui_tab_1","IntegralUITabStrip","dataTabs","numTabs","autoSizeValue","currentTabPlacement","IntegralUITabStripPlacement","tabSpacing","tabAdding","tabAdded","tabRemoving","tabRemoved","tabList","selectTab","selectedTab","tabs","tabHeaderClassName","addTab","clearTabs","insertTabAt","insertTabBefore","insertTabAfter","removeTab","removeTabAt","attachTabEvents","getTabCurrentIndex","getTabDataIndex","getTabData","getTabIndex","updateTabLayout","tabHeaders","tabClicked","tabEnter","tabLeave","getTabHeaderClass","IntegralUITreeGrid","IntegralUITreeListItem","IntegralUITreeList","animSpeed","prevData","itemData","nextData","leftBlockPos","rightBlockPos","leftBlockWidth","blockWidth","rightBlockWidth","leftBlockOpacity","rightBlockOpacity","headerItem","onItemMouseEnter","onItemMouseLeave","onItemMouseDown","onHeaderMouseDown","getItemState","integralui_treeitem_1","IntegralUITreeView","isThereChildItems","expandItem","ngAfterViewChecked","checkForChildren","updateIsThereChildItems","loadItems","addChildItems","expandBoxClicked","changeExpanded","getItemExpandBoxStyle","getDefaultItemExpandBoxStyle","onload","ready","platformBrowserDynamic","bootstrapModule","AppModule","setElementAttribute","containerRef","ngOnChanges","removeView","iuiTemplateOutlet","viewRef","createEmbeddedView","iuiTemplateOutletContext","IntegralUICheckState","IntegralUINumericDisplayMode","IntegralUIItemDisplayMode","IntegralUIIncrementMode","IntegralUIPlacement","ctrlState","styleChanged","stateChanged","getControlClass","componentRef","IntegralUIBaseValueComponent","_","onTouched","val","processValueChange","writeValue","registerOnChange","fn","registerOnTouched","layoutTimer","itemPos","positionType","iconSize","mouseUp","mouseMove","onClick","elemMargin","getIconStatus","resetPos","isFocused","focusTimeout_1","expandHorizontalClass","expandVerticalClass","expandArrowBottomLeftClass","expandArrowBottomRightClass","expandArrowVerticalClass","expandArrowTopLeftClass","expandArrowTopRightClass","animationType","expandClicked","getExpandVerticalClass","getExpandHorizontalClass","getExpandArrowBottomLeftClass","getExpandArrowBottomRightClass","getExpandArrowVerticalClass","getExpandArrowTopLeftClass","getExpandArrowTopRightClass","tvData","tvTimer","tvCycle","tvDefault","crpar","crtr","tvStyle","tempTimer","locals","isFilterCondition","beginsWith","endsWith","getFilterCondition","createFilterNode","setFilterNode","condition","negative","getMatchResult","getFilterResult","join","applyFilter","operator","Backend","AppComponent","AtlassianBackend","MicrosoftBackend","DndModule","forRoot","BrowserModule","HttpModule","ReactiveFormsModule","routing","TreegridModule","BaseRequestOptions","APP_ROUTER_PROVIDERS","provide","APP_BASE_HREF","useValue","pathname","lastIndexOf","useClass","deps","useFactory","defaultOptions","ModalComponent","FormTypeaheadComponent","HeaderComponent","HeaderMapComponent","HeaderConfigurationComponent","NotificationComponent","NotificationListComponent","DefaultComponent","LicenseComponent","UpgradeAtlassianComponent","ConfigurationMigrationAtlassianComponent","ConfigurationSettingsAtlassianComponent","SafePipe","PluralizePipe","TruncatePipe","DndDirective","DropdownDirective","FormControlValidator","LastDirective","bootstrap","appRoutes","RouterModule","_backend","_defaultOptions","_headers","headers","Headers","_serialize","_deserialize","catch","stack","_encode","searchParams","_request","_callback","observer","resolveConnection","ConnectionBackend","RequestOptions","debounce","pdf","filename","notification","HINT","SUCCESS","WARNING","ERROR","DEFAULT","TABLE_IMPORT","FLOW_PLAY","FLOWSTEP_PLAY","defaults","dismissOnTimeout","timeout","dismissButton","dismissOnClick","onDismiss","dnd","MAP_GRID_LANE","MAP_GRID_COLUMN","FEATURE","labels","tree","default","lane","NEW","all","notyetImplemented","readonly","statusCategory","colorName","_ngZone","eventName","_socket","run","_type","edit","editForm","form","_editForm","reset","_refresh","_cloneForm","abstractControl","control","props","controls","validator","asyncValidator","abstractControlItem","addControl","__editFormExtendArray","setValue","onlySelf","emitEvent","emitModelToViewChange","controlArray","prototypeControl","INTERVAL","created","now","_subscribe","dataErrorMessages","dataErrors","trackBy","notifications","dismiss","atlassianUser","microsoftUser","UserService","_parse","BoardService","FilterService","userService","regroup","groupBefore","groupAfter","indexBefore","indexAfter","indexes","_group","_rank","issueIndex","isEpicGroupItem","isFeatureGroupItem","isGroupItem","_isEpicGroup","newGroups","oldGroups","newGroupIds","itemGroup","itemIndex","oldGroupIds","groupIndex","reorder","indexOld","indexNew","render","columnType","laneType","filterGroups","_renderGroups","_renderIssues","addLock","removeLock","hidden","groupLane","groupColumn","rankLast","parseFloat","_groupCreate","indexOutput","parentIssueId","parentIssueIndex","parentIssue","grandParentIssueId","grandparentIssueIndex","grandparentIssue","_isFeatureGroup","elementRef","showEvent","shownEvent","hideEvent","hiddenEvent","el","$","shown","optionValue","optionLabel","select","debounceDelay","inputControl","getTime","valueChanges","debounceTime","onSelect","option","optionLabelInput","printEvent","routeSubscription","styles","ActivatedRoute","boards","filters","itemMap","itemBoard","onImport","patchValue","formFilter","supergroups","dirty","formFilterColumnSubscription","mapIssues","formFilterLaneSubscription","mapFilter","controlItems","highlightA","highlightB","itemFind","removeControl","onPrint","element","querySelector","elementNewColumn","allowTaint","logging","useCORS","onrendered","canvas","image","toDataURL","paperSize","paperOrientation","doc","addImage","save","MapComponent","getFilterPreferences","onSearch","regex","RegExp","excluded","test","onClickOption","controlGroupType","controlGroup","isGroupTypeDirty","setGroupIssuesState","controlGroups","itemName","setFilterPreferences","MapFilterComponent","cdRef","issueGroupModal","newGroupIssues","isDragged","formSubscription","onDragStart","addEventListener","onDragEnd","once","onDropGroup","onDropIssue","indexLane","indexColumn","onRankIssue","isNew","onUpdateIssueGroup","onUpdateIssue","onUpdateIssueProperties","mapGroup","mapIndex","groupType","issueGroupForm","_issueGroupForm","onUpdateIssueGroupSubmit","onUpdateIssueGroupCancel","Validators","required","issuePropertiesForm","_issuePropertiesForm","onUpdateIssuePropertiesSubmit","oldValue","onUpdateIssuePropertiesCancel","_groupTrackBy","_issueIndexTrackBy","onColumnsRenderingFinished","MapGridComponent","issueSubissuesModal","onEditDescription","onSubmitDescription","onShowIssueSubissues","onCancelIssueSubissues","MapGridIssueComponent","showSubissuesEvent","MapGridIssueActionsComponent","MapGridIssuePropertiesComponent","subissues","MapGridIssueSubissuesComponent","userValue","user","userLabel","userLabelInput","userSearch","username","issueValue","issueLabel","issueLabelInput","issueSearch","matches","MapGridIssueGroupAtlassianComponent","MapGridIssueGroupMicrosoftComponent","MapGridGroupComponent","MapTreeComponent","sourceIndex","getDropPosHalf","innerBounds","getDropPosHorizontal","getDropPosVertical","isNaN","hitTest","allowSelection","IntegralUICommonModule","localeCompare","processProgressAggregation","processSummaryAggregation","processAverageAggregation","processPointsAggregation","issueFieldID","issueIcon","statusColor","getIconFromIssueField","numValues","convertListToText","getDateFormat","total","count","cellRelated","numValue","getAverageFromChildren","subSummary","getPointsFromChildren","progressValue","getProgressFromChildren","getSummaryFromChildren","locale","loc","TreeGridFilterBarComponent","IntegralUIModule","IntegralUIAccordionModule","IntegralUIBaseGridModule","IntegralUIBaseListModule","IntegralUIGridModule","IntegralUILayoutModule","IntegralUIListBarModule","IntegralUIListBoxModule","IntegralUIListViewModule","IntegralUIMenuModule","IntegralUISlideBarModule","IntegralUISplitContainerModule","IntegralUITabStripModule","IntegralUITreeGridModule","IntegralUITreeListModule","IntegralUITreeViewModule","common_1","forms_1","integralui_core_module_1","integralui_layout_1","ondragover","onDropdownShow","onDropdownShown","onDropdownHide","onDropdownHidden","_getForm","_isValid","statusChanges","root","valid","pristine","submitted","removeClass","addClass","onLastDone","isLast","changeDetectorRef","transform","limitTo","args","suffix","Pipe","plural","pattern","replace","sanitizer","bypassSecurityTrustStyle","DomSanitizer","XSSI_PREFIX","reqAtlassian","baseResponseOptions","request","response","responseObserver","_req","setDetectedContentType","getBody","RequestMethod","method","toUpperCase","contentType","success","xhrText","xhrResult","xhr","fromResponseHeaderString","getAllResponseHeaders","responseOptions","ResponseOptions","merge","ok","isSuccess","ResponseType","AtlassianConnection","_baseResponseOptions","createConnection","_browserXHR","_xsrfStrategy","_token","validTo","VSS_Auth_Service","getAccessToken","token","_tokenHeader","authTokenManager","getAuthorizationHeader","urlSeachParams","Patch","configureRequest","XHRConnection","BrowserXhr","XSRFStrategy"],"mappings":"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,m9G,uBAyEK,EAAAiV,WACG,EAAAC,gBARP+jE,E,CAAb,GAAa,EAAAA,4B,6cC7Eb,WAEA,OACA,OACA,QACA,SAEA,SACA,SACA,SACA,SACA,SACA,SACA,SAsBA,0BACA,QADanV,EAAc,GApB1B,EAAAzd,SAAS,CACTI,aAAc,CACb,EAAA3xC,sBACA,EAAA4yC,yBACA,EAAA1wB,kBACA,EAAAkvB,sBACA,EAAA0B,wBACA,EAAAO,oBACA,EAAAE,wBACA,EAAAtD,oBAEDuB,QAAS,CACR,EAAAC,aACA,EAAAod,WACA,EAAAnd,YACA,EAAA0yB,kBAEDj5E,UAAW,MAGC6jE,E,CAAb,GAAa,EAAAA,gB,+cCnCb,WACA,OACA,OAEA,QACA,QAEA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SAGA,SACA,SACA,SACA,OACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,SAEA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UACA,UAmEA,2BAAgC,QAAnBoV,EAAgB,GAhE5B,EAAA7yB,SAAS,CACPC,QAAS,CACJ,EAAAC,aACA,EAAAC,YACA,EAAAJ,qBACA,EAAAoxB,uBACA,EAAA2B,0BACA,EAAAC,yBACA,EAAAC,yBACA,EAAAC,qBACA,EAAAC,uBACA,EAAAC,wBACA,EAAAC,wBACA,EAAAC,yBACA,EAAAC,qBACA,EAAAC,yBACA,EAAAC,+BACA,EAAAC,yBACA,EAAAC,yBACA,EAAAC,yBACA,EAAAC,0BAELtsG,QAAS,CACJ,EAAA4+E,oBACI,EAAAn7E,mBACA,EAAAyvB,mBACA,EAAAk2B,mBACA,EAAA87B,sBACJ,EAAAvK,iBACI,EAAA5B,oBACJ,EAAA7vB,mBACA,EAAA8vB,gBACA,EAAAgC,gBACA,EAAAhyB,eACF,EAAAlqB,mBAAoB,EAAAF,uBAClB,EAAAwD,qBACA,EAAA+C,eACA,EAAAk7C,iBACA,EAAAmB,kBACA,EAAAoB,kBACA,EAAAp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","file":"js/index.427ddd9d8f4630bc79ba.bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([381,1,2]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require(\"@angular/core\");\r\nvar integralui_core_1 = require(\"./integralui.core\");\r\nvar integralui_common_service_1 = require(\"../services/integralui.common.service\");\r\nvar integralui_data_service_1 = require(\"../services/integralui.data.service\");\r\nvar integralui_dragdrop_service_1 = require(\"../services/integralui.dragdrop.service\");\r\nvar integralui_filter_service_1 = require(\"../services/integralui.filter.service\");\r\n// ---------------------------------------------------------------------------------------\r\n// IntegralUI Direction Enumeration\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIDirection;\r\n(function (IntegralUIDirection) {\r\n    IntegralUIDirection[IntegralUIDirection[\"After\"] = 0] = \"After\";\r\n    IntegralUIDirection[IntegralUIDirection[\"At\"] = 1] = \"At\";\r\n    IntegralUIDirection[IntegralUIDirection[\"Before\"] = 2] = \"Before\";\r\n    IntegralUIDirection[IntegralUIDirection[\"Down\"] = 3] = \"Down\";\r\n    IntegralUIDirection[IntegralUIDirection[\"First\"] = 4] = \"First\";\r\n    IntegralUIDirection[IntegralUIDirection[\"Left\"] = 5] = \"Left\";\r\n    IntegralUIDirection[IntegralUIDirection[\"Last\"] = 6] = \"Last\";\r\n    IntegralUIDirection[IntegralUIDirection[\"Right\"] = 7] = \"Right\";\r\n    IntegralUIDirection[IntegralUIDirection[\"Up\"] = 8] = \"Up\";\r\n})(IntegralUIDirection = exports.IntegralUIDirection || (exports.IntegralUIDirection = {}));\r\n// ---------------------------------------------------------------------------------------\r\n// IntegralUI GridLines Enumeration\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIGridLines;\r\n(function (IntegralUIGridLines) {\r\n    IntegralUIGridLines[IntegralUIGridLines[\"None\"] = 0] = \"None\";\r\n    IntegralUIGridLines[IntegralUIGridLines[\"Horizontal\"] = 1] = \"Horizontal\";\r\n    IntegralUIGridLines[IntegralUIGridLines[\"Vertical\"] = 2] = \"Vertical\";\r\n    IntegralUIGridLines[IntegralUIGridLines[\"Both\"] = 3] = \"Both\";\r\n})(IntegralUIGridLines = exports.IntegralUIGridLines || (exports.IntegralUIGridLines = {}));\r\n// ---------------------------------------------------------------------------------------\r\n// IntegralUI DragDrop Display Mode Enumeration\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIDragDropDisplayMode;\r\n(function (IntegralUIDragDropDisplayMode) {\r\n    IntegralUIDragDropDisplayMode[IntegralUIDragDropDisplayMode[\"Popup\"] = 0] = \"Popup\";\r\n    IntegralUIDragDropDisplayMode[IntegralUIDragDropDisplayMode[\"Handle\"] = 1] = \"Handle\";\r\n})(IntegralUIDragDropDisplayMode = exports.IntegralUIDragDropDisplayMode || (exports.IntegralUIDragDropDisplayMode = {}));\r\nvar IntegralUIBaseGrid = (function (_super) {\r\n    __extends(IntegralUIBaseGrid, _super);\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUIBaseGrid(dataService, dragDropService, elemRef, elemRenderer, commonService, filterService, changeRef, cmpResolver) {\r\n        var _this = _super.call(this, commonService) || this;\r\n        _this.dataService = dataService;\r\n        _this.dragDropService = dragDropService;\r\n        _this.elemRef = elemRef;\r\n        _this.elemRenderer = elemRenderer;\r\n        _this.commonService = commonService;\r\n        _this.filterService = filterService;\r\n        _this.changeRef = changeRef;\r\n        _this.cmpResolver = cmpResolver;\r\n        _this.dragGhost = null;\r\n        _this.emptyRowObj = {\r\n            cells: [],\r\n            draggable: false,\r\n            isEmpty: true,\r\n            status: 1,\r\n            style: {}\r\n        };\r\n        _this.prevEmptyRowObj = {\r\n            cells: [],\r\n            draggable: false,\r\n            isEmptyPrev: true,\r\n            status: 2,\r\n            style: {}\r\n        };\r\n        _this.dragMode = IntegralUIDragDropDisplayMode.Handle;\r\n        // Variables -------------------------------------------------------------------------\r\n        // Data\r\n        _this.currentColumnList = [];\r\n        _this.currentRowList = [];\r\n        _this.dataColumns = [];\r\n        _this.dataRows = [];\r\n        _this.options = {};\r\n        _this.scrollColumnList = [];\r\n        _this.scrollRowList = [];\r\n        _this.columnDataKey = 'columns';\r\n        _this.rowDataKey = 'rows';\r\n        // Drag Drop\r\n        _this.dropMarkElem = null;\r\n        _this.dragCmpRef = null;\r\n        _this.dragCmp = null;\r\n        _this.cloneElem = null;\r\n        _this.cloneElemStartPos = { x: 0, y: 0 };\r\n        _this.isCtrlDragEntered = false;\r\n        _this.isFirstDragEnter = false;\r\n        _this.isDragHandleVisible = false;\r\n        _this.dragRowList = [];\r\n        _this.targetDropRow = null;\r\n        _this.targetDropPos = -1;\r\n        _this.prevTargetDropPos = -1;\r\n        _this.dragHandlePos = { top: -9999999, left: 0 };\r\n        _this.dragObjIndent = 0;\r\n        _this.isDragActive = false;\r\n        _this.dragStartPos = { x: 0, y: 0 };\r\n        _this.dragEndPos = { x: 0, y: 0 };\r\n        // General\r\n        _this.expandColIndex = 0;\r\n        _this.hoverColumn = null;\r\n        _this.hoverRow = null;\r\n        _this.isGridHovered = false;\r\n        _this.currentIndex = 0;\r\n        _this.prevIndex = 0;\r\n        _this.tabIndexCount = 0;\r\n        _this.gridCursor = 'default';\r\n        // Hovering\r\n        _this.columnStartPos = { x: 0, y: 0 };\r\n        _this.resizeColumn = null;\r\n        _this.resizeColumnIndex = -1;\r\n        _this.reorderColumn = null;\r\n        _this.columnReorderActive = false;\r\n        // Keyboard Navigation\r\n        _this.currentFocusCell = null;\r\n        _this.isKeyboardActive = false;\r\n        // Layout\r\n        _this.allowUpdate = true;\r\n        _this.avgRowHeight = 0;\r\n        _this.columnPadding = { top: 0, right: 0, bottom: 0, left: 0 };\r\n        _this.currentGridLines = IntegralUIGridLines.Both;\r\n        _this.headerHeight = 0;\r\n        _this.footerHeight = 0;\r\n        _this.viewIndexRange = { left: 0, middle: 999, right: 999 };\r\n        _this.visibleRange = 1;\r\n        _this.isAutoSizeColumnsActive = false;\r\n        _this.isHeaderVisible = true;\r\n        _this.isFooterVisible = true;\r\n        _this.scrollSize = { width: 0, height: 0 };\r\n        _this.clientRect = { width: 0, height: 0 };\r\n        _this.contentLeftPos = 0;\r\n        _this.allColWidth = 0;\r\n        _this.prevClientRect = { width: 0, height: 0 };\r\n        _this.horScrollElemPos = { bottom: 0 };\r\n        _this.cornerScrollElemPos = { bottom: 0 };\r\n        _this.paginatorPos = { top: 0, left: 0 };\r\n        // Pagination\r\n        _this.currentPageNumber = 1;\r\n        _this.onlyCurrentPage = false;\r\n        _this.currentPageList = [];\r\n        _this.pageNumber = 0;\r\n        _this.pageList = [];\r\n        _this.pageRowCount = 0;\r\n        _this.paginatorHeight = 0;\r\n        // Reorder\r\n        _this.originalScrollColumnList = [];\r\n        _this.reorderColumnObj = null;\r\n        _this.reorderColumnObjPos = { top: 0, left: 0 };\r\n        _this.reorderColumnStartPos = { top: 0, left: 0 };\r\n        _this.reorderColumnCurrentPos = { top: 0, left: 0 };\r\n        _this.reorderColIndex = -1;\r\n        _this.reorderNewColIndex = -1;\r\n        _this.startColumnReorder = false;\r\n        // Resizing\r\n        _this.isColumnResizing = false;\r\n        // Scrolling\r\n        _this.currentScrollPos = { x: 0, y: 0 };\r\n        _this.maxScrollPos = { x: 0, y: 0 };\r\n        _this.accelerator = 0.5;\r\n        _this.scrollTimerID = null;\r\n        _this.isScrollTimerActive = false;\r\n        _this.scrollCount = 0;\r\n        _this.isScrollActive = false;\r\n        _this.prevScrollPos = { x: 0, y: 0 };\r\n        _this.scrollBarSize = { width: 0, height: 0 };\r\n        _this.scrollLargeChange = { x: 0, y: 0 };\r\n        // Selection\r\n        _this.currentSelectedColumn = null;\r\n        _this.currentSelectedRow = null;\r\n        _this.currentSelectionMode = integralui_core_1.IntegralUISelectionMode.One;\r\n        _this.shiftFirstSelectedRow = null;\r\n        _this.removeIndex = -1;\r\n        _this.currentSelectedRows = [];\r\n        // Touch\r\n        _this.isExpandBoxTouched = false;\r\n        _this.touchStartPos = { x: 0, y: 0 };\r\n        _this.touchEndPos = { x: 0, y: 0 };\r\n        _this.rowHeight = 0;\r\n        // Events ----------------------------------------------------------------------------\r\n        _this.afterSelect = new core_1.EventEmitter();\r\n        _this.beforeEdit = new core_1.EventEmitter();\r\n        _this.beforeSelect = new core_1.EventEmitter();\r\n        _this.beforeUpdate = new core_1.EventEmitter();\r\n        _this.change = new core_1.EventEmitter();\r\n        _this.columnAdding = new core_1.EventEmitter();\r\n        _this.columnAdded = new core_1.EventEmitter();\r\n        _this.columnClick = new core_1.EventEmitter();\r\n        _this.columnOrderChanged = new core_1.EventEmitter();\r\n        _this.columnRemoving = new core_1.EventEmitter();\r\n        _this.columnRemoved = new core_1.EventEmitter();\r\n        _this.columnsCleared = new core_1.EventEmitter();\r\n        _this.columnSizeChanged = new core_1.EventEmitter();\r\n        _this.dragEnter = new core_1.EventEmitter();\r\n        _this.dragDrop = new core_1.EventEmitter();\r\n        _this.dragLeave = new core_1.EventEmitter();\r\n        _this.dragOver = new core_1.EventEmitter();\r\n        _this.dragStart = new core_1.EventEmitter();\r\n        _this.keyDown = new core_1.EventEmitter();\r\n        _this.keyPress = new core_1.EventEmitter();\r\n        _this.keyUp = new core_1.EventEmitter();\r\n        _this.pageChanged = new core_1.EventEmitter();\r\n        _this.rowAdding = new core_1.EventEmitter();\r\n        _this.rowAdded = new core_1.EventEmitter();\r\n        _this.rowClick = new core_1.EventEmitter();\r\n        _this.rowDblClick = new core_1.EventEmitter();\r\n        _this.rowHover = new core_1.EventEmitter();\r\n        _this.rowRemoving = new core_1.EventEmitter();\r\n        _this.rowRemoved = new core_1.EventEmitter();\r\n        _this.rowsCleared = new core_1.EventEmitter();\r\n        _this.loadComplete = new core_1.EventEmitter();\r\n        _this.scrollPosChanged = new core_1.EventEmitter();\r\n        _this.selectionChanged = new core_1.EventEmitter();\r\n        _this.updateComplete = new core_1.EventEmitter();\r\n        // Sorting ---------------------------------------------------------------------------\r\n        _this.sortColumn = null;\r\n        _this.sortComparer = null;\r\n        // Style -----------------------------------------------------------------------------\r\n        _this.targetDropObj = null;\r\n        _this.updateOptions();\r\n        return _this;\r\n    }\r\n    IntegralUIBaseGrid.prototype.getEmptyObj = function (status) {\r\n        var found = null;\r\n        for (var i = 0; i < this.scrollRowList.length; i++) {\r\n            if (this.scrollRowList[i].status == status) {\r\n                found = this.scrollRowList[i];\r\n                break;\r\n            }\r\n        }\r\n        return found;\r\n    };\r\n    IntegralUIBaseGrid.prototype.removeEmptyRow = function (status) {\r\n        var obj = this.getEmptyObj(status);\r\n        if (obj) {\r\n            var index = this.scrollRowList.indexOf(obj);\r\n            if (index >= 0)\r\n                this.scrollRowList.splice(index, 1);\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.updateDragHandlePos = function (e) { };\r\n    IntegralUIBaseGrid.prototype.updateScrollRowListDragOver = function (row) { };\r\n    Object.defineProperty(IntegralUIBaseGrid.prototype, \"allowColumnReorder\", {\r\n        set: function (value) {\r\n            this.options.allowColumnReorder = value;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIBaseGrid.prototype, \"allowDrag\", {\r\n        set: function (value) {\r\n            this.options.allowDrag = value;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIBaseGrid.prototype, \"allowDrop\", {\r\n        set: function (value) {\r\n            this.options.allowDrop = value;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIBaseGrid.prototype, \"allowFilter\", {\r\n        set: function (value) {\r\n            this.options.allowFilter = value;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIBaseGrid.prototype, \"allowFocus\", {\r\n        set: function (value) {\r\n            this.options.allowFocus = value;\r\n            if (!value)\r\n                this.currentFocusCell = null;\r\n            this.refresh();\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIBaseGrid.prototype, \"autoSizeColumns\", {\r\n        get: function () {\r\n            return this.isAutoSizeColumnsActive;\r\n        },\r\n        set: function (value) {\r\n            if (this.isAutoSizeColumnsActive != value) {\r\n                this.isAutoSizeColumnsActive = value;\r\n                this.updateLayout();\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIBaseGrid.prototype, \"columns\", {\r\n        get: function () {\r\n            return this.dataColumns;\r\n        },\r\n        set: function (value) {\r\n            this.dataColumns = value;\r\n            this.updateData();\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIBaseGrid.prototype, \"dataFields\", {\r\n        set: function (value) {\r\n            this.updateDataFields(value);\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIBaseGrid.prototype, \"focusedCell\", {\r\n        get: function () {\r\n            return this.currentFocusCell;\r\n        },\r\n        set: function (value) {\r\n            if (this.currentFocusCell != value)\r\n                this.currentFocusCell = value;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIBaseGrid.prototype, \"gridLines\", {\r\n        get: function () {\r\n            return this.currentGridLines;\r\n        },\r\n        set: function (value) {\r\n            if (this.currentGridLines != value) {\r\n                this.currentGridLines = value;\r\n                this.refresh();\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIBaseGrid.prototype, \"paging\", {\r\n        set: function (value) {\r\n            this.updatePaging(value);\r\n            this.resetPageNumber();\r\n            this.updateCurrentLayout();\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIBaseGrid.prototype, \"rows\", {\r\n        get: function () {\r\n            return this.dataRows;\r\n        },\r\n        set: function (value) {\r\n            this.dataRows = value;\r\n            this.updateData();\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIBaseGrid.prototype, \"selectedColumn\", {\r\n        get: function () {\r\n            return this.currentSelectedColumn;\r\n        },\r\n        set: function (value) {\r\n            if (this.currentSelectedColumn != value)\r\n                this.processColumnSelection(null, value);\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIBaseGrid.prototype, \"selectedRow\", {\r\n        get: function () {\r\n            return this.currentSelectedRow;\r\n        },\r\n        set: function (value) {\r\n            if (this.currentSelectedRow != value)\r\n                this.processRowSelection(null, value);\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIBaseGrid.prototype, \"selectionMode\", {\r\n        get: function () {\r\n            return this.currentSelectionMode;\r\n        },\r\n        set: function (value) {\r\n            if (this.currentSelectionMode != value) {\r\n                this.currentSelectionMode = value;\r\n                this.clearPrevSelection(this.currentSelectionMode != integralui_core_1.IntegralUISelectionMode.None ? this.currentSelectedRow : null);\r\n                this.refresh();\r\n                if (this.currentSelectionMode == integralui_core_1.IntegralUISelectionMode.None) {\r\n                    this.currentSelectedRow = null;\r\n                    this.selectionChanged.emit(null);\r\n                }\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIBaseGrid.prototype, \"showScroll\", {\r\n        get: function () {\r\n            return this.options.showScroll;\r\n        },\r\n        set: function (value) {\r\n            this.updateShowScroll(value);\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIBaseGrid.prototype, \"sorting\", {\r\n        set: function (value) {\r\n            this.options.sorting = value;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    IntegralUIBaseGrid.prototype.ngOnInit = function () {\r\n        this.dataService.init([\r\n            { data: this.columns, fields: this.options.columnFields, key: this.columnDataKey },\r\n            { data: this.rows, fields: this.options.rowFields, key: this.rowDataKey }\r\n        ]);\r\n    };\r\n    // Add/Remove ------------------------------------------------------------------------\r\n    // Columns\r\n    IntegralUIBaseGrid.prototype.addColumn = function (column) {\r\n        this.callEventAddColumn('add', column);\r\n    };\r\n    IntegralUIBaseGrid.prototype.clearColumns = function () {\r\n        this.dataService.clear(null, this.columnDataKey);\r\n        this.columnsCleared.emit(null);\r\n        this.currentScrollPos.x = 0;\r\n    };\r\n    IntegralUIBaseGrid.prototype.insertColumnAt = function (column, index) {\r\n        this.callEventAddColumn('at', column, index);\r\n    };\r\n    IntegralUIBaseGrid.prototype.insertColumnBefore = function (column, refColumn) {\r\n        this.callEventAddColumn('ref', column, -1, refColumn);\r\n    };\r\n    IntegralUIBaseGrid.prototype.insertColumnAfter = function (column, refColumn) {\r\n        this.callEventAddColumn('ref', column, -1, refColumn, true);\r\n    };\r\n    IntegralUIBaseGrid.prototype.removeColumn = function (column) {\r\n        return this.callEventRemoveColumn(column);\r\n    };\r\n    IntegralUIBaseGrid.prototype.removeColumnAt = function (index) {\r\n        return this.callEventRemoveColumn(null, index);\r\n    };\r\n    IntegralUIBaseGrid.prototype.callEventAddColumn = function (type, column, index, refColumn, flag) {\r\n        var eventObj = { cancel: false, column: column };\r\n        this.columnAdding.emit(eventObj);\r\n        if (eventObj.cancel != true) {\r\n            switch (type) {\r\n                case 'at':\r\n                    this.dataService.insert(column, index, null, null, false, this.columnDataKey);\r\n                    break;\r\n                case 'ref':\r\n                    this.dataService.insertByRef(column, refColumn, flag, this.columnDataKey);\r\n                    break;\r\n                default:\r\n                    this.dataService.insert(column, -1, null, null, false, this.columnDataKey);\r\n                    break;\r\n            }\r\n            this.columnAdded.emit({ column: column });\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.callEventRemoveColumn = function (column, index) {\r\n        var eventObj = { cancel: false, column: column };\r\n        this.columnRemoving.emit(eventObj);\r\n        if (eventObj.cancel != true) {\r\n            this.removeIndex = this.columns ? this.columns.indexOf(column) : -1;\r\n            var retValue = this.dataService.removeAt(column, index, null, this.columnDataKey);\r\n            if (retValue.result) {\r\n                this.columnRemoved.emit({ column: retValue.obj });\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    };\r\n    // Rows\r\n    IntegralUIBaseGrid.prototype.addRow = function (row, parent) {\r\n        this.callEventAddRow('add', row, -1, parent);\r\n    };\r\n    IntegralUIBaseGrid.prototype.clearRows = function (parent) {\r\n        this.dataService.clear(parent, this.rowDataKey);\r\n        this.rowsCleared.emit({ parent: parent });\r\n        this.clearSelection();\r\n        this.currentScrollPos.y = 0;\r\n    };\r\n    IntegralUIBaseGrid.prototype.insertRowAt = function (row, index, parent) {\r\n        this.callEventAddRow('at', row, index, parent);\r\n    };\r\n    IntegralUIBaseGrid.prototype.insertRowBefore = function (row, refRow) {\r\n        this.callEventAddRow('ref', row, -1, null, refRow);\r\n    };\r\n    IntegralUIBaseGrid.prototype.insertRowAfter = function (row, refRow) {\r\n        this.callEventAddRow('ref', row, -1, null, refRow, true);\r\n    };\r\n    IntegralUIBaseGrid.prototype.removeRow = function (row) {\r\n        return this.callEventRemoveRow(row);\r\n    };\r\n    IntegralUIBaseGrid.prototype.removeRowAt = function (index, parent) {\r\n        return this.callEventRemoveRow(null, index, parent);\r\n    };\r\n    IntegralUIBaseGrid.prototype.callEventAddRow = function (type, row, index, parent, refRow, flag) {\r\n        var eventObj = { cancel: false, row: row };\r\n        this.rowAdding.emit(eventObj);\r\n        if (eventObj.cancel != true) {\r\n            switch (type) {\r\n                case 'at':\r\n                    this.dataService.insert(row, index, parent, null, false, this.rowDataKey);\r\n                    break;\r\n                case 'ref':\r\n                    this.dataService.insertByRef(row, refRow, flag, this.rowDataKey);\r\n                    break;\r\n                default:\r\n                    this.dataService.insert(row, -1, parent, null, false, this.rowDataKey);\r\n                    break;\r\n            }\r\n            this.rowAdded.emit({ row: row });\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.callEventRemoveRow = function (row, index, parent) {\r\n        var eventObj = { cancel: false, row: row };\r\n        this.rowRemoving.emit(eventObj);\r\n        if (eventObj.cancel != true) {\r\n            this.removeIndex = this.rows ? this.rows.indexOf(row) : -1;\r\n            var retValue = this.dataService.removeAt(row, index, parent, this.rowDataKey);\r\n            if (retValue.result) {\r\n                this.rowRemoved.emit({ row: retValue.obj });\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    };\r\n    // Data ------------------------------------------------------------------------------\r\n    IntegralUIBaseGrid.prototype.updateData = function () { };\r\n    IntegralUIBaseGrid.prototype.updateDataFields = function (data) {\r\n        if (data) {\r\n            this.updateColumnFields(data.column);\r\n            this.updateRowFields(data.row);\r\n            this.updateCellFields(data.cell);\r\n        }\r\n        else {\r\n            this.updateColumnFields();\r\n            this.updateRowFields();\r\n            this.updateCellFields();\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.updateOptions = function (value) {\r\n        if (value) {\r\n            this.options = {\r\n                allowAnimation: this.commonService.isFieldAvailable(value.allowAnimation, true),\r\n                allowCellFocus: this.commonService.isFieldAvailable(value.allowCellFocus, true),\r\n                allowColumnReorder: this.commonService.isFieldAvailable(value.allowColumnReorder, false),\r\n                allowDrag: this.commonService.isFieldAvailable(value.allowDrag, false),\r\n                allowDrop: this.commonService.isFieldAvailable(value.allowDrop, true),\r\n                allowFilter: this.commonService.isFieldAvailable(value.allowFilter, false),\r\n                allowFocus: this.commonService.isFieldAvailable(value.allowFocus, false),\r\n                animationSpeed: 200,\r\n                autoExpand: this.commonService.isFieldAvailable(value.autoExpand, true),\r\n                displayMode: this.commonService.isFieldAvailable(value.displayMode, 'normal'),\r\n                editorSettings: { activate: 'click' },\r\n                enabled: this.commonService.isFieldAvailable(value.enabled, true),\r\n                expandColIndex: this.commonService.isFieldAvailable(value.expandColIndex, this.options.expandColIndex != undefined ? this.options.expandColIndex : 0),\r\n                fillSpace: this.commonService.isFieldAvailable(value.fillSpace, false),\r\n                gridLines: this.commonService.isFieldAvailable(value.gridLines, 'both'),\r\n                hoverSelection: this.commonService.isFieldAvailable(value.hoverSelection, false),\r\n                indent: this.commonService.isFieldAvailable(value.indent, 15),\r\n                labelEdit: this.commonService.isFieldAvailable(value.labelEdit, false),\r\n                loadRows: [],\r\n                mouseWheelSpeed: this.commonService.isFieldAvailable(value.mouseWheelSpeed, 'normal'),\r\n                pathSeparator: this.commonService.isFieldAvailable(value.pathSeparator, '\\\\'),\r\n                rowHeight: this.commonService.isFieldAvailable(value.rowHeight, -1),\r\n                rtl: this.commonService.isFieldAvailable(value.rtl, false),\r\n                selectedColumn: this.commonService.isFieldAvailable(value.selectedColumn, this.currentSelectedColumn ? this.currentSelectedColumn : null),\r\n                selectedIndex: -1,\r\n                selectedRow: this.commonService.isFieldAvailable(value.selectedRow, this.currentSelectedRow ? this.currentSelectedRow : null),\r\n                selectedRows: [],\r\n                selectionMode: this.commonService.isFieldAvailable(value.selectionMode, integralui_core_1.IntegralUISelectionMode.One),\r\n                showFooter: this.commonService.isFieldAvailable(value.showFooter, true),\r\n                showHeader: this.commonService.isFieldAvailable(value.showHeader, true),\r\n                showIcons: this.commonService.isFieldAvailable(value.showIcons, true),\r\n                sorting: this.commonService.isFieldAvailable(value.sorting, integralui_core_1.IntegralUISortOrder.None)\r\n            };\r\n            this.updatePaging(value.paging);\r\n            this.updateDataFields(value.dataFields);\r\n            this.updateShowScroll(value.showScroll);\r\n        }\r\n        else {\r\n            this.options = {\r\n                allowAnimation: true,\r\n                allowCellFocus: true,\r\n                allowColumnReorder: false,\r\n                allowDrag: false,\r\n                allowDrop: true,\r\n                allowFilter: false,\r\n                allowFocus: false,\r\n                animationSpeed: 200,\r\n                autoExpand: true,\r\n                displayMode: 'normal',\r\n                editorSettings: { activate: 'click' },\r\n                enabled: true,\r\n                expandColIndex: 0,\r\n                fillSpace: false,\r\n                gridLines: 'both',\r\n                hoverSelection: false,\r\n                indent: 15,\r\n                labelEdit: false,\r\n                loadRows: [],\r\n                mouseWheelSpeed: 'normal',\r\n                pathSeparator: '\\\\',\r\n                rowHeight: -1,\r\n                rtl: false,\r\n                selectedColumn: null,\r\n                selectedIndex: -1,\r\n                selectedRow: null,\r\n                selectedRows: [],\r\n                selectionMode: integralui_core_1.IntegralUISelectionMode.One,\r\n                showFooter: true,\r\n                showHeader: true,\r\n                showIcons: true,\r\n                sorting: integralui_core_1.IntegralUISortOrder.None\r\n            };\r\n            this.updatePaging();\r\n            this.updateDataFields();\r\n            this.updateShowScroll();\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.updateColumnFields = function (fields) {\r\n        if (fields)\r\n            this.options.columnFields = {\r\n                aggregation: fields.aggregation ? fields.aggregation : 'aggregation',\r\n                allowDrag: fields.allowDrag ? fields.allowDrag : 'allowDrag',\r\n                allowDrop: fields.allowDrop ? fields.allowDrop : 'allowDrop',\r\n                allowFilter: fields.allowFilter ? fields.allowFilter : 'allowFilter',\r\n                allowGrouping: fields.allowGrouping ? fields.allowGrouping : 'allowGrouping',\r\n                allowResize: fields.allowResize ? fields.allowResize : 'allowResize',\r\n                canSelect: fields.canSelect ? fields.canSelect : 'canSelect',\r\n                cellTemplateUrl: fields.cellTemplateUrl ? fields.cellTemplateUrl : 'cellTemplateUrl',\r\n                comparer: fields.comparer ? fields.comparer : 'comparer',\r\n                contentAlignment: fields.contentAlignment ? fields.contentAlignment : 'contentAlignment',\r\n                contextMenu: fields.contextMenu ? fields.contextMenu : 'contextMenu',\r\n                editorType: fields.editorType ? fields.editorType : 'editorType',\r\n                editorSettings: fields.editorSettings ? fields.editorSettings : 'editorSettings',\r\n                editorTemplate: fields.editorTemplate ? fields.editorTemplate : 'editorTemplate',\r\n                filterParams: fields.filterParams ? fields.filterParams : 'filterParams',\r\n                filterTemplate: fields.filterTemplate ? fields.filterTemplate : 'filterTemplate',\r\n                fixed: fields.fixed ? fields.fixed : 'fixed',\r\n                fixedWidth: fields.fixedWidth ? fields.fixedWidth : 'fixedWidth',\r\n                footerAlignment: fields.footerAlignment ? fields.footerAlignment : 'footerAlignment',\r\n                footerContent: fields.footerContent ? fields.footerContent : 'footerContent',\r\n                footerTemplate: fields.footerTemplate ? fields.footerTemplate : 'footerTemplate',\r\n                footerTemplateModel: fields.footerTemplateModel ? fields.footerTemplateModel : 'footerTemplateModel',\r\n                footerText: fields.footerText ? fields.footerText : 'footerText',\r\n                footerTooltip: fields.footerTooltip ? fields.footerTooltip : 'footerTooltip',\r\n                groupText: fields.groupText ? fields.groupText : 'groupText',\r\n                headerAlignment: fields.headerAlignment ? fields.headerAlignment : 'headerAlignment',\r\n                headerContent: fields.headerContent ? fields.headerContent : 'headerContent',\r\n                headerTemplate: fields.headerTemplate ? fields.headerTemplate : 'headerTemplate',\r\n                headerTemplateModel: fields.headerTemplateModel ? fields.headerTemplateModel : 'headerTemplateModel',\r\n                headerText: fields.headerText ? fields.headerText : 'headerText',\r\n                headerTooltip: fields.headerTooltip ? fields.headerTooltip : 'headerTooltip',\r\n                icon: fields.icon ? fields.icon : 'icon',\r\n                id: fields.id ? fields.id : 'id',\r\n                minWidth: fields.minWidth ? fields.minWidth : 'minWidth',\r\n                maxWidth: fields.maxWidth ? fields.maxWidth : 'maxWidth',\r\n                selected: fields.selected ? fields.selected : 'selected',\r\n                style: fields.style ? fields.style : 'style',\r\n                templateSettings: fields.templateSettings ? fields.templateSettings : 'templateSettings',\r\n                visible: fields.visible ? fields.visible : 'visible',\r\n                width: fields.width ? fields.width : 'width'\r\n            };\r\n        else\r\n            this.options.columnFields = {\r\n                aggregation: 'aggregation',\r\n                allowDrag: 'allowDrag',\r\n                allowDrop: 'allowDrop',\r\n                allowFilter: 'allowFilter',\r\n                allowGrouping: 'allowGrouping',\r\n                allowResize: 'allowResize',\r\n                canSelect: 'canSelect',\r\n                cellTemplateUrl: 'cellTemplateUrl',\r\n                comparer: 'comparer',\r\n                contentAlignment: 'contentAlignment',\r\n                contextMenu: 'contextMenu',\r\n                editorType: 'editorType',\r\n                editorSettings: 'editorSettings',\r\n                editorTemplate: 'editorTemplate',\r\n                filterParams: 'filterParams',\r\n                filterTemplate: 'filterTemplate',\r\n                footerTemplateModel: 'footerTemplateModel',\r\n                fixed: 'fixed',\r\n                fixedWidth: 'fixedWidth',\r\n                footerAlignment: 'footerAlignment',\r\n                footerContent: 'footerContent',\r\n                footerTemplate: 'footerTemplate',\r\n                footerText: 'footerText',\r\n                footerTooltip: 'footerTooltip',\r\n                groupText: 'groupText',\r\n                headerAlignment: 'headerAlignment',\r\n                headerContent: 'headerContent',\r\n                headerTemplate: 'headerTemplate',\r\n                headerTemplateModel: 'headerTemplateModel',\r\n                headerText: 'headerText',\r\n                headerTooltip: 'headerTooltip',\r\n                icon: 'icon',\r\n                id: 'id',\r\n                minWidth: 'minWidth',\r\n                maxWidth: 'maxWidth',\r\n                selected: 'selected',\r\n                style: 'style',\r\n                templateSettings: 'templateSettings',\r\n                visible: 'visible',\r\n                width: 'width'\r\n            };\r\n        if (this.dataService)\r\n            this.dataService.updateDataFields(this.options.columnFields, this.columnDataKey);\r\n    };\r\n    IntegralUIBaseGrid.prototype.updateRowFields = function (fields) {\r\n        if (fields)\r\n            this.options.rowFields = {\r\n                allowDrag: fields.allowDrag ? fields.allowDrag : 'allowDrag',\r\n                allowDrop: fields.allowDrop ? fields.allowDrop : 'allowDrop',\r\n                allowEdit: fields.allowEdit ? fields.allowEdit : 'allowEdit',\r\n                allowFocus: fields.allowFocus ? fields.allowFocus : 'allowFocus',\r\n                autoCheck: fields.autoCheck ? fields.autoCheck : 'autoCheck',\r\n                canSelect: fields.canSelect ? fields.canSelect : 'canSelect',\r\n                cells: fields.cells ? fields.cells : 'cells',\r\n                checkBoxSettings: fields.checkBoxSettings ? fields.checkBoxSettings : 'checkBoxSettings',\r\n                checked: fields.checked ? fields.checked : 'checked',\r\n                checkState: fields.checkState ? fields.checkState : 'checkState',\r\n                content: fields.content ? fields.content : 'content',\r\n                contextMenu: fields.contextMenu ? fields.contextMenu : 'contextMenu',\r\n                gid: fields.gid ? fields.gid : 'gid',\r\n                enabled: fields.enabled ? fields.enabled : 'enabled',\r\n                expanded: fields.expanded ? fields.expanded : 'expanded',\r\n                fixed: fields.fixed ? fields.fixed : 'fixed',\r\n                hasChildren: fields.hasChildren ? fields.hasChildren : 'hasChildren',\r\n                icon: fields.icon ? fields.icon : 'icon',\r\n                id: fields.id ? fields.id : 'id',\r\n                objects: fields.rows ? fields.rows : 'rows',\r\n                pid: fields.pid ? fields.pid : 'pid',\r\n                rows: fields.rows ? fields.rows : 'rows',\r\n                selected: fields.selected ? fields.selected : 'selected',\r\n                statusIcon: fields.statusIcon ? fields.statusIcon : 'statusIcon',\r\n                style: fields.style ? fields.style : 'style',\r\n                subobjects: fields.cells ? fields.cells : 'cells',\r\n                templateObj: fields.templateObj ? fields.templateObj : 'templateObj',\r\n                text: fields.text ? fields.text : 'text',\r\n                tooltip: fields.tooltip ? fields.tooltip : 'tooltip',\r\n                value: fields.value ? fields.value : 'value',\r\n                visible: fields.visible ? fields.visible : 'visible'\r\n            };\r\n        else\r\n            this.options.rowFields = {\r\n                allowDrag: 'allowDrag',\r\n                allowDrop: 'allowDrop',\r\n                allowFocus: 'allowFocus',\r\n                canSelect: 'canSelect',\r\n                cells: 'cells',\r\n                content: 'content',\r\n                contextMenu: 'contextMenu',\r\n                enabled: 'enabled',\r\n                expanded: 'expanded',\r\n                fixed: 'fixed',\r\n                gid: 'gid',\r\n                hasChildren: 'hasChildren',\r\n                icon: 'icon',\r\n                id: 'id',\r\n                objects: 'rows',\r\n                pid: 'pid',\r\n                rows: 'rows',\r\n                selected: 'selected',\r\n                statusIcon: 'statusIcon',\r\n                style: 'style',\r\n                subobjects: 'cells',\r\n                text: 'text',\r\n                tooltip: 'tooltip',\r\n                value: 'value',\r\n                visible: 'visible'\r\n            };\r\n        if (this.dataService)\r\n            this.dataService.updateDataFields(this.options.rowFields, this.rowDataKey);\r\n    };\r\n    IntegralUIBaseGrid.prototype.updateCellFields = function (fields) {\r\n        if (fields)\r\n            this.options.cellFields = {\r\n                allowEdit: fields.allowEdit ? fields.allowEdit : 'allowEdit',\r\n                cid: fields.cid ? fields.cid : 'cid',\r\n                content: fields.content ? fields.content : 'content',\r\n                contextMenu: fields.contextMenu ? fields.contextMenu : 'contextMenu',\r\n                enabled: fields.enabled ? fields.enabled : 'enabled',\r\n                expanded: fields.expanded ? fields.expanded : 'expanded',\r\n                isGroup: fields.isGroup ? fields.isGroup : 'isGroup',\r\n                labelEdit: fields.labelEdit ? fields.labelEdit : 'labelEdit',\r\n                rid: fields.rid ? fields.rid : 'rid',\r\n                selected: fields.selected ? fields.selected : 'selected',\r\n                style: fields.style ? fields.style : 'style',\r\n                tag: fields.tag ? fields.tag : 'tag',\r\n                templateObj: fields.templateObj ? fields.templateObj : 'templateObj',\r\n                text: fields.text ? fields.text : 'text',\r\n                tooltip: fields.tooltip ? fields.tooltip : 'tooltip',\r\n                value: fields.value ? fields.value : 'value',\r\n                valueID: fields.valueID ? fields.valueID : 'valueID',\r\n                valueType: fields.valueType ? fields.valueType : 'valueType'\r\n            };\r\n        else\r\n            this.options.cellFields = {\r\n                allowEdit: 'allowEdit',\r\n                cid: 'cid',\r\n                content: 'content',\r\n                contextMenu: 'contextMenu',\r\n                enabled: 'enabled',\r\n                expanded: 'expanded',\r\n                isGroup: 'isGroup',\r\n                labelEdit: 'labelEdit',\r\n                rid: 'rid',\r\n                selected: 'selected',\r\n                style: 'style',\r\n                tag: 'tag',\r\n                templateObj: 'templateObj',\r\n                text: 'text',\r\n                tooltip: 'tooltip',\r\n                value: 'value',\r\n                valueID: 'valueID',\r\n                valueType: 'valueType'\r\n            };\r\n    };\r\n    IntegralUIBaseGrid.prototype.updateShowScroll = function (value) {\r\n        if (value) {\r\n            this.options.showScroll = {\r\n                horizontal: this.commonService.isFieldAvailable(value.horizontal, true),\r\n                vertical: this.commonService.isFieldAvailable(value.vertical, true)\r\n            };\r\n        }\r\n        else {\r\n            this.options.showScroll = {\r\n                horizontal: true,\r\n                vertical: true\r\n            };\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.processLoadData = function (data, parent, fields, flat) {\r\n        var self = this;\r\n        self.clearRows(parent);\r\n        self.updateRowFields(fields);\r\n        var treeData = [];\r\n        if (data) {\r\n            if (flat != false) {\r\n                var tempList_1 = [];\r\n                data.forEach(function (row, i) {\r\n                    var currentPID = row[self.options.rowFields.pid];\r\n                    if (tempList_1[currentPID]) {\r\n                        if (!tempList_1[currentPID][self.options.rowFields.rows])\r\n                            tempList_1[currentPID][self.options.rowFields.rows] = [];\r\n                        tempList_1[row[self.options.rowFields.id]] = row;\r\n                        tempList_1[currentPID][self.options.rowFields.rows].push(row);\r\n                    }\r\n                    else {\r\n                        tempList_1[row[self.options.rowFields.id]] = row;\r\n                        treeData.push(row);\r\n                    }\r\n                });\r\n                tempList_1.length = 0;\r\n            }\r\n            else\r\n                treeData = data;\r\n        }\r\n        if (parent) {\r\n            parent[self.options.rowFields.rows] = treeData;\r\n            for (var i = 0; i < parent[self.options.rowFields.rows].length; i++)\r\n                parent[self.options.rowFields.rows][i][self.options.rowFields.pid] = parent[self.options.rowFields.id];\r\n        }\r\n        else if (self.rows) {\r\n            self.rows.length = 0;\r\n            for (var i = 0; i < treeData.length; i++)\r\n                self.rows.push(treeData[i]);\r\n        }\r\n        self.loadComplete.emit(null);\r\n        this.updateLayout();\r\n    };\r\n    IntegralUIBaseGrid.prototype.updateScrollColumnList = function () { };\r\n    IntegralUIBaseGrid.prototype.updateScrollRowList = function () { };\r\n    // Drag/Drop -------------------------------------------------------------------------\r\n    IntegralUIBaseGrid.prototype.addDropMark = function (pos) {\r\n        var self = this;\r\n        if (self.appRef) {\r\n            self.removeDropMark();\r\n            var factory = self.cmpResolver.resolveComponentFactory(integralui_core_1.IntegralUIDragWindow);\r\n            if (factory) {\r\n                self.dragCmpRef = self.appRef.createComponent(factory);\r\n                if (self.dragCmpRef._component)\r\n                    self.dragCmp = self.dragCmpRef._component;\r\n                else if (self.dragCmpRef._hostElement)\r\n                    self.dragCmp = self.dragCmpRef._hostElement.component;\r\n            }\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.removeDropMark = function () {\r\n        if (this.dragCmpRef)\r\n            this.dragCmpRef.destroy();\r\n        this.dragCmp = null;\r\n    };\r\n    IntegralUIBaseGrid.prototype.callDragDropEvent = function (e, data, flag) {\r\n        var self = this;\r\n        var eventObj = {\r\n            action: data.action,\r\n            cancel: false,\r\n            dragRow: data.source,\r\n            dropPos: data.dropPos,\r\n            event: e,\r\n            isDropAllowed: data.allow,\r\n            mousePos: this.commonService.getMousePos(e),\r\n            resume: function () {\r\n                self.drop(e, self.dragDropService.getData());\r\n                self.dragDropService.clearData();\r\n            },\r\n            sourceCtrl: data.sourceCtrl,\r\n            targetCtrl: data.targetCtrl,\r\n            targetRow: data.target\r\n        };\r\n        if (flag)\r\n            this.dragDrop.emit(eventObj);\r\n        else\r\n            this.dragOver.emit(eventObj);\r\n        return eventObj.cancel;\r\n    };\r\n    IntegralUIBaseGrid.prototype.checkEmptySpace = function (e) {\r\n        var contentSize = this.getContentSize();\r\n        var ctrlPageRect = this.commonService.getPageRect(this.elemRef.nativeElement.firstElementChild);\r\n        var emptySpace = {\r\n            top: ctrlPageRect.top + contentSize.height,\r\n            bottom: ctrlPageRect.bottom\r\n        };\r\n        var mousePos = this.commonService.getMousePos(e);\r\n        var shiftPos = this.commonService.getShiftPos();\r\n        mousePos.x -= shiftPos.x;\r\n        mousePos.y -= shiftPos.y;\r\n        return mousePos.y >= emptySpace.top && mousePos.y <= emptySpace.bottom;\r\n    };\r\n    IntegralUIBaseGrid.prototype.ctrlDragEnter = function (e) {\r\n        if (this.isEnabled)\r\n            this.processDragEnter(e);\r\n    };\r\n    IntegralUIBaseGrid.prototype.ctrlDragDrop = function (e) {\r\n        if (this.isEnabled)\r\n            this.processDragDrop(e);\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIBaseGrid.prototype.ctrlDragLeave = function (e) {\r\n        if (this.isEnabled)\r\n            this.processDragLeave(e);\r\n    };\r\n    IntegralUIBaseGrid.prototype.ctrlDragOver = function (e) {\r\n        if (this.isEnabled)\r\n            this.processDragOver(e);\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIBaseGrid.prototype.ctrlDragEnd = function (e) {\r\n        this.dropMark(e);\r\n    };\r\n    IntegralUIBaseGrid.prototype.removeDragHandle = function () {\r\n        this.isDragHandleVisible = false;\r\n        this.targetDropRow = null;\r\n        this.targetDropPos = -1;\r\n    };\r\n    IntegralUIBaseGrid.prototype.dropMark = function (e, flag) {\r\n        if (this.dragMode == IntegralUIDragDropDisplayMode.Handle) {\r\n            if (!flag)\r\n                this.removeDragHandle();\r\n            this.updateScrollRowListDragOver(null);\r\n        }\r\n        else {\r\n            if (!this.dragCmp)\r\n                this.addDropMark({ x: e.pageX, y: e.pageY });\r\n            if (this.dragCmp) {\r\n                var displayValue = \"none\";\r\n                if (this.options.allowDrop)\r\n                    displayValue = flag ? \"block\" : \"none\";\r\n                this.dragCmp.display = displayValue;\r\n            }\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.updateDragComponent = function (value) {\r\n        if (this.dragCmp)\r\n            this.dragCmp.updatePos(value);\r\n    };\r\n    IntegralUIBaseGrid.prototype.isDragAllowed = function (row) {\r\n        return this.options.allowDrag ? (row && (row[this.options.rowFields.allowDrag] || row[this.options.rowFields.allowDrag] === undefined) ? true : false) : false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isDropAllowed = function (sourceData, targetRow, dropPos) {\r\n        var allow = this.options.allowDrop;\r\n        if (allow && sourceData && targetRow) {\r\n            allow = targetRow[this.options.rowFields.allowDrop] || targetRow[this.options.rowFields.allowDrop] === undefined ? true : false;\r\n            if (allow) {\r\n                if (Array.isArray(sourceData)) {\r\n                    for (var i = 0; i < sourceData.length; i++) {\r\n                        if (this.commonService.isEqual(sourceData[i][this.options.rowFields.id], targetRow[this.options.rowFields.id]) ||\r\n                            (dropPos === 0 && this.isParentOf(targetRow, sourceData[i])) || this.isChildOf(targetRow, sourceData[i])) {\r\n                            allow = false;\r\n                            break;\r\n                        }\r\n                        if (!allow)\r\n                            break;\r\n                    }\r\n                }\r\n                else if (this.commonService.isEqual(sourceData[this.options.rowFields.id], targetRow[this.options.rowFields.id]) ||\r\n                    (dropPos === 0 && this.isParentOf(targetRow, sourceData)) || this.isChildOf(targetRow, sourceData))\r\n                    allow = false;\r\n            }\r\n        }\r\n        return allow;\r\n    };\r\n    IntegralUIBaseGrid.prototype.processDragStart = function (e, row) {\r\n        if (this.dragMode == IntegralUIDragDropDisplayMode.Handle)\r\n            this.processDragStartHandle(e, row);\r\n        else\r\n            this.processDragStartPopup(e, row);\r\n    };\r\n    IntegralUIBaseGrid.prototype.processDragStartHandle = function (e, row) {\r\n        this.dragDropService.clearData();\r\n        if (!this.isDragAllowed(row)) {\r\n            e.preventDefault();\r\n            return;\r\n        }\r\n        if (row) {\r\n            var eventObj = {\r\n                action: e.shiftKey ? 'copy' : 'move',\r\n                cancel: false,\r\n                dragRow: row,\r\n                event: e,\r\n                isDropAllowed: this.options.allowDrop,\r\n                mousePos: this.commonService.getMousePos(e),\r\n                sourceCtrl: this,\r\n                targetCtrl: this,\r\n                targetRow: null\r\n            };\r\n            this.dragStart.emit(eventObj);\r\n            if (!this.isDragAllowed(row) && eventObj.cancel) {\r\n                this.gridCursor = 'no-drop';\r\n            }\r\n            else {\r\n                this.isFirstDragEnter = true;\r\n                var dragDropData = { clone: this.cloneRow(row), handle: this.dragRowList, source: row, sourceCtrl: this, sourceData: this.rows };\r\n                switch (this.selectionMode) {\r\n                    case integralui_core_1.IntegralUISelectionMode.MultiSimple:\r\n                        dragDropData.clone = this.createCloneList(this.currentSelectedRows);\r\n                        dragDropData.source = this.currentSelectedRows;\r\n                        break;\r\n                    case integralui_core_1.IntegralUISelectionMode.MultiExtended:\r\n                        dragDropData.clone = this.createCloneList(this.currentSelectedRows);\r\n                        dragDropData.source = this.currentSelectedRows;\r\n                        break;\r\n                }\r\n                this.dragDropService.setData(dragDropData);\r\n            }\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.processDragStartPopup = function (e, row) {\r\n        this.dragDropService.clearData();\r\n        if (!this.isDragAllowed(row)) {\r\n            e.preventDefault();\r\n            return;\r\n        }\r\n        if (row) {\r\n            if (!this.isDragAllowed(row)) {\r\n                if (e.dataTransfer)\r\n                    e.dataTransfer.effectAllowed = 'none';\r\n                else if (e.originalEvent && e.originalEvent.dataTransfer)\r\n                    e.originalEvent.dataTransfer.effectAllowed = 'none';\r\n            }\r\n            else {\r\n                this.isFirstDragEnter = true;\r\n                this.addDropMark({ x: e.pageX, y: e.pageY });\r\n                this.dropMark(e);\r\n                if (e.dataTransfer) {\r\n                    e.dataTransfer.effectAllowed = 'move';\r\n                    e.dataTransfer.setData(\"text\", row[this.options.rowFields.id] ? row[this.options.rowFields.id].toString() : '');\r\n                }\r\n                else if (e.originalEvent && e.originalEvent.dataTransfer) {\r\n                    e.originalEvent.dataTransfer.effectAllowed = 'move';\r\n                    e.originalEvent.dataTransfer.setData(\"text\", row[this.options.rowFields.id] ? row[this.options.rowFields.id].toString() : '');\r\n                }\r\n                var dragDropData = { clone: this.cloneRow(row), source: row, sourceCtrl: this, sourceData: this.rows };\r\n                switch (this.selectionMode) {\r\n                    case integralui_core_1.IntegralUISelectionMode.MultiSimple:\r\n                        dragDropData.clone = this.createCloneList(this.currentSelectedRows);\r\n                        dragDropData.source = this.currentSelectedRows;\r\n                        break;\r\n                    case integralui_core_1.IntegralUISelectionMode.MultiExtended:\r\n                        dragDropData.clone = this.createCloneList(this.currentSelectedRows);\r\n                        dragDropData.source = this.currentSelectedRows;\r\n                        break;\r\n                }\r\n                this.dragDropService.setData(dragDropData);\r\n            }\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.processDragEnter = function (e) {\r\n        e.preventDefault();\r\n        if (!this.isCtrlDragEntered) {\r\n            this.isCtrlDragEntered = true;\r\n            var dragDropData = this.dragDropService.getData();\r\n            if (!this.isFirstDragEnter && this.dragMode == IntegralUIDragDropDisplayMode.Handle) {\r\n                this.dragRowList = dragDropData.handle;\r\n                if (this.dragRowList) {\r\n                    for (var i = 0; i < this.dragRowList.length; i++) {\r\n                        var index = this.getObjIndexFromScrollList(this.dragRowList[i].data);\r\n                        if (index >= 0)\r\n                            this.scrollRowList.splice(index, 1);\r\n                    }\r\n                    this.isDragHandleVisible = true;\r\n                    this.targetDropPos = 2;\r\n                    this.targetDropRow = this.scrollRowList.length > 0 ? this.scrollRowList[this.scrollRowList.length - 1].data : null;\r\n                    var newEmptyObj = {\r\n                        cells: [],\r\n                        draggable: false,\r\n                        isEmpty: true,\r\n                        status: 1,\r\n                        style: {}\r\n                    };\r\n                    this.scrollRowList.splice(this.scrollRowList.length, 0, newEmptyObj);\r\n                }\r\n            }\r\n            this.isFirstDragEnter = false;\r\n            var eventObj = {\r\n                action: e.shiftKey ? 'copy' : 'move',\r\n                dragRow: dragDropData.source,\r\n                dropPos: -1,\r\n                event: e,\r\n                isDropAllowed: this.options.allowDrop,\r\n                mousePos: this.commonService.getMousePos(e),\r\n                sourceCtrl: dragDropData.sourceCtrl,\r\n                targetCtrl: this,\r\n                targetRow: null\r\n            };\r\n            this.dragEnter.emit(eventObj);\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.processDragLeave = function (e) {\r\n        e.preventDefault();\r\n        if (this.isCtrlDragEntered) {\r\n            var ctrlPageRect = this.commonService.getPageRect(this.elemRef.nativeElement.firstElementChild);\r\n            var mousePos = this.commonService.getMousePos(e);\r\n            var shiftPos = this.commonService.getShiftPos();\r\n            mousePos.x -= shiftPos.x;\r\n            mousePos.y -= shiftPos.y;\r\n            if (mousePos.x <= ctrlPageRect.left || mousePos.x >= ctrlPageRect.right || mousePos.y <= ctrlPageRect.top || mousePos.y >= ctrlPageRect.bottom) {\r\n                this.isCtrlDragEntered = false;\r\n                this.dropMark(e);\r\n                if (this.dragMode == IntegralUIDragDropDisplayMode.Handle)\r\n                    this.updateScrollRowList();\r\n                this.stopScrollTimer();\r\n                var dragDropData = this.dragDropService.getData();\r\n                var eventObj = {\r\n                    action: e.shiftKey ? 'copy' : 'move',\r\n                    dragRow: dragDropData.source,\r\n                    dropPos: -1,\r\n                    event: e,\r\n                    isDropAllowed: false,\r\n                    mousePos: this.commonService.getMousePos(e),\r\n                    sourceCtrl: dragDropData.sourceCtrl,\r\n                    targetCtrl: null,\r\n                    targetRow: null\r\n                };\r\n                this.dragLeave.emit(eventObj);\r\n            }\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.processDragOver = function (e, row, rowBounds, flag) {\r\n        if (this.dragMode == IntegralUIDragDropDisplayMode.Handle)\r\n            this.processDragOverHandle(e, row, rowBounds, flag);\r\n        else\r\n            this.processDragOverPopup(e, row, rowBounds, flag);\r\n    };\r\n    IntegralUIBaseGrid.prototype.processDragOverHandle = function (e, row, rowBounds, flag) {\r\n        e.preventDefault();\r\n        this.processDragEnter(e);\r\n        this.hoverRow = null;\r\n        this.changeCursor();\r\n        //this.changeRef.detectChanges();\r\n        var pass = this.isDragActive;\r\n        if (pass) {\r\n            var dragDropData = this.dragDropService.getData();\r\n            var shiftPos = this.commonService.getShiftPos();\r\n            if (row) {\r\n                var mousePos = this.commonService.getMousePos(e);\r\n                mousePos.x -= shiftPos.x;\r\n                mousePos.y -= shiftPos.y;\r\n                var checkDropType = row.type == 'group' ? 'full' : null;\r\n                var dropPos = this.dragDropService.getDropPos(mousePos, rowBounds, flag, checkDropType);\r\n                pass = this.isDropAllowed(dragDropData.source, row, dropPos);\r\n                var eventData = {\r\n                    action: e.shiftKey ? 'copy' : 'move',\r\n                    source: dragDropData.source,\r\n                    dropPos: dropPos,\r\n                    allow: pass,\r\n                    sourceCtrl: dragDropData.sourceCtrl,\r\n                    target: row,\r\n                    targetCtrl: this\r\n                };\r\n                var dragResult = this.callDragDropEvent(e, eventData);\r\n                if (!pass || dragResult == true) {\r\n                    this.gridCursor = 'no-drop';\r\n                    this.dropMark(e, true);\r\n                    this.targetDropPos = -1;\r\n                    this.updateScrollRowListDragOver(row);\r\n                    this.updateDragHandlePos(e);\r\n                }\r\n                else {\r\n                    this.isDragHandleVisible = true;\r\n                    this.dragRowList = dragDropData.handle;\r\n                    this.targetDropPos = dropPos;\r\n                    this.updateScrollRowListDragOver(row);\r\n                    var targetObj = this.getObjFromRow(row);\r\n                    this.dragObjIndent = targetObj.indent;\r\n                    if (row.type == 'group')\r\n                        this.dragObjIndent += this.options.indent;\r\n                    this.updateDragHandlePos(e);\r\n                    // Update Drag Drop Data\r\n                    this.dragDropService.setData({\r\n                        action: e.shiftKey ? 'copy' : 'move',\r\n                        handle: dragDropData.handle,\r\n                        source: dragDropData.source,\r\n                        sourceCtrl: dragDropData.sourceCtrl,\r\n                        sourceData: dragDropData.sourceData,\r\n                        target: row,\r\n                        targetCtrl: this,\r\n                        dropPos: dropPos\r\n                    });\r\n                }\r\n            }\r\n            else if (!this.options.allowDrop) {\r\n                this.gridCursor = 'no-drop';\r\n                this.dropMark(e);\r\n            }\r\n            else {\r\n                this.dragRowList = dragDropData.handle;\r\n                var lastVisibleRow = this.scrollRowList.length > 0 ? this.scrollRowList[this.scrollRowList.length - 1].data : null;\r\n                //this.updateScrollRowListDragOver(lastVisibleRow);\r\n                this.updateDragHandlePos(e);\r\n            }\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.processDragOverPopup = function (e, row, rowBounds, flag) {\r\n        e.preventDefault();\r\n        this.processDragEnter(e);\r\n        var pass = true;\r\n        if (e.dataTransfer)\r\n            pass = e.dataTransfer.effectAllowed === 'none' ? false : true;\r\n        else if (e.originalEvent && e.originalEvent.dataTransfer)\r\n            pass = e.originalEvent.dataTransfer.effectAllowed === 'none' ? false : true;\r\n        if (pass) {\r\n            var dragDropData = this.dragDropService.getData();\r\n            var shiftPos = this.commonService.getShiftPos();\r\n            if (row) {\r\n                var mousePos = this.commonService.getMousePos(e);\r\n                mousePos.x -= shiftPos.x;\r\n                mousePos.y -= shiftPos.y;\r\n                var checkDropType = row.type == 'group' ? 'full' : null;\r\n                var dropPos = this.dragDropService.getDropPos(mousePos, rowBounds, flag, checkDropType);\r\n                pass = this.isDropAllowed(dragDropData.source, row, dropPos);\r\n                var eventData = {\r\n                    action: e.shiftKey ? 'copy' : 'move',\r\n                    source: dragDropData.source,\r\n                    dropPos: dropPos,\r\n                    allow: pass,\r\n                    sourceCtrl: dragDropData.sourceCtrl,\r\n                    target: row,\r\n                    targetCtrl: this\r\n                };\r\n                var dragResult = this.callDragDropEvent(e, eventData);\r\n                if (!pass || dragResult == true) {\r\n                    if (e.dataTransfer)\r\n                        e.dataTransfer.dropEffect = \"none\";\r\n                    else if (e.originalEvent && e.originalEvent.dataTransfer)\r\n                        e.originalEvent.dataTransfer.dropEffect = \"none\";\r\n                    this.dropMark(e);\r\n                }\r\n                else {\r\n                    var tempMousePos = this.commonService.getMousePos(e);\r\n                    var cssTopValue = tempMousePos.y + 16;\r\n                    var cssLeftValue = tempMousePos.x + 20;\r\n                    var dropMarkerClass = 'iui-dragwin-icon';\r\n                    switch (dropPos) {\r\n                        case 0:\r\n                            dropMarkerClass += ' iui-dragwin-move-in';\r\n                            break;\r\n                        case 1:\r\n                            dropMarkerClass += ' iui-dragwin-move-up';\r\n                            break;\r\n                        case 2:\r\n                            dropMarkerClass += ' iui-dragwin-move-down';\r\n                            break;\r\n                    }\r\n                    if (e.shiftKey)\r\n                        dropMarkerClass += '-copy';\r\n                    this.updateDragComponent({\r\n                        class: dropMarkerClass,\r\n                        top: cssTopValue,\r\n                        left: cssLeftValue,\r\n                        text: row[this.options.rowFields.text]\r\n                    });\r\n                    this.dropMark(e, pass);\r\n                    // Update Drag Drop Data\r\n                    this.dragDropService.setData({\r\n                        action: e.shiftKey ? 'copy' : 'move',\r\n                        source: dragDropData.source,\r\n                        sourceCtrl: dragDropData.sourceCtrl,\r\n                        sourceData: dragDropData.sourceData,\r\n                        target: row,\r\n                        targetCtrl: this,\r\n                        dropPos: dropPos\r\n                    });\r\n                }\r\n            }\r\n            else if (!this.options.allowDrop) {\r\n                if (e.dataTransfer)\r\n                    e.dataTransfer.dropEffect = \"none\";\r\n                else if (e.originalEvent && e.originalEvent.dataTransfer)\r\n                    e.originalEvent.dataTransfer.dropEffect = \"none\";\r\n                this.dropMark(e);\r\n            }\r\n            else {\r\n                pass = this.checkEmptySpace(e);\r\n                var eventData = {\r\n                    action: e.shiftKey ? 'copy' : 'move',\r\n                    source: dragDropData.source,\r\n                    dropPos: -1,\r\n                    allow: pass,\r\n                    sourceCtrl: dragDropData.sourceCtrl,\r\n                    target: null,\r\n                    targetCtrl: this\r\n                };\r\n                var dragResult = this.callDragDropEvent(e, eventData);\r\n                if (!pass || dragResult == true) {\r\n                    if (e.dataTransfer)\r\n                        e.dataTransfer.dropEffect = \"none\";\r\n                    else if (e.originalEvent && e.originalEvent.dataTransfer)\r\n                        e.originalEvent.dataTransfer.dropEffect = \"none\";\r\n                    this.dropMark(e);\r\n                }\r\n                else {\r\n                    var mousePos = this.commonService.getMousePos(e);\r\n                    var cssTopValue = mousePos.y + 16;\r\n                    var cssLeftValue = mousePos.x + 20;\r\n                    var dropMarkerClass = 'iui-dragwin-icon iui-dragwin-move-end';\r\n                    if (e.shiftKey)\r\n                        dropMarkerClass += '-copy';\r\n                    this.updateDragComponent({\r\n                        class: dropMarkerClass,\r\n                        top: cssTopValue,\r\n                        left: cssLeftValue,\r\n                        text: this.name ? this.name : \"Component\"\r\n                    });\r\n                    this.dropMark(e, pass);\r\n                    // Update Drag Drop Data\r\n                    this.dragDropService.setData({\r\n                        action: e.shiftKey ? 'copy' : 'move',\r\n                        source: dragDropData.source,\r\n                        sourceCtrl: dragDropData.sourceCtrl,\r\n                        sourceData: dragDropData.sourceData,\r\n                        target: null,\r\n                        targetCtrl: this,\r\n                        dropPos: -1\r\n                    });\r\n                }\r\n            }\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.processDragDrop = function (e, row) {\r\n        e.preventDefault();\r\n        //cancelDragTimer();\r\n        //this.dropMark(e);\r\n        var pass = true;\r\n        if (e.dataTransfer)\r\n            pass = e.dataTransfer.effectAllowed === 'none' ? false : true;\r\n        else if (e.originalEvent && e.originalEvent.dataTransfer)\r\n            pass = e.originalEvent.dataTransfer.effectAllowed === 'none' ? false : true;\r\n        if (pass) {\r\n            var dragDropData = this.dragDropService.getData();\r\n            //if (this.dragMode == IntegralUIDragDropDisplayMode.Handle)\r\n            //row = this.targetDropRow;\r\n            if (row)\r\n                pass = this.isDropAllowed(dragDropData.source, row, dragDropData.dropPos);\r\n            else\r\n                pass = this.checkEmptySpace(e);\r\n            if (pass && dragDropData.source) {\r\n                var eventData = {\r\n                    action: e.shiftKey ? 'copy' : 'move',\r\n                    source: dragDropData.source,\r\n                    dropPos: dragDropData.dropPos,\r\n                    allow: pass,\r\n                    sourceCtrl: dragDropData.sourceCtrl,\r\n                    target: dragDropData.target,\r\n                    targetCtrl: this\r\n                };\r\n                var dropResult = this.callDragDropEvent(e, eventData, true);\r\n                if (!dropResult)\r\n                    this.drop(e, dragDropData);\r\n                else\r\n                    pass = false;\r\n            }\r\n        }\r\n        this.dragDropService.clearData();\r\n        if (this.dragMode == IntegralUIDragDropDisplayMode.Handle)\r\n            this.updateLayout();\r\n        this.clearDragDropSettings();\r\n        var self = this;\r\n        var updateDropMarkTimeout = setTimeout(function () {\r\n            self.dropMark(e);\r\n            clearTimeout(updateDropMarkTimeout);\r\n        }, 100);\r\n    };\r\n    IntegralUIBaseGrid.prototype.clearDragDropSettings = function () {\r\n        this.isDragActive = false;\r\n        this.isDragHandleVisible = false;\r\n        this.dragStartPos = { x: 0, y: 0 };\r\n        this.dragEndPos = { x: 0, y: 0 };\r\n        this.changeCursor();\r\n    };\r\n    IntegralUIBaseGrid.prototype.drop = function (e, data) {\r\n        if (data && data.sourceCtrl) {\r\n            var source = e.shiftKey && data.clone ? data.clone : data.source;\r\n            if (Array.isArray(source)) {\r\n                var dropList = [];\r\n                for (var i = 0; i < source.length; i++)\r\n                    dropList.push(source[i]);\r\n                if (dropList.length > 0) {\r\n                    for (var i = 0; i < dropList.length; i++) {\r\n                        this.processDataDrop(e, dropList[i], data);\r\n                    }\r\n                    this.clearPrevSelection(dropList[dropList.length - 1]);\r\n                }\r\n            }\r\n            else {\r\n                this.processDataDrop(e, source, data);\r\n                this.clearPrevSelection(source);\r\n            }\r\n            if (data.sourceCtrl != data.targetCtrl && data.sourceCtrl.updateLayout)\r\n                data.sourceCtrl.updateLayout();\r\n            this.updateLayout();\r\n        }\r\n        this.isCtrlDragEntered = false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.processDataDrop = function (e, row, data) {\r\n        var isRowRemoved = e.shiftKey;\r\n        if (!e.shiftKey && data.sourceCtrl && data.sourceCtrl.removeRow)\r\n            isRowRemoved = data.sourceCtrl.removeRow(row);\r\n        if (isRowRemoved) {\r\n            switch (data.dropPos) {\r\n                case 0:\r\n                    if (this.dragMode == IntegralUIDragDropDisplayMode.Handle)\r\n                        this.insertRowAt(row, 0, data.target);\r\n                    else\r\n                        this.insertRowAt(row, -1, data.target);\r\n                    break;\r\n                case 1:\r\n                    this.insertRowBefore(row, data.target);\r\n                    break;\r\n                case 2:\r\n                    this.insertRowAfter(row, data.target);\r\n                    break;\r\n                default:\r\n                    this.addRow(row);\r\n                    break;\r\n            }\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.callAfterSelectEvent = function (obj) {\r\n        var eventObj = { obj: obj };\r\n        this.afterSelect.emit(eventObj);\r\n        this.selectionChanged.emit(null);\r\n    };\r\n    // Expand / Collapse -----------------------------------------------------------------\r\n    IntegralUIBaseGrid.prototype.expandBoxMouseDown = function (e, row) {\r\n        if (this.isEnabled) {\r\n            if (e.buttons == 1 && !this.isExpandBoxTouched)\r\n                this.toggle(row);\r\n            this.isExpandBoxTouched = false;\r\n        }\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIBaseGrid.prototype.expandBoxMouseUp = function (e) {\r\n        this.isExpandBoxTouched = false;\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIBaseGrid.prototype.expandBoxTouchStart = function (e, row) {\r\n        if (this.isEnabled) {\r\n            this.isExpandBoxTouched = true;\r\n            this.toggle(row);\r\n        }\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIBaseGrid.prototype.toggle = function (row, value) { };\r\n    IntegralUIBaseGrid.prototype.updateExpandingCell = function (row, value) {\r\n        var expColID = 0;\r\n        var expColumn = this.getExpandingColumn();\r\n        if (expColumn)\r\n            expColID = expColumn[this.options.columnFields.id];\r\n        var cell = this.getCellByColumnId(row[this.options.rowFields.cells], expColID);\r\n        if (cell)\r\n            cell[this.options.cellFields.expanded] = value;\r\n    };\r\n    // Export ----------------------------------------------------------------------------\r\n    IntegralUIBaseGrid.prototype.convertToCSV = function (list) {\r\n        var data = '';\r\n        for (var i = 0; i < list.length; i++) {\r\n            var line = '';\r\n            var subList = list[i];\r\n            // Create a line for each object from the list\r\n            if (subList.length > 0) {\r\n                for (var j = 0; j < subList.length; j++)\r\n                    line += subList[j].text + \",\";\r\n                // Remove the last comma\r\n                line = line.slice(0, -1);\r\n                // Add line break at the end\r\n                line += '\\r\\n';\r\n            }\r\n            data += line;\r\n        }\r\n        return data;\r\n    };\r\n    IntegralUIBaseGrid.prototype.exportToCSV = function () {\r\n        var list = [];\r\n        // Create a line for columns\r\n        var cellList = [];\r\n        for (var j = 0; j < this.currentColumnList.length; j++) {\r\n            var column = this.currentColumnList[j].data;\r\n            var currentObj = {\r\n                text: column[this.options.columnFields.headerText] != undefined ? column[this.options.columnFields.headerText].toString() : ''\r\n            };\r\n            cellList.push(currentObj);\r\n        }\r\n        list.push(cellList);\r\n        // Create a line for all rows\r\n        var rowList = this.getFullList();\r\n        for (var i = 0; i < rowList.length; i++) {\r\n            var currentRow = rowList[i];\r\n            cellList = [];\r\n            for (var j = 0; j < this.currentColumnList.length; j++) {\r\n                var columnID = this.currentColumnList[j].data[this.options.columnFields.id];\r\n                var cell = this.getCellByColumnId(currentRow[this.options.rowFields.cells], columnID);\r\n                var currentObj = {};\r\n                // Convert data from the cell to a string\r\n                if (cell) {\r\n                    if (cell.value) {\r\n                        if (cell.value instanceof Date)\r\n                            currentObj.text = cell.value.toLocaleDateString();\r\n                        else\r\n                            currentObj.text = JSON.stringify(cell.value);\r\n                    }\r\n                    else if (cell.text)\r\n                        currentObj.text = cell.text.indexOf(',') >= 0 ? JSON.stringify(cell.text) : cell.text;\r\n                    else\r\n                        currentObj.text = '';\r\n                }\r\n                else\r\n                    currentObj.text = '';\r\n                cellList.push(currentObj);\r\n            }\r\n            list.push(cellList);\r\n        }\r\n        return this.convertToCSV(list);\r\n    };\r\n    IntegralUIBaseGrid.prototype.exportToJSON = function (columnFields, rowFields, spacing, flat) {\r\n        var jsonColumns = this.exportColumnsToJSON(columnFields, spacing);\r\n        var jsonRows = this.exportRowsToJSON(rowFields, spacing, flat);\r\n        return '[\\n{ \"columns\": ' + jsonColumns + ' },\\n' + '{ \"rows\": ' + jsonRows + ' }\\n]';\r\n    };\r\n    IntegralUIBaseGrid.prototype.exportColumnsToJSON = function (fields, spacing) {\r\n        //let changeJSON = jsonData;//.replace(/},/g, \"},\\\\t\");\r\n        var self = this;\r\n        spacing = spacing ? spacing : null;\r\n        var data = self.columns;\r\n        var fieldList = fields ? fields : [\r\n            self.options.columnFields.allowDrag,\r\n            self.options.columnFields.allowDrop,\r\n            self.options.columnFields.allowFilter,\r\n            self.options.columnFields.allowGrouping,\r\n            self.options.columnFields.allowResize,\r\n            self.options.columnFields.canSelect,\r\n            self.options.columnFields.cellTemplateUrl,\r\n            self.options.columnFields.columns,\r\n            self.options.columnFields.contentAlignment,\r\n            self.options.columnFields.contextMenu,\r\n            self.options.columnFields.editorType,\r\n            self.options.columnFields.editorSettings,\r\n            self.options.columnFields.editorTemplate,\r\n            self.options.columnFields.filterParams,\r\n            self.options.columnFields.fixed,\r\n            self.options.columnFields.fixedWidth,\r\n            self.options.columnFields.footerAlignment,\r\n            self.options.columnFields.footerContent,\r\n            self.options.columnFields.footerText,\r\n            self.options.columnFields.footerTooltip,\r\n            self.options.columnFields.groupText,\r\n            self.options.columnFields.headerAlignment,\r\n            self.options.columnFields.headerContent,\r\n            self.options.columnFields.headerText,\r\n            self.options.columnFields.headerTooltip,\r\n            self.options.columnFields.icon,\r\n            self.options.columnFields.id,\r\n            self.options.columnFields.minWidth,\r\n            self.options.columnFields.maxWidth,\r\n            self.options.columnFields.pid,\r\n            self.options.columnFields.selected,\r\n            self.options.columnFields.style,\r\n            self.options.columnFields.visible,\r\n            self.options.columnFields.width\r\n        ];\r\n        return JSON.stringify(data, fieldList, spacing);\r\n    };\r\n    IntegralUIBaseGrid.prototype.exportRowsToJSON = function (fields, spacing, flat) {\r\n        //let changeJSON = jsonData;//.replace(/},/g, \"},\\\\t\");\r\n        var self = this;\r\n        spacing = spacing ? spacing : null;\r\n        var data = flat == false ? self.rows : self.getFullList();\r\n        var fieldList = fields ? fields : [\r\n            self.options.rowFields.allowCellFocus,\r\n            self.options.rowFields.allowDrag,\r\n            self.options.rowFields.allowDrop,\r\n            self.options.rowFields.allowEdit,\r\n            self.options.rowFields.allowFocus,\r\n            self.options.rowFields.autoCheck,\r\n            self.options.rowFields.canSelect,\r\n            self.options.rowFields.cells,\r\n            self.options.rowFields.checked,\r\n            self.options.rowFields.checkState,\r\n            self.options.rowFields.content,\r\n            self.options.rowFields.contextMenu,\r\n            self.options.rowFields.gid,\r\n            self.options.rowFields.enabled,\r\n            self.options.rowFields.expanded,\r\n            self.options.rowFields.fixed,\r\n            self.options.rowFields.hasChildren,\r\n            self.options.rowFields.icon,\r\n            self.options.rowFields.id,\r\n            self.options.rowFields.pid,\r\n            self.options.rowFields.selected,\r\n            self.options.rowFields.statusIcon,\r\n            self.options.rowFields.style,\r\n            self.options.rowFields.text,\r\n            self.options.rowFields.tooltip,\r\n            self.options.rowFields.value,\r\n            self.options.rowFields.visible,\r\n            self.options.cellFields.allowEdit,\r\n            self.options.cellFields.cid,\r\n            self.options.cellFields.content,\r\n            self.options.cellFields.contextMenu,\r\n            self.options.cellFields.enabled,\r\n            self.options.cellFields.isGroup,\r\n            self.options.cellFields.rid,\r\n            self.options.cellFields.selected,\r\n            self.options.cellFields.style,\r\n            self.options.cellFields.tag,\r\n            self.options.cellFields.text,\r\n            self.options.cellFields.tooltip,\r\n            self.options.cellFields.value,\r\n            self.options.cellFields.valueID,\r\n            self.options.cellFields.valueType\r\n        ];\r\n        if (flat == false)\r\n            fieldList.push(self.options.rowFields.rows);\r\n        return JSON.stringify(data, fieldList, spacing);\r\n    };\r\n    // Filter  ---------------------------------------------------------------------------\r\n    IntegralUIBaseGrid.prototype.filter = function (column, params) {\r\n        if (column)\r\n            column[this.options.columnFields.filterParams] = params;\r\n        else {\r\n            for (var j = 0; j < this.currentColumnList.length; j++)\r\n                this.currentColumnList[j].data[this.options.columnFields.filterParams] = null;\r\n        }\r\n        this.updateLayout();\r\n        this.change.emit({ type: 'filtering' });\r\n    };\r\n    // General ---------------------------------------------------------------------------\r\n    IntegralUIBaseGrid.prototype.changeCursor = function (flag) {\r\n        var cursorType = 'default';\r\n        if (this.isEnabled) {\r\n            if (this.isDragActive && this.dragMode == IntegralUIDragDropDisplayMode.Handle)\r\n                cursorType = 'move';\r\n            else if (this.resizeColumnIndex >= 0 || this.isColumnResizing)\r\n                cursorType = 'ew-resize';\r\n        }\r\n        this.gridCursor = cursorType;\r\n    };\r\n    IntegralUIBaseGrid.prototype.checkStatus = function (type) {\r\n        var retValue = false;\r\n        switch (type) {\r\n            case 'column-reorder':\r\n                retValue = this.columnReorderActive;\r\n                break;\r\n        }\r\n        return retValue;\r\n    };\r\n    IntegralUIBaseGrid.prototype.cloneRow = function (row) {\r\n        return this.dataService.clone(row, this.rowDataKey);\r\n    };\r\n    IntegralUIBaseGrid.prototype.createCloneList = function (list) {\r\n        var cloneList = [];\r\n        for (var i = 0; i < list.length; i++)\r\n            cloneList.push(this.cloneRow(list[i]));\r\n        return cloneList;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getCellByColumnId = function (list, id) {\r\n        var cell = null;\r\n        if (list) {\r\n            for (var j = 0; j < list.length; j++) {\r\n                if (list[j][this.options.cellFields.cid] == id) {\r\n                    cell = list[j];\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        return cell;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getCellWidth = function (rowObj, column) {\r\n        var cellWidth = this.getColumnWidth(column);\r\n        if (column && this.getColumnIndexFromList(column) == this.expandColIndex)\r\n            cellWidth -= rowObj.indent;\r\n        cellWidth = cellWidth > 0 ? cellWidth : 0;\r\n        return cellWidth;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getColumnAllowResize = function (column) {\r\n        var value = column[this.options.columnFields.allowResize];\r\n        if (value)\r\n            return {\r\n                left: this.commonService.isFieldAvailable(value.left, true),\r\n                right: this.commonService.isFieldAvailable(value.right, true)\r\n            };\r\n        return { left: true, right: true };\r\n    };\r\n    IntegralUIBaseGrid.prototype.getColumnById = function (id) {\r\n        var foundColumn = null;\r\n        var list = this.dataService.getList(null, this.columnDataKey);\r\n        if (list)\r\n            for (var j = 0; j < list.length; j++) {\r\n                if (list[j][this.options.columnFields.id] == id) {\r\n                    foundColumn = list[j];\r\n                    break;\r\n                }\r\n            }\r\n        return foundColumn;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getColumnCurrentIndex = function (column) {\r\n        return column ? this.getColumnIndexFromList(column) : -1;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getColumnIndexFromList = function (column) {\r\n        var index = -1;\r\n        for (var j = 0; j < this.currentColumnList.length; j++) {\r\n            if (this.currentColumnList[j].data == column) {\r\n                index = j;\r\n                break;\r\n            }\r\n        }\r\n        return index;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getColumnWidth = function (column, type) {\r\n        var fieldName = this.options.columnFields.width;\r\n        switch (type) {\r\n            case 'min':\r\n                fieldName = this.options.columnFields.minWidth;\r\n                return column && column[fieldName] != undefined ? column[fieldName] : 0;\r\n            case 'max':\r\n                fieldName = this.options.columnFields.maxWidth;\r\n                return column && column[fieldName] != undefined ? column[fieldName] : 9999999;\r\n        }\r\n        return column && column[fieldName] != undefined ? column[fieldName] : 100;\r\n    };\r\n    IntegralUIBaseGrid.prototype.setColumnWidth = function (column, width) {\r\n        if (column && column[this.options.columnFields.fixedWidth] != true) {\r\n            var minWidth = this.getColumnWidth(column, 'min');\r\n            var maxWidth = this.getColumnWidth(column, 'max');\r\n            var value = Math.min(maxWidth, Math.max(minWidth, width));\r\n            column[this.options.columnFields.width] = value > 1 ? value : 0;\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.getPrevColumn = function (column, flag) {\r\n        var found = null;\r\n        var index = this.getColumnIndexFromList(column) - 1;\r\n        if (index >= 0) {\r\n            for (var j = index; j >= 0; j--) {\r\n                var colWidth = this.getColumnWidth(this.currentColumnList[j].data);\r\n                var minWidth = this.getColumnWidth(this.currentColumnList[j].data, 'min');\r\n                var pass = flag ? true : colWidth > minWidth;\r\n                if (!this.isColumnWidthFixed(j) && pass) {\r\n                    found = this.currentColumnList[j].data;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        return found;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getExpandingColumn = function () {\r\n        return this.expandColIndex >= 0 && this.expandColIndex < this.currentColumnList.length ? this.currentColumnList[this.expandColIndex].data : null;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getFilterTree = function (column) {\r\n        var foundTree = null;\r\n        for (var j = 0; j < this.currentColumnList.length; j++) {\r\n            if (this.currentColumnList[j].data == column) {\r\n                foundTree = this.currentColumnList[j].filter;\r\n                break;\r\n            }\r\n        }\r\n        return foundTree;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getCurrentList = function () {\r\n        var list = [];\r\n        for (var i = 0; i < this.currentRowList.length; i++)\r\n            list.push(this.currentRowList[i].data);\r\n        return list;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getList = function (key, parent) {\r\n        switch (key) {\r\n            case 'current':\r\n                return this.getCurrentList();\r\n            case 'selected':\r\n                return this.currentSelectedRows;\r\n        }\r\n        return this.dataService.getList(parent, this.rowDataKey);\r\n    };\r\n    IntegralUIBaseGrid.prototype.getFullList = function () {\r\n        return [];\r\n    };\r\n    IntegralUIBaseGrid.prototype.getTopRow = function () {\r\n        return this.scrollRowList.length > 0 ? this.scrollRowList[0].data : null;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getObjFromRow = function (row) {\r\n        var found = null;\r\n        for (var i = 0; i < this.currentRowList.length; i++) {\r\n            if (this.currentRowList[i].data == row) {\r\n                found = this.currentRowList[i];\r\n                break;\r\n            }\r\n        }\r\n        return found;\r\n    };\r\n    IntegralUIBaseGrid.prototype.createScrollObjFromRow = function (row, rowObj, scrollIndex) {\r\n        return null;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getObjIndexFromScrollList = function (row) {\r\n        var index = -1;\r\n        for (var i = 0; i < this.scrollRowList.length; i++) {\r\n            if (this.scrollRowList[i].data == row) {\r\n                index = i;\r\n                break;\r\n            }\r\n        }\r\n        return index;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getRowCurrentIndex = function (row) {\r\n        if (row) {\r\n            var obj = this.getObjFromRow(row);\r\n            return obj && this.currentRowList ? this.currentRowList.indexOf(obj) : -1;\r\n        }\r\n        return -1;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getRowIndent = function (rowObj, column) {\r\n        var indent = this.columnPadding.left;\r\n        if (this.isExpandBoxAllowed(column))\r\n            indent += rowObj.indent;\r\n        return indent;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getRowLevel = function (row) {\r\n        return 0;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getRowFromComponent = function (cmp) {\r\n        return null;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isChildOf = function (targetRow, row) {\r\n        return false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isColumnVisible = function (column) {\r\n        return column && column[this.options.columnFields.visible] != false ? true : false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isColumnWidthFixed = function (j) {\r\n        return j >= 0 && j < this.currentColumnList.length ? this.currentColumnList[j].data[this.options.columnFields.fixedWidth] == true : false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isComponentIndexInRange = function (index) {\r\n        return this.rowList ? index >= 0 && index < this.rowList.length : false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isExpandBoxAllowed = function (column) {\r\n        return column ? this.getColumnIndexFromList(column) == this.expandColIndex : false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isIndexInRange = function (index, list) {\r\n        return list ? index >= 0 && index < list.length : false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isRowAllowed = function (row, flag) {\r\n        if (row[this.options.rowFields.visible] == false)\r\n            return false;\r\n        else if (this.options.allowFilter == false)\r\n            return true;\r\n        var pass = true;\r\n        if (row) {\r\n            var colID = -1;\r\n            var column = null;\r\n            var cell = null;\r\n            for (var j = 0; j < row[this.options.rowFields.cells].length; j++) {\r\n                pass = true;\r\n                cell = row[this.options.rowFields.cells][j];\r\n                colID = cell[this.options.cellFields.cid];\r\n                column = this.getColumnById(colID);\r\n                if (!column && j < this.currentColumnList.length)\r\n                    column = this.currentColumnList[j].data;\r\n                if (column && column[this.options.columnFields.filterParams]) {\r\n                    var params = column[this.options.columnFields.filterParams];\r\n                    var cellValue = cell[this.options.cellFields.value] ? cell[this.options.cellFields.value] : cell[this.options.cellFields.text];\r\n                    if (params) {\r\n                        if (params.callback)\r\n                            pass = params.callback(cellValue, cell, row);\r\n                        else {\r\n                            pass = this.filterService.match(cellValue, params.conditions, params.formula, this.getFilterTree(column), params.caseSensitive);\r\n                            if (!pass && params.allowParent)\r\n                                pass = this.filterIsThereChildren(row, flag);\r\n                        }\r\n                    }\r\n                }\r\n                if (!pass)\r\n                    break;\r\n            }\r\n        }\r\n        return pass;\r\n    };\r\n    IntegralUIBaseGrid.prototype.filterIsThereChildren = function (row, flag) {\r\n        var retValue = false;\r\n        var list = row[this.options.rowFields.rows];\r\n        if (list) {\r\n            for (var i = 0; i < list.length; i++) {\r\n                retValue = this.isRowAllowed(list[i], flag);\r\n                if (retValue)\r\n                    break;\r\n            }\r\n        }\r\n        return retValue;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isRowEnabled = function (row) {\r\n        //return row && self.options.enabled == true && this.commonService.isEnabled(row[self.options.rowFields.enabled]);\r\n        return true;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isRowFixed = function (row) {\r\n        return false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isRowHovered = function (row) {\r\n        return row && row == this.hoverRow ? true : false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isRowSelected = function (row) {\r\n        return row && row[this.options.rowFields.selected] == true ? true : false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isParentOf = function (targetRow, row) {\r\n        return false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.processStateChanged = function () {\r\n        this.updateLayout();\r\n    };\r\n    IntegralUIBaseGrid.prototype.updateExpandStatus = function () { };\r\n    // Keyboard Navigation ---------------------------------------------------------------\r\n    IntegralUIBaseGrid.prototype.cellGotFocus = function (cell) {\r\n        if (this.isEnabled)\r\n            this.refresh();\r\n    };\r\n    IntegralUIBaseGrid.prototype.cellLostFocus = function (cell) {\r\n        if (this.isEnabled)\r\n            this.refresh();\r\n    };\r\n    IntegralUIBaseGrid.prototype.onContentScroll = function (e) {\r\n        e.srcElement.scrollTop = 0;\r\n        e.srcElement.scrollLeft = 0;\r\n        e.target.scrollTop = 0;\r\n        e.target.scrollLeft = 0;\r\n    };\r\n    IntegralUIBaseGrid.prototype.onGridScroll = function (e) {\r\n        e.srcElement.scrollTop = 0;\r\n        e.srcElement.scrollLeft = 0;\r\n        e.target.scrollTop = 0;\r\n        e.target.scrollLeft = 0;\r\n    };\r\n    IntegralUIBaseGrid.prototype.cellMouseDown = function (e, cell) {\r\n        if (this.isEnabled && e.buttons == 1)\r\n            this.currentFocusCell = cell.data;\r\n    };\r\n    IntegralUIBaseGrid.prototype.cellKeyDown = function (e, cell) {\r\n        var self = this;\r\n        if (this.isEnabled) {\r\n            var eventObj = { cancel: false, cell: cell.data, event: e };\r\n            self.keyDown.emit(eventObj);\r\n            switch (e.keyCode) {\r\n                case 9:\r\n                    break;\r\n                case 13:\r\n                    self.beforeEdit.emit(eventObj);\r\n                    break;\r\n                case 27:\r\n                    break;\r\n                case 33:\r\n                    if (!eventObj.cancel && self.options.allowFocus) {\r\n                        e.preventDefault();\r\n                        self.isKeyboardActive = true;\r\n                        self.processPageUpKey(cell);\r\n                    }\r\n                    break;\r\n                case 34:\r\n                    if (!eventObj.cancel && self.options.allowFocus) {\r\n                        e.preventDefault();\r\n                        self.isKeyboardActive = true;\r\n                        self.processPageDownKey(cell);\r\n                    }\r\n                    break;\r\n                case 35:\r\n                    if (!eventObj.cancel && self.options.allowFocus) {\r\n                        e.preventDefault();\r\n                        self.isKeyboardActive = true;\r\n                        self.processEndKey(cell);\r\n                    }\r\n                    break;\r\n                case 36:\r\n                    if (!eventObj.cancel && self.options.allowFocus) {\r\n                        e.preventDefault();\r\n                        self.isKeyboardActive = true;\r\n                        self.processHomeKey(cell);\r\n                    }\r\n                    break;\r\n                case 37:\r\n                    if (!eventObj.cancel && self.options.allowFocus) {\r\n                        e.preventDefault();\r\n                        self.isKeyboardActive = true;\r\n                        self.processLeftArrowKey(cell);\r\n                    }\r\n                    break;\r\n                case 32:\r\n                    break;\r\n                case 38:\r\n                    if (!eventObj.cancel && self.options.allowFocus) {\r\n                        e.preventDefault();\r\n                        self.isKeyboardActive = true;\r\n                        self.processUpArrowKey(cell);\r\n                    }\r\n                    break;\r\n                case 39:\r\n                    if (!eventObj.cancel && self.options.allowFocus) {\r\n                        e.preventDefault();\r\n                        self.isKeyboardActive = true;\r\n                        self.processRightArrowKey(cell);\r\n                    }\r\n                    break;\r\n                case 40:\r\n                    if (!eventObj.cancel && self.options.allowFocus) {\r\n                        e.preventDefault();\r\n                        self.isKeyboardActive = true;\r\n                        self.processDownArrowKey(cell);\r\n                    }\r\n                    break;\r\n            }\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.cellKeyPress = function (e, cell) {\r\n        var self = this;\r\n        var eventObj = { cancel: false, cell: cell.data, event: e };\r\n        if (this.isEnabled)\r\n            self.keyPress.emit(eventObj);\r\n    };\r\n    IntegralUIBaseGrid.prototype.cellKeyUp = function (e, cell) {\r\n        var self = this;\r\n        var eventObj = { cancel: false, cell: cell.data, event: e };\r\n        if (this.isEnabled)\r\n            self.keyUp.emit(eventObj);\r\n    };\r\n    IntegralUIBaseGrid.prototype.processDownArrowKey = function (cell, e) {\r\n        var downCell = this.getDownCell(cell);\r\n        if (downCell) {\r\n            this.currentFocusCell = downCell.data;\r\n            var row_1 = this.getRowFromCell(downCell);\r\n            var self_1 = this;\r\n            var selTimeout_1 = setTimeout(function () {\r\n                self_1.processRowSelection(e, row_1.data);\r\n                clearTimeout(selTimeout_1);\r\n            }, 1);\r\n            if (this.isLastRow(downCell)) {\r\n                this.scrollPos({\r\n                    x: this.currentScrollPos.x,\r\n                    y: this.currentScrollPos.y + this.avgRowHeight * 2\r\n                });\r\n            }\r\n        }\r\n        return downCell;\r\n    };\r\n    IntegralUIBaseGrid.prototype.processEndKey = function (cell, e) {\r\n        var endCell = null;\r\n        if (this.scrollRowList.length > 0) {\r\n            this.scrollPos({\r\n                x: this.currentScrollPos.x,\r\n                y: this.maxScrollPos.y\r\n            });\r\n            var self_2 = this;\r\n            setTimeout(function () {\r\n                var row = self_2.scrollRowList[self_2.scrollRowList.length - 1];\r\n                if (cell.colIndex >= 0 && cell.colIndex < row.cells.length) {\r\n                    endCell = row.cells[cell.colIndex];\r\n                    self_2.currentFocusCell = endCell.data;\r\n                    var selTimeout_2 = setTimeout(function () {\r\n                        self_2.processRowSelection(e, row.data);\r\n                        clearTimeout(selTimeout_2);\r\n                    }, 1);\r\n                }\r\n            }, 1);\r\n        }\r\n        return endCell;\r\n    };\r\n    IntegralUIBaseGrid.prototype.processHomeKey = function (cell, e) {\r\n        var homeCell = null;\r\n        if (this.scrollRowList.length > 0) {\r\n            this.scrollPos({\r\n                x: this.currentScrollPos.x,\r\n                y: 0\r\n            });\r\n            var self_3 = this;\r\n            setTimeout(function () {\r\n                var row = self_3.scrollRowList[0];\r\n                if (cell.colIndex >= 0 && cell.colIndex < row.cells.length) {\r\n                    homeCell = row.cells[cell.colIndex];\r\n                    self_3.currentFocusCell = homeCell.data;\r\n                    var selTimeout_3 = setTimeout(function () {\r\n                        self_3.processRowSelection(e, row.data);\r\n                        clearTimeout(selTimeout_3);\r\n                    }, 1);\r\n                }\r\n            }, 1);\r\n        }\r\n        return homeCell;\r\n    };\r\n    IntegralUIBaseGrid.prototype.processLeftArrowKey = function (cell) {\r\n        var prevCell = this.getPrevCell(cell);\r\n        if (prevCell) {\r\n            this.currentFocusCell = prevCell.data;\r\n            if (this.isFirstCell(prevCell)) {\r\n                this.scrollPos({\r\n                    x: this.currentScrollPos.x - prevCell.width * 2,\r\n                    y: this.currentScrollPos.y\r\n                });\r\n            }\r\n            var self_4 = this;\r\n            setTimeout(function () {\r\n                self_4.refresh();\r\n            }, 1);\r\n        }\r\n        return prevCell;\r\n    };\r\n    IntegralUIBaseGrid.prototype.processPageDownKey = function (cell, e) {\r\n        var downCell = null;\r\n        if (this.scrollRowList.length > 0) {\r\n            this.scrollPos({\r\n                x: this.currentScrollPos.x,\r\n                y: this.currentScrollPos.y + this.avgRowHeight * (this.scrollRowList.length - 1)\r\n            });\r\n            var self_5 = this;\r\n            setTimeout(function () {\r\n                var rowIndex = cell.rowIndex >= 0 && cell.rowIndex < self_5.scrollRowList.length ? cell.rowIndex : self_5.scrollRowList.length - 1;\r\n                if (self_5.currentScrollPos.y == self_5.maxScrollPos.y)\r\n                    rowIndex = self_5.scrollRowList.length - 1;\r\n                var row = self_5.scrollRowList[rowIndex];\r\n                if (cell.colIndex >= 0 && cell.colIndex < row.cells.length) {\r\n                    downCell = row.cells[cell.colIndex];\r\n                    self_5.currentFocusCell = downCell.data;\r\n                    var selTimeout_4 = setTimeout(function () {\r\n                        self_5.processRowSelection(e, row.data);\r\n                        clearTimeout(selTimeout_4);\r\n                    }, 1);\r\n                }\r\n            }, 1);\r\n        }\r\n        return downCell;\r\n    };\r\n    IntegralUIBaseGrid.prototype.processPageUpKey = function (cell, e) {\r\n        var upCell = null;\r\n        if (this.scrollRowList.length > 0) {\r\n            this.scrollPos({\r\n                x: this.currentScrollPos.x,\r\n                y: this.currentScrollPos.y - this.avgRowHeight * (this.scrollRowList.length - 1)\r\n            });\r\n            var self_6 = this;\r\n            setTimeout(function () {\r\n                var rowIndex = cell.rowIndex >= 0 && cell.rowIndex < self_6.scrollRowList.length ? cell.rowIndex : 0;\r\n                if (self_6.currentScrollPos.y == 0)\r\n                    rowIndex = 0;\r\n                var row = self_6.scrollRowList[rowIndex];\r\n                if (cell.colIndex >= 0 && cell.colIndex < row.cells.length) {\r\n                    upCell = row.cells[cell.colIndex];\r\n                    self_6.currentFocusCell = upCell.data;\r\n                    var selTimeout_5 = setTimeout(function () {\r\n                        self_6.processRowSelection(e, row.data);\r\n                        clearTimeout(selTimeout_5);\r\n                    }, 1);\r\n                }\r\n            }, 1);\r\n        }\r\n        return upCell;\r\n    };\r\n    IntegralUIBaseGrid.prototype.processRightArrowKey = function (cell) {\r\n        var nextCell = this.getNextCell(cell);\r\n        if (nextCell) {\r\n            this.currentFocusCell = nextCell.data;\r\n            if (this.isLastCell(nextCell))\r\n                this.scrollPos({\r\n                    x: this.currentScrollPos.x + nextCell.width * 2,\r\n                    y: this.currentScrollPos.y\r\n                });\r\n            else {\r\n                if (nextCell.colIndex >= this.currentColumnList.length - 2)\r\n                    this.scrollPos({\r\n                        x: this.maxScrollPos.x,\r\n                        y: this.currentScrollPos.y\r\n                    });\r\n            }\r\n            var self_7 = this;\r\n            setTimeout(function () {\r\n                self_7.refresh();\r\n            }, 1);\r\n        }\r\n        return nextCell;\r\n    };\r\n    IntegralUIBaseGrid.prototype.processUpArrowKey = function (cell, e) {\r\n        var upCell = this.getUpCell(cell);\r\n        if (upCell) {\r\n            this.currentFocusCell = upCell.data;\r\n            var row_2 = this.getRowFromCell(upCell);\r\n            var self_8 = this;\r\n            var selTimeout_6 = setTimeout(function () {\r\n                self_8.processRowSelection(e, row_2.data);\r\n                clearTimeout(selTimeout_6);\r\n            }, 1);\r\n            if (this.isFirstRow(upCell)) {\r\n                this.scrollPos({\r\n                    x: this.currentScrollPos.x,\r\n                    y: this.currentScrollPos.y - this.avgRowHeight\r\n                });\r\n            }\r\n        }\r\n        return upCell;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getDownCell = function (cell) {\r\n        if (cell.rowIndex >= 0 && cell.rowIndex < this.scrollRowList.length) {\r\n            var row = this.scrollRowList[cell.rowIndex];\r\n            var nextRowIndex = cell.rowIndex < this.scrollRowList.length - 1 ? cell.rowIndex + 1 : -1;\r\n            var nextRow = nextRowIndex >= 0 ? this.scrollRowList[nextRowIndex] : null;\r\n            return nextRow && cell.colIndex >= 0 && cell.colIndex < nextRow.cells.length ? nextRow.cells[cell.colIndex] : null;\r\n        }\r\n        return null;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getNextCell = function (cell) {\r\n        if (cell.rowIndex >= 0 && cell.rowIndex < this.scrollRowList.length) {\r\n            var row = this.scrollRowList[cell.rowIndex];\r\n            var cellIndex = row.cells.indexOf(cell);\r\n            var nextIndex = cellIndex >= 0 && cellIndex < row.cells.length - 1 ? cellIndex + 1 : -1;\r\n            return nextIndex >= 0 ? row.cells[nextIndex] : null;\r\n        }\r\n        return null;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getPrevCell = function (cell) {\r\n        if (cell.rowIndex >= 0 && cell.rowIndex < this.scrollRowList.length) {\r\n            var row = this.scrollRowList[cell.rowIndex];\r\n            var cellIndex = row.cells.indexOf(cell);\r\n            var prevIndex = cellIndex > 0 && cellIndex < row.cells.length ? cellIndex - 1 : -1;\r\n            return prevIndex >= 0 ? row.cells[prevIndex] : null;\r\n        }\r\n        return null;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getUpCell = function (cell) {\r\n        if (cell.rowIndex >= 0 && cell.rowIndex < this.scrollRowList.length) {\r\n            var row = this.scrollRowList[cell.rowIndex];\r\n            var prevRowIndex = cell.rowIndex > 0 ? cell.rowIndex - 1 : -1;\r\n            var prevRow = prevRowIndex >= 0 ? this.scrollRowList[prevRowIndex] : null;\r\n            return prevRow && cell.colIndex >= 0 && cell.colIndex < prevRow.cells.length ? prevRow.cells[cell.colIndex] : null;\r\n        }\r\n        return null;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isFirstCell = function (cell) {\r\n        return cell.colIndex == 0 ? true : false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isFirstRow = function (cell) {\r\n        return cell.rowIndex == 0 ? true : false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isLastCell = function (cell) {\r\n        return cell.colIndex == this.viewIndexRange.middle - this.viewIndexRange.left ? true : false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isLastRow = function (cell) {\r\n        return cell.rowIndex == this.scrollRowList.length - 2 ? true : false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getRowFromCell = function (cell) {\r\n        return cell.rowIndex >= 0 && cell.rowIndex < this.scrollRowList.length ? this.scrollRowList[cell.rowIndex] : null;\r\n    };\r\n    IntegralUIBaseGrid.prototype.moveFocusFromCell = function (cell, direction) {\r\n        if (!this.options.allowFocus)\r\n            return null;\r\n        var obj = null;\r\n        var cellObj = this.getObjFromCell(cell);\r\n        if (cellObj) {\r\n            switch (direction) {\r\n                case 'down':\r\n                    obj = this.processDownArrowKey(cellObj);\r\n                    break;\r\n                case 'end':\r\n                    obj = this.processEndKey(cellObj);\r\n                    break;\r\n                case 'home':\r\n                    obj = this.processHomeKey(cellObj);\r\n                    break;\r\n                case 'left':\r\n                    obj = this.processLeftArrowKey(cellObj);\r\n                    break;\r\n                case 'pagedown':\r\n                    obj = this.processPageDownKey(cellObj);\r\n                    break;\r\n                case 'pageup':\r\n                    obj = this.processPageUpKey(cellObj);\r\n                    break;\r\n                case 'right':\r\n                    obj = this.processRightArrowKey(cellObj);\r\n                    break;\r\n                case 'up':\r\n                    obj = this.processUpArrowKey(cellObj);\r\n                    break;\r\n            }\r\n        }\r\n        return obj ? obj.data : null;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getObjFromCell = function (cell) {\r\n        var found = null;\r\n        for (var i = 0; i < this.scrollRowList.length; i++) {\r\n            var rowObj = this.scrollRowList[i];\r\n            for (var j = 0; j < rowObj.cells.length; j++) {\r\n                var cellObj = rowObj.cells[j];\r\n                if (cellObj.data == cell) {\r\n                    found = cellObj;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        return found;\r\n    };\r\n    IntegralUIBaseGrid.prototype.onWindowKeyDown = function (e) {\r\n        if (this.isEnabled && this.isKeyboardActive)\r\n            e.preventDefault();\r\n        // Cancel Drag Drop when ESCAPE key is pressed\r\n        if (this.isDragActive && e.keyCode == 27) {\r\n            this.dragDropService.clearData();\r\n            this.dropMark(e);\r\n            this.clearDragDropSettings();\r\n            if (this.dragMode == IntegralUIDragDropDisplayMode.Handle)\r\n                this.updateScrollRowList();\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.onWindowKeyUp = function (e) {\r\n        this.isKeyboardActive = false;\r\n    };\r\n    // Layout ----------------------------------------------------------------------------\r\n    IntegralUIBaseGrid.prototype.getContentSize = function () {\r\n        return { width: 0, height: 0 };\r\n    };\r\n    IntegralUIBaseGrid.prototype.refresh = function (obj) {\r\n        this.clearComponentSelection();\r\n        for (var i = 0; i < this.currentSelectedRows.length; i++) {\r\n            var index = this.getRowCurrentIndex(this.currentSelectedRows[i]);\r\n            if (this.isComponentIndexInRange(index))\r\n                this.rowList[index].state |= integralui_core_1.IntegralUIObjectState.selected;\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.suspendLayout = function () {\r\n        this.allowUpdate = false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.resumeLayout = function () {\r\n        this.allowUpdate = true;\r\n        this.updateLayout();\r\n    };\r\n    IntegralUIBaseGrid.prototype.updateCurrentLayout = function () { };\r\n    IntegralUIBaseGrid.prototype.updateLayout = function () { };\r\n    IntegralUIBaseGrid.prototype.updateColumnWidth = function () {\r\n        if (this.isAutoSizeColumnsActive) {\r\n            var sumColWidth = 0;\r\n            var colWidth = 0;\r\n            var minWidth = 0;\r\n            var colCount = 0;\r\n            var childList = [];\r\n            for (var j = 0; j < this.currentColumnList.length; j++) {\r\n                colWidth = this.getColumnWidth(this.currentColumnList[j].data);\r\n                minWidth = this.getColumnWidth(this.currentColumnList[j].data, 'min');\r\n                if (colWidth >= minWidth) {\r\n                    sumColWidth += colWidth + this.columnPadding.left + this.columnPadding.right + 6;\r\n                    if (this.currentColumnList[j].data[this.options.columnFields.fixedWidth] != true) {\r\n                        colCount++;\r\n                        childList.push(this.currentColumnList[j]);\r\n                    }\r\n                }\r\n            }\r\n            if (colCount > 0) {\r\n                var scrollWidth = this.isVerScrollVisible() ? 20 : 0;\r\n                var emptySpaceWidth = this.clientRect.width - scrollWidth - sumColWidth;\r\n                var widthFactor = emptySpaceWidth / colCount;\r\n                this.updateColumnWidthByFactor(childList, widthFactor);\r\n            }\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.updateColumnWidthByFactor = function (list, widthFactor) {\r\n        var colWidth = 0;\r\n        var colCount = 0;\r\n        var addFactor = 0;\r\n        var minWidth = 0;\r\n        colCount = 0;\r\n        var childList = [];\r\n        // Update column width\r\n        for (var j = 0; j < list.length; j++) {\r\n            colWidth = this.getColumnWidth(list[j].data);\r\n            minWidth = this.getColumnWidth(list[j].data, 'min');\r\n            if (list[j].data[this.options.columnFields.fixedWidth] == true)\r\n                minWidth = colWidth;\r\n            if (colWidth >= minWidth) {\r\n                if (colWidth + widthFactor <= minWidth) {\r\n                    addFactor += colWidth + widthFactor - minWidth;\r\n                    this.setColumnWidth(list[j].data, minWidth);\r\n                    this.updateCellWidth(list[j].data);\r\n                }\r\n                else {\r\n                    childList.push(list[j]);\r\n                    colCount++;\r\n                }\r\n            }\r\n        }\r\n        if (colCount > 0) {\r\n            var remFactor = addFactor / colCount;\r\n            if (remFactor != 0)\r\n                this.updateColumnWidthByFactor(childList, widthFactor + remFactor);\r\n            else {\r\n                for (var j = 0; j < childList.length; j++) {\r\n                    colWidth = this.getColumnWidth(childList[j].data) + widthFactor;\r\n                    this.setColumnWidth(childList[j].data, colWidth);\r\n                    this.updateCellWidth(childList[j].data);\r\n                }\r\n            }\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.checkWidthChanges = function () {\r\n        if (this.isAutoSizeColumnsActive) {\r\n            var sumColWidth = 0;\r\n            var colWidth = 0;\r\n            var minWidth = 0;\r\n            var colCount = 0;\r\n            var childList = [];\r\n            for (var j = 0; j < this.currentColumnList.length; j++) {\r\n                colWidth = this.getColumnWidth(this.currentColumnList[j].data);\r\n                minWidth = this.getColumnWidth(this.currentColumnList[j].data, 'min');\r\n                sumColWidth += colWidth + this.columnPadding.left + this.columnPadding.right + 6;\r\n            }\r\n            var scrollWidth = this.isVerScrollVisible() ? 20 : 0;\r\n            var emptySpaceWidth = this.clientRect.width - scrollWidth - sumColWidth - 2;\r\n            if (emptySpaceWidth > 0) {\r\n                for (var j = this.currentColumnList.length - 1; j >= 0; j--) {\r\n                    if (!this.isColumnWidthFixed(j)) {\r\n                        colWidth = this.getColumnWidth(this.currentColumnList[j].data) + emptySpaceWidth;\r\n                        this.setColumnWidth(this.currentColumnList[j].data, colWidth);\r\n                        this.updateCellWidth(this.currentColumnList[j].data);\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.updateCellWidth = function (column) {\r\n        for (var i = 0; i < this.scrollRowList.length; i++) {\r\n            var obj = this.scrollRowList[i];\r\n            var colIndex = this.getColumnCurrentIndex(column);\r\n            for (var j = 0; j < obj.cells.length; j++) {\r\n                if (obj.cells[j].colIndex == colIndex - this.viewIndexRange.left) {\r\n                    var cellWidth = this.getCellWidth(obj, column);\r\n                    if (this.getColumnIndexFromList(column) == this.expandColIndex) {\r\n                        var newWidth = this.getColumnWidth(column);\r\n                        newWidth = newWidth > 0 ? newWidth : this.columnPadding.left;\r\n                        if (cellWidth == 0)\r\n                            obj.cells[j].indent = newWidth;\r\n                        else\r\n                            obj.cells[j].indent = this.getRowIndent(obj, column);\r\n                    }\r\n                    obj.cells[j].width = cellWidth;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.updateRange = function () { };\r\n    IntegralUIBaseGrid.prototype.getFooterBottomPos = function () {\r\n        var retValue = this.isHorScrollVisible() ? 16 : 0;\r\n        if (this.isPaginationEnabled())\r\n            retValue += this.paginatorHeight;\r\n        return retValue;\r\n    };\r\n    // Mouse Events ----------------------------------------------------------------------\r\n    IntegralUIBaseGrid.prototype.onCtrlMouseEnter = function (e) {\r\n        if (this.isEnabled && e.buttons == 1 && this.cloneElem) {\r\n            this.cloneElem.style.display = \"block\";\r\n        }\r\n        this.elemRenderer.setElementStyle(this.elemRef.nativeElement, \"cursor\", \"default\");\r\n    };\r\n    IntegralUIBaseGrid.prototype.onCtrlMouseLeave = function (e) {\r\n        if (this.isEnabled && e.buttons == 1 && this.cloneElem) {\r\n            this.cloneElem.style.display = \"none\";\r\n        }\r\n        //else\r\n        //this.elemRenderer.setElementStyle(this.elemRef.nativeElement, \"cursor\", \"default\");\r\n        this.stopScrollTimer();\r\n    };\r\n    // Pagination ------------------------------------------------------------------------\r\n    IntegralUIBaseGrid.prototype.currentPage = function (value) {\r\n        if (this.currentPageNumber != value && value >= 1 && value <= this.pageList.length) {\r\n            this.currentPageNumber = value;\r\n            this.updateCurrentLayout();\r\n        }\r\n        return this.currentPageNumber;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getMaxPages = function () {\r\n        return this.pageList ? this.pageList.length : 0;\r\n    };\r\n    IntegralUIBaseGrid.prototype.firstPage = function () {\r\n        if (this.currentPageNumber != 1) {\r\n            this.currentPageNumber = 1;\r\n            this.updateCurrentLayout();\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.lastPage = function () {\r\n        if (this.currentPageNumber != this.pageList.length) {\r\n            this.currentPageNumber = this.pageList.length;\r\n            this.updateCurrentLayout();\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.nextPage = function () {\r\n        if (this.currentPageNumber < this.pageList.length) {\r\n            this.currentPageNumber++;\r\n            this.updateCurrentLayout();\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.prevPage = function () {\r\n        if (this.currentPageNumber > 1) {\r\n            this.currentPageNumber--;\r\n            this.updateCurrentLayout();\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.resetPageNumber = function () {\r\n        this.currentPageNumber = 1;\r\n    };\r\n    IntegralUIBaseGrid.prototype.updatePageNumber = function () {\r\n        if (this.currentPageNumber > this.pageList.length) {\r\n            if (this.pageList.length == 0)\r\n                this.resetPageNumber();\r\n            else\r\n                this.currentPageNumber = this.pageList.length;\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.updatePaging = function (value) {\r\n        if (value) {\r\n            this.options.paging = {\r\n                enabled: this.commonService.isFieldAvailable(value.enabled, false),\r\n                showControlPanel: this.commonService.isFieldAvailable(value.showControlPanel, true),\r\n                pageSize: this.commonService.isFieldAvailable(value.pageSize, 100)\r\n            };\r\n        }\r\n        else {\r\n            this.options.paging = {\r\n                enabled: false,\r\n                showControlPanel: true,\r\n                pageSize: 100\r\n            };\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.paginatorPageChanged = function (e) {\r\n        this.currentPageNumber = e.value;\r\n        this.updateCurrentLayout();\r\n        this.pageChanged.emit({ page: this.currentPageNumber, maxPages: this.getMaxPages(), pageSize: this.options.paging.pageSize });\r\n    };\r\n    IntegralUIBaseGrid.prototype.isPaginationEnabled = function () {\r\n        return this.options.paging.enabled && this.options.paging.showControlPanel;\r\n    };\r\n    // Reorder ---------------------------------------------------------------------------\r\n    IntegralUIBaseGrid.prototype.getColumnOpacity = function (obj) {\r\n        if (this.columnReorderActive && obj.data == this.reorderColumn && this.isGridHovered)\r\n            return 0;\r\n        return 1;\r\n    };\r\n    IntegralUIBaseGrid.prototype.updateOrignalScrollColumnList = function () {\r\n        this.originalScrollColumnList.length = 0;\r\n        for (var j = 0; j < this.scrollColumnList.length; j++)\r\n            this.originalScrollColumnList.push(this.scrollColumnList[j]);\r\n    };\r\n    IntegralUIBaseGrid.prototype.updateReorderColumnPos = function () {\r\n        if (this.reorderColumn) {\r\n            var sumColWidth = 0;\r\n            var colWidth = 0;\r\n            var reorderColWidth = this.getColumnWidth(this.reorderColumnObj.data);\r\n            for (var j = 0; j < this.originalScrollColumnList.length && this.originalScrollColumnList[j] != this.reorderColumnObj; j++) {\r\n                colWidth = this.getColumnWidth(this.originalScrollColumnList[j].data);\r\n                sumColWidth += colWidth + this.columnPadding.left + this.columnPadding.right + 6;\r\n            }\r\n            this.reorderColumnObjPos.left = sumColWidth + this.reorderColumnCurrentPos.left - this.reorderColumnStartPos.left;\r\n            var headerRect = this.getHeaderRect();\r\n            this.reorderColIndex = this.getColumnIndexFromScrollList(this.reorderColumn);\r\n            this.reorderNewColIndex = this.reorderColIndex;\r\n            var newMovePos = 0;\r\n            sumColWidth = 0;\r\n            for (var j = 0; j < this.originalScrollColumnList.length; j++) {\r\n                colWidth = this.getColumnWidth(this.originalScrollColumnList[j].data) + this.columnPadding.left + this.columnPadding.right + 6;\r\n                newMovePos = sumColWidth;\r\n                sumColWidth += colWidth;\r\n                if (this.originalScrollColumnList[j].data[this.options.columnFields.allowDrop] != false && this.reorderColumnCurrentPos.left - headerRect.left < sumColWidth) {\r\n                    //if (this.originalScrollColumnList[j].data != this.reorderColumn){\r\n                    this.reorderNewColIndex = j;\r\n                    //}\r\n                    break;\r\n                }\r\n            }\r\n            if (this.reorderColIndex != this.reorderNewColIndex) {\r\n                this.moveObject(this.reorderColIndex, this.reorderNewColIndex, this.scrollColumnList);\r\n            }\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.getHeaderRect = function () {\r\n        return { top: 0, right: 0, bottom: 0, left: 0, height: 0, width: 0, x: 0, y: 0 };\r\n    };\r\n    IntegralUIBaseGrid.prototype.resetReorderColumnSettings = function () {\r\n        this.reorderColumnObj = null;\r\n        this.reorderColumn = null;\r\n        this.columnReorderActive = false;\r\n        this.startColumnReorder = false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.restoreColumnOrder = function () {\r\n        if (this.originalScrollColumnList.length > 0) {\r\n            this.scrollColumnList.length = 0;\r\n            for (var j = 0; j < this.originalScrollColumnList.length; j++)\r\n                this.scrollColumnList.push(this.originalScrollColumnList[j]);\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.getColumnIndexFromScrollList = function (column) {\r\n        var index = -1;\r\n        for (var j = 0; j < this.scrollColumnList.length; j++) {\r\n            if (this.scrollColumnList[j].data == column) {\r\n                index = j;\r\n                break;\r\n            }\r\n        }\r\n        return index;\r\n    };\r\n    IntegralUIBaseGrid.prototype.moveObject = function (from, to, list) {\r\n        if (this.isIndexInRange(from, list) && this.isIndexInRange(to, list))\r\n            list.splice(to, 0, list.splice(from, 1)[0]);\r\n    };\r\n    // Scrolling -------------------------------------------------------------------------\r\n    IntegralUIBaseGrid.prototype.scrollPos = function (value) {\r\n        if (value) {\r\n            this.currentScrollPos = {\r\n                x: Math.max(0, Math.min(value.x, this.maxScrollPos.x)),\r\n                y: Math.max(0, Math.min(value.y, this.maxScrollPos.y))\r\n            };\r\n        }\r\n        return { x: Math.floor(this.currentScrollPos.x), y: Math.floor(this.currentScrollPos.y) };\r\n    };\r\n    IntegralUIBaseGrid.prototype.changeHorizontalScrollPos = function (value) {\r\n        this.currentScrollPos.x = Math.max(0, Math.min(value, this.maxScrollPos.x));\r\n        if (this.currentScrollPos.x != this.prevScrollPos.x) {\r\n            this.updateRange();\r\n            this.scrollPosChanged.emit({ value: this.scrollPos() });\r\n            this.prevScrollPos.x = this.currentScrollPos.x;\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.changeVerticalScrollPos = function (value) {\r\n        this.currentScrollPos.y = Math.max(0, Math.min(value, this.maxScrollPos.y));\r\n        if (this.currentScrollPos.y != this.prevScrollPos.y) {\r\n            this.updateView();\r\n            this.scrollPosChanged.emit({ value: this.scrollPos() });\r\n            this.prevScrollPos.y = this.currentScrollPos.y;\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.gridMouseWheel = function (e) {\r\n        e.preventDefault();\r\n        if (this.isEnabled) {\r\n            this.hoverRow = null;\r\n            var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));\r\n            if (this.isVerScrollVisible()) {\r\n                var wheelStep = Math.floor(this.clientRect.height / 4);\r\n                var newValue = this.currentScrollPos.y + wheelStep * delta * (-1);\r\n                this.changeVerticalScrollPos(newValue);\r\n            }\r\n        }\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIBaseGrid.prototype.isVerScrollVisible = function () {\r\n        return this.isEnabled && this.options.showScroll.vertical && this.scrollSize.height > 0 ? true : false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isHorScrollVisible = function () {\r\n        return this.isEnabled && this.options.showScroll.horizontal && this.scrollSize.width > 0 ? true : false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.onVerticalScrollStart = function (e) {\r\n        this.hoverRow = null;\r\n        this.isScrollActive = true;\r\n    };\r\n    IntegralUIBaseGrid.prototype.onVerticalScrollEnd = function (e) {\r\n        this.isScrollActive = false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.onVerticalScrollChanged = function (e) {\r\n        this.changeVerticalScrollPos(e.value);\r\n    };\r\n    IntegralUIBaseGrid.prototype.onHorizontalScrollStart = function (e) {\r\n        this.hoverRow = null;\r\n        this.isScrollActive = true;\r\n    };\r\n    IntegralUIBaseGrid.prototype.onHorizontalScrollEnd = function (e) {\r\n        this.isScrollActive = false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.onHorizontalScrollChanged = function (e) {\r\n        this.currentScrollPos.x = e.value;\r\n        this.scrollPosChanged.emit({ value: this.scrollPos() });\r\n        var self = this;\r\n        var tempTimeout = setTimeout(function () {\r\n            self.updateRange();\r\n            clearTimeout(tempTimeout);\r\n        }, 1);\r\n    };\r\n    IntegralUIBaseGrid.prototype.updateView = function () {\r\n        this.currentIndex = this.avgRowHeight > 0 ? Math.floor(this.currentScrollPos.y / this.avgRowHeight) : 0;\r\n        if (this.currentIndex != this.prevIndex) {\r\n            this.updateScrollRowList();\r\n            this.prevIndex = this.currentIndex;\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.processScroll = function (e, extraTopSpace, extraBottomSpace) {\r\n        if (this.isEnabled) {\r\n            if (this.isVerScrollVisible()) {\r\n                var shiftPos = this.commonService.getShiftPos();\r\n                var mousePos = this.commonService.getMousePos(e);\r\n                mousePos.x -= shiftPos.x;\r\n                mousePos.y -= shiftPos.y;\r\n                var boundRect = this.commonService.getPageRect(this.elemRef.nativeElement);\r\n                var additionalTopSpace = extraTopSpace ? extraTopSpace : 0;\r\n                var additionalBottomSpace = extraBottomSpace ? extraBottomSpace : 0;\r\n                var upperLimit = boundRect.top + this.headerHeight + additionalTopSpace + 25;\r\n                var lowerLimit = boundRect.bottom - this.footerHeight - additionalBottomSpace - 25;\r\n                if (this.isHorScrollVisible())\r\n                    lowerLimit -= 16;\r\n                if (mousePos.y < upperLimit)\r\n                    this.startScrollTimer(false);\r\n                else if (mousePos.y > lowerLimit)\r\n                    this.startScrollTimer(true);\r\n                else\r\n                    this.stopScrollTimer();\r\n            }\r\n            else\r\n                this.stopScrollTimer();\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.startScrollTimer = function (flag, interval) {\r\n        var self = this;\r\n        if (!self.isScrollTimerActive) {\r\n            self.accelerator = 0.5;\r\n            self.scrollCount = 0;\r\n            self.isScrollTimerActive = true;\r\n            var scrollInterval = interval ? interval : 100;\r\n            self.scrollTimerID = setInterval(function () {\r\n                self.scrollTimerElapsed(flag);\r\n            }, scrollInterval);\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.stopScrollTimer = function () {\r\n        if (this.scrollTimerID) {\r\n            clearInterval(this.scrollTimerID);\r\n            this.scrollTimerID = null;\r\n        }\r\n        this.accelerator = 0.5;\r\n        this.scrollCount = 0;\r\n        this.isScrollTimerActive = false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.scrollTimerElapsed = function (flag) {\r\n        var oldPos = this.currentScrollPos;\r\n        if (this.scrollCount === 0)\r\n            this.scrollCount = 5;\r\n        this.scrollCount += 5; // + this.avgRowHeight;\r\n        this.accelerator += 0.5;\r\n        this.scrollCount += Math.floor(this.accelerator);\r\n        var scrollStep = this.scrollCount;\r\n        if (flag) {\r\n            if (this.currentScrollPos.y + scrollStep > this.maxScrollPos.y)\r\n                this.currentScrollPos.y = this.maxScrollPos.y;\r\n            else\r\n                this.currentScrollPos.y += scrollStep;\r\n        }\r\n        else {\r\n            if (this.currentScrollPos.y - scrollStep < 0)\r\n                this.currentScrollPos.y = 0;\r\n            else\r\n                this.currentScrollPos.y -= scrollStep;\r\n        }\r\n        if (oldPos.y <= 0 || this.currentScrollPos.y < oldPos.y)\r\n            this.stopScrollTimer();\r\n    };\r\n    IntegralUIBaseGrid.prototype.scrollTo = function (row) {\r\n        if (row) {\r\n            var index = this.getRowCurrentIndex(row);\r\n            if (index >= 0)\r\n                this.scrollPos({\r\n                    x: this.currentScrollPos.x,\r\n                    y: this.avgRowHeight * (index + 1 - this.visibleRange / 2)\r\n                });\r\n            this.updateLayout();\r\n        }\r\n    };\r\n    // Search ----------------------------------------------------------------------------\r\n    IntegralUIBaseGrid.prototype.findRowById = function (id) {\r\n        return this.dataService.findObjectById(id, this.rowDataKey);\r\n    };\r\n    IntegralUIBaseGrid.prototype.findRowByText = function (text) {\r\n        return this.dataService.findObjectByText(text, this.rowDataKey);\r\n    };\r\n    // Selection -------------------------------------------------------------------------\r\n    IntegralUIBaseGrid.prototype.clearSelection = function () {\r\n        this.clearPrevSelection();\r\n        this.refresh();\r\n    };\r\n    // Columns\r\n    IntegralUIBaseGrid.prototype.processColumnSelection = function (e, column, value) {\r\n        var self = this;\r\n        if (column) {\r\n            if (column[self.options.columnFields.canSelect] == false)\r\n                return;\r\n            var pass = true;\r\n            if (self.currentSelectedColumn)\r\n                pass = !self.commonService.isEqual(self.currentSelectedColumn[self.options.columnFields.id], column[self.options.columnFields.id]);\r\n            var eventObj = { cancel: false, obj: column };\r\n            self.beforeSelect.emit(eventObj);\r\n            if (pass && eventObj.cancel != true) {\r\n                if (self.currentSelectedColumn) {\r\n                    self.currentSelectedColumn[self.options.columnFields.selected] = false;\r\n                    self.refresh(self.currentSelectedColumn);\r\n                }\r\n                self.currentSelectedColumn = column;\r\n                column[self.options.columnFields.selected] = true;\r\n                self.refresh(column);\r\n                self.callAfterSelectEvent(column);\r\n            }\r\n        }\r\n        else\r\n            return self.currentSelectedColumn;\r\n    };\r\n    // Rows\r\n    IntegralUIBaseGrid.prototype.clearComponentSelection = function () {\r\n        this.rowList.forEach(function (cmp) { return cmp.state &= ~integralui_core_1.IntegralUIObjectState.selected; });\r\n    };\r\n    IntegralUIBaseGrid.prototype.clearPrevSelection = function (row) {\r\n        for (var i = 0; i < this.currentSelectedRows.length; i++) {\r\n            if (row && !this.commonService.isEqual(this.currentSelectedRows[i][this.options.rowFields.id], row[this.options.rowFields.id])) {\r\n                this.currentSelectedRows[i][this.options.rowFields.selected] = false;\r\n            }\r\n            else if (!row)\r\n                this.currentSelectedRows[i][this.options.rowFields.selected] = false;\r\n        }\r\n        this.currentSelectedRows.length = 0;\r\n        if (row && this.isRowEnabled(row))\r\n            this.currentSelectedRows.push(row);\r\n        else\r\n            this.currentSelectedRow = null;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isRowInSelectionList = function (row) {\r\n        var found = false;\r\n        var list = this.currentSelectedRows;\r\n        if (row && list) {\r\n            for (var i = 0; i < list.length; i++) {\r\n                if (this.commonService.isEqual(list[i][this.options.rowFields.id], row[this.options.rowFields.id])) {\r\n                    found = true;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        return found;\r\n    };\r\n    IntegralUIBaseGrid.prototype.processRowSelection = function (e, row, value) {\r\n        var self = this;\r\n        if (row) {\r\n            if (self.selectionMode == integralui_core_1.IntegralUISelectionMode.None || row[self.options.rowFields.canSelect] == false)\r\n                return;\r\n            var isThereSelectedRows = self.currentSelectedRows.length > 0;\r\n            if (!self.isRowEnabled(row)) {\r\n                self.clearPrevSelection();\r\n                self.refresh();\r\n                if (isThereSelectedRows)\r\n                    this.selectionChanged.emit(null);\r\n            }\r\n            else {\r\n                var currentSelRow = self.currentSelectedRow;\r\n                var pass = true;\r\n                if (currentSelRow)\r\n                    pass = (e && (e.ctrlKey || e.metaKey)) || !this.commonService.isEqual(currentSelRow[self.options.rowFields.id], row[self.options.rowFields.id]) || currentSelRow[self.options.rowFields.selected] == false;\r\n                var eventObj = { cancel: false, obj: row };\r\n                self.beforeSelect.emit(eventObj);\r\n                if (eventObj.cancel != true) {\r\n                    var areCmdKeysActive = e && (e.shiftKey || e.ctrlKey || e.metaKey) ? true : false;\r\n                    if (pass) {\r\n                        if (self.selectionMode == integralui_core_1.IntegralUISelectionMode.MultiExtended)\r\n                            pass = !self.isRowInSelectionList(row) || !areCmdKeysActive || (e && e.shiftKey);\r\n                        if (pass) {\r\n                            if (self.selectionMode == integralui_core_1.IntegralUISelectionMode.One)\r\n                                self.clearPrevSelection();\r\n                            else if (e && e.shiftKey)\r\n                                self.clearPrevSelection();\r\n                            else if (!areCmdKeysActive && self.selectionMode != integralui_core_1.IntegralUISelectionMode.MultiSimple && (self.currentSelectedRows.length == 1 || !self.isRowInSelectionList(row)))\r\n                                self.clearPrevSelection();\r\n                        }\r\n                        self.currentSelectedRow = row;\r\n                        if (e && e.shiftKey && self.selectionMode != integralui_core_1.IntegralUISelectionMode.One) {\r\n                            if (!self.shiftFirstSelectedRow)\r\n                                self.shiftFirstSelectedRow = currentSelRow;\r\n                            var firstSelIndex = self.getRowCurrentIndex(self.shiftFirstSelectedRow);\r\n                            var lastSelIndex = self.getRowCurrentIndex(row);\r\n                            if (firstSelIndex > lastSelIndex) {\r\n                                var tempIndex = firstSelIndex;\r\n                                firstSelIndex = lastSelIndex;\r\n                                lastSelIndex = tempIndex;\r\n                            }\r\n                            if (self.isIndexInRange(firstSelIndex, self.currentRowList) && self.isIndexInRange(lastSelIndex, self.currentRowList)) {\r\n                                for (var i = firstSelIndex; i <= lastSelIndex; i++) {\r\n                                    if (self.currentRowList[i].data[self.options.rowFields.canSelect] != false) {\r\n                                        self.currentRowList[i].data[self.options.rowFields.selected] = true;\r\n                                        self.currentSelectedRows.push(self.currentRowList[i].data);\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                        else if (areCmdKeysActive || self.selectionMode == integralui_core_1.IntegralUISelectionMode.MultiSimple) {\r\n                            var currentSelValue = row[self.options.rowFields.selected] == null || row[self.options.rowFields.selected] == 'undefined' ? false : row[self.options.rowFields.selected];\r\n                            row[self.options.rowFields.selected] = !currentSelValue;\r\n                            if (!row[self.options.rowFields.selected])\r\n                                self.currentSelectedRows = self.currentSelectedRows.filter(function (obj) {\r\n                                    return (obj != row);\r\n                                });\r\n                            else if (!self.isRowInSelectionList(row))\r\n                                self.currentSelectedRows.push(row);\r\n                            self.shiftFirstSelectedRow = null;\r\n                        }\r\n                        else {\r\n                            row[self.options.rowFields.selected] = true;\r\n                            if (!self.isRowInSelectionList(row))\r\n                                self.currentSelectedRows.push(row);\r\n                            self.shiftFirstSelectedRow = null;\r\n                        }\r\n                        self.callAfterSelectEvent(row);\r\n                        self.refresh();\r\n                    }\r\n                    else if (areCmdKeysActive || self.selectionMode == integralui_core_1.IntegralUISelectionMode.MultiSimple) {\r\n                        var currentSelValue = row[self.options.rowFields.selected] === null || row[self.options.rowFields.selected] == 'undefined' ? false : row[self.options.rowFields.selected];\r\n                        if (value && value != 'undefined')\r\n                            currentSelValue = value;\r\n                        row[self.options.rowFields.selected] = !currentSelValue;\r\n                        if (!row[self.options.rowFields.selected]) {\r\n                            self.currentSelectedRows = self.currentSelectedRows.filter(function (obj) {\r\n                                return (obj != row);\r\n                            });\r\n                        }\r\n                        else if (!self.isRowInSelectionList(row))\r\n                            self.currentSelectedRows.push(row);\r\n                        self.shiftFirstSelectedRow = null;\r\n                        self.callAfterSelectEvent(row);\r\n                        self.refresh();\r\n                    }\r\n                    else if (!areCmdKeysActive && !(self.selectionMode & integralui_core_1.IntegralUISelectionMode.MultiSimple) && (self.currentSelectedRows.length == 1 || !self.isRowInSelectionList(row))) {\r\n                        self.shiftFirstSelectedRow = null;\r\n                        self.clearPrevSelection(row);\r\n                        self.refresh();\r\n                        if (isThereSelectedRows)\r\n                            this.selectionChanged.emit(null);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.selectRows = function (rows) {\r\n        if (rows && Array.isArray(rows)) {\r\n            this.currentSelectedRows.length = 0;\r\n            for (var i = 0; i < rows.length; i++) {\r\n                rows[i][this.options.rowFields.selected] = true;\r\n                this.currentSelectedRows.push(rows[i]);\r\n            }\r\n            if (rows.length > 0) {\r\n                this.currentSelectedRow = rows[rows.length - 1];\r\n                this.callAfterSelectEvent(this.currentSelectedRow);\r\n            }\r\n            else\r\n                this.currentSelectedRow = null;\r\n            this.refresh();\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.updateRowSelection = function (e, row) {\r\n        var areCmdKeysActive = e && (e.shiftKey || e.ctrlKey || e.metaKey) ? true : false;\r\n        if (this.selectionMode == integralui_core_1.IntegralUISelectionMode.MultiExtended && row[this.options.rowFields.canSelect] != false && this.currentSelectedRows.length > 0 && !e.shiftKey && !areCmdKeysActive && e.which == 1) {\r\n            var countSelRows = this.currentSelectedRows.length;\r\n            this.clearPrevSelection();\r\n            row[this.options.rowFields.selected] = true;\r\n            this.currentSelectedRows.push(row);\r\n            if (countSelRows > 1)\r\n                this.callAfterSelectEvent(row);\r\n            this.refresh();\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.sort = function (column, order, comparer) {\r\n        this.sortColumn = column;\r\n        this.sortComparer = comparer;\r\n        this.options.sorting = order;\r\n        this.updateLayout();\r\n        this.change.emit({ type: 'sorting' });\r\n    };\r\n    IntegralUIBaseGrid.prototype.getCellIndexInCollection = function (cells, colIndex, colId) {\r\n        var cellIndex = -1;\r\n        if (cells) {\r\n            for (var j = 0; j < cells.length; j++) {\r\n                if (cells[j][this.options.cellFields.cid] == undefined) {\r\n                    cellIndex = colIndex;\r\n                    break;\r\n                }\r\n                else if (cells[j][this.options.cellFields.cid] == colId) {\r\n                    cellIndex = j;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        return cellIndex;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isSortingAllowed = function () {\r\n        return this.options.sorting == integralui_core_1.IntegralUISortOrder.Ascending || this.options.sorting == integralui_core_1.IntegralUISortOrder.Descending;\r\n    };\r\n    IntegralUIBaseGrid.prototype.isSortingColumn = function (column) {\r\n        return column && column == this.sortColumn ? true : false;\r\n    };\r\n    IntegralUIBaseGrid.prototype.applySorting = function (list) {\r\n        var self = this;\r\n        if (list) {\r\n            if (self.sortColumn && self.sortColumn[self.options.columnFields.visible] == false)\r\n                return;\r\n            var colIndex = self.getColumnCurrentIndex(self.sortColumn);\r\n            var sortColumnIndex_1 = colIndex >= 0 ? colIndex : self.options.expandColIndex;\r\n            if (sortColumnIndex_1 < self.currentColumnList.length) {\r\n                var sortColumnId_1 = self.currentColumnList[sortColumnIndex_1].data[self.options.columnFields.id];\r\n                if (self.sortColumn && self.sortColumn[self.options.columnFields.comparer])\r\n                    list.sort(self.sortColumn[self.options.columnFields.comparer]);\r\n                else if (self.sortComparer)\r\n                    list.sort(self.sortComparer);\r\n                else if (self.isSortingAllowed()) {\r\n                    list.sort(function (firstObj, secondObj) {\r\n                        var x = null;\r\n                        var y = null;\r\n                        if (firstObj[self.options.rowFields.cells]) {\r\n                            var firstIndex = self.getCellIndexInCollection(firstObj[self.options.rowFields.cells], sortColumnIndex_1, sortColumnId_1);\r\n                            if (firstIndex >= 0) {\r\n                                x = firstObj[self.options.rowFields.cells][firstIndex][self.options.cellFields.value];\r\n                                if (!x)\r\n                                    x = firstObj[self.options.rowFields.cells][firstIndex][self.options.cellFields.text];\r\n                                if (self.commonService.isObject(x))\r\n                                    x = x.value ? x.value : x.text;\r\n                            }\r\n                        }\r\n                        if (secondObj[self.options.rowFields.cells]) {\r\n                            var secondIndex = self.getCellIndexInCollection(secondObj[self.options.rowFields.cells], sortColumnIndex_1, sortColumnId_1);\r\n                            if (secondIndex >= 0) {\r\n                                y = secondObj[self.options.rowFields.cells][secondIndex][self.options.cellFields.value];\r\n                                if (!y)\r\n                                    y = secondObj[self.options.rowFields.cells][secondIndex][self.options.cellFields.text];\r\n                                if (self.commonService.isObject(y))\r\n                                    y = y.value ? y.value : y.text;\r\n                            }\r\n                        }\r\n                        x = x != undefined ? x : null;\r\n                        y = y != undefined ? y : null;\r\n                        switch (self.options.sorting) {\r\n                            case integralui_core_1.IntegralUISortOrder.Ascending:\r\n                                if (x < y)\r\n                                    return -1;\r\n                                else if (x > y)\r\n                                    return 1;\r\n                                break;\r\n                            case integralui_core_1.IntegralUISortOrder.Descending:\r\n                                if (x > y)\r\n                                    return -1;\r\n                                else if (x < y)\r\n                                    return 1;\r\n                                break;\r\n                            default:\r\n                                return 0;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.getColumnInlineStyle = function (value) {\r\n        var style = {\r\n            header: '',\r\n            footer: ''\r\n        };\r\n        if (value)\r\n            style = {\r\n                header: this.commonService.isFieldAvailable(value.header, ''),\r\n                footer: this.commonService.isFieldAvailable(value.footer, '')\r\n            };\r\n        return style;\r\n    };\r\n    IntegralUIBaseGrid.prototype.getRowInlineStyle = function (obj) {\r\n        var style = obj.data[this.options.rowFields.style] || {};\r\n        if (obj.data[this.options.rowFields.allowDrag] != false)\r\n            style.cursor = 'move';\r\n        if (obj.hide)\r\n            style.display = 'none';\r\n        return style;\r\n    };\r\n    // Touch -----------------------------------------------------------------------------\r\n    IntegralUIBaseGrid.prototype.columnTouchStart = function (e, obj) {\r\n        if (this.isEnabled)\r\n            this.processColumnSelection(e, obj.data);\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIBaseGrid.prototype.rowTouchStart = function (e, obj) {\r\n        if (this.isEnabled)\r\n            this.processRowSelection(e, obj.data);\r\n        //e.stopPropagation();\r\n    };\r\n    IntegralUIBaseGrid.prototype.ctrlTouchStart = function (e) {\r\n        e.preventDefault();\r\n        if (this.isEnabled) {\r\n            var touchData = this.commonService.getTouchData(e);\r\n            if (touchData && touchData.length > 0)\r\n                this.touchStartPos = {\r\n                    x: touchData[0].pageX,\r\n                    y: touchData[0].pageY\r\n                };\r\n        }\r\n    };\r\n    IntegralUIBaseGrid.prototype.ctrlTouchEnd = function (e) {\r\n        var self = this;\r\n        if (self.isEnabled) {\r\n            var touchData = self.commonService.getTouchData(e);\r\n            if (touchData && touchData.length > 0)\r\n                self.touchEndPos = {\r\n                    x: touchData[0].pageX,\r\n                    y: touchData[0].pageY\r\n                };\r\n            var delta_1 = {\r\n                dx: self.touchEndPos.x - self.touchStartPos.x,\r\n                dy: self.touchEndPos.y - self.touchStartPos.y\r\n            };\r\n            //if (Math.abs(delta.dx) > 20 || Math.abs(delta.dy) > 20){\r\n            //if (document.activeElement)\r\n            //document.activeElement.blur();\r\n            //}\r\n            var isHorizontalEnd_1 = false;\r\n            var isVerticalEnd_1 = false;\r\n            var touchScrollPos_1 = self.touchStartPos;\r\n            var startScrollPos_1 = {\r\n                x: self.currentScrollPos.x,\r\n                y: self.currentScrollPos.y\r\n            };\r\n            var touchScrollInterval_1 = setInterval(function () {\r\n                var newScrollPos = self.currentScrollPos;\r\n                if (delta_1.dx < -20) {\r\n                    touchScrollPos_1.x -= 10;\r\n                    if (touchScrollPos_1.x > self.touchEndPos.x)\r\n                        newScrollPos.x += 10;\r\n                    else {\r\n                        newScrollPos.x = startScrollPos_1.x - delta_1.dx;\r\n                        isHorizontalEnd_1 = true;\r\n                    }\r\n                }\r\n                else if (delta_1.dx > 20) {\r\n                    touchScrollPos_1.x += 10;\r\n                    if (touchScrollPos_1.x < self.touchEndPos.x)\r\n                        newScrollPos.x -= 10;\r\n                    else {\r\n                        newScrollPos.x = startScrollPos_1.x - delta_1.dx;\r\n                        isHorizontalEnd_1 = true;\r\n                    }\r\n                }\r\n                else\r\n                    isHorizontalEnd_1 = true;\r\n                if (delta_1.dy < -20) {\r\n                    touchScrollPos_1.y -= 10;\r\n                    if (touchScrollPos_1.y > self.touchEndPos.y)\r\n                        newScrollPos.y += 10;\r\n                    else {\r\n                        newScrollPos.y = startScrollPos_1.y - delta_1.dy;\r\n                        isVerticalEnd_1 = true;\r\n                    }\r\n                }\r\n                else if (delta_1.dy > 20) {\r\n                    touchScrollPos_1.y += 10;\r\n                    if (touchScrollPos_1.y < self.touchEndPos.y)\r\n                        newScrollPos.y -= 10;\r\n                    else {\r\n                        newScrollPos.y = startScrollPos_1.y - delta_1.dy;\r\n                        isVerticalEnd_1 = true;\r\n                    }\r\n                }\r\n                else\r\n                    isVerticalEnd_1 = true;\r\n                self.scrollPos(newScrollPos);\r\n                if (isHorizontalEnd_1 && isVerticalEnd_1)\r\n                    clearInterval(touchScrollInterval_1);\r\n            }, 5);\r\n            self.touchStartPos = self.touchEndPos;\r\n        }\r\n    };\r\n    return IntegralUIBaseGrid;\r\n}(integralui_core_1.IntegralUIBaseComponent));\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Number)\r\n], IntegralUIBaseGrid.prototype, \"dragMode\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUIBaseGrid.prototype, \"appRef\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean)\r\n], IntegralUIBaseGrid.prototype, \"autoUpdate\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Number)\r\n], IntegralUIBaseGrid.prototype, \"rowHeight\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean),\r\n    __metadata(\"design:paramtypes\", [Boolean])\r\n], IntegralUIBaseGrid.prototype, \"allowColumnReorder\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean),\r\n    __metadata(\"design:paramtypes\", [Boolean])\r\n], IntegralUIBaseGrid.prototype, \"allowDrag\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean),\r\n    __metadata(\"design:paramtypes\", [Boolean])\r\n], IntegralUIBaseGrid.prototype, \"allowDrop\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean),\r\n    __metadata(\"design:paramtypes\", [Boolean])\r\n], IntegralUIBaseGrid.prototype, \"allowFilter\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean),\r\n    __metadata(\"design:paramtypes\", [Boolean])\r\n], IntegralUIBaseGrid.prototype, \"allowFocus\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean),\r\n    __metadata(\"design:paramtypes\", [Boolean])\r\n], IntegralUIBaseGrid.prototype, \"autoSizeColumns\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Array),\r\n    __metadata(\"design:paramtypes\", [Array])\r\n], IntegralUIBaseGrid.prototype, \"columns\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object),\r\n    __metadata(\"design:paramtypes\", [Object])\r\n], IntegralUIBaseGrid.prototype, \"dataFields\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object),\r\n    __metadata(\"design:paramtypes\", [Object])\r\n], IntegralUIBaseGrid.prototype, \"focusedCell\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Number),\r\n    __metadata(\"design:paramtypes\", [Number])\r\n], IntegralUIBaseGrid.prototype, \"gridLines\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object),\r\n    __metadata(\"design:paramtypes\", [Object])\r\n], IntegralUIBaseGrid.prototype, \"paging\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Array),\r\n    __metadata(\"design:paramtypes\", [Array])\r\n], IntegralUIBaseGrid.prototype, \"rows\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object),\r\n    __metadata(\"design:paramtypes\", [Object])\r\n], IntegralUIBaseGrid.prototype, \"selectedColumn\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object),\r\n    __metadata(\"design:paramtypes\", [Object])\r\n], IntegralUIBaseGrid.prototype, \"selectedRow\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Number),\r\n    __metadata(\"design:paramtypes\", [Number])\r\n], IntegralUIBaseGrid.prototype, \"selectionMode\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object),\r\n    __metadata(\"design:paramtypes\", [Object])\r\n], IntegralUIBaseGrid.prototype, \"showScroll\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Number),\r\n    __metadata(\"design:paramtypes\", [Number])\r\n], IntegralUIBaseGrid.prototype, \"sorting\", null);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"afterSelect\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"beforeEdit\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"beforeSelect\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"beforeUpdate\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"change\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"columnAdding\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"columnAdded\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"columnClick\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"columnOrderChanged\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"columnRemoving\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"columnRemoved\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"columnsCleared\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"columnSizeChanged\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"dragEnter\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"dragDrop\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"dragLeave\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"dragOver\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"dragStart\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"keyDown\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"keyPress\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"keyUp\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"pageChanged\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"rowAdding\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"rowAdded\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"rowClick\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"rowDblClick\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"rowHover\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"rowRemoving\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"rowRemoved\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"rowsCleared\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"loadComplete\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"scrollPosChanged\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"selectionChanged\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseGrid.prototype, \"updateComplete\", void 0);\r\n__decorate([\r\n    core_1.HostListener('document:keydown', ['$event']),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUIBaseGrid.prototype, \"onWindowKeyDown\", null);\r\n__decorate([\r\n    core_1.HostListener('document:keyup', ['$event']),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUIBaseGrid.prototype, \"onWindowKeyUp\", null);\r\nIntegralUIBaseGrid = __decorate([\r\n    core_1.Component({\r\n        selector: 'iui-basegrid',\r\n        template: '',\r\n        providers: [integralui_data_service_1.IntegralUIDataService]\r\n    }),\r\n    __metadata(\"design:paramtypes\", [integralui_data_service_1.IntegralUIDataService,\r\n        integralui_dragdrop_service_1.IntegralUIDragDropService,\r\n        core_1.ElementRef,\r\n        core_1.Renderer,\r\n        integralui_common_service_1.IntegralUICommonService,\r\n        integralui_filter_service_1.IntegralUIFilterService,\r\n        core_1.ChangeDetectorRef,\r\n        core_1.ComponentFactoryResolver])\r\n], IntegralUIBaseGrid);\r\nexports.IntegralUIBaseGrid = IntegralUIBaseGrid;\r\n//# sourceMappingURL=integralui.base.grid.js.map","/*\r\n  filename: integralui.base.list.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(l,b){function a(){this.constructor=l}for(var c in b)b.hasOwnProperty(c)&&(l[c]=b[c]);l.prototype=null===b?Object.create(b):(a.prototype=b.prototype,new a)},__decorate=this&&this.__decorate||function(l,b,a,c){var e=arguments.length,d=3>e?b:null===c?c=Object.getOwnPropertyDescriptor(b,a):c,g;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)d=Reflect.decorate(l,b,a,c);else for(var f=l.length-1;0<=f;f--)if(g=l[f])d=(3>e?g(d):3<e?g(b,a,d):\r\ng(b,a))||d;return 3<e&&d&&Object.defineProperty(b,a,d),d},__metadata=this&&this.__metadata||function(l,b){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(l,b)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),integralui_data_service_1=require(\"../services/integralui.data.service\"),integralui_dragdrop_service_1=require(\"../services/integralui.dragdrop.service\"),\r\nintegralui_filter_service_1=require(\"../services/integralui.filter.service\"),IntegralUIBaseList=function(l){function b(a,c,e,b,g,f,h){var d=l.call(this,g)||this;d.dataService=a;d.dragDropService=c;d.elemRef=e;d.elemRenderer=b;d.commonService=g;d.filterService=f;d.cmpResolver=h;d.currentList=[];d.options={allowDrag:!1,allowDrop:!0,dataFields:null,selectedItem:null,sorting:integralui_core_1.IntegralUISortOrder.None};d.dataItems=[];d.scrollItemList=[];d.dropMarkElem=null;d.dragCmpRef=null;d.dragCmp=\r\nnull;d.cloneElem=null;d.cloneElemStartPos={x:0,y:0};d.filterParams=null;d.hoverItem=null;d.currentFocusItem=null;d.isKeyboardActive=!1;d.allowUpdate=!0;d.avgItemHeight=0;d.blockSize={width:0,height:0};d.clientRect={width:0,height:0};d.contentSize={width:0,height:0};d.currentIndex=0;d.prevIndex=0;d.virtualization=!1;d.visibleRange=1;d.updateTimer=null;d.currentScrollPos={x:0,y:0};d.maxScrollPos={x:0,y:0};d.accelerator=.5;d.isScrollActive=!1;d.isScrollTimerActive=!1;d.prevScrollPos={x:0,y:0};d.scrollBarSize=\r\n{width:0,height:0};d.scrollCount=0;d.scrollLargeChange={x:0,y:0};d.scrollSize={width:0,height:0};d.scrollTimerID=null;d.horScrollOrientation=integralui_core_1.IntegralUIOrientation.Horizontal;d.currentSelectionMode=integralui_core_1.IntegralUISelectionMode.One;d.shiftFirstSelectedItem=null;d.removeIndex=-1;d.currentSelectedItems=[];d.sortComparer=null;d.refreshTimer=null;d.afterSelect=new core_1.EventEmitter;d.beforeEdit=new core_1.EventEmitter;d.beforeSelect=new core_1.EventEmitter;d.change=new core_1.EventEmitter;\r\nd.clear=new core_1.EventEmitter;d.dragDrop=new core_1.EventEmitter;d.dragOver=new core_1.EventEmitter;d.itemAdding=new core_1.EventEmitter;d.itemAdded=new core_1.EventEmitter;d.itemRemoving=new core_1.EventEmitter;d.itemRemoved=new core_1.EventEmitter;d.keyDown=new core_1.EventEmitter;d.keyPress=new core_1.EventEmitter;d.keyUp=new core_1.EventEmitter;d.loadComplete=new core_1.EventEmitter;d.scrollPosChanged=new core_1.EventEmitter;d.selectionChanged=new core_1.EventEmitter;d.updateComplete=new core_1.EventEmitter;\r\nd.updateOptions();return d}__extends(b,l);Object.defineProperty(b.prototype,\"allowDrag\",{set:function(a){this.options.allowDrag=a},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\"allowDrop\",{set:function(a){this.options.allowDrop=a},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\"allowFilter\",{set:function(a){this.options.allowFilter=a},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\"allowFocus\",{set:function(a){this.options.allowFocus=a;a||\r\n(this.currentFocusItem=null);this.refresh()},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\"focusedItem\",{get:function(){return this.currentFocusItem},set:function(a){this.currentFocusItem!=a&&(this.currentFocusItem=a)},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\"items\",{get:function(){return this.dataItems},set:function(a){this.dataItems=a;this.updateData()},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\"showScroll\",{get:function(){return this.options.showScroll},\r\nset:function(a){this.updateShowScroll(a)},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\"selectedItem\",{get:function(){return this.currentSelection},set:function(a){if(this.currentSelection!=a)var c=this,e=setTimeout(function(){c.processSelection(null,a);clearTimeout(e)},1)},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\"selectionMode\",{get:function(){return this.currentSelectionMode},set:function(a){if(this.currentSelectionMode!=a){this.currentSelectionMode=\r\na;this.clearPrevSelection(this.currentSelectionMode!=integralui_core_1.IntegralUISelectionMode.None?this.currentSelection:null);var c=this,e=setTimeout(function(){c.refresh();c.currentSelectionMode==integralui_core_1.IntegralUISelectionMode.None&&(c.currentSelection=null,c.selectionChanged.emit({item:null}));clearTimeout(e)},1)}},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\"sorting\",{set:function(a){this.options.sorting=a},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\r\n\"virtualMode\",{get:function(){return this.virtualization},set:function(a){this.virtualization=a;this.updateLayout()},enumerable:!0,configurable:!0});b.prototype.ngOnInit=function(){this.dataService.init([{data:this.items}]);this.itemClassName=\"iui-list\";this.itemContentClassName=this.itemClassName+\"-content\"};b.prototype.initStyle=function(){this.defaultStyle={general:{disabled:this.generalClassName+\"-disabled\",focused:this.generalClassName+\"-focused\",normal:this.generalClassName,hovered:this.generalClassName+\r\n\"-hovered\",selected:this.generalClassName+\"-selected\"},item:{general:{disabled:this.itemClassName+\"-disabled\",focused:this.itemClassName+\"-focused\",normal:this.itemClassName,hovered:this.itemClassName+\"-hovered\",selected:this.itemClassName+\"-selected\"},content:{disabled:this.itemContentClassName+\"-disabled\",focused:this.itemContentClassName+\"-focused\",normal:this.itemContentClassName,hovered:this.itemContentClassName+\"-hovered\",selected:this.itemContentClassName+\"-selected\"}}};this.updateStyle(this.controlStyle);\r\nthis.updateControlClass();this.refresh()};b.prototype.addItem=function(a,c){this.callEventAdd(\"add\",a,-1,c)};b.prototype.clearItems=function(a){a||(this.currentSelectedItems.length=0,this.currentSelection=null);this.dataService.clear(a);this.clear.emit({parent:a});this.updateLayout()};b.prototype.insertItemAt=function(a,c,e){this.callEventAdd(\"at\",a,c,e)};b.prototype.insertItemBefore=function(a,c){this.callEventAdd(\"ref\",a,-1,null,c)};b.prototype.insertItemAfter=function(a,c){this.callEventAdd(\"ref\",\r\na,-1,null,c,!0)};b.prototype.removeItem=function(a){return this.callEventRemove(a)};b.prototype.removeItemAt=function(a,c){return this.callEventRemove(null,a,c)};b.prototype.callEventAdd=function(a,c,e,d,b,f){var g={cancel:!1,item:c};this.itemAdding.emit(g);if(1!=g.cancel){switch(a){case \"at\":this.dataService.insert(c,e,d);break;case \"ref\":this.dataService.insertByRef(c,b,f);break;default:this.dataService.insert(c,-1,d)}this.processItemAdd(c,d);this.updateItem(d);this.itemAdded.emit({item:c})}};b.prototype.callEventRemove=\r\nfunction(a,c,e){var d={cancel:!1,item:a};this.itemRemoving.emit(d);return 1!=d.cancel&&(this.removeIndex=this.items?this.items.indexOf(a):-1,c=this.dataService.removeAt(a,c,e),c.result)?(this.processItemRemoval(a,e),this.itemRemoved.emit({item:c.obj}),!0):!1};b.prototype.processItemAdd=function(a,c){};b.prototype.processItemRemoval=function(a,c){};b.prototype.updateCurrentList=function(){};b.prototype.updateData=function(){};b.prototype.updateOptions=function(a){a?(this.options={allowDrag:this.commonService.isFieldAvailable(a.allowDrag,\r\n!1),allowDrop:this.commonService.isFieldAvailable(a.allowDrop,!0),allowFilter:this.commonService.isFieldAvailable(a.allowFilter,!1),allowFocus:this.commonService.isFieldAvailable(a.allowFocus,!1),dataFields:null,selectedItem:this.commonService.isFieldAvailable(a.selectedItem,this.options.selectedItem?this.options.selectedItem:null)},this.updateShowScroll(a.showScroll)):(this.options={allowDrag:!1,allowDrop:!0,allowFilter:!1,allowFocus:!1,dataFields:null,selectedItem:null},this.updateDataFields(),\r\nthis.updateShowScroll())};b.prototype.updateDataFields=function(a){this.options.dataFields=a?{allowDrag:a.allowDrag?a.allowDrag:\"allowDrag\",allowDrop:a.allowDrop?a.allowDrop:\"allowDrop\",allowEdit:a.allowEdit?a.allowEdit:\"allowEdit\",allowFocus:a.allowFocus?a.allowFocus:\"allowFocus\",autoCheck:a.autoCheck?a.autoCheck:\"autoCheck\",canSelect:a.canSelect?a.canSelect:\"canSelect\",checkBoxSettings:a.checkBoxSettings?a.checkBoxSettings:\"checkBoxSettings\",checked:a.checked?a.checked:\"checked\",checkState:a.checkState?\r\na.checkState:\"checkState\",content:a.content?a.content:\"content\",contextMenu:a.contextMenu?a.contextMenu:\"contextMenu\",enabled:a.enabled?a.enabled:\"enabled\",expanded:a.expanded?a.expanded:\"expanded\",hasChildren:a.hasChildren?a.hasChildren:\"hasChildren\",icon:a.icon?a.icon:\"icon\",id:a.id?a.id:\"id\",items:a.items?a.items:\"items\",pid:a.pid?a.pid:\"pid\",selected:a.selected?a.selected:\"selected\",statusIcon:a.statusIcon?a.statusIcon:\"statusIcon\",style:a.style?a.style:\"style\",templateObj:a.templateObj?a.templateObj:\r\n\"templateObj\",text:a.text?a.text:\"text\",tooltip:a.tooltip?a.tooltip:\"tooltip\",value:a.value?a.value:\"value\",visible:a.visible?a.visible:\"visible\"}:{allowDrag:\"allowDrag\",allowDrop:\"allowDrop\",allowEdit:\"allowEdit\",allowFocus:\"allowFocus\",autoCheck:\"autoCheck\",canSelect:\"canSelect\",checkBoxSettings:\"checkBoxSettings\",checked:\"checked\",checkState:\"checkState\",content:\"content\",contextMenu:\"contextMenu\",enabled:\"enabled\",expanded:\"expanded\",hasChildren:\"hasChildren\",icon:\"icon\",id:\"id\",items:\"items\",\r\npid:\"pid\",selected:\"selected\",statusIcon:\"statusIcon\",style:\"style\",templateObj:\"templateObj\",text:\"text\",tooltip:\"tooltip\",value:\"value\",visible:\"visible\"};this.dataService&&this.dataService.updateDataFields(this.options.dataFields)};b.prototype.updateShowScroll=function(a){this.options.showScroll=a?{horizontal:this.commonService.isFieldAvailable(a.horizontal,!0),vertical:this.commonService.isFieldAvailable(a.vertical,!0)}:{horizontal:!0,vertical:!0}};b.prototype.processLoadData=function(a,c,e,d){var b=\r\nthis;b.clearItems(c);b.updateDataFields(e);var f=[];if(a)if(0!=d){var h=[];a.forEach(function(a,c){a[b.options.dataFields.items]=[];var e=a[b.options.dataFields.pid];h[e]?(h[e][b.options.dataFields.items]||(h[e][b.options.dataFields.items]=[]),h[a[b.options.dataFields.id]]=a,h[e][b.options.dataFields.items].push(a)):(h[a[b.options.dataFields.id]]=a,f.push(a))});h.length=0}else f=a;if(c)for(c[b.options.dataFields.items]=f,a=0;a<c[b.options.dataFields.items].length;a++)c[b.options.dataFields.items][a][b.options.dataFields.pid]=\r\nc[b.options.dataFields.id];else if(b.items)for(a=b.items.length=0;a<f.length;a++)b.items.push(f[a]);b.updateItem(c);b.loadComplete.emit(null);this.updateLayout()};b.prototype.updateItem=function(a){};b.prototype.updateScrollItemList=function(){this.scrollItemList.length=0};b.prototype.addDropMark=function(a){this.appRef&&(this.removeDropMark(),a=this.cmpResolver.resolveComponentFactory(integralui_core_1.IntegralUIDragWindow))&&(this.dragCmpRef=this.appRef.createComponent(a),this.dragCmpRef._component?\r\nthis.dragCmp=this.dragCmpRef._component:this.dragCmpRef._hostElement&&(this.dragCmp=this.dragCmpRef._hostElement.component))};b.prototype.removeDropMark=function(){this.dragCmpRef&&this.dragCmpRef.destroy();this.dragCmp=null};b.prototype.callDragDropEvent=function(a,c,e){a={action:c.action,cancel:!1,dragItem:c.source,dropPos:c.dropPos,event:a,isDropAllowed:c.allow,mousePos:this.commonService.getMousePos(a),sourceCtrl:c.sourceCtrl,targetCtrl:c.targetCtrl,targetItem:c.target};e?this.dragDrop.emit(a):\r\nthis.dragOver.emit(a);return a.cancel};b.prototype.checkEmptySpace=function(a){var c=this.getContentSize(),e=this.commonService.getPageRect(this.elemRef.nativeElement.firstElementChild);c=e.top+c.height;e=e.bottom;a=this.commonService.getMousePos(a);var b=this.commonService.getShiftPos();a.x-=b.x;a.y-=b.y;return a.y>=c&&a.y<=e};b.prototype.ctrlDragDrop=function(a){this.isEnabled&&this.processDragDrop(a);a.stopPropagation()};b.prototype.ctrlDragLeave=function(a){this.isEnabled&&(this.dropMark(a),this.stopScrollTimer())};\r\nb.prototype.ctrlDragOver=function(a){this.isEnabled&&this.processDragOver(a);a.stopPropagation()};b.prototype.dropMark=function(a,c){this.dragCmp||this.addDropMark({x:a.pageX,y:a.pageY});if(this.dragCmp){var e=\"none\";this.options.allowDrop&&(e=c?\"block\":\"none\");this.dragCmp.display=e}};b.prototype.updateDragComponent=function(a){this.dragCmp&&this.dragCmp.updatePos(a)};b.prototype.isDragAllowed=function(a){return this.options.allowDrag?a&&(a[this.options.dataFields.allowDrag]||void 0===a[this.options.dataFields.allowDrag])?\r\n!0:!1:!1};b.prototype.isDropAllowed=function(a,c,e){var b=this.options.allowDrop;if(b&&a&&c&&(b=c[this.options.dataFields.allowDrop]||void 0===c[this.options.dataFields.allowDrop]?!0:!1))if(Array.isArray(a))for(var g=0;g<a.length;g++){if(this.commonService.isEqual(a[g][this.options.dataFields.id],c[this.options.dataFields.id])||0===e&&this.isParentOf(c,a[g])||this.isChildOf(c,a[g])){b=!1;break}if(!b)break}else if(this.commonService.isEqual(a[this.options.dataFields.id],c[this.options.dataFields.id])||\r\n0===e&&this.isParentOf(c,a)||this.isChildOf(c,a))b=!1;return b};b.prototype.processDragStart=function(a,c){this.dragDropService.clearData();if(!this.isDragAllowed(c))a.preventDefault();else if(c)if(this.isDragAllowed(c)){this.addDropMark({x:a.pageX,y:a.pageY});this.dropMark(a);a.dataTransfer?(a.dataTransfer.effectAllowed=\"move\",a.dataTransfer.setData(\"text\",c[this.options.dataFields.id]?c[this.options.dataFields.id].toString():\"\")):a.originalEvent&&a.originalEvent.dataTransfer&&(a.originalEvent.dataTransfer.effectAllowed=\r\n\"move\",a.originalEvent.dataTransfer.setData(\"text\",c[this.options.dataFields.id]?c[this.options.dataFields.id].toString():\"\"));var e={clone:this.cloneItem(c),source:c,sourceCtrl:this,sourceData:this.items};switch(this.selectionMode){case integralui_core_1.IntegralUISelectionMode.MultiSimple:e.clone=this.createCloneList(this.currentSelectedItems);e.source=this.currentSelectedItems;break;case integralui_core_1.IntegralUISelectionMode.MultiExtended:e.clone=this.createCloneList(this.currentSelectedItems),\r\ne.source=this.currentSelectedItems}this.dragDropService.setData(e)}else a.dataTransfer?a.dataTransfer.effectAllowed=\"none\":a.originalEvent&&a.originalEvent.dataTransfer&&(a.originalEvent.dataTransfer.effectAllowed=\"none\")};b.prototype.processDragOver=function(a,c,e,b){a.preventDefault();var d=!0;a.dataTransfer?d=\"none\"===a.dataTransfer.effectAllowed?!1:!0:a.originalEvent&&a.originalEvent.dataTransfer&&(d=\"none\"===a.originalEvent.dataTransfer.effectAllowed?!1:!0);if(d){var f=this.dragDropService.getData();\r\nd=this.commonService.getShiftPos();if(c){var h=this.commonService.getMousePos(a);h.x-=d.x;h.y-=d.y;h=this.dragDropService.getDropPos(h,e,b);d=this.isDropAllowed(f.source,c,h);e={action:a.shiftKey?\"copy\":\"move\",source:f.source,dropPos:h,allow:d,sourceCtrl:f.sourceCtrl,target:c,targetCtrl:this};e=this.callDragDropEvent(a,e);if(d&&1!=e){b=this.commonService.getMousePos(a);e=b.y+16;b=b.x+20;var k=\"iui-dragwin-icon\";switch(h){case 0:k+=\" iui-dragwin-move-in\";break;case 1:k+=\" iui-dragwin-move-up\";break;\r\ncase 2:k+=\" iui-dragwin-move-down\"}a.shiftKey&&(k+=\"-copy\");this.updateDragComponent({\"class\":k,top:e,left:b,text:c[this.options.dataFields.text]});this.dropMark(a,d);this.dragDropService.setData({action:a.shiftKey?\"copy\":\"move\",source:f.source,sourceCtrl:f.sourceCtrl,sourceData:f.sourceData,target:c,targetCtrl:this,dropPos:h})}else a.dataTransfer?a.dataTransfer.dropEffect=\"none\":a.originalEvent&&a.originalEvent.dataTransfer&&(a.originalEvent.dataTransfer.dropEffect=\"none\"),this.dropMark(a)}else this.options.allowDrop?\r\n(d=this.checkEmptySpace(a),e={action:a.shiftKey?\"copy\":\"move\",source:f.source,dropPos:-1,allow:d,sourceCtrl:f.sourceCtrl,target:null,targetCtrl:this},e=this.callDragDropEvent(a,e),d&&1!=e?(h=this.commonService.getMousePos(a),e=h.y+16,b=h.x+20,k=\"iui-dragwin-icon iui-dragwin-move-end\",a.shiftKey&&(k+=\"-copy\"),this.updateDragComponent({\"class\":k,top:e,left:b,text:this.name?this.name:\"Component\"}),this.dropMark(a,d),this.dragDropService.setData({action:a.shiftKey?\"copy\":\"move\",source:f.source,sourceCtrl:f.sourceCtrl,\r\nsourceData:f.sourceData,target:null,targetCtrl:this,dropPos:-1})):(a.dataTransfer?a.dataTransfer.dropEffect=\"none\":a.originalEvent&&a.originalEvent.dataTransfer&&(a.originalEvent.dataTransfer.dropEffect=\"none\"),this.dropMark(a))):(a.dataTransfer?a.dataTransfer.dropEffect=\"none\":a.originalEvent&&a.originalEvent.dataTransfer&&(a.originalEvent.dataTransfer.dropEffect=\"none\"),this.dropMark(a))}};b.prototype.processDragDrop=function(a,c){a.preventDefault();this.dropMark(a);var e=!0;a.dataTransfer?e=\"none\"===\r\na.dataTransfer.effectAllowed?!1:!0:a.originalEvent&&a.originalEvent.dataTransfer&&(e=\"none\"===a.originalEvent.dataTransfer.effectAllowed?!1:!0);if(e){var b=this.dragDropService.getData();(e=c?this.isDropAllowed(b.source,c,b.dropPos):this.checkEmptySpace(a))&&b.source&&(this.callDragDropEvent(a,{action:a.shiftKey?\"copy\":\"move\",source:b.source,dropPos:b.dropPos,allow:e,sourceCtrl:b.sourceCtrl,target:b.target,targetCtrl:this},!0)||this.drop(a,b))}this.dragDropService.clearData()};b.prototype.drop=function(a,\r\nc){if(c&&c.sourceCtrl){var b=a.shiftKey&&c.clone?c.clone:c.source;if(Array.isArray(b)){for(var d=[],g=0;g<b.length;g++)d.push(b[g]);if(0<d.length){for(g=0;g<d.length;g++)this.processDataDrop(a,d[g],c);this.clearPrevSelection(d[d.length-1])}}else this.processDataDrop(a,b,c),this.clearPrevSelection(b);c.sourceCtrl!=c.targetCtrl&&c.sourceCtrl.updateLayout&&c.sourceCtrl.updateLayout();this.updateLayout()}};b.prototype.processDataDrop=function(a,c,b){var e=a.shiftKey;!a.shiftKey&&b.sourceCtrl&&b.sourceCtrl.removeItem&&\r\n(e=b.sourceCtrl.removeItem(c));if(e)switch(b.dropPos){case 0:this.insertItemAt(c,-1,b.target);break;case 1:this.insertItemBefore(c,b.target);break;case 2:this.insertItemAfter(c,b.target);break;default:this.addItem(c)}};b.prototype.callAfterSelectEvent=function(a){a={item:a};this.afterSelect.emit(a);this.selectionChanged.emit(a)};b.prototype.itemDragStart=function(a,c){this.processDragStart(a,c.data);a.stopPropagation()};b.prototype.itemDragOver=function(a,c,b,d){if(this.isEnabled){var e=this.getItemElemList();\r\ne&&0<=b&&b<e.length&&(b=this.commonService.getPageRect(e[b].nativeElement),b={x:b.left,y:b.top,width:b.right-b.left,height:b.bottom-b.top},this.processScroll(a),this.processDragOver(a,c.data,b,d))}a.stopPropagation()};b.prototype.itemDragDrop=function(a,c){this.isEnabled&&this.processDragDrop(a,c.data);a.stopPropagation()};b.prototype.filter=function(a){this.filterParams=a;this.updateLayout();this.change.emit({type:\"filtering\"})};b.prototype.cloneItem=function(a){return this.dataService.clone(a)};\r\nb.prototype.createCloneList=function(a){for(var c=[],b=0;b<a.length;b++)c.push(this.cloneItem(a[b]));return c};b.prototype.getFilterTree=function(a){return a?this.filterService.createTree(a.conditions,a.formula):null};b.prototype.getObjFromItem=function(a){for(var c=null,b=0;b<this.currentList.length;b++)if(this.currentList[b].data==a){c=this.currentList[b];break}return c};b.prototype.getObjFromScrollItem=function(a){for(var c=null,b=0;b<this.scrollItemList.length;b++){var d=this.scrollItemList[b];\r\nif(d.data==a){c=d;break}}return c};b.prototype.getItemCurrentIndex=function(a){if(a)return(a=this.getObjFromItem(a))&&this.currentList?this.currentList.indexOf(a):-1};b.prototype.getItemElemList=function(){return null};b.prototype.getItemFromComponent=function(a){return null};b.prototype.getList=function(a){switch(a){case \"current\":return this.currentList;case \"selected\":return this.currentSelectedItems}return this.dataService.getList()};b.prototype.getTopItem=function(){return 0!=this.virtualMode?\r\n0<this.scrollItemList.length?this.scrollItemList[0].data:null:null};b.prototype.invokeMethod=function(a,c){var b=!0;if(this.isEnabled&&c)switch(a){case \"SELECT_ITEM\":b=this.processSelection(c.event,c.item);break;case \"UPDATE_SELECTION\":this.updateSelection(c.event,c.item)}return b};b.prototype.isChildOf=function(a,c){return!1};b.prototype.isComponentIndexInRange=function(a){return this.itemList?0<=a&&a<this.itemList.length:!1};b.prototype.isIndexInRange=function(a){return this.currentList?0<=a&&a<\r\nthis.currentList.length:!1};b.prototype.isItemAllowed=function(a){if(0==a[this.options.dataFields.visible])return!1;if(0==this.options.allowFilter)return!0;var c=!0;a&&this.filterParams&&(c=(c=a[this.options.dataFields.value])?c:a[this.options.dataFields.text],this.filterParams.callback?c=this.filterParams.callback(c,a):(c=this.filterService.match(c,this.filterParams.conditions,this.filterParams.formula,this.getFilterTree(this.filterParams),this.filterParams.caseSensitive),!c&&this.filterParams.allowParent&&\r\n(c=this.filterIsThereChildren(a))));return c};b.prototype.filterIsThereChildren=function(a){var c=!1;if(a=a[this.options.dataFields.items])for(var b=0;b<a.length&&!(c=this.isItemAllowed(a[b]));b++);return c};b.prototype.isItemEnabled=function(a){return!0};b.prototype.isItemHovered=function(a){return a&&a==this.hoverItem?!0:!1};b.prototype.isItemSelected=function(a){return a&&1==a[this.options.dataFields.selected]?!0:!1};b.prototype.isParentOf=function(a,c){return!1};b.prototype.updateItemList=function(){};\r\nb.prototype.itemMouseEnter=function(a,c){this.isEnabled&&!this.isScrollActive&&(this.hoverItem=c.data,this.updateItemStyle(c))};b.prototype.itemMouseLeave=function(a,c){this.isEnabled&&!this.isScrollActive&&(this.hoverItem=null,this.updateItemStyle(c))};b.prototype.itemGotFocus=function(a){this.refresh()};b.prototype.itemLostFocus=function(a){this.refresh()};b.prototype.itemKeyDown=function(a,c){if(this.isEnabled){var b={cancel:!1,item:c.data,event:a};this.keyDown.emit(b);switch(a.keyCode){case 13:this.beforeEdit.emit(b);\r\nbreak;case 33:!b.cancel&&this.options.allowFocus&&(a.preventDefault(),this.isKeyboardActive=!0,this.processPageUpKey(c));break;case 34:!b.cancel&&this.options.allowFocus&&(a.preventDefault(),this.isKeyboardActive=!0,this.processPageDownKey(c));break;case 35:!b.cancel&&this.options.allowFocus&&(a.preventDefault(),this.isKeyboardActive=!0,this.processEndKey(c));break;case 36:!b.cancel&&this.options.allowFocus&&(a.preventDefault(),this.isKeyboardActive=!0,this.processHomeKey(c));break;case 37:!b.cancel&&\r\nthis.options.allowFocus&&(a.preventDefault(),this.isKeyboardActive=!0,this.processLeftArrowKey(c));break;case 38:!b.cancel&&this.options.allowFocus&&(a.preventDefault(),this.isKeyboardActive=!0,this.processUpArrowKey(c));break;case 39:!b.cancel&&this.options.allowFocus&&(a.preventDefault(),this.isKeyboardActive=!0,this.processRightArrowKey(c));break;case 40:!b.cancel&&this.options.allowFocus&&(a.preventDefault(),this.isKeyboardActive=!0,this.processDownArrowKey(c))}}};b.prototype.itemKeyPress=function(a,\r\nc){this.isEnabled&&this.keyPress.emit({cancel:!1,item:c.data,event:a})};b.prototype.itemKeyUp=function(a,c){this.isEnabled&&this.keyUp.emit({cancel:!1,item:c.data,event:a})};b.prototype.processDownArrowKey=function(a,c){var b=this.getDownItem(a);if(b){this.currentFocusItem=b.data;var d=this,g=setTimeout(function(){d.processSelection(c,b.data);clearTimeout(g)},1);this.isLastItem(b)&&this.scrollPos({x:this.currentScrollPos.x,y:this.currentScrollPos.y+2*this.avgItemHeight})}return b};b.prototype.processEndKey=\r\nfunction(a,b){var c=null;if(0<this.scrollItemList.length){this.scrollPos({x:this.currentScrollPos.x,y:this.maxScrollPos.y});var d=this;setTimeout(function(){c=d.scrollItemList[d.scrollItemList.length-1];d.currentFocusItem=c.data;var a=setTimeout(function(){d.processSelection(b,c.data);clearTimeout(a)},1)},1)}return c};b.prototype.processHomeKey=function(a,b){var c=null;if(0<this.scrollItemList.length){this.scrollPos({x:this.currentScrollPos.x,y:0});var d=this;setTimeout(function(){c=d.scrollItemList[0];\r\nd.currentFocusItem=c.data;var a=setTimeout(function(){d.processSelection(b,c.data);clearTimeout(a)},1)},1)}return c};b.prototype.processLeftArrowKey=function(a,b){return null};b.prototype.processPageDownKey=function(a,b){var c=null;if(0<this.scrollItemList.length){this.scrollPos({x:this.currentScrollPos.x,y:this.currentScrollPos.y+this.avgItemHeight*(this.scrollItemList.length-1)});var d=this;setTimeout(function(){var e=0<=a.index&&a.index<d.scrollItemList.length?a.index:d.scrollItemList.length-1;\r\nd.currentScrollPos.y==d.maxScrollPos.y&&(e=d.scrollItemList.length-1);c=d.scrollItemList[e];d.currentFocusItem=c.data;var f=setTimeout(function(){d.processSelection(b,c.data);clearTimeout(f)},1)},1)}return c};b.prototype.processPageUpKey=function(a,b){var c=null;if(0<this.scrollItemList.length){this.scrollPos({x:this.currentScrollPos.x,y:this.currentScrollPos.y-this.avgItemHeight*(this.scrollItemList.length-1)});var d=this;setTimeout(function(){var e=0<=a.index&&a.index<d.scrollItemList.length?a.index:\r\n0;0==d.currentScrollPos.y&&(e=0);c=d.scrollItemList[e];d.currentFocusItem=c.data;var f=setTimeout(function(){d.processSelection(b,c.data);clearTimeout(f)},1)},1)}return c};b.prototype.processRightArrowKey=function(a,b){return null};b.prototype.processUpArrowKey=function(a,b){var c=this.getUpItem(a);if(c){this.currentFocusItem=c.data;var d=this,g=setTimeout(function(){d.processSelection(b,c.data);clearTimeout(g)},1);this.isFirstItem(c)&&this.scrollPos({x:this.currentScrollPos.x,y:this.currentScrollPos.y-\r\nthis.avgItemHeight})}return c};b.prototype.getDownItem=function(a){a=0<=a.index&&a.index<this.scrollItemList.length-1?a.index+1:-1;return 0<=a?this.scrollItemList[a]:null};b.prototype.getUpItem=function(a){a=0<a.index?a.index-1:-1;return 0<=a?this.scrollItemList[a]:null};b.prototype.isFirstItem=function(a){return 0==a.index?!0:!1};b.prototype.isLastItem=function(a){return a.index==this.scrollItemList.length-2?!0:!1};b.prototype.moveFocusFromItem=function(a,b){if(!this.options.allowFocus)return null;\r\nvar c=null,d=this.getObjFromScrollItem(a);if(d)switch(b){case \"down\":c=this.processDownArrowKey(d);break;case \"end\":c=this.processEndKey(d);break;case \"home\":c=this.processHomeKey(d);break;case \"left\":c=this.processLeftArrowKey(d);break;case \"pagedown\":c=this.processPageDownKey(d);break;case \"pageup\":c=this.processPageUpKey(d);break;case \"right\":c=this.processRightArrowKey(d);break;case \"up\":c=this.processUpArrowKey(d)}return c?c.data:null};b.prototype.onWindowKeyDown=function(a){this.isEnabled&&\r\nthis.isKeyboardActive&&a.preventDefault()};b.prototype.onWindowKeyUp=function(a){this.isKeyboardActive=!1};b.prototype.getContentSize=function(){return{width:0,height:0}};b.prototype.refresh=function(){this.updateItemList();this.clearComponentSelection();for(var a=0;a<this.currentSelectedItems.length;a++){var c=this.getItemCurrentIndex(this.currentSelectedItems[a]);this.isComponentIndexInRange(c)&&(this.itemList[c].state|=integralui_core_1.IntegralUIObjectState.selected)}};b.prototype.updateBlockSize=\r\nfunction(){this.blockSize={width:0,height:0}};b.prototype.resetLayout=function(){this.updateTimer&&clearTimeout(this.updateTimer);this.updateTimer=null};b.prototype.suspendLayout=function(){this.allowUpdate=!1};b.prototype.resumeLayout=function(){this.allowUpdate=!0;this.updateLayout()};b.prototype.updateLayout=function(){var a=this;a.allowUpdate&&(a.updateTimer=setTimeout(function(){a.updateCurrentList();a.clientRect={width:a.elemRef.nativeElement.firstElementChild.clientWidth,height:a.elemRef.nativeElement.firstElementChild.clientHeight};\r\na.virtualMode&&a.updateScrollItemList();var c=setTimeout(function(){a.updateVisibleRange();a.virtualMode&&a.updateScrollItemList();var b=setTimeout(function(){a.updateBlockSize();var c=a.getItemElemList();a.avgItemHeight=0;if(c&&0<c.length){for(var e=0,f=0;f<c.length;f++)e+=c[f].nativeElement.offsetHeight;a.avgItemHeight=Math.floor(e/c.length)}a.updateScrollSize();a.refresh();a.updateComplete.emit(null);clearTimeout(b)},1);clearTimeout(c)},1);clearTimeout(a.updateTimer)},100))};b.prototype.updateScrollSize=\r\nfunction(){this.contentSize={width:this.clientRect.width-2,height:this.clientRect.height-2};this.scrollSize={width:0,height:this.avgItemHeight*this.currentList.length-this.clientRect.height+this.avgItemHeight};this.isVerScrollVisible()&&(this.contentSize.width-=18,0<this.scrollSize.width&&(this.scrollSize.width+=16));this.isHorScrollVisible()&&(this.scrollSize.height+=16);this.scrollSize.width=0<this.scrollSize.width?this.scrollSize.width:0;this.scrollSize.height=0<this.scrollSize.height?this.scrollSize.height:\r\n0;this.maxScrollPos={x:this.scrollSize.width,y:this.scrollSize.height};this.currentScrollPos.x>this.maxScrollPos.x&&this.changeHorizontalScrollPos(this.maxScrollPos.x);this.currentScrollPos.y>this.maxScrollPos.y&&this.changeVerticalScrollPos(this.maxScrollPos.y);this.scrollBarSize={width:this.isVerScrollVisible()?this.clientRect.width-20:this.clientRect.width-4,height:this.isHorScrollVisible()?this.clientRect.height-20:this.clientRect.height-4};this.scrollLargeChange={x:this.scrollBarSize.width,y:this.scrollBarSize.height}};\r\nb.prototype.updateVisibleRange=function(){this.visibleRange=1;var a=this.getItemElemList();if(a&&0<a.length){for(var c=0,b=0;b<a.length;b++)c+=a[b].nativeElement.offsetHeight;a=Math.floor(c/a.length);0<a&&(this.visibleRange=Math.floor(this.clientRect.height/a)+1)}};b.prototype.updateView=function(){this.currentIndex=0<this.avgItemHeight?Math.floor(this.currentScrollPos.y/this.avgItemHeight):0;this.currentIndex!=this.prevIndex&&(this.updateScrollItemList(),this.prevIndex=this.currentIndex)};b.prototype.updateCloneElemPos=\r\nfunction(a){1==a.buttons&&this.cloneElem&&(this.cloneElem.style.top=a.pageY-this.cloneElemStartPos.y+\"px\",this.cloneElem.style.left=a.pageX-this.cloneElemStartPos.x+\"px\")};b.prototype.onCtrlMouseEnter=function(a){this.isEnabled&&1==a.buttons&&this.cloneElem&&(this.cloneElem.style.display=\"block\");this.elemRenderer.setElementStyle(this.elemRef.nativeElement,\"cursor\",\"default\")};b.prototype.onCtrlMouseLeave=function(a){this.isEnabled&&1==a.buttons&&this.cloneElem&&(this.cloneElem.style.display=\"none\");\r\nthis.stopScrollTimer()};b.prototype.itemMouseDown=function(a,c){this.isEnabled&&(this.options.allowFocus&&1==a.buttons&&(this.currentFocusItem=c.data),this.processSelection(a,c.data));a.stopPropagation()};b.prototype.itemMouseUp=function(a,c){this.isEnabled&&this.updateSelection(a,c.data)};b.prototype.itemClickEvent=function(a,c){a.stopPropagation()};b.prototype.itemDblClickEvent=function(a,c){a.stopPropagation()};b.prototype.onScroll=function(a){a.target&&(this.virtualMode?(a.target.scrollTop=0,\r\na.target.scrollLeft=0):this.scrollPos({x:a.target.scrollLeft,y:a.target.scrollTop}))};b.prototype.scrollPos=function(a){if(0!=this.virtualMode)return a&&(this.currentScrollPos={x:Math.max(0,Math.min(a.x,this.maxScrollPos.x)),y:Math.max(0,Math.min(a.y,this.maxScrollPos.y))},this.scrollPosChanged.emit({value:this.currentScrollPos})),{x:Math.floor(this.currentScrollPos.x),y:Math.floor(this.currentScrollPos.y)};if(this.elemRef){var c=this.elemRef.nativeElement.firstElementChild.scrollWidth,b=this.elemRef.nativeElement.firstElementChild.scrollHeight;\r\nthis.maxScrollPos={x:c>this.elemRef.nativeElement.firstElementChild.clientWidth?c-this.elemRef.nativeElement.firstElementChild.clientWidth:0,y:b>this.elemRef.nativeElement.firstElementChild.clientHeight?b-this.elemRef.nativeElement.firstElementChild.clientHeight:0};a?(this.currentScrollPos.x=Math.max(0,Math.min(a.x,this.maxScrollPos.x)),this.currentScrollPos.y=Math.max(0,Math.min(a.y,this.maxScrollPos.y)),this.elemRef.nativeElement.firstElementChild.scrollLeft=this.currentScrollPos.x,this.elemRef.nativeElement.firstElementChild.scrollTop=\r\nthis.currentScrollPos.y,this.scrollPosChanged.emit({value:this.currentScrollPos})):(this.currentScrollPos.x=Math.max(0,Math.min(this.elemRef.nativeElement.firstElementChild.scrollLeft,this.maxScrollPos.x)),this.currentScrollPos.y=Math.max(0,Math.min(this.elemRef.nativeElement.firstElementChild.scrollTop,this.maxScrollPos.y)))}return this.currentScrollPos};b.prototype.changeHorizontalScrollPos=function(a){this.currentScrollPos.x=Math.max(0,Math.min(a,this.maxScrollPos.x));this.currentScrollPos.x!=\r\nthis.prevScrollPos.x&&(this.scrollPosChanged.emit({value:this.scrollPos()}),this.prevScrollPos.x=this.currentScrollPos.x)};b.prototype.changeVerticalScrollPos=function(a){this.currentScrollPos.y=Math.max(0,Math.min(a,this.maxScrollPos.y));this.currentScrollPos.y!=this.prevScrollPos.y&&(this.updateView(),this.scrollPosChanged.emit({value:this.scrollPos()}),this.prevScrollPos.y=this.currentScrollPos.y)};b.prototype.processMouseWheel=function(a,c){if(this.isEnabled&&0!=this.virtualMode){a.preventDefault();\r\nthis.hoverItem=null;var b=Math.max(-1,Math.min(1,a.wheelDelta||-a.detail));if(this.isVerScrollVisible()){var d=Math.floor(this.clientRect.height/4);b=this.currentScrollPos.y+d*b*-1;this.changeVerticalScrollPos(b)}else c&&this.isHorScrollVisible()&&(d=Math.floor(this.clientRect.width/4),b=this.currentScrollPos.x+d*b*-1,this.changeHorizontalScrollPos(b));a.stopPropagation()}};b.prototype.isVerScrollVisible=function(){return this.isEnabled&&this.options.showScroll.vertical&&0<this.scrollSize.height?\r\n!0:!1};b.prototype.isHorScrollVisible=function(){return this.isEnabled&&this.options.showScroll.horizontal&&0<this.scrollSize.width?!0:!1};b.prototype.onVerticalScrollStart=function(a){this.hoverItem=null;this.isScrollActive=!0};b.prototype.onVerticalScrollEnd=function(a){this.isScrollActive=!1};b.prototype.onVerticalScrollChanged=function(a){this.changeVerticalScrollPos(a.value)};b.prototype.onHorizontalScrollStart=function(a){this.hoverItem=null;this.isScrollActive=!0};b.prototype.onHorizontalScrollEnd=\r\nfunction(a){this.isScrollActive=!1};b.prototype.onHorizontalScrollChanged=function(a){this.currentScrollPos.x=a.value;this.scrollPosChanged.emit({value:this.scrollPos()})};b.prototype.processScroll=function(a){if(this.isVerScrollVisible()){var b=this.commonService.getShiftPos();a=this.commonService.getMousePos(a);a.x-=b.x;a.y-=b.y;var e=this.commonService.getPageRect(this.elemRef.nativeElement.firstElementChild);b=e.top+25;e=e.bottom-25;this.isHorScrollVisible()&&(e-=16);a.y<b?this.startScrollTimer(!1):\r\na.y>e?this.startScrollTimer(!0):this.stopScrollTimer()}else this.stopScrollTimer()};b.prototype.startScrollTimer=function(a,b){var c=this;c.isScrollTimerActive||(c.accelerator=.5,c.scrollCount=0,c.isScrollTimerActive=!0,c.scrollTimerID||(c.scrollTimerID=setInterval(function(){c.scrollTimerElapsed(a)},b?b:100)))};b.prototype.stopScrollTimer=function(){this.scrollTimerID&&(clearInterval(this.scrollTimerID),this.scrollTimerID=null);this.accelerator=.5;this.scrollCount=0;this.isScrollTimerActive=!1};\r\nb.prototype.scrollTimerElapsed=function(a){var b=this.currentScrollPos;0===this.scrollCount&&(this.scrollCount=5);this.scrollCount+=5;this.accelerator+=.5;var e=this.scrollCount+=Math.floor(this.accelerator);this.currentScrollPos.y=a?this.currentScrollPos.y+e>this.maxScrollPos.y?this.maxScrollPos.y:this.currentScrollPos.y+e:0>this.currentScrollPos.y-e?0:this.currentScrollPos.y-e;(0>=b.y||this.currentScrollPos.y<b.y)&&this.stopScrollTimer()};b.prototype.scrollTo=function(a){0!=this.virtualMode&&a&&\r\n(a=this.getItemCurrentIndex(a),0<=a&&this.scrollPos({x:this.currentScrollPos.x,y:this.avgItemHeight*(a+this.visibleRange/2)}),this.updateLayout())};b.prototype.findItemById=function(a){return this.dataService.findObjectById(a)};b.prototype.findItemByText=function(a){return this.dataService.findObjectByText(a)};b.prototype.clearSelection=function(){this.clearPrevSelection();this.refresh()};b.prototype.clearComponentSelection=function(){this.itemList.forEach(function(a){return a.state&=~integralui_core_1.IntegralUIObjectState.selected})};\r\nb.prototype.clearPrevSelection=function(a){for(var b=0;b<this.currentSelectedItems.length;b++)a&&!this.commonService.isEqual(this.currentSelectedItems[b][this.options.dataFields.id],a[this.options.dataFields.id])?this.currentSelectedItems[b][this.options.dataFields.selected]=!1:a||(this.currentSelectedItems[b][this.options.dataFields.selected]=!1);this.currentSelectedItems.length=0;a&&this.isItemEnabled(a)&&this.currentSelectedItems.push(a)};b.prototype.isItemInSelectionList=function(a){var b=!1,\r\ne=this.currentSelectedItems;if(a&&e)for(var d=0;d<e.length;d++)if(this.commonService.isEqual(e[d][this.options.dataFields.id],a[this.options.dataFields.id])){b=!0;break}return b};b.prototype.processSelection=function(a,b,e){var c=!0;if(b){if(this.selectionMode==integralui_core_1.IntegralUISelectionMode.None||0==b[this.options.dataFields.canSelect])return;var g=0<this.currentSelectedItems.length;if(this.isItemEnabled(b)){var f=this.currentSelection,h=!0;f&&(h=a&&(a.ctrlKey||a.metaKey)||!this.commonService.isEqual(f[this.options.dataFields.id],\r\nb[this.options.dataFields.id])||0==f[this.options.dataFields.selected]);var k={cancel:!1,item:b};this.beforeSelect.emit(k);c=1==k.cancel?!1:!0;if(1!=k.cancel)if(k=a&&(a.shiftKey||a.ctrlKey||a.metaKey)?!0:!1,h){this.selectionMode==integralui_core_1.IntegralUISelectionMode.MultiExtended&&(h=!this.isItemInSelectionList(b)||!k||a&&a.shiftKey);h&&(this.selectionMode==integralui_core_1.IntegralUISelectionMode.One?this.clearPrevSelection():a&&a.shiftKey?this.clearPrevSelection():k||this.selectionMode==integralui_core_1.IntegralUISelectionMode.MultiSimple||\r\n1!=this.currentSelectedItems.length&&this.isItemInSelectionList(b)||this.clearPrevSelection());this.currentSelection=b;if(a&&a.shiftKey&&this.selectionMode!=integralui_core_1.IntegralUISelectionMode.One){if(this.shiftFirstSelectedItem||(this.shiftFirstSelectedItem=f),a=this.getItemCurrentIndex(this.shiftFirstSelectedItem),e=this.getItemCurrentIndex(b),a>e&&(g=a,a=e,e=g),this.isIndexInRange(a)&&this.isIndexInRange(e))for(;a<=e;a++)0!=this.currentList[a].data[this.options.dataFields.canSelect]&&(this.currentList[a].data[this.options.dataFields.selected]=\r\n!0,this.currentSelectedItems.push(this.currentList[a].data))}else k||this.selectionMode==integralui_core_1.IntegralUISelectionMode.MultiSimple?(a=null==b[this.options.dataFields.selected]||\"undefined\"==b[this.options.dataFields.selected]?!1:b[this.options.dataFields.selected],b[this.options.dataFields.selected]=!a,b[this.options.dataFields.selected]?this.isItemInSelectionList(b)||this.currentSelectedItems.push(b):this.currentSelectedItems=this.currentSelectedItems.filter(function(a){return a!=b})):\r\n(b[this.options.dataFields.selected]=!0,this.isItemInSelectionList(b)||this.currentSelectedItems.push(b)),this.shiftFirstSelectedItem=null;this.callAfterSelectEvent(b);this.refresh()}else k||this.selectionMode==integralui_core_1.IntegralUISelectionMode.MultiSimple?(a=null===b[this.options.dataFields.selected]||\"undefined\"==b[this.options.dataFields.selected]?!1:b[this.options.dataFields.selected],e&&\"undefined\"!=e&&(a=e),b[this.options.dataFields.selected]=!a,b[this.options.dataFields.selected]?this.isItemInSelectionList(b)||\r\nthis.currentSelectedItems.push(b):this.currentSelectedItems=this.currentSelectedItems.filter(function(a){return a!=b}),this.shiftFirstSelectedItem=null,this.callAfterSelectEvent(b),this.refresh()):k||this.selectionMode&integralui_core_1.IntegralUISelectionMode.MultiSimple||1!=this.currentSelectedItems.length&&this.isItemInSelectionList(b)||(this.shiftFirstSelectedItem=null,this.clearPrevSelection(b),this.refresh(),h&&g&&this.selectionChanged.emit({item:null}))}else this.clearPrevSelection(),this.refresh(),\r\ng&&this.selectionChanged.emit({item:null})}return c};b.prototype.selectItems=function(a){if(a&&Array.isArray(a)){for(var b=this.currentSelectedItems.length=0;b<a.length;b++)a[b][this.options.dataFields.selected]=!0,this.currentSelectedItems.push(a[b]);0<a.length?(this.currentSelection=a[a.length-1],this.callAfterSelectEvent(this.currentSelection)):this.currentSelection=null;this.refresh()}};b.prototype.updateSelection=function(a,b){var c=a&&(a.shiftKey||a.ctrlKey||a.metaKey)?!0:!1;this.selectionMode==\r\nintegralui_core_1.IntegralUISelectionMode.MultiExtended&&0!=b[this.options.dataFields.canSelect]&&0<this.currentSelectedItems.length&&!a.shiftKey&&!c&&1==a.which&&(c=this.currentSelectedItems.length,this.clearPrevSelection(),b[this.options.dataFields.selected]=!0,this.currentSelectedItems.push(b),1<c&&this.callAfterSelectEvent(b),this.refresh())};b.prototype.applySorting=function(a){var b=this;a&&(b.sortComparer?a.sort(b.sortComparer):b.isSortingAllowed()&&a.sort(function(a,c){var d,e;(d=a[b.options.dataFields.value])||\r\n(d=a[b.options.dataFields.text]);b.commonService.isObject(d)&&(d=d.value?d.value:d.text);(e=c[b.options.dataFields.value])||(e=c[b.options.dataFields.text]);b.commonService.isObject(e)&&(e=e.value?e.value:e.text);d=void 0!=d?d:null;e=void 0!=e?e:null;switch(b.options.sorting){case integralui_core_1.IntegralUISortOrder.Ascending:if(d<e)return-1;if(d>e)return 1;break;case integralui_core_1.IntegralUISortOrder.Descending:if(d>e)return-1;if(d<e)return 1;break;default:return 0}}))};b.prototype.isSortingAllowed=\r\nfunction(){return this.options.sorting==integralui_core_1.IntegralUISortOrder.Ascending||this.options.sorting==integralui_core_1.IntegralUISortOrder.Descending};b.prototype.sort=function(a,b){this.options.sorting=a;this.sortComparer=b?b:null;this.updateLayout();this.change.emit({type:\"sorting\"})};b.prototype.updateItemStyle=function(a){a&&(a.style={general:[],content:[]},a.style.general.push(this.itemClassName),a.style.general.push(this.options.currentStyle.item.general.normal),a.style.content.push(this.itemContentClassName),\r\na.style.content.push(this.options.currentStyle.item.content.normal),this.isItemEnabled(a.data)?this.isItemSelected(a.data)?(a.style.general.push(this.options.currentStyle.item.general.selected),a.style.content.push(this.options.currentStyle.item.content.selected)):this.isItemHovered(a.data)&&(a.style.general.push(this.options.currentStyle.item.general.hovered),a.style.content.push(this.options.currentStyle.item.content.hovered)):(a.style.general.push(this.options.currentStyle.item.general.disabled),\r\na.style.content.push(this.options.currentStyle.item.content.disabled)),a.data==this.currentFocusItem&&a.style.general.push(this.options.currentStyle.item.general.focused))};b.prototype.getItemStyle=function(a){return a?{general:this.getItemGeneralStyle(a.general),content:this.getItemContentStyle(a.content)}:this.getDefaultItemStyle()};b.prototype.getItemGeneralStyle=function(a){return this.commonService.isString(a)?a:a?{disabled:this.commonService.isFieldAvailable(a.disabled,this.itemClassName+\"-disabled\"),\r\nfocused:this.commonService.isFieldAvailable(a.focused,this.itemClassName+\"-focused\"),normal:this.commonService.isFieldAvailable(a.normal,this.itemClassName),hovered:this.commonService.isFieldAvailable(a.hovered,this.itemClassName+\"-hovered\"),selected:this.commonService.isFieldAvailable(a.selected,this.itemClassName+\"-selected\")}:this.getDefaultItemGeneralStyle()};b.prototype.getItemContentStyle=function(a){return this.commonService.isString(a)?a:a?{disabled:this.commonService.isFieldAvailable(a.disabled,\r\nthis.itemContentClassName+\"-disabled\"),focused:this.commonService.isFieldAvailable(a.focused,this.itemContentClassName+\"-focused\"),normal:this.commonService.isFieldAvailable(a.normal,this.itemContentClassName),hovered:this.commonService.isFieldAvailable(a.hovered,this.itemContentClassName+\"-hovered\"),selected:this.commonService.isFieldAvailable(a.selected,this.itemContentClassName+\"-selected\")}:this.getDefaultItemContentStyle()};b.prototype.getDefaultListStyle=function(){return{general:this.getDefaultGeneralStyle(),\r\nitem:this.getDefaultItemStyle()}};b.prototype.getDefaultItemStyle=function(){return{general:this.getDefaultItemGeneralStyle(),content:this.getDefaultItemContentStyle()}};b.prototype.getDefaultItemGeneralStyle=function(){return{disabled:this.defaultStyle.item.general.disabled,focused:this.defaultStyle.item.general.focused,normal:this.defaultStyle.item.general.normal,hovered:this.defaultStyle.item.general.hovered,selected:this.defaultStyle.item.general.selected}};b.prototype.getDefaultItemContentStyle=\r\nfunction(){return{disabled:this.defaultStyle.item.content.disabled,focused:this.defaultStyle.item.content.focused,normal:this.defaultStyle.item.content.normal,hovered:this.defaultStyle.item.content.hovered,selected:this.defaultStyle.item.content.selected}};b.prototype.updateStyle=function(a){this.options.currentStyle=a?{general:this.getGeneralStyle(a.general),item:this.getItemStyle(a.item)}:this.getDefaultListStyle()};return b}(integralui_core_1.IntegralUIBaseComponent);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Object)],IntegralUIBaseList.prototype,\"appRef\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Boolean),__metadata(\"design:paramtypes\",[Boolean])],IntegralUIBaseList.prototype,\"allowDrag\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Boolean),__metadata(\"design:paramtypes\",[Boolean])],IntegralUIBaseList.prototype,\"allowDrop\",null);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Boolean),__metadata(\"design:paramtypes\",[Boolean])],IntegralUIBaseList.prototype,\"allowFilter\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Boolean),__metadata(\"design:paramtypes\",[Boolean])],IntegralUIBaseList.prototype,\"allowFocus\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Object),__metadata(\"design:paramtypes\",[Object])],IntegralUIBaseList.prototype,\"focusedItem\",null);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Array),__metadata(\"design:paramtypes\",[Array])],IntegralUIBaseList.prototype,\"items\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Object),__metadata(\"design:paramtypes\",[Object])],IntegralUIBaseList.prototype,\"showScroll\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Object),__metadata(\"design:paramtypes\",[Object])],IntegralUIBaseList.prototype,\"selectedItem\",null);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUIBaseList.prototype,\"selectionMode\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUIBaseList.prototype,\"sorting\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Boolean),__metadata(\"design:paramtypes\",[Boolean])],IntegralUIBaseList.prototype,\"virtualMode\",null);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIBaseList.prototype,\"afterSelect\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIBaseList.prototype,\"beforeEdit\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIBaseList.prototype,\"beforeSelect\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIBaseList.prototype,\"change\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIBaseList.prototype,\"clear\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIBaseList.prototype,\"dragDrop\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIBaseList.prototype,\"dragOver\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIBaseList.prototype,\"itemAdding\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIBaseList.prototype,\"itemAdded\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIBaseList.prototype,\"itemRemoving\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIBaseList.prototype,\"itemRemoved\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIBaseList.prototype,\"keyDown\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIBaseList.prototype,\"keyPress\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIBaseList.prototype,\"keyUp\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIBaseList.prototype,\"loadComplete\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIBaseList.prototype,\"scrollPosChanged\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIBaseList.prototype,\"selectionChanged\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIBaseList.prototype,\"updateComplete\",void 0);__decorate([core_1.HostListener(\"document:keydown\",[\"$event\"]),__metadata(\"design:type\",Function),__metadata(\"design:paramtypes\",[Object]),__metadata(\"design:returntype\",void 0)],IntegralUIBaseList.prototype,\"onWindowKeyDown\",null);\r\n__decorate([core_1.HostListener(\"document:keyup\",[\"$event\"]),__metadata(\"design:type\",Function),__metadata(\"design:paramtypes\",[Object]),__metadata(\"design:returntype\",void 0)],IntegralUIBaseList.prototype,\"onWindowKeyUp\",null);\r\nIntegralUIBaseList=__decorate([core_1.Component({selector:\"iui-baselist\",template:\"\",providers:[integralui_data_service_1.IntegralUIDataService]}),__metadata(\"design:paramtypes\",[integralui_data_service_1.IntegralUIDataService,integralui_dragdrop_service_1.IntegralUIDragDropService,core_1.ElementRef,core_1.Renderer,integralui_common_service_1.IntegralUICommonService,integralui_filter_service_1.IntegralUIFilterService,core_1.ComponentFactoryResolver])],IntegralUIBaseList);\r\nexports.IntegralUIBaseList=IntegralUIBaseList;","var __decorate=this&&this.__decorate||function(b,a,c,f){var d=arguments.length,e=3>d?a:null===f?f=Object.getOwnPropertyDescriptor(a,c):f,g;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)e=Reflect.decorate(b,a,c,f);else for(var h=b.length-1;0<=h;h--)if(g=b[h])e=(3>d?g(e):3<d?g(a,c,e):g(a,c))||e;return 3<d&&e&&Object.defineProperty(a,c,e),e},__metadata=this&&this.__metadata||function(b,a){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(b,\r\na)},core_1=require(\"@angular/core\"),IntegralUICommonService=function(){function b(){}b.prototype.calcMargin=function(a){return a?{top:getComputedStyle(a)[\"margin-top\"]?parseInt(getComputedStyle(a)[\"margin-top\"],10):getComputedStyle(a).marginTop?parseInt(getComputedStyle(a).marginTop,10):0,right:getComputedStyle(a)[\"margin-right\"]?parseInt(getComputedStyle(a)[\"margin-right\"],10):getComputedStyle(a).marginRight?parseInt(getComputedStyle(a).marginRight,10):0,bottom:getComputedStyle(a)[\"margin-bottom\"]?\r\nparseInt(getComputedStyle(a)[\"margin-bottom\"],10):getComputedStyle(a).marginBottom?parseInt(getComputedStyle(a).marginBottom,10):0,left:getComputedStyle(a)[\"margin-left\"]?parseInt(getComputedStyle(a)[\"margin-left\"],10):getComputedStyle(a).marginLeft?parseInt(getComputedStyle(a).marginLeft,10):0}:{top:0,right:0,bottom:0,left:0}};b.prototype.checkHit=function(a,c,b){return a>=b.left&&a<=b.right&&c>=b.top&&c<=b.bottom?!0:!1};b.prototype.getBodyElem=function(a){for(var b=null;a;){if(null==a.offsetParent){b=\r\na;break}a=a.offsetParent}return b};b.prototype.getBorderWidth=function(a){return a?{top:getComputedStyle(a)[\"border-top-width\"]?parseInt(getComputedStyle(a)[\"border-top-width\"],10):getComputedStyle(a).borderTopWidth?parseInt(getComputedStyle(a).borderTopWidth,10):0,right:getComputedStyle(a)[\"border-right-width\"]?parseInt(getComputedStyle(a)[\"border-right-width\"],10):getComputedStyle(a).borderRightWidth?parseInt(getComputedStyle(a).borderRightWidth,10):0,bottom:getComputedStyle(a)[\"border-bottom-width\"]?\r\nparseInt(getComputedStyle(a)[\"border-bottom-width\"],10):getComputedStyle(a).borderTopWidth?parseInt(getComputedStyle(a).borderTopWidth,10):0,left:getComputedStyle(a)[\"border-left-width\"]?parseInt(getComputedStyle(a)[\"border-left-width\"],10):getComputedStyle(a).borderLeftWidth?parseInt(getComputedStyle(a).borderLeftWidth,10):0}:{top:0,right:0,bottom:0,left:0}};b.prototype.getMargin=function(a){return a?this.calcMargin(a):{top:0,right:0,bottom:0,left:0}};b.prototype.getMousePos=function(a){return{x:a.pageX?\r\na.pageX:a.originalEvent?a.originalEvent.pageX:0,y:a.pageY?a.pageY:a.originalEvent?a.originalEvent.pageY:0}};b.prototype.getObjFromListById=function(a,b){var c=null;if(a)for(var d=0;d<a.length;d++)if(a[d].id==b){c=a[d];break}return c};b.prototype.getPadding=function(a){return a?{top:getComputedStyle(a)[\"padding-top\"]?parseInt(getComputedStyle(a)[\"padding-top\"],10):getComputedStyle(a).paddingTop?parseInt(getComputedStyle(a).paddingTop,10):0,right:getComputedStyle(a)[\"padding-right\"]?parseInt(getComputedStyle(a)[\"padding-right\"],\r\n10):getComputedStyle(a).paddingRight?parseInt(getComputedStyle(a).paddingRight,10):0,bottom:getComputedStyle(a)[\"padding-bottom\"]?parseInt(getComputedStyle(a)[\"padding-bottom\"],10):getComputedStyle(a).paddingBottom?parseInt(getComputedStyle(a).paddingBottom,10):0,left:getComputedStyle(a)[\"padding-left\"]?parseInt(getComputedStyle(a)[\"padding-left\"],10):getComputedStyle(a).paddingLeft?parseInt(getComputedStyle(a).paddingLeft,10):0}:{top:0,right:0,bottom:0,left:0}};b.prototype.getPageRect=function(a){return a?\r\na.getBoundingClientRect():{top:0,right:0,bottom:0,left:0,height:0,width:0,x:0,y:0}};b.prototype.getShiftPos=function(){return{x:0<document.body.scrollLeft?document.body.scrollLeft:0<document.documentElement.scrollLeft?document.documentElement.scrollLeft:0,y:0<document.body.scrollTop?document.body.scrollTop:0<document.documentElement.scrollTop?document.documentElement.scrollTop:0}};b.prototype.getUniqueId=function(a){function b(){return(65536*(1+Math.random())|0).toString(16).substring(1)}a=a||\"-\";\r\nreturn b()+b()+a+b()+a+b()+a+b()+a+b()+b()+b()};b.prototype.isEqual=function(a,b){return a&&b?a.toString()===b.toString():!1};b.prototype.isFieldAvailable=function(a,b){return void 0!=a?a:b};b.prototype.isObject=function(a){return a?\"object\"==typeof a&&null!=a&&!Array.isArray(a):!1};b.prototype.isString=function(a){return a?\"string\"==typeof a||a instanceof String:!1};return b}();IntegralUICommonService=__decorate([core_1.Injectable(),__metadata(\"design:paramtypes\",[])],IntegralUICommonService);\r\nexports.IntegralUICommonService=IntegralUICommonService;","/*\r\n  filename: integralui.scrollbar.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(e,c){function a(){this.constructor=e}for(var b in c)c.hasOwnProperty(b)&&(e[b]=c[b]);e.prototype=null===c?Object.create(c):(a.prototype=c.prototype,new a)},__decorate=this&&this.__decorate||function(e,c,a,b){var f=arguments.length,d=3>f?c:null===b?b=Object.getOwnPropertyDescriptor(c,a):b,g;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)d=Reflect.decorate(e,c,a,b);else for(var h=e.length-1;0<=h;h--)if(g=e[h])d=(3>f?g(d):3<f?g(c,a,d):\r\ng(c,a))||d;return 3<f&&d&&Object.defineProperty(c,a,d),d},__metadata=this&&this.__metadata||function(e,c){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(e,c)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),IntegralUIScrollBar=function(e){function c(a,b,c){var d=e.call(this,c)||this;d.elemRef=a;d.elemRenderer=b;d.commonService=c;d.currentMaxValue=\r\n0;d.currentMinValue=0;d.currentValue=0;d.currentSplitterDistance={x:0,y:0};d.emptySpace=0;d.maxPos={x:0,y:0};d.scrollPos={top:0,left:0};d.scrollSize={width:0,height:0};d.thumbSize={width:0,height:0};d.thumbPos={x:2,y:20};d.smallChange=0;d.largeChangeValue=0;d.orientation=integralui_core_1.IntegralUIOrientation.Vertical;d.scrollStart=new core_1.EventEmitter;d.scrollEnd=new core_1.EventEmitter;d.valueChanged=new core_1.EventEmitter;d.thumbStartPos={x:0,y:0};d.isThumbActive=!1;d.prevPos={x:0,y:0};d.scrollInterval=\r\nnull;d.scrollTimeout=null;return d}__extends(c,e);Object.defineProperty(c.prototype,\"height\",{set:function(a){this.scrollSize.height!=a&&0<=a&&(this.scrollSize.height=a,this.updateLayout())},enumerable:!0,configurable:!0});Object.defineProperty(c.prototype,\"largeChange\",{set:function(a){this.largeChangeValue!=a&&0<=a&&(this.largeChangeValue=a)},enumerable:!0,configurable:!0});Object.defineProperty(c.prototype,\"max\",{get:function(){return this.currentMaxValue},set:function(a){this.currentMaxValue!=\r\na&&(this.currentMaxValue=0>=a?1:a,this.currentValue>this.currentMaxValue&&(this.currentValue=this.currentMaxValue),this.updateLayout())},enumerable:!0,configurable:!0});Object.defineProperty(c.prototype,\"min\",{get:function(){return this.currentMinValue},set:function(a){this.currentMinValue!=a&&0<=a&&(this.currentMinValue=a,this.updateLayout())},enumerable:!0,configurable:!0});Object.defineProperty(c.prototype,\"position\",{set:function(a){this.scrollPos=a?{top:this.commonService.isFieldAvailable(a.top,\r\n0),left:this.commonService.isFieldAvailable(a.left,0)}:{top:0,left:0}},enumerable:!0,configurable:!0});Object.defineProperty(c.prototype,\"value\",{get:function(){return this.currentValue},set:function(a){this.currentValue!=a&&(this.currentValue=a<this.currentMinValue?this.currentMinValue:a>this.currentMaxValue?this.currentMaxValue:a,this.updateLayout(),this.valueChanged.emit({value:this.currentValue}))},enumerable:!0,configurable:!0});Object.defineProperty(c.prototype,\"width\",{set:function(a){this.scrollSize.width!=\r\na&&0<=a&&(this.scrollSize.width=a,this.updateLayout())},enumerable:!0,configurable:!0});c.prototype.ngOnInit=function(){this.generalClassName=\"iui-scrollbar\";this.initStyle()};c.prototype.ngAfterViewInit=function(){};c.prototype.ngAfterContentInit=function(){var a=this,b=setTimeout(function(){a.updateLayout();clearTimeout(b)},1)};c.prototype.ngOnDestroy=function(){this.clearScrolling()};c.prototype.isVertical=function(){return this.orientation==integralui_core_1.IntegralUIOrientation.Vertical?!0:\r\n!1};c.prototype.getSize=function(){return{width:this.elemRef.nativeElement.firstElementChild.offsetWidth,height:this.elemRef.nativeElement.firstElementChild.offsetHeight}};c.prototype.setScrollSize=function(a){this.scrollSize=a};c.prototype.updateLayout=function(){if(this.orientation==integralui_core_1.IntegralUIOrientation.Horizontal){0==this.largeChangeValue&&(this.largeChangeValue=this.scrollSize.width);var a=this.scrollSize.width-2;var b=a/(this.currentMaxValue+this.largeChangeValue);b*=this.largeChangeValue;\r\n0>=this.currentMaxValue?b=a:7>b&&(b=7);this.thumbSize.width=b;this.emptySpace=a-b;0<this.currentMaxValue&&(this.thumbPos.x=2+this.currentValue*this.emptySpace/this.currentMaxValue)}else 0==this.largeChangeValue&&(this.largeChangeValue=this.scrollSize.height),a=this.scrollSize.height-2,b=a/(this.currentMaxValue+this.largeChangeValue),b*=this.largeChangeValue,0>=this.currentMaxValue?b=a:7>b&&(b=7),this.thumbSize.height=b,this.emptySpace=a-b,0<this.currentMaxValue&&(this.thumbPos.y=2+this.currentValue*\r\nthis.emptySpace/this.currentMaxValue)};c.prototype.thumbMouseDown=function(a){if(this.isEnabled){var b=this.commonService.getShiftPos();this.thumbStartPos={x:a.pageX-b.x,y:a.pageY-b.y};this.isThumbActive=!0;this.prevPos={x:this.value,y:this.value};this.scrollStart.emit({value:this.currentValue})}a.stopPropagation()};c.prototype.onWindowMouseMove=function(a){if(this.isEnabled&&1==a.buttons&&this.isThumbActive){var b=this.commonService.getShiftPos(),c=a.pageX-b.x;a=a.pageY-b.y;b=0;this.orientation==\r\nintegralui_core_1.IntegralUIOrientation.Horizontal?0<this.emptySpace&&(b=this.prevPos.x+(c-this.thumbStartPos.x)*this.currentMaxValue/this.emptySpace):0<this.emptySpace&&(b=this.prevPos.y+(a-this.thumbStartPos.y)*this.currentMaxValue/this.emptySpace);this.value=b}};c.prototype.onWindowMouseUp=function(a){this.isEnabled&&(this.isThumbActive=!1,this.prevPos.y=this.currentValue,this.clearScrolling(),this.scrollEnd.emit({value:this.currentValue}))};c.prototype.changeScrollPos=function(a){if(this.isEnabled){var b=\r\nthis;b.processLargeChange(a);b.clearScrolling();b.scrollTimeout=setTimeout(function(){b.scrollInterval=setInterval(function(){b.currentValue>b.currentMinValue&&b.currentValue<b.currentMaxValue?b.processLargeChange(a):b.clearScrolling()},100);clearTimeout(b.scrollTimeout)},250)}};c.prototype.processLargeChange=function(a){switch(this.isVertical()?a.offsetY<this.thumbPos.y?1:a.offsetY>this.thumbPos.y+this.thumbSize.height?2:-1:a.offsetX<this.thumbPos.x?1:a.offsetX>this.thumbPos.x+this.thumbSize.width?\r\n2:-1){case 1:this.value-=this.largeChangeValue;break;case 2:this.value+=this.largeChangeValue}};c.prototype.clearScrolling=function(){this.scrollTimeout&&clearTimeout(this.scrollTimeout);this.scrollInterval&&clearInterval(this.scrollInterval);this.scrollInterval=this.scrollTimeout=null};c.prototype.getScrollBarStyle=function(){return this.orientation==integralui_core_1.IntegralUIOrientation.Horizontal?{bottom:0,width:this.scrollSize.width+\"px\"}:{top:this.scrollPos.top+\"px\",right:0,height:this.scrollSize.height+\r\n\"px\"}};return c}(integralui_core_1.IntegralUIBaseComponent);__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUIScrollBar.prototype,\"height\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUIScrollBar.prototype,\"largeChange\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUIScrollBar.prototype,\"max\",null);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUIScrollBar.prototype,\"min\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Number)],IntegralUIScrollBar.prototype,\"orientation\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Object),__metadata(\"design:paramtypes\",[Object])],IntegralUIScrollBar.prototype,\"position\",null);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUIScrollBar.prototype,\"value\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUIScrollBar.prototype,\"width\",null);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIScrollBar.prototype,\"scrollStart\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIScrollBar.prototype,\"scrollEnd\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIScrollBar.prototype,\"valueChanged\",void 0);__decorate([core_1.HostListener(\"document:mousemove\",[\"$event\"]),__metadata(\"design:type\",Function),__metadata(\"design:paramtypes\",[Object]),__metadata(\"design:returntype\",void 0)],IntegralUIScrollBar.prototype,\"onWindowMouseMove\",null);\r\n__decorate([core_1.HostListener(\"document:mouseup\",[\"$event\"]),__metadata(\"design:type\",Function),__metadata(\"design:paramtypes\",[Object]),__metadata(\"design:returntype\",void 0)],IntegralUIScrollBar.prototype,\"onWindowMouseUp\",null);\r\nIntegralUIScrollBar=__decorate([core_1.Component({selector:\"iui-scrollbar\",template:'\\n\\t\\t<div *ngIf=\"isVertical()\" class=\"iui-scrollbar-vertical\" [ngStyle]=\"getScrollBarStyle()\" (mousedown)=\"changeScrollPos($event)\">\\n\\t\\t\\t<div class=\"iui-scroll-button-thumb-vertical\" [ngStyle]=\"{ top: thumbPos.y + \\'px\\', height: thumbSize.height + \\'px\\' }\" (mousedown)=\"thumbMouseDown($event)\"></div>\\n\\t\\t</div>\\n\\t\\t<div *ngIf=\"!isVertical()\" class=\"iui-scrollbar-horizontal\" [ngStyle]=\"getScrollBarStyle()\" (mousedown)=\"changeScrollPos($event)\">\\n\\t\\t\\t<div class=\"iui-scroll-button-thumb-horizontal\" [ngStyle]=\"{ left: thumbPos.x + \\'px\\', width: thumbSize.width + \\'px\\' }\" (mousedown)=\"thumbMouseDown($event)\"></div>\\n\\t\\t</div>\\n\\t',inputs:[\"controlStyle\",\r\n\"data\",\"enabled\",\"name\",\"state\"],encapsulation:core_1.ViewEncapsulation.None}),__metadata(\"design:paramtypes\",[core_1.ElementRef,core_1.Renderer,integralui_common_service_1.IntegralUICommonService])],IntegralUIScrollBar);exports.IntegralUIScrollBar=IntegralUIScrollBar;","/*\r\n  filename: integralui.groupbox.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(e,b){function a(){this.constructor=e}for(var f in b)b.hasOwnProperty(f)&&(e[f]=b[f]);e.prototype=null===b?Object.create(b):(a.prototype=b.prototype,new a)},__decorate=this&&this.__decorate||function(e,b,a,f){var d=arguments.length,c=3>d?b:null===f?f=Object.getOwnPropertyDescriptor(b,a):f,g;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)c=Reflect.decorate(e,b,a,f);else for(var h=e.length-1;0<=h;h--)if(g=e[h])c=(3>d?g(c):3<d?g(b,a,c):\r\ng(b,a))||c;return 3<d&&c&&Object.defineProperty(b,a,c),c},__metadata=this&&this.__metadata||function(e,b){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(e,b)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),IntegralUIGroupBoxTags=function(){return function(){}}();IntegralUIGroupBoxTags=__decorate([core_1.Directive({selector:\"iui-group-header\"})],IntegralUIGroupBoxTags);\r\nexports.IntegralUIGroupBoxTags=IntegralUIGroupBoxTags;\r\nvar IntegralUIGroupBox=function(e){function b(a,f,b){var c=e.call(this,a)||this;c.commonService=a;c.cmpResolver=f;c.baseService=b;c.expandState=\"none\";c.isExpanded=!1;c.isSelected=!1;c.supressCallback=!1;c.contentHeight=\"0\";c.contentDisplay=\"block\";c.contentOpacity=1;c.maxBlockHeight=0;c.parentCtrl=null;c.contentClassName=\"\";c.headerClassName=\"\";c.headerExpandBoxClassName=\"\";c.contentClass=[];c.headerBlockClass=[];c.afterCollapse=new core_1.EventEmitter;c.afterExpand=new core_1.EventEmitter;c.afterSelect=\r\nnew core_1.EventEmitter;c.beforeCollapse=new core_1.EventEmitter;c.beforeExpand=new core_1.EventEmitter;c.beforeSelect=new core_1.EventEmitter;c.selectedChanged=new core_1.EventEmitter;return c}__extends(b,e);Object.defineProperty(b.prototype,\"expanded\",{get:function(){return this.isExpanded},set:function(a){if(this.isExpanded!=a){var b=this;if(b.callBeforeEvent(a)){b.expandState=a?\"expand\":\"collapse\";var d=setTimeout(function(){\"collapse\"==b.expandState&&(b.expandState=\"none\");clearTimeout(d)},300);\r\nb.isExpanded=a;b.header.animationState=b.isExpanded?\"expand\":\"collapse\";b.updateContentClass();b.toggleContent()}}},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\"selected\",{get:function(){return this.isSelected},set:function(a){if(this.isSelected!=a){var b={cancel:!1,group:this.data};this.beforeSelect.emit(b);1!=b.cancel&&(this.isSelected=a,this.header&&(this.header.state=a?this.header.state|integralui_core_1.IntegralUIObjectState.selected:this.header.state&~integralui_core_1.IntegralUIObjectState.selected),\r\nthis.afterSelect.emit({group:this.data}),this.selectedChanged.emit({group:this.data}),this.updateHeaderBlockClass())}},enumerable:!0,configurable:!0});b.prototype.callBeforeEvent=function(a){var b=!0;this.parentCtrl&&this.parentCtrl.invokeEvent&&(b=this.parentCtrl.invokeEvent(a?\"BEFORE_EXPAND\":\"BEFORE_COLLAPSE\",this));b&&(b={cancel:!1,group:this.data},a?this.beforeExpand.emit(b):this.beforeCollapse.emit(b),b=!b.cancel);return b};b.prototype.callAfterEvent=function(a){var b={group:this.data};a?this.afterExpand.emit(b):\r\nthis.afterCollapse.emit(b);this.parentCtrl&&this.parentCtrl.invokeEvent&&this.parentCtrl.invokeEvent(a?\"AFTER_EXPAND\":\"AFTER_COLLAPSE\",this);return!0};b.prototype.ngOnInit=function(){this.parentCtrl=this.baseService.getComponent();this.generalClassName=\"iui-groupbox\";this.headerClassName=this.generalClassName+\"-header\";this.headerExpandBoxClassName=this.headerClassName+\"-expand-box\";this.contentClassName=this.generalClassName+\"-content\";this.defaultStyle={general:{disabled:this.generalClassName+\"-disabled\",\r\nfocused:this.generalClassName+\"-focused\",normal:this.generalClassName,hovered:this.generalClassName+\"-hovered\",selected:this.generalClassName+\"-selected\"},header:{general:{disabled:this.headerClassName+\"-disabled\",focused:this.headerClassName+\"-focused\",normal:this.headerClassName,hovered:this.headerClassName+\"-hovered\",selected:this.headerClassName+\"-selected\"},expandBox:this.headerExpandBoxClassName},content:{general:this.contentClassName,expanded:this.contentClassName+\"-expand\",collapsed:this.contentClassName+\r\n\"-collapse\"}};this.updateStyle(this.controlStyle);this.updateControlClass();this.updateContentClass();this.updateHeaderBlockClass()};b.prototype.ngAfterContentInit=function(){var a=this,b=setTimeout(function(){if(a.contentElem){var d=a.contentElem.nativeElement.firstElementChild.cloneNode(!0);d.style.position=\"absolute\";d.style.top=\"-9999999px\";a.controlElem.nativeElement.append(d);a.maxBlockHeight=d.offsetHeight;d.remove()}clearTimeout(b)},100)};b.prototype.ngOnDestroy=function(){};b.prototype.onHeaderClick=\r\nfunction(a){this.isEnabled&&1==a.buttons&&(this.parentCtrl&&this.parentCtrl.invokeMethod?this.parentCtrl.invokeMethod(\"SELECT_GROUP\",this):(this.selected=!this.selected,this.expanded=!this.expanded))};b.prototype.collapse=function(){this.parentCtrl||(this.expanded=!1)};b.prototype.expand=function(){this.expanded=!0};b.prototype.toggle=function(){this.expanded=!this.expanded};b.prototype.toggleContent=function(){if(this.parentCtrl&&this.parentCtrl.invokeMethod)this.expanded?this.parentCtrl.invokeMethod(\"TOGGLE_GROUPS\",\r\nthis):this.parentCtrl.invokeMethod(\"COLLAPSE_GROUP\",this);else{var a=this,b=0,d=0;if(a.expanded){a.contentDisplay=\"block\";var c=setInterval(function(){b<a.maxBlockHeight?(d=0==d?1:d+2,b+=d,a.contentHeight=b+\"px\"):(a.contentHeight=\"auto\",a.expandState=\"none\",a.callAfterEvent(!0),a.supressCallback=!1,clearInterval(c))},25)}else{a.maxBlockHeight=a.contentElem.nativeElement.offsetHeight;b=a.maxBlockHeight;var e=setInterval(function(){0<b?(d=0==d?1:d+2,b-=d,a.contentHeight=b+\"px\"):(a.contentDisplay=\"none\",\r\na.contentHeight=\"0\",a.expandState=\"none\",a.callAfterEvent(),a.supressCallback=!1,clearInterval(e))},25)}}};b.prototype.getContentHeight=function(){return this.maxBlockHeight};b.prototype.setContentHeight=function(a){this.contentHeight=a};b.prototype.updateContentClass=function(){this.contentClass.length=0;this.contentClass.push(this.options.currentStyle.content.general);0!=this.expanded?\"expand\"==this.expandState&&this.contentClass.push(this.options.currentStyle.content.expanded):\"collapse\"==this.expandState&&\r\nthis.contentClass.push(this.options.currentStyle.content.collapsed)};b.prototype.getContentClass=function(){return this.contentClass};b.prototype.getContentStyle=function(a){return this.commonService.isString(a)?a:a?{general:this.commonService.isFieldAvailable(a.general,this.contentClassName),expanded:this.commonService.isFieldAvailable(a.expanded,this.contentClassName+\"-expand\"),collapsed:this.commonService.isFieldAvailable(a.collapsed,this.contentClassName+\"-collapse\")}:{general:this.defaultStyle.content.general,\r\nexpanded:this.defaultStyle.content.expanded,collapsed:this.defaultStyle.content.collapsed}};b.prototype.updateHeaderBlockClass=function(){this.headerBlockClass.length=0;this.headerBlockClass.push(\"iui-groupbox-header-block\");this.selected&&this.headerBlockClass.push(\"iui-groupbox-header-marker-down\")};b.prototype.getHeaderBlockClass=function(){return this.headerBlockClass};b.prototype.getHeaderClass=function(){var a=this.headerClassName;return a=this.state&integralui_core_1.IntegralUIObjectState.disabled?\r\na+(\" \"+this.options.currentStyle.header.disabled):this.state&integralui_core_1.IntegralUIObjectState.focused?a+(\" \"+this.options.currentStyle.header.focused):this.state&integralui_core_1.IntegralUIObjectState.selected?a+(\" \"+this.options.currentStyle.header.selected):this.state&integralui_core_1.IntegralUIObjectState.hovered?a+(\" \"+this.options.currentStyle.header.hovered):a+(\" \"+this.options.currentStyle.header.normal)};b.prototype.getHeaderGeneralStyle=function(a){return this.commonService.isString(a)?\r\na:a?{disabled:this.commonService.isFieldAvailable(a.hovered,this.headerClassName+\"-disabled\"),focused:this.commonService.isFieldAvailable(a.hovered,this.headerClassName+\"-focused\"),hovered:this.commonService.isFieldAvailable(a.hovered,this.headerClassName+\"-hovered\"),normal:this.commonService.isFieldAvailable(a.normal,this.headerClassName),selected:this.commonService.isFieldAvailable(a.selected,this.headerClassName+\"-selected\")}:{disabled:this.defaultStyle.header.general.disabled,focused:this.defaultStyle.header.general.focused,\r\nhovered:this.defaultStyle.header.general.hovered,normal:this.defaultStyle.header.general.normal,selected:this.defaultStyle.header.general.selected}};b.prototype.getHeaderStyle=function(a){return a?{general:this.getHeaderGeneralStyle(a.general),expandBox:this.commonService.isFieldAvailable(a.expandBox,this.headerExpandBoxClassName)}:{general:{disabled:this.defaultStyle.header.general.disabled,focused:this.defaultStyle.header.general.focused,hovered:this.defaultStyle.header.general.hovered,normal:this.defaultStyle.header.general.normal,\r\nselected:this.defaultStyle.header.general.selected},expandBox:this.defaultStyle.header.expandBox}};b.prototype.getCurrentHeaderStyle=function(){return this.options.currentStyle.header};b.prototype.setOpacity=function(a){this.contentOpacity=a};b.prototype.updateStyle=function(a){this.options.currentStyle=a?{general:this.getGeneralStyle(a.general),header:this.getHeaderStyle(a.header),content:this.getContentStyle(a.content)}:{general:{disabled:this.defaultStyle.general.disabled,focused:this.defaultStyle.general.focused,\r\nhovered:this.defaultStyle.general.hovered,normal:this.defaultStyle.general.normal,selected:this.defaultStyle.general.selected},header:{general:{disabled:this.defaultStyle.header.general.disabled,focused:this.defaultStyle.header.general.focused,hovered:this.defaultStyle.header.general.hovered,normal:this.defaultStyle.header.general.normal,selected:this.defaultStyle.header.general.selected},expandBox:this.defaultStyle.header.expandBox},content:{general:this.defaultStyle.content.general,expanded:this.defaultStyle.content.expanded,\r\ncollapsed:this.defaultStyle.content.collapsed}}};return b}(integralui_core_1.IntegralUIBaseComponent);__decorate([core_1.ViewChild(\"control\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUIGroupBox.prototype,\"controlElem\",void 0);__decorate([core_1.ViewChild(\"content\",{read:core_1.ViewContainerRef}),__metadata(\"design:type\",core_1.ViewContainerRef)],IntegralUIGroupBox.prototype,\"contentRef\",void 0);\r\n__decorate([core_1.ViewChild(\"content\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUIGroupBox.prototype,\"contentElem\",void 0);__decorate([core_1.ViewChild(\"header\"),__metadata(\"design:type\",integralui_core_1.IntegralUIHeaderItem)],IntegralUIGroupBox.prototype,\"header\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",String)],IntegralUIGroupBox.prototype,\"text\",void 0);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",String)],IntegralUIGroupBox.prototype,\"icon\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",String)],IntegralUIGroupBox.prototype,\"expandBoxType\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Boolean),__metadata(\"design:paramtypes\",[Boolean])],IntegralUIGroupBox.prototype,\"expanded\",null);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Boolean),__metadata(\"design:paramtypes\",[Boolean])],IntegralUIGroupBox.prototype,\"selected\",null);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIGroupBox.prototype,\"afterCollapse\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIGroupBox.prototype,\"afterExpand\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIGroupBox.prototype,\"afterSelect\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIGroupBox.prototype,\"beforeCollapse\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIGroupBox.prototype,\"beforeExpand\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIGroupBox.prototype,\"beforeSelect\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIGroupBox.prototype,\"selectedChanged\",void 0);\r\nIntegralUIGroupBox=__decorate([core_1.Component({selector:\"iui-groupbox\",template:'\\n\\t\\t<div [ngClass]=\"getControlClass()\" #control>\\n\\t\\t\\t<div [ngClass]=\"getHeaderBlockClass()\" >\\n\\t\\t\\t\\t<iui-header [controlStyle]=\"getCurrentHeaderStyle()\" [enabled]=\"enabled\" [icon]=\"icon\" [text]=\"text\" (mouseDown)=\"onHeaderClick($event)\" [animationType]=\"expandBoxType\" #header>\\n\\t\\t\\t\\t\\t<ng-content select=\"iui-group-header\"></ng-content>\\n\\t\\t\\t\\t</iui-header>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div [ngClass]=\"getContentClass()\" [ngStyle]=\"{ \\'display\\': contentDisplay, \\'height\\': contentHeight, \\'opacity\\': contentOpacity }\" #content>\\n\\t\\t\\t\\t<ng-content></ng-content>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n    ',inputs:[\"controlStyle\",\r\n\"data\",\"enabled\",\"name\",\"state\"],encapsulation:core_1.ViewEncapsulation.None}),__metadata(\"design:paramtypes\",[integralui_common_service_1.IntegralUICommonService,core_1.ComponentFactoryResolver,integralui_core_1.IntegralUIBaseService])],IntegralUIGroupBox);exports.IntegralUIGroupBox=IntegralUIGroupBox;","/*\r\n  filename: integralui.menuitem.js\r\n  version : 1.3.015\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(f,b){function a(){this.constructor=f}for(var g in b)b.hasOwnProperty(g)&&(f[g]=b[g]);f.prototype=null===b?Object.create(b):(a.prototype=b.prototype,new a)},__decorate=this&&this.__decorate||function(f,b,a,g){var e=arguments.length,d=3>e?b:null===g?g=Object.getOwnPropertyDescriptor(b,a):g,c;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)d=Reflect.decorate(f,b,a,g);else for(var h=f.length-1;0<=h;h--)if(c=f[h])d=(3>e?c(d):3<e?c(b,a,d):\r\nc(b,a))||d;return 3<e&&d&&Object.defineProperty(b,a,d),d},__metadata=this&&this.__metadata||function(f,b){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(f,b)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),integralui_data_service_1=require(\"../services/integralui.data.service\"),IntegralUIMenuItem=IntegralUIMenuItem_1=function(f){function b(a,b,e,\r\nd){var c=f.call(this,b,e)||this;c.dataService=a;c.elemRef=b;c.commonService=e;c.baseService=d;c.contentAnimation={display:\"none\",left:0,width:0,height:0};c.eventList=[];c.expandState=\"none\";c.isItemHovered=!1;c.blockPos={top:0,left:0};c.popupOrder=999;c.blockDisplay=\"none\";c.blockElemWidth=\"0\";c.blockElemHeight=\"0\";c.blockOverflow=\"hidden\";c.blockOpacity=0;c.pauseTimer=null;c.parentCtrl=null;c.parentItem=null;c.pause=300;return c}__extends(b,f);Object.defineProperty(b.prototype,\"expanded\",{get:function(){return this.isExpanded},\r\nset:function(a){this.isExpanded!=a&&this.isEnabled&&(this.expandState=a?\"expand\":\"collapse\",this.isExpanded=a,this.toggleContent())},enumerable:!0,configurable:!0});b.prototype.ngOnInit=function(){this.parentCtrl=this.baseService.getComponent();this.dataService.init([{data:this.items}]);this.isExpanded=this.data&&void 0!=this.data.expanded?this.data.expanded:!1;this.blockElemHeight=\"0\";this.generalClassName=this.data&&!this.data.pid?\"iui-menuitem-root\":\"iui-menuitem\";this.blockClassName=\"iui-menuitem-block\";\r\nthis.contentClassName=this.generalClassName+\"-content\";this.expandBoxClassName=\"iui-menu-marker-expand\";this.expandBoxSpaceClassName=this.expandBoxClassName+\"-space\";this.separatorClassName=this.generalClassName+\"-separator\";this.initStyle();this.enabled=this.data&&0!=this.data.enabled?!0:!1};b.prototype.initStyle=function(){this.defaultStyle={general:{disabled:this.generalClassName+\"-disabled\",focused:this.generalClassName+\"-focused\",normal:this.generalClassName,hovered:this.generalClassName+\"-hovered\",\r\nselected:this.generalClassName+\"-selected\"},expandBox:{general:this.expandBoxClassName,animated:this.expandBoxClassName+\"-load\",expanded:this.expandBoxClassName+\"-open\",collapsed:this.expandBoxClassName+\"-close\"},content:{disabled:this.contentClassName+\"-disabled\",focused:this.contentClassName+\"-focused\",normal:this.contentClassName,hovered:this.contentClassName+\"-hovered\",selected:this.contentClassName+\"-selected\"},separator:this.separatorClassName};this.updateStyle(this.controlStyle);this.updateControlClass()};\r\nb.prototype.ngOnDestroy=function(){};b.prototype.ngAfterContentInit=function(){this.updateLayout()};b.prototype.collapse=function(){this.expanded=!1};b.prototype.expand=function(){this.expanded=!0};b.prototype.toggle=function(){this.expanded=!this.expanded};b.prototype.onExpandBoxMouseDown=function(a){this.isEnabled&&this.toggle()};b.prototype.getDataType=function(){return this.data&&this.data.type?this.data.type:\"item\"};b.prototype.getItemLevel=function(){return void 0!=this.level?this.level+1:0};\r\nb.prototype.isThereChildren=function(){return this.items&&0<this.items.length};b.prototype.isBlockVisible=function(){return this.isItemHovered&&this.isThereChildren()};b.prototype.updateLayout=function(){var a=this,b=setTimeout(function(){a.data&&(a.data.pid||\"vertical\"==a.orientation?a.elemRef.nativeElement.parentElement&&(a.blockPos={top:0<a.level?-2:-1,left:a.elemRef.nativeElement.parentElement.offsetWidth-3}):a.elemRef.nativeElement.parentElement&&(a.blockPos={top:a.elemRef.nativeElement.parentElement.offsetHeight-\r\n8,left:-1}));clearTimeout(b)},1)};b.prototype.onMouseDown=function(a){this.isEnabled&&(1==a.which&&this.parentCtrl&&this.parentCtrl.invokeMethod(\"ITEM_CLICK\",{event:a,cmp:this,item:this.data}),this.mouseDown.emit(a));a.stopPropagation()};b.prototype.onMouseEnter=function(a){this.isEnabled&&(this.state|=integralui_core_1.IntegralUIObjectState.hovered,this.isItemHovered=!0,this.updateLayout(),this.expand(),this.mouseEnter.emit(a));a.stopPropagation()};b.prototype.onMouseLeave=function(a){this.isEnabled&&\r\n(this.state&=~integralui_core_1.IntegralUIObjectState.hovered,this.removePauseTimer(),this.isItemHovered=!1,this.collapse(),this.mouseLeave.emit(a));a.stopPropagation()};b.prototype.onContextMenu=function(a){a.preventDefault();a.stopPropagation()};b.prototype.onChildItemMouseDown=function(a){this.collapse()};b.prototype.removePauseTimer=function(){this.pauseTimer&&clearTimeout(this.pauseTimer)};b.prototype.toggleContent=function(){var a=this;if(a.items){var b=a.elemRef.nativeElement.firstElementChild.offsetHeight/\r\n2*a.items.length,e=0,d=0;if(a.expanded)a.removePauseTimer(),a.pauseTimer=setTimeout(function(){if(a.pauseTimer){a.blockDisplay=\"block\";var c=setInterval(function(){e<b?(d=0==d?1:d+2,e+=d,a.blockElemHeight=e+\"px\",a.blockOpacity=e/b):(a.blockElemHeight=\"auto\",a.blockOverflow=\"visible\",a.blockOpacity=1,a.expandState=\"none\",clearInterval(c))},25)}a.removePauseTimer()},300);else{a.blockOverflow=\"hidden\";a.blockElem&&(e=a.blockElem.nativeElement.offsetHeight);var c=setInterval(function(){0<e?(d=0==d?1:\r\nd+2,e-=d,a.blockElemHeight=e+\"px\",a.blockOpacity=e/b):(a.blockDisplay=\"none\",a.blockElemHeight=\"0\",a.blockOpacity=0,a.expandState=\"none\",clearInterval(c))},25)}}};b.prototype.getItemDisplay=function(){return void 0!=this.data.pid?this.orientation?\"vertical\"==this.orientation?\"block\":\"inline-block\":\"block\":this.orientation?\"vertical\"==this.orientation?\"block\":\"inline-block\":\"inline-block\"};b.prototype.updateControlClass=function(){this.ctrlClass.length=0;this.ctrlClass.push(this.generalClassName);\r\nif(\"separator\"==this.getDataType())this.ctrlClass.push(this.getSeparatorClass());else if(this.options.currentStyle&&(this.ctrlClass.push(this.options.currentStyle.general.normal),this.state&integralui_core_1.IntegralUIObjectState.disabled?this.ctrlClass.push(this.options.currentStyle.general.disabled):this.state&integralui_core_1.IntegralUIObjectState.focused?this.ctrlClass.push(this.options.currentStyle.general.focused):this.state&integralui_core_1.IntegralUIObjectState.selected?this.ctrlClass.push(this.options.currentStyle.general.selected):\r\nthis.state&integralui_core_1.IntegralUIObjectState.hovered&&this.ctrlClass.push(this.options.currentStyle.general.hovered),this.isThereChildren())){var a=this.getExpandBoxClass();a=this.data.pid||\"vertical\"==this.orientation?a+\"-right\":a+\"-down\";this.ctrlClass.push(a);this.ctrlClass.push(this.getExpandBoxSpaceClass())}};b.prototype.getExpandBoxSpaceClass=function(){var a=\"\";this.isThereChildren()&&(a=this.expandBoxSpaceClassName);return a};b.prototype.getSeparatorClass=function(){return this.options.currentStyle?\r\nthis.options.currentStyle.separator:this.defaultStyle.separator};b.prototype.getBlockClass=function(){var a=this.blockClassName;this.isThereChildren()&&(a=0!=this.expanded?a+(\" \"+this.blockClassName+\"-open\"):a+(\" \"+this.blockClassName+\"-close\"));return a};b.prototype.getGeneralClass=function(){return this.generalClassName};b.prototype.getExpandBoxClass=function(){var a=\"\";this.isThereChildren()&&(a+=\" \"+this.options.currentStyle.expandBox.general);return a};b.prototype.getExpandBoxStyle=function(a){return this.commonService.isString(a)?\r\na:a?{general:this.commonService.isFieldAvailable(a.general,this.expandBoxClassName),animated:this.commonService.isFieldAvailable(a.animated,this.expandBoxClassName+\"-load\"),expanded:this.commonService.isFieldAvailable(a.expanded,this.expandBoxClassName+\"-open\"),collapsed:this.commonService.isFieldAvailable(a.collapsed,this.expandBoxClassName+\"-close\")}:{general:this.defaultStyle.expandBox.general,animated:this.defaultStyle.expandBox.animated,expanded:this.defaultStyle.expandBox.expanded,collapsed:this.defaultStyle.expandBox.collapsed}};\r\nb.prototype.updateStyle=function(a){this.options.currentStyle=a?{content:this.getContentStyle(a.content),expandBox:this.getExpandBoxStyle(a.expandBox),general:this.getGeneralStyle(a.general),separator:this.commonService.isFieldAvailable(a.separator,this.separatorClassName)}:{content:{disabled:this.defaultStyle.content.disabled,focused:this.defaultStyle.content.focused,hovered:this.defaultStyle.content.hovered,normal:this.defaultStyle.content.normal,selected:this.defaultStyle.content.selected},expandBox:{general:this.defaultStyle.expandBox.general,\r\nanimated:this.defaultStyle.expandBox.animated,expanded:this.defaultStyle.expandBox.expanded,collapsed:this.defaultStyle.expandBox.collapsed},general:{disabled:this.defaultStyle.general.disabled,focused:this.defaultStyle.general.focused,hovered:this.defaultStyle.general.hovered,normal:this.defaultStyle.general.normal,selected:this.defaultStyle.general.selected},separator:this.defaultStyle.separator}};return b}(integralui_core_1.IntegralUIItem);\r\n__decorate([core_1.ViewChild(\"block\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUIMenuItem.prototype,\"blockElem\",void 0);__decorate([core_1.ViewChild(\"content\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUIMenuItem.prototype,\"contentElem\",void 0);__decorate([core_1.ContentChildren(IntegralUIMenuItem_1),__metadata(\"design:type\",core_1.QueryList)],IntegralUIMenuItem.prototype,\"contentList\",void 0);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",String)],IntegralUIMenuItem.prototype,\"iconUrl\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Array)],IntegralUIMenuItem.prototype,\"items\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Number)],IntegralUIMenuItem.prototype,\"level\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",String)],IntegralUIMenuItem.prototype,\"orientation\",void 0);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Number)],IntegralUIMenuItem.prototype,\"pause\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Object)],IntegralUIMenuItem.prototype,\"templateRef\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Boolean),__metadata(\"design:paramtypes\",[Boolean])],IntegralUIMenuItem.prototype,\"expanded\",null);\r\nIntegralUIMenuItem=IntegralUIMenuItem_1=__decorate([core_1.Component({selector:\"iui-menuitem\",template:'\\n        <li [ngClass]=\"getControlClass()\" (click)=\"onClick($event)\" (mousedown)=\"onMouseDown($event)\" (mouseup)=\"onMouseUp($event)\" (mouseenter)=\"onMouseEnter($event)\" (mousemove)=\"onMouseMove($event)\" (mouseleave)=\"onMouseLeave($event)\" (contextmenu)=\"onContextMenu($event)\" [ngStyle]=\"{ \\'display\\': getItemDisplay() }\">\\n            <div *ngIf=\"getDataType()==\\'item\\'\">\\n                <span *ngIf=\"!templateRef\" #content>\\n                    <span *ngIf=\"icon\" class=\"iui-item-icon\" [ngClass]=\"icon\" [style.display]=\"getIconStatus()\"></span>\\n                    <img *ngIf=\"iconUrl\" class=\"iui-item-icon-url\" src=\"{{iconUrl}}\" />\\n                    <span *ngIf=\"text\" class=\"iui-item-label\">{{text}}</span>\\n                </span>\\n                <span *ngIf=\"templateRef\" #content>\\n                    <span [iuiTemplateOutlet]=\"templateRef\" [iuiTemplateOutletContext]=\"{$implicit: (data)}\"></span>\\n                </span>\\n                <ul *ngIf=\"items && items.length > 0\" #block class=\"iui-menuitem-block\" [ngStyle]=\"{ \\'display\\': blockDisplay, \\'top\\': blockPos.top + \\'px\\', \\'left\\': blockPos.left + \\'px\\', \\'height\\': blockElemHeight, \\'overflow\\': blockOverflow, \\'opacity\\': blockOpacity }\">\\n                    <iui-menuitem *ngFor=\"let childItem of items\" [data]=\"childItem\" [items]=\"childItem.items\" [enabled]=\"childItem.enabled\" [icon]=\"childItem.icon\" [iconUrl]=\"childItem.iconUrl\" [text]=\"childItem.text\" [level]=\"getItemLevel()\" [templateRef]=\"templateRef\" (mouseDown)=\"onChildItemMouseDown($event)\"></iui-menuitem>\\n                </ul>\\n            </div>\\n            <hr *ngIf=\"getDataType()==\\'separator\\'\" />\\n        </li>\\n    ',inputs:\"controlStyle data enabled icon name state text\".split(\" \"),\r\noutputs:\"click mouseDown mouseEnter mouseLeave mouseMove mouseUp\".split(\" \"),providers:[integralui_data_service_1.IntegralUIDataService],encapsulation:core_1.ViewEncapsulation.None}),__metadata(\"design:paramtypes\",[integralui_data_service_1.IntegralUIDataService,core_1.ElementRef,integralui_common_service_1.IntegralUICommonService,integralui_core_1.IntegralUIBaseService])],IntegralUIMenuItem);exports.IntegralUIMenuItem=IntegralUIMenuItem;var IntegralUIMenuItem_1;","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { IIssue } from '../../base/interfaces/issue.interface';\nimport {\n  NotificationService,\n  EnvService,\n  UserService,\n  IssueService\n} from '../../base/services/index';\nimport  _config  from './treegrid.configuration';\n\n@Component({\n  selector: 'issue-details',\n  templateUrl: './lidor/treegrid.issuedetails.component.html',\n  styleUrls: [\n    './lidor/treegrid.issuedetails.component.css',\n    './lidor/treegrid.issuedetails.component.jira.css'\n  ],\n})\nexport class IssueDetailsComponent {\n  private currentSelection: IIssue;\n  protected colapseDetails:boolean = true;\n  protected colapsePeople:boolean = true;\n  protected colapseDates:boolean = true;\n  protected colapseComments:boolean = true;\n  protected colapseDescription:boolean = true;\n  protected colapseSubTasks:boolean = true;\n  protected colapseLinks:boolean = true;\n  config = _config;\n  @Output('button-select') butonSelect: EventEmitter<any> = new EventEmitter();\n  @Input()\n  set selectedIssue(value: IIssue){\n         console.log(value)\n      if (this.currentSelection != value){\n          this.currentSelection = value;\n          this.issueService.retriveComments(value.key).subscribe(comments => {\n              value['comments'] = comments; // better declare and put it inside \"fields\"\n          })\n          \n           // Change the HTML details based on new issue selected\n           //retrive subtasks\n           //retrive issue links\n           //retrive comments\n      }\n  }\n  get selectedIssue(): IIssue {\n      return this.currentSelection;\n  }\n  \n  constructor(  protected envService: EnvService,\n                protected issueService: IssueService,\n                protected notificationService: NotificationService){}\n  \n  scrollTo(hash) {\n    let element_to_scroll_to = document.getElementById(hash);\n    element_to_scroll_to.scrollIntoView();\n    //document.location.hash = \"#\" + hash;\n  }\n  \n  createLink(path:string) {\n      return this.envService.options['baseUrl'] + path;\n  }\n  \n  dateFormat(date:string) {\n      //TODO\n      return date;\n  }\n  \n  onButtonSelect(key: string, value : any, data?: any) {\n    switch (key) {\n        case 'switchWatching':\n            this.notificationService.create('switchWatching: ' + this.currentSelection.id, 'sucessfully switches TODO', 'sucess');\n            break;\n        case 'link':\n            this.envService.url(value);\n            break;\n        case 'layoutMode':\n            this.butonSelect.emit({event:event, value:value, key: key, data: data});\n            break;\n        default:\n            this.issueService.platform[key] ? this.issueService.platform[key](this.currentSelection, data) : this.notificationService.create('action not yet implemented: ' + key, 'action not yet implemented: ' + key, 'warning');\n            break;\n    }\n  }\n  \n}\n\n/*\n\ntemplate: `\n      <div>\n          issue details: {{currentSelection.key}}\n      </div>\n  `,\n  \n  */","const config = {\n    \n    contextMenu:{\n        contextMenuReference: null,\n        rowMenu: {\n            appRef: null,\n            items: [\n               \n                { id: 4, text: \"\", type: \"separator\", action: \"none\"},\n                { id: 5, text: \"Details\",              action: \"issueDetailsDialog\", icon: \"app-menu-icons\" },\n                { id: 5, text: \"Edit\",              action: \"editDialog\", icon: \"bit-icon-pencil\" },\n                { id: 6, text: \"Assign\",            action: \"assignDialog\", icon: \"bit-icon-user\" },\n                { id: 7, text: \"Comment\",           action: \"commentDialog\", icon: \"bit-icon-comment-empty\" },\n                { id: 8, text: \"Subtasks 0\",        action: \"editDialog\", icon: \"bit-icon-plus\" },\n                { id: 9, text: \"Attach Files\",      action: \"attachFilesDialog\", icon: \"bit-icon-attach\" },\n                { id: 10, text: \"Voters\",           action: \"viewVotersDialog\", icon: \"app-menu-icons\" },\n                { id: 11, text: \"Switch Watching\",  action: \"switchWatching\", icon: \"bit-icon-eye\", watching:true},\n                { id: 12, text: \"Watchers\",         action: \"manageWatchersDialog\", icon: \"bit-icon-eye\" },\n                { id: 13, text: \"Create Sub-Task\",  action: \"createSubissueDialog\", icon: \"bit-icon-plus\" },\n                { id: 14, text: \"Move\",             action: \"moveIssueDialog\", icon: \"app-menu-icons\" },\n                { id: 15, text: \"Clone\",            action: \"cloneIssueDetailsDialog\", icon: \"app-menu-icons\" },\n                { id: 16, text: \"Link\",             action: \"linkJiraIssueDialog\", icon: \"app-menu-icons\" },\n                { id: 17, text: \"Labels\",           action: \"editLabelsDialog\", icon: \"bit-icon-tag\" }\n            ],\n            position: \"manual\",\n            adjustment: { top: 0, left: -175 }\n        }\n    },\n    fieldList: [\n        { id: 2, name: 'summary' },\n        { id: 3, name: 'priority' },\n        { id: 4, name: 'status' },\n        { id: 5, name: 'reporter' },\n        { id: 6, name: 'assignee' },\n        { id: 7, name: 'project' },\n        { id: 8, name: 'issuetype' },\n        { id: 9, name: 'versions' },\n        { id: 10, name: 'fixVersions' },\n        { id: 11, name: 'components' },\n        { id: 12, name: 'progress' },\n        { id: 14, name: 'watches' },\n        { id: 16, name: 'created' },\n        { id: 17, name: 'updated' },\n        { id: 18, name: 'Points' },\n        { id: 19, name: 'Sprint' },\n        { id: 80, name: 'Epic link' }\n    ]\n}\n\nexport default config;\n","//\n// Sample TreeGrid v1.0.0\n//\n// This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND.\n// either express or implied.                        \n//\n\nimport { ChangeDetectorRef, Component, Directive, ElementRef, EventEmitter, enableProdMode, HostListener, Input, Output, QueryList, ViewContainerRef, ViewChild, ViewChildren, ViewEncapsulation, OnDestroy, OnInit } from '@angular/core';\n\nimport { Http, Response, Headers, RequestOptions } from '@angular/http';\nimport { Observable } from 'rxjs/Rx';\nimport { Subject }    from 'rxjs/Subject';\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/catch';\n\nenableProdMode();\n\nimport  config  from './treegrid.configuration';\nimport { IntegralUIComboBox } from '../../assets/integralui/components/integralui.combobox';\nimport { IntegralUICommonService } from '../../assets/integralui/services/integralui.common.service';\nimport { IntegralUISelectionMode, IntegralUISortOrder } from '../../assets/integralui/components/integralui.core';\nimport { IntegralUIDirection, IntegralUIGridLines } from '../../assets/integralui/components/integralui.base.grid';\nimport { IntegralUIDropDown } from '../../assets/integralui/directives/integralui.dropdown';\nimport { IntegralUIGrid } from '../../assets/integralui/components/integralui.grid';\nimport { IntegralUISplitter } from '../../assets/integralui/components/integralui.splitter';\nimport { IntegralUIFilterService } from '../../assets/integralui/services/integralui.filter.service';\n\nimport { TGroupId, TGroupType, IGroup } from '../../base/interfaces/map.interface';\nimport { TIssueId, TIssueIndex, IIssue } from '../../base/interfaces/issue.interface';\nimport { IAtlassianIssue } from '../../base/interfaces/issue.atlassian.interface';\n\nimport { ILocalStorage, LocalStorageService } from '../../base/services/local.storage.service';\n\nimport treeGridConfig from './treegrid.configuration';\n\nimport { IssueDetailsComponent } from './../components/issue.details.component';\nimport { GridDialogComponent } from './grid.dialog.component';\nimport { TreeGridService } from '../services/treegrid.service';\nimport {\n  EnvService,\n  IssueService,\n  NotificationService\n} from '../../base/services/index';\n\n/*import { IAtlassianIssue, TAtlassianIssueId } from './issue.atlassian.interface';\n\ninterface IUITreeGridRow {\n  id: TAtlassianIssueId,\n  cells: Array<IUITreeGridCell>,\n  tag: IAtlassianIssue\n}\n\ninterface IUITreeGridCell {\n  cid: any,\n  tag: any\n}*/\n\n@Component({\n    selector: 'bit-treegrid',\n    templateUrl: './lidor/treegrid.component.html',\n    styleUrls: ['./lidor/treegrid.component.css', './lidor/integralui.module.css'],\n    providers: [LocalStorageService, TreeGridService],\n    encapsulation: ViewEncapsulation.None\n})\nexport class TreeGridComponent {\n \n    getCellAggregationValue(cell: any){\n        return this.gridService.getCellAggregationValue(cell);\n    }\n   \n    getAggregationTypeByID(id: any, flag?: boolean): any {\n        let list = flag ? this.columnList2 : this.columnList;\n        \n        return ((this.gridService.getColumnById(list, id) || {}).aggregationType || 'PROGRESS');\n    }\n\n\n    @Input() preferences: Subject<any>;\n    @Input() appRef: ViewContainerRef;\n    @Input() appElemRef: ElementRef;\n  \n    @Output() configChanged: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('mainTool') mainToolElem: ElementRef;\n    @ViewChild('grid1') grid1: IntegralUIGrid;\n    @ViewChild('grid2') grid2: IntegralUIGrid;\n    @ViewChildren('columnPanel', {read: IntegralUIDropDown}) columnPanels: QueryList<IntegralUIDropDown>;\n    @ViewChildren('columnPanel', {read: ElementRef}) columnPanelElems: QueryList<ElementRef>;\n    @ViewChildren('newIssuePanel', {read: IntegralUIDropDown}) newIssuePanels: QueryList<IntegralUIDropDown>;\n    @ViewChildren('newIssuePanel', {read: ElementRef}) newIssuePanelElems: QueryList<ElementRef>;\n    @ViewChild('panel1') panel1Elem: ElementRef;\n    @ViewChild('panel2') panel2Elem: ElementRef;\n    @ViewChild('splitter') splitter: IntegralUISplitter;\n    @ViewChild('issueDetailsComp') issueDetailsComp: IssueDetailsComponent;\n    @ViewChild('comboNewIssueType') comboNewIssueTypeComp: IntegralUIComboBox;\n    \n    protected _data: {\n    _issues: IIssue[];\n    _indexes: TIssueIndex[];\n    _locks: number;\n\n    ranks: {[key: string]: {[key: string]: number}[]}; // key: TGroupType, key: TIssueId\n    groups: {[key: string]: IGroup[]}; // key: TGroupType\n    issues: TIssueIndex[][][];\n    laneGroups: IGroup[];\n    columnGroups: IGroup[];\n\n  } = {\n    _issues: null, // list of issues\n    _indexes: null, // list of issues indexes ordered by rank\n    _locks: 0, // counter / to lock map refreshing\n\n    ranks: {},\n    groups: {},\n    issues: null,\n    laneGroups: null,\n    columnGroups: null,\n  };\n    \n    public isBusy: boolean = false;\n    private storageKey: string = 'GRID_CONFIG';\n    public data = this._data;\n    \n    // Dialog\n    public issuePropertiesModal: boolean = false;\n    public dialogData: any = {\n        dropPos: -1,\n        flag: false,\n        versions: {\n            changed: false,\n            fieldID: 'versions',\n            list: [],\n            addList: [],\n            removeList: []\n        },\n        fixVersions: {\n            changed: false,\n            fieldID: 'fixVersions',\n            list: [],\n            addList: [],\n            removeList: []\n        }, \n        components: {\n            changed: false,\n            fieldID: 'components',\n            list: [],\n            addList: [],\n            removeList: []\n        }\n    } \n    \n    // DropDown\n    public dropDownRef: any = null;\n    \n    // Grouping\n    public groupSettings: any = {\n        enabled: true,\n        items: [],\n        showAddButton: true\n    }\n\n    // Expand/Collapse\n    private currentExpandLevel: string = 'All';\n    \n    // Layout \n    public blockSize: any = { width: 0, height: 0 }\n    public firstGridSize: any = { width: 0, height: 0 }\n    public secondGridSize: any = { width: 0, height: 0 }\n\n    public splitterDistance: number = 0;\n    public layoutMode: string = 'single';\n\n    // Layout Configuration\n    public layoutConfigurationList: Array<any> = [\n        { id: 1, text: \"Single Grid\" },\n        { id: 2, text: \"Double Grid\" }\n    ];\n\n    public layoutConfigurationComboStyle: any = {\n        general: {\n            normal: 'layout-configuration-combo'\n        }\n    }\n\n    // Column Configuration\n    public columnConfigurationList: Array<any> = [\n        { id: 1, text: \"Basic\", columns: [ 92, 91, 90, 2, 'issuetype', 'progress', 'assignee', 'created', 99 ] },\n        { id: 2, text: \"Planning\", columns: [ 92, 91, 90, 20, 2, 'priority', 'fixVersions', 'assignee', 'created', 99 ] },\n        { id: 3, text: \"Tracking\", columns: [ 92, 91, 90, 20, 2, 'progress', 'status', 'assignee', 99 ] }\n    ];\n\n    public columnConfigurationComboStyle: any = {\n        general: {\n            normal: 'column-configuration-combo'\n        }\n    }\n\n    public epicColumnId: any = 80;\n    public checkBoxColumnId: any = 90;\n    public markerColumnId: any = 91;\n    public handleColumnId: any = 92;\n    public iconsColumnId: any = 21;\n    public lastColumnId: any = 99;\n\n    public versionsID: any = 'versions';\n    public fixVersionsID: any = 'fixVersions';\n    public componentsID: any = 'components';\n    \n    public columns: Array<any> = [];\n    public rows: Array<any> = [];\n\n    public columns2: Array<any> = [];\n    public rows2: Array<any> = [];\n\n    public columnList: Array<any> = [];\n    public columnList2: Array<any> = [];\n    public columnDropDownList: Array<any> = [];\n    public columnDropDownList2: Array<any> = [];\n\n    private fieldList: Array<any> = [];\n\n    public gridGroups: Array<any> = [];\n    public gridGroups2: Array<any> = [];\n    \n    public currentIssueSelected: IIssue = null;\n    public showIssueDetails: boolean = false;\n    \n    // Control Style\n    public gridStyle: any = {\n        general: {\n            normal : 'treegrid-bit-normal'\n        },\n        column: {\n            header: {\n                normal: 'treegrid-sample-column-normal',\n                hovered: 'treegrid-sample-column-hovered',\n                selected: 'treegrid-sample-column-selected'\n            }\n        },\n        row: {\n            general: {\n                hovered: 'treegrid-sample-row-hovered',\n                selected: 'treegrid-sample-row-selected'\n            }\n        }\n    }\n\n    // Holds a refernce to all CSS classes for the column dropdown combo\n    public columnDropDownComboStyle: any = {\n        general: {\n            normal: 'treegrid-sample-column-combo'\n        }\n    }\n\n    public isColumnDropDownPanelOpen: boolean = false;\n    public activeColumn: any = null;\n    public columnPanelOptions: any = {\n        name: '',\n        comboList: [\n            { id: 1, text: \"Attribute\" },\n            { id: 2, text: \"Color Schemes\" },\n            { id: 3, text: \"Colored Key\" },\n            { id: 4, text: \"Field\" },\n            { id: 5, text: \"Formula\" },\n            { id: 6, text: \"Icons\" },\n            { id: 7, text: \"Notes\" },\n            { id: 8, text: \"Page Field\" },\n            { id: 9, text: \"Progress\" },\n            { id: 10, text: \"Sequential Index\" },\n            { id: 11, text: \"Test Run\" },\n            { id: 12, text: \"Work Logged\" }\n        ]\n    }\n\n    public gridLines: IntegralUIGridLines = IntegralUIGridLines.Horizontal;\n\n    // Context Menu has been moved to treeGridConfig.contextMenu\n    public contextMenuReference: any = treeGridConfig.contextMenu.contextMenuReference;\n    public rowMenu: any = treeGridConfig.contextMenu.rowMenu;\n    \n    public activeCell: any = null;\n    public isRowMenuOpen: boolean = false;\n\n    // Ranking\n    public isRankButtonActive: boolean = false;\n\n    // Set Selection Mode to allow multi row selection\n    public selMode: IntegralUISelectionMode = IntegralUISelectionMode.MultiExtended;\n\n    // Selection\n    public selectedCell: any = null;\n    \n    // Expand Status\n    private expandStatusList: Array<any> = [];\n    \n    // Initilaization --------------------------------------------------------------------\n\n    constructor(\n        private http: Http,\n        protected envService: EnvService, \n        protected issueService: IssueService,\n        protected storageService: LocalStorageService,\n        protected notificationService: NotificationService,\n        protected gridService: TreeGridService,\n        private changeRef: ChangeDetectorRef,\n        private commonService?: IntegralUICommonService,\n        private filterService?: IntegralUIFilterService\n    ){\n    }\n    \n    private createColumnList(){\n        let self = this;\n        \n        // Create fixed columns on left\n        let list: Array<any> = [\n            { id: this.handleColumnId, contentAlignment: 'center', width: 9, fixedWidth: true, allowGrouping: false, allowDrag: false, allowDrop: false },\n            { id: this.markerColumnId, contentAlignment: 'center', width: 12, fixedWidth: true, allowGrouping: false, allowDrag: false, allowDrop: false },\n            { id: this.checkBoxColumnId, contentAlignment: 'center', width: 10, fixedWidth: true, allowGrouping: false, allowDrag: false, allowDrop: false },\n            {\n                id: 2, headerText: \"Summary\", width: 400, minWidth: 150, allowResize: { left: false, right: false }, allowGrouping: false, allowDrag: false, allowDrop: false,\n                aggregation: { \n                    enabled: true, \n                    callback: function(row: any, id: any, groupID: any){\n                        return self.gridService.processGeneralAggregation(row, id, groupID);\n                    }\n                }\n            },\n            { \n                id: 20, headerText: \"Key\", width: 70, minWidth: 50, allowResize: { right: false }, allowGrouping: false,\n                aggregation: { \n                    enabled: true, \n                    callback: function(row: any, id: any, groupID: any){\n                        return self.gridService.processGeneralAggregation(row, id, groupID);\n                    }\n                }\n            }\n        ];\n\n        // Create columns in the middle based on present data fields\n\n        for (let i = 0; i < this.fieldList.length; i++){\n            let column: any = this.gridService.createColumn(this.fieldList[i]);\n            if (column)\n                list.push(column);\n        }\n\n        // Create fixed columns on right\n        list.push({\n            id: this.iconsColumnId, headerText: \"Icons\", visible: false, allowResize: { right: false }, allowGrouping: false,\n            icons: [\n                { id: 1, text: \"Project\", checked: true },\n                { id: 2, text: \"Issue Type\", checked: true },\n                { id: 3, text: \"Priority\", checked: true },\n                { id: 4, text: \"Status\", checked: true },\n                { id: 5, text: \"Reporter\", checked: true },\n                { id: 6, text: \"Assignee\", checked: true }\n            ],\n            aggregation: { \n                enabled: true, \n                callback: function(row: any, id: any, groupID: any){\n                    return self.gridService.processIconsAggregation(row, id, groupID);\n                }\n            }\n        });\n        \n        //list.push({ id: this.epicColumnId, headerText: \"Epic\", visible: false, allowResize: { right: false } });\n        list.push({ \n            id: this.lastColumnId, headerAlignment: \"center\", fixedWidth: true, width: 32, allowGrouping: false, allowDrag: false, allowDrop: false,\n            aggregation: { \n                enabled: true, \n                callback: function(row: any, id: any, groupID: any){\n                    return self.gridService.processToolboxAggregation(row, id, groupID);\n                }\n            }\n        });\n        \n        return list;\n    }\n\n    ngOnInit(){\n        this.issueService.observables.list.subscribe((data: IIssue[]) => {\n            this.fieldList = this.gridService.getAllFields();\n            //console.log(\"FIELDS ---------------------\", this.fieldList);\n \n            this.updateGridOnInit();\n            \n            this.addData(data);\n            //console.log(\"DATA ---------------------\", data);\n         });\n        \n        //this is fired for our own changes and others\n        this.issueService.observables.webhook.subscribe((issue: IIssue) => {\n            //console.log(\"------- WEBHOOK ----------- \");\n            //we do not want to have a second message: this.notificationService.create('WEBHOOK' + issue.key + ' has been updated.', null, 'success');\n            \n            let cmp = null;\n\n            cmp = this.getGridComponent();\n            if (cmp){\n                let row = this.findRowByIssueKey(issue.key);\n                // If there is row present, update it accordingly\n                if (row){\n                    this.updateRowsFromIssue(issue);\n                    this.notificationService.create(issue.key + ' has been updated.', null, 'success');\n                }\n                \n                //this.refreshRows();\n                cmp.updateLayout();\n                this.removeDuplicates();\n            }\n            \n            // Update the row in second grid\n            cmp = this.getGridComponent(true);\n            if (cmp){\n                let row = this.findRowByIssueKey(issue.key, true);\n                // If there is row present, update it accordingly\n                if (row)\n                    this.updateRowsFromIssue(issue, true);\n                \n                //this.refreshRows(true);\n                cmp.updateLayout();\n                this.removeDuplicates(true);\n           }\n        });\n        \n        //this is fired for our own changes\n        this.issueService.observables.view.subscribe((issue: IIssue) => {\n            // getGridComponent is required for future changes when splitter will become active\n            \n        });\n           \n    \n        // init ranks\n        this._data.ranks = this.envService.getScopePreferences('ranks') || {};\n        \n        this.preferences.subscribe(event => this.handleToolBarActions(event));\n    }\n    \n    private updateGridOnInit(){\n        this.columnList = this.createColumnList();\n        this.columnList2 = this.createColumnList();\n\n        for (let j = 0; j < this.columnList.length; j++){\n            if (this.columnList[j].allowGrouping != false)\n                this.groupSettings.items.push({ id: this.columnList[j].id, text: this.columnList[j].headerText });\n        }\n\n        //console.log(this.columnList);\n        \n        for (let j = 0; j < this.columnList.length; j++){\n            let obj: any = {\n                id: this.columnList[j].id,\n                appRef: this.appRef,\n                adjustment: { top: 4, left: -172 }\n            }\n\n            switch (this.columnList[j].id){\n                case this.lastColumnId:\n                    obj.adjustment = { top: 4, left: -172 }\n                    break;\n\n                default:\n                    obj.adjustment = { top: -4, left: 0 }\n                    obj.autoClose = false;\n                    break;\n            }\n\n            this.columnList[j].dropdown = obj;\n        }\n        \n        for (let j = 0; j < this.columnList2.length; j++){\n            let obj: any = {\n                id: this.columnList2[j].id,\n                appRef: this.appRef,\n                adjustment: { top: 4, left: -172 }\n            }\n\n            switch (this.columnList2[j].id){\n                case this.lastColumnId:\n                    obj.adjustment = { top: 4, left: -172 }\n                    break;\n\n                default:\n                    obj.adjustment = { top: -4, left: 0 }\n                    obj.autoClose = false;\n                    break;\n            }\n\n            this.columnList2[j].dropdown = obj;\n        }\n\n        \n        this.dropDownRef = this.appRef;\n        \n        this.rowMenu.appRef = this.appRef;\n        this.rowMenu.adjustment = { top: 0, left: -175 };\n\n        this.createView(0, false, true);\n\n        this.gridService.setColumnList(this.columnList);\n        this.gridService.setColumnList(this.columnList2, true);\n    }\n    \n    handleToolBarActions(event) {\n          switch (event.key){\n                case 'layoutMode':\n                    switch(event.value) {\n                        case 'grid-details':\n                            //TODO open a issue details page\n                            //console.log('!!! handleToolBarActions ' + event.key + ' / ' + event.value + ' not yet implemented');\n                            this.layoutMode = event.value;\n                            this.showIssueDetails = true;\n                    \n                            this.updateConfiguration();\n                            break;\n                            \n                        case 'single':\n                            this.layoutMode = event.value;\n                            this.updateConfiguration();\n                            break;\n                            \n                        case 'double':\n                            this.layoutMode = event.value;\n                            this.showIssueDetails = false;\n                            \n                            // Load data for the second grid\n                            let self = this;\n                            setTimeout(function(){\n                                self.createView(0, true, false);\n                                self.refreshRows(true);\n                    \n                                self.updateConfiguration();\n                            }, 10);\n                            break;\n                    }\n                    break;\n                case 'groupConfiguration':\n                    this.setGroups(this.gridService.getFieldsByGroup(event.value));\n                    break;\n                case 'columnConfiguration':\n                    this.changeColumnConfiguration(event.value);\n                    this.changeColumnConfiguration(event.value, true);\n                    break;\n                case 'automation':\n                    break;\n                case 'move-treegrid-lane':\n                    this['move' + event.value + 'Clicked']();\n                    break;\n                case 'treegrid-expand':\n                    this.expandGrid(event.value);\n                    break;\n                case 'treegrid-collapse':\n                    this.collapseGrid();\n                    break;\n                case 'selected-row-action':\n                    //TODO\n                    //for now 'copy' should behave the same as 'cut'\n\n                    switch(event.value) {\n                        case 'edit':\n                            this.openEditor();\n                            break;\n                            \n                        case 'cut':\n                             this.createCopies(event.value);\n                             break;\n                             \n                        case 'copy':\n                             this.createCopies(event.value);\n                             break;\n                             \n                        case 'paste':\n                             this.pasteRows();\n                             break;\n                             \n                        default:\n                            //page and folder are disabled\n                            //console.log('!!! handleToolBarActions ' + event.key + ' / ' + event.value + ' not yet implemented');\n                        break;\n                    }\n                   \n                    break;\n                case 'create-new':\n                    switch(event.value){\n                        case 'issue':\n                            //console.log('!!! handleToolBarActions ',this.issueService);\n                            //this opens only the create issue dialog\n                            this.issueService.atlassian.createDialog();\n                            //TODO how can we link the created issue in the current possition in the grid?\n                            break;\n                        default:\n                            //page and folder are disabled\n                            //console.log('!!! handleToolBarActions ' + event.key + ' / ' + event.value + ' not yet implemented');\n                        break;\n                    }\n                    break;\n                case 'pin':\n                    this.pinButtonClicked(event.value);\n                    break;\n                    \n                case 'rank':\n                    this.rankButtonClicked(event.value);\n                    break;\n                    \n                case 'export':\n                    switch(event.value){\n                        case 'excel':\n                            this.exportToExcel();\n                            break;\n                    }\n                    break;\n                    \n                case 'add-issue':\n                    this.addNewIssue();\n                    break;\n\n                default: \n                    //console.log('!!! handleToolBarActions ' + event.key + ' / ' + event.value + ' not yet implemented');\n                    break;\n            }\n    }\n    \n    private setGroups(fields: any[] = []) {\n        let cmp = this.getGridComponent();\n        if (cmp){\n            this.gridGroups.length = 0;\n            \n            for (let i = 0; i < fields.length; i++)\n                this.gridGroups.push({ cid: fields[i].id });\n                \n            //this.refreshRows();\n            cmp.updateLayout();\n            \n            this.removeDuplicates();\n\n            this.updateConfiguration();\n        }\n    }\n\n    private exportToExcel(){\n        let cmp = this.getGridComponent();\n        if (cmp){\n            let data = cmp.exportToCSV();\n            this.downloadCSV(data, 'grid');\n        }\n    }\n\n    private downloadCSV(data: any, fileName: string){\n        let blob = new Blob([data], { type: \"text/csv;charset=utf-8;\" });\n\n        let link = document.createElement(\"a\");\n        if (link.download !== undefined) {\n            let url = URL.createObjectURL(blob);\n            link.setAttribute(\"href\", url);\n            link.setAttribute(\"download\", this.generateFileName(fileName));\n\n            document.body.appendChild(link);\n            link.click();\n            document.body.removeChild(link);\n        }\n    }\n\n    private generateFileName(fileName: string): string {\n        let date = new Date();\n\n        return fileName + date.toLocaleDateString() + \"_\" +  date.toLocaleTimeString() + '.csv';\n    }\n    \n    ngOnDestroy() {\n        \n        this.issueService.observables.list.unsubscribe();\n        this.issueService.observables.view.unsubscribe();\n        this.preferences.unsubscribe();\n      }\n\n    ngAfterViewInit(){\n        let self = this;\n        \n        let retValue: Observable<ILocalStorage> = self.loadConfiguration();\n        retValue.subscribe(\n            (data) => {\n                if (data.layout){\n                    self.expandStatusList = data.expandStatusList;\n                    self.layoutMode = data.layout;\n                    self.showIssueDetails = self.layoutMode == 'grid-details' ? true : false;\n                }\n             }\n        );\n\n        self.updateAppSize();\n    }\n\n    private updateColumnDropDownList(flag?: boolean){\n        let dropDownList = this.columnDropDownList;\n        let list = this.columnList;\n\n        if (flag){\n            dropDownList = this.columnDropDownList2;\n            list = this.columnList2;\n        }\n\n\n        dropDownList.length = 0;\n\n        // Add all columns to dropdown list, except the one that holds the CheckBox or Add Column button\n        for (let j = 0; j < list.length; j++){\n            if (list[j].id != this.checkBoxColumnId && list[j].id != this.markerColumnId && list[j].id != this.handleColumnId && list[j].id != this.lastColumnId)\n                dropDownList.push(list[j]);\n        }\n    }\n\n    private getGridComponent(flag?: boolean){\n        return flag ? this.grid2 : this.grid1;\n    }\n    \n    // Add New Issue ---------------------------------------------------------------------\n    \n    public showNewIssuePanel: boolean = false;\n    public activeCellPanel: any = null;\n    public issuePanelSettings: any = {}\n    public hoverRow: any = null;\n    \n    private tempRow: any = null;\n    \n    getActiveProject(): any {\n        return this.envService && this.envService.data && this.envService.data.board && this.envService.data.board.location ?  this.envService.data.board.location.id : null;\n    }\n    \n    removeTemporaryRow(){\n        if (this.tempRow){\n            let cmp = this.getGridComponent();\n            if (cmp){\n                cmp.removeRow(this.tempRow);\n                cmp.updateLayout();                \n            }\n        }\n        \n        this.tempRow = null;\n    }\n    \n    onGridRowHover(e: any){\n        this.hoverRow = e.row;\n    }\n    \n    isAddNewIssueButtonAllowed(rowID: any){\n        let retValue: boolean = true;\n        if (this.hoverRow && this.hoverRow.id == rowID && this.hoverRow.rows && this.hoverRow.rows.length > 0)\n            retValue = this.getFirstRowIssue(this.hoverRow.rows) ? true : false;\n        \n        return retValue;\n    }\n    \n    private getFirstRowIssue(list: Array<any>){\n        let found: any = null;\n        \n        for (let i = 0; i < list.length; i++){\n            if (list[i].type == 'row'){\n                found = list[i];\n                break;\n            }\n        }\n        \n        return found;\n    }\n    \n    groupAddNewIssue(e: any, cell: any){\n        let self = this;\n\n        self.closeActivePanel();\n        \n        let cmp = self.getGridComponent();\n        if (cmp){\n            let row: any = self.getObjFromListById(cmp.getFullList(), cell.rid);\n            let groupCell = self.gridService.getCellByColumnId(row.cells, 2);\n            \n            if (row){\n                if (row.rows && row.rows.length > 0){\n                    cmp.selectedRow = self.getFirstRowIssue(row.rows);\n                    \n                    if (cmp.selectedRow.type == 'group')\n                        cmp.clearSelection();\n                    \n                    if (row.expanded == false){\n                        cmp.expand(row);\n                        \n                        setTimeout(function(){\n                             self.addNewIssue(groupCell);\n                        }, 250);\n                    }\n                    else\n                        self.addNewIssue(groupCell);\n                }\n            }\n        }\n        \n        e.stopPropagation();\n    }\n    \n    rowAddNewSubtask(e: any, cell: any){\n        let cmp = this.getGridComponent();\n        if (cmp){\n            let row: any = cmp.findRowById(cell.rid);\n            if (row && row.canSelect != false){\n                cmp.selectedRow = row;\n                this.addNewIssue(null, true);\n            }\n        }\n        \n        e.stopPropagation();\n    }\n\n    addNewIssue(parentCell?: any, checkSubtask?: boolean){\n        let self = this;\n\n        //self.showNewIssuePanel = false;\n        self.removeTemporaryRow();\n        \n        let cmp = self.getGridComponent();\n        if (cmp){\n            //cmp.updateLayout();\n            \n            let selRow = cmp.selectedRow;\n            // If the Grid is empty or there is no selected row, create a temporary row and show the new issue panel\n            if (this.gridGroups.length == 0){\n                if (!selRow){\n                    self.tempRow = {\n                        cells: [{ cid: 2 }]\n                    }\n                    \n                    /*if (parentCell)\n                        self.tempRow.cells.push({\n                            cid: parentCell.valueID,\n                            value: parentCell.value\n                        });*/\n\n                    cmp.insertRowAt(self.tempRow, 0);\n                    cmp.updateLayout();\n                    \n                    selRow = self.tempRow;\n                }\n            }\n         \n            setTimeout(function(){\n                if (selRow){\n                    self.activeCellPanel = cmp.getCellByColumnId(selRow.cells, 2);\n                    if (self.activeCellPanel){\n                        let result: Observable<any> = self.issueService.atlassian.getCreateIssueMeta();\n                        result.subscribe(\n                           (obj: any) => {\n                               if (obj.projects){\n                                   let projects: Array<any> = [];\n                                   let projectTypes: Array<any> = [];\n                                   \n                                   let projectIndex: number = 0;\n                                   let projectID: any = null;\n                                   let typeID: any = null;\n                                   let activeProjectID: any = self.getActiveProject();\n\n                                   for (let i = 0; i < obj.projects.length; i++){\n                                        projects.push({ id: obj.projects[i].id, iconUrl: obj.projects[i].avatarUrls['16x16'], text: obj.projects[i].name, types: obj.projects[i].issuetypes });\n    \n                                        if (!projectID && obj.projects[i].id == activeProjectID){\n                                            projectIndex = i;\n                                            projectID = obj.projects[i].id;\n                                        }\n                                   }\n\n                                  if (projectID && obj.projects[projectIndex].issuetypes){\n                                        for (let k = 0; k < obj.projects[projectIndex].issuetypes.length; k++){\n                                            let currentType: any = obj.projects[projectIndex].issuetypes[k];\n\n                                            projectTypes.push({ id: currentType.id, iconUrl: currentType.iconUrl, text: currentType.name });\n\n                                            if (k == 0) {\n                                                typeID = currentType.id;\n                                            }\n                                        }\n                                   }\n                                   \n                                   self.issuePanelSettings = {\n                                       adjustment: { top: -4, left: 4 },\n                                       appRef: self.appRef,\n                                       autoClose: false,\n                                       data: {\n                                           summary: '',\n                                           projects: projects,\n                                           types: projectTypes,\n                                           selProjectIndex: projectIndex,\n                                           selProjectID: projectID,\n                                           selTypeID: typeID\n                                       },\n                                       dropDownSize: { width: 322, height: 260 },\n                                       isSubtask: checkSubtask != undefined ? checkSubtask : false,\n                                       manual: true\n                                   }\n                                   \n                                   self.showNewIssuePanel = true;\n                                   self.changeRef.detectChanges();\n                               }\n                           },\n                           err => self.notificationService.create(err.message || err, null, 'error')\n                        ); \n                    }\n                }\n                \n            }, 250);\n        }\n    }\n    \n    newIssuePanelMouseDown(e: any){\n        e.stopPropagation();    \n    }\n    \n    onNewIssuePanelOpening(e: any){\n        let appRect = this.commonService.getPageRect(this.appElemRef.nativeElement);\n        this.issuePanelSettings.appSize = { width: appRect.width, height: appRect.height }\n    }\n    \n    onNewIssuePanelOpen(e: any){\n        \n    }\n    \n    onNewIssuePanelProjectSelectionChanged(e: any){\n        this.updateComboIssueTypes(e.index);\n    }\n    \n    onNewIssuePanelSubTaskChanged(e: any){\n        this.updateComboIssueTypes(this.issuePanelSettings.data.selProjectIndex);\n        \n        if (this.comboNewIssueTypeComp && this.issuePanelSettings.data.types.length > 0)\n            this.comboNewIssueTypeComp.selectedItem = this.issuePanelSettings.data.types[0];\n    }\n    \n    private updateComboIssueTypes(index: number){\n        if (index >= 0 && index < this.issuePanelSettings.data.projects.length){\n            let currentProject = this.issuePanelSettings.data.projects[index];\n            this.issuePanelSettings.data.selProjectID = currentProject.id;\n            this.issuePanelSettings.data.selProjectIndex = index;\n            \n            if (currentProject && currentProject.types){\n                this.issuePanelSettings.data.types.length = 0;\n                \n                for (let k = 0; k < currentProject.types.length; k++){\n                    let currentType: any = currentProject.types[k];\n\n                    if (!this.issuePanelSettings.isSubtask || (this.issuePanelSettings.isSubtask && currentType.subtask))\n                        this.issuePanelSettings.data.types.push({ id: currentType.id, iconUrl: currentType.iconUrl, text: currentType.name });\n                }\n            }\n        }\n    }\n    \n    onNewIssuePanelTypeSelectionChanged(e: any){\n        if (e.index >= 0 && e.index < this.issuePanelSettings.data.types.length){\n            let currentType = this.issuePanelSettings.data.types[e.index];\n            this.issuePanelSettings.data.selTypeID = currentType.id;\n        }\n    }\n    \n    public newRowID: any = null;\n    \n    onNewIssuePanelCreateClicked(){\n        let self = this;\n        \n        self.showNewIssuePanel = false;\n        self.removeTemporaryRow();\n        \n        if (self.issuePanelSettings.data.summary != ''){\n            let cmp = self.getGridComponent();\n            if (cmp){\n                let fieldNames: Array<any> =  ['summary', 'project', 'issuetype'];\n                let fieldValues: Array<any> = [ self.issuePanelSettings.data.summary, self.issuePanelSettings.data.selProjectID, self.issuePanelSettings.data.selTypeID ];\n    \n                let selRow = cmp.selectedRow;\n                if (selRow){\n                    if (self.issuePanelSettings.isSubtask){\n                        if (selRow.issue){\n                            fieldNames.push('parent');\n                            fieldValues.push(selRow.issue.id)\n                        }\n                    }\n                    else {\n                        self.dropFieldNames.length = 0;\n                        self.dropFieldValues.length = 0;\n                        self.dropFieldRemoveValues.length = 0;\n                        self.dropListIssues.length = 0;\n                        \n                        if (selRow.type == 'group')\n                            self.extractDataFromTargetGroup(selRow, cmp.getFullList());\n                        else\n                            self.extractDataFromTargetRow(selRow);\n                            \n                        fieldNames = fieldNames.concat(self.dropFieldNames);\n                        fieldValues = fieldValues.concat(self.dropFieldValues);\n                        \n                        //console.log(\"fieldNames: \", fieldNames);\n                        //console.log(\"fieldValues: \", fieldValues);\n                    }\n                }\n\n                let result: Observable<IAtlassianIssue> = self.issueService.atlassian.createIssue(fieldNames, fieldValues);\n                result.subscribe(\n                   (issueAtl: IAtlassianIssue) => {\n                        if (!self.issuePanelSettings.isSubtask){\n                            let relatedIssue = self.issueService.atlassian.find(issueAtl.id);\n                            if (relatedIssue){\n                                let newRow: any = self.createRow(relatedIssue);\n                                cmp.addRow(newRow);\n                                self.updateRowsFromIssue(relatedIssue);\n    \n                                cmp.scrollTo(newRow);\n                                \n                                this.newRowID = newRow.id;\n                                \n                                if (self.isRankButtonActive){\n                                    if (selRow){\n                                        let resultUpdate: Observable<void> = self.issueService.atlassian.updateRank(relatedIssue, selRow.issue, null);\n                                        result.subscribe(\n                                            () => {\n                                                self.updateGrids();\n                                            },\n                                            err => self.notificationService.create(err.message || err, null, 'error')\n                                        );\n                                   }\n                                }\n                            }\n\n                            self.updateGrids();\n                        }\n                   },\n                   err => self.notificationService.create(err.message || err, null, 'error')\n                );\n           }\n        }\n    }\n    \n    private updateGrids(){\n        let cmp: any = null;\n        \n        if (this.layoutMode == 'double'){\n            cmp = this.getGridComponent(true);\n            if (cmp)\n                cmp.updateLayout();\n        }\n        \n        cmp = this.getGridComponent();\n        if (cmp)\n            cmp.updateLayout();\n    }\n    \n    \n    onNewIssuePanelCancelClicked(){\n        this.showNewIssuePanel = false;\n        this.removeTemporaryRow();\n    }\n\n    onNewIssuePanelSwitchClicked(){\n        this.showNewIssuePanel = false;\n        this.removeTemporaryRow();\n        this.issueService.atlassian.createDialog();\n    }\n\n    private getNewIssuePanelElem(){\n        let found: ElementRef = null;\n        \n        let panelObj = this.getNewIssuePanel();\n        if (panelObj){\n            let elemList: Array<ElementRef> = this.newIssuePanelElems.toArray();\n            let list: Array<IntegralUIDropDown> = this.newIssuePanels.toArray();\n            let index = list.indexOf(panelObj);\n            \n            if (index >= 0 && index < elemList.length)\n                found = elemList[index];\n        }\n\n        return found;\n    }\n\n    private getNewIssuePanel(){\n        let found: IntegralUIDropDown = null;\n        \n        if (this.newIssuePanels){\n            let list: Array<IntegralUIDropDown> = this.newIssuePanels.toArray();\n    \n            if (list && list.length > 0)\n                found = list[0];\n        }\n\n        return found;\n    }\n    \n    // Cut/Copy from Toolbar -------------------------------------------------------------\n    \n    private cutList: Array<any> = [];\n    private rowFullList: Array<any> = [];\n \n    comparerByIndex = (first: any, second: any) => {\n        let x = first ? this.rowFullList.indexOf(first) : -1;\n        let y = second ? this.rowFullList.indexOf(second) : -1;\n\n        if (x > y)\n            return -1;\n        else if (x < y)\n            return 1;\n        else\n            return 0;\n    }\n    \n    private keepListInOrder(list: Array<any>){\n        let cmp = this.getGridComponent();\n        if (cmp){\n            this.rowFullList = cmp.getFullList();\n            \n            list.sort(this.comparerByIndex);\n        }\n    }\n    \n    private createCopies(key: string){\n        this.resetCellStatus();\n        \n        this.cutList.length = 0;\n        \n        let cmp = this.getGridComponent();\n        if (cmp){\n            let list: Array<any> = cmp.getList('selected');\n            \n            // Keep list of selected rows in order\n            this.keepListInOrder(list);\n\n            for (let i = 0; i < list.length; i++){\n                // Only allow Cut/Copy of rows, not groups\n                if (list[i].type != 'group' && list[i].allowCopy != false){\n                    // In case of COPY operation\n                    //let clone = cmp.cloneRow(list[i]);\n                \n                     // For CUT operation\n                    this.cutList.push(list[i]);\n                    \n                    // Update the status of cell marker (cut or copy icon)\n                    let cell = this.getCellById(list[i], this.markerColumnId);\n                    if (cell)\n                        cell.status = key;\n                }\n            }   \n        }\n    }  \n    \n    private resetCellStatus(flag?: boolean){\n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            let list: Array<any> = cmp.getList();\n            \n            for (let i = 0; i < list.length; i++){\n                let cell = this.getCellById(list[i], this.markerColumnId);\n                if (cell)\n                    cell.status = 'none';\n            }   \n        }\n    }\n    \n    // Paste from Toolbar ----------------------------------------------------------------\n    \n    getRowIndex(row: any){\n        let retValue: number = -1;\n        \n        let cmp = this.getGridComponent();\n        if (cmp){\n            let list = cmp.getList();\n            \n            retValue = list ? list.indexOf(row) : -1;\n            \n        }\n        \n        return retValue;\n    }\n    \n    pasteRows(): any {\n        let self = this;\n        \n        this.resetCellStatus();\n        \n        if (this.cutList.length > 0){\n            let cmp = this.getGridComponent();\n            \n            let targetRow = cmp.selectedRow;\n            \n            // Only proceed if the selected row doesn't belong to cut/copy list\n            if (cmp && targetRow && this.cutList.indexOf(targetRow) < 0){\n                let selRow = cmp.selectedRow;\n                let selIndex = -1;\n               \n                // UPDATE THE ISSUE FIELDS\n                if (this.gridGroups.length > 0){\n                    this.dropFieldNames.length = 0;\n                    this.dropFieldValues.length = 0;\n                    this.dropFieldRemoveValues.length = 0;\n                    this.dropListIssues.length = 0;\n\n                    this.sourceDropList = this.cutList;\n                    let dropList = this.cutList;\n                    \n                    // Cycle through all rows that are dropped and create issue list\n                    for (let i = 0; i < dropList.length; i++)\n                        this.dropListIssues.push(dropList[i].issue);\n\n                    this.targetDropObject = targetRow;\n\n                    let fullList = cmp.getFullList();\n\n                    if (this.isMultiValueGroupPresent()){\n                        this.resetDialogData();\n                        \n                        let targetGroup = null;\n                        if (targetRow.type == 'group')\n                            targetGroup = targetRow;\n                        else \n                            targetGroup = this.getParentGroup(targetRow.pid, fullList);\n\n                        if (targetGroup)\n                            this.addValueToDialogListFromGroup(targetGroup, fullList);\n\n                        // Add value to the dialog list from dropped rows\n                        for (let m = 0; m < dropList.length; m++){\n                            if (dropList[m].issue && dropList[m].issue.atlassian && dropList[m].issue.atlassian.fields){\n                                this.addValueToDialogList(dropList[m].issue.atlassian.fields.versions, this.versionsID);\n                                this.addValueToDialogList(dropList[m].issue.atlassian.fields.fixVersions, this.fixVersionsID);\n                                this.addValueToDialogList(dropList[m].issue.atlassian.fields.components, this.componentsID);\n                            }\n                        }\n                                \n                        this.openDialog();\n                        return;\n                    }\n                    else {\n                        if (targetRow.type == 'group')                     \n                            this.extractDataFromTargetGroup(targetRow, fullList);\n                        else\n                            this.extractDataFromTargetRow(targetRow);\n                    }\n\n                    //console.log(\"listIssues ----------- \", this.dropListIssues);\n                    //console.log(\"fieldNames ----------- \", this.dropFieldNames);\n                    //console.log(\"fieldValues ----------- \", this.dropFieldValues);\n                    //console.log(\"fieldRemoveValues ----------- \", this.dropFieldRemoveValues);\n                    \n                    this.updateServerData();\n                }\n                else\n                    this.updateGridOnPaste(cmp, selRow);\n            }\n        }\n    }\n    \n    private updateGridOnPaste(cmp: any, selRow: any){\n        cmp.suspendLayout();\n\n        // Remove row that is cut\n        for (let i = 0; i < this.cutList.length; i++)\n            cmp.removeRow(this.cutList[i]);\n            \n        let selIndex = this.getRowIndex(selRow) + 1;\n\n        // Add row to a new position\n        for (let i = 0; i < this.cutList.length; i++)\n            cmp.insertRowAt(this.cutList[i], selIndex);\n\n        cmp.resumeLayout();\n        \n        this.isBusy = false;\n    }\n    \n    // Expand / Collapse from Toolbar ----------------------------------------------------\n\n    private collapseGrid(){\n        let cmp = this.getGridComponent();\n        if (cmp){\n            cmp.collapse();\n            \n            // Confirm changes to the group's expand value\n            cmp.updateExpandStatus();\n            \n            this.currentExpandLevel = 'level-1';\n \n            // Save current configuration\n            this.updateConfiguration();\n        }\n    }\n\n    private expandGrid(value: string){\n        let cmp = this.getGridComponent();\n        if (cmp){\n            cmp.suspendLayout();\n\n            switch (value){\n                case 'level-1':\n                    cmp.collapse();\n                    break;\n                    \n                case 'level-2':\n                    this.collapseGroupsByLevel(1);\n                    break;\n                    \n                case 'level-3':\n                    this.collapseGroupsByLevel(2);\n                    break;\n                    \n                default:\n                    //cmp.expand();\n                    this.expandGroupsAndRows();\n                    break;\n            }\n            \n            // Confirm changes to the group's expand value\n            cmp.updateExpandStatus();\n\n            cmp.resumeLayout();\n            \n            this.currentExpandLevel = value;\n \n            // Save current configuration\n            this.updateConfiguration();\n        }\n    }\n    \n    private collapseGroupsByLevel(level: number){\n        let cmp = this.getGridComponent();\n        if (cmp){\n            let list = cmp.getFullList();\n            \n            for (let i = 0; i < list.length; i++){\n                let rowLevel = cmp.getRowLevel(list[i]);\n\n                list[i].expanded = rowLevel < level ? true : false;\n            }\n        }\n    }\n    \n    private expandGroupsAndRows(){\n        let cmp = this.getGridComponent();\n        if (cmp){\n            let list = cmp.getFullList();\n            \n            for (let i = 0; i < list.length; i++){\n                 list[i].expanded = list[i].collapseByDefault != true ? true : false;\n            }\n        }\n    }\n    \n    // Filtering -------------------------------------------------------------------------\n\n    public filterList: Array<any> = [];\n    public isPinActive: boolean = false;\n    public isSearchActive: boolean = false;\n    \n    private pinButtonClicked(value: boolean){\n        // This is required so that the grid rows set is swaped between filtered or normal state\n        // isPinActive must be set like it is, so that HTML gets updated\n        this.isPinActive = value;\n        this.isSearchActive = false;\n        \n        let cmp = this.getGridComponent();\n        if (cmp){\n            cmp.suspendLayout();\n               \n            if (value){\n                cmp.scrollPos({ x: 0, y: 0});\n                \n                this.filterList.length = 0;\n \n                let column = cmp.getColumnById(2);\n                if (column && cmp.selectedRow){\n                    switch (cmp.selectedRow.type){\n                        case 'group':\n                            this.addChildrenToFilterList(cmp.selectedRow);\n                            break;\n                                \n                        case 'row':\n                            this.filterList.push(cmp.selectedRow);\n                            break;\n                    }\n                }\n            }\n\n            cmp.resumeLayout();\n            \n            if (!value){\n                setTimeout(function(){\n                    cmp.collapse();\n                }, 100);\n            }\n        }\n    }\n\n    private addChildrenToFilterList(parent: any){\n        if (parent.type == 'row')\n            this.filterList.push(parent);\n        else {\n            let list: Array<any> = parent.rows;\n            if (list)\n                for (let i = 0; i < list.length; i++)\n                    this.addChildrenToFilterList(list[i]);\n        }\n    }\n\n    // Apply a filter based on selected column\n    filterBySearch(searchValue: string){\n        let self = this;\n        \n        this.isSearchActive = !this.isPinActive && (searchValue || searchValue != '') ? true : false;\n        \n        let cmp = this.getGridComponent();\n        if (cmp){\n            // Suspend the grid layout to increase performance during filtering operations\n            cmp.suspendLayout();\n            \n            if (this.isSearchActive){\n                cmp.clearSelection();\n                \n                // Reset the filter\n                this.filterList.length = 0;\n                   \n                // If there is a search text, apply the filter \n                    // Set the filtering operation to 'contains', using the '[]' operator\n                    // For 'begins with' operation use the '->' operator\n                    let conditions: any = { value: searchValue, operation: '[]' };\n\n                    for (let i = 0; i < this.rows.length; i++){\n                        let cell: any = cmp.getCellByColumnId(this.rows[i].cells, 2);\n                        \n                        if (this.filterService.match(cell.value, conditions, null, null, false))\n                            this.filterList.push(this.rows[i]);\n                    }\n            }\n\n            // Resume and update the grid layout\n            cmp.resumeLayout();\n        }\n    }\n\n    // Layout Configuration --------------------------------------------------------------\n\n    onSplitterMoved(e: any){\n        this.splitterDistance = e.value;\n    }\n\n    // Layout Changes --------------------------------------------------------------------\n\n    onPanel1SizeChanged(e: any){\n        this.firstGridSize.width = e.size.width - e.padding.left - e.padding.right - 2;\n        this.firstGridSize.height = e.size.height;// - 62;\n    }\n\n    onPanel2SizeChanged(e: any){\n        this.secondGridSize.width = e.size.width - e.padding.left - e.padding.right - 2;\n        this.secondGridSize.height = e.size.height; // - 62;\n    }\n\n    @HostListener('window:resize', ['$event'])\n    onResize(event) {\n        this.updateAppSize();\n    }\n\n    private updateAppSize(){\n        //OBSOLET: this.blockSize.height = window.innerHeight - this.mainToolElem.nativeElement.offsetHeight - 5;\n        this.blockSize.height = window.innerHeight - 120;\n    }\n\n    // Column Configuration --------------------------------------------------------------\n\n    onColumnConfigurationSelectionChanged(e: any){\n        // Changes the Grid view based on predefined set on columns\n        this.createView(e.index);\n    } \n\n    onColumnConfigurationSelectionChanged2(e: any){\n        // Changes the Grid view based on predefined set on columns (Second Grid)\n        this.createView(e.index, true);\n    } \n\n\n    private getObjFromListById(list: Array<any>, id: any){\n        let found: any = null;\n\n        if (list)\n            for (let j = 0; j < list.length; j++){\n                if (list[j].id == id){\n                    found = list[j]; \n                    break;\n                }\n            }\n\n        return found;\n    }\n\n    changeColumnConfiguration(index: any, flag?: boolean){\n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            let self = this;\n            \n            let tempColumns = flag ? this.columns2 : this.columns;\n            let tempColumnList = flag ? this.columnList2 : this.columnList;\n            \n            // Reset column visiblity\n            for (let j = 0; j < tempColumnList.length; j++)\n                tempColumnList[j].visible = false;\n    \n            let configList = self.columnConfigurationList[index].columns;\n            for (let j = 0; j < configList.length; j++){\n                let column = self.getObjFromListById(tempColumnList, configList[j]);\n                if (column)\n                    column.visible = true;\n            }\n    \n            cmp.updateLayout();\n        }\n    }\n    \n    createView(index: any, flag?: boolean, local?: boolean){\n        let self = this;\n\n        self.expandStatusList = [];\n        \n        let retValue: Observable<ILocalStorage> = self.loadConfiguration();\n        retValue.subscribe(\n            (data) => {\n                if (local && data.layout){\n                    self.expandStatusList = data.expandStatusList;\n                    self.layoutMode = data.layout;\n                    self.showIssueDetails = self.layoutMode == 'grid-details' ? true : false;\n                }\n                    \n                self.InitFromLocalStorageFirstGrid(data, index, local, false);\n                \n                //if (self.layoutMode == 'double')\n                setTimeout(function(){\n                    self.InitFromLocalStorageSecondGrid(data, index, local, true);\n                }, 100);\n            }\n        );\n    }\n    \n    private InitFromLocalStorageFirstGrid(data: any, index: any, local?: boolean, flag?: boolean){\n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            let self = this;\n            let tempColumns = self.columns;\n            let tempColumnList = self.columnList;\n            let tempConfigList = [];\n    \n            //let configList = self.columnConfigurationList[index].columns;\n            //for (let j = 0; j < configList.length; j++)\n                //tempConfigList.push(configList[j]);\n    \n            if (local){\n                 // Set groups from local storage\n                if (data.isGrouping && data.groups && data.groups.length > 0){\n                    self.gridGroups.length = 0;\n                    for (let j = 0; j < data.groups.length; j++)\n                        self.gridGroups.push(data.groups[j]);\n                }\n                \n                // Reset column visiblity\n                for (let j = 0; j < tempColumnList.length; j++)\n                    tempColumnList[j].visible = false;\n\n                // Load columns from local storage\n                if (data.columnOrder && data.columnOrder.length > 0){\n                    tempConfigList.length = 0;\n                \n                    for (let j = 0; j < data.columnOrder.length; j++){\n                        let column = self.getObjFromListById(tempColumnList, data.columnOrder[j]);\n                        let columnStored = self.getObjFromListById(data.columns, data.columnOrder[j]);\n\n                        if (column && columnStored){\n                            column.headerText = columnStored.headerText;\n                            column.visible = columnStored.visible;\n                            column.width = columnStored.width;\n                            \n                            if (columnStored.aggregationType){\n                                column.aggregationType = columnStored.aggregationType;\n                                column.aggregation = this.gridService.getAggregation(columnStored.aggregationType);\n                            }\n                                \n                            if (column.visible != false)\n                                tempConfigList.push(column.id);\n                        }\n                    }\n                }\n                else //no columns are set manually\n                {\n                    this.changeColumnConfiguration(0);\n                }\n            }\n            \n            // Update visiblity of loaded columns\n            //for (let j = 0; j < tempColumnList.length; j++)\n                //tempColumnList[j].visible = tempConfigList.indexOf(tempColumnList[j].id) >= 0 || tempColumnList[j].id >= 90 ? true : false;\n    \n    \n            // Based on current configuration, load columns\n            tempColumns.length = 0;\n    \n            for (let j = 0; j < tempColumnList.length; j++){\n                let column = tempColumnList[j]; //self.getObjFromListById(tempColumnList, tempConfigList[j]);\n                if (column)\n                    tempColumns.push(column);\n            }\n   \n            // Based on current configuration, load columns\n            //tempColumns.length = 0;\n    \n            //for (let j = 0; j < tempConfigList.length; j++){\n                //let column = self.getObjFromListById(tempColumnList, tempConfigList[j]);\n                //if (column)\n                    //tempColumns.push(column);\n            //}\n            \n             self.updateColumnDropDownList();\n    \n            cmp.updateLayout();\n            \n            if (local){\n                // Set expand level from local storage\n                /*switch (data.expandLevel){\n                    case 'level-1':\n                        cmp.collapse();\n                        break;\n                        \n                    case 'level-2':\n                        self.collapseGroupsByLevel(1);\n                        cmp.updateLayout();\n                        break;\n                        \n                    case 'level-3':\n                        self.collapseGroupsByLevel(2);\n                        cmp.updateLayout();\n                        break;\n                        \n                    default:\n                         //cmp.expand();\n                        this.expandGroupsAndRows();\n                        break;\n                }\n                \n                // Confirm changes to the group's expand value\n                cmp.updateExpandStatus();*/\n                \n                // Apply sorting from local storage\n                if (data.sortColumnID > 0 && data.sortColumnID != 2){\n                    let column = self.getObjFromListById(tempColumnList, data.sortColumnID);\n                    self.sortColumn = column ? column : null;\n                    self.sorting = data.sortOrder ? data.sortOrder : IntegralUISortOrder.Ascending;\n                }\n    \n                // Apply ranking from local storage\n                self.isRankButtonActive = data.isRankButtonActive != undefined ? data.isRankButtonActive : false;\n                \n                // Select rows from local storage\n                if (data.selectedRows && data.selectedRows.length > 0)\n                    cmp.selectRows(data.selectedRows);\n            }\n            \n            self.isRankButtonActive = self.envService && self.envService.data && self.envService.data.board.ranking ? self.isRankButtonActive : false;\n            \n            if (!self.isRankButtonActive && !self.sortColumn){\n                self.sortColumn = cmp.getColumnById(2);\n                self.sorting = IntegralUISortOrder.Ascending;\n            }\n\n            self.applySorting();\n        }\n    }\n    \n    private InitFromLocalStorageSecondGrid(data: any, index: any, local?: boolean, flag?: boolean){\n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            let self = this;\n            let tempColumns = self.columns2;\n            let tempColumnList = self.columnList2;\n            let tempConfigList = [];\n    \n            //let configList = self.columnConfigurationList[index].columns;\n            //for (let j = 0; j < configList.length; j++)\n                //tempConfigList.push(configList[j]);\n    \n            if (local){\n                 // Set groups from local storage\n                if (data.isGrouping && data.groups2 && data.groups2.length > 0){\n                    self.gridGroups2.length = 0;\n                    for (let j = 0; j < data.groups2.length; j++)\n                        self.gridGroups2.push(data.groups2[j]);\n                }\n                \n                // Reset column visiblity\n                for (let j = 0; j < tempColumnList.length; j++)\n                    tempColumnList[j].visible = false;\n                \n                // Load columns from local storage\n                if (data.columnOrder2 && data.columnOrder2.length > 0){\n                    tempConfigList.length = 0;\n                \n                    for (let j = 0; j < data.columnOrder2.length; j++){\n                        let column = self.getObjFromListById(tempColumnList, data.columnOrder2[j]);\n                        let columnStored = self.getObjFromListById(data.columns2, data.columnOrder2[j]);\n                        \n                        if (column && columnStored){\n                            column.headerText = columnStored.headerText;\n                            column.visible = columnStored.visible;\n                            column.width = columnStored.width;\n                            \n                            if (columnStored.aggregationType){\n                                column.aggregationType = columnStored.aggregationType;\n                                column.aggregation = this.gridService.getAggregation(columnStored.aggregationType);\n                            }\n                            \n                            if (column.visible != false)\n                                tempConfigList.push(column.id);\n                        }\n                    }\n                }\n            }\n            \n            // Update visiblity of loaded columns\n            //for (let j = 0; j < tempColumnList.length; j++)\n                //tempColumnList[j].visible = tempConfigList.indexOf(tempColumnList[j].id) >= 0 || tempColumnList[j].id >= 90 ? true : false;\n    \n            // Based on current configuration, load columns\n            tempColumns.length = 0;\n    \n            for (let j = 0; j < tempColumnList.length; j++){\n                let column = tempColumnList[j]; //self.getObjFromListById(tempColumnList, tempConfigList[j]);\n                if (column)\n                    tempColumns.push(column);\n            }\n            \n            self.updateColumnDropDownList(true);\n    \n            cmp.updateLayout();\n            \n            if (local){\n                // Apply sorting from local storage\n                if (data.sortColumnID2 > 0 && data.sortColumnID2 != 2){\n                    let column = self.getObjFromListById(tempColumnList, data.sortColumnID2);\n                    self.sortColumn2 = column ? column : null;\n                    self.sorting2 = data.sortOrder2 ? data.sortOrder2 : IntegralUISortOrder.Ascending;\n                }\n            }\n            \n            if (!self.sortColumn2){\n                self.sortColumn2 = cmp.getColumnById(2);\n                self.sorting2 = IntegralUISortOrder.Ascending;\n            }\n    \n            self.applySorting(true);\n        }\n    }\n\n    private updateConfiguration(flag?: boolean){\n        let cmp = this.getGridComponent();\n        if (cmp){\n            this.saveConfiguration({ \n                columns: this.getColumnList(), \n                columns2: this.getColumnList(true), \n                columnOrder: this.getColumnOrder(),\n                columnOrder2: this.getColumnOrder(true),\n                expandLevel: this.currentExpandLevel, \n                expandStatusList: this.createExpandStatusList(),\n                groups: this.gridGroups, \n                groups2: this.gridGroups2, \n                isGrouping: true, \n                isRankButtonActive: this.isRankButtonActive, \n                layout: this.layoutMode,\n                selectedRows: [], //cmp.getList('selected'), \n                sortColumnID: this.sortColumn ? this.sortColumn.id : -1, \n                sortColumnID2: this.sortColumn2 ? this.sortColumn2.id : -1, \n                sortOrder: this.sorting,\n                sortOrder2: this.sorting2\n            });\n        }\n    }\n    \n    private getColumnList(flag?: boolean){\n        let list: Array<any> = [];\n        \n        let tempColumns = flag ? this.columns2 : this.columns;\n\n        for (let j = 0; j < tempColumns.length; j++){\n            // Add only visible columns\n            //if (tempColumns[j].visible != false){\n                let columnObj: any = {}\n                \n                if (tempColumns[j].id != undefined)\n                    columnObj.id = tempColumns[j].id;\n                 \n                if (tempColumns[j].headerText != undefined)\n                    columnObj.headerText = tempColumns[j].headerText;\n               \n                if (tempColumns[j].allowDrag != undefined)\n                    columnObj.allowDrag = tempColumns[j].allowDrag;\n               \n                if (tempColumns[j].allowDrop != undefined)\n                    columnObj.allowDrop = tempColumns[j].allowDrop;\n               \n                if (tempColumns[j].allowGrouping != undefined)\n                    columnObj.allowGrouping = tempColumns[j].allowGrouping;\n                \n                if (tempColumns[j].allowResize != undefined)\n                    columnObj.allowResize = tempColumns[j].allowResize;\n                \n                if (tempColumns[j].contentAlignment != undefined)\n                    columnObj.contentAlignment = tempColumns[j].contentAlignment;\n                \n                if (tempColumns[j].fixedWidth != undefined)\n                    columnObj.fixedWidth = tempColumns[j].fixedWidth;\n                \n                if (tempColumns[j].headerAlignment != undefined)\n                    columnObj.headerAlignment = tempColumns[j].headerAlignment;\n                \n                if (tempColumns[j].minWidth != undefined)\n                    columnObj.minWidth = tempColumns[j].minWidth;\n                \n                if (tempColumns[j].headerText != undefined)\n                    columnObj.headerText = tempColumns[j].headerText;\n                \n                if (tempColumns[j].visible != undefined)\n                    columnObj.visible = tempColumns[j].visible;\n                \n                if (tempColumns[j].width != undefined)\n                    columnObj.width = tempColumns[j].width;\n                \n                if (tempColumns[j].aggregationType != undefined)\n                    columnObj.aggregationType = tempColumns[j].aggregationType;\n\n                //if (tempColumns[j].dropdown != undefined){\n                    //columnObj.dropdown = tempColumns[j].dropdown;\n                    //columnObj.dropdown.appRef = null;\n                //}\n\n                list.push(columnObj);     \n            //}\n        }  \n        \n        return list;\n    }\n\n    private getColumnOrder(flag?: boolean){\n        let list: Array<any> = [];\n        \n        let tempColumns = flag ? this.columns2 : this.columns;\n        \n        for (let j = 0; j < tempColumns.length; j++){\n            if (tempColumns[j].visible != false)\n                list.push(tempColumns[j].id);\n        }  \n        \n        return list;\n    }\n    \n    private saveConfiguration(data: any){\n        let self = this;\n        let dataConfig: ILocalStorage = {\n            columns: data.columns ? data.columns : [],\n            columns2: data.columns2 ? data.columns2 : [],\n            columnOrder: data.columnOrder ? data.columnOrder : [],\n            columnOrder2: data.columnOrder2 ? data.columnOrder2 : [],\n            groups: data.groups ? data.groups : [],\n            groups2: data.groups2 ? data.groups2 : [],\n            expandLevel: data.expandLevel,\n            expandStatusList: data.expandStatusList,\n            isGrouping: data.isGrouping != undefined ? data.isGrouping : true,\n            isRankButtonActive: data.isRankButtonActive != undefined ? data.isRankButtonActive : false,\n            layout: data.layout,\n            selectedRows: data.selectedRows ? data.selectedRows : [],\n            sortColumnID: data.sortColumnID,\n            sortColumnID2: data.sortColumnID2,\n            sortOrder: data.sortOrder,\n            sortOrder2: data.sortOrder2\n        }\n\n        let retValue: Observable<boolean> = this.storageService.setData(this.storageKey, dataConfig);\n        retValue.subscribe((x) => self.configChanged.emit({ data: dataConfig }) );\n    }\n\n    private loadConfiguration(): Observable<ILocalStorage> {\n        return this.storageService.getData(this.storageKey);\n    }\n\n    onColumnConfigurationOpening(e: any){\n        this.closeActivePanel();\n    }\n\n    // CheckBox Cell ---------------------------------------------------------------------\n\n    checkBoxClicked(e: any, cell: any, flag?: boolean){\n        if (cell){\n            let cmp = this.getGridComponent(flag);\n            if (cmp){\n                let currentValue = cell.value == true ? true : false;\n                cell.value = !currentValue;\n\n                let row = cmp.findRowById(cell.rid);\n                if (row){\n                    // Get a list of all selected rows\n                    let list = cmp.getList('selected');\n                    // Create a new list to avoid cyclic redundancy error\n                    let newList = [];\n\n                    // If checkbox is checked, add the new row to the list of selected rows\n                    if (cell.value){\n                        for (let i = 0; i < list.length; i++)\n                            newList.push(list[i]);\n\n                        newList.push(row);\n                    }\n                    // If checkbox is unchecked, remove the selection flag from the row and skip the row during creation of selected rows list\n                    else {\n                        row.selected = false;\n\n                        for (let i = 0; i < list.length; i++){\n                            if (list[i] != row)\n                                newList.push(list[i]);\n                        }\n                    }\n\n                    cmp.selectRows(newList);\n                }\n            }\n\n            e.stopPropagation();\n        }\n    }\n\n    checkBoxMouseUp(e: any){\n        e.stopPropagation();\n    }\n\n\n    // Column DropDown Panel -------------------------------------------------------------\n\n    onColumnDropDownPanelOpening(e: any, column: any, flag?: boolean){\n        this.closeActivePanel();\n\n        let appRect = this.commonService.getPageRect(this.appElemRef.nativeElement);\n\n        let elem = this.getColumnPanelElem(column.id);\n        if (elem){\n            let elemRect = this.commonService.getPageRect(elem.nativeElement);\n\n            if (elemRect.left + 332 > appRect.left + appRect.width)\n                column.dropdown.adjustment = { top: -4, left: elemRect.width - 332 };\n        }\n        \n        if (column.id == 21 && column.icons)\n            for (let i = 0; i < column.icons.length; i++)\n                column.icons[i].checked = column.icons[i].checkedConfirmed != undefined ? column.icons[i].checkedConfirmed : true;\n    }\n\n    onColumnDropDownPanelOpen(e: any, column: any, flag?: boolean){\n        let cmp = this.getGridComponent(flag);\n        if (cmp)\n            cmp.selectedColumn = column;\n        \n        this.isColumnDropDownPanelOpen = true;\n        this.activeColumn = column;\n\n        this.columnPanelOptions.name = this.activeColumn.headerText;\n\n        if (column && column.aggregationType)\n            this.columnPanelOptions.aggregationType = this.activeColumn.aggregationType;\n    }\n\n    columnDropDownPanelMouseDown(e: any){\n        e.stopPropagation();\n    }\n\n    columnDropDownPanelMouseUp(e: any){\n        e.stopPropagation();\n    }\n\n    onColumnDropDownComboSelectionChanged(e: any){\n        // Specific action related to selected combo option\n        switch (e.index){\n            default:\n                break;\n        }\n    } \n\n    columnDropDownPanelOK(column: any){\n        if (this.activeColumn){\n            this.activeColumn.headerText = this.columnPanelOptions.name;\n            \n            if (this.activeColumn.id == 21 && this.activeColumn.icons)\n                for (let i = 0; i < this.activeColumn.icons.length; i++)\n                    this.activeColumn.icons[i].checkedConfirmed = this.activeColumn.icons[i].checked != undefined ? this.activeColumn.icons[i].checked : true;\n                    \n            if (this.activeColumn && this.activeColumn.aggregationType){\n                this.activeColumn.aggregationType = this.columnPanelOptions.aggregationType;\n                this.activeColumn.aggregation = this.gridService.getAggregation(this.activeColumn.aggregationType);\n                \n                let cmp = this.getGridComponent();\n                if (cmp)\n                    cmp.updateLayout();\n             }\n               \n            this.updateConfiguration();\n        }\n\n        this.closeActivePanel();\n    }\n\n    columnDropDownPanelCancel(){\n        this.closeActivePanel();\n    }\n\n    columnDropDownPanelDelete(column: any, flag?: boolean){\n        this.closeActivePanel();\n\n        column.visible = false;\n\n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            //cmp.removeColumn(column);\n            cmp.updateLayout();\n        }\n\n        this.updateColumnDropDownList(flag);\n                    \n        this.updateConfiguration();\n    }\n\n    private getColumnPanel(id: any){\n        let found: IntegralUIDropDown = null;\n        let list: Array<IntegralUIDropDown> = this.columnPanels.toArray();\n\n        for (let j = 0; j < list.length; j++){\n            if (list[j].settings.id == id){\n                found = list[j];\n                break;\n            }\n        }\n\n        return found;\n    }\n\n    private getColumnPanelElem(id: any){\n        let found: ElementRef = null;\n        \n        let panelObj = this.getColumnPanel(id);\n        if (panelObj){\n            let elemList: Array<ElementRef> = this.columnPanelElems.toArray();\n            let list: Array<IntegralUIDropDown> = this.columnPanels.toArray();\n            let index = list.indexOf(panelObj);\n            \n            if (index >= 0 && index < elemList.length)\n                found = elemList[index];\n        }\n\n        return found;\n    }\n\n    private closeActivePanel(){\n        if (this.activeColumn){\n            let currentPanel: IntegralUIDropDown = this.getColumnPanel(this.activeColumn.id);\n            if (currentPanel)\n                currentPanel.close();\n        }\n\n        this.activeColumn = null;\n        this.isColumnDropDownPanelOpen = false;\n        \n        let currentNewIssuePanel: IntegralUIDropDown = this.getNewIssuePanel();\n        if (currentNewIssuePanel)\n            currentNewIssuePanel.close();\n       \n        if (this.showNewIssuePanel)\n            this.removeTemporaryRow();\n    \n        this.activeCellPanel = null;\n        this.showNewIssuePanel = false;\n     }\n\n    @HostListener('mousedown', ['$event']) onMouseDown(e: any){\n        this.closeActivePanel();\n    }\n\n\n    onIconsPanelItemChecked(item: any){\n        item.checked = item.checked != undefined ? !item.checked : true;    \n    }\n    \n    isIconAllowed(id: any, flag?: boolean){\n        let retValue: boolean = true;\n        \n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            let column = cmp.getColumnById(21);\n            \n            if (column && column.icons){\n                for (let i = 0; i < column.icons.length; i++){\n                    if (column.icons[i].id == id){\n                        retValue = column.icons[i].checkedConfirmed != undefined ? column.icons[i].checkedConfirmed : true;\n                        break;\n                    }\n                }\n            }\n        }\n        \n        return retValue;\n    }\n    \n    // Column DropDown List --------------------------------------------------------------\n\n    private isItemSelected: boolean = false;\n\n    // Prevent clicks in the list scrollbar area to close the dropdown window\n    listMouseDown(e: any){\n        if (!this.isItemSelected)\n            e.stopPropagation();\n    }\n\n    private isIndexinRange(index: number, list: Array<any>){\n        return index >= 0 && index < list.length ? true : false;\n    }\n    \n    private moveObject(from: number, to: number, list: Array<any>){\n        if (this.isIndexinRange(from, list) && this.isIndexinRange(to, list))\n            list.splice(to, 0, list.splice(from, 1)[0]);\n    }\n\n    addColumnFromList(item: any, flag?: boolean){\n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            let list = flag ? this.columnList2 : this.columnList;\n            let colIndex = list.indexOf(item);\n\n            //let columnWithTool = cmp.getColumnById(this.lastColumnId);\n            //let lastIndex = columnWithTool ? list.indexOf(columnWithTool) - 1 : -1;\n            \n            if (colIndex >= 0){ // && lastIndex >= 0){\n                item.visible = item.visible != undefined ? !item.visible : true;\n                \n                if (item.visible){\n                    if (cmp.columns.indexOf(item) < 0)\n                        cmp.insertColumnBefore(item, list[list.length-1]);\n                }\n                else \n                    cmp.removeColumn(item);\n\n                cmp.updateLayout();\n            }\n        }\n\n        this.isItemSelected = true;\n \n        // Save current configuration\n        this.updateConfiguration(flag);\n    }\n    \n    onAddColumnOpening(e: any){\n        this.closeActivePanel();\n    }\n    \n    onDropDownOpen(e: any){\n        this.isItemSelected = false;\n    }\n\n    // HTTP Get Data from JSON file ------------------------------------------------------\n\n    private serverData: Array<IIssue> = [];\n    \n    private addData(data: IIssue[], flag?: boolean){\n        this.serverData = data;\n       \n        this.refreshRows(flag);\n        if (this.layoutMode == 'double')\n            this.refreshRows(true);\n    }\n    \n    private refreshRows(flag?: boolean){\n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            cmp.clearRows();\n            cmp.updateLayout();\n\n            this.convertDataToRows(this.serverData, flag);\n            \n            this.removeDuplicates(flag);\n            \n            //this.loadExpandLevel(flag);\n            \n            this.restoreGroupExpandStatus();\n        }\n    }\n    \n    private restoreGroupExpandStatus(){\n        let cmp = this.getGridComponent();\n        if (cmp){\n            let self = this;\n            \n            let groupExpStatusTimeout = setTimeout(function(){\n               let list = cmp.getFullList();\n                \n                cmp.suspendLayout();\n                \n                for (let i = 0; i < list.length; i++){\n                    if (list[i].type == 'group'){\n                        let expandStatus = self.getRowExpandStatus(self.expandStatusList, list[i].id);\n                        list[i].expanded = expandStatus;\n                    }\n                }\n                \n                cmp.updateExpandStatus();\n                cmp.resumeLayout();\n\n                clearTimeout(groupExpStatusTimeout);\n            }, 100);\n        }\n    }\n    \n    private loadExpandLevel(flag?: boolean){\n        let self = this;\n        \n        let expLevelTimeout = setTimeout(function(){\n            let cmp = self.getGridComponent(flag);\n            if (cmp){\n                let retValue: Observable<ILocalStorage> = self.loadConfiguration();\n                retValue.subscribe(\n                    (data) => {\n                        cmp.suspendLayout();\n\n                        // Set expand level from local storage\n                        switch (data.expandLevel){\n                            case 'level-1':\n                                cmp.collapse();\n                                break;\n                                \n                            case 'level-2':\n                                self.collapseGroupsByLevel(1);\n                                break;\n                                \n                            case 'level-3':\n                                self.collapseGroupsByLevel(2);\n                                break;\n                                \n                            default:\n                                //cmp.expand();\n                                self.expandGroupsAndRows();\n                                break;\n                        }\n                         \n                        // Confirm changes to the group's expand value\n                        cmp.updateExpandStatus();\n                        \n                        cmp.resumeLayout();\n                    }\n                );\n            }\n    \n            clearTimeout(expLevelTimeout);\n        }, 100);\n    }\n    \n    private extractData(res: Response){\n        let obj = res.json();\n\n        return obj || { };\n    }\n\n    private handleError(error: Response | any) {\n        let errMsg: string;\n        if (error instanceof Response) {\n            const body = error.json() || '';\n            const err = body.error || JSON.stringify(body);\n            errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n        }\n        else \n            errMsg = error.message ? error.message : error.toString();\n\n        console.error(errMsg);\n\n        return Observable.throw(errMsg);\n    }\n\n    // Expand/Collapse Status ------------------------------------------------------------\n\n    private createExpandStatusList(){\n        let result: Array<any> = [];\n        \n        let cmp = this.getGridComponent();\n        if (cmp){\n            cmp.updateFullList();\n            \n            let list: Array<any> = cmp.getFullList();\n            \n            for (let i = 0; i < list.length; i++){\n                if (list[i].rows && list[i].rows.length > 0 && !list[i].isFolder && !list[i].isChild){\n                    let obj: any = {\n                        id: list[i].issue ? list[i].issue.key : list[i].id,\n                        expanded: list[i].expanded != undefined ? list[i].expanded : true\n                    }\n                    \n                    /*if (list[i].type == 'row'){\n                        for (let k = 0; k < list[i].rows.length; k++){\n                            let currentChildRow: any = list[i].rows[k];\n                            obj[currentChildRow.text] = currentChildRow.expanded != undefined ? currentChildRow.expanded : true;\n                            \n                            if (currentChildRow.text == 'IssueLinks' && currentChildRow.rows && currentChildRow.rows.length > 0)\n                                for (let m = 0; m < currentChildRow.rows.length; m++)\n                                    obj[currentChildRow.rows[m].text] = currentChildRow.rows[m].expanded != undefined ? currentChildRow.rows[m].expanded : true;\n                         }\n                    }*/\n                    \n                    result.push(obj);\n                }\n             }\n        }        \n        \n        return result;\n    }\n    \n    private getRowExpandStatus(list: Array<any>, id: any, name?: string){\n        let cmp = this.getGridComponent();\n        if (cmp){\n            let obj: any = this.getObjFromListById(list, id);\n            \n            if (name)\n                return obj ? obj[name] : false;\n            else\n                return obj ? obj.expanded : true;\n        }\n        \n        return true;\n    }\n\n    // Convert Data to Rows --------------------------------------------------------------\n\n    private createListFromFieldValue(list: Array<any>, id: any){\n        let result: Array<any> = [];\n        \n        if (list && list.length > 0){\n            for (let i = 0; i < list.length; i++)\n                result.push({\n                    id: id,\n                    value: list[i]\n                });\n        }\n        else \n            result.push({\n                id: id,\n                value: [] //{ name: 'Other' }\n            });        \n        \n        return result;\n    }\n    \n    private getValuesFromIssue(issue: IIssue, id: any){\n        let retValue: Array<any> = [];\n        \n        switch (id){\n            case this.versionsID:\n                if (issue.atlassian.fields.versions && Array.isArray(issue.atlassian.fields.versions))\n                    return this.createListFromFieldValue(issue.atlassian.fields.versions, id);\n                break;\n            case this.fixVersionsID:\n                if (issue.atlassian.fields.fixVersions && Array.isArray(issue.atlassian.fields.fixVersions))\n                    return this.createListFromFieldValue(issue.atlassian.fields.fixVersions, id);\n                break;\n            case this.componentsID:\n                if (issue.atlassian.fields.components && Array.isArray(issue.atlassian.fields.components))\n                    return this.createListFromFieldValue(issue.atlassian.fields.components, id);\n                break;\n        }\n        \n        return retValue;\n    }\n \n    private cartesian(list: Array<any>) {\n        let r: Array<any> = [];\n        let max: number = list.length-1;\n        \n        function helper(arr, i) {\n            for (let j=0, l=list[i].length; j<l; j++) {\n                let a = arr.slice(0); // clone arr\n                a.push(list[i][j]);\n                if (i==max)\n                    r.push(a);\n                else\n                    helper(a, i+1);\n            }\n        }\n        \n        helper([], 0);\n        \n        return r;\n    }\n\n    private createPermutations(issue: IIssue, flag?: boolean){\n        let permutations: Array<any> = [];\n        \n        let tempGroups = flag ? this.gridGroups2 : this.gridGroups;\n        \n        if (tempGroups.length > 0){\n            let multiValueGroups: Array<any> = [];\n            \n            for (let j = 0; j < tempGroups.length; j++){\n                if (tempGroups[j].cid == this.versionsID || tempGroups[j].cid == this.fixVersionsID || tempGroups[j].cid == this.componentsID)\n                    multiValueGroups.push(tempGroups[j]);\n            }\n\n            if (multiValueGroups.length > 0){\n                let values: Array<any> = [];\n                \n                for (let i = 0; i < multiValueGroups.length; i++)\n                    values.push(this.getValuesFromIssue(issue, multiValueGroups[i].cid));\n    \n                permutations = this.cartesian(values);\n            }\n        }\n        \n        return permutations;\n    }\n    \n    private convertDataToRows(data: IIssue[], flag?: boolean){\n        if (data){\n            let list = flag ? this.rows2 : this.rows;\n\n            for (let i = 0; i < data.length; i++){\n                let currentIssue: IIssue = data[i];\n\n                let permutations = this.createPermutations(currentIssue, flag);\n                if (permutations.length > 0){\n                    for (let i = 0; i < permutations.length; i++)\n                        list.push(this.createRow(currentIssue, permutations[i]));\n                }\n                else \n                    list.push(this.createRow(currentIssue));\n            }\n        }\n    }\n\n    private groupListByRows: Array<any> = [];\n    \n    private removeDuplicates(flag?: boolean){\n        this.groupListByRows.length = 0;\n            \n        let list = flag ? this.rows2 : this.rows;\n         \n        for (let i = 0; i < list.length; i++)\n            this.addGroupFromRow(list[i]);\n\n        for (let i = 0; i < list.length; i++)\n            list[i].tagHide = list[i].issue && this.findObjInList(this.groupListByRows, 'value', list[i].issue.key) ? true : false;\n    }\n    \n    private findObjInList(list: Array<any>, fieldName: string, value: any){\n        return list.find(item => item[fieldName] == value) || null;\n    }\n    \n    private addGroupFromRow(row: any){\n        for (let j = 0; j < this.gridGroups.length; j++){\n            let groupID = this.gridGroups[j].cid;\n            let schemaType = this.gridService.getSchemaTypeByID(this.fieldList, groupID);\n            \n             if (schemaType == 'issue-key'){\n                let cell = this.gridService.getCellByColumnId(row.cells, groupID);\n                \n                if (cell && !this.findObjInList(this.groupListByRows, 'value', cell.value))\n                    this.groupListByRows.push({ value: cell.value });\n            }\n        }\n    }\n    \n    private isGroupPresent(value: any){\n        let found: boolean = false;\n        \n        for (let i = 0; i < this.gridGroups.length; i++){\n            if (this.gridGroups[i].cid == value){\n               found = true;\n               break;\n            }\n        }\n       \n       return found;\n    }\n\n    private createCellFromValue(obj: any, fieldID: any, fieldValue: any, linkColor?: string){\n        //let cell: IUITreeGridCell = {\n        let cell: any = {\n            cid: fieldID,\n            displayValue: null,\n            editText: '',\n            fieldName: this.gridService.getFieldNameByID(this.fieldList, fieldID),\n            linkColor: linkColor,\n            tag: obj,\n            text: '',\n            multiValue: fieldValue,\n            value: obj ? obj : 'Other'\n        }\n\n        cell.text = this.gridService.getCellValue(cell.cid, obj);\n        cell.displayValue = cell.text;\n\n        return cell;\n    }\n\n\n    private isThereSubTasks(issue: IIssue){\n        return issue.atlassian && issue.atlassian.fields && issue.atlassian.fields.subtasks && issue.atlassian.fields.subtasks.length > 0 ? true : false;\n    }\n\n    private isThereIssueLinks(issue: IIssue){\n        return issue.atlassian && issue.atlassian.fields && issue.atlassian.fields.issuelinks && issue.atlassian.fields.issuelinks.length > 0 ? true : false;\n    }\n    \n    private createEpicLinkCell(issue: IIssue){\n        let cell: any = {\n            cid: this.epicColumnId,\n            displayValue: '',\n            editText: '',\n            fieldName: this.gridService.getFieldNameByID(this.fieldList, this.epicColumnId),\n            linkColor: issue.links && issue.links.parent && issue.links.parent.colorKey ? issue.links.parent.colorKey : '',\n            tag: null,\n            text: '',\n            value: 'Other'\n        }\n \n        if (issue.links && issue.links.parent){\n            cell.tag = issue.links.parent;\n            cell.value = cell.tag.name ? cell.tag.name : cell.tag.key;\n            cell.text = cell.value;\n            cell.displayValue = cell.text;\n        }\n\n        return cell;        \n    }\n\n    private createRow(issue: IIssue, currentPermutation?: Array<any>){\n        //let row: IUITreeGridRow = {\n        let row: any = {\n            cells: [],\n            expanded: this.getRowExpandStatus(this.expandStatusList, issue.key), \n            issue: issue,\n            key: issue.key,\n            linkColor: issue.links && issue.links.parent && issue.links.parent.colorKey ? issue.links.parent.colorKey : '',\n            permutation: currentPermutation,\n            rows: [],\n            rowType: issue.type,\n            tag: issue.atlassian,\n            text: ''\n        };\n\n        // Cell that contains the issue key\n        row.cells.push({ cid: 20, tag: issue.key, value: issue.key });\n\n        // Cell that contains a epic  link value\n        row.cells.push(this.createEpicLinkCell(issue));\n\n        /*let folder: any = null;\n        \n        // Create child rows based on subtasks\n        if (this.isThereSubTasks(issue)){\n            row.hasChildren = true;\n            \n            //folder = this.createIssueFolder(issue, 'SubTasks');\n            \n            for (let i = 0; i < issue.atlassian.fields.subtasks.length; i++){\n                let childRow = this.createRowSubTask(<any>{atlassian: issue.atlassian.fields.subtasks[i]});\n                //folder.rows.push(childRow);\n                row.rows.push(childRow);\n            }\n            \n            //row.rows.push(folder);\n        }\n\n        // Create child rows based on issue links\n        if (this.isThereIssueLinks(issue)){\n            row.hasChildren = true;\n            \n            //folder = this.createIssueFolder(issue, 'IssueLinks');\n            \n            let list: Array<any> = this.createLinkGroupList(issue.atlassian.fields.issuelinks);\n            for (let i = 0; i < list.length; i++){\n                let childRow = this.createRowFromLinkGroup(list[i], issue.key);\n                \n                for (let j = 0; j < list[i].links.length; j++){\n                    let linkRow = this.createRowFromLink(list[i].links[j]);\n                    \n                    childRow.rows.push(linkRow);\n                }\n                \n                //folder.rows.push(childRow);\n                row.rows.push(childRow);\n            }\n            \n            //row.rows.push(folder);\n        }*/\n        \n        this.createRowCells(row, issue, currentPermutation);\n        \n        // Icon Cell\n        row.cells.push(this.gridService.createIconCell(issue, 21));\n\n        // Cell that contains drag-drop handle\n        row.cells.push({ cid: this.handleColumnId });\n   \n        // Cell that contains cut/copy markers\n        row.cells.push({ cid: this.markerColumnId });\n\n        // Cell that contains a check box\n        row.cells.push({ cid: this.checkBoxColumnId });\n\n        // Cell in last column that will have a context menu\n        row.cells.push({ cid: this.lastColumnId });\n\n        return row;\n    }\n\n    private createIssueFolder(issue: IIssue, name: string){\n        let row: any = {\n            allowDrag: false,\n            allowDrop: false,\n            allowCopy: false,\n            canSelect: false,\n            cells: [],\n            collapseByDefault: true,\n            expanded: this.getRowExpandStatus(this.expandStatusList, issue.key, name), \n            hasChildren: true,\n            isFolder: true,\n            issue: issue,\n            rows: [],\n            tag: issue,\n            text: name\n        };\n        \n        row.cells.push({\n            cid: 2,\n            displayValue: name,\n            editText: '',\n            isFolder: true,\n            tag: name,\n            text: name\n        });\n   \n        // Cell that contains drag-drop handle\n        //row.cells.push({ cid: this.handleColumnId });\n        \n        // Cell that contains cut/copy markers\n        //row.cells.push({ cid: this.markerColumnId });\n\n        // Cell that contains a check box\n        //row.cells.push({ cid: this.checkBoxColumnId });\n\n        // Cell in last column that will have a context menu\n        //row.cells.push({ cid: this.lastColumnId });\n        \n        return row;\n    }\n    \n    private createRowSubTask(issueGot: IIssue){\n        let issue = issueGot.atlassian;\n        \n        //let row: IUITreeGridRow = {\n        let row: any = {\n            allowDrag: false,\n            allowDrop: false,\n            allowCopy: false,\n            canSelect: false,\n            cells: [],\n            isChild: true,\n            isSubtask: true,\n            issue: issue,\n            key: issue.key,\n            rows: [],\n            tag: issue,\n            text: ''\n        };\n        \n        if (issue){\n            // Cell that contains the issue key\n            row.cells.push({ cid: 20, tag: issue.key, value: issue.key });\n            \n            let relatedIssue = this.issueService.atlassian.find(issue.id);\n            if (relatedIssue)\n                this.createRowCells(row, relatedIssue);\n            else\n                this.createRowCells(row, issueGot);\n    \n            // Icon Cell\n            row.cells.push(this.gridService.createIconCell(issueGot, 21, true));\n    \n            // Cell that contains drag-drop handle\n            //row.cells.push({ cid: this.handleColumnId });\n    \n            // Cell that contains cut/copy markers\n            //row.cells.push({ cid: this.markerColumnId });\n    \n            // Cell that contains a check box\n            //row.cells.push({ cid: this.checkBoxColumnId });\n    \n            // Cell in last column that will have a context menu\n            row.cells.push({ cid: this.lastColumnId });\n            \n        }        \n        \n        return row;\n    }\n\n    protected getLinkGroup(list: Array<any>, id: any){\n        let foundGroup = null;\n\n        if (list){\n            for (let i = 0; i < list.length; i++)\n                if (list[i].id == id){\n                    foundGroup = list[i]; \n                    break;\n                }\n        }\n\n        return foundGroup;\n    }\n\n    private isLinkGroupPresent(list: Array<any>, id: string){\n        return this.getLinkGroup(list, id) ? true : false;\n    }\n    \n    private createGroupsFromIssueLinks(links: Array<any>){\n        let linkGroups: Array<any> = [];\n        \n        for (let i = 0; i < links.length; i++){\n            if (links[i].type && !this.isLinkGroupPresent(linkGroups, links[i].type.id)){\n                let obj: any = {\n                    id: links[i].type.id,\n                    links: [],\n                    name: links[i].type.name\n                }\n                \n                linkGroups.push(obj);\n            }\n        }\n        \n        return linkGroups;\n    }\n\n    protected createLinkGroupList(links: Array<any>){\n        let linkGroups: Array<any> = this.createGroupsFromIssueLinks(links);\n        \n        if (linkGroups.length > 0){\n            for (let i = 0; i < links.length; i++){\n                let linkGroup = this.getLinkGroup(linkGroups, links[i].type.id);\n                if (linkGroup)\n                    linkGroup.links.push(links[i]);\n            }\n        }\n        \n        return linkGroups;\n    }\n    \n    private createRowFromLinkGroup(linkGroup: any, key: any){\n        let row: any = {\n            allowDrag: false,\n            allowDrop: false,\n            allowCopy: false,\n            canSelect: false,\n            cells: [],\n            collapseByDefault: true,\n            expanded: this.getRowExpandStatus(this.expandStatusList, key, linkGroup.name), \n            hasChildren: true,\n            isFolder: true,\n            //issue: issue,\n            rows: [],\n            //tag: issue,\n            text: linkGroup.name\n        };\n        \n        row.cells.push({\n            cid: 2,\n            displayValue: linkGroup.name,\n            editText: '',\n            isFolder: true,\n            tag: linkGroup.name,\n            text: linkGroup.name\n        });\n   \n        // Cell that contains drag-drop handle\n        //row.cells.push({ cid: this.handleColumnId });\n        \n        // Cell that contains cut/copy markers\n        //row.cells.push({ cid: this.markerColumnId });\n\n        // Cell that contains a check box\n        //row.cells.push({ cid: this.checkBoxColumnId });\n\n        // Cell in last column that will have a context menu\n        //row.cells.push({ cid: this.lastColumnId });\n        \n        return row;\n    }\n    \n    private createRowFromLink(link: any){\n        let row: any = {};\n        \n        let issueGot: IIssue = <any>{atlassian:link.outwardIssue ? link.outwardIssue : link.inwardIssue};\n        let issue = issueGot.atlassian;\n\n        if (issue){  \n            row = {\n                allowDrag: false,\n                allowDrop: false,\n                allowCopy: false,\n                canSelect: false,\n                cells: [],\n                isChild: true,\n                issue: issue,\n                key: issue.key,\n                rows: [],\n                tag: issue,\n                text: ''\n            };\n    \n            // Cell that contains the issue key\n            row.cells.push({ cid: 20, tag: issue.key, value: issue.key });\n            \n            let relatedIssue = this.issueService.atlassian.find(issue.id);\n            if (relatedIssue)\n                this.createRowCells(row, relatedIssue);\n            else\n                this.createRowCells(row, issueGot);\n\n            // Icon Cell\n            row.cells.push(this.gridService.createIconCell(issueGot, 21, true));\n\n            // Cell that contains drag-drop handle\n            //row.cells.push({ cid: this.handleColumnId });\n   \n            // Cell that contains cut/copy markers\n            //row.cells.push({ cid: this.markerColumnId });\n    \n            // Cell that contains a check box\n            //row.cells.push({ cid: this.checkBoxColumnId });\n    \n            // Cell in last column that will have a context menu\n            //row.cells.push({ cid: this.lastColumnId });\n        }\n            \n        return row;\n    }\n\n    private createRowCells(row: any, issueGot: IIssue, currentPermutation?: Array<any>){\n        let issue = issueGot.atlassian;\n        if (issue && issue.fields){\n            this.gridService.setIssueIcon(issue.fields.issuetype ? this.gridService.getCellValue('issuetype', issue.fields.issuetype) : '');\n\n            row.cells.push(this.gridService.createCell(issue, issue.fields.summary, 2));\n            row.text = issue.fields.summary;\n            \n            for (let i = 0; i < this.fieldList.length; i++){\n                let id = this.fieldList[i].id;\n                if (id != 'issuekey' && id != 'summary' && id != this.versionsID && id != this.fixVersionsID && id != this.componentsID)\n                    row.cells.push(this.gridService.createCell(issue, issue.fields[id], id));\n            }\n\n            if (currentPermutation){\n                for (let i = 0; i < currentPermutation.length; i++){\n                    let fieldID: any;\n                    let fieldValue: any;\n                    \n                    switch (currentPermutation[i].id){\n                        case this.versionsID:\n                            fieldID = currentPermutation[i].id;\n                            fieldValue = issue.fields.versions;\n                            break;\n                        case this.fixVersionsID:\n                            fieldID = currentPermutation[i].id;\n                            fieldValue = issue.fields.fixVersions;\n                            break;\n                        case this.componentsID:\n                            fieldID = currentPermutation[i].id;\n                            fieldValue = issue.fields.components;\n                            break;\n                    }\n\n                    if (fieldID)\n                        row.cells.push(this.createCellFromValue(currentPermutation[i].value, fieldID, fieldValue, row.linkColor));\n                }\n            }\n            \n            if (!this.isGroupPresent(this.versionsID))\n                row.cells.push(this.gridService.createCell(issue, issue.fields.versions, this.versionsID, row.linkColor));\n\n            if (!this.isGroupPresent(this.fixVersionsID))\n                row.cells.push(this.gridService.createCell(issue, issue.fields.fixVersions, this.fixVersionsID));\n\n            if (!this.isGroupPresent(this.componentsID))\n                row.cells.push(this.gridService.createCell(issue, issue.fields.components, this.componentsID, row.linkColor));\n        }\n    }\n\n    iconErrorHandler(e: any){\n        if (e.target){\n            //solved by CSS\n            //e.target.src = \"resources/empty.png\";\n        }\n    }\n    \n    public getCellIcon(cell: any, iconID: any): string {\n        let icon: string = '';\n        \n        if (cell && cell.iconSet){\n            for (let i = 0; i < cell.iconSet.length; i++){\n                if (cell.iconSet[i].id == iconID){\n                    icon = cell.iconSet[i].value;\n                    break;\n                }\n            }\n        }\n        \n        return icon;    \n    }\n\n    getProgressValue(obj: any){\n        return this.gridService.getProgressValue(obj);\n    }\n\n    private getFieldNameByIDFromConfig(id: any): string {\n        let found: string = '';\n        \n        if (config && config.fieldList){\n            for (let j = 0; j < config.fieldList.length; j++){\n                if (config.fieldList[j].id == id){\n                    found = config.fieldList[j].name;\n                    break;\n                }\n            }\n        }\n\n        return found;\n    }\n\n    private getColumnId(columnName: string){\n        let foundID: any = null;\n\n        for (let j = 0; j < this.columnList.length; j++){\n            if (this.columnList[j].headerText && this.columnList[j].headerText.toLowerCase() == columnName.toLowerCase()){\n                foundID = this.columnList[j].id;\n                break;\n            }\n        }\n\n        return foundID;\n    }\n    \n    getSchemaTypeByID(id: any){\n        return this.gridService.getSchemaTypeByID(this.fieldList, id);\n    }\n    \n    // Context Menu to each Row ----------------------------------------------------------\n\n    rowMenuItemClick(e: any, cell: any, flag?: boolean){\n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            if (e.item){\n                let issue: IIssue;\n                \n                if (cell.isGroup)\n                    issue = this.issueService.atlassian.find(cell.issueID);\n                else {\n                    let row: any = cmp.findRowById(cell.rid);\n                    if (row)\n                        issue = row.issue;\n                }\n            \n                if (issue){\n                    // Action depends on selected menu option\n                    switch (e.item.action){\n                        case 'switchWatching':\n                            this.notificationService.create('switchWatching: ' + issue.id, 'sucessfully switches TODO', 'sucess');\n                            break;\n                        case 'link':\n                            this.envService.url(e.item.actionValue);\n                            break;\n                        case 'createSubissueDialog':\n                            this.addNewIssue(null, true);\n                            break;\n                        default:\n                            this.issueService.platform[e.item.action] ? this.issueService.platform[e.item.action](issue, e.item.actionParameters) : this.notificationService.create('action not yet implemented: ' + e.item.action, 'action not yet implemented: ' + e.item.action, 'warning');\n                            break;\n                    }\n                }\n            }\n       }\n    }\n\n    private extractRowsFromFullList(flag?: boolean){\n        let list: Array<any> = [];\n        \n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            let fullList = cmp.getFullList();\n            for (let i = 0; i < fullList.length; i++)\n                list.push(fullList[i].data);\n        }\n        \n        return list;\n    }\n    \n    rowMenuCellMouseDown(e: any, cell: any, flag?: boolean){\n        if (cell){\n            let cmp = this.getGridComponent(flag);\n            if (cmp){\n                let row: any = null;\n                \n                if (cell.isGroup)\n                    row = this.findGroupByIssueKey(cell.issueKey, flag);\n                else\n                    row = cmp.findRowById(cell.rid);\n                    \n                if (row)\n                    cmp.selectedRow = row;\n            }\n        }\n    }\n    \n    rowMenuOpening(e: any, cell: any, flag?: boolean){\n        this.closeActivePanel();\n        \n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            let issue: IIssue = null;\n            \n            if (cell.isGroup)\n                issue = this.issueService.atlassian.find(cell.issueID);\n            else {\n                let row: any = cmp.findRowById(cell.rid);\n                if (row){\n                    let relatedIssue = this.issueService.atlassian.find(row.issue.id);\n                    issue = relatedIssue ? relatedIssue : row.issue;\n                }\n            }\n\n            let appRect = this.commonService.getPageRect(this.appElemRef.nativeElement);\n            for (let i = this.rowMenu.items.length -1; i >= 0; i--)\n                if(this.rowMenu.items[i].removeMe)\n                    this.rowMenu.items.splice(i, 1); //items for issue transition that have been added before have to be removed\n                        \n            if (issue && issue.atlassian){\n                if (issue.atlassian.transitions) //subtasks do not have the transition property\n                    for(let i in issue.atlassian.transitions){\n                        this.rowMenu.items.splice(0, 0, { \n                            text: issue.atlassian.transitions[i].name , \n                            action: \"updateStatus\", \n                            actionParameters: issue.atlassian.transitions[i].to.name,\n                            iconUrl: issue.atlassian.transitions[i].to.iconUrl ,\n                            title: issue.atlassian.transitions[i].to.description,\n                            removeMe:true\n                        }); \n                    }\n                \n                \n                if (issue.atlassian.fields) //subtasks do not have the fields property\n                    for(let i in this.rowMenu.items)\n                    {\n                        if(this.rowMenu.items[i].watching)\n                        {\n                            this.rowMenu.items[i].text = issue.atlassian.fields.watches && issue.atlassian.fields.watches.isWatching? 'Stop Watching': 'Watch';\n                            this.rowMenu.items[i].action = issue.atlassian.fields.watches && issue.atlassian.fields.watches.isWatching ? 'unwatch': 'watch';\n                            break;\n                        }\n                    }\n            }\n                \n            this.rowMenu.adjustment = { top: 0, left: -185 };\n            this.rowMenu.appSize = { width: appRect.width, height: appRect.height }\n        }\n    }\n    \n    rowMenuOpened(e: any, cell: any){\n        this.isRowMenuOpen = true;\n        this.activeCell = cell;\n    }\n\n    rowMenuClosed(e: any){\n        this.isRowMenuOpen = false;\n        this.activeCell = null;\n    }\n\n    // General ---------------------------------------------------------------------------\n\n    private getCellById(row: any, id: any){\n        let foundCell: any = null;\n\n        if (row && row.cells)\n            for (let j = 0; j < row.cells.length; j++){\n                if (row.cells[j].cid == id){\n                    foundCell = row.cells[j];\n                    break;\n                }\n            }\n\n        return foundCell;\n    }\n\n    // Selection -------------------------------------------------------------------------\n\n    // A method that handles the checkbox value update \n    updateSelection(flag?: boolean){\n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            // Get a linear list of all rows and clear their checkbox status\n            let list =  cmp.getFullList();\n            for (let i = 0; i < list.length; i++){\n                let cell: any = this.getCellById(list[i], this.checkBoxColumnId);\n                if (cell)\n                    cell.value = false;\n            }\n\n            // Get a list of all selected rows and mark their checkboxes to true\n            let selList = cmp.getList('selected');\n            for (let i = 0; i < selList.length; i++){\n                let cell: any = this.getCellById(selList[i], this.checkBoxColumnId);\n                if (cell)\n                    cell.value = true;\n            }\n        }\n    }\n\n    onGridBeforeSelect(e: any, flag?: boolean){\n        this.closeActivePanel();\n\n        if (e.obj){\n            switch (e.obj.type){\n                case 'column':\n                    if (e.obj.id >= 90)\n                        e.cancel = true;\n                    break;\n\n                case 'row':\n                    e.cancel = e.obj.allowCopy == false ? true : false;\n                    \n                    if (e.obj.isSubtask){\n                        let cell = this.getCellById(e.obj, this.lastColumnId);\n                        if (cell)\n                            this.selectedCell = cell;\n                    }\n                    break;\n            }\n        }\n    }\n\n    onGridAfterSelect(e: any, flag?: boolean){\n        if (e.obj){ // && e.obj.type == 'row'){\n            if (e.obj.issue)\n                this.currentIssueSelected = e.obj.issue;\n\n            let cell: any = this.getCellById(e.obj, this.checkBoxColumnId);\n            if (cell){\n                cell.value = true;\n\n                this.updateSelection(flag);\n            }\n            \n            cell = this.getCellById(e.obj, this.lastColumnId);\n            if (cell)\n                this.selectedCell = cell;\n        }\n        \n        this.resetEditor();\n \n        // Save current configuration\n        this.updateConfiguration(flag);\n   }\n\n    // Moving Rows -----------------------------------------------------------------------\n\n    moveUpClicked(){\n        let cmp = this.getGridComponent();\n        if (cmp)\n            cmp.moveRow(cmp.selectedRow, IntegralUIDirection.Up);\n    }\n\n    moveDownClicked(){\n        let cmp = this.getGridComponent();\n        if (cmp)\n            cmp.moveRow(cmp.selectedRow, IntegralUIDirection.Down);\n    }\n\n    moveLeftClicked(){\n        let cmp = this.getGridComponent();\n        if (cmp)\n            cmp.moveRow(cmp.selectedRow, IntegralUIDirection.Left);\n    }\n\n    moveRightClicked(){\n        let cmp = this.getGridComponent();\n        if (cmp)\n            cmp.moveRow(cmp.selectedRow, IntegralUIDirection.Right);\n    }\n\n\n    gridDragDrop(e: any){\n    }\n  \n    // Editing ---------------------------------------------------------------------------\n    \n    // Edit variables\n    public currentEditCell: any = null;\n\n    openEditor(){\n        let cmp = this.getGridComponent();\n        if (cmp && cmp.selectedRow){\n            let cell = this.gridService.getCellByColumnId(cmp.selectedRow.cells, 2);\n            if (cell)\n                this.showEditor(cell);\n        }\n    }\n\n    cellStartEdit(e: any, cell: any){\n        this.showEditor(cell);\n        \n        e.stopPropagation();\n    }\n\n    showEditor(cell: any){\n        if (!cell.isFolder){\n            this.currentEditCell = cell;\n            cell.editText = cell.tag;\n        }\n        else\n            this.resetEditor();\n    }\n    \n    // Cancels the edit process when ESCAPE key is pressed\n    editorKeyDown(e: any){\n        if (this.currentEditCell){\n            switch (e.keyCode){\n                case 27: // ESCAPE\n                    this.cancelEdit(null);\n                    break;\n            }\n        }\n    }\n\n    editRevertChanges(e: any, cell: any){\n        cell.editText = cell.tag;\n \n        e.stopPropagation();\n    }\n    \n    editDone(e: any, cell: any, flag?: boolean){\n        let self = this;\n        \n        let cmp = self.getGridComponent(flag);\n        if (cmp){\n            let row: any = null;\n            \n            if (cell.isGroup)\n                row = this.findGroupByIssueKey(cell.issueKey, flag);\n            else\n                row = cmp.findRowById(cell.rid);\n                \n            if (row){\n                //works only for text/number fields\n                let data: any = {\"fields\": {}};\n                data.fields[cell.fieldName] = cell.editText;\n                this.issueService.atlassian.update( row.issue, data).subscribe(\n                    (issueRefreshed: IAtlassianIssue) => {\n                        cell.tag = cell.editText;\n                        self.currentEditCell = null;\n                    }, \n                    error => {\n                        console.log('Error: ', error);\n                        self.currentEditCell = null;\n                    }\n                );\n            }\n        }\n\n        e.stopPropagation();\n    }\n    \n    closeEditor(e: any, cell: any){\n        if (cell != this.currentEditCell)\n            this.resetEditor();\n    }\n     \n    gridMouseUp(e: any){\n       //this.resetEditor();\n    }\n\n    cellMouseDown(e: any, cell: any, flag?: boolean){\n        if (this.currentEditCell && cell != this.currentEditCell) \n            this.showEditor(cell);\n            \n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            let row: any = null;\n            \n            if (cell.isGroup){\n                row = this.findGroupByIssueKey(cell.issueKey, flag);\n                row.issue = this.issueService.atlassian.findByKey(cell.issueKey);\n                \n                //console.log(row.issue);\n            }\n            else\n                row = cmp.findRowById(cell.rid);\n                \n            //console.log(row);\n            if (row)\n                cmp.selectedRow = row;\n        }\n        \n        e.stopPropagation();\n    }\n    \n    cellMouseUp(e: any, cell: any){\n        e.stopPropagation();\n    }\n    \n    // Cancels the edit process and closes the editor\n    cancelEdit(id: any){\n        this.resetEditor();\n    }\n\n    // Resets the variables for editing\n    resetEditor(){\n        this.currentEditCell = null;\n    }\n\n    // Selects the whole text in the text editor\n    selectContent(e: any){\n        if (e.target){\n            setTimeout(function(){\n                e.target.setSelectionRange(0, e.target.value.length);\n            }, 1);\n        }\n    }\n\n    // Calculates the width of grid cell\n    getCellWidth(cell: any, flag?: boolean){\n        let cellWidth: number = 100;\n        let tempColumns = flag ? this.columns2 : this.columns;\n        \n        for (let j = 0; j < tempColumns.length; j++){\n            if (tempColumns[j].id == cell.cid){\n                cellWidth = tempColumns[j].width; \n                break;\n            }\n        }\n\n        let cellPadding: number = 4;\n\n        if (cell.cid == 2){\n            let cmp = this.getGridComponent(flag);\n            if (cmp){\n                let row = cmp.findRowById(cell.rid);\n                let level: number = cmp.getRowLevel(row);\n    \n                cellPadding += level*15;\n            }\n        }\n\n        cellWidth -= (cellPadding + 84); // 84 is from expand space, revert and done buttons width\n\n        return cellWidth;\n    }\n    \n    onGridClick(e: any){\n        this.resetEditor();\n    }\n    \n    onGridMouseDown(e: any){\n       this.resetEditor();\n    }\n    \n    onGridScrollPosChanged(e: any){\n        this.resetEditor();\n    }\n    \n    // Grouping --------------------------------------------------------------------------\n    \n    onGroupAdding(e: any){\n        this.closeActivePanel();\n    } \n    \n    onGroupAdded(e: any, flag?: boolean){\n        if (e.group && (e.group.cid == this.versionsID || e.group.cid == this.fixVersionsID || e.group.cid == this.componentsID))\n            this.refreshRows(flag);\n        \n        this.collapseByDelay(flag);\n        this.updateConfiguration(flag);\n        \n        this.removeDuplicates(flag);\n    }\n    \n    onGroupRemoving(e: any){\n        this.closeActivePanel();\n    } \n    \n    onGroupRemoved(e: any, flag?: boolean){\n        if (e.group && (e.group.cid == this.versionsID || e.group.cid == this.fixVersionsID || e.group.cid == this.componentsID))\n            this.refreshRows(flag);\n        \n        this.collapseByDelay(flag);\n        this.updateConfiguration(flag);\n        \n        this.removeDuplicates(flag);\n    }\n    \n    onGroupOrderChanged(e: any, flag?: boolean){\n        this.collapseByDelay(flag);\n        this.updateConfiguration(flag);\n    }\n    \n    private collapseByDelay(flag?: boolean){\n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            setTimeout(function(){\n                cmp.collapse();\n            }, 100);\n        }        \n    }\n    \n    // Drag Drop -------------------------------------------------------------------------\n\n    /*protected processGridDrop(e: any){\n        if (e.dragRow){\n            if (Array.isArray(e.dragRow)){\n                for (let i = 0; i < e.dragRow.length; i++)\n                    this.processDropRow(e, e.dragRow[i]);\n            }\n            else \n                this.processDropRow(e, e.dragRow);\n\n            this.grid1.updateLayout();\n        }\n    }\n\n    protected processDropRow(e: any, row: any){\n        let isRowRemoved: boolean = this.grid1.removeRow(row);\n        if (isRowRemoved){\n            switch (e.dropPos){\n                case 0: // Insert dragged row as a child of target group \n                    if (e.targetRow && e.targetRow.type == 'group'){\n                        let childRow: any = this.getFirstGroupChildRow(e.targetRow);\n                            \n                        if (childRow){\n                            if (row.cells && childRow.cells && childRow.cells.length > 0){\n                                let columnID = e.targetRow.cells[0].valueID;\n                    \n                                let sourceCell = this.gridService.getCellByColumnId(row.cells, columnID);\n                                let targetCell = this.gridService.getCellByColumnId(childRow.cells, columnID);\n                    \n                                if (sourceCell && targetCell){\n                                    sourceCell.text = targetCell.text;\n                                    sourceCell.value = targetCell.value;\n                                    sourceCell.tag = targetCell.tag;\n                                }\n                            }\n    \n                            this.grid1.addRow(row);\n                        }\n                    }\n                    break;\n\n                case 1: // Insert dragged row before target row \n                    this.processDropRowAtTarget(e, row);\n                    break;\n\n                case 2: // Insert dragged row after target row\n                    this.processDropRowAtTarget(e, row);\n                    break;\n\n                default: // Add dragged row as child to target Control\n                    this.grid1.addRow(row);\n                    break;\n            }\n        }\n    }\n \n    protected processDropRowAtTarget(e: any, row: any){\n        for (let j = 0; j < this.gridGroups.length; j++){\n            let columnID = this.gridGroups[j].cid;\n\n            let sourceCell = this.gridService.getCellByColumnId(row.cells, columnID);\n            let targetCell = this.gridService.getCellByColumnId(e.targetRow.cells, columnID);\n\n            if (sourceCell && targetCell){\n                sourceCell.text = targetCell.text;\n                sourceCell.value = targetCell.value;\n                sourceCell.tag = targetCell.tag;\n            }\n        }\n\n        switch (e.dropPos){\n            case 1:\n                this.grid1.insertRowBefore(row, e.targetRow);\n                break;\n\n            case 2:\n                this.grid1.insertRowAfter(row, e.targetRow);\n                break;\n        }\n    }*/\n\n    private getFirstGroupChildRow(group: any){\n        if (group && group.rows && group.rows.length > 0){\n            if (group.rows[0].type == 'group')\n                return this.getFirstGroupChildRow(group.rows[0]);\n            else\n                return group.rows[0];\n        }\n        \n        return null;\n    }\n    \n    private getFieldName(columnID: any){\n        return columnID;\n        //return this.gridService.getFieldNameByID(this.fieldList, columnID);\n        \n        /*let name: string = this.gridService.getFieldNameByID(columnID);\n        \n        for (let j = 0; j < this.columnList.length; j++){\n            if (this.columnList[j].id == columnID){\n                switch (columnID){\n                    case 9:\n                        name = \"versions\";\n                        break;\n                        \n                    case 10:\n                        name = \"fixVersions\";\n                        break;\n                        \n                    case 11:\n                        name = \"components\";\n                        break;\n\n                    case 18:\n                        name = \"points\";\n                        break;\n                        \n                    case 19:\n                        name = \"sprint\";\n                        break;\n                        \n                    case 80:\n                        name = \"epiclink\";\n                        break;\n                        \n                    default: \n                        name = this.columnList[j].headerText.toLowerCase();\n                        break;\n                }\n                break;\n            }\n        }\n        \n        return name;*/\n    }\n    \n    private getFieldValue(name: string, obj: any){\n        let retValue: any;\n\n        switch (name){\n            case 'assignee':\n                retValue = obj ? obj.name : 'others';\n                break;\n            case 'components': \n                retValue = Array.isArray(obj) && obj.length > 0 ? this.createIDList(obj) : (obj ? this.createIDList([obj]) : 'others');\n                break;\n            case 'epiclink':\n                retValue = obj.key;\n                break;\n            case 'fixVersions':\n                retValue = Array.isArray(obj) && obj.length > 0 ? this.createIDList(obj) : (obj ? this.createIDList([obj]) : 'others');\n                break;\n            case 'issuetype':\n                retValue = obj ? obj.id : 'others';\n                break;\n            case 'priority':\n                retValue = obj ? obj.id : 'others';\n                break;\n            case 'reporter':\n                retValue = obj ? obj.name : 'others';\n                break;\n            case 'sprints':\n                retValue = Array.isArray(obj) && obj.length > 0 ? obj[0].name : 'others';\n                break;\n            case 'status':\n                retValue = obj.name;\n                break;\n            case 'versions':\n                retValue = Array.isArray(obj) && obj.length > 0 ? this.createIDList(obj) : (obj ? this.createIDList([obj]) : 'others');\n                break;\n                \n            default:\n                retValue = obj;\n                break;\n        \n        }\n\n        return retValue;\n    }    \n        \n    private createIDList(list: Array<any>, type?: string){\n        let result: Array<any> = [];\n        \n        for (let i = 0; i < list.length; i++){\n            switch (type){\n                case 'add':\n                    if (list[i].checked != false)\n                        result.push(list[i].id);\n                    break;\n                    \n                case 'remove':\n                    if (list[i].checked == false)\n                        result.push(list[i].id);\n                    break;\n                    \n                default:\n                    result.push(list[i].id);\n                    break;\n            }\n        }\n            \n        return result;\n    }\n    \n    private isFolderPresent(row: any, name: string){\n        let found: any = null;\n        \n        if (row && row.rows && row.rows.length > 0){\n            for (let i = 0; i < row.rows.length; i++){\n                if (row.rows[i].text == name){\n                    found = row.rows[i];\n                    break;\n                }\n            }\n        }\n        \n        return found;\n    }\n\n    private updateRow(row: any, issue: IIssue, currentPermutation?: Array<any>){\n        row.linkColor = issue.links && issue.links.parent && issue.links.parent.colorKey ? issue.links.parent.colorKey : '';\n        row.tag = issue;\n\n        row.cells.length = 0;\n        row.rows.length = 0;\n        \n        // Cell that contains the issue key\n        row.cells.push({ cid: 20, tag: issue.key, value: issue.key });\n\n        // Cell that contains a epic  link value\n        row.cells.push(this.createEpicLinkCell(issue));\n\n        /*let folder: any = null;\n        \n        // Create child rows based on subtasks\n        if (this.isThereSubTasks(issue)){\n            row.hasChildren = true;\n            \n            //folder = this.createIssueFolder(issue, 'SubTasks');\n            \n            for (let i = 0; i < issue.atlassian.fields.subtasks.length; i++){\n                let childRow = this.createRowSubTask(<any>{atlassian: issue.atlassian.fields.subtasks[i]});\n                //folder.rows.push(childRow);\n                row.rows.push(childRow);\n            }\n            \n            //row.rows.push(folder);\n        }\n\n        // Create child rows based on issue links\n        if (this.isThereIssueLinks(issue)){\n            row.hasChildren = true;\n            \n            //folder = this.createIssueFolder(issue, 'IssueLinks');\n\n            let list: Array<any> = this.createLinkGroupList(issue.atlassian.fields.issuelinks);\n            for (let i = 0; i < list.length; i++){\n                let childRow = this.createRowFromLinkGroup(list[i], issue.key);\n                \n                for (let j = 0; j < list[i].links.length; j++){\n                    let linkRow = this.createRowFromLink(list[i].links[j]);\n                    \n                    childRow.rows.push(linkRow);\n                }\n                \n                //folder.rows.push(childRow);\n                row.rows.push(childRow);\n            }\n            \n            //row.rows.push(folder);\n        }*/\n        \n        this.createRowCells(row, issue, currentPermutation);\n        \n        // Icon Cell\n        row.cells.push(this.gridService.createIconCell(issue, 21));\n   \n        // Cell that contains drag-drop handle\n        row.cells.push({ cid: this.handleColumnId });\n\n        // Cell that contains cut/copy markers\n        row.cells.push({ cid: this.markerColumnId });\n\n        // Cell that contains a check box\n        row.cells.push({ cid: this.checkBoxColumnId });\n\n        // Cell in last column that will have a context menu\n        row.cells.push({ cid: this.lastColumnId });        \n    }\n   \n    private createRowsFromIssue(issue: IIssue, flag?: boolean): Array<any> {\n        let list: Array<any> = [];\n\n        let permutations = this.createPermutations(issue, flag);\n        if (permutations.length > 0){\n            for (let i = 0; i < permutations.length; i++)\n                list.push(this.createRow(issue, permutations[i]));\n        }\n        else \n            list.push(this.createRow(issue));\n\n        return list;\n    }\n    \n    private removeExistingRows(rowList: Array<any>, permutations: Array<any>, flag?: boolean){\n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            let list: Array<any> = [];\n            \n            for (let i = 0; i < rowList.length; i++){\n                let found = false;\n                \n                for (let k = 0; k < permutations.length; k++){\n                    let cell = this.gridService.getCellByColumnId(rowList[i].cells, permutations[k].id);\n                    if (cell && cell.value == permutations[k].value){\n                        found = true;\n                        break;\n                    }\n                }\n                \n                if (!found)\n                    list.push(rowList[i]);\n            }\n                        \n            // Remove rows that don't match the permutations\n            for (let m = 0; m < list.length; m++)\n                cmp.removeRow(list[m]);\n        }\n    }\n    \n    private addMissingRows(rowList: Array<any>, issue: IIssue, permutations: Array<any>, flag?: boolean){\n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            let list: Array<any> = [];\n            \n            for (let k = 0; k < permutations.length; k++){\n                let found = false;\n                \n                for (let i = 0; i < rowList.length; i++){\n                    let cell = this.gridService.getCellByColumnId(rowList[i].cells, permutations[k].id);\n                    if (cell && cell.value == permutations[k].value){\n                        found = true;\n                        break;\n                    }\n                }\n                \n                if (!found)\n                    list.push(permutations[k]);\n            }\n                        \n            // Add missing rows\n            for (let m = 0; m < list.length; m++)\n                cmp.addRow(this.createRow(issue, list[m]));\n        }\n    }\n    \n    private updateRowsFromIssue(issue: IIssue, flag?: boolean){\n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            cmp.suspendLayout();\n            \n            let rowList = this.getRowsByIssueKey(issue.key, flag);\n                    \n            let permutations = this.createPermutations(issue, flag);\n            if (permutations.length > 0){\n                // Remove rows that don't match the permutations\n                this.removeExistingRows(rowList, permutations, flag);\n                \n                // Add rows that are missing from the permutations\n                this.addMissingRows(rowList, issue, permutations, flag);\n                   \n                // Update existing rows\n                for (let i = 0; i < rowList.length; i++)\n                    this.updateRow(rowList[i], issue, rowList[i].permutation);\n            }\n            else if (rowList.length > 0)\n                this.updateRow(rowList[0], issue);\n            \n            cmp.resumeLayout();\n                \n            this.applySorting(flag);\n        }\n    }\n\n    private findGroupByIssueKey(key: any, flag?: boolean): any {\n        let found: any = null;\n        \n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            let fullList = cmp.getFullList();\n            for (let i = 0; i < fullList.length; i++){\n                if (fullList[i].type == 'group'){\n                    let cell = this.findObjInList(fullList[i].cells, 'cid', 2);\n                    if (cell && cell.related && cell.related.tag == key){\n                        found = fullList[i];\n                        break;\n                    }\n                }\n            }\n        }\n        \n        return found;\n    }    \n\n    private findRowByIssueKey(key: any, flag?: boolean): any {\n        let found: any = null;\n        \n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            for (let i = 0; i < cmp.rows.length; i++){\n                if (cmp.rows[i].key == key){\n                    found = cmp.rows[i];\n                    break;\n                }\n            }\n        }\n        \n        return found;\n    }\n   \n    private getRowsByIssueKey(key: any, flag?: boolean): Array<any> {\n        let result: Array<any> = [];\n        \n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            for (let i = 0; i < cmp.rows.length; i++){\n                if (cmp.rows[i].key == key)\n                    result.push(cmp.rows[i]);\n            }\n        }\n        \n        return result;\n    }\n   \n    private isDialogValuePresent(value: any, columnID: any){\n        let found: boolean = false;\n        \n        let targetList = this.getDialogList(columnID);      \n        for (let i = 0; i < targetList.length; i++){\n            if (targetList[i].id == value){\n               found = true;\n               break;\n            }\n        }\n       \n       return found;\n    }\n    \n    private getDialogList(columnID: any): Array<any> {\n        switch (columnID){\n            case this.versionsID:\n                return this.dialogData.versions.list;\n            case this.fixVersionsID:\n                return this.dialogData.fixVersions.list;\n            case this.componentsID:\n                return this.dialogData.components.list;\n         }\n        \n        return [];\n    }\n    \n    private addValueToDialogList(list: Array<any>, columnID: any){\n        if (list){\n            let targetList = this.getDialogList(columnID);\n            \n            for (let i = 0; i < list.length; i++){\n                if (list[i].id != undefined && !this.isDialogValuePresent(list[i].id, columnID))\n                    targetList.push({ id: list[i].id, checked: true, text: list[i].name });\n            }\n        }\n    }\n    \n    private addValueToDialogListFromGroup(group: any, fullList: Array<any>){\n        let cmp = this.getGridComponent();\n        if (cmp){\n            if (group.cells && group.cells.length > 0){\n                let columnID = group.cells[0].valueID;\n                let groupValue = group.cells[0].value;\n\n                if (columnID == this.versionsID || columnID == this.fixVersionsID || columnID == this.componentsID)\n                    this.addValueToDialogList(groupValue, columnID);\n            }\n\n            if (group.pid){\n                let parentGroup = this.getParentGroup(group.pid, fullList); //cmp.getRowParent(targetGroup);\n                if (parentGroup)\n                    this.addValueToDialogListFromGroup(parentGroup, fullList);\n            }\n        }\n    }   \n    \n    private dropFieldNames: Array<string> = [];\n    private dropFieldValues: Array<any> = [];\n    private dropFieldRemoveValues: Array<any> = [];\n    private dropListIssues: Array<IIssue> = [];\n    private targetDropObject: any = null;\n\n    private sourceDropList: Array<any> = [];\n    \n    private resetDialogData(){\n        this.dialogData = {\n            dropPos: -1,\n            flag: false,\n            versions: {\n                changed: false,\n                fieldID: this.versionsID,\n                list: [],\n                addList: [],\n                removeList: []\n            },\n            fixVersions: {\n                changed: false,\n                fieldID: this.fixVersionsID,\n                list: [],\n                addList: [],\n                removeList: []\n            }, \n            components: {\n                changed: false,\n                fieldID: this.componentsID,\n                list: [],\n                addList: [],\n                removeList: []\n            }\n        }\n    }\n    \n    onGridDragStart(e: any, flag?: boolean){\n        if (e.dragRow && e.dragRow.type == 'group')    \n            e.cancel = true;\n    }\n   \n    public targetDragOverGroupCell: any = null;\n    \n    onGridDragOver(e: any, flag?: boolean){\n        this.targetDragOverGroupCell = e.targetRow && e.targetRow.type == 'group' && !e.targetRow.expanded ? this.gridService.getCellByColumnId(e.targetRow.cells, 2) : null;\n    } \n    \n    private createDropList(row: any, result: Array<any>){\n        result.push(row);\n        \n        let list = row.rows;\n        if (list){\n            for (let i = 0; i < list.length; i++){\n                if (list[i].type == 'group')\n                    this.createDropList(list[i], result);\n                else\n                    result.push(list[i]);\n            }\n        }\n    }\n    \n    onGridDrop(e: any, flag?: boolean): any {\n        // Cancel the default drop operation\n        e.cancel = true;\n\n        let self = this;\n        \n        let tempGroups = flag ? this.gridGroups2 : this.gridGroups;\n        \n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            //if (tempGroups.length > 0){\n                this.dropFieldNames.length = 0;\n                this.dropFieldValues.length = 0;\n                this.dropFieldRemoveValues.length = 0;\n                this.dropListIssues.length = 0;\n                \n                if (e.dragRow && e.dropPos >= 0){\n                    // Cycle through all rows that are dropped and create issue list\n                    let dropList: Array<any> = [];\n                    \n                    if (Array.isArray(e.dragRow) && e.dragRow[0].type == 'group')\n                        this.createDropList(e.dragRow[0], dropList);\n                    else if (Array.isArray(e.dragRow)){\n                        for (let i = 0; i < e.dragRow.length; i++)\n                            dropList.push(e.dragRow[i]);\n                    }\n                    else \n                        dropList.push(e.dragRow);\n         \n                    this.sourceDropList = dropList;\n                    \n                    for (let i = 0; i < dropList.length; i++){\n                        if (dropList[i].type == 'group'){\n                            let groupCell = this.gridService.getCellByColumnId(dropList[i].cells, 2);\n                            if (groupCell && groupCell.related){\n                                let relatedIssue = this.issueService.atlassian.findByKey(groupCell.related.tag);\n                                if (relatedIssue)\n                                    this.dropListIssues.push(relatedIssue);\n                            }\n                        }\n                        else\n                            this.dropListIssues.push(dropList[i].issue);\n                    }\n\n                    this.targetDropObject = e.targetRow;\n\n                    if (e.targetRow){\n                        if (this.isMultiValueGroupPresent(flag)){\n                            this.resetDialogData();\n                            \n                            this.dialogData.dropPos = e.dropPos;\n                            this.dialogData.flag = flag;\n                            \n                            let targetGroup = null;\n                            if (e.targetRow.type == 'group')\n                                targetGroup = e.targetRow;\n                            else \n                                targetGroup = this.getParentGroup(e.targetRow.pid, cmp.getFullList());\n\n                            if (targetGroup)\n                                this.addValueToDialogListFromGroup(targetGroup, cmp.getFullList());\n    \n                            // Add value to the dialog list from dropped rows\n                            for (let m = 0; m < dropList.length; m++){\n                                if (dropList[m].issue && dropList[m].issue.atlassian && dropList[m].issue.atlassian.fields){\n                                    this.addValueToDialogList(dropList[m].issue.atlassian.fields.versions, this.versionsID);\n                                    this.addValueToDialogList(dropList[m].issue.atlassian.fields.fixVersions, this.fixVersionsID);\n                                    this.addValueToDialogList(dropList[m].issue.atlassian.fields.components, this.componentsID);\n                                }\n                            }\n                                  \n                            //console.log(\"dialogData: \", this.dialogData);  \n                            this.openDialog();\n                            return;\n                        }\n                        else {\n                            if (e.dropPos == 0){\n                                this.extractDataFromTargetGroup(e.targetRow, cmp.getFullList(), flag);\n                                    \n                                if (e.targetRow.type == 'group' && e.targetRow.rows && e.targetRow.rows.length > 0)\n                                    this.processRank(e.targetRow.rows[0], 1);\n                            }\n                            // When dropPos is 1 or 2, the target row is a normal row\n                            // Depending on present groups, extract the data from target row\n                            else if (e.dropPos > 0){\n                                if (tempGroups.length > 0)\n                                    this.extractDataFromTargetRow(e.targetRow);\n                                    \n                                this.processRank(e.targetRow, e.dropPos);\n                            }\n                        }\n                    }\n                    \n        \n                    //console.log(\"listIssues ----------- \", this.dropListIssues);\n                    //console.log(\"fieldNames ----------- \", this.dropFieldNames);\n                    //console.log(\"fieldValues ----------- \", this.dropFieldValues);\n                    //console.log(\"fieldRemoveValues ----------- \", this.dropFieldRemoveValues);\n                    \n                    this.updateServerData(e.targetRow, e.dropPos);\n                    this.clearGridSelection();\n                    \n                    this.removeDuplicates();\n                }\n            //}\n        }\n    }\n\n    private clearGridSelection(){\n        let cmp = this.getGridComponent();\n        if (cmp) {\n            cmp.clearSelection();\n        }\n\n        // RESERVED\n        // let cmp = this.getGridComponent(true);\n        // if (cmp)\n        //     cmp.clearSelection();\n    }\n\n    private getNextRow(row: any){\n        let found: any = null;\n        \n        let cmp = this.getGridComponent();\n        if (cmp){\n            let currentList = cmp.getList('current');\n            \n            let index = currentList.indexOf(row);\n            \n            found = index >= 0 && index < currentList.length - 1 ? currentList[index+1] : null;\n        }\n        \n        return found;\n    }\n\n    private rankList: Array<any> = [];\n\n    comparerByRank = (first: any, second: any) => {\n        let x = first ? first.rank : '';\n        let y = second ? second.rank : '';\n\n        if (x < y)\n            return -1;\n        else if (x > y)\n            return 1;\n        else\n            return 0;\n    }\n\n    private processRank(target?: any, dropPos?: number){\n        if (this.isRankButtonActive && target){\n            let targetIssue = target.issue;\n\n            this.rankList.length = 0;\n            for (let i = 0; i < this.dropListIssues.length; i++)\n                this.rankList.push(this.dropListIssues[i]);\n                \n            this.rankList.sort(this.comparerByRank);\n\n            \n            if (dropPos == 2)\n                this.rankList = this.rankList.reverse();\n           \n            let beforeIssue: any = null;\n            \n            for (let i = 0; i < this.rankList.length; i++){\n                let currentIssue = this.rankList[i];\n\n                switch (dropPos){\n                    case 1:\n                        this.issueService.atlassian.updateRank(currentIssue, null, targetIssue);\n                        beforeIssue = this.issueService.atlassian.find(currentIssue.id);\n                        break;\n                        \n                    case 2:\n                        this.issueService.atlassian.updateRank(currentIssue, targetIssue, null);\n                        break;\n                }\n            }\n        }\n    }\n    \n    private isMultiValueGroupPresent(flag?: boolean){\n        let found: boolean = false;\n        \n        let tempGroups = flag ? this.gridGroups2 : this.gridGroups;\n        \n        for (let j = 0; j < tempGroups.length; j++){\n            if (tempGroups[j].cid == this.versionsID || tempGroups[j].cid == this.fixVersionsID || tempGroups[j].cid == this.componentsID){\n                found = true;\n                break;\n            }\n        }\n        \n        return found;\n    }\n\n    private updateServerData(target?: any, dropPos?: number){\n        let self = this;\n        let result: Observable<IAtlassianIssue>[] = this.issueService.atlassian.updateIssues(\n          this.dropListIssues,\n          this.dropFieldNames,\n          this.dropFieldValues,\n          this.dropFieldRemoveValues\n        );\n\n        for (let i in result) {\n            result[i].subscribe(\n               (issueRefreshed: IAtlassianIssue) => {\n                    /*if (self.isRankButtonActive && target){\n                        console.log(target);\n                        // Locate the issue that is related with current atlassian issue\n                        let issue: IIssue = self.issueService.atlassian.find(issueRefreshed.id);\n                        console.log(issue);\n                        if (issue){\n                            switch (dropPos){\n                                case 1:\n                                    //let issueBefore = target.issue ? self.issueService.atlassian.find(target.issue.id);\n                                    //self.issueService.atlassian.updateRank(issue, )\n                                    break;\n                                    \n                                case 2:\n                                    break;\n                                    \n                                default:\n                                    break;\n                            }\n                        }\n                   }*/\n               },\n               err => self.notificationService.create(err.message || err, null, 'error')\n             );\n        }\n    }\n\n    private getParentGroup(id: any, list: Array<any>){\n        let found: any = null;\n        \n        for (let i = 0; i < list.length; i++){\n            if (list[i].id == id){\n                found = list[i];\n                break;\n            }\n        }\n\n        return found;\n    }\n\n    private extractDataFromTargetGroup(targetGroup: any, fullList: Array<any>, flag?: boolean, skipDialogGroup?: boolean){\n        if (targetGroup.cells && targetGroup.cells.length > 0){\n            let columnID = targetGroup.cells[0].valueID;\n            \n            let pass = skipDialogGroup ? columnID != this.versionsID && columnID != this.fixVersionsID && columnID != this.componentsID : true;\n            \n            if (pass){\n                let objValue = targetGroup.cells[0].related && targetGroup.cells[0].related.schemaType == 'issue-key' ? targetGroup.cells[0].related.value : targetGroup.cells[0].value;\n \n                let groupName = this.getFieldName(columnID);\n                let groupValue = this.getFieldValue(groupName, objValue);\n\n                if (columnID == 80)\n                    groupValue = targetGroup.cells[0].tag ? targetGroup.cells[0].tag.key : '';\n                    \n                this.dropFieldNames.push(groupName);\n                this.dropFieldValues.push(groupValue);\n\n                if (columnID == this.versionsID || columnID == this.fixVersionsID || columnID == this.componentsID){\n                    let removeList = this.createRemoveListFromDropRows(columnID);\n                    for (let i = 0; i < removeList.length; i++)\n                        this.dropFieldRemoveValues.push(removeList[i]);\n                }\n                else\n                    this.dropFieldRemoveValues.push([]);\n            }\n        }\n\n        if (targetGroup.pid){\n            let parentGroup = this.getParentGroup(targetGroup.pid, fullList); \n            if (parentGroup)\n                this.extractDataFromTargetGroup(parentGroup, fullList, flag, skipDialogGroup);\n        }\n        else if (targetGroup.cells && targetGroup.cells.length > 0){\n            let columnID = targetGroup.cells[0].valueID;\n            \n            let pass = skipDialogGroup ? columnID != this.versionsID && columnID != this.fixVersionsID && columnID != this.componentsID : true;\n            \n            if (pass){\n                let objValue = targetGroup.cells[0].related && targetGroup.cells[0].related.schemaType == 'issue-key' ? targetGroup.cells[0].related.tag : null;\n\n                let tempGroups = flag ? this.gridGroups2 : this.gridGroups;\n\n                let groupObj = this.findObjInList(tempGroups, 'cid', columnID);\n                let index = tempGroups.indexOf(groupObj);\n                if (index >= 0){\n                    for (let j = index-1; j >= 0; j--){\n                        if (this.getSchemaTypeByID(tempGroups[j].cid) == 'issue-key'){\n                            let groupName = this.getFieldName(tempGroups[j].cid);\n                            let groupValue = objValue;\n\n                            this.dropFieldNames.push(groupName);\n                            this.dropFieldValues.push(groupValue);\n                         }\n                    }\n                }\n            }\n        }\n    } \n    \n    private extractDataFromTargetRow(targetRow: any, flag?: boolean){\n        let tempGroups = flag ? this.gridGroups2 : this.gridGroups;\n\n        for (let j = 0; j < tempGroups.length; j++){\n            let columnID = tempGroups[j].cid;\n\n            let targetCell = this.gridService.getCellByColumnId(targetRow.cells, columnID);\n\n            if (targetCell){\n                let cellValue = this.getFieldValue(this.getFieldName(targetCell.cid), targetCell.tag);\n                if (!cellValue || cellValue == undefined){\n                    let issue = targetRow.issue && targetRow.issue.atlassian ? targetRow.issue.atlassian : null;\n                    if (issue){\n                        let issueTypeValue = issue.fields && issue.fields['issuetype'] ? issue.fields['issuetype'].name : '';\n                        if (issueTypeValue.toLowerCase() == 'epic')\n                            cellValue = issue.key;\n                    }\n                }\n\n                this.dropFieldNames.push(this.getFieldName(targetCell.cid));\n                this.dropFieldValues.push(cellValue);\n\n                if (columnID == this.versionsID || columnID == this.fixVersionsID || columnID == this.componentsID){\n                    let removeList = this.createRemoveListFromDropRows(columnID);\n                    for (let i = 0; i < removeList.length; i++)\n                        this.dropFieldRemoveValues.push(removeList[i]);\n                }\n                else\n                    this.dropFieldRemoveValues.push([]);\n            }\n                \n        }\n    } \n   \n    private isValuePresent(list: Array<any>, value: any){\n        let found: boolean = false;\n        \n        for (let i = 0; i < list.length; i++){\n            if (list[i].id == value){\n               found = true;\n               break;\n            }\n        }\n       \n       return found;\n    }  \n    \n    private createRemoveListFromDropRows(columnID: any){\n        let list: Array<any> = [];\n  \n        for (let i = 0; i < this.sourceDropList.length; i++){\n            let sourceCell = this.gridService.getCellByColumnId(this.sourceDropList[i].cells, columnID);\n            \n            if (sourceCell){\n                let cellValue = this.getFieldValue(this.getFieldName(sourceCell.cid), sourceCell.tag);\n                \n                if (!this.isValuePresent(list, cellValue))\n                    list.push(cellValue);\n            }\n        }\n\n        return list;\n    }\n    \n    \n    // Dialog ----------------------------------------------------------------------------\n    \n    private openDialog(){\n       this.issuePropertiesModal = true;\n    }\n    \n    private closeDialog(){\n        this.issuePropertiesModal = false;\n    }    \n    \n    private addDropFields(fieldID: any){\n        let targetData: any;\n        switch (fieldID){\n            case this.versionsID:\n                targetData = this.dialogData.versions;\n                break;\n            case this.fixVersionsID:\n                targetData = this.dialogData.fixVersions;\n                break;\n            case this.componentsID:\n                targetData = this.dialogData.components;\n                break;\n        }\n        \n        if (targetData){\n            targetData.addList = this.createIDList(targetData.list, 'add');                \n            targetData.removeList = this.createIDList(targetData.list, 'remove');                \n    \n            //console.log(\"Dialog ADD List:  \" + this.getFieldName(fieldID), targetData.addList);\n            //console.log(\"Dialog REMOVE List:  \" + this.getFieldName(fieldID), targetData.removeList);\n            \n            this.dropFieldNames.push(this.getFieldName(fieldID));\n            this.dropFieldValues.push(targetData.addList);\n            this.dropFieldRemoveValues.push(targetData.removeList);                \n        }\n    }\n    \n    public onDialogSubmit(e: any){\n        let cmp = this.getGridComponent(this.dialogData.flag);\n        if (cmp){\n            let fullList = cmp.getFullList();\n            \n            this.addDropFields(this.dialogData.versions.fieldID);\n            this.addDropFields(this.dialogData.fixVersions.fieldID);\n            this.addDropFields(this.dialogData.components.fieldID);\n\n            if (this.targetDropObject){\n                if (this.targetDropObject.type == 'group'){ // && this.targetDropObject.pid){\n                    //let parentGroup = this.getParentGroup(this.targetDropObject.pid, fullList); //cmp.getRowParent(targetGroup);\n                    //if (parentGroup)\n                        this.extractDataFromTargetGroup(this.targetDropObject, fullList, false, true);\n                }\n                else \n                    this.extractDataFromTargetRow(this.targetDropObject);\n            }\n\n            //console.log(\"listIssues ----------- \", this.dropListIssues);\n            //console.log(\"fieldNames ----------- \", this.dropFieldNames);\n            //console.log(\"Add fieldValues ----------- \", this.dropFieldValues);\n            //console.log(\"Remove fieldValues ----------- \", this.dropFieldRemoveValues);\n            \n            this.updateServerData();\n        }\n        \n        this.closeDialog();\n    }\n    \n    public onDialogCancel(e: any){\n        this.closeDialog();\n    }\n    \n    // Ranking ------------------------------------------------------------------------------\n\n    getRankValue(row: any){\n        let cellValue: any = null;\n\n        if (this.sortColumn){\n            let cell = this.gridService.getCellByColumnId(row.cells, this.sortColumn.id);\n            \n            switch (this.sortColumn.id){\n                case 2: // Summary\n                    if (row.type == 'group'){\n                        if (row.cells && row.cells.length > 0){\n                            cell = row.cells[0];\n                            \n                            switch (row.cells[0].valueID){\n                                case 6: // Assignee\n                                    cellValue = cell.value && cell.value != 'Other' ? cell.value.displayName : '';\n                                    break;\n                                \n                                case 16: // Created\n                                    cellValue = cell.value ? cell.value.valueOf() : null;\n                                    break;\n                                \n                                case 17: // Updated \n                                    cellValue = cell.value ? cell.value.valueOf() : null;\n                                    break;\n                                \n                                case 18: // Points\n                                    cellValue = cell.value != undefined && cell.value != 'Other' ? cell.value  : 0;\n                                    break;\n                                \n                                default:\n                                    cellValue = this.gridService.getCellValue(cell.valueID, cell.value);\n                                    break;\n                            }\n                        }\n                    }\n                    else if (cell)\n                        cellValue = row.issue ? row.issue.rank : '';\n                    break;\n            }\n        }\n\n        return cellValue;\n    }\n\n\n    rankComparer = (firstRow: any, secondRow: any) => {\n        let x: any = this.getRankValue(firstRow);\n        let y: any = this.getRankValue(secondRow);\n\n        switch (this.sorting){\n            case IntegralUISortOrder.Ascending:\n                if (x < y)\n                    return -1;\n                else if (x > y)\n                    return 1;\n                break;\n\n            case IntegralUISortOrder.Descending:\n                if (x > y)\n                    return -1;\n                else if (x < y)\n                    return 1;\n                break;\n\n            default:\n                return 0;\n        }\n    }\n    \n    rankButtonClicked(isActive: boolean, order?: IntegralUISortOrder){\n        this.isRankButtonActive = this.envService && this.envService.data && this.envService.data.board.ranking ? isActive : false;\n        this.applySorting(false, order);\n        \n        // IF THERE IS NO RANKING A NOTIFICATION MESSAGE SHOULD BE ADDED HERE TO NOTIFY THE USER THAT THE RANKING IS DISABLED\n        if (isActive && this.envService && this.envService.data && !this.envService.data.board.ranking)\n            this.notificationService.create('Page Ranking is disabled!', null, 'success');\n        \n        this.updateConfiguration();\n    }\n    \n    private applySorting(flag?: boolean, order?: IntegralUISortOrder, column?: any){\n        let cmp = this.getGridComponent(flag);\n        if (cmp){\n            let currentComparer = flag ? this.sortComparer2 : this.sortComparer;\n            \n            if (this.isRankButtonActive){\n                this.sorting = IntegralUISortOrder.Ascending;\n                this.sortColumn = cmp.getColumnById(2);\n                \n                currentComparer = this.rankComparer;\n            }\n            else {\n                if (flag){\n                    this.sorting2 = order != undefined ? order : this.sorting2;\n                    this.sortColumn2 = column ? column : this.sortColumn2;\n                }\n                else {\n                    this.sorting = order != undefined ? order : this.sorting;\n                    this.sortColumn = column ? column : this.sortColumn;\n                }\n             }\n\n            if (flag){\n                if (this.sortColumn2)\n                    cmp.sort(this.sortColumn2, this.sorting2, this.sortComparer);\n            }\n            else if (this.sortColumn)\n                cmp.sort(this.sortColumn, this.sorting, currentComparer);\n        }\n    }\n    \n    // Reorder ------------------------------------------------------------------------------\n    \n    gridColumnOrderChanged(e: any, flag?: boolean){\n        if (e.column)\n            this.updateConfiguration(flag);\n     }\n\n    // Resizing -----------------------------------------------------------------------------\n    \n    gridColumnSizeChanged(e: any, flag?: boolean){\n        if (e.column)\n            this.updateConfiguration(flag);\n     }\n    \n    // Sorting ------------------------------------------------------------------------------\n\n    private sorting: IntegralUISortOrder = IntegralUISortOrder.Ascending;\n    public sortColumn: any = null;\n    private prevColumn: any = null;\n    \n    private sorting2: IntegralUISortOrder = IntegralUISortOrder.Ascending;\n    public sortColumn2: any = null;\n    private prevColumn2: any = null;\n    \n    gridColumnClick(e: any, flag?: boolean){\n        let cmp = this.getGridComponent(flag);\n        if (cmp && !cmp.checkStatus('column-reorder') && \n            e.column && e.column.id != 21 && e.column.id != this.checkBoxColumnId && e.column.id != this.markerColumnId && e.column.id != this.handleColumnId && e.column.id != this.lastColumnId &&\n            !this.activeColumn){\n                \n            if (flag){\n                this.sortColumn2 = e.column;\n                this.prevColumn2 = e.column;\n                \n                if (e.column != this.prevColumn2){\n                    if (this.sorting2 == IntegralUISortOrder.None)\n                        this.sorting2 = IntegralUISortOrder.Ascending;\n                }\n                else {\n                    if (this.sorting2 == IntegralUISortOrder.Ascending)\n                        this.sorting2 = IntegralUISortOrder.Descending;\n                    else\n                        this.sorting2 = IntegralUISortOrder.Ascending;\n                }\n\n    \n                cmp.sort(e.column, this.sorting2, this.sortComparer2);\n                this.updateConfiguration();\n            }\n            else if (!this.isRankButtonActive){\n                this.sortColumn = e.column;\n                this.prevColumn = e.column;\n                \n                if (e.column != this.prevColumn){\n                    if (this.sorting == IntegralUISortOrder.None)\n                        this.sorting = IntegralUISortOrder.Ascending;\n                }\n                else {\n                    if (this.sorting == IntegralUISortOrder.Ascending)\n                        this.sorting = IntegralUISortOrder.Descending;\n                    else\n                        this.sorting = IntegralUISortOrder.Ascending;\n                }\n \n                cmp.sort(e.column, this.sorting, this.sortComparer);\n                this.updateConfiguration();\n            }\n       \n            let self = this;\n            setTimeout(function(){\n                let list = cmp.getList('current');\n                \n                for (let i = 0; i < list.length; i++){\n                    let cell = cmp.getCellByColumnId(list[i].cells, 2);\n                    //console.log(i, self.getSortValue(list[i]));\n                }\n            }, 5000);\n        }\n     }\n\n    getSortValue(row: any, flag?: boolean){\n        let cellValue: any = null;\n\n        let tempSortColumn = flag ? this.sortColumn2 : this.sortColumn;\n        \n        if (tempSortColumn){\n            let cell = this.gridService.getCellByColumnId(row.cells, tempSortColumn.id);\n            \n            switch (tempSortColumn.id){\n                case 2: // Summary\n                    if (row.type == 'group'){\n                        if (row.cells && row.cells.length > 0){\n                            cell = row.cells[0];\n                            \n                            if (!cell.isModified){\n                                switch (this.getSchemaTypeByID(cell.valueID)){\n                                    case 'array[component]':\n                                        cellValue = this.gridService.getCellValue(tempSortColumn.id, cell.value, true);\n                                        break;\n        \n                                    case 'array[sprint]':\n                                        cellValue = this.gridService.getCellValue(tempSortColumn.id, cell.value, true);\n                                        break;\n        \n                                    case 'array[version]':\n                                        cellValue = this.gridService.getCellValue(tempSortColumn.id, cell.value, true);\n                                        break;\n        \n                                    case 'datetime':\n                                        cellValue = cell.value ? cell.value.valueOf() : null;\n                                        break;\n        \n                                    case 'issuetype':\n                                        cellValue = cell.value ? cell.value.name : null;\n                                        break;\n        \n                                    case 'number':\n                                        cellValue = cell.value != undefined && cell.value != 'Other' ? cell.value  : 0;\n                                        break;\n            \n                                    case 'priority':\n                                        cellValue = cell.value ? cell.value.name : null;\n                                        break;\n            \n                                    case 'progress':\n                                        cellValue = this.getProgressValue(cell.value);\n                                        break;\n        \n                                    case 'project':\n                                        cellValue = cell.value ? cell.value.displayValue : null;\n                                        break;\n        \n                                    case 'status':\n                                        cellValue = cell.tag ? cell.tag.name : '';\n                                        break;\n        \n                                    case 'user':\n                                        cellValue = cell.value ? cell.value.displayValue : null;\n                                        break;\n        \n                                    case 'watches':\n                                        cellValue = cell.value ? cell.value.isWatching : false;\n                                        break;\n           \n                                    default:\n                                        cellValue = this.gridService.getCellValue(cell.valueID, cell.value);\n                                        break;\n                                }\n                            }\n                            else {\n                                cellValue = cell.value ? cell.value.tag : null;\n                                cellValue = this.gridService.getCellValue(cell.valueID, cellValue);\n                            }\n                        }\n                    }\n                    else if (cell)\n                        cellValue = cell.tag; //this.gridService.getCellValue(tempSortColumn.id, cell.tag, true);\n                    break;\n                    \n\n                default:\n                    if (cell){\n                        switch (this.getSchemaTypeByID(tempSortColumn.id)){\n                            case 'array[component]':\n                                cellValue = row.type == 'group' && cell.value ? cell.value.multiValue : cell.multiValue;\n                                cellValue = this.gridService.getCellValue(tempSortColumn.id, cellValue, true);\n                                break;\n\n                            case 'array[sprint]':\n                                cellValue = row.type == 'group' && cell.value ? cell.value.multiValue : cell.multiValue;\n                                cellValue = this.gridService.getCellValue(tempSortColumn.id, cellValue, true);\n                                break;\n\n                            case 'array[version]':\n                                cellValue = row.type == 'group' && cell.value ? cell.value.multiValue : cell.multiValue;\n                                cellValue = this.gridService.getCellValue(tempSortColumn.id, cellValue, true);\n                                break;\n\n                            case 'datetime':\n                                cellValue = row.type == 'group' && cell.value ? cell.value.tag : cell.tag;\n                                cellValue = cellValue ? cellValue.valueOf() : null;\n                                break;\n\n                            case 'issuetype':\n                                cellValue = row.type == 'group' && cell.value ? cell.value.displayValue : cell.displayValue;\n                                break;\n\n                            case 'number':\n                                if  (this.getAggregationTypeByID(tempSortColumn.id) == 'PROGRESS'){\n                                    cellValue = row.type == 'group' ? cell.value : this.getCellAggregationValue(cell);\n                                    cellValue = cellValue.toDo + cellValue.inProgress + cellValue.done;\n                                }\n                                else \n                                    cellValue = row.type == 'group' ? cell.value : this.getCellAggregationValue(cell);\n                                break;\n    \n                            case 'priority':\n                                cellValue = row.type == 'group' && cell.value ? cell.value.displayValue : cell.displayValue;\n                                break;\n    \n                            case 'progress':\n                                cellValue = row.type == 'group' ? cell.value :  this.getProgressValue(cell.tag);\n                                break;\n\n                            case 'project':\n                                cellValue = row.type == 'group' && cell.value ? cell.value.displayValue : cell.displayValue;\n                                break;\n\n                            case 'status':\n                                cellValue = row.type == 'group' && cell.value ? \n                                    (cell.value.tag ? cell.value.tag.name : '') :\n                                    (cell.tag ? cell.tag.name : '');\n                                break;\n\n                            case 'user':\n                                cellValue = row.type == 'group' && cell.value ? cell.value.displayValue : cell.displayValue;\n                                break;\n\n                            case 'watches':\n                                 cellValue = row.type == 'group' && cell.value ? \n                                    (cell.value.tag ? cell.value.tag.isWatching : false) :\n                                    (cell.tag ? cell.tag.isWatching : false);\n                                break;\n   \n                            default:\n                                cellValue = row.type == 'group' && cell.value ? cell.value.tag : cell.tag;\n                                cellValue = this.gridService.getCellValue(tempSortColumn.id, cellValue, true);\n                                break;\n                        }\n                        break;\n                    }\n            }\n        }\n\n        return cellValue;\n    }\n\n    sortComparer = (firstRow: any, secondRow: any) => {\n        let x: any = this.getSortValue(firstRow);\n        let y: any = this.getSortValue(secondRow);\n\n        this.commonService.isString(x) ? x = x.toLowerCase() : x;\n        this.commonService.isString(y) ? y = y.toLowerCase() : y;\n \n        switch (this.sorting){\n            case IntegralUISortOrder.Ascending:\n                if (x < y)\n                    return -1;\n                else if (x > y)\n                    return 1;\n                break;\n\n            case IntegralUISortOrder.Descending:\n                if (x > y)\n                    return -1;\n                else if (x < y)\n                    return 1;\n                break;\n\n            default:\n                return 0;\n        }\n    }\n\n    sortComparer2 = (firstRow: any, secondRow: any) => {\n        let x: any = this.getSortValue(firstRow, true);\n        let y: any = this.getSortValue(secondRow, true);\n\n        switch (this.sorting2){\n            case IntegralUISortOrder.Ascending:\n                if (x < y)\n                    return -1;\n                else if (x > y)\n                    return 1;\n                break;\n\n            case IntegralUISortOrder.Descending:\n                if (x > y)\n                    return -1;\n                else if (x < y)\n                    return 1;\n                break;\n\n            default:\n                return 0;\n        }\n    }\n    \n    getColumnSortClass(flag?: boolean){\n        let className: string = 'column-sort';\n        \n        let tempSorting = flag ? this.sorting2 : this.sorting;\n        \n        switch (tempSorting){\n            case IntegralUISortOrder.Ascending:\n                className += ' column-sort-ascending';\n                break;\n                \n            case IntegralUISortOrder.Descending:\n                className += ' column-sort-descending';\n                break;\n        }\n        \n        return className;\n    }\n\n    gridKeyDown(e: any, flag?: boolean){\n        switch (e.keyCode){\n            case 27: // ESCAPE\n                this.resetCellStatus(flag);\n                break;\n        }\n    }\n    \n    // Update ----------------------------------------------------------------------------\n    \n    onGridBeforeCollapse(e: any){\n        this.closeActivePanel();\n        this.resetEditor();\n    }\n    \n    onGridBeforeExpand(e: any){\n        this.closeActivePanel();\n        this.resetEditor();\n    }\n    \n    onGridBeforeUpdate(e: any){\n        //this.closeActivePanel();\n        this.resetEditor();\n    }\n    \n    onGridAfterCollapse(e: any){\n        this.updateConfiguration();\n    }\n    \n    onGridAfterExpand(e: any){\n        this.updateConfiguration();\n    }\n    \n    getCellValue(id: any, fieldObj: any, flag?: boolean){\n        return this.gridService.getCellValue(id, fieldObj, flag);\n    }\n}\n","\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require(\"@angular/core\");\r\nvar integralui_core_1 = require(\"./integralui.core\");\r\nvar integralui_common_service_1 = require(\"../services/integralui.common.service\");\r\nvar IntegralUIComboBox = (function (_super) {\r\n    __extends(IntegralUIComboBox, _super);\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUIComboBox(commonService, cmpResolver) {\r\n        var _this = _super.call(this, commonService) || this;\r\n        _this.commonService = commonService;\r\n        _this.cmpResolver = cmpResolver;\r\n        _this.eventList = [];\r\n        // General\r\n        _this.expandState = 'none';\r\n        _this.initStatus = true;\r\n        _this.isExpanded = false;\r\n        _this.isSelected = false;\r\n        _this.supressCallback = false;\r\n        _this.contentBorder = '0px';\r\n        _this.contentHeight = '0';\r\n        _this.contentDisplay = 'block';\r\n        _this.contentOpacity = 1;\r\n        _this.contentOverflowY = 'hidden';\r\n        _this.listSize = { width: 0, height: 0 };\r\n        _this.maxBlockHeight = 0;\r\n        _this.itemSizeList = [];\r\n        // Style\r\n        _this.contentClassName = '';\r\n        _this.headerClassName = '';\r\n        _this.headerExpandBoxClassName = '';\r\n        _this.itemGeneralClassName = '';\r\n        _this.itemContentClassName = '';\r\n        _this.contentClass = [];\r\n        // Events ----------------------------------------------------------------------------\r\n        _this.click = new core_1.EventEmitter();\r\n        _this.dropDownClosed = new core_1.EventEmitter();\r\n        _this.dropDownClosing = new core_1.EventEmitter();\r\n        _this.dropDownOpened = new core_1.EventEmitter();\r\n        _this.dropDownOpening = new core_1.EventEmitter();\r\n        _this.selectedItemChanged = new core_1.EventEmitter();\r\n        _this.selectedIndexChanged = new core_1.EventEmitter();\r\n        _this.itemList = [];\r\n        _this.integralHeight = false;\r\n        _this.maxDropDownItems = 5;\r\n        _this.listSize = { width: 0, height: 0 };\r\n        _this.itemSizeList = [];\r\n        return _this;\r\n    }\r\n    Object.defineProperty(IntegralUIComboBox.prototype, \"dropDownWidth\", {\r\n        get: function () {\r\n            return this.listSize.width;\r\n        },\r\n        set: function (value) {\r\n            if (this.listSize.width != value) {\r\n                if (!this.comboWidth || value >= this.comboWidth)\r\n                    this.listSize.width = value;\r\n                else if (this.comboWidth)\r\n                    this.listSize.width = this.comboWidth;\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIComboBox.prototype, \"expanded\", {\r\n        get: function () {\r\n            return this.isExpanded;\r\n        },\r\n        set: function (value) {\r\n            if (this.isExpanded != value) {\r\n                var self_1 = this;\r\n                var eventResult = self_1.callBeforeEvent(value);\r\n                if (eventResult) {\r\n                    if (value)\r\n                        self_1.expandState = 'expand';\r\n                    else\r\n                        self_1.expandState = 'collapse';\r\n                    var expandStateTimer_1 = setTimeout(function () {\r\n                        if (self_1.expandState == 'collapse')\r\n                            self_1.expandState = 'none';\r\n                        clearTimeout(expandStateTimer_1);\r\n                    }, 300);\r\n                    self_1.isExpanded = value;\r\n                    if (value)\r\n                        self_1.header.state |= integralui_core_1.IntegralUIObjectState.selected;\r\n                    else\r\n                        self_1.header.state &= ~integralui_core_1.IntegralUIObjectState.selected;\r\n                    self_1.header.animationState = self_1.isExpanded ? 'expand' : 'collapse';\r\n                    self_1.updateContentClass();\r\n                    self_1.toggleContent();\r\n                }\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIComboBox.prototype, \"selectedIndex\", {\r\n        get: function () {\r\n            return this.currentIndex;\r\n        },\r\n        set: function (value) {\r\n            this.updateSelection(value);\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIComboBox.prototype, \"selectedItem\", {\r\n        get: function () {\r\n            return this.currentSelection;\r\n        },\r\n        set: function (value) {\r\n            if (this.currentSelection != value) {\r\n                var index = this.items ? this.items.indexOf(value) : -1;\r\n                this.updateSelection(index);\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    IntegralUIComboBox.prototype.ngOnInit = function () {\r\n        this.generalClassName = \"iui-combobox\";\r\n        this.headerClassName = this.generalClassName + \"-header\";\r\n        this.headerExpandBoxClassName = this.headerClassName + \"-expand-box\";\r\n        this.contentClassName = this.generalClassName + \"-dropdown\";\r\n        this.itemGeneralClassName = this.generalClassName + \"-item\";\r\n        this.itemContentClassName = this.itemGeneralClassName + \"-content\";\r\n        this.defaultStyle = {\r\n            general: {\r\n                disabled: this.generalClassName + '-disabled',\r\n                focused: this.generalClassName + '-focused',\r\n                normal: this.generalClassName,\r\n                hovered: this.generalClassName + '-hovered',\r\n                selected: this.generalClassName + '-selected'\r\n            },\r\n            header: {\r\n                general: {\r\n                    disabled: this.headerClassName + '-disabled',\r\n                    focused: this.headerClassName + '-focused',\r\n                    normal: this.headerClassName,\r\n                    hovered: this.headerClassName + '-hovered',\r\n                    selected: this.headerClassName + '-selected'\r\n                },\r\n                expandBox: this.headerExpandBoxClassName\r\n            },\r\n            content: {\r\n                general: this.contentClassName,\r\n                expanded: this.contentClassName + '-expand',\r\n                collapsed: this.contentClassName + '-collapse'\r\n            },\r\n            item: {\r\n                general: {\r\n                    disabled: this.itemGeneralClassName + '-disabled',\r\n                    focused: this.itemGeneralClassName + '-focused',\r\n                    normal: this.itemGeneralClassName,\r\n                    hovered: this.itemGeneralClassName + '-hovered',\r\n                    selected: this.itemGeneralClassName + '-selected'\r\n                },\r\n                content: {\r\n                    disabled: this.itemContentClassName + '-disabled',\r\n                    focused: this.itemContentClassName + '-focused',\r\n                    normal: this.itemContentClassName,\r\n                    hovered: this.itemContentClassName + '-hovered',\r\n                    selected: this.itemContentClassName + '-selected'\r\n                }\r\n            }\r\n        };\r\n        this.updateStyle(this.controlStyle);\r\n        this.updateControlClass();\r\n        this.updateContentClass();\r\n    };\r\n    IntegralUIComboBox.prototype.ngAfterViewInit = function () {\r\n        var self = this;\r\n        if (self.headerElem) {\r\n            self.comboWidth = self.headerElem.nativeElement.firstElementChild.clientWidth;\r\n            if (self.dropDownWidth < self.comboWidth)\r\n                self.dropDownWidth = self.comboWidth;\r\n        }\r\n    };\r\n    IntegralUIComboBox.prototype.ngAfterContentInit = function () {\r\n        var self = this;\r\n        self.attachItemEvents();\r\n        self.contentList.changes.subscribe(function () {\r\n            self.attachItemEvents();\r\n        });\r\n        self.updateSelectedIndex(self.selectedIndex);\r\n        var initTimeout = setTimeout(function () {\r\n            self.calcBlockHeight();\r\n            self.contentDisplay = 'none';\r\n            self.contentHeight = \"0\";\r\n            self.expandState = 'none';\r\n            clearTimeout(initTimeout);\r\n        }, 100);\r\n    };\r\n    // Content ---------------------------------------------------------------------------\r\n    IntegralUIComboBox.prototype.attachItemEvents = function () {\r\n        var self = this;\r\n        this.itemList = this.contentList.toArray();\r\n        // Remove existing event subscriptions\r\n        if (self.eventList) {\r\n            self.eventList.forEach(function (list) {\r\n                list.forEach(function (obj) {\r\n                    obj.unsubscribe();\r\n                });\r\n            });\r\n            self.eventList.length = 0;\r\n        }\r\n        // Subscribe to events in each item\r\n        if (this.itemList && this.itemList.length > 0) {\r\n            this.itemList.forEach(function (item) {\r\n                // Create an array of Subscriber objects for each subscribed event\r\n                var eventList = [];\r\n                eventList.push(item.mouseDown.subscribe(function (e) {\r\n                    var selIndex = self.itemList.indexOf(item);\r\n                    self.updateSelection(selIndex);\r\n                    self.closeDropDown();\r\n                }));\r\n                // Add a list of subscribed events for each item\r\n                //  We will use this list later to unsubscribe existing events\r\n                // This is required to avoid duplicate event handlers for the same event\r\n                self.eventList.push(eventList);\r\n            });\r\n        }\r\n    };\r\n    // Event Handlers -------------------------------------------------------------------\r\n    IntegralUIComboBox.prototype.comboClick = function (e) {\r\n        if (this.isEnabled && e.buttons == 1) {\r\n            this.initStatus = false;\r\n            if (this.expanded)\r\n                this.closeDropDown();\r\n            else\r\n                this.openDropDown();\r\n        }\r\n    };\r\n    IntegralUIComboBox.prototype.dropDownBlurEvent = function (e) {\r\n        if (this.isEnabled) {\r\n            e.preventDefault();\r\n            var self_2 = this;\r\n            var closeTimer_1 = setTimeout(function () {\r\n                self_2.closeDropDown();\r\n                clearTimeout(closeTimer_1);\r\n            }, 1);\r\n        }\r\n        e.stopPropagation();\r\n    };\r\n    // Events ----------------------------------------------------------------------------\r\n    IntegralUIComboBox.prototype.callBeforeEvent = function (value) {\r\n        var eventObj = { cancel: false };\r\n        if (value)\r\n            this.dropDownOpening.emit(eventObj);\r\n        else\r\n            this.dropDownClosing.emit(eventObj);\r\n        return !eventObj.cancel;\r\n    };\r\n    IntegralUIComboBox.prototype.callAfterEvent = function (value) {\r\n        if (value)\r\n            this.dropDownOpened.emit(null);\r\n        else\r\n            this.dropDownClosed.emit(null);\r\n    };\r\n    // Expand/Collapse -------------------------------------------------------------------\r\n    IntegralUIComboBox.prototype.closeDropDown = function () {\r\n        this.expanded = false;\r\n        if (this.dropDownElem)\r\n            this.dropDownElem.nativeElement.blur();\r\n    };\r\n    IntegralUIComboBox.prototype.openDropDown = function () {\r\n        var self = this;\r\n        self.expanded = true;\r\n        var focusTimeout = setTimeout(function () {\r\n            if (self.dropDownElem)\r\n                self.dropDownElem.nativeElement.focus();\r\n            clearTimeout(focusTimeout);\r\n        }, 5);\r\n    };\r\n    // General ---------------------------------------------------------------------------\r\n    IntegralUIComboBox.prototype.getComboIcon = function () {\r\n        return this.selectedItem ? this.selectedItem.icon : '';\r\n    };\r\n    IntegralUIComboBox.prototype.getComboIconUrl = function () {\r\n        return this.selectedItem ? this.selectedItem.iconUrl : '';\r\n    };\r\n    IntegralUIComboBox.prototype.getComboText = function () {\r\n        return this.selectedItem ? this.selectedItem.text : '_';\r\n    };\r\n    IntegralUIComboBox.prototype.isIndexInRange = function (index) {\r\n        return this.items ? index >= 0 && index < this.items.length : false;\r\n    };\r\n    // Layout ----------------------------------------------------------------------------\r\n    IntegralUIComboBox.prototype.getDropDownWidth = function () {\r\n        if (this.dropDownWidth > 0)\r\n            return this.dropDownWidth;\r\n        else if (this.comboWidth)\r\n            return this.comboWidth;\r\n        return 0;\r\n    };\r\n    IntegralUIComboBox.prototype.calcBlockHeight = function () {\r\n        var self = this;\r\n        self.itemSizeList.length = 0;\r\n        self.itemList = self.contentList.toArray();\r\n        if (self.itemList && self.itemList.length > 0) {\r\n            var counter_1 = 0;\r\n            var prevItemHeight = -1;\r\n            var isThereDifferentSizeItems = false;\r\n            self.itemList.forEach(function (item) {\r\n                var itemSize = item.getSize();\r\n                var itemMargin = item.getMargin();\r\n                self.itemSizeList.push({ size: itemSize, margin: itemMargin });\r\n                counter_1++;\r\n            });\r\n        }\r\n    };\r\n    IntegralUIComboBox.prototype.getDropDownHeight = function () {\r\n        var self = this;\r\n        if (self.dropDownHeight > 0)\r\n            return self.dropDownHeight;\r\n        var defaultItemHeight = 30;\r\n        var blockHeight = 0;\r\n        var lastItemMargin = 0;\r\n        self.itemList = self.contentList.toArray();\r\n        if (self.itemList && self.itemList.length > 0) {\r\n            var counter_2 = 0;\r\n            var prevItemHeight_1 = -1;\r\n            var isThereDifferentSizeItems_1 = false;\r\n            self.itemList.forEach(function (item, i) {\r\n                if (i < self.itemSizeList.length) {\r\n                    if (counter_2 < self.maxDropDownItems) {\r\n                        blockHeight += self.itemSizeList[i].size.height;\r\n                        if (!isThereDifferentSizeItems_1 && self.itemSizeList[i].size.height != prevItemHeight_1 && prevItemHeight_1 > 0)\r\n                            isThereDifferentSizeItems_1 = true;\r\n                        prevItemHeight_1 = self.itemSizeList[i].size.height;\r\n                        lastItemMargin = self.itemSizeList[i].margin.bottom;\r\n                    }\r\n                    counter_2++;\r\n                }\r\n            });\r\n            if (counter_2 > 0)\r\n                blockHeight += lastItemMargin;\r\n            if (!self.integralHeight) {\r\n                var factor = isThereDifferentSizeItems_1 ? self.maxDropDownItems + 1 : self.maxDropDownItems;\r\n                var num = counter_2 < self.maxDropDownItems ? counter_2 : self.maxDropDownItems;\r\n                var avgItemHeight = Math.floor(blockHeight / num);\r\n                blockHeight = avgItemHeight * factor;\r\n            }\r\n        }\r\n        return blockHeight;\r\n    };\r\n    IntegralUIComboBox.prototype.toggleContent = function () {\r\n        var self = this;\r\n        var currentHeight = 0;\r\n        var accelerator = 0;\r\n        self.maxBlockHeight = self.getDropDownHeight();\r\n        self.contentOverflowY = 'hidden';\r\n        if (self.expanded) {\r\n            self.contentDisplay = 'block';\r\n            self.contentBorder = '1px';\r\n            var openTimer_1 = setInterval(function () {\r\n                if (currentHeight + accelerator < self.maxBlockHeight) {\r\n                    accelerator = accelerator == 0 ? 1 : accelerator + 2;\r\n                    currentHeight += accelerator;\r\n                    self.contentHeight = currentHeight + 'px';\r\n                }\r\n                else {\r\n                    self.contentHeight = self.maxBlockHeight + 'px';\r\n                    self.contentOverflowY = 'auto';\r\n                    self.expandState = 'none';\r\n                    self.callAfterEvent(true);\r\n                    clearInterval(openTimer_1);\r\n                }\r\n            }, 15);\r\n        }\r\n        else {\r\n            //self.maxBlockHeight = self.contentElem.nativeElement.offsetHeight;\r\n            currentHeight = self.maxBlockHeight;\r\n            var closeTimer_2 = setInterval(function () {\r\n                if (currentHeight > 0) {\r\n                    accelerator = accelerator == 0 ? 1 : accelerator + 2;\r\n                    currentHeight -= accelerator;\r\n                    self.contentHeight = currentHeight + 'px';\r\n                }\r\n                else {\r\n                    self.contentBorder = '0px';\r\n                    self.contentDisplay = 'none';\r\n                    self.contentHeight = \"0\";\r\n                    self.expandState = 'none';\r\n                    self.callAfterEvent();\r\n                    clearInterval(closeTimer_2);\r\n                }\r\n            }, 15);\r\n        }\r\n    };\r\n    // Selection -------------------------------------------------------------------------\r\n    IntegralUIComboBox.prototype.clearSelection = function (cmp) {\r\n        this.itemList = this.contentList.toArray();\r\n        this.itemList.forEach(function (currentCmp, i) {\r\n            if (currentCmp != cmp)\r\n                currentCmp.state &= ~integralui_core_1.IntegralUIObjectState.selected;\r\n        });\r\n    };\r\n    IntegralUIComboBox.prototype.updateSelectedIndex = function (index) {\r\n        if (this.isIndexInRange(index)) {\r\n            this.currentSelection = this.items[index];\r\n            this.selectedItemChanged.emit({ item: this.currentSelection });\r\n            if (this.contentList) {\r\n                this.itemList = this.contentList.toArray();\r\n                if (this.itemList && index < this.itemList.length)\r\n                    this.itemList[index].state |= integralui_core_1.IntegralUIObjectState.selected;\r\n            }\r\n        }\r\n    };\r\n    IntegralUIComboBox.prototype.updateSelection = function (index) {\r\n        //if (this.currentIndex != index && this.isIndexInRange(index)){\r\n        if (this.isIndexInRange(index)) {\r\n            this.currentIndex = index;\r\n            var self_3 = this;\r\n            var selIndexTimer_1 = setTimeout(function () {\r\n                self_3.clearSelection();\r\n                self_3.updateSelectedIndex(index);\r\n                self_3.selectedIndexChanged.emit({ index: index });\r\n                clearTimeout(selIndexTimer_1);\r\n            }, 1);\r\n        }\r\n    };\r\n    // Style -----------------------------------------------------------------------------\r\n    IntegralUIComboBox.prototype.updateContentClass = function () {\r\n        this.contentClass.length = 0;\r\n        this.contentClass.push(this.options.currentStyle.content.general);\r\n        if (this.expanded != false) {\r\n            if (this.expandState == 'expand')\r\n                this.contentClass.push(this.options.currentStyle.content.expanded);\r\n        }\r\n        else {\r\n            if (this.expandState == 'collapse')\r\n                this.contentClass.push(this.options.currentStyle.content.collapsed);\r\n        }\r\n    };\r\n    IntegralUIComboBox.prototype.getContentClass = function () {\r\n        return this.contentClass;\r\n    };\r\n    IntegralUIComboBox.prototype.getContentStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                general: this.commonService.isFieldAvailable(value.general, this.contentClassName),\r\n                expanded: this.commonService.isFieldAvailable(value.expanded, this.contentClassName + '-expand'),\r\n                collapsed: this.commonService.isFieldAvailable(value.collapsed, this.contentClassName + '-collapse')\r\n            };\r\n        else\r\n            return {\r\n                general: this.defaultStyle.content.general,\r\n                expanded: this.defaultStyle.content.expanded,\r\n                collapsed: this.defaultStyle.content.collapsed\r\n            };\r\n    };\r\n    IntegralUIComboBox.prototype.getHeaderClass = function () {\r\n        var classValue = this.headerClassName;\r\n        if (this.state & integralui_core_1.IntegralUIObjectState.disabled)\r\n            classValue += ' ' + this.options.currentStyle.header.disabled;\r\n        else if (this.state & integralui_core_1.IntegralUIObjectState.focused)\r\n            classValue += ' ' + this.options.currentStyle.header.focused;\r\n        else if (this.state & integralui_core_1.IntegralUIObjectState.selected)\r\n            classValue += ' ' + this.options.currentStyle.header.selected;\r\n        else if (this.state & integralui_core_1.IntegralUIObjectState.hovered)\r\n            classValue += ' ' + this.options.currentStyle.header.hovered;\r\n        else\r\n            classValue += ' ' + this.options.currentStyle.header.normal;\r\n        return classValue;\r\n    };\r\n    IntegralUIComboBox.prototype.getHeaderGeneralStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                disabled: this.commonService.isFieldAvailable(value.hovered, this.headerClassName + '-disabled'),\r\n                focused: this.commonService.isFieldAvailable(value.hovered, this.headerClassName + '-focused'),\r\n                hovered: this.commonService.isFieldAvailable(value.hovered, this.headerClassName + '-hovered'),\r\n                normal: this.commonService.isFieldAvailable(value.normal, this.headerClassName),\r\n                selected: this.commonService.isFieldAvailable(value.selected, this.headerClassName + '-selected')\r\n            };\r\n        else\r\n            return {\r\n                disabled: this.defaultStyle.header.general.disabled,\r\n                focused: this.defaultStyle.header.general.focused,\r\n                hovered: this.defaultStyle.header.general.hovered,\r\n                normal: this.defaultStyle.header.general.normal,\r\n                selected: this.defaultStyle.header.general.selected\r\n            };\r\n    };\r\n    IntegralUIComboBox.prototype.getHeaderStyle = function (value) {\r\n        if (value)\r\n            return {\r\n                general: this.getHeaderGeneralStyle(value.general),\r\n                expandBox: this.commonService.isFieldAvailable(value.expandBox, this.headerExpandBoxClassName)\r\n            };\r\n        else\r\n            return {\r\n                general: this.getHeaderGeneralStyle(),\r\n                expandBox: this.defaultStyle.header.expandBox\r\n            };\r\n    };\r\n    IntegralUIComboBox.prototype.getCurrentHeaderStyle = function () {\r\n        return this.options.currentStyle.header;\r\n    };\r\n    IntegralUIComboBox.prototype.getItemStyle = function (value) {\r\n        if (value)\r\n            return {\r\n                general: this.getItemGeneralStyle(value.general),\r\n                content: this.getItemContentStyle(value.content)\r\n            };\r\n        else\r\n            return {\r\n                general: this.getItemGeneralStyle(),\r\n                content: this.getItemContentStyle()\r\n            };\r\n    };\r\n    IntegralUIComboBox.prototype.getItemGeneralStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                disabled: this.commonService.isFieldAvailable(value.disabled, this.itemGeneralClassName + '-disabled'),\r\n                focused: this.commonService.isFieldAvailable(value.focused, this.itemGeneralClassName + '-focused'),\r\n                hovered: this.commonService.isFieldAvailable(value.hovered, this.itemGeneralClassName + '-hovered'),\r\n                normal: this.commonService.isFieldAvailable(value.normal, this.itemGeneralClassName),\r\n                selected: this.commonService.isFieldAvailable(value.selected, this.itemGeneralClassName + '-selected')\r\n            };\r\n        else {\r\n            return {\r\n                disabled: this.defaultStyle.item.general.disabled,\r\n                focused: this.defaultStyle.item.general.focused,\r\n                hovered: this.defaultStyle.item.general.hovered,\r\n                normal: this.defaultStyle.item.general.normal,\r\n                selected: this.defaultStyle.item.general.selected\r\n            };\r\n        }\r\n    };\r\n    IntegralUIComboBox.prototype.getItemContentStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                disabled: this.commonService.isFieldAvailable(value.disabled, this.itemContentClassName + '-disabled'),\r\n                focused: this.commonService.isFieldAvailable(value.focused, this.itemContentClassName + '-focused'),\r\n                hovered: this.commonService.isFieldAvailable(value.hovered, this.itemContentClassName + '-hovered'),\r\n                normal: this.commonService.isFieldAvailable(value.normal, this.itemContentClassName),\r\n                selected: this.commonService.isFieldAvailable(value.selected, this.itemContentClassName + '-selected')\r\n            };\r\n        else {\r\n            return {\r\n                disabled: this.defaultStyle.item.content.disabled,\r\n                focused: this.defaultStyle.item.content.focused,\r\n                hovered: this.defaultStyle.item.content.hovered,\r\n                normal: this.defaultStyle.item.content.normal,\r\n                selected: this.defaultStyle.item.content.selected\r\n            };\r\n        }\r\n    };\r\n    IntegralUIComboBox.prototype.updateStyle = function (value) {\r\n        if (value)\r\n            this.options.currentStyle = {\r\n                general: this.getGeneralStyle(value.general),\r\n                header: this.getHeaderStyle(value.header),\r\n                content: this.getContentStyle(value.content),\r\n                item: this.getItemStyle(value.content)\r\n            };\r\n        else\r\n            this.options.currentStyle = {\r\n                general: {\r\n                    disabled: this.defaultStyle.general.disabled,\r\n                    focused: this.defaultStyle.general.focused,\r\n                    hovered: this.defaultStyle.general.hovered,\r\n                    normal: this.defaultStyle.general.normal,\r\n                    selected: this.defaultStyle.general.selected\r\n                },\r\n                header: {\r\n                    general: {\r\n                        disabled: this.defaultStyle.header.general.disabled,\r\n                        focused: this.defaultStyle.header.general.focused,\r\n                        hovered: this.defaultStyle.header.general.hovered,\r\n                        normal: this.defaultStyle.header.general.normal,\r\n                        selected: this.defaultStyle.header.general.selected\r\n                    },\r\n                    expandBox: this.defaultStyle.header.expandBox\r\n                },\r\n                content: {\r\n                    general: this.defaultStyle.content.general,\r\n                    expanded: this.defaultStyle.content.expanded,\r\n                    collapsed: this.defaultStyle.content.collapsed\r\n                },\r\n                item: {\r\n                    general: {\r\n                        disabled: this.defaultStyle.item.general.disabled,\r\n                        focused: this.defaultStyle.item.general.focused,\r\n                        hovered: this.defaultStyle.item.general.hovered,\r\n                        normal: this.defaultStyle.item.general.normal,\r\n                        selected: this.defaultStyle.item.general.selected\r\n                    },\r\n                    content: {\r\n                        disabled: this.defaultStyle.item.content.disabled,\r\n                        focused: this.defaultStyle.item.content.focused,\r\n                        hovered: this.defaultStyle.item.content.hovered,\r\n                        normal: this.defaultStyle.item.content.normal,\r\n                        selected: this.defaultStyle.item.content.selected\r\n                    }\r\n                }\r\n            };\r\n    };\r\n    return IntegralUIComboBox;\r\n}(integralui_core_1.IntegralUIBaseComponent));\r\n__decorate([\r\n    core_1.ViewChild('control', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.ElementRef)\r\n], IntegralUIComboBox.prototype, \"controlElem\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('header'),\r\n    __metadata(\"design:type\", integralui_core_1.IntegralUIHeaderItem)\r\n], IntegralUIComboBox.prototype, \"header\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('header', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.ElementRef)\r\n], IntegralUIComboBox.prototype, \"headerElem\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('header', { read: core_1.ViewContainerRef }),\r\n    __metadata(\"design:type\", core_1.ViewContainerRef)\r\n], IntegralUIComboBox.prototype, \"headerRef\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('dropdown', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.ElementRef)\r\n], IntegralUIComboBox.prototype, \"dropDownElem\", void 0);\r\n__decorate([\r\n    core_1.ContentChildren(integralui_core_1.IntegralUIItem),\r\n    __metadata(\"design:type\", core_1.QueryList)\r\n], IntegralUIComboBox.prototype, \"contentList\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Number)\r\n], IntegralUIComboBox.prototype, \"dropDownHeight\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean)\r\n], IntegralUIComboBox.prototype, \"integralHeight\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Array)\r\n], IntegralUIComboBox.prototype, \"items\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Number)\r\n], IntegralUIComboBox.prototype, \"maxDropDownItems\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Number),\r\n    __metadata(\"design:paramtypes\", [Number])\r\n], IntegralUIComboBox.prototype, \"dropDownWidth\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean),\r\n    __metadata(\"design:paramtypes\", [Boolean])\r\n], IntegralUIComboBox.prototype, \"expanded\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Number),\r\n    __metadata(\"design:paramtypes\", [Number])\r\n], IntegralUIComboBox.prototype, \"selectedIndex\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object),\r\n    __metadata(\"design:paramtypes\", [Object])\r\n], IntegralUIComboBox.prototype, \"selectedItem\", null);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIComboBox.prototype, \"click\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIComboBox.prototype, \"dropDownClosed\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIComboBox.prototype, \"dropDownClosing\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIComboBox.prototype, \"dropDownOpened\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIComboBox.prototype, \"dropDownOpening\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIComboBox.prototype, \"selectedItemChanged\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIComboBox.prototype, \"selectedIndexChanged\", void 0);\r\nIntegralUIComboBox = __decorate([\r\n    core_1.Component({\r\n        selector: 'iui-combobox',\r\n        template: \"\\n\\t\\t<div [ngClass]=\\\"getControlClass()\\\" #control>\\n\\t\\t\\t<iui-header [controlStyle]=\\\"getCurrentHeaderStyle()\\\" [enabled]=\\\"enabled\\\" [icon]=\\\"getComboIcon()\\\" [iconUrl]=\\\"getComboIconUrl()\\\" [text]=\\\"getComboText()\\\" (mouseDown)=\\\"comboClick($event)\\\" [animationType]=\\\"'arrow'\\\" #header>\\n\\t\\t\\t</iui-header>\\n\\t\\t\\t<div [ngClass]=\\\"getContentClass()\\\" [ngStyle]=\\\"{ 'border-width': contentBorder, 'display': contentDisplay, 'height': contentHeight, 'opacity': contentOpacity, 'overflow-y': contentOverflowY, 'width': getDropDownWidth() + 'px' }\\\" tabindex=\\\"999\\\" (blur)=\\\"dropDownBlurEvent($event)\\\" #dropdown> \\n\\t\\t\\t\\t<ng-content></ng-content>\\n\\t\\t\\t</div> \\n\\t\\t</div>\\n\\t\",\r\n        inputs: ['controlStyle', 'data', 'enabled', 'name', 'state'],\r\n        encapsulation: core_1.ViewEncapsulation.None\r\n    }),\r\n    __metadata(\"design:paramtypes\", [integralui_common_service_1.IntegralUICommonService,\r\n        core_1.ComponentFactoryResolver])\r\n], IntegralUIComboBox);\r\nexports.IntegralUIComboBox = IntegralUIComboBox;\r\n//# sourceMappingURL=integralui.combobox.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require(\"@angular/core\");\r\nvar integralui_core_1 = require(\"../components/integralui.core\");\r\nvar integralui_common_service_1 = require(\"../services/integralui.common.service\");\r\nvar IntegralUIDropDownComponent = (function (_super) {\r\n    __extends(IntegralUIDropDownComponent, _super);\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUIDropDownComponent(elemRef, commonService) {\r\n        var _this = _super.call(this, commonService) || this;\r\n        _this.elemRef = elemRef;\r\n        _this.commonService = commonService;\r\n        // General\r\n        _this.showTimer = null;\r\n        _this.popupTimer = null;\r\n        _this.mousePos = { x: 0, y: 0 };\r\n        // Layout\r\n        _this.dropdownDisplay = 'none';\r\n        _this.dropdownPos = { top: 0, left: 0 };\r\n        _this.dropdownSize = { width: 0, height: 0 };\r\n        // Events ----------------------------------------------------------------------------\r\n        _this.closed = new core_1.EventEmitter();\r\n        _this.updateOptions();\r\n        return _this;\r\n    }\r\n    Object.defineProperty(IntegralUIDropDownComponent.prototype, \"options\", {\r\n        get: function () {\r\n            return this.dropdownOptions;\r\n        },\r\n        // Properties ------------------------------------------------------------------------\r\n        set: function (value) {\r\n            this.updateOptions(value);\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    IntegralUIDropDownComponent.prototype.ngAfterContentInit = function () {\r\n        var self = this;\r\n        var focusTimer = setTimeout(function () {\r\n            self.elemRef.nativeElement.firstElementChild.focus();\r\n            clearTimeout(focusTimer);\r\n        }, 1);\r\n    };\r\n    IntegralUIDropDownComponent.prototype.ngOnDestroy = function () {\r\n    };\r\n    // Data ---------------------------------------------------------------------------\r\n    IntegralUIDropDownComponent.prototype.updateAdjustment = function (value) {\r\n        if (value) {\r\n            return {\r\n                top: this.commonService.isFieldAvailable(value.top, 0),\r\n                right: this.commonService.isFieldAvailable(value.right, 0),\r\n                bottom: this.commonService.isFieldAvailable(value.bottom, 0),\r\n                left: this.commonService.isFieldAvailable(value.left, 0)\r\n            };\r\n        }\r\n        else {\r\n            return {\r\n                top: 0,\r\n                right: 0,\r\n                bottom: 0,\r\n                left: 0\r\n            };\r\n        }\r\n    };\r\n    IntegralUIDropDownComponent.prototype.updateOptions = function (value) {\r\n        if (value) {\r\n            this.dropdownOptions = {\r\n                adjustment: this.updateAdjustment(value.adjustment),\r\n                autoClose: this.commonService.isFieldAvailable(value.autoClose, true),\r\n                autoPopDelay: this.commonService.isFieldAvailable(value.autoPopDelay, 5000),\r\n                enabled: this.commonService.isFieldAvailable(value.enabled, true),\r\n                initialDelay: this.commonService.isFieldAvailable(value.initialDelay, 500),\r\n                position: this.commonService.isFieldAvailable(value.position, 'mouse'),\r\n                showMarker: this.commonService.isFieldAvailable(value.showMarker, true),\r\n                title: this.commonService.isFieldAvailable(value.title, '')\r\n            };\r\n            this.updateDropDownSize(value.dropDownSize);\r\n        }\r\n        else {\r\n            this.dropdownOptions = {\r\n                adjustment: this.updateAdjustment(),\r\n                autoClose: true,\r\n                autoPopDelay: 5000,\r\n                enabled: true,\r\n                initialDelay: 500,\r\n                position: 'mouse',\r\n                showMarker: true,\r\n                title: ''\r\n            };\r\n        }\r\n    };\r\n    IntegralUIDropDownComponent.prototype.updateDropDownSize = function (value) {\r\n        if (value) {\r\n            this.dropdownOptions.dropDownSize = {\r\n                width: this.commonService.isFieldAvailable(value.width, 0),\r\n                height: this.commonService.isFieldAvailable(value.height, 0)\r\n            };\r\n        }\r\n    };\r\n    // Events ----------------------------------------------------------------------------\r\n    IntegralUIDropDownComponent.prototype.onBlur = function (e) {\r\n        if (this.options.autoClose != false)\r\n            this.closed.emit(null);\r\n    };\r\n    IntegralUIDropDownComponent.prototype.onMouseDown = function (e) {\r\n        if (e.buttons == 1)\r\n            this.closed.emit(null);\r\n    };\r\n    // General ---------------------------------------------------------------------------\r\n    IntegralUIDropDownComponent.prototype.removeTimers = function () {\r\n        if (this.showTimer) {\r\n            clearTimeout(this.showTimer);\r\n            this.showTimer = null;\r\n        }\r\n        if (this.popupTimer) {\r\n            clearTimeout(this.popupTimer);\r\n            this.popupTimer = null;\r\n        }\r\n    };\r\n    // Layout ----------------------------------------------------------------------------\r\n    IntegralUIDropDownComponent.prototype.open = function (elemPageRect, elemSize, appSize) {\r\n        var self = this;\r\n        self.dropdownPos.top = -9999999;\r\n        self.dropdownDisplay = 'block';\r\n        self.dropdownSize = self.size();\r\n        self.dropdownDisplay = 'none';\r\n        self.removeTimers();\r\n        if (self.dropdownOptions.enabled)\r\n            self.show(elemPageRect, elemSize, appSize);\r\n    };\r\n    IntegralUIDropDownComponent.prototype.show = function (elemPageRect, elemSize, appSize) {\r\n        this.dropdownPos = {\r\n            top: this.mousePos.y + 24,\r\n            left: this.mousePos.x\r\n        };\r\n        var shiftPos = this.commonService.getShiftPos();\r\n        switch (this.dropdownOptions.position) {\r\n            case 'above':\r\n                this.dropdownPos = {\r\n                    top: elemPageRect.top - 4 - this.dropdownSize.height,\r\n                    left: elemPageRect.left + Math.floor((elemSize.width - this.dropdownSize.width) / 2)\r\n                };\r\n                break;\r\n            case 'left':\r\n                this.dropdownPos = {\r\n                    top: elemPageRect.top + Math.floor((elemSize.height - this.dropdownSize.height) / 2),\r\n                    left: elemPageRect.left - 4 - this.dropdownSize.width\r\n                };\r\n                break;\r\n            case 'right':\r\n                this.dropdownPos = {\r\n                    top: elemPageRect.top + Math.floor((elemSize.height - this.dropdownSize.height) / 2),\r\n                    left: elemPageRect.right + 4\r\n                };\r\n                break;\r\n            default:\r\n                this.dropdownPos = {\r\n                    top: elemPageRect.bottom + shiftPos.y + 4 + this.dropdownOptions.adjustment.top,\r\n                    left: elemPageRect.left + shiftPos.x + this.dropdownOptions.adjustment.left\r\n                };\r\n                if (appSize) {\r\n                    if (this.dropdownPos.top + this.dropdownSize.height > appSize.height) {\r\n                        var shift = this.dropdownPos.top + this.dropdownSize.height - appSize.height;\r\n                        this.dropdownPos.top -= shift;\r\n                    }\r\n                }\r\n                break;\r\n        }\r\n        this.dropdownDisplay = 'block';\r\n    };\r\n    IntegralUIDropDownComponent.prototype.size = function () {\r\n        var elemSize = {\r\n            width: this.elemRef.nativeElement.firstElementChild.offsetWidth,\r\n            height: this.elemRef.nativeElement.firstElementChild.offsetHeight\r\n        };\r\n        if (this.options.dropDownSize) {\r\n            elemSize.width = this.commonService.isFieldAvailable(this.options.dropDownSize.width, elemSize.width);\r\n            elemSize.height = this.commonService.isFieldAvailable(this.options.dropDownSize.height, elemSize.height);\r\n        }\r\n        return elemSize;\r\n    };\r\n    IntegralUIDropDownComponent.prototype.updateMousePos = function (value) {\r\n        if (this.mousePos != value)\r\n            this.mousePos = value;\r\n    };\r\n    // Style -----------------------------------------------------------------------------\r\n    IntegralUIDropDownComponent.prototype.updateControlClass = function () {\r\n        this.ctrlClass.length = 0;\r\n        this.ctrlClass.push('iui-dropdown');\r\n        if (this.dropdownOptions.showMarker)\r\n            switch (this.dropdownOptions.position) {\r\n                case 'above':\r\n                    this.ctrlClass.push('iui-dropdown-marker-bottom');\r\n                    break;\r\n                case 'right':\r\n                    this.ctrlClass.push('iui-dropdown-marker-left');\r\n                    break;\r\n                case 'below':\r\n                    this.ctrlClass.push('iui-dropdown-marker-top');\r\n                    break;\r\n                case 'left':\r\n                    this.ctrlClass.push('iui-dropdown-marker-right');\r\n                    break;\r\n            }\r\n    };\r\n    return IntegralUIDropDownComponent;\r\n}(integralui_core_1.IntegralUIBaseComponent));\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object),\r\n    __metadata(\"design:paramtypes\", [Object])\r\n], IntegralUIDropDownComponent.prototype, \"options\", null);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIDropDownComponent.prototype, \"closed\", void 0);\r\nIntegralUIDropDownComponent = __decorate([\r\n    core_1.Component({\r\n        selector: 'iui-dropdown',\r\n        template: \"\\n\\t\\t<div class=\\\"iui-dropdown\\\" [ngClass]=\\\"getControlClass()\\\" [ngStyle]=\\\"{ 'top': dropdownPos.top + 'px', 'left': dropdownPos.left + 'px' }\\\" (blur)=\\\"onBlur($event)\\\" (mousedown)=\\\"onMouseDown($event)\\\" tabindex=\\\"999\\\">\\n\\t\\t\\t<ng-template ngFor [ngForOf]=\\\"[templateObj.data]\\\" [ngForTemplate]=\\\"templateObj.template\\\"></ng-template>\\n\\t\\t</div>\\n\\t\",\r\n        inputs: ['controlStyle', 'data', 'state'],\r\n        encapsulation: core_1.ViewEncapsulation.None\r\n    }),\r\n    __metadata(\"design:paramtypes\", [core_1.ElementRef,\r\n        integralui_common_service_1.IntegralUICommonService])\r\n], IntegralUIDropDownComponent);\r\nexports.IntegralUIDropDownComponent = IntegralUIDropDownComponent;\r\nvar IntegralUIDropDown = (function () {\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUIDropDown(elemRef, cmpResolver, commonService) {\r\n        this.elemRef = elemRef;\r\n        this.cmpResolver = cmpResolver;\r\n        this.commonService = commonService;\r\n        // Variables -------------------------------------------------------------------------\r\n        // Data\r\n        this.eventList = [];\r\n        this.templateData = [];\r\n        // General\r\n        this.isDropDownOpen = false;\r\n        this.cmpRef = null;\r\n        this.templateList = [];\r\n        // Events ----------------------------------------------------------------------------\r\n        this.dropDownOpen = new core_1.EventEmitter();\r\n        this.dropDownOpening = new core_1.EventEmitter();\r\n        this.dropDownClose = new core_1.EventEmitter();\r\n    }\r\n    Object.defineProperty(IntegralUIDropDown.prototype, \"showDropDown\", {\r\n        get: function () {\r\n            return this.isDropDownOpen;\r\n        },\r\n        set: function (value) {\r\n            if (this.isDropDownOpen != value) {\r\n                this.isDropDownOpen = value;\r\n                this.isDropDownOpen ? this.open() : this.close();\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    IntegralUIDropDown.prototype.ngAfterContentInit = function () {\r\n        var self = this;\r\n        self.templateList = self.templates.toArray();\r\n        for (var i = 0; i < self.templateList.length; i++) {\r\n            if (self.templateList[i].settings)\r\n                switch (self.templateList[i].settings.type) {\r\n                    case 'dropdown':\r\n                        self.templateData.push(self.templateList[i].getTemplate());\r\n                        break;\r\n                }\r\n        }\r\n    };\r\n    // General ---------------------------------------------------------------------------\r\n    IntegralUIDropDown.prototype.closeDropDown = function () {\r\n        var self = this;\r\n        if (self.cmpRef) {\r\n            if (self.eventList)\r\n                self.eventList.forEach(function (obj) { return obj.unsubscribe(); });\r\n            self.cmpRef.destroy();\r\n        }\r\n        self.cmpRef = null;\r\n        this.isDropDownOpen = false;\r\n        this.dropDownClose.emit(null);\r\n    };\r\n    IntegralUIDropDown.prototype.close = function () {\r\n        this.closeDropDown();\r\n    };\r\n    IntegralUIDropDown.prototype.open = function (mouseEvent) {\r\n        var self = this;\r\n        var appRef = self.dropDownRef ? self.dropDownRef : self.settings.appRef;\r\n        if (appRef) {\r\n            // Fire event that dropdown is about to open\r\n            var eventObj = { cancel: false, event: mouseEvent };\r\n            self.dropDownOpening.emit(eventObj);\r\n            if (eventObj.cancel != true) {\r\n                var factory = self.cmpResolver.resolveComponentFactory(IntegralUIDropDownComponent);\r\n                if (factory) {\r\n                    self.cmpRef = appRef.createComponent(factory);\r\n                    if (self.cmpRef) {\r\n                        var cmp = null;\r\n                        if (self.cmpRef._component)\r\n                            cmp = self.cmpRef._component;\r\n                        else if (self.cmpRef._hostElement)\r\n                            cmp = self.cmpRef._hostElement.component;\r\n                        if (cmp) {\r\n                            cmp.options = self.settings;\r\n                            cmp.templateObj = {\r\n                                data: self.settings.data,\r\n                                template: self.templateData[0]\r\n                            };\r\n                            if (mouseEvent)\r\n                                cmp.updateMousePos(self.commonService.getMousePos(mouseEvent));\r\n                            this.dropDownOpen.emit(null);\r\n                            var appSize = self.settings.appSize ? self.settings.appSize : { width: window.innerWidth, height: window.innerHeight };\r\n                            var elemPageRect = this.elemRef.nativeElement.getBoundingClientRect();\r\n                            cmp.open(elemPageRect, self.size(), appSize);\r\n                            self.eventList.push(cmp.closed.subscribe(function (e) {\r\n                                self.closeDropDown();\r\n                            }));\r\n                            if (mouseEvent)\r\n                                mouseEvent.stopPropagation();\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    };\r\n    // Layout ----------------------------------------------------------------------------\r\n    IntegralUIDropDown.prototype.size = function () {\r\n        var elemSize = {\r\n            width: this.elemRef.nativeElement.offsetWidth,\r\n            height: this.elemRef.nativeElement.offsetHeight\r\n        };\r\n        return elemSize;\r\n    };\r\n    // Event Handlers --------------------------------------------------------------------\r\n    IntegralUIDropDown.prototype.onMouseDown = function (e) {\r\n        var self = this;\r\n        var isOpenManual = self.settings ? self.settings.manual == true : false;\r\n        if (e.which == 1 && !isOpenManual) {\r\n            self.closeDropDown();\r\n            self.open(e);\r\n        }\r\n    };\r\n    return IntegralUIDropDown;\r\n}());\r\n__decorate([\r\n    core_1.ContentChildren(integralui_core_1.IntegralUITemplate),\r\n    __metadata(\"design:type\", core_1.QueryList)\r\n], IntegralUIDropDown.prototype, \"templates\", void 0);\r\n__decorate([\r\n    core_1.Input('iuiDropDown'),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUIDropDown.prototype, \"settings\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUIDropDown.prototype, \"dropDownRef\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean),\r\n    __metadata(\"design:paramtypes\", [Boolean])\r\n], IntegralUIDropDown.prototype, \"showDropDown\", null);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIDropDown.prototype, \"dropDownOpen\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIDropDown.prototype, \"dropDownOpening\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIDropDown.prototype, \"dropDownClose\", void 0);\r\n__decorate([\r\n    core_1.HostListener('mousedown', ['$event']),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUIDropDown.prototype, \"onMouseDown\", null);\r\nIntegralUIDropDown = __decorate([\r\n    core_1.Directive({\r\n        selector: '[iuiDropDown]',\r\n    }),\r\n    __metadata(\"design:paramtypes\", [core_1.ElementRef,\r\n        core_1.ComponentFactoryResolver,\r\n        integralui_common_service_1.IntegralUICommonService])\r\n], IntegralUIDropDown);\r\nexports.IntegralUIDropDown = IntegralUIDropDown;\r\n//# sourceMappingURL=integralui.dropdown.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require(\"@angular/core\");\r\nvar integralui_core_1 = require(\"./integralui.core\");\r\nvar integralui_base_grid_1 = require(\"./integralui.base.grid\");\r\nvar integralui_common_service_1 = require(\"../services/integralui.common.service\");\r\nvar integralui_data_service_1 = require(\"../services/integralui.data.service\");\r\nvar integralui_dragdrop_service_1 = require(\"../services/integralui.dragdrop.service\");\r\nvar integralui_filter_service_1 = require(\"../services/integralui.filter.service\");\r\nvar integralui_scrollbar_1 = require(\"./integralui.scrollbar\");\r\nvar IntegralUIGrid = (function (_super) {\r\n    __extends(IntegralUIGrid, _super);\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUIGrid(dataService, dragDropService, elemRef, elemRenderer, commonService, filterService, changeRef, cmpResolver, baseService) {\r\n        var _this = _super.call(this, dataService, dragDropService, elemRef, elemRenderer, commonService, filterService, changeRef) || this;\r\n        _this.dataService = dataService;\r\n        _this.dragDropService = dragDropService;\r\n        _this.elemRef = elemRef;\r\n        _this.elemRenderer = elemRenderer;\r\n        _this.commonService = commonService;\r\n        _this.filterService = filterService;\r\n        _this.changeRef = changeRef;\r\n        _this.cmpResolver = cmpResolver;\r\n        _this.baseService = baseService;\r\n        _this.dragHandleShiftPos = { x: 0, y: 0 };\r\n        // Variables -------------------------------------------------------------------------\r\n        // Data\r\n        _this.headerData = [];\r\n        _this.rowData = [];\r\n        _this.cellData = [];\r\n        _this.footerData = [];\r\n        _this.fullList = [];\r\n        // Drag Drop\r\n        _this.expandTimeout = null;\r\n        _this.expandRow = null;\r\n        _this.horScrollOrientation = integralui_core_1.IntegralUIOrientation.Horizontal;\r\n        _this.isGroupPanelHovered = false;\r\n        _this.isThereChildRows = false;\r\n        // Groups\r\n        _this.dataGroups = [];\r\n        _this.groupList = [];\r\n        _this.activeGroups = [];\r\n        _this.groupExpandList = [];\r\n        _this.isGroupListItemSelected = false;\r\n        _this.groupPanelSize = { width: 0, height: 0 };\r\n        _this.groupPanelHeight = 0;\r\n        _this.dragGroupSettings = {\r\n            display: 'none',\r\n            top: 0,\r\n            left: 0,\r\n            label: ''\r\n        };\r\n        _this.groupReorderMargin = 50;\r\n        _this.reorderGroupWidth = 50;\r\n        // Drag Drop\r\n        // Layout \r\n        _this.blockMarginTop = 0;\r\n        _this.blockSize = { width: 0, height: 0 };\r\n        _this.isExpandBoxVisible = true;\r\n        _this.updateTimer = null;\r\n        _this.templateList = [];\r\n        _this.refreshTimer = null;\r\n        // Trial\r\n        _this.trialRef = null;\r\n        // Properties ------------------------------------------------------------------------\r\n        _this.autoExpand = false;\r\n        // Events ----------------------------------------------------------------------------\r\n        _this.afterCollapse = new core_1.EventEmitter();\r\n        _this.afterExpand = new core_1.EventEmitter();\r\n        _this.beforeCollapse = new core_1.EventEmitter();\r\n        _this.beforeExpand = new core_1.EventEmitter();\r\n        _this.groupAdding = new core_1.EventEmitter();\r\n        _this.groupAdded = new core_1.EventEmitter();\r\n        _this.groupRemoving = new core_1.EventEmitter();\r\n        _this.groupRemoved = new core_1.EventEmitter();\r\n        _this.groupOrderChanged = new core_1.EventEmitter();\r\n        // Grouping --------------------------------------------------------------------------\r\n        _this.groupReorderActive = false;\r\n        _this.hoverGroup = null;\r\n        _this.reorderGroup = null;\r\n        _this.dragGroupElemSize = { width: 0, height: 0 };\r\n        _this.groupCoordinates = [];\r\n        _this.reorderGroupPos = -1;\r\n        _this.updateGrouping(_this.grouping);\r\n        return _this;\r\n    }\r\n    IntegralUIGrid.prototype.updateDragHandlePos = function (e) {\r\n        if (this.dragHandlePos) {\r\n            var shiftPos = this.commonService.getShiftPos();\r\n            var tempMousePos = this.commonService.getMousePos(e);\r\n            tempMousePos.x -= shiftPos.x;\r\n            tempMousePos.y -= shiftPos.y;\r\n            var gridRect = this.commonService.getPageRect(this.elemRef.nativeElement);\r\n            var gridBounds = {\r\n                x: gridRect.left,\r\n                y: gridRect.top,\r\n                width: gridRect.right - gridRect.left,\r\n                height: gridRect.bottom - gridRect.top\r\n            };\r\n            tempMousePos.y -= (gridRect.y + this.groupPanelHeight + this.headerHeight + this.dragHandleShiftPos.y);\r\n            this.dragHandlePos.top = tempMousePos.y;\r\n        }\r\n    };\r\n    Object.defineProperty(IntegralUIGrid.prototype, \"expandColumnIndex\", {\r\n        get: function () {\r\n            return this.expandColIndex;\r\n        },\r\n        set: function (value) {\r\n            if (this.expandColIndex != value) {\r\n                this.expandColIndex = value;\r\n                this.updateLayout();\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIGrid.prototype, \"expandColumnID\", {\r\n        get: function () {\r\n            return this.currentExpandColumnID;\r\n        },\r\n        set: function (value) {\r\n            if (this.currentExpandColumnID != value) {\r\n                this.currentExpandColumnID = value;\r\n                this.updateLayout();\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIGrid.prototype, \"grouping\", {\r\n        get: function () {\r\n            return this.options.grouping;\r\n        },\r\n        set: function (value) {\r\n            this.updateGrouping(value);\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIGrid.prototype, \"groups\", {\r\n        get: function () {\r\n            return this.dataGroups;\r\n        },\r\n        set: function (value) {\r\n            this.dataGroups = value;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIGrid.prototype, \"indent\", {\r\n        get: function () {\r\n            return this.options.indent;\r\n        },\r\n        set: function (value) {\r\n            if (this.options.indent != value) {\r\n                this.options.indent = value;\r\n                this.updateLayout();\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIGrid.prototype, \"showExpandBox\", {\r\n        get: function () {\r\n            return this.isExpandBoxVisible;\r\n        },\r\n        set: function (value) {\r\n            if (this.isExpandBoxVisible != value) {\r\n                this.isExpandBoxVisible = value;\r\n                this.updateLayout();\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIGrid.prototype, \"showHeader\", {\r\n        get: function () {\r\n            return this.isHeaderVisible;\r\n        },\r\n        set: function (value) {\r\n            if (this.isHeaderVisible != value) {\r\n                this.isHeaderVisible = value;\r\n                this.updateLayout();\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIGrid.prototype, \"showFooter\", {\r\n        get: function () {\r\n            return this.isFooterVisible;\r\n        },\r\n        set: function (value) {\r\n            if (this.isFooterVisible != value) {\r\n                this.isFooterVisible = value;\r\n                this.updateLayout();\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    IntegralUIGrid.prototype.ngOnInit = function () {\r\n        this.baseService.setComponent(this);\r\n        this.updateData();\r\n        this.generalClassName = \"iui-grid\";\r\n        this.columnClassName = this.generalClassName + '-column';\r\n        this.columnHeaderClassName = this.columnClassName + '-header';\r\n        this.columnBodyClassName = this.columnClassName + '-body';\r\n        this.columnFooterClassName = this.columnClassName + '-footer';\r\n        this.rowClassName = this.generalClassName + '-row';\r\n        this.cellBorderClassName = 'iui-grid-lines-both';\r\n        this.cellClassName = this.rowClassName + '-cell';\r\n        this.expandBoxClassName = this.generalClassName + '-expand-box';\r\n        this.gridLinesClassName = this.generalClassName + '-lines';\r\n        this.sortingClassName = 'iui-sort';\r\n        this.targetDropRowClassName = this.rowClassName + '-target-drop';\r\n        this.initStyle();\r\n    };\r\n    IntegralUIGrid.prototype.updateData = function () {\r\n        this.dataService.init([\r\n            { data: this.columns, fields: this.options.columnFields, key: this.columnDataKey },\r\n            { data: this.rows, fields: this.options.rowFields, key: this.rowDataKey }\r\n        ]);\r\n    };\r\n    IntegralUIGrid.prototype.initStyle = function () {\r\n        this.defaultStyle = {\r\n            general: {\r\n                disabled: this.generalClassName + '-disabled',\r\n                focused: this.generalClassName + '-focused',\r\n                normal: this.generalClassName,\r\n                hovered: this.generalClassName + '-hovered',\r\n                selected: this.generalClassName + '-selected'\r\n            },\r\n            column: {\r\n                header: {\r\n                    cell: this.columnHeaderClassName + '-cell',\r\n                    disabled: this.columnHeaderClassName + '-disabled',\r\n                    normal: this.columnHeaderClassName,\r\n                    hovered: this.columnHeaderClassName + '-hovered',\r\n                    selected: this.columnHeaderClassName + '-selected'\r\n                },\r\n                body: {\r\n                    cell: this.columnBodyClassName + '-cell',\r\n                    disabled: this.columnBodyClassName + '-disabled',\r\n                    normal: this.columnBodyClassName,\r\n                    hovered: this.columnBodyClassName + '-hovered',\r\n                    selected: this.columnBodyClassName + '-selected'\r\n                },\r\n                footer: {\r\n                    cell: this.columnFooterClassName + '-cell',\r\n                    disabled: this.columnFooterClassName + '-disabled',\r\n                    normal: this.columnFooterClassName,\r\n                    hovered: this.columnFooterClassName + '-hovered',\r\n                    selected: this.columnFooterClassName + '-selected'\r\n                },\r\n                sorting: {\r\n                    normal: {\r\n                        ascending: this.sortingClassName + '-ascending',\r\n                        descending: this.sortingClassName + '-descending'\r\n                    },\r\n                    selected: {\r\n                        ascending: this.sortingClassName + '-ascending-selected',\r\n                        descending: this.sortingClassName + '-descending-selected'\r\n                    }\r\n                }\r\n            },\r\n            row: {\r\n                general: {\r\n                    disabled: this.rowClassName + '-disabled',\r\n                    focused: this.rowClassName + '-focused',\r\n                    normal: this.rowClassName,\r\n                    hovered: this.rowClassName + '-hovered',\r\n                    selected: this.rowClassName + '-selected'\r\n                },\r\n                expandBox: {\r\n                    general: this.expandBoxClassName,\r\n                    load: this.expandBoxClassName + '-load',\r\n                    expanded: this.expandBoxClassName + '-open',\r\n                    collapsed: this.expandBoxClassName + '-close'\r\n                },\r\n                cell: {\r\n                    disabled: this.cellClassName + '-disabled',\r\n                    focused: this.cellClassName + '-focused',\r\n                    normal: this.cellClassName,\r\n                    hovered: this.cellClassName + '-hovered',\r\n                    selected: this.cellClassName + '-selected'\r\n                }\r\n            },\r\n            gridLines: {\r\n                none: this.gridLinesClassName + '-none',\r\n                horizontal: this.gridLinesClassName + '-horizontal',\r\n                vertical: this.gridLinesClassName + '-vertical',\r\n                both: this.gridLinesClassName + '-both'\r\n            }\r\n        };\r\n        this.updateStyle(this.controlStyle);\r\n        this.refresh();\r\n    };\r\n    IntegralUIGrid.prototype.ngAfterViewInit = function () {\r\n        var self = this;\r\n        /*let trialTimer = setTimeout(function(){\r\n            let factory = self.cmpResolver.resolveComponentFactory(IntegralUITComponent);\r\n            if (factory && self.contentRef)\r\n                self.trialRef = self.contentRef.createComponent(factory);\r\n\r\n            clearTimeout(trialTimer);\r\n        }, 100);*/\r\n        self.updateLayout();\r\n    };\r\n    IntegralUIGrid.prototype.ngAfterContentInit = function () {\r\n        var self = this;\r\n        self.templateList = self.templates.toArray();\r\n        for (var i = 0; i < self.templateList.length; i++) {\r\n            if (self.templateList[i].settings)\r\n                switch (self.templateList[i].settings.type) {\r\n                    case 'header':\r\n                        self.headerData.push(self.templateList[i].getTemplate());\r\n                        break;\r\n                    case 'row':\r\n                        self.rowData.push(self.templateList[i].getTemplate());\r\n                        break;\r\n                    case 'cell':\r\n                        self.cellData.push(self.templateList[i].getTemplate());\r\n                        break;\r\n                    case 'footer':\r\n                        self.footerData.push(self.templateList[i].getTemplate());\r\n                        break;\r\n                }\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.ngOnDestroy = function () {\r\n        if (this.expandTimeout)\r\n            clearTimeout(this.expandTimeout);\r\n        this.removeDropMark();\r\n        //if (this.trialRef)\r\n        //this.trialRef.destroy();\r\n    };\r\n    // Change Detection ------------------------------------------------------------------\r\n    IntegralUIGrid.prototype.ngAfterContentChecked = function () {\r\n        var self = this;\r\n        if (self.autoUpdate == true) {\r\n            self.groupPanelHeight = self.groupingPanelElem ? self.groupingPanelElem.nativeElement.offsetHeight : 0;\r\n            self.groupPanelSize.height = self.groupingPanelElem ? self.groupingPanelElem.nativeElement.offsetHeight : 0;\r\n            self.paginatorHeight = self.paginatorElem ? self.paginatorElem.nativeElement.offsetHeight : 0;\r\n            self.paginatorPos.top = self.elemRef.nativeElement.firstElementChild.clientHeight - self.paginatorHeight + 1;\r\n            self.horScrollElemPos.bottom = self.paginatorHeight > 0 ? self.paginatorHeight - 1 : 0;\r\n            self.cornerScrollElemPos.bottom = self.paginatorHeight > 0 ? self.paginatorHeight - 1 : 0;\r\n            self.clientRect = {\r\n                width: self.elemRef.nativeElement.firstElementChild.clientWidth,\r\n                height: self.elemRef.nativeElement.firstElementChild.clientHeight - self.groupPanelHeight - self.paginatorHeight\r\n            };\r\n            if (self.clientRect.width != self.prevClientRect.width) {\r\n                self.updateLayout();\r\n                self.prevClientRect.width = self.clientRect.width;\r\n            }\r\n            else if (self.clientRect.height != self.prevClientRect.height) {\r\n                self.updateLayout();\r\n                self.prevClientRect.height = self.clientRect.height;\r\n            }\r\n        }\r\n    };\r\n    // Data ------------------------------------------------------------------------------\r\n    IntegralUIGrid.prototype.updateDataFields = function (data) {\r\n        if (data) {\r\n            this.updateColumnFields(data.column);\r\n            this.updateGroupFields(data.group);\r\n            this.updateRowFields(data.row);\r\n            this.updateCellFields(data.cell);\r\n        }\r\n        else {\r\n            this.updateColumnFields();\r\n            this.updateGroupFields();\r\n            this.updateRowFields();\r\n            this.updateCellFields();\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.updateGroupFields = function (fields) {\r\n        if (fields)\r\n            this.options.groupFields = {\r\n                id: fields.id ? fields.id : 'id',\r\n                cells: fields.cells ? fields.cells : 'cells',\r\n                cid: fields.cid ? fields.cid : 'cid',\r\n                expanded: fields.expanded ? fields.expanded : 'expanded',\r\n                rows: fields.rows ? fields.rows : 'rows',\r\n                text: fields.text ? fields.text : 'text'\r\n            };\r\n        else\r\n            this.options.groupFields = {\r\n                id: 'id',\r\n                cid: 'cid',\r\n                cells: 'cells',\r\n                expanded: 'expanded',\r\n                rows: 'rows',\r\n                text: 'text'\r\n            };\r\n    };\r\n    IntegralUIGrid.prototype.updateScrollColumnList = function () {\r\n        this.scrollColumnList.length = 0;\r\n        for (var j = this.viewIndexRange.left; j < this.currentColumnList.length && j <= this.viewIndexRange.right; j++) {\r\n            var obj = this.currentColumnList[j];\r\n            var scrollObj = {\r\n                data: obj.data,\r\n                inlineStyle: this.getColumnInlineStyle(obj.data[this.options.columnFields.style]),\r\n                location: { top: 0, left: 0 },\r\n                position: 'relative',\r\n                style: {}\r\n            };\r\n            this.updateColumnStyle(scrollObj);\r\n            this.scrollColumnList.push(scrollObj);\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.updateScrollRowList = function () {\r\n        this.scrollRowList.length = 0;\r\n        this.tabIndexCount = 0;\r\n        // Update rows that are present in current view\r\n        for (var i = this.currentIndex; i < this.currentRowList.length && i < this.currentIndex + this.visibleRange; i++) {\r\n            var obj = this.currentRowList[i];\r\n            if (obj.data == this.targetDropRow && this.targetDropPos == 1)\r\n                this.scrollRowList.push(this.emptyRowObj);\r\n            if (!this.isDragHandleVisible || (this.isDragHandleVisible && this.dragRowList && this.dragRowList.length > 0 && obj.data != this.dragRowList[0].data)) {\r\n                var scrollObj = this.createScrollObjFromRow(obj.data, obj, i);\r\n                this.scrollRowList.push(scrollObj);\r\n            }\r\n            if (obj.data == this.targetDropRow && (this.targetDropPos == 0 || this.targetDropPos == 2))\r\n                this.scrollRowList.push(this.emptyRowObj);\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.createScrollObjFromRow = function (row, rowObj, scrollIndex) {\r\n        var scrollObj = null;\r\n        var obj = rowObj ? rowObj : this.getObjFromRow(row);\r\n        if (obj) {\r\n            scrollObj = {\r\n                cells: [],\r\n                data: obj.data,\r\n                draggable: this.isEnabled && obj.data.type != 'group' ? true : false,\r\n                indent: obj.indent,\r\n                inlineStyle: this.getRowInlineStyle(obj),\r\n                style: {},\r\n                hide: row.tagHide\r\n            };\r\n            this.updateRowStyle(scrollObj);\r\n            // Update row cells, their style and width\r\n            var cellList = scrollObj.data[this.options.rowFields.cells];\r\n            for (var j = this.viewIndexRange.left; j < this.currentColumnList.length && j <= this.viewIndexRange.right; j++) {\r\n                var column = this.currentColumnList[j].data;\r\n                var cellIndex = j;\r\n                var colID = column[this.options.columnFields.id];\r\n                if (colID)\r\n                    cellIndex = this.getCellIndexById(cellList, j, colID);\r\n                this.tabIndexCount++;\r\n                var currentCell = cellIndex >= 0 && cellIndex < cellList.length ? cellList[cellIndex] : {};\r\n                var cellObj = {\r\n                    align: this.getCellAlignment(column),\r\n                    colIndex: j - this.viewIndexRange.left,\r\n                    data: currentCell,\r\n                    expandBoxAllowed: this.isExpandBoxAllowed(column),\r\n                    indent: this.getRowIndent(scrollObj, column),\r\n                    inlineStyle: currentCell && currentCell[this.options.cellFields.style] ? currentCell[this.options.cellFields.style] : '',\r\n                    rowIndex: scrollIndex != undefined ? scrollIndex - this.currentIndex : 0,\r\n                    style: {\r\n                        content: 'iui-grid-row-cell-content'\r\n                    },\r\n                    tabIndex: this.tabIndexCount,\r\n                    width: this.getCellWidth(scrollObj, column),\r\n                    height: this.rowHeight > 0 ? this.rowHeight + 'px' : 'auto'\r\n                };\r\n                scrollObj.cells.push(cellObj);\r\n            }\r\n        }\r\n        return scrollObj;\r\n    };\r\n    IntegralUIGrid.prototype.updateScrollRowListDragOver = function (row) {\r\n        if (!row || this.isScrollTimerActive) {\r\n            this.removeEmptyRow(3);\r\n            this.removeEmptyRow(2);\r\n            this.removeEmptyRow(1);\r\n        }\r\n        else {\r\n            var prevTargetIndex = this.targetDropRow ? this.getObjIndexFromScrollList(this.targetDropRow) : -1;\r\n            var targetIndex = row ? this.getObjIndexFromScrollList(row) : -1;\r\n            var pass = false;\r\n            if ((targetIndex >= prevTargetIndex && this.targetDropPos == 2 && (this.prevTargetDropPos == 1 || this.prevTargetDropPos == -1)) ||\r\n                (targetIndex >= prevTargetIndex && this.targetDropPos == 0 && (this.prevTargetDropPos == 2 || this.prevTargetDropPos == -1)) ||\r\n                (targetIndex <= prevTargetIndex && this.targetDropPos == 1 && (this.prevTargetDropPos == 2 || this.prevTargetDropPos == -1)) ||\r\n                (targetIndex <= prevTargetIndex && this.targetDropPos == 2 && (this.prevTargetDropPos == 0 || this.prevTargetDropPos == -1)) ||\r\n                (targetIndex != prevTargetIndex && this.targetDropPos == 0 && (this.prevTargetDropPos == 0 || this.prevTargetDropPos == -1)))\r\n                pass = true;\r\n            this.prevTargetDropPos = this.targetDropPos;\r\n            if (pass) {\r\n                // Replace the previous empty row\r\n                this.removeEmptyRow(2);\r\n                var currentEmptyObj = this.getEmptyObj(1);\r\n                if (currentEmptyObj) {\r\n                    currentEmptyObj.status = 2;\r\n                    currentEmptyObj.isEmptyPrev = true;\r\n                    currentEmptyObj.isEmpty = false;\r\n                }\r\n                // Replace the new empty row\r\n                this.targetDropRow = row;\r\n                this.removeEmptyRow(3);\r\n                this.removeEmptyRow(1);\r\n                if (this.targetDropRow && this.isRowExpanded(this.targetDropRow)) {\r\n                    var targetIndex_1 = this.getObjIndexFromScrollList(this.targetDropRow);\r\n                    if (targetIndex_1 >= 0) {\r\n                        if (this.targetDropPos == 0 || this.targetDropPos == 2)\r\n                            targetIndex_1 += 1;\r\n                        var newIndex = Math.max(Math.min(targetIndex_1, this.scrollRowList.length), 0);\r\n                        var newEmptyObj = {\r\n                            cells: [],\r\n                            draggable: false,\r\n                            isEmpty: true,\r\n                            status: 1,\r\n                            style: {}\r\n                        };\r\n                        this.scrollRowList.splice(newIndex, 0, newEmptyObj);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    };\r\n    // Columns\r\n    IntegralUIGrid.prototype.addColumnToCurrentList = function (column) {\r\n        var self = this;\r\n        if (!self.isColumnVisible(column))\r\n            return;\r\n        column.type = \"column\";\r\n        if (!column[self.options.columnFields.id])\r\n            column[self.options.columnFields.id] = self.commonService.getUniqueId();\r\n        if (column[self.options.columnFields.visible] != false) {\r\n            var params = column[self.options.columnFields.filterParams];\r\n            var filterTree = params ? self.filterService.createTree(params.conditions, params.formula) : null;\r\n            self.currentColumnList.push({ data: column, filter: filterTree });\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.updateCurrentColumnList = function () {\r\n        this.currentColumnList.length = 0;\r\n        var list = this.dataService.getList(null, this.columnDataKey);\r\n        if (list) {\r\n            for (var i = 0; i < list.length; i++)\r\n                this.addColumnToCurrentList(list[i]);\r\n        }\r\n    };\r\n    // Groups\r\n    IntegralUIGrid.prototype.getGroup = function (value, parentGroup) {\r\n        var foundGroup = null;\r\n        var list = this.groupList;\r\n        if (parentGroup)\r\n            list = parentGroup[this.options.rowFields.rows];\r\n        if (list) {\r\n            for (var i = 0; i < list.length; i++)\r\n                if (list[i].type == 'group' && list[i][this.options.rowFields.text] == value) {\r\n                    foundGroup = list[i];\r\n                    break;\r\n                }\r\n        }\r\n        return foundGroup;\r\n    };\r\n    IntegralUIGrid.prototype.addRowToGroup = function (row) {\r\n        var cellList = row[this.options.rowFields.cells];\r\n        if (cellList && cellList.length > 0) {\r\n            var colID = -1;\r\n            var rowTree = [];\r\n            var prevGroup = null;\r\n            for (var j = 0; j < this.groups.length; j++) {\r\n                colID = this.groups[j][this.options.groupFields.cid];\r\n                var cellIndex = j;\r\n                if (colID)\r\n                    cellIndex = this.getCellIndexById(cellList, j, colID);\r\n                if (cellIndex >= 0 && cellIndex < cellList.length) {\r\n                    var groupDefaultName = 'undefined';\r\n                    var groupName = cellList[cellIndex][this.options.cellFields.text];\r\n                    if (!groupName || groupName == '') {\r\n                        var cellValue = cellList[cellIndex][this.options.cellFields.value];\r\n                        if (cellValue != undefined) {\r\n                            groupName = cellValue.toString();\r\n                            if (Array.isArray(cellValue) && cellValue.length == 0)\r\n                                groupName = groupDefaultName;\r\n                            else if (cellValue == 0)\r\n                                groupName = groupDefaultName;\r\n                        }\r\n                        else\r\n                            groupName = groupDefaultName;\r\n                    }\r\n                    var groupValue = cellList[cellIndex][this.options.cellFields.value];\r\n                    var foundGroup = this.getGroup(groupName, prevGroup);\r\n                    if (!foundGroup) {\r\n                        if (groupName != 'Other') {\r\n                            foundGroup = {};\r\n                            foundGroup[this.options.rowFields.text] = groupName;\r\n                            foundGroup[this.options.rowFields.gid] = this.groups[j][this.options.groupFields.id];\r\n                            foundGroup[this.options.rowFields.allowDrag] = false;\r\n                            var expColumn = this.getExpandingColumn();\r\n                            if (expColumn) {\r\n                                var expColID = expColumn[this.options.columnFields.id];\r\n                                foundGroup[this.options.rowFields.cells] = [{ cid: expColID, text: groupName, isGroup: true, tag: cellList[cellIndex][this.options.cellFields.tag], value: groupValue, valueID: cellList[cellIndex][this.options.cellFields.cid], related: cellList[cellIndex] }];\r\n                                foundGroup.type = 'group';\r\n                                foundGroup.tagHide = cellList[cellIndex].tagHide != undefined ? cellList[cellIndex].tagHide : false;\r\n                                if (prevGroup) {\r\n                                    foundGroup[this.options.rowFields.id] = prevGroup[this.options.rowFields.id] + \"_\" + foundGroup[this.options.rowFields.text];\r\n                                    if (!prevGroup[this.options.rowFields.rows])\r\n                                        prevGroup[this.options.rowFields.rows] = [];\r\n                                    prevGroup[this.options.rowFields.rows].push(foundGroup);\r\n                                }\r\n                                else {\r\n                                    foundGroup[this.options.rowFields.id] = \"GRP_\" + foundGroup[this.options.rowFields.text];\r\n                                    this.groupList.push(foundGroup);\r\n                                }\r\n                                foundGroup[this.options.rowFields.expanded] = this.isGroupExpandedFromRow(foundGroup); // this.isGroupExpanded(this.groups[j]);\r\n                                foundGroup[this.options.rowFields.cells][0][this.options.cellFields.expanded] = foundGroup[this.options.rowFields.expanded];\r\n                            }\r\n                            prevGroup = foundGroup;\r\n                        }\r\n                    }\r\n                    else\r\n                        prevGroup = foundGroup;\r\n                }\r\n            }\r\n            if (prevGroup) {\r\n                if (!prevGroup[this.options.rowFields.rows])\r\n                    prevGroup[this.options.rowFields.rows] = [];\r\n                prevGroup[this.options.rowFields.rows].push(row);\r\n            }\r\n            else\r\n                this.groupList.push(row);\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.updateGroupList = function () {\r\n        this.groupList.length = 0;\r\n        this.activeGroups.length = 0;\r\n        if (this.groups.length > 0) {\r\n            for (var i = 0; i < this.groups.length; i++) {\r\n                if (!this.groups[i][this.options.groupFields.id])\r\n                    this.groups[i][this.options.groupFields.id] = this.commonService.getUniqueId();\r\n                this.activeGroups.push(this.groups[i]);\r\n            }\r\n            var list = this.dataService.getList(null, this.rowDataKey);\r\n            if (list) {\r\n                for (var i = 0; i < list.length; i++)\r\n                    this.addRowToGroup(list[i]);\r\n            }\r\n        }\r\n        this.groupAggregation(this.groupList);\r\n    };\r\n    IntegralUIGrid.prototype.groupAggregation = function (list) {\r\n        var expColID = 0;\r\n        var expColumn = this.getExpandingColumn();\r\n        if (expColumn)\r\n            expColID = expColumn[this.options.columnFields.id];\r\n        for (var i = 0; i < list.length; i++) {\r\n            var currentRow = list[i];\r\n            if (currentRow.type == 'group') {\r\n                var groupCell = this.getCellByColumnId(currentRow[this.options.rowFields.cells], expColID);\r\n                if (groupCell)\r\n                    for (var j = 0; j < this.currentColumnList.length; j++) {\r\n                        var column = this.currentColumnList[j].data;\r\n                        var colID = column[this.options.columnFields.id];\r\n                        colID = colID != undefined ? colID : j;\r\n                        if (colID) {\r\n                            var aggregation = column[this.options.columnFields.aggregation];\r\n                            if (aggregation && aggregation.enabled && aggregation.callback) {\r\n                                var newValue = aggregation.callback(currentRow, colID, groupCell);\r\n                                if (newValue != undefined) {\r\n                                    if (colID == expColID) {\r\n                                        groupCell.isModified = true;\r\n                                        groupCell.value = newValue;\r\n                                        currentRow.allowDrag = true;\r\n                                    }\r\n                                    else {\r\n                                        var aggregatedCell = {\r\n                                            cid: colID,\r\n                                            isGroup: true,\r\n                                            value: newValue\r\n                                        };\r\n                                        currentRow[this.options.rowFields.cells].push(aggregatedCell);\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                if (currentRow[this.options.rowFields.rows])\r\n                    this.groupAggregation(currentRow[this.options.rowFields.rows]);\r\n            }\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.createGroupExpandList = function () {\r\n        this.groupExpandList.length = 0;\r\n        var list = this.getFullList();\r\n        for (var i = 0; i < list.length; i++) {\r\n            if (list[i].type == 'group') {\r\n                this.groupExpandList.push({\r\n                    id: list[i][this.options.rowFields.id],\r\n                    expanded: this.isRowExpanded(list[i])\r\n                });\r\n            }\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.updateExpandStatus = function () {\r\n        this.createGroupExpandList();\r\n    };\r\n    IntegralUIGrid.prototype.updateGrouping = function (value) {\r\n        if (value) {\r\n            this.options.grouping = {\r\n                dropdown: {\r\n                    appRef: this.isEnabled ? this.appRef : null,\r\n                    items: this.commonService.isFieldAvailable(value.items, [])\r\n                },\r\n                enabled: this.commonService.isFieldAvailable(value.enabled, false),\r\n                showAddButton: this.commonService.isFieldAvailable(value.showAddButton, false),\r\n                showColumns: this.commonService.isFieldAvailable(value.showColumns, false),\r\n                showPanel: this.commonService.isFieldAvailable(value.showPanel, true)\r\n            };\r\n        }\r\n        else {\r\n            this.options.grouping = {\r\n                dropdown: {\r\n                    appRef: this.appRef,\r\n                    items: []\r\n                },\r\n                enabled: false,\r\n                showAddButton: false,\r\n                showColumns: false,\r\n                showPanel: true\r\n            };\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.getGroupExpandObj = function (id) {\r\n        return this.commonService.getObjFromListById(this.groupExpandList, id);\r\n    };\r\n    IntegralUIGrid.prototype.updateGroupExpandValue = function (id, value) {\r\n        var obj = this.commonService.getObjFromListById(this.groupExpandList, id);\r\n        if (obj)\r\n            obj.expanded = value;\r\n    };\r\n    // Rows\r\n    IntegralUIGrid.prototype.updateCurrentRowList = function () {\r\n        var self = this;\r\n        self.currentRowList.length = 0;\r\n        if (self.options.paging.enabled) {\r\n            if (self.currentPageNumber >= 1 && self.currentPageNumber <= self.pageList.length)\r\n                for (var i = 0; i < self.pageList[self.currentPageNumber - 1].length; i++)\r\n                    self.currentRowList.push(self.pageList[self.currentPageNumber - 1][i]);\r\n        }\r\n        else {\r\n            self.isThereChildRows = false;\r\n            var list = self.dataService.getList(null, this.rowDataKey);\r\n            if (self.groups.length > 0)\r\n                list = self.groupList;\r\n            if (list) {\r\n                self.applySorting(list);\r\n                for (var i = 0; i < list.length; i++)\r\n                    self.addChildRows(list[i], 0, null, false);\r\n            }\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.updatePageList = function () {\r\n        this.pageNumber = 0;\r\n        this.pageList.length = 0;\r\n        this.pageRowCount = 0;\r\n        this.isThereChildRows = false;\r\n        var list = this.dataService.getList(null, this.rowDataKey);\r\n        if (this.groups.length > 0)\r\n            list = this.groupList;\r\n        if (list && list.length > 0) {\r\n            this.applySorting(list);\r\n            this.pageList.push([]);\r\n            for (var i = 0; i < list.length; i++)\r\n                this.addChildRows(list[i], 0, null, false);\r\n            if (this.pageList.length > 0 && this.pageList[this.pageList.length - 1].length == 0)\r\n                this.pageList.splice(this.pageList.length - 1, 1);\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.addChildRows = function (parentRow, indent, pid, flag) {\r\n        var pass = true;\r\n        if (!parentRow.tagHide && !parentRow[this.options.rowFields.rows]) {\r\n            pass = this.addRowToCurrentList(parentRow, indent, pid, flag);\r\n            return pass;\r\n        }\r\n        if (!parentRow.tagHide)\r\n            pass = this.addRowToCurrentList(parentRow, indent, pid, flag);\r\n        if (pass) {\r\n            var visibleChildCount = 0;\r\n            var childPass = true;\r\n            if ((parentRow.type == 'group' && (flag || this.isRowExpanded(parentRow))) ||\r\n                (parentRow[this.options.rowFields.hasChildren] == true && (flag || this.isRowExpanded(parentRow)))) {\r\n                var list = parentRow[this.options.rowFields.rows];\r\n                if (list) {\r\n                    this.applySorting(list);\r\n                    for (var i = 0; i < list.length; i++) {\r\n                        childPass = this.addChildRows(list[i], indent + this.options.indent, parentRow[this.options.rowFields.id], flag);\r\n                        if (childPass)\r\n                            visibleChildCount++;\r\n                    }\r\n                }\r\n            }\r\n            if (!flag && !this.isThereChildRows && (visibleChildCount > 0 || (!this.isRowExpanded(parentRow) && parentRow[this.options.rowFields.rows] && parentRow[this.options.rowFields.rows].length > 0 && this.isThereVisibleChildren(parentRow))))\r\n                this.isThereChildRows = true;\r\n        }\r\n        return pass;\r\n    };\r\n    IntegralUIGrid.prototype.addRowToCurrentList = function (row, indent, pid, flag) {\r\n        var self = this;\r\n        if (!row.type)\r\n            row.type = \"row\";\r\n        if (!row[self.options.rowFields.id])\r\n            row[self.options.rowFields.id] = self.commonService.getUniqueId();\r\n        if (pid)\r\n            row[self.options.rowFields.pid] = pid;\r\n        var pass = true;\r\n        var cellList = row[self.options.rowFields.cells];\r\n        if (cellList && cellList.length > 0) {\r\n            pass = self.isRowAllowed(row, flag);\r\n            var colID = -1;\r\n            var currentColumn = null;\r\n            for (var j = 0; j < self.currentColumnList.length; j++) {\r\n                currentColumn = self.currentColumnList[j].data;\r\n                colID = currentColumn[self.options.columnFields.id];\r\n                var cellIndex = j;\r\n                if (colID)\r\n                    cellIndex = self.getCellIndexById(cellList, j, colID);\r\n                if (cellIndex >= 0 && cellIndex < cellList.length) {\r\n                    cellList[cellIndex].type = 'cell';\r\n                    cellList[cellIndex][self.options.cellFields.rid] = row[self.options.rowFields.id];\r\n                }\r\n            }\r\n        }\r\n        if (pass) {\r\n            if (flag)\r\n                self.fullList.push(row);\r\n            else {\r\n                if (self.options.paging.enabled) {\r\n                    if (self.onlyCurrentPage)\r\n                        self.currentPageList.push({ data: row, indent: indent });\r\n                    else {\r\n                        if (!row[self.options.rowFields.pid])\r\n                            self.pageRowCount++;\r\n                        if (self.pageRowCount > self.options.paging.pageSize) {\r\n                            self.pageRowCount = 1;\r\n                            self.pageNumber++;\r\n                            self.pageList.push([]);\r\n                        }\r\n                        self.pageList[self.pageNumber].push({ data: row, indent: indent });\r\n                    }\r\n                }\r\n                else\r\n                    self.currentRowList.push({ data: row, indent: indent });\r\n            }\r\n        }\r\n        return pass;\r\n    };\r\n    IntegralUIGrid.prototype.getFullList = function () {\r\n        return this.fullList;\r\n    };\r\n    IntegralUIGrid.prototype.updateFullList = function () {\r\n        this.fullList.length = 0;\r\n        var list = this.dataService.getList(null, this.rowDataKey);\r\n        if (this.groups.length > 0)\r\n            list = this.groupList;\r\n        if (list) {\r\n            for (var i = 0; i < list.length; i++)\r\n                this.addChildRows(list[i], 0, null, true);\r\n        }\r\n        this.createGroupExpandList();\r\n    };\r\n    IntegralUIGrid.prototype.loadData = function (data, parent, fields, flat) {\r\n        this.processLoadData(data, parent, fields, flat);\r\n    };\r\n    // Drag Drop -------------------------------------------------------------------------\r\n    IntegralUIGrid.prototype.expandOnDelay = function (row) {\r\n        var self = this;\r\n        if (self.autoExpand != false) {\r\n            if (self.expandRow != row) {\r\n                if (self.expandTimeout)\r\n                    clearTimeout(self.expandTimeout);\r\n                self.expandTimeout = setTimeout(function () {\r\n                    if (self.expandTimeout)\r\n                        self.expand(row);\r\n                    clearTimeout(self.expandTimeout);\r\n                }, 500);\r\n            }\r\n            self.expandRow = row;\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.rowDragStart = function (e, obj, index) {\r\n        if (this.dragMode == integralui_base_grid_1.IntegralUIDragDropDisplayMode.Handle)\r\n            this.rowDragStartHandle(e, obj, index);\r\n        else\r\n            this.rowDragStartPopup(e, obj);\r\n    };\r\n    IntegralUIGrid.prototype.rowDragStartHandle = function (e, obj, index) {\r\n        if (this.isEnabled) {\r\n            var elemList = this.rowElems.toArray();\r\n            if (elemList && index >= 0 && index < elemList.length) {\r\n                var rowRect = this.commonService.getPageRect(elemList[index].nativeElement);\r\n                var rowBounds = {\r\n                    x: rowRect.left,\r\n                    y: rowRect.top,\r\n                    width: rowRect.right - rowRect.left,\r\n                    height: rowRect.bottom - rowRect.top\r\n                };\r\n                var shiftPos = this.commonService.getShiftPos();\r\n                var tempMousePos = this.commonService.getMousePos(e);\r\n                tempMousePos.x -= shiftPos.x;\r\n                tempMousePos.y -= shiftPos.y;\r\n                this.dragHandleShiftPos.y = tempMousePos.y - rowRect.top;\r\n            }\r\n            this.dragRowList = [];\r\n            for (var i = 0; i < this.currentSelectedRows.length; i++) {\r\n                var rowObj = this.createScrollObjFromRow(this.currentSelectedRows[i]);\r\n                if (rowObj)\r\n                    this.dragRowList.push(rowObj);\r\n            }\r\n            this.isDragHandleVisible = true;\r\n            this.targetDropRow = obj.data;\r\n            this.targetDropPos = 0;\r\n            // Create an new empty row\r\n            this.removeEmptyRow(3);\r\n            this.removeEmptyRow(1);\r\n            var targetIndex = this.getObjIndexFromScrollList(this.targetDropRow);\r\n            if (targetIndex >= 0) {\r\n                targetIndex += 1;\r\n                var newIndex = Math.max(Math.min(targetIndex, this.scrollRowList.length), 0);\r\n                var newEmptyObj = {\r\n                    cells: [],\r\n                    draggable: false,\r\n                    isEmpty: true,\r\n                    status: 3,\r\n                    style: {}\r\n                };\r\n                this.scrollRowList.splice(newIndex, 0, newEmptyObj);\r\n            }\r\n            //this.updateScrollRowListDragOver(obj.data);\r\n            this.processDragStart(e, obj.data);\r\n            this.hoverRow = null;\r\n            var self_1 = this;\r\n            setTimeout(function () {\r\n                for (var i = 0; i < self_1.dragRowList.length; i++) {\r\n                    var index_1 = self_1.getObjIndexFromScrollList(self_1.dragRowList[i].data);\r\n                    if (index_1 >= 0)\r\n                        self_1.scrollRowList.splice(index_1, 1);\r\n                }\r\n            }, 1);\r\n        }\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIGrid.prototype.rowDragStartPopup = function (e, obj) {\r\n        if (this.isEnabled)\r\n            this.processDragStart(e, obj.data);\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIGrid.prototype.rowDragOver = function (e, obj, index) {\r\n        if (this.isEnabled && this.rowElems) {\r\n            var elemList = this.rowElems.toArray();\r\n            if (elemList && index >= 0 && index < elemList.length) {\r\n                var rowRect = this.commonService.getPageRect(elemList[index].nativeElement);\r\n                var rowBounds = {\r\n                    x: rowRect.left,\r\n                    y: rowRect.top,\r\n                    width: rowRect.right - rowRect.left,\r\n                    height: rowRect.bottom - rowRect.top\r\n                };\r\n                this.expandOnDelay(obj.data);\r\n                this.processScroll(e, this.groupPanelHeight, this.paginatorHeight);\r\n                this.processDragOver(e, obj.data, rowBounds, true);\r\n            }\r\n        }\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIGrid.prototype.rowDragDrop = function (e, obj) {\r\n        if (this.isEnabled) {\r\n            this.expandRow = null;\r\n            if (this.expandTimeout)\r\n                clearTimeout(this.expandTimeout);\r\n            this.processDragDrop(e, obj.data);\r\n        }\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIGrid.prototype.isParentOf = function (targetRow, row) {\r\n        var parent = this.dataService.getParent(row);\r\n        if (targetRow && row && parent && this.commonService.isEqual(targetRow[this.options.rowFields.id], parent[this.options.rowFields.id]))\r\n            return true;\r\n        return false;\r\n    };\r\n    IntegralUIGrid.prototype.isChildOf = function (targetRow, row) {\r\n        var found = false;\r\n        if (targetRow && row) {\r\n            var list = row[this.options.rowFields.rows];\r\n            if (list && list.length > 0) {\r\n                for (var i = 0; i < list.length; i++) {\r\n                    if (this.commonService.isEqual(targetRow[this.options.rowFields.id], list[i][this.options.rowFields.id])) {\r\n                        found = true;\r\n                        break;\r\n                    }\r\n                    else\r\n                        found = this.isChildOf(targetRow, list[i]);\r\n                    if (found)\r\n                        break;\r\n                }\r\n            }\r\n        }\r\n        return found;\r\n    };\r\n    IntegralUIGrid.prototype.processDataDrop = function (e, row, data) {\r\n        var isRowRemoved = e.shiftKey;\r\n        if (!e.shiftKey && data.sourceCtrl && data.sourceCtrl.removeRow)\r\n            isRowRemoved = data.sourceCtrl.removeRow(row);\r\n        if (isRowRemoved) {\r\n            switch (data.dropPos) {\r\n                case 0:\r\n                    if (data.target && data.target.type == 'group') {\r\n                        this.processDataDropAtTargetGroup(row, data.target);\r\n                        /*let targetCells = data.target[this.options.rowFields.cells];\r\n\r\n                        if (row[this.options.rowFields.cells] && targetCells && targetCells.length > 0){\r\n                            let sourceCell = this.getCellByColumnId(row[this.options.rowFields.cells], targetCells[0].valueID);\r\n\r\n                            if (sourceCell){\r\n                                sourceCell[this.options.cellFields.text] = targetCells[0][this.options.cellFields.text];\r\n                                sourceCell[this.options.cellFields.value] = targetCells[0][this.options.cellFields.value];\r\n                            }\r\n                        }*/\r\n                        if (this.dragMode == integralui_base_grid_1.IntegralUIDragDropDisplayMode.Handle) {\r\n                            if (data.target.rows && data.target.rows.length > 0) {\r\n                                var index = this.rows.indexOf(data.target.rows[0]);\r\n                                if (index >= 0)\r\n                                    this.insertRowAt(row, index);\r\n                                else\r\n                                    this.addRow(row);\r\n                            }\r\n                            else\r\n                                this.addRow(row);\r\n                        }\r\n                        else\r\n                            this.addRow(row);\r\n                    }\r\n                    break;\r\n                case 1:\r\n                    this.processDataDropAtTargetRow(row, data.target, data.dropPos);\r\n                    break;\r\n                case 2:\r\n                    this.processDataDropAtTargetRow(row, data.target, data.dropPos);\r\n                    break;\r\n                default:\r\n                    this.addRow(row);\r\n                    break;\r\n            }\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.processDataDropAtTargetGroup = function (row, targetGroup) {\r\n        var groupCells = targetGroup[this.options.rowFields.cells];\r\n        if (row[this.options.rowFields.cells] && groupCells && groupCells.length > 0) {\r\n            var columnId = groupCells[0].valueID;\r\n            var sourceCell = this.getCellByColumnId(row[this.options.rowFields.cells], groupCells[0].valueID);\r\n            if (sourceCell) {\r\n                sourceCell[this.options.cellFields.text] = groupCells[0][this.options.cellFields.text];\r\n                sourceCell[this.options.cellFields.value] = groupCells[0][this.options.cellFields.value];\r\n            }\r\n        }\r\n        var parentGroup = this.getRowParent(targetGroup);\r\n        if (parentGroup)\r\n            this.processDataDropAtTargetGroup(row, parentGroup);\r\n    };\r\n    IntegralUIGrid.prototype.processDataDropAtTargetRow = function (row, targetRow, pos) {\r\n        for (var j = 0; j < this.groups.length; j++) {\r\n            var columnId = this.groups[j][this.options.groupFields.cid];\r\n            var sourceCell = this.getCellByColumnId(row[this.options.rowFields.cells], columnId);\r\n            var targetCell = this.getCellByColumnId(targetRow[this.options.rowFields.cells], columnId);\r\n            if (sourceCell && targetCell) {\r\n                sourceCell[this.options.cellFields.text] = targetCell[this.options.cellFields.text];\r\n                sourceCell[this.options.cellFields.value] = targetCell[this.options.cellFields.value];\r\n            }\r\n        }\r\n        switch (pos) {\r\n            case 1:\r\n                this.insertRowBefore(row, targetRow);\r\n                break;\r\n            case 2:\r\n                this.insertRowAfter(row, targetRow);\r\n                break;\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.getFirstGroupChildRow = function (group) {\r\n        if (group && group.rows && group.rows.length > 0) {\r\n            if (group.rows[0].type == 'group')\r\n                return this.getFirstGroupChildRow(group.rows[0]);\r\n            else\r\n                return group.rows[0];\r\n        }\r\n        return null;\r\n    };\r\n    // Expand / Collapse -----------------------------------------------------------------\r\n    IntegralUIGrid.prototype.collapse = function (row) {\r\n        this.toggle(row, false);\r\n    };\r\n    IntegralUIGrid.prototype.expand = function (row) {\r\n        this.toggle(row, true);\r\n    };\r\n    IntegralUIGrid.prototype.toggle = function (row, value) {\r\n        if (this.isEnabled) {\r\n            if (row) {\r\n                if ((!row[this.options.rowFields.hasChildren] && (!row[this.options.rowFields.rows] || row[this.options.rowFields.rows].length == 0)))\r\n                    return;\r\n                else if (value && row[this.options.rowFields.expanded] != false)\r\n                    return;\r\n                else if (value === false && row[this.options.rowFields.expanded] == false)\r\n                    return;\r\n                var expandedValue = value != undefined ? value : row[this.options.rowFields.expanded] == false ? false : true;\r\n                var allowToggle = true;\r\n                var eventObj = { cancel: false, row: row };\r\n                if (value !== undefined) {\r\n                    if (value)\r\n                        this.beforeExpand.emit(eventObj);\r\n                    else\r\n                        this.beforeCollapse.emit(eventObj);\r\n                }\r\n                else {\r\n                    if (expandedValue)\r\n                        this.beforeCollapse.emit(eventObj);\r\n                    else\r\n                        this.beforeExpand.emit(eventObj);\r\n                }\r\n                if (eventObj.cancel != true) {\r\n                    var prevValue = row[this.options.rowFields.expanded];\r\n                    var newValue = value != undefined ? value : !expandedValue;\r\n                    if (newValue != prevValue) {\r\n                        row[this.options.rowFields.expanded] = newValue;\r\n                        this.updateExpandingCell(row, newValue);\r\n                        if (row.type == 'group')\r\n                            this.updateGroupExpandValue(row[this.options.rowFields.id], newValue);\r\n                        this.updateCurrentLayout();\r\n                    }\r\n                    if (this.isRowExpanded(row))\r\n                        this.afterExpand.emit({ row: row });\r\n                    else\r\n                        this.afterCollapse.emit({ row: row });\r\n                }\r\n            }\r\n            else {\r\n                var list = this.getFullList();\r\n                for (var i = 0; i < list.length; i++) {\r\n                    list[i][this.options.rowFields.expanded] = value;\r\n                    this.updateExpandingCell(list[i], value);\r\n                    if (list[i].type == 'group')\r\n                        this.updateGroupExpandValue(list[i][this.options.rowFields.id], value);\r\n                }\r\n                this.updateCurrentLayout();\r\n            }\r\n        }\r\n    };\r\n    // General ---------------------------------------------------------------------------\r\n    IntegralUIGrid.prototype.findGroupById = function (id) {\r\n        var foundGroup = null;\r\n        if (this.groups) {\r\n            for (var i = 0; i < this.groups.length; i++)\r\n                if (this.groups[i][this.options.groupFields.id] == id) {\r\n                    foundGroup = this.groups[i];\r\n                    break;\r\n                }\r\n        }\r\n        return foundGroup;\r\n    };\r\n    IntegralUIGrid.prototype.findColumnById = function (id) {\r\n        return this.dataService.findObjectById(id, this.columnDataKey);\r\n    };\r\n    IntegralUIGrid.prototype.getColumnRealIndex = function (j) {\r\n        var list = this.dataService.getList(null, this.columnDataKey);\r\n        return j >= 0 && j < list.length && j < this.currentColumnList.length ? list.indexOf(this.currentColumnList[j].data) : -1;\r\n    };\r\n    IntegralUIGrid.prototype.getCellIndexById = function (list, colIndex, id) {\r\n        var cellIndex = -1;\r\n        if (list) {\r\n            var realColIndex = this.getColumnRealIndex(colIndex);\r\n            for (var j = 0; j < list.length; j++) {\r\n                if (list[j][this.options.cellFields.cid] == undefined) {\r\n                    cellIndex = realColIndex;\r\n                    break;\r\n                }\r\n                else if (list[j][this.options.cellFields.cid] == id) {\r\n                    cellIndex = j;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        return cellIndex;\r\n    };\r\n    IntegralUIGrid.prototype.getColumnFromCell = function (cell, index) {\r\n        var column = null;\r\n        if (cell[this.options.cellFields.cid]) {\r\n            for (var j = 0; j < this.currentColumnList.length; j++) {\r\n                if (this.currentColumnList[j].data[this.options.columnFields.id] == cell[this.options.cellFields.cid]) {\r\n                    column = this.currentColumnList[j].data;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        else if (index >= 0 && index < this.currentColumnList.length)\r\n            column = this.currentColumnList[index].data;\r\n        return column;\r\n    };\r\n    IntegralUIGrid.prototype.getCellAlignment = function (column) {\r\n        return column ? column[this.options.columnFields.contentAlignment] : '';\r\n    };\r\n    IntegralUIGrid.prototype.getColumnAlignment = function (column, flag) {\r\n        if (column)\r\n            return flag ? column[this.options.columnFields.footerAlignment] : column[this.options.columnFields.headerAlignment];\r\n        return '';\r\n    };\r\n    IntegralUIGrid.prototype.isGroupExpandedFromRow = function (row) {\r\n        //let group: any = this.findGroupById(row[this.options.rowFields.gid]);\r\n        var obj = this.getGroupExpandObj(row[this.options.rowFields.id]);\r\n        return obj ? obj.expanded : true;\r\n    };\r\n    IntegralUIGrid.prototype.isGroupExpanded = function (group) {\r\n        return group ? (group[this.options.groupFields.expanded] || group[this.options.groupFields.expanded] === undefined ? true : false) : true;\r\n    };\r\n    IntegralUIGrid.prototype.isRowExpanded = function (row) {\r\n        return row ? (row[this.options.rowFields.expanded] || row[this.options.rowFields.expanded] === undefined ? true : false) : true;\r\n    };\r\n    IntegralUIGrid.prototype.isThereVisibleChildren = function (row) {\r\n        var found = false;\r\n        if (row) {\r\n            var list = row[this.options.rowFields.rows];\r\n            if (list && list.length > 0) {\r\n                for (var i = 0; i < list.length; i++) {\r\n                    if (this.isRowAllowed(list[i]) && !this.isRowFixed(list[i])) {\r\n                        found = true;\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return found;\r\n    };\r\n    IntegralUIGrid.prototype.getGroupTextFromColumn = function (column) {\r\n        var groupText = '';\r\n        if (column) {\r\n            groupText = column[this.options.columnFields.groupText];\r\n            if (!groupText || groupText == '')\r\n                groupText = column[this.options.columnFields.headerText];\r\n        }\r\n        return groupText;\r\n    };\r\n    IntegralUIGrid.prototype.getGroupText = function (group) {\r\n        var retValue = '';\r\n        var column = this.getColumnById(group.cid);\r\n        if (column)\r\n            retValue = this.getGroupTextFromColumn(column);\r\n        else if (this.options.grouping && this.options.grouping.dropdown && this.options.grouping.dropdown.items) {\r\n            var obj = this.commonService.getObjFromListById(this.options.grouping.dropdown.items, group.cid);\r\n            if (obj)\r\n                retValue = obj.text;\r\n        }\r\n        return retValue;\r\n    };\r\n    IntegralUIGrid.prototype.updateDragGroupElem = function (e, label) {\r\n        //dragGroupElem.empty();\r\n        var panelPadding = this.commonService.getPadding(this.groupingPanelElem.nativeElement);\r\n        var elemBoundRect = this.commonService.getPageRect(this.groupingPanelElem.nativeElement);\r\n        var shiftPos = this.commonService.getShiftPos();\r\n        var mousePos = this.commonService.getMousePos(e);\r\n        mousePos.x -= (elemBoundRect.left + shiftPos.x);\r\n        mousePos.y -= (elemBoundRect.top + shiftPos.y);\r\n        this.dragGroupElemSize.width = this.dragGroupElem.nativeElement.offsetWidth;\r\n        var elemPos = {\r\n            x: mousePos.x - this.dragGroupElemSize.width / 2,\r\n            y: mousePos.y\r\n        };\r\n        this.dragGroupSettings.top = panelPadding.top;\r\n        this.dragGroupSettings.left = elemPos.x;\r\n        this.dragGroupSettings.display = 'block';\r\n        this.dragGroupSettings.label = label;\r\n    };\r\n    IntegralUIGrid.prototype.groupPanelDragEnter = function (e) {\r\n        this.dropMark(e);\r\n    };\r\n    IntegralUIGrid.prototype.groupPanelMouseEnter = function (e) {\r\n        if (this.isEnabled) {\r\n            this.isGroupPanelHovered = true;\r\n            if (e.which == 1 && this.columnReorderActive && this.reorderColumn) {\r\n                this.restoreColumnOrder();\r\n                //dragGroupElem.empty();\r\n                this.dragGroupSettings.display = 'none';\r\n                this.dragGroupSettings.label = this.reorderColumn[this.options.columnFields.headerText];\r\n                this.groupReorderActive = true;\r\n                this.reorderGroup = null;\r\n                this.dropMark(e);\r\n            }\r\n            else\r\n                //this.gridCursor = 'default';\r\n                this.changeCursor();\r\n        }\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIGrid.prototype.groupPanelMouseMove = function (e) {\r\n        if (this.isEnabled && e.which == 1 && ((this.columnReorderActive && this.reorderColumn) || (this.groupReorderActive && this.reorderGroup))) {\r\n            this.isGroupPanelHovered = true;\r\n            var elemBoundRect = this.commonService.getPageRect(this.groupingPanelElem.nativeElement);\r\n            var shiftPos = this.commonService.getShiftPos();\r\n            var mousePos = this.commonService.getMousePos(e);\r\n            mousePos.x -= (elemBoundRect.left + shiftPos.x);\r\n            mousePos.y -= (elemBoundRect.top + shiftPos.y);\r\n            // Dragged Group Elem\r\n            var groupText = '';\r\n            if (this.reorderColumn)\r\n                groupText = this.getGroupTextFromColumn(this.reorderColumn);\r\n            else if (this.reorderGroup)\r\n                groupText = this.getGroupText(this.reorderGroup);\r\n            this.updateDragGroupElem(e, groupText);\r\n            this.dropMark(e);\r\n            //this.gridCursor = 'default';\r\n            this.changeCursor();\r\n            //this.hoverGroup = null;\r\n            var reorderGroupIndex = -1;\r\n            if (this.reorderGroup)\r\n                reorderGroupIndex = this.groups.indexOf(this.reorderGroup);\r\n        }\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIGrid.prototype.groupPanelMouseLeave = function (e) {\r\n        this.isGroupPanelHovered = false;\r\n        this.dragGroupSettings.display = 'none';\r\n    };\r\n    IntegralUIGrid.prototype.checkColumnPresence = function (id) {\r\n        var retValue = false;\r\n        for (var i = 0; i < this.groups.length; i++) {\r\n            if (this.groups[i].cid == id) {\r\n                retValue = true;\r\n                break;\r\n            }\r\n        }\r\n        return retValue;\r\n    };\r\n    IntegralUIGrid.prototype.groupPanelMouseUp = function (e) {\r\n        if (this.isEnabled && e.which == 1 && ((this.columnReorderActive && this.reorderColumn) || (this.groupReorderActive && this.reorderGroup))) {\r\n            if (this.groupReorderActive && this.reorderGroup) {\r\n                var reorderGroupIndex = this.groups.indexOf(this.reorderGroup);\r\n                var newGroupIndex = this.groups.indexOf(this.hoverGroup);\r\n                if (reorderGroupIndex != newGroupIndex) {\r\n                    this.moveObject(reorderGroupIndex, newGroupIndex, this.groups);\r\n                    this.updateLayout();\r\n                    this.groupOrderChanged.emit(null);\r\n                }\r\n            }\r\n            else {\r\n                var columnId = this.reorderColumn[this.options.columnFields.id];\r\n                var group = { cid: columnId };\r\n                if (this.hoverGroup) {\r\n                    var newGroupIndex = this.groups.indexOf(this.hoverGroup);\r\n                    if (newGroupIndex >= 0) {\r\n                        var isGroupPresent = this.checkColumnPresence(columnId);\r\n                        if (!isGroupPresent) {\r\n                            this.groups.splice(newGroupIndex, 0, group);\r\n                            this.updateLayout();\r\n                            this.groupOrderChanged.emit(null);\r\n                        }\r\n                    }\r\n                }\r\n                else if (!this.checkColumnPresence(columnId)) {\r\n                    if (this.addGroup(group))\r\n                        this.groupOrderChanged.emit(null);\r\n                }\r\n            }\r\n            //if (dragGroupElem)\r\n            //dragGroupElem.remove();\r\n            //if (emptyGroupElem)\r\n            //emptyGroupElem.remove();\r\n            this.resetReorderColumnSettings();\r\n            this.hoverGroup = null;\r\n            this.dropMark(e);\r\n            this.dragGroupSettings.display = 'none';\r\n            //this.gridCursor = 'default';\r\n            this.changeCursor();\r\n            e.stopPropagation();\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.groupMouseEnter = function (e, group) {\r\n        if (this.isEnabled && e.which == 1) {\r\n            this.hoverGroup = group;\r\n            e.stopPropagation();\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.groupMouseLeave = function (e, group) {\r\n        if (this.isEnabled && e.which == 1) {\r\n            this.hoverGroup = null;\r\n            e.stopPropagation();\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.groupMouseDown = function (e, group) {\r\n        if (this.isEnabled && e.which == 1) {\r\n            this.groupReorderActive = true;\r\n            this.reorderGroup = group;\r\n            //emptyGroupElem.css(\"width\", parentElem[0].offsetWidth + 6 + \"px\");\r\n            //emptyGroupElem.css(\"display\", \"inline-block\");\r\n            //parentElem.after(emptyGroupElem);\r\n            //parentElem.css(\"display\", \"none\");\r\n            this.updateDragGroupElem(e, this.getGroupText(this.reorderGroup));\r\n        }\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIGrid.prototype.groupButtonMouseDown = function (e, group) {\r\n        if (this.isEnabled && e.which == 1)\r\n            this.removeGroup(group);\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIGrid.prototype.addGroup = function (group) {\r\n        var eventObj = { cancel: false, group: group };\r\n        this.groupAdding.emit(eventObj);\r\n        if (eventObj.cancel != true) {\r\n            this.groups.push(group);\r\n            this.updateLayout();\r\n            this.groupAdded.emit({ group: group });\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.removeGroup = function (group) {\r\n        var index = this.groups.indexOf(group);\r\n        if (index >= 0) {\r\n            var eventObj = { cancel: false, group: group };\r\n            this.groupRemoving.emit(eventObj);\r\n            if (eventObj.cancel != true) {\r\n                this.groups.splice(index, 1);\r\n                this.updateLayout();\r\n                this.groupRemoved.emit({ group: group });\r\n            }\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.groupListItemSelected = function (item) {\r\n        if (!this.checkColumnPresence(item.id))\r\n            this.addGroup({ cid: item.id });\r\n        this.isGroupListItemSelected = true;\r\n    };\r\n    // Prevent clicks in the list scrollbar area to close the dropdown window\r\n    IntegralUIGrid.prototype.groupListMouseDown = function (e) {\r\n        if (!this.isGroupListItemSelected)\r\n            e.stopPropagation();\r\n    };\r\n    IntegralUIGrid.prototype.onAddGroupDropDownOpen = function (e) {\r\n        this.isGroupListItemSelected = false;\r\n    };\r\n    // Hovering ----------------------------------------------------------------------------\r\n    IntegralUIGrid.prototype.columnMouseDown = function (e, obj) {\r\n        if (this.isEnabled) {\r\n            switch (e.which) {\r\n                case 1:\r\n                    if (this.resizeColumnIndex >= 0 && this.resizeColumnIndex < this.currentColumnList.length) {\r\n                        var shiftPos = this.commonService.getShiftPos();\r\n                        var pos = {\r\n                            x: e.pageX - shiftPos.x,\r\n                            y: e.pageY - shiftPos.y\r\n                        };\r\n                        this.columnStartPos = pos;\r\n                        this.isColumnResizing = true;\r\n                        this.resizeColumn = this.currentColumnList[this.resizeColumnIndex].data;\r\n                    }\r\n                    else {\r\n                        this.processColumnSelection(e, obj.data);\r\n                        if (this.options.allowColumnReorder == true && obj.data[this.options.columnFields.allowDrag] != false)\r\n                            this.startColumnReorder = true;\r\n                    }\r\n                    break;\r\n                case 2:\r\n                    this.processColumnSelection(e, obj.data);\r\n                    break;\r\n            }\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.columnMouseUp = function (e, obj) {\r\n        if (this.isEnabled && e.which == 1 && !this.isColumnResizing)\r\n            this.columnClick.emit({ event: e, column: obj.data });\r\n    };\r\n    IntegralUIGrid.prototype.columnMouseMove = function (e, obj) {\r\n        if (this.isEnabled && !this.isScrollActive) {\r\n            this.resizeColumnIndex = -1;\r\n            if (this.startColumnReorder && !this.columnReorderActive) {\r\n                this.columnReorderActive = true;\r\n                this.reorderColumn = obj.data;\r\n                this.reorderColumnObj = obj;\r\n                this.reorderColumnStartPos.left = e.pageX;\r\n                this.reorderColumnCurrentPos.left = e.pageX;\r\n                this.updateOrignalScrollColumnList();\r\n                this.updateReorderColumnPos();\r\n            }\r\n            else if (!this.columnReorderActive && this.columnElems) {\r\n                var elemList = this.columnElems.toArray();\r\n                var colIndex = this.getColumnCurrentIndex(obj.data);\r\n                var elemIndex = colIndex - this.viewIndexRange.left;\r\n                if (elemIndex >= 0 && elemIndex < elemList.length) {\r\n                    var elem = elemList[elemIndex].nativeElement;\r\n                    var shiftPos = this.commonService.getShiftPos();\r\n                    var columnRect = this.commonService.getPageRect(elem);\r\n                    var mousePos = {\r\n                        x: e.pageX - shiftPos.x,\r\n                        y: e.pageY - shiftPos.y\r\n                    };\r\n                    var rightMargin = {\r\n                        top: columnRect.top,\r\n                        right: columnRect.right,\r\n                        bottom: columnRect.bottom,\r\n                        left: columnRect.right - 10\r\n                    };\r\n                    var leftMargin = {\r\n                        top: columnRect.top,\r\n                        right: columnRect.left + 10,\r\n                        bottom: columnRect.bottom,\r\n                        left: columnRect.left\r\n                    };\r\n                    var allowResize = this.getColumnAllowResize(obj.data);\r\n                    if (allowResize.right && this.commonService.checkHit(mousePos.x, mousePos.y, rightMargin)) {\r\n                        if (this.isAutoSizeColumnsActive)\r\n                            this.resizeColumnIndex = colIndex + 1;\r\n                        else\r\n                            this.resizeColumnIndex = colIndex;\r\n                    }\r\n                    else if (allowResize.left && this.commonService.checkHit(mousePos.x, mousePos.y, leftMargin)) {\r\n                        if (this.isAutoSizeColumnsActive)\r\n                            this.resizeColumnIndex = colIndex;\r\n                        else\r\n                            this.resizeColumnIndex = colIndex - 1;\r\n                    }\r\n                    if (this.isColumnWidthFixed(this.resizeColumnIndex))\r\n                        this.resizeColumnIndex = -1;\r\n                    if (this.resizeColumnIndex >= 0 || this.isColumnResizing)\r\n                        this.gridCursor = 'ew-resize';\r\n                    else\r\n                        //this.gridCursor = 'default';\r\n                        this.changeCursor();\r\n                }\r\n            }\r\n            else\r\n                //this.gridCursor = 'default';\r\n                this.changeCursor();\r\n        }\r\n        else\r\n            //this.gridCursor = 'default';\r\n            this.changeCursor();\r\n    };\r\n    IntegralUIGrid.prototype.columnMouseEnter = function (e, obj) {\r\n        if (this.isEnabled && !this.isScrollActive && !this.isColumnResizing && !this.columnReorderActive) {\r\n            this.hoverColumn = obj.data;\r\n            this.updateColumnStyle(obj);\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.columnMouseLeave = function (e, obj) {\r\n        if (this.isEnabled && !this.isScrollActive && !this.isColumnResizing && !this.columnReorderActive) {\r\n            this.hoverColumn = null;\r\n            //this.gridCursor = this.isColumnResizing ? 'ew-resize' : 'default';\r\n            this.changeCursor();\r\n            this.updateColumnStyle(obj);\r\n            this.dropMark(e);\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.gridMouseMove = function (e) {\r\n        if (!this.isDragActive && this.dragStartPos.x != 0 && this.dragStartPos.y != 0)\r\n            this.dragEndPos = this.commonService.getMousePos(e);\r\n        this.isGridHovered = false;\r\n        if (this.isEnabled) {\r\n            if (e.which == 1) {\r\n                if (this.isDragActive)\r\n                    this.ctrlDragOver(e);\r\n                else if (this.columnReorderActive && this.reorderColumn) {\r\n                    this.isGridHovered = true;\r\n                    //this.gridCursor =  'no-drop';\r\n                    this.reorderColumnCurrentPos.left = e.pageX;\r\n                    this.updateReorderColumnPos();\r\n                    e.stopPropagation();\r\n                }\r\n            }\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.gridMouseUp = function (e) {\r\n        if (e.which == 1) {\r\n            if (this.isDragActive)\r\n                this.ctrlDragDrop(e);\r\n            else if (this.reorderColumn && this.reorderNewColIndex >= 0 && this.reorderNewColIndex < this.originalScrollColumnList.length) {\r\n                var index = this.columns.indexOf(this.reorderColumn);\r\n                var newIndex = this.columns.indexOf(this.originalScrollColumnList[this.reorderNewColIndex].data);\r\n                if (newIndex != index) {\r\n                    this.moveObject(index, newIndex, this.columns);\r\n                    this.columnOrderChanged.emit({ column: this.reorderColumn });\r\n                    this.updateLayout();\r\n                }\r\n            }\r\n        }\r\n        this.resetReorderColumnSettings();\r\n    };\r\n    IntegralUIGrid.prototype.gridMouseEnter = function (e) {\r\n        if (this.isEnabled && e.which == 1 && this.isDragActive)\r\n            this.ctrlDragEnter(e);\r\n    };\r\n    IntegralUIGrid.prototype.gridMouseLeave = function (e) {\r\n        this.hoverRow = null;\r\n        this.hoverColumn = null;\r\n        this.isGridHovered = false;\r\n        if (this.isEnabled) {\r\n            if (e.which == 1) {\r\n                if (this.isDragActive)\r\n                    this.ctrlDragLeave(e);\r\n                if (this.columnReorderActive)\r\n                    this.restoreColumnOrder();\r\n            }\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.rowMouseEnter = function (e, obj) {\r\n        if (this.isEnabled && !this.isScrollActive && !this.isColumnResizing && !this.columnReorderActive) {\r\n            if (!this.isDragHandleVisible) {\r\n                this.hoverRow = obj.data;\r\n                this.updateRowStyle(obj);\r\n                this.rowHover.emit({ row: this.hoverRow });\r\n            }\r\n            else if (!this.isRowExpanded(obj.data)) {\r\n                this.targetDropObj = obj;\r\n                this.updateRowStyle(obj);\r\n            }\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.rowMouseLeave = function (e, obj) {\r\n        this.targetDropObj = null;\r\n        if (this.isEnabled && !this.isScrollActive && !this.isColumnResizing && !this.columnReorderActive) {\r\n            this.hoverRow = null;\r\n            this.updateRowStyle(obj);\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.rowMouseMove = function (e, obj, index) {\r\n        if (e.which == 1) {\r\n            var dragDropData = this.dragDropService.getData();\r\n            if (!this.isDragActive)\r\n                this.isDragActive = dragDropData.sourceCtrl != this && dragDropData.source ? true : false;\r\n            if (!this.isDragActive) {\r\n                var delta = {\r\n                    dx: Math.abs(this.dragEndPos.x - this.dragStartPos.x),\r\n                    dy: Math.abs(this.dragEndPos.y - this.dragStartPos.y)\r\n                };\r\n                if (delta.dx >= 3 || delta.dy >= 3) {\r\n                    this.isDragActive = true;\r\n                    this.rowDragStart(e, obj, index);\r\n                }\r\n            }\r\n            else {\r\n                if (this.dragMode == integralui_base_grid_1.IntegralUIDragDropDisplayMode.Handle)\r\n                    this.dragRowList = dragDropData.handle;\r\n                this.rowDragOver(e, obj, index);\r\n            }\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.resetReorderColumnSettings = function () {\r\n        this.reorderColumnObj = null;\r\n        this.reorderColumn = null;\r\n        this.columnReorderActive = false;\r\n        this.startColumnReorder = false;\r\n        this.groupReorderActive = false;\r\n        this.reorderGroup = null;\r\n    };\r\n    // Keyboard Navigation ---------------------------------------------------------------\r\n    IntegralUIGrid.prototype.processLeftArrowKey = function (cell) {\r\n        var column = this.getColumnFromCell(cell.data, cell.colIndex);\r\n        if (column && this.getColumnIndexFromList(column) == this.expandColIndex && cell.rowIndex >= 0 && cell.rowIndex < this.scrollRowList.length) {\r\n            var row = this.scrollRowList[cell.rowIndex].data;\r\n            if (this.isRowExpanded(row) && this.isThereVisibleChildren(row)) {\r\n                this.collapse(row);\r\n                return cell;\r\n            }\r\n        }\r\n        var prevCell = this.getPrevCell(cell);\r\n        if (prevCell) {\r\n            this.currentFocusCell = prevCell.data;\r\n            if (this.isFirstCell(prevCell)) {\r\n                this.scrollPos({\r\n                    x: this.currentScrollPos.x - prevCell.width * 2,\r\n                    y: this.currentScrollPos.y\r\n                });\r\n            }\r\n            var self_2 = this;\r\n            setTimeout(function () {\r\n                self_2.refresh();\r\n            }, 1);\r\n        }\r\n        return prevCell;\r\n    };\r\n    IntegralUIGrid.prototype.processRightArrowKey = function (cell) {\r\n        var column = this.getColumnFromCell(cell.data, cell.colIndex);\r\n        if (column && this.getColumnIndexFromList(column) == this.expandColIndex && cell.rowIndex >= 0 && cell.rowIndex < this.scrollRowList.length) {\r\n            var row = this.scrollRowList[cell.rowIndex].data;\r\n            if (!this.isRowExpanded(row) && this.isThereVisibleChildren(row)) {\r\n                this.expand(row);\r\n                return cell;\r\n            }\r\n        }\r\n        var nextCell = this.getNextCell(cell);\r\n        if (nextCell) {\r\n            this.currentFocusCell = nextCell.data;\r\n            if (this.isLastCell(nextCell))\r\n                this.scrollPos({\r\n                    x: this.currentScrollPos.x + nextCell.width * 2,\r\n                    y: this.currentScrollPos.y\r\n                });\r\n            else {\r\n                if (nextCell.colIndex >= this.currentColumnList.length - 2)\r\n                    this.scrollPos({\r\n                        x: this.maxScrollPos.x,\r\n                        y: this.currentScrollPos.y\r\n                    });\r\n            }\r\n            var self_3 = this;\r\n            setTimeout(function () {\r\n                self_3.refresh();\r\n            }, 1);\r\n        }\r\n        return nextCell;\r\n    };\r\n    // Layout ----------------------------------------------------------------------------\r\n    IntegralUIGrid.prototype.updateRange = function () {\r\n        this.viewIndexRange = {\r\n            left: 0,\r\n            middle: 999,\r\n            right: 999\r\n        };\r\n        var isLeftLimitFound = false;\r\n        var isMiddleLimitFound = false;\r\n        var isRightLimitFound = false;\r\n        var viewScrollLimit = this.currentScrollPos.x + this.clientRect.width;\r\n        var rightScrollLimit = viewScrollLimit * 2;\r\n        var sumWidth = 0;\r\n        for (var j = 0; j < this.currentColumnList.length; j++) {\r\n            sumWidth += this.getColumnWidth(this.currentColumnList[j].data) + this.columnPadding.left + this.columnPadding.right + 6;\r\n            if (!isLeftLimitFound && sumWidth >= this.currentScrollPos.x) {\r\n                this.viewIndexRange.left = j;\r\n                isLeftLimitFound = true;\r\n            }\r\n            if (!isMiddleLimitFound && sumWidth >= viewScrollLimit) {\r\n                this.viewIndexRange.middle = j;\r\n                isMiddleLimitFound = true;\r\n            }\r\n            if (!isRightLimitFound && sumWidth >= rightScrollLimit) {\r\n                this.viewIndexRange.right = j;\r\n                isRightLimitFound = true;\r\n            }\r\n            if (isLeftLimitFound && isRightLimitFound)\r\n                break;\r\n        }\r\n        sumWidth = 0;\r\n        for (var j = 0; j < this.currentColumnList.length && j < this.viewIndexRange.left; j++)\r\n            sumWidth += this.getColumnWidth(this.currentColumnList[j].data) + this.columnPadding.left + this.columnPadding.right + 6;\r\n        this.contentLeftPos = this.currentScrollPos.x - sumWidth;\r\n        this.updateScrollColumnList();\r\n        this.updateScrollRowList();\r\n    };\r\n    IntegralUIGrid.prototype.updateCurrentLayout = function (full) {\r\n        var self = this;\r\n        self.resetLayout();\r\n        self.updateGroupList();\r\n        if (self.options.paging.enabled) {\r\n            self.updatePageList();\r\n            self.updatePageNumber();\r\n        }\r\n        self.updateCurrentRowList();\r\n        self.updateRange();\r\n        if (full)\r\n            self.updateFullList();\r\n        self.updateScrollSize();\r\n        self.updateColumnWidth();\r\n        self.updateScrollSize();\r\n        self.updateTimer = setTimeout(function () {\r\n            self.updateBlockSize();\r\n            clearTimeout(self.updateTimer);\r\n        }, 1);\r\n    };\r\n    IntegralUIGrid.prototype.updateBlockSize = function () {\r\n        this.blockSize = {\r\n            width: this.bodyElem.nativeElement.offsetWidth,\r\n            height: this.bodyElem.nativeElement.offsetHeight\r\n        };\r\n    };\r\n    IntegralUIGrid.prototype.resetLayout = function () {\r\n        if (this.updateTimer)\r\n            clearTimeout(this.updateTimer);\r\n        this.updateTimer = null;\r\n    };\r\n    IntegralUIGrid.prototype.updateExpandingColumn = function () {\r\n        if (this.currentExpandColumnID != undefined) {\r\n            var column = this.findColumnById(this.currentExpandColumnID);\r\n            var index = this.getColumnCurrentIndex(column);\r\n            this.expandColIndex = index >= 0 ? index : 0;\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.updateLayout = function () {\r\n        var self = this;\r\n        if (self.allowUpdate) {\r\n            self.beforeUpdate.emit(null);\r\n            self.resetLayout();\r\n            self.updateTimer = setTimeout(function () {\r\n                self.updateCurrentColumnList();\r\n                self.updateExpandingColumn();\r\n                self.updateGroupList();\r\n                if (self.options.paging.enabled)\r\n                    self.updatePageList();\r\n                self.updateCurrentRowList();\r\n                self.updateFullList();\r\n                self.groupPanelHeight = self.groupingPanelElem ? self.groupingPanelElem.nativeElement.offsetHeight : 0;\r\n                self.groupPanelSize.height = self.groupingPanelElem ? self.groupingPanelElem.nativeElement.offsetHeight : 0;\r\n                self.paginatorHeight = self.paginatorElem ? self.paginatorElem.nativeElement.offsetHeight : 0;\r\n                self.paginatorPos.top = self.elemRef.nativeElement.firstElementChild.clientHeight - self.paginatorHeight + 1;\r\n                self.horScrollElemPos.bottom = self.paginatorHeight > 0 ? self.paginatorHeight - 1 : 0;\r\n                self.cornerScrollElemPos.bottom = self.paginatorHeight > 0 ? self.paginatorHeight - 1 : 0;\r\n                self.clientRect = {\r\n                    width: self.elemRef.nativeElement.firstElementChild.clientWidth,\r\n                    height: self.elemRef.nativeElement.firstElementChild.clientHeight - self.groupPanelHeight - self.paginatorHeight\r\n                };\r\n                if (self.groupingPanelElem) {\r\n                    var groupPanelBorder = self.commonService.getBorderWidth(self.groupingPanelElem.nativeElement);\r\n                    var groupPanelPadding = self.commonService.getPadding(self.groupingPanelElem.nativeElement);\r\n                    self.groupPanelSize.width = self.clientRect.width - (groupPanelPadding.left + groupPanelPadding.right) - (groupPanelBorder.left + groupPanelBorder.right);\r\n                }\r\n                self.updateRange();\r\n                var columnLayoutTimer = setTimeout(function () {\r\n                    self.columnPadding = { top: 0, right: 0, bottom: 0, left: 0 };\r\n                    var elemList = [];\r\n                    if (self.columnElems && self.showHeader)\r\n                        elemList = self.columnElems.toArray();\r\n                    else if (self.footerElems && self.showFooter)\r\n                        elemList = self.footerElems.toArray();\r\n                    else if (self.cellElems)\r\n                        elemList = self.cellElems.toArray();\r\n                    if (elemList && elemList.length > 0)\r\n                        self.columnPadding = self.commonService.getPadding(elemList[0].nativeElement.firstElementChild);\r\n                    self.headerHeight = self.headerElem ? self.headerElem.nativeElement.offsetHeight : 0;\r\n                    self.footerHeight = self.footerElem ? self.footerElem.nativeElement.offsetHeight : 0;\r\n                    //self.updateColumnWidth();\r\n                    self.updateVisibleRange();\r\n                    self.updateRange();\r\n                    var rowLayoutTimer = setTimeout(function () {\r\n                        self.blockMarginTop = self.headerHeight;\r\n                        self.updateBlockSize();\r\n                        if (self.rowElems) {\r\n                            var elemList_1 = self.rowElems.toArray();\r\n                            self.avgRowHeight = 0;\r\n                            if (elemList_1 && elemList_1.length > 0) {\r\n                                var sumHeight = 0;\r\n                                for (var i = 0; i < elemList_1.length; i++) {\r\n                                    sumHeight += elemList_1[i].nativeElement.offsetHeight;\r\n                                }\r\n                                self.avgRowHeight = Math.floor(sumHeight / elemList_1.length);\r\n                            }\r\n                        }\r\n                        self.updateScrollSize();\r\n                        self.updateColumnWidth();\r\n                        self.updateScrollSize();\r\n                        self.updateComplete.emit(null);\r\n                        clearTimeout(rowLayoutTimer);\r\n                    }, 1);\r\n                    clearTimeout(columnLayoutTimer);\r\n                }, 1);\r\n                clearTimeout(self.updateTimer);\r\n            }, 100);\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.updateVisibleRange = function () {\r\n        this.visibleRange = 1;\r\n        var elemList = this.rowElems.toArray();\r\n        if (elemList && elemList.length > 0) {\r\n            var sumHeight = 0;\r\n            for (var i = 0; i < elemList.length; i++) {\r\n                sumHeight += elemList[i].nativeElement.offsetHeight;\r\n            }\r\n            var rowHeight = Math.floor(sumHeight / elemList.length);\r\n            if (rowHeight > 0)\r\n                this.visibleRange = Math.floor((this.clientRect.height - (this.headerHeight + this.footerHeight)) / rowHeight) + 1;\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.updateScrollSize = function () {\r\n        var self = this;\r\n        self.allColWidth = 0;\r\n        for (var j = 0; j < self.currentColumnList.length; j++)\r\n            self.allColWidth += self.getColumnWidth(self.currentColumnList[j].data) + self.columnPadding.left + self.columnPadding.right + 6;\r\n        self.scrollSize = {\r\n            width: self.allColWidth - self.clientRect.width,\r\n            height: (self.avgRowHeight * self.currentRowList.length) - self.clientRect.height + self.headerHeight + self.footerHeight + self.avgRowHeight\r\n        };\r\n        if (self.isVerScrollVisible())\r\n            self.scrollSize.width += 16;\r\n        if (self.isHorScrollVisible())\r\n            self.scrollSize.height += 16;\r\n        self.scrollSize.width = self.scrollSize.width > 0 ? self.scrollSize.width : 0;\r\n        self.scrollSize.height = self.scrollSize.height > 0 ? self.scrollSize.height : 0;\r\n        self.maxScrollPos = {\r\n            x: self.scrollSize.width,\r\n            y: self.scrollSize.height\r\n        };\r\n        if (self.currentScrollPos.x > self.maxScrollPos.x)\r\n            self.changeHorizontalScrollPos(self.maxScrollPos.x);\r\n        if (self.currentScrollPos.y > self.maxScrollPos.y)\r\n            self.changeVerticalScrollPos(self.maxScrollPos.y);\r\n        self.scrollBarSize = {\r\n            width: self.isVerScrollVisible() ? self.clientRect.width - 20 : self.clientRect.width - 4,\r\n            height: self.isHorScrollVisible() ? self.clientRect.height - 20 : self.clientRect.height - 4\r\n        };\r\n        self.scrollLargeChange = {\r\n            x: self.scrollBarSize.width,\r\n            y: self.scrollBarSize.height - self.headerHeight - self.footerHeight\r\n        };\r\n    };\r\n    IntegralUIGrid.prototype.getRowScrollIndex = function (row) {\r\n        var index = -1;\r\n        for (var i = 0; i < this.scrollRowList.length; i++) {\r\n            if (this.scrollRowList[i].data == row) {\r\n                index = i;\r\n                break;\r\n            }\r\n        }\r\n        return index;\r\n    };\r\n    // Mouse Events ----------------------------------------------------------------------\r\n    IntegralUIGrid.prototype.onWindowMouseMove = function (e) {\r\n        if (this.isEnabled) {\r\n            if (e.buttons != 1) {\r\n                this.clearDragDropSettings();\r\n                this.resetReorderColumnSettings();\r\n            }\r\n            if (e.buttons == 1 && this.isColumnResizing) {\r\n                var shiftPos = this.commonService.getShiftPos();\r\n                var newPos = {\r\n                    x: e.pageX - shiftPos.x,\r\n                    y: e.pageY - shiftPos.y\r\n                };\r\n                if (this.resizeColumn) {\r\n                    var newWidth = 0;\r\n                    if (this.isAutoSizeColumnsActive) {\r\n                        var widthChange = newPos.x - this.columnStartPos.x;\r\n                        if (widthChange < 0) {\r\n                            var prevColumn = this.getPrevColumn(this.resizeColumn);\r\n                            if (prevColumn) {\r\n                                var newWidthPrevColumn = this.getColumnWidth(prevColumn) + widthChange;\r\n                                var minWidthPrevColumn = this.getColumnWidth(prevColumn, 'min');\r\n                                if (newWidthPrevColumn > minWidthPrevColumn) {\r\n                                    this.setColumnWidth(prevColumn, newWidthPrevColumn);\r\n                                    this.updateCellWidth(prevColumn);\r\n                                    newWidth = this.getColumnWidth(this.resizeColumn) - widthChange;\r\n                                    this.setColumnWidth(this.resizeColumn, newWidth);\r\n                                    this.updateCellWidth(this.resizeColumn);\r\n                                }\r\n                                else {\r\n                                    this.setColumnWidth(prevColumn, minWidthPrevColumn);\r\n                                    this.updateCellWidth(prevColumn);\r\n                                }\r\n                            }\r\n                        }\r\n                        else {\r\n                            newWidth = this.getColumnWidth(this.resizeColumn) - widthChange;\r\n                            var minWidth = this.getColumnWidth(this.resizeColumn, 'min');\r\n                            newWidth = newWidth > minWidth ? newWidth : minWidth;\r\n                            if (newWidth > minWidth) {\r\n                                this.setColumnWidth(this.resizeColumn, newWidth);\r\n                                this.updateCellWidth(this.resizeColumn);\r\n                                var prevColumn = this.getPrevColumn(this.resizeColumn, true);\r\n                                if (prevColumn) {\r\n                                    var newWidthPrevColumn = this.getColumnWidth(prevColumn) + widthChange;\r\n                                    this.setColumnWidth(prevColumn, newWidthPrevColumn);\r\n                                    this.updateCellWidth(prevColumn);\r\n                                }\r\n                            }\r\n                        }\r\n                        this.checkWidthChanges();\r\n                    }\r\n                    else {\r\n                        newWidth = this.getColumnWidth(this.resizeColumn) + newPos.x - this.columnStartPos.x;\r\n                        newWidth = newWidth > 0 ? newWidth : 0;\r\n                        this.setColumnWidth(this.resizeColumn, newWidth);\r\n                        this.updateCellWidth(this.resizeColumn);\r\n                    }\r\n                    this.updateScrollSize();\r\n                }\r\n                this.columnStartPos = newPos;\r\n            }\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.onWindowMouseUp = function (e) {\r\n        if (this.isEnabled && this.isColumnResizing) {\r\n            this.isColumnResizing = false;\r\n            this.columnSizeChanged.emit({ column: this.resizeColumn });\r\n            this.updateRange();\r\n        }\r\n        this.removeDropMark();\r\n        this.dragDropService.clearData();\r\n        this.clearDragDropSettings();\r\n        this.resetReorderColumnSettings();\r\n        this.hoverRow = null;\r\n        this.hoverColumn = null;\r\n        this.hoverGroup = null;\r\n        this.isCtrlDragEntered = false;\r\n        if (this.isEnabled)\r\n            this.refresh();\r\n    };\r\n    IntegralUIGrid.prototype.getRowLevel = function (row) {\r\n        var level = 0;\r\n        var parent = this.getRowParent(row);\r\n        while (parent) {\r\n            level++;\r\n            parent = this.getRowParent(parent);\r\n        }\r\n        return level;\r\n    };\r\n    IntegralUIGrid.prototype.getRowParent = function (row) {\r\n        var found = null;\r\n        if (row) {\r\n            for (var i = 0; i < this.fullList.length; i++) {\r\n                if (this.fullList[i][this.options.rowFields.id] == row[this.options.rowFields.pid]) {\r\n                    found = this.fullList[i];\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        return found;\r\n    };\r\n    // Move operations -------------------------------------------------------------------\r\n    IntegralUIGrid.prototype.getPrevRow = function (row) {\r\n        var prevRow = null;\r\n        if (row) {\r\n            var list = this.rows;\r\n            var parent_1 = this.getRowParent(row);\r\n            if (parent_1)\r\n                list = parent_1[this.options.rowFields.rows];\r\n            var index = list.indexOf(row);\r\n            index = index > 0 ? index - 1 : -1;\r\n            if (index >= 0)\r\n                prevRow = list[index];\r\n        }\r\n        return prevRow;\r\n    };\r\n    IntegralUIGrid.prototype.getNextRow = function (row) {\r\n        var nextRow = null;\r\n        if (row) {\r\n            var list = this.rows;\r\n            var parent_2 = this.getRowParent(row);\r\n            if (parent_2)\r\n                list = parent_2[this.options.rowFields.rows];\r\n            var index = list.indexOf(row);\r\n            index = index < list.length - 1 ? index + 1 : -1;\r\n            if (index >= 0)\r\n                nextRow = list[index];\r\n        }\r\n        return nextRow;\r\n    };\r\n    IntegralUIGrid.prototype.moveRow = function (row, direction, targetRow, position) {\r\n        if (row) {\r\n            this.allowUpdate = false;\r\n            var newRowIndex = -1;\r\n            var index = -1;\r\n            switch (direction) {\r\n                case integralui_base_grid_1.IntegralUIDirection.At:\r\n                    newRowIndex = position;\r\n                    break;\r\n                case integralui_base_grid_1.IntegralUIDirection.Down:\r\n                    index = this.getRowCurrentIndex(row) + 1;\r\n                    if (index < this.currentRowList.length)\r\n                        targetRow = this.currentRowList[index].data;\r\n                    break;\r\n                case integralui_base_grid_1.IntegralUIDirection.First:\r\n                    newRowIndex = 0;\r\n                    break;\r\n                case integralui_base_grid_1.IntegralUIDirection.Left:\r\n                    targetRow = this.getRowParent(row);\r\n                    break;\r\n                case integralui_base_grid_1.IntegralUIDirection.Right:\r\n                    targetRow = this.getPrevRow(row);\r\n                    break;\r\n                case integralui_base_grid_1.IntegralUIDirection.Up:\r\n                    index = this.getRowCurrentIndex(row) - 1;\r\n                    if (index >= 0)\r\n                        targetRow = this.currentRowList[index].data;\r\n                    break;\r\n            }\r\n            if (Array.isArray(row)) {\r\n                var moveList = [];\r\n                // To avoid duplicate rows, only move rows which parents are not included\r\n                for (var i = 0; i < row.length; i++) {\r\n                    var found = false;\r\n                    var parentRow = this.getRowParent(row[i]);\r\n                    while (parentRow) {\r\n                        if (row.indexOf(parentRow) >= 0) {\r\n                            found = true;\r\n                            break;\r\n                        }\r\n                        parentRow = this.getRowParent(parentRow);\r\n                    }\r\n                    if (!found)\r\n                        moveList.push(row[i]);\r\n                }\r\n                if (moveList.length > 0) {\r\n                    var firstIndex = this.getRowCurrentIndex(moveList[0]);\r\n                    var lastIndex = this.getRowCurrentIndex(moveList[moveList.length - 1]);\r\n                    if (firstIndex <= lastIndex)\r\n                        for (var i = 0; i < moveList.length; i++)\r\n                            this.moveRowAt(moveList[i], targetRow, direction, newRowIndex);\r\n                    else\r\n                        for (var i = moveList.length - 1; i >= 0; i--)\r\n                            this.moveRowAt(moveList[i], targetRow, direction, newRowIndex);\r\n                }\r\n            }\r\n            else\r\n                this.moveRowAt(row, targetRow, direction, newRowIndex);\r\n            this.allowUpdate = true;\r\n            this.updateCurrentLayout(true);\r\n            this.change.emit({ type: 'move-row' });\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.moveRowAt = function (row, targetRow, direction, position) {\r\n        if (targetRow) {\r\n            var isRowRemoved = this.removeRow(row);\r\n            if (isRowRemoved) {\r\n                // Add row at specified position\r\n                if (direction == integralui_base_grid_1.IntegralUIDirection.First || direction == integralui_base_grid_1.IntegralUIDirection.Right || direction == integralui_base_grid_1.IntegralUIDirection.Last || direction == integralui_base_grid_1.IntegralUIDirection.At)\r\n                    this.insertRowAt(row, position, targetRow);\r\n                else if (direction == integralui_base_grid_1.IntegralUIDirection.Before)\r\n                    this.insertRowBefore(row, targetRow);\r\n                else if (direction == integralui_base_grid_1.IntegralUIDirection.After || direction == integralui_base_grid_1.IntegralUIDirection.Left)\r\n                    this.insertRowAfter(row, targetRow);\r\n            }\r\n        }\r\n    };\r\n    // Loading ---------------------------------------------------------------------------\r\n    IntegralUIGrid.prototype.beginLoad = function (row) {\r\n        if (row) {\r\n            if (this.options.loadRows.indexOf(row) < 0)\r\n                this.options.loadRows.push(row);\r\n            this.refresh();\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.endLoad = function (row) {\r\n        var rowIndex = this.options.loadRows.indexOf(row);\r\n        if (rowIndex >= 0)\r\n            this.options.loadRows.splice(rowIndex, 1);\r\n        this.updateCurrentLayout(true);\r\n    };\r\n    IntegralUIGrid.prototype.isRowLoading = function (row) {\r\n        return this.options.loadRows.indexOf(row) >= 0 ? true : false;\r\n    };\r\n    // Reorder ---------------------------------------------------------------------------\r\n    IntegralUIGrid.prototype.getColumnOpacity = function (obj) {\r\n        if (this.columnReorderActive && obj.data == this.reorderColumn && !this.isGroupPanelHovered && this.isGridHovered)\r\n            return 0;\r\n        return 1;\r\n    };\r\n    IntegralUIGrid.prototype.getHeaderRect = function () {\r\n        return this.headerRowElem ? this.commonService.getPageRect(this.headerRowElem.nativeElement) : { top: 0, right: 0, bottom: 0, left: 0, height: 0, width: 0, x: 0, y: 0 };\r\n    };\r\n    // Scrolling -------------------------------------------------------------------------\r\n    IntegralUIGrid.prototype.scrollTo = function (row) {\r\n        if (row) {\r\n            this.suspendLayout();\r\n            var parent_3 = this.getRowParent(row);\r\n            while (parent_3 != null) {\r\n                this.expand(parent_3);\r\n                parent_3 = this.getRowParent(parent_3);\r\n            }\r\n            this.resumeLayout();\r\n            var self_4 = this;\r\n            var scrollToTimeout_1 = setTimeout(function () {\r\n                var index = self_4.getRowCurrentIndex(row);\r\n                if (index >= 0) {\r\n                    self_4.scrollPos({\r\n                        x: self_4.currentScrollPos.x,\r\n                        y: self_4.avgRowHeight * (index + 1 - self_4.visibleRange / 2)\r\n                    });\r\n                    self_4.updateLayout();\r\n                }\r\n                clearTimeout(scrollToTimeout_1);\r\n            }, 150);\r\n        }\r\n    };\r\n    // Selection -------------------------------------------------------------------------\r\n    IntegralUIGrid.prototype.rowMouseDown = function (e, obj, index) {\r\n        if (this.isEnabled) {\r\n            this.processRowSelection(e, obj.data);\r\n            if (e.which == 1 && !this.isDragActive && this.isDragAllowed(obj.data)) {\r\n                this.dragStartPos = this.commonService.getMousePos(e);\r\n                this.dragEndPos = this.commonService.getMousePos(e);\r\n                this.dragHandlePos = { top: -9999999, left: 0 };\r\n            }\r\n        }\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIGrid.prototype.rowMouseUp = function (e, obj) {\r\n        if (this.isEnabled) {\r\n            if (this.isDragActive)\r\n                this.rowDragDrop(e, obj);\r\n            this.updateRowSelection(e, obj.data);\r\n        }\r\n        //e.stopPropagation();\r\n    };\r\n    IntegralUIGrid.prototype.rowClickEvent = function (e, obj) {\r\n        if (this.isEnabled && e.which == 1)\r\n            this.rowClick.emit({ row: obj.data });\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIGrid.prototype.rowDblClickEvent = function (e, obj) {\r\n        if (this.isEnabled) {\r\n            var eventObj = { cancel: false, row: obj.data };\r\n            this.rowDblClick.emit(eventObj);\r\n            if (eventObj.cancel != true)\r\n                this.toggle(obj.data);\r\n        }\r\n        e.stopPropagation();\r\n    };\r\n    // Style ----------------------------------------------------------------------------\r\n    ////////////////////////////\r\n    // Style Update\r\n    ///////////////////////////\r\n    IntegralUIGrid.prototype.updateColumnStyle = function (obj) {\r\n        if (obj) {\r\n            obj.style = {\r\n                header: [],\r\n                footer: [],\r\n                sorting: []\r\n            };\r\n            obj.inlineStyle = this.getColumnInlineStyle(obj.data[this.options.columnFields.style]);\r\n            // Column Header Style\r\n            obj.style.header.push(this.columnHeaderClassName);\r\n            obj.style.header.push(this.options.currentStyle.column.header.normal);\r\n            //if (!this.enabled)\r\n            //obj.style.header.push(this.options.currentStyle.column.header.disabled);\r\n            if (obj.data == this.selectedColumn)\r\n                obj.style.header.push(this.options.currentStyle.column.header.selected);\r\n            else if (obj.data == this.hoverColumn)\r\n                obj.style.header.push(this.options.currentStyle.column.header.hovered);\r\n            // Column Footer Style\r\n            obj.style.footer.push(this.columnFooterClassName);\r\n            obj.style.footer.push(this.options.currentStyle.column.footer.normal);\r\n            //if (!this.enabled)\r\n            //obj.style.footer.push(this.options.currentStyle.column.footer.disabled);\r\n            if (obj.data == this.selectedColumn)\r\n                obj.style.footer.push(this.options.currentStyle.column.footer.selected);\r\n            else if (obj.data == this.hoverColumn)\r\n                obj.style.footer.push(this.options.currentStyle.column.footer.hovered);\r\n            // Grid Lines\r\n            switch (this.gridLines) {\r\n                case integralui_base_grid_1.IntegralUIGridLines.None:\r\n                    obj.style.header.push(this.options.currentStyle.gridLines.none);\r\n                    obj.style.footer.push(this.options.currentStyle.gridLines.none);\r\n                    break;\r\n                case integralui_base_grid_1.IntegralUIGridLines.Horizontal:\r\n                    obj.style.header.push(this.options.currentStyle.gridLines.horizontal);\r\n                    obj.style.footer.push(this.options.currentStyle.gridLines.horizontal);\r\n                    break;\r\n                case integralui_base_grid_1.IntegralUIGridLines.Vertical:\r\n                    obj.style.header.push(this.options.currentStyle.gridLines.vertical);\r\n                    obj.style.footer.push(this.options.currentStyle.gridLines.vertical);\r\n                    break;\r\n                default:\r\n                    obj.style.header.push(this.options.currentStyle.gridLines.both);\r\n                    obj.style.footer.push(this.options.currentStyle.gridLines.both);\r\n                    break;\r\n            }\r\n            // Sorting\r\n            if (this.isSortingAllowed() && this.isSortingColumn(obj.data)) {\r\n                switch (this.options.sorting) {\r\n                    case integralui_core_1.IntegralUISortOrder.Ascending:\r\n                        obj.style.sorting.push(this.options.currentStyle.column.sorting.normal.ascending);\r\n                        if (obj.data == this.selectedColumn)\r\n                            obj.style.sorting.push(this.options.currentStyle.column.sorting.selected.ascending);\r\n                        break;\r\n                    case integralui_core_1.IntegralUISortOrder.Descending:\r\n                        obj.style.sorting.push(this.options.currentStyle.column.sorting.normal.descending);\r\n                        if (obj.data == this.selectedColumn)\r\n                            obj.style.sorting.push(this.options.currentStyle.column.sorting.selected.descending);\r\n                        break;\r\n                }\r\n            }\r\n        }\r\n    };\r\n    IntegralUIGrid.prototype.updateRowStyle = function (obj) {\r\n        if (obj && !obj.status) {\r\n            obj.style = {\r\n                row: [],\r\n                expandBox: [],\r\n                cell: []\r\n            };\r\n            obj.inlineStyle = this.getRowInlineStyle(obj);\r\n            // Row General Style\r\n            obj.style.row.push(this.rowClassName);\r\n            obj.style.row.push(this.options.currentStyle.row.general.normal);\r\n            // Row Cell Style\r\n            obj.style.cell.push(this.cellClassName);\r\n            obj.style.cell.push(this.options.currentStyle.row.cell.normal);\r\n            if (!this.isRowEnabled(obj.data)) {\r\n                obj.style.row.push(this.options.currentStyle.row.general.disabled);\r\n                obj.style.cell.push(this.options.currentStyle.row.cell.disabled);\r\n            }\r\n            else if (this.isRowSelected(obj.data)) {\r\n                obj.style.row.push(this.options.currentStyle.row.general.selected);\r\n                obj.style.cell.push(this.options.currentStyle.row.cell.selected);\r\n            }\r\n            else if (this.isRowHovered(obj.data)) {\r\n                obj.style.row.push(this.options.currentStyle.row.general.hovered);\r\n                obj.style.cell.push(this.options.currentStyle.row.cell.hovered);\r\n            }\r\n            switch (this.gridLines) {\r\n                case integralui_base_grid_1.IntegralUIGridLines.None:\r\n                    obj.style.cell.push(this.options.currentStyle.gridLines.none);\r\n                    break;\r\n                case integralui_base_grid_1.IntegralUIGridLines.Horizontal:\r\n                    obj.style.cell.push(this.options.currentStyle.gridLines.horizontal);\r\n                    break;\r\n                case integralui_base_grid_1.IntegralUIGridLines.Vertical:\r\n                    obj.style.cell.push(this.options.currentStyle.gridLines.vertical);\r\n                    break;\r\n                default:\r\n                    obj.style.cell.push(this.options.currentStyle.gridLines.both);\r\n                    break;\r\n            }\r\n            // Row ExpandBox Style\r\n            if (this.isThereChildRows || (obj.data[this.options.rowFields.hasChildren]))\r\n                obj.style.expandBox.push(this.options.currentStyle.row.expandBox.general);\r\n            var rowHasChildren = obj.data[this.options.rowFields.hasChildren] && (this.isThereVisibleChildren(obj.data) || !obj.data[this.options.rowFields.rows] || (obj.data[this.options.rowFields.rows] && obj.data[this.options.rowFields.rows].length == 0));\r\n            if (rowHasChildren || this.isThereVisibleChildren(obj.data)) {\r\n                if (this.isRowLoading(obj.data))\r\n                    obj.style.expandBox.push(this.options.currentStyle.row.expandBox.load);\r\n                else {\r\n                    if (obj.data[this.options.rowFields.expanded] !== false)\r\n                        obj.style.expandBox.push(this.options.currentStyle.row.expandBox.collapsed);\r\n                    else\r\n                        obj.style.expandBox.push(this.options.currentStyle.row.expandBox.expanded);\r\n                }\r\n            }\r\n            for (var j = 0; j < obj.cells.length; j++) {\r\n                var cell = obj.cells[j];\r\n                if (this.options.allowFocus && cell.data == this.currentFocusCell)\r\n                    cell.style = {\r\n                        content: 'iui-grid-row-cell-content iui-grid-row-cell-content-focused'\r\n                    };\r\n                else\r\n                    cell.style = {\r\n                        content: 'iui-grid-row-cell-content'\r\n                    };\r\n            }\r\n            if (obj == this.targetDropObj)\r\n                obj.style.row.push(this.targetDropRowClassName);\r\n        }\r\n    };\r\n    ////////////////////////////\r\n    // User Defined Styles\r\n    ///////////////////////////\r\n    IntegralUIGrid.prototype.getColumnStyle = function (value) {\r\n        if (value)\r\n            return {\r\n                header: this.getColumnHeaderStyle(value.header),\r\n                body: this.getColumnBodyStyle(value.body),\r\n                footer: this.getColumnFooterStyle(value.footer),\r\n                sorting: this.getColumnSortingStyle(value.sorting)\r\n            };\r\n        else\r\n            return this.getDefaultColumnStyle();\r\n    };\r\n    IntegralUIGrid.prototype.getColumnHeaderStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                cell: this.commonService.isFieldAvailable(value.cell, this.columnHeaderClassName + '-cell'),\r\n                disabled: this.commonService.isFieldAvailable(value.disabled, this.columnHeaderClassName + '-disabled'),\r\n                normal: this.commonService.isFieldAvailable(value.normal, this.columnHeaderClassName),\r\n                hovered: this.commonService.isFieldAvailable(value.hovered, this.columnHeaderClassName + '-hovered'),\r\n                selected: this.commonService.isFieldAvailable(value.selected, this.columnHeaderClassName + '-selected')\r\n            };\r\n        else\r\n            return this.getDefaultColumnHeaderStyle();\r\n    };\r\n    IntegralUIGrid.prototype.getColumnBodyStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                cell: this.commonService.isFieldAvailable(value.cell, this.columnBodyClassName + '-cell'),\r\n                disabled: this.commonService.isFieldAvailable(value.disabled, this.columnBodyClassName + '-disabled'),\r\n                normal: this.commonService.isFieldAvailable(value.normal, this.columnBodyClassName),\r\n                hovered: this.commonService.isFieldAvailable(value.hovered, this.columnBodyClassName + '-hovered'),\r\n                selected: this.commonService.isFieldAvailable(value.selected, this.columnBodyClassName + '-selected')\r\n            };\r\n        else\r\n            return this.getDefaultColumnBodyStyle();\r\n    };\r\n    IntegralUIGrid.prototype.getColumnFooterStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                cell: this.commonService.isFieldAvailable(value.cell, this.columnFooterClassName + '-cell'),\r\n                disabled: this.commonService.isFieldAvailable(value.disabled, this.columnFooterClassName + '-disabled'),\r\n                normal: this.commonService.isFieldAvailable(value.normal, this.columnFooterClassName),\r\n                hovered: this.commonService.isFieldAvailable(value.hovered, this.columnFooterClassName + '-hovered'),\r\n                selected: this.commonService.isFieldAvailable(value.selected, this.columnFooterClassName + '-selected')\r\n            };\r\n        else\r\n            return this.getDefaultColumnFooterStyle();\r\n    };\r\n    IntegralUIGrid.prototype.getColumnSortingStyle = function (value) {\r\n        if (value)\r\n            return {\r\n                normal: this.getColumnSortingNormalStyle(value.normal),\r\n                selected: this.getColumnSortingSelectedStyle(value.selected)\r\n            };\r\n        else\r\n            return this.getDefaultColumnSortingStyle();\r\n    };\r\n    IntegralUIGrid.prototype.getColumnSortingNormalStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                ascending: this.commonService.isFieldAvailable(value.ascending, this.sortingClassName + '-ascending'),\r\n                descending: this.commonService.isFieldAvailable(value.descending, this.sortingClassName + '-descending')\r\n            };\r\n        else\r\n            return {\r\n                ascending: this.defaultStyle.column.sorting.normal.ascending,\r\n                descending: this.defaultStyle.column.sorting.normal.descending\r\n            };\r\n    };\r\n    IntegralUIGrid.prototype.getColumnSortingSelectedStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                ascending: this.commonService.isFieldAvailable(value.ascending, this.sortingClassName + '-ascending-selected'),\r\n                descending: this.commonService.isFieldAvailable(value.descending, this.sortingClassName + '-descending-selected')\r\n            };\r\n        else\r\n            return {\r\n                ascending: this.defaultStyle.column.sorting.selected.ascending,\r\n                descending: this.defaultStyle.column.sorting.selected.descending\r\n            };\r\n    };\r\n    IntegralUIGrid.prototype.getRowStyle = function (value) {\r\n        if (value)\r\n            return {\r\n                general: this.getRowGeneralStyle(value.general),\r\n                expandBox: this.getRowExpandBoxStyle(value.expandBox),\r\n                cell: this.getRowCellStyle(value.cell)\r\n            };\r\n        else\r\n            return this.getDefaultRowStyle();\r\n    };\r\n    IntegralUIGrid.prototype.getRowGeneralStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                disabled: this.commonService.isFieldAvailable(value.disabled, this.rowClassName + '-disabled'),\r\n                focused: this.commonService.isFieldAvailable(value.focused, this.rowClassName + '-focused'),\r\n                normal: this.commonService.isFieldAvailable(value.normal, this.rowClassName),\r\n                hovered: this.commonService.isFieldAvailable(value.hovered, this.rowClassName + '-hovered'),\r\n                selected: this.commonService.isFieldAvailable(value.selected, this.rowClassName + '-selected')\r\n            };\r\n        else\r\n            return this.getDefaultRowGeneralStyle();\r\n    };\r\n    IntegralUIGrid.prototype.getRowExpandBoxStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                general: this.commonService.isFieldAvailable(value.disabled, this.expandBoxClassName),\r\n                load: this.commonService.isFieldAvailable(value.focused, this.expandBoxClassName + '-load'),\r\n                expanded: this.commonService.isFieldAvailable(value.normal, this.expandBoxClassName + '-open'),\r\n                collapsed: this.commonService.isFieldAvailable(value.hovered, this.expandBoxClassName + '-close')\r\n            };\r\n        else\r\n            return this.getDefaultRowExpandBoxStyle();\r\n    };\r\n    IntegralUIGrid.prototype.getRowCellStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                disabled: this.commonService.isFieldAvailable(value.disabled, this.cellClassName + '-disabled'),\r\n                focused: this.commonService.isFieldAvailable(value.focused, this.cellClassName + '-focused'),\r\n                normal: this.commonService.isFieldAvailable(value.normal, this.cellClassName),\r\n                hovered: this.commonService.isFieldAvailable(value.hovered, this.cellClassName + '-hovered'),\r\n                selected: this.commonService.isFieldAvailable(value.selected, this.cellClassName + '-selected')\r\n            };\r\n        else\r\n            return this.getDefaultRowCellStyle();\r\n    };\r\n    IntegralUIGrid.prototype.getGridLinesStyle = function (value) {\r\n        if (value)\r\n            return {\r\n                none: this.commonService.isFieldAvailable(value.none, this.gridLinesClassName + '-none'),\r\n                horizontal: this.commonService.isFieldAvailable(value.horizontal, this.gridLinesClassName + '-horizontal'),\r\n                vertical: this.commonService.isFieldAvailable(value.vertical, this.gridLinesClassName + '-vertical'),\r\n                both: this.commonService.isFieldAvailable(value.both, this.gridLinesClassName + '-both')\r\n            };\r\n        else\r\n            return this.getDefaultGridLinesStyle();\r\n    };\r\n    ////////////////////////////\r\n    // Default Styles\r\n    ///////////////////////////\r\n    IntegralUIGrid.prototype.getDefaultGridStyle = function () {\r\n        return {\r\n            general: this.getDefaultGeneralStyle(),\r\n            column: this.getDefaultColumnStyle(),\r\n            row: this.getDefaultRowStyle(),\r\n            gridLines: this.getDefaultGridLinesStyle()\r\n        };\r\n    };\r\n    IntegralUIGrid.prototype.getDefaultColumnStyle = function () {\r\n        return {\r\n            header: this.getDefaultColumnHeaderStyle(),\r\n            body: this.getDefaultColumnBodyStyle(),\r\n            footer: this.getDefaultColumnFooterStyle(),\r\n            sorting: this.getDefaultColumnSortingStyle()\r\n        };\r\n    };\r\n    IntegralUIGrid.prototype.getDefaultColumnHeaderStyle = function () {\r\n        return {\r\n            cell: this.defaultStyle.column.header.cell,\r\n            disabled: this.defaultStyle.column.header.disabled,\r\n            normal: this.defaultStyle.column.header.normal,\r\n            hovered: this.defaultStyle.column.header.hovered,\r\n            selected: this.defaultStyle.column.header.selected\r\n        };\r\n    };\r\n    IntegralUIGrid.prototype.getDefaultColumnBodyStyle = function () {\r\n        return {\r\n            cell: this.defaultStyle.column.body.cell,\r\n            disabled: this.defaultStyle.column.body.disabled,\r\n            normal: this.defaultStyle.column.body.normal,\r\n            hovered: this.defaultStyle.column.body.hovered,\r\n            selected: this.defaultStyle.column.body.selected\r\n        };\r\n    };\r\n    IntegralUIGrid.prototype.getDefaultColumnFooterStyle = function () {\r\n        return {\r\n            cell: this.defaultStyle.column.footer.cell,\r\n            disabled: this.defaultStyle.column.footer.disabled,\r\n            normal: this.defaultStyle.column.footer.normal,\r\n            hovered: this.defaultStyle.column.footer.hovered,\r\n            selected: this.defaultStyle.column.footer.selected\r\n        };\r\n    };\r\n    IntegralUIGrid.prototype.getDefaultColumnSortingStyle = function () {\r\n        return {\r\n            normal: {\r\n                ascending: this.defaultStyle.column.sorting.normal.ascending,\r\n                descending: this.defaultStyle.column.sorting.normal.descending\r\n            },\r\n            selected: {\r\n                ascending: this.defaultStyle.column.sorting.selected.ascending,\r\n                descending: this.defaultStyle.column.sorting.selected.descending\r\n            }\r\n        };\r\n    };\r\n    IntegralUIGrid.prototype.getDefaultRowStyle = function () {\r\n        return {\r\n            general: this.getDefaultRowGeneralStyle(),\r\n            expandBox: this.getDefaultRowExpandBoxStyle(),\r\n            cell: this.getDefaultRowCellStyle()\r\n        };\r\n    };\r\n    IntegralUIGrid.prototype.getDefaultRowGeneralStyle = function () {\r\n        return {\r\n            disabled: this.defaultStyle.row.general.disabled,\r\n            focused: this.defaultStyle.row.general.focused,\r\n            normal: this.defaultStyle.row.general.normal,\r\n            hovered: this.defaultStyle.row.general.hovered,\r\n            selected: this.defaultStyle.row.general.selected\r\n        };\r\n    };\r\n    IntegralUIGrid.prototype.getDefaultRowExpandBoxStyle = function () {\r\n        return {\r\n            general: this.defaultStyle.row.expandBox.general,\r\n            load: this.defaultStyle.row.expandBox.load,\r\n            expanded: this.defaultStyle.row.expandBox.expanded,\r\n            collapsed: this.defaultStyle.row.expandBox.collapsed\r\n        };\r\n    };\r\n    IntegralUIGrid.prototype.getDefaultRowCellStyle = function () {\r\n        return {\r\n            disabled: this.defaultStyle.row.cell.disabled,\r\n            focused: this.defaultStyle.row.cell.focused,\r\n            normal: this.defaultStyle.row.cell.normal,\r\n            hovered: this.defaultStyle.row.cell.hovered,\r\n            selected: this.defaultStyle.row.cell.selected\r\n        };\r\n    };\r\n    IntegralUIGrid.prototype.getDefaultGridLinesStyle = function () {\r\n        return {\r\n            none: this.defaultStyle.gridLines.none,\r\n            horizontal: this.defaultStyle.gridLines.horizontal,\r\n            vertical: this.defaultStyle.gridLines.vertical,\r\n            both: this.defaultStyle.gridLines.both\r\n        };\r\n    };\r\n    IntegralUIGrid.prototype.updateStyle = function (value) {\r\n        if (value)\r\n            this.options.currentStyle = {\r\n                general: this.getGeneralStyle(value.general),\r\n                column: this.getColumnStyle(value.column),\r\n                row: this.getRowStyle(value.row),\r\n                gridLines: this.getGridLinesStyle(value.gridLines)\r\n            };\r\n        else\r\n            this.options.currentStyle = this.getDefaultGridStyle();\r\n    };\r\n    IntegralUIGrid.prototype.resetRefresh = function () {\r\n        if (this.refreshTimer)\r\n            clearTimeout(this.refreshTimer);\r\n        this.refreshTimer = null;\r\n    };\r\n    IntegralUIGrid.prototype.refresh = function (obj) {\r\n        var self = this;\r\n        self.resetRefresh();\r\n        //self.refreshTimer = setTimeout(function(){\r\n        self.updateControlClass();\r\n        for (var j = 0; j < self.scrollColumnList.length; j++)\r\n            self.updateColumnStyle(self.scrollColumnList[j]);\r\n        for (var i = 0; i < self.scrollRowList.length; i++) {\r\n            var obj_1 = self.scrollRowList[i];\r\n            self.updateRowStyle(obj_1);\r\n        }\r\n        //clearTimeout(self.refreshTimer);\r\n        //}, 100);\r\n    };\r\n    return IntegralUIGrid;\r\n}(integralui_base_grid_1.IntegralUIBaseGrid));\r\n__decorate([\r\n    core_1.ContentChildren(integralui_core_1.IntegralUITemplate),\r\n    __metadata(\"design:type\", core_1.QueryList)\r\n], IntegralUIGrid.prototype, \"templates\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('groupingPanel', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.ElementRef)\r\n], IntegralUIGrid.prototype, \"groupingPanelElem\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('dragGroup', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.ElementRef)\r\n], IntegralUIGrid.prototype, \"dragGroupElem\", void 0);\r\n__decorate([\r\n    core_1.ViewChildren('headerCellElem', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.QueryList)\r\n], IntegralUIGrid.prototype, \"columnElems\", void 0);\r\n__decorate([\r\n    core_1.ViewChildren('footerCellElem', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.QueryList)\r\n], IntegralUIGrid.prototype, \"footerElems\", void 0);\r\n__decorate([\r\n    core_1.ViewChildren('rowElem', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.QueryList)\r\n], IntegralUIGrid.prototype, \"rowElems\", void 0);\r\n__decorate([\r\n    core_1.ViewChildren('rowCellElem', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.QueryList)\r\n], IntegralUIGrid.prototype, \"cellElems\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('header', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.ElementRef)\r\n], IntegralUIGrid.prototype, \"headerElem\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('headerRow', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.ElementRef)\r\n], IntegralUIGrid.prototype, \"headerRowElem\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('footer', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.ElementRef)\r\n], IntegralUIGrid.prototype, \"footerElem\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('body', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.ElementRef)\r\n], IntegralUIGrid.prototype, \"bodyElem\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('verScroll'),\r\n    __metadata(\"design:type\", integralui_scrollbar_1.IntegralUIScrollBar)\r\n], IntegralUIGrid.prototype, \"verScrollCmp\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('horScroll'),\r\n    __metadata(\"design:type\", integralui_scrollbar_1.IntegralUIScrollBar)\r\n], IntegralUIGrid.prototype, \"horScrollCmp\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('contentBlock', { read: core_1.ViewContainerRef }),\r\n    __metadata(\"design:type\", core_1.ViewContainerRef)\r\n], IntegralUIGrid.prototype, \"contentRef\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('paginator', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.ElementRef)\r\n], IntegralUIGrid.prototype, \"paginatorElem\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean)\r\n], IntegralUIGrid.prototype, \"autoExpand\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Number),\r\n    __metadata(\"design:paramtypes\", [Number])\r\n], IntegralUIGrid.prototype, \"expandColumnIndex\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Number),\r\n    __metadata(\"design:paramtypes\", [Number])\r\n], IntegralUIGrid.prototype, \"expandColumnID\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object),\r\n    __metadata(\"design:paramtypes\", [Object])\r\n], IntegralUIGrid.prototype, \"grouping\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Array),\r\n    __metadata(\"design:paramtypes\", [Array])\r\n], IntegralUIGrid.prototype, \"groups\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Number),\r\n    __metadata(\"design:paramtypes\", [Number])\r\n], IntegralUIGrid.prototype, \"indent\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean),\r\n    __metadata(\"design:paramtypes\", [Boolean])\r\n], IntegralUIGrid.prototype, \"showExpandBox\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean),\r\n    __metadata(\"design:paramtypes\", [Boolean])\r\n], IntegralUIGrid.prototype, \"showHeader\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean),\r\n    __metadata(\"design:paramtypes\", [Boolean])\r\n], IntegralUIGrid.prototype, \"showFooter\", null);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIGrid.prototype, \"afterCollapse\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIGrid.prototype, \"afterExpand\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIGrid.prototype, \"beforeCollapse\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIGrid.prototype, \"beforeExpand\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIGrid.prototype, \"groupAdding\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIGrid.prototype, \"groupAdded\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIGrid.prototype, \"groupRemoving\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIGrid.prototype, \"groupRemoved\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIGrid.prototype, \"groupOrderChanged\", void 0);\r\n__decorate([\r\n    core_1.HostListener('document:mousemove', ['$event']),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUIGrid.prototype, \"onWindowMouseMove\", null);\r\n__decorate([\r\n    core_1.HostListener('document:mouseup', ['$event']),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUIGrid.prototype, \"onWindowMouseUp\", null);\r\nIntegralUIGrid = __decorate([\r\n    core_1.Component({\r\n        selector: 'iui-grid',\r\n        template: \"\\n\\t\\t<div [ngClass]=\\\"getControlClass()\\\" (DOMMouseScroll)=\\\"gridMouseWheel($event)\\\" (mousewheel)=\\\"gridMouseWheel($event)\\\" (mouseenter)=\\\"gridMouseEnter($event)\\\" (mousemove)=\\\"gridMouseMove($event)\\\" (mouseup)=\\\"gridMouseUp($event)\\\" (mouseleave)=\\\"gridMouseLeave($event)\\\" [ngStyle]=\\\"{ cursor: gridCursor }\\\" (scroll)=\\\"onGridScroll($event)\\\" (touchstart)=\\\"ctrlTouchStart($event)\\\" (touchend)=\\\"ctrlTouchEnd($event)\\\">\\n\\t\\t\\t<div *ngIf=\\\"grouping.enabled\\\" class=\\\"iui-grid-grouping-panel\\\" (dragenter)=\\\"groupPanelDragEnter($event)\\\" (mouseenter)=\\\"groupPanelMouseEnter($event)\\\" (mousemove)=\\\"groupPanelMouseMove($event)\\\" (mouseleave)=\\\"groupPanelMouseLeave($event)\\\" (mouseup)=\\\"groupPanelMouseUp($event)\\\" [ngStyle]=\\\"{ width: groupPanelSize.width + 'px' }\\\" #groupingPanel>\\n\\t\\t\\t\\t<span *ngFor=\\\"let group of activeGroups; let i = index\\\" (mouseenter)=\\\"groupMouseEnter($event, group)\\\" (mouseleave)=\\\"groupMouseLeave($event, group)\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"iui-grid-grouping-panel-item\\\" [ngClass]=\\\"{ 'iui-grid-grouping-marker': i < activeGroups.length - 1 }\\\" [ngStyle]=\\\"{ 'margin-left': group==hoverGroup ? groupReorderMargin + 'px' : 0, display: group == reorderGroup ? 'none' : 'inline-block' }\\\">\\n\\t\\t\\t\\t\\t\\t<p class=\\\"iui-grid-grouping-panel-item-label\\\" (mousedown)=\\\"groupMouseDown($event, group)\\\">{{getGroupText(group)}}</p>\\n\\t\\t\\t\\t\\t\\t<span class=\\\"iui-grid-grouping-panel-item-button\\\" (mousedown)=\\\"groupButtonMouseDown($event, group)\\\"></span>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</span>\\n\\t\\t\\t\\t<div *ngIf=\\\"!groupReorderActive\\\" class=\\\"iui-grid-grouping-panel-toolbar\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"iui-grid-grouping-panel-toolbar-button-add\\\" [iuiDropDown]=\\\"options.grouping.dropdown\\\" (dropDownOpen)=\\\"onAddGroupDropDownOpen($event)\\\">\\n\\t\\t\\t\\t\\t\\t<span></span>\\n                        <ng-template let-obj [iuiTemplate]=\\\"{ type: 'dropdown' }\\\">\\n                            <ul *ngIf=\\\"isEnabled\\\" class=\\\"iui-grid-grouping-panel-dropdown-list\\\" (mousedown)=\\\"groupListMouseDown($event)\\\">\\n                                <li *ngFor=\\\"let item of options.grouping.dropdown.items\\\" (mousedown)=\\\"groupListItemSelected(item)\\\">\\n                                    <span class=\\\"iui-grid-grouping-panel-dropdown-list-checkbox\\\" [ngClass]=\\\"{ 'iui-grid-grouping-panel-dropdown-list-checkbox-true': checkColumnPresence(item.id) }\\\"></span>\\n                                    <span>{{item.text}}</span>\\n                                </li>\\n                            </ul>\\n                        </ng-template>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t<div *ngIf=\\\"activeGroups.length==0\\\" class=\\\"iui-grid-grouping-panel-item\\\" style=\\\"margin-left:-9999999px;\\\">\\n\\t\\t\\t\\t\\t<p class=\\\"iui-grid-grouping-panel-item-label\\\">Empty Group</p>\\n\\t\\t\\t\\t\\t<span class=\\\"iui-grid-grouping-panel-item-button\\\"></span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t<div class=\\\"iui-grid-grouping-panel-item\\\" style=\\\"position:absolute;pointer-events:none;\\\" [ngStyle]=\\\"{ display: dragGroupSettings.display, top: dragGroupSettings.top + 'px', left: dragGroupSettings.left + 'px' }\\\" #dragGroup>\\n\\t\\t\\t\\t\\t<p class=\\\"iui-grid-grouping-panel-item-label\\\">{{dragGroupSettings.label}}</p>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div *ngIf=\\\"showHeader\\\" class=\\\"iui-grid-block iui-grid-block-top\\\" [ngStyle]=\\\"{ left: -contentLeftPos + 'px', top: groupPanelHeight + 'px' }\\\" #header>\\n\\t\\t\\t\\t<table cellpadding=\\\"0\\\" cellspacing=\\\"0\\\">\\n\\t\\t\\t\\t\\t<tr style=\\\"position:relative;\\\" #headerRow>\\n\\t\\t\\t\\t\\t\\t<td [ngClass]=\\\"column.style.header\\\" *ngFor=\\\"let column of scrollColumnList\\\" (mousemove)=\\\"columnMouseMove($event, column)\\\" (mousedown)=\\\"columnMouseDown($event, column)\\\" (mouseup)=\\\"columnMouseUp($event, column)\\\" (mouseenter)=\\\"columnMouseEnter($event, column)\\\" (mouseleave)=\\\"columnMouseLeave($event, column)\\\" (touchstart)=\\\"columnTouchStart($event, column)\\\" [ngStyle]=\\\"column.inlineStyle.header\\\" #headerCellElem>\\n\\t\\t\\t\\t\\t\\t\\t<div [ngStyle]=\\\"{ opacity: getColumnOpacity(column), 'text-align': getColumnAlignment(column.data), width: getColumnWidth(column.data) + 'px' }\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t<span *ngIf=\\\"isSortingColumn(column.data)\\\" [ngClass]=\\\"column.style.sorting\\\" data-element=\\\"sort-button\\\"></span>\\n\\t\\t\\t\\t\\t\\t\\t\\t<span [iuiTemplateOutlet]=\\\"headerData[0]\\\" [iuiTemplateOutletContext]=\\\"{$implicit: (column.data)}\\\"></span>\\n\\t\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t</td>\\n\\t\\t\\t\\t\\t\\t<td *ngIf=\\\"reorderColumnObj && !isGroupPanelHovered && isGridHovered\\\" [ngClass]=\\\"reorderColumnObj.style.header\\\" [ngStyle]=\\\"{ position: 'absolute', top:0, left: reorderColumnObjPos.left + 'px', 'pointer-events': 'none', 'z-index': 999 }\\\">\\n\\t\\t\\t\\t\\t\\t\\t<div [ngStyle]=\\\"{ opacity: '0.5', 'text-align': getColumnAlignment(reorderColumnObj.data), width: getColumnWidth(reorderColumnObj.data) + 'px' }\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t<span [iuiTemplateOutlet]=\\\"headerData[0]\\\" [iuiTemplateOutletContext]=\\\"{$implicit: (reorderColumnObj.data)}\\\"></span>\\n\\t\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t</td>\\n\\t\\t\\t\\t\\t</tr>\\n\\t\\t\\t\\t</table>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div class=\\\"iui-grid-block\\\" [ngStyle]=\\\"{ 'margin-top': blockMarginTop + groupPanelHeight + 'px', height: blockSize.height + 'px' }\\\" (scroll)=\\\"onContentScroll($event)\\\" #contentBlock style=\\\"overflow: visible;\\\">\\n\\t\\t\\t\\t<table cellpadding=\\\"0\\\" cellspacing=\\\"0\\\" style=\\\"position:absolute;\\\" [ngStyle]=\\\"{ left: -contentLeftPos + 'px' }\\\" #body>\\n\\t\\t\\t\\t\\t<tr [ngClass]=\\\"row.style.row\\\" *ngFor=\\\"let row of scrollRowList; let i = index\\\" (mouseenter)=\\\"rowMouseEnter($event, row)\\\" (mouseleave)=\\\"rowMouseLeave($event, row)\\\" (mousedown)=\\\"rowMouseDown($event, row, i)\\\" (mousemove)=\\\"rowMouseMove($event, row, i)\\\" (mouseup)=\\\"rowMouseUp($event, row)\\\" (click)=\\\"rowClickEvent($event, row)\\\" (dblclick)=\\\"rowDblClickEvent($event, row)\\\" (touchstart)=\\\"rowTouchStart($event, row)\\\" [ngStyle]=\\\"row.inlineStyle\\\" #rowElem>\\n\\t\\t\\t\\t\\t\\t<td [ngClass]=\\\"row.style.cell\\\" *ngFor=\\\"let cell of row.cells; let j = index\\\" (mousedown)=\\\"cellMouseDown($event, cell)\\\" [ngStyle]=\\\"cell.inlineStyle\\\" #rowCellElem>\\n\\t\\t\\t\\t\\t\\t\\t<div [ngClass]=\\\"cell.style.content\\\" [ngStyle]=\\\"{ 'padding-left': cell.indent + 'px', 'text-align': cell.align, width: cell.width + 'px', height: cell.height }\\\" tabindex=\\\"{{cell.tabIndex}}\\\" [iuiFocus]=\\\"cell.data == this.currentFocusCell\\\" (focus)=\\\"cellGotFocus(cell)\\\" (blur)=\\\"cellLostFocus(cell)\\\" (keydown)=\\\"cellKeyDown($event, cell)\\\" (keypress)=\\\"cellKeyPress($event, cell)\\\" (keyup)=\\\"cellKeyUp($event, cell)\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t<span *ngIf=\\\"showExpandBox && cell.expandBoxAllowed\\\" [ngClass]=\\\"row.style.expandBox\\\" (mousedown)=\\\"expandBoxMouseDown($event, row.data)\\\" (mouseup)=\\\"expandBoxMouseUp($event, row.data)\\\" (touchstart)=\\\"expandBoxTouchStart($event, row.data)\\\"></span>\\n\\t\\t\\t\\t\\t\\t\\t\\t<span [iuiTemplateOutlet]=\\\"cellData[0]\\\" [iuiTemplateOutletContext]=\\\"{$implicit: (cell.data)}\\\"></span>\\n\\t\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t</td> \\n\\t\\t\\t\\t\\t\\t<td *ngIf=\\\"row.isEmptyPrev\\\" colspan=\\\"999\\\" style=\\\"pointer-events:none;\\\">\\n\\t\\t\\t\\t\\t\\t\\t<div class=\\\"iui-grid-row-empty-content\\\" [ngClass]=\\\"{ 'open-empty-bottom': row.status == 1, 'close-empty-bottom': row.status == 2 }\\\"></div>\\n\\t\\t\\t\\t\\t\\t</td>\\n\\t\\t\\t\\t\\t\\t<td *ngIf=\\\"row.isEmpty\\\" colspan=\\\"999\\\" style=\\\"pointer-events:none;\\\">\\n\\t\\t\\t\\t\\t\\t\\t<div class=\\\"iui-grid-row-empty-content\\\" [ngClass]=\\\"{ 'open-empty-bottom': row.status == 1, 'close-empty-bottom': row.status == 2, 'empty-bottom': row.status == 3 }\\\"></div>\\n\\t\\t\\t\\t\\t\\t</td>\\n\\t\\t\\t\\t\\t</tr>\\n\\t\\t\\t\\t\\t<span *ngIf=\\\"isDragHandleVisible\\\" class=\\\"iui-drag-handle\\\" [ngStyle]=\\\"{ top: dragHandlePos.top + 'px' }\\\">\\n\\t\\t\\t\\t\\t\\t<tr *ngFor=\\\"let dragRow of dragRowList\\\" [ngClass]=\\\"dragRow.style.row\\\">\\n\\t\\t\\t\\t\\t\\t\\t<td [ngClass]=\\\"dragRow.style.cell\\\" *ngFor=\\\"let cell of dragRow.cells; let j = index\\\" style=\\\"border-color:transparent\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t<div [ngClass]=\\\"cell.style.content\\\" [ngStyle]=\\\"{ 'padding-left': cell.expandBoxAllowed ? dragObjIndent + 'px' : cell.indent + 'px', 'text-align': cell.align, width: cell.expandBoxAllowed ? cell.indent + cell.width - dragObjIndent - 2 + 'px' : cell.width + 'px', height: cell.height }\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<span *ngIf=\\\"cell.expandBoxAllowed\\\" [ngClass]=\\\"dragRow.style.expandBox\\\"></span>\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<span [iuiTemplateOutlet]=\\\"cellData[0]\\\" [iuiTemplateOutletContext]=\\\"{$implicit: (cell.data)}\\\"></span>\\n\\t\\t\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t\\t</td> \\n\\t\\t\\t\\t\\t\\t</tr>\\n\\t\\t\\t\\t\\t</span>\\n\\t\\t\\t\\t</table>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div *ngIf=\\\"showFooter\\\" class=\\\"iui-grid-block iui-grid-block-bottom\\\" [ngStyle]=\\\"{ left: -contentLeftPos + 'px', bottom: getFooterBottomPos() + 'px' }\\\" #footer>\\n\\t\\t\\t\\t<table cellpadding=\\\"0\\\" cellspacing=\\\"0\\\">\\n\\t\\t\\t\\t\\t<tr>\\n\\t\\t\\t\\t\\t\\t<td [ngClass]=\\\"column.style.footer\\\" *ngFor=\\\"let column of scrollColumnList\\\" [ngStyle]=\\\"column.inlineStyle.footer\\\" #footerCellElem>\\n\\t\\t\\t\\t\\t\\t\\t<div [ngStyle]=\\\"{ 'text-align': getColumnAlignment(column.data, true), width: getColumnWidth(column.data) + 'px' }\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t<span [iuiTemplateOutlet]=\\\"footerData[0]\\\" [iuiTemplateOutletContext]=\\\"{$implicit: (column.data)}\\\"></span>\\n\\t\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t</td> \\n\\t\\t\\t\\t\\t</tr>\\n\\t\\t\\t\\t</table>\\n\\t\\t\\t</div>\\n            <iui-scrollbar *ngIf=\\\"isVerScrollVisible()\\\" [enabled]=\\\"enabled\\\" [value]=\\\"currentScrollPos.y\\\" [max]=\\\"maxScrollPos.y\\\" [largeChange]=\\\"scrollLargeChange.y\\\" [height]=\\\"scrollBarSize.height\\\" (valueChanged)=\\\"onVerticalScrollChanged($event)\\\" (scrollStart)=\\\"onVerticalScrollStart($event)\\\" (scrollEnd)=\\\"onVerticalScrollEnd($event)\\\" [position]=\\\"{ top: groupPanelHeight + 1 }\\\" #verScroll></iui-scrollbar>\\n            <iui-scrollbar *ngIf=\\\"isHorScrollVisible()\\\" [enabled]=\\\"enabled\\\" [orientation]=\\\"horScrollOrientation\\\" [value]=\\\"currentScrollPos.x\\\" [max]=\\\"maxScrollPos.x\\\" [width]=\\\"scrollBarSize.width\\\" (valueChanged)=\\\"onHorizontalScrollChanged($event)\\\" (scrollStart)=\\\"onHorizontalScrollStart($event)\\\" (scrollEnd)=\\\"onHorizontalScrollEnd($event)\\\" [position]=\\\"{ bottom: horScrollElemPos.bottom }\\\" #horScroll></iui-scrollbar>\\n            <div *ngIf=\\\"isVerScrollVisible() && isHorScrollVisible()\\\" style=\\\"background:#f5f5f5;position:absolute;right:0;bottom:0;width:16px;height:16px;\\\" [ngStyle]=\\\"{ bottom: cornerScrollElemPos.bottom + 'px' }\\\"></div>\\n            <iui-paginator *ngIf=\\\"isPaginationEnabled()\\\" align=\\\"center\\\" style=\\\"position:absolute;top:0;width:100%\\\" [ngStyle]=\\\"{ top: paginatorPos.top + 'px' }\\\" [maxPages]=\\\"getMaxPages()\\\" [currentPage]=\\\"currentPageNumber\\\" (pageChanged)=\\\"paginatorPageChanged($event)\\\" #paginator></iui-paginator>\\n\\t\\t</div>\\n\\t\",\r\n        inputs: ['allowColumnReorder', 'allowDrag', 'allowDrop', 'allowFilter', 'allowFocus', 'appRef', 'autoSizeColumns', 'autoUpdate', 'columns', 'controlStyle', 'data', 'dataFields', 'dragMode', 'enabled', 'focusedCell', 'gridLines', 'name', 'rowHeight', 'rows', 'paging', 'selectedColumn', 'selectedRow', 'selectionMode', 'showScroll', 'sorting', 'state'],\r\n        outputs: ['afterSelect', 'beforeEdit', 'beforeSelect', 'beforeUpdate', 'change', 'columnAdding', 'columnAdded', 'columnClick', 'columnRemoving', 'columnRemoved', 'columnsCleared', 'columnOrderChanged', 'columnSizeChanged', 'dragEnter', 'dragDrop', 'dragLeave', 'dragOver', 'dragStart', 'keyDown', 'keyPress', 'keyUp', 'loadComplete', 'rowAdding', 'rowAdded', 'rowClick', 'rowDblClick', 'rowHover', 'rowRemoving', 'rowRemoved', 'rowsCleared', 'scrollPosChanged', 'selectionChanged', 'updateComplete'],\r\n        providers: [integralui_core_1.IntegralUIBaseService, integralui_data_service_1.IntegralUIDataService],\r\n        encapsulation: core_1.ViewEncapsulation.None\r\n    }),\r\n    __metadata(\"design:paramtypes\", [integralui_data_service_1.IntegralUIDataService,\r\n        integralui_dragdrop_service_1.IntegralUIDragDropService,\r\n        core_1.ElementRef,\r\n        core_1.Renderer,\r\n        integralui_common_service_1.IntegralUICommonService,\r\n        integralui_filter_service_1.IntegralUIFilterService,\r\n        core_1.ChangeDetectorRef,\r\n        core_1.ComponentFactoryResolver,\r\n        integralui_core_1.IntegralUIBaseService])\r\n], IntegralUIGrid);\r\nexports.IntegralUIGrid = IntegralUIGrid;\r\n//# sourceMappingURL=integralui.grid.js.map","/*\r\n  filename: integralui.splitter.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(e,b){function a(){this.constructor=e}for(var f in b)b.hasOwnProperty(f)&&(e[f]=b[f]);e.prototype=null===b?Object.create(b):(a.prototype=b.prototype,new a)},__decorate=this&&this.__decorate||function(e,b,a,f){var c=arguments.length,d=3>c?b:null===f?f=Object.getOwnPropertyDescriptor(b,a):f,g;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)d=Reflect.decorate(e,b,a,f);else for(var h=e.length-1;0<=h;h--)if(g=e[h])d=(3>c?g(d):3<c?g(b,a,d):\r\ng(b,a))||d;return 3<c&&d&&Object.defineProperty(b,a,d),d},__metadata=this&&this.__metadata||function(e,b){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(e,b)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),IntegralUISplitter=function(e){function b(a,b,c){var d=e.call(this,c)||this;d.elemRef=a;d.elemRenderer=b;d.commonService=c;d.clientSize={width:0,\r\nheight:0};d.currentSplitterDistance=0;d.maxPos={x:0,y:0};d.panel1Size={width:0,height:0};d.panel2Size={width:0,height:0};d.splitterSize={width:0,height:0};d.splitterHandleSize={width:0,height:0};d.prevMaxPos={x:0,y:0};d.handleClass=[];d.orientation=integralui_core_1.IntegralUIOrientation.Vertical;d.orientationChanged=new core_1.EventEmitter;d.splitterMoved=new core_1.EventEmitter;d.splitterMoving=new core_1.EventEmitter;d.splitterStartPos={x:0,y:0};d.isSplitterActive=!1;return d}__extends(b,e);b.prototype.getMaxPos=\r\nfunction(){return this.maxPos};Object.defineProperty(b.prototype,\"splitterDistance\",{get:function(){return this.currentSplitterDistance},set:function(a){this.currentSplitterDistance!=a&&(this.currentSplitterDistance=a,this.splitterMoved.emit({value:a}),this.updateLayout())},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\"panel2\",{get:function(){return this.currentPanel2},set:function(a){this.currentPanel2!=a&&(this.currentPanel2=a,this.updateLayout())},enumerable:!0,configurable:!0});\r\nb.prototype.ngOnInit=function(){this.generalClassName=\"iui-splitter\";this.handleClassName=this.generalClassName+\"-handle\";this.initStyle()};b.prototype.initStyle=function(){this.defaultStyle={general:{disabled:this.generalClassName+\"-disabled\",focused:this.generalClassName+\"-focused\",normal:this.generalClassName,hovered:this.generalClassName+\"-hovered\",selected:this.generalClassName+\"-selected\"},handle:{general:this.handleClassName,horizontal:this.handleClassName+\"-horizontal\",vertical:this.handleClassName+\r\n\"-vertical\"}};this.updateStyle(this.controlStyle);this.updateControlClass();this.updateHandleClass()};b.prototype.ngAfterViewInit=function(){};b.prototype.ngAfterContentInit=function(){this.initLayout();this.updateSettings()};b.prototype.initLayout=function(){var a=this,b=setTimeout(function(){a.clientSize={width:a.elemRef.nativeElement.parentElement.clientWidth,height:a.elemRef.nativeElement.parentElement.clientHeight};if(a.panel1&&a.panel1.nativeElement){var c=a.commonService.getBorderWidth(a.panel1.nativeElement);\r\na.panel1Size={width:a.panel1.nativeElement.offsetWidth+c.left+c.right,height:a.panel1.nativeElement.offsetHeight+c.top+c.bottom}}a.panel2&&a.panel2.nativeElement&&(c=a.commonService.getBorderWidth(a.panel2.nativeElement),a.panel2Size={width:a.panel2.nativeElement.offsetWidth+c.left+c.right,height:a.panel2.nativeElement.offsetHeight+c.top+c.bottom});a.splitterHandleSize={width:a.handleElem.nativeElement.offsetWidth,height:a.handleElem.nativeElement.offsetHeight};a.splitterSize=a.orientation==integralui_core_1.IntegralUIOrientation.Vertical?\r\n{width:a.splitterHandleSize.width,height:a.clientSize.height}:{width:a.clientSize.width,height:a.splitterHandleSize.height};a.maxPos={x:a.clientSize.width-a.splitterHandleSize.width,y:a.clientSize.height-a.splitterHandleSize.height};a.prevMaxPos.x=a.maxPos.x;a.prevMaxPos.y=a.maxPos.y;0==a.currentSplitterDistance&&(a.currentSplitterDistance=a.orientation==integralui_core_1.IntegralUIOrientation.Vertical?a.panel1Size.width:a.panel1Size.height);a.updateLayout();clearTimeout(b)},1)};b.prototype.ngAfterContentChecked=\r\nfunction(){};b.prototype.updateSettings=function(){this.clientSize={width:this.elemRef.nativeElement.parentElement.clientWidth,height:this.elemRef.nativeElement.parentElement.clientHeight};this.splitterSize=this.orientation==integralui_core_1.IntegralUIOrientation.Vertical?{width:this.splitterHandleSize.width,height:this.clientSize.height}:{width:this.clientSize.width,height:this.splitterHandleSize.height};this.maxPos={x:this.clientSize.width-this.splitterHandleSize.width,y:this.clientSize.height-\r\nthis.splitterHandleSize.height};if(this.orientation==integralui_core_1.IntegralUIOrientation.Vertical&&this.maxPos.x!=this.prevMaxPos.x){var a=Math.floor((this.maxPos.x-this.prevMaxPos.x)/2);0==this.splitterDistance?this.splitterDistance+=a:(this.panel2Size.width=this.maxPos.x-this.splitterDistance-this.splitterHandleSize.width,this.updatePanelSize());this.prevMaxPos.x=this.maxPos.x}else this.orientation==integralui_core_1.IntegralUIOrientation.Horizontal&&this.maxPos.y!=this.prevMaxPos.y&&(a=Math.floor((this.maxPos.y-\r\nthis.prevMaxPos.y)/2),0==this.splitterDistance?this.splitterDistance+=a:(this.panel2Size.height=this.maxPos.y-this.splitterDistance-this.splitterHandleSize.height,this.updatePanelSize()),this.prevMaxPos.y=this.maxPos.y)};b.prototype.calcSplitterDistance=function(a,b){var c=this.currentSplitterDistance;this.orientation==integralui_core_1.IntegralUIOrientation.Vertical?(a&&b&&(c+=b.x-a.x),c=Math.min(Math.max(0,c),this.maxPos.x),this.panel1Size.width=c,this.panel2Size.width=this.maxPos.x-c-this.splitterHandleSize.width):\r\n(a&&b&&(c+=b.y-a.y),c=Math.min(Math.max(0,c),this.maxPos.y),this.panel1Size.height=c,this.panel2Size.height=this.maxPos.y-c-this.splitterHandleSize.height);if(this.currentSplitterDistance!=c){var d={cancel:!1,value:c};this.splitterMoving.emit(d);1!=d.cancel&&(this.currentSplitterDistance=c)}};b.prototype.updateLayout=function(a,b){var c=this;if(c.panel1&&c.panel2)var d=setTimeout(function(){c.calcSplitterDistance(a,b);c.updatePanelSize();clearTimeout(d)},10)};b.prototype.updatePanelSize=function(){this.panel1&&\r\nthis.panel2&&(this.orientation==integralui_core_1.IntegralUIOrientation.Vertical?(this.elemRenderer.setElementStyle(this.panel1.nativeElement,\"width\",this.panel1Size.width+\"px\"),this.elemRenderer.setElementStyle(this.panel2.nativeElement,\"width\",this.panel2Size.width+\"px\")):(this.elemRenderer.setElementStyle(this.panel1.nativeElement,\"height\",this.panel1Size.height+\"px\"),this.elemRenderer.setElementStyle(this.panel2.nativeElement,\"height\",this.panel2Size.height+\"px\")))};b.prototype.splitterMouseDown=\r\nfunction(a){if(this.isEnabled){var b=this.commonService.getShiftPos();this.splitterStartPos={x:a.pageX-b.x,y:a.pageY-b.y};this.isSplitterActive=!0}};b.prototype.onWindowMouseMove=function(a){if(this.isEnabled&&1==a.buttons&&this.isSplitterActive){var b=this.commonService.getShiftPos();a={x:a.pageX-b.x,y:a.pageY-b.y};this.updateLayout(this.splitterStartPos,a);this.splitterStartPos=a}};b.prototype.onWindowMouseUp=function(a){this.isEnabled&&(this.isSplitterActive=!1,this.splitterMoved.emit({value:this.currentSplitterDistance}))};\r\nb.prototype.onResize=function(a){this.updateSettings()};b.prototype.getSplitterStyle=function(){var a={cursor:\"ew-resize\",display:\"block\",width:\"auto\",height:\"auto\"};this.orientation==integralui_core_1.IntegralUIOrientation.Vertical?(a.display=\"inline-block\",a.height=this.splitterSize.height+\"px\"):(a.cursor=\"ns-resize\",a.width=this.splitterSize.width-2+\"px\");return a};b.prototype.getSplitterHandleStyle=function(){var a={\"margin-top\":\"0\",\"margin-left\":\"0\"};this.orientation==integralui_core_1.IntegralUIOrientation.Vertical?\r\na[\"margin-top\"]=(this.clientSize.height-this.splitterHandleSize.height)/2+\"px\":a[\"margin-left\"]=(this.clientSize.width-this.splitterHandleSize.width)/2+\"px\";return a};b.prototype.updateHandleClass=function(){this.handleClass.length=0;this.handleClass.push(this.handleClassName);this.handleClass.push(this.options.currentStyle.handle.general);this.orientation==integralui_core_1.IntegralUIOrientation.Vertical?this.handleClass.push(this.options.currentStyle.handle.vertical):this.handleClass.push(this.options.currentStyle.handle.horizontal)};\r\nb.prototype.getHandleClass=function(){return this.handleClass};b.prototype.getHandleStyle=function(a){return this.commonService.isString(a)?a:a?{general:this.commonService.isFieldAvailable(a.general,this.handleClassName),horizontal:this.commonService.isFieldAvailable(a.horizontal,this.handleClassName+\"-horizontal\"),vertical:this.commonService.isFieldAvailable(a.vertical,this.handleClassName+\"-vertical\")}:{general:this.defaultStyle.handle.general,horizontal:this.defaultStyle.handle.horizontal,vertical:this.defaultStyle.handle.vertical}};\r\nb.prototype.updateStyle=function(a){this.options.currentStyle=a?{general:this.getGeneralStyle(a.general),handle:this.getHandleStyle(a.handle)}:{general:{disabled:this.defaultStyle.general.disabled,focused:this.defaultStyle.general.focused,hovered:this.defaultStyle.general.hovered,normal:this.defaultStyle.general.normal,selected:this.defaultStyle.general.selected},handle:{general:this.defaultStyle.handle.general,horizontal:this.defaultStyle.handle.horizontal,vertical:this.defaultStyle.handle.vertical}}};\r\nreturn b}(integralui_core_1.IntegralUIBaseComponent);__decorate([core_1.ViewChild(\"handle\"),__metadata(\"design:type\",core_1.ElementRef)],IntegralUISplitter.prototype,\"handleElem\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Number)],IntegralUISplitter.prototype,\"orientation\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Object)],IntegralUISplitter.prototype,\"panel1\",void 0);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Object)],IntegralUISplitter.prototype,\"panel3\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUISplitter.prototype,\"splitterDistance\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Object),__metadata(\"design:paramtypes\",[Object])],IntegralUISplitter.prototype,\"panel2\",null);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUISplitter.prototype,\"orientationChanged\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUISplitter.prototype,\"splitterMoved\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUISplitter.prototype,\"splitterMoving\",void 0);\r\n__decorate([core_1.HostListener(\"document:mousemove\",[\"$event\"]),__metadata(\"design:type\",Function),__metadata(\"design:paramtypes\",[Object]),__metadata(\"design:returntype\",void 0)],IntegralUISplitter.prototype,\"onWindowMouseMove\",null);__decorate([core_1.HostListener(\"document:mouseup\",[\"$event\"]),__metadata(\"design:type\",Function),__metadata(\"design:paramtypes\",[Object]),__metadata(\"design:returntype\",void 0)],IntegralUISplitter.prototype,\"onWindowMouseUp\",null);\r\n__decorate([core_1.HostListener(\"window:resize\",[\"$event\"]),__metadata(\"design:type\",Function),__metadata(\"design:paramtypes\",[Object]),__metadata(\"design:returntype\",void 0)],IntegralUISplitter.prototype,\"onResize\",null);\r\nIntegralUISplitter=__decorate([core_1.Component({selector:\"iui-splitter\",template:'\\n\\t\\t<div [ngClass]=\"getControlClass()\" (mousedown)=\"splitterMouseDown($event)\" [ngStyle]=\"getSplitterStyle()\">\\n\\t\\t\\t<span #handle [ngClass]=\"getHandleClass()\" [ngStyle]=\"getSplitterHandleStyle()\"></span>\\n\\t\\t</div>\\n\\t',inputs:[\"controlStyle\",\"data\",\"enabled\",\"name\",\"state\"],encapsulation:core_1.ViewEncapsulation.None}),__metadata(\"design:paramtypes\",[core_1.ElementRef,core_1.Renderer,integralui_common_service_1.IntegralUICommonService])],\r\nIntegralUISplitter);exports.IntegralUISplitter=IntegralUISplitter;","/*\r\n  filename: integralui.listgroup.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(e,b){function a(){this.constructor=e}for(var c in b)b.hasOwnProperty(c)&&(e[c]=b[c]);e.prototype=null===b?Object.create(b):(a.prototype=b.prototype,new a)},__decorate=this&&this.__decorate||function(e,b,a,c){var d=arguments.length,f=3>d?b:null===c?c=Object.getOwnPropertyDescriptor(b,a):c,g;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)f=Reflect.decorate(e,b,a,c);else for(var h=e.length-1;0<=h;h--)if(g=e[h])f=(3>d?g(f):3<d?g(b,a,f):\r\ng(b,a))||f;return 3<d&&f&&Object.defineProperty(b,a,f),f},__metadata=this&&this.__metadata||function(e,b){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(e,b)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),integralui_data_service_1=require(\"../services/integralui.data.service\"),integralui_groupbox_1=require(\"./integralui.groupbox\"),IntegralUIListGroup=\r\nfunction(e){function b(a,b,d,f){var c=e.call(this,b,d)||this;c.dataService=a;c.commonService=b;c.cmpResolver=d;c.baseService=f;c.numItems=0;c.itemEventList=[];c.headerExpandBoxClassName=\"\";c.itemClassName=\"\";return c}__extends(b,e);b.prototype.ngOnInit=function(){this.parentCtrl=this.baseService.getComponent();this.dataService.init([{data:this.items}]);this.generalClassName=\"iui-listgroup\";this.headerClassName=this.generalClassName+\"-header\";this.headerExpandBoxClassName=this.headerClassName+\"-expand-box\";\r\nthis.contentClassName=this.generalClassName+\"-content\";this.itemClassName=this.generalClassName+\"-item\";this.defaultStyle={general:{disabled:this.generalClassName+\"-disabled\",focused:this.generalClassName+\"-focused\",normal:this.generalClassName,hovered:this.generalClassName+\"-hovered\",selected:this.generalClassName+\"-selected\"},header:{general:{disabled:this.headerClassName+\"-disabled\",focused:this.headerClassName+\"-focused\",normal:this.headerClassName,hovered:this.headerClassName+\"-hovered\",selected:this.headerClassName+\r\n\"-selected\"},expandBox:this.headerExpandBoxClassName},content:{general:this.contentClassName,expanded:this.contentClassName+\"-expand\",collapsed:this.contentClassName+\"-collapse\"},item:{general:{disabled:this.itemClassName+\"-disabled\",focused:this.itemClassName+\"-focused\",normal:this.itemClassName,hovered:this.itemClassName+\"-hovered\",selected:this.itemClassName+\"-selected\"}}};this.updateStyle(this.controlStyle);this.updateControlClass();this.updateContentClass()};b.prototype.ngAfterContentInit=function(){var a=\r\nthis;a.itemList=a.contentList.toArray();a.numItems=a.itemList.length;a.attachItemEvents();var c=setTimeout(function(){if(a.contentElem){var b=a.contentElem.nativeElement.firstElementChild.cloneNode(!0);b.style.position=\"absolute\";b.style.top=\"-9999999px\";a.controlElem.nativeElement.append(b);a.maxBlockHeight=b.offsetHeight;b.remove()}clearTimeout(c)},100)};b.prototype.ngOnDestroy=function(){};b.prototype.ngAfterContentChecked=function(){this.contentList&&(this.itemList=this.contentList.toArray(),\r\nthis.numItems!=this.itemList.length&&(this.attachItemEvents(),this.numItems=this.itemList.length))};b.prototype.onHeaderClick=function(a){this.isEnabled&&1==a.buttons&&(this.selected=!0,this.supressCallback||this.expanded||(this.expanded=!0))};b.prototype.onHeaderExpand=function(){this.supressCallback=!0;this.expanded=!this.expanded};b.prototype.toggleContent=function(){var a=this,b=0,d=0;if(a.expanded){a.contentDisplay=\"block\";var f=setInterval(function(){b<a.maxBlockHeight?(d=0==d?1:d+2,b+=d,a.contentHeight=\r\nb+\"px\"):(a.contentHeight=\"auto\",a.expandState=\"none\",a.callAfterEvent(!0),a.supressCallback=!1,clearInterval(f))},25)}else{a.maxBlockHeight=a.contentElem.nativeElement.offsetHeight;b=a.maxBlockHeight;var e=setInterval(function(){0<b?(d=0==d?1:d+2,b-=d,a.contentHeight=b+\"px\"):(a.contentDisplay=\"none\",a.contentHeight=\"0\",a.expandState=\"none\",a.callAfterEvent(),a.supressCallback=!1,clearInterval(e))},25)}};b.prototype.getComponentData=function(a){if(a){if(a.data)return a.data;a=this.getItemDataIndex(a);\r\nif(this.items&&0<=a&&a<this.items.length)return this.items[a]}return null};b.prototype.getItemCurrentIndex=function(a){this.itemList=this.contentList.toArray();return a&&this.itemList?this.itemList.indexOf(a):-1};b.prototype.getItemDataIndex=function(a){return a&&(a=this.getItemCurrentIndex(a),this.items&&0<=a&&a<this.items.length)?a:-1};b.prototype.attachItemEvents=function(){var a=this;this.itemList=this.contentList.toArray();a.itemEventList&&(a.itemEventList.forEach(function(a){a.forEach(function(a){a.unsubscribe()})}),\r\na.itemEventList.length=0);this.itemList&&0<this.itemList.length&&this.itemList.forEach(function(b){var c=[];c.push(b.mouseDown.subscribe(function(c){b&&(a.clearSelection(),b.state|=integralui_core_1.IntegralUIObjectState.selected,a.selected=!0,a.updateSelectedItemFromComponent(b),a.afterSelect.emit({group:a.data,item:a.getComponentData(b)}))}));a.itemEventList.push(c)})};b.prototype.updateSelectedItemFromComponent=function(a){this.itemList&&0<this.itemList.length&&a&&this.itemList.indexOf(a)};b.prototype.clearSelection=\r\nfunction(a){this.itemList=this.contentList.toArray();this.itemList.forEach(function(b){b!=a&&(b.state&=~integralui_core_1.IntegralUIObjectState.selected)})};b.prototype.getItemGeneralStyle=function(a){return this.commonService.isString(a)?a:a?{disabled:this.commonService.isFieldAvailable(a.disabled,this.itemClassName+\"-disabled\"),focused:this.commonService.isFieldAvailable(a.focused,this.itemClassName+\"-focused\"),hovered:this.commonService.isFieldAvailable(a.hovered,this.itemClassName+\"-hovered\"),\r\nnormal:this.commonService.isFieldAvailable(a.normal,this.itemClassName),selected:this.commonService.isFieldAvailable(a.selected,this.itemClassName+\"-selected\")}:{disabled:this.defaultStyle.item.general.disabled,focused:this.defaultStyle.item.general.focused,hovered:this.defaultStyle.item.general.hovered,normal:this.defaultStyle.item.general.normal,selected:this.defaultStyle.item.general.selected}};b.prototype.getItemStyle=function(a){return{general:this.getItemGeneralStyle(a.general)}};b.prototype.updateStyle=\r\nfunction(a){this.options.currentStyle=a?{general:this.getGeneralStyle(a.general),header:this.getHeaderStyle(a.header),content:this.getContentStyle(a.content),item:this.getItemStyle(a.item)}:{general:{disabled:this.defaultStyle.general.disabled,focused:this.defaultStyle.general.focused,hovered:this.defaultStyle.general.hovered,normal:this.defaultStyle.general.normal,selected:this.defaultStyle.general.selected},header:{general:{disabled:this.defaultStyle.header.general.disabled,focused:this.defaultStyle.header.general.focused,\r\nhovered:this.defaultStyle.header.general.hovered,normal:this.defaultStyle.header.general.normal,selected:this.defaultStyle.header.general.selected},expandBox:this.defaultStyle.header.expandBox},content:{general:this.defaultStyle.content.general,expanded:this.defaultStyle.content.expanded,collapsed:this.defaultStyle.content.collapsed},item:{general:{disabled:this.defaultStyle.item.general.disabled,focused:this.defaultStyle.item.general.focused,hovered:this.defaultStyle.item.general.hovered,normal:this.defaultStyle.item.general.normal,\r\nselected:this.defaultStyle.item.general.selected}}}};return b}(integralui_groupbox_1.IntegralUIGroupBox);__decorate([core_1.ViewChild(\"control\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUIListGroup.prototype,\"controlElem\",void 0);__decorate([core_1.ViewChild(\"content\",{read:core_1.ViewContainerRef}),__metadata(\"design:type\",core_1.ViewContainerRef)],IntegralUIListGroup.prototype,\"contentRef\",void 0);\r\n__decorate([core_1.ViewChild(\"content\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUIListGroup.prototype,\"contentElem\",void 0);__decorate([core_1.ViewChild(\"header\"),__metadata(\"design:type\",integralui_core_1.IntegralUIHeaderItem)],IntegralUIListGroup.prototype,\"header\",void 0);__decorate([core_1.ContentChildren(integralui_core_1.IntegralUIItem),__metadata(\"design:type\",core_1.QueryList)],IntegralUIListGroup.prototype,\"contentList\",void 0);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Array)],IntegralUIListGroup.prototype,\"items\",void 0);\r\nIntegralUIListGroup=__decorate([core_1.Component({selector:\"iui-listgroup\",template:'\\n\\t\\t<div [ngClass]=\"getControlClass()\" #control>\\n\\t\\t\\t<iui-header [controlStyle]=\"getCurrentHeaderStyle()\" [enabled]=\"enabled\" [icon]=\"icon\" [text]=\"text\" (mouseDown)=\"onHeaderClick($event)\" [animationType]=\"expandBoxType\" (expandClicked)=\"onHeaderExpand()\" #header>\\n\\t\\t\\t\\t<ng-content select=\"[header]\"></ng-content>\\n\\t\\t\\t</iui-header>\\n\\t\\t\\t<div [ngClass]=\"getContentClass()\" [ngStyle]=\"{ \\'display\\': contentDisplay, \\'height\\': contentHeight, \\'opacity\\': contentOpacity }\" #content>\\n\\t\\t\\t\\t<ng-content></ng-content>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n    ',inputs:\"controlStyle data enabled expandBoxType icon name state text\".split(\" \"),\r\noutputs:\"afterCollapse afterExpand afterSelect beforeCollapse beforeExpand beforeSelect selectedChanged\".split(\" \"),providers:[integralui_data_service_1.IntegralUIDataService],encapsulation:core_1.ViewEncapsulation.None}),__metadata(\"design:paramtypes\",[integralui_data_service_1.IntegralUIDataService,integralui_common_service_1.IntegralUICommonService,core_1.ComponentFactoryResolver,integralui_core_1.IntegralUIBaseService])],IntegralUIListGroup);exports.IntegralUIListGroup=IntegralUIListGroup;","/*\r\n  filename: integralui.tab.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(d,b){function a(){this.constructor=d}for(var e in b)b.hasOwnProperty(e)&&(d[e]=b[e]);d.prototype=null===b?Object.create(b):(a.prototype=b.prototype,new a)},__decorate=this&&this.__decorate||function(d,b,a,e){var f=arguments.length,c=3>f?b:null===e?e=Object.getOwnPropertyDescriptor(b,a):e,g;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)c=Reflect.decorate(d,b,a,e);else for(var h=d.length-1;0<=h;h--)if(g=d[h])c=(3>f?g(c):3<f?g(b,a,c):\r\ng(b,a))||c;return 3<f&&c&&Object.defineProperty(b,a,c),c},__metadata=this&&this.__metadata||function(d,b){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(d,b)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),IntegralUITab=function(d){function b(a,b,f){var c=d.call(this,b)||this;c.elemRef=a;c.commonService=b;c.baseService=f;c.parentCtrl=null;c.contentClass=\r\n[];c.isSelected=!1;c.topPos=0;c.leftPos=0;c.elemWidth=\"0\";c.elemHeight=\"0\";c.elemOrder=0;c.elemBorderColor=\"gray\";c.selectedChanged=new core_1.EventEmitter;return c}__extends(b,d);Object.defineProperty(b.prototype,\"selected\",{get:function(){return this.isSelected},set:function(a){this.isSelected!=a&&(this.state=a?this.state|integralui_core_1.IntegralUIObjectState.selected:this.state&~integralui_core_1.IntegralUIObjectState.selected,this.elemOrder=(this.isSelected=a)?2:0)},enumerable:!0,configurable:!0});\r\nb.prototype.ngOnInit=function(){this.parentCtrl=this.baseService.getComponent();this.generalClassName=\"iui-tab\";this.headerClassName=this.generalClassName+\"-header\";this.contentClassName=this.generalClassName+\"-content\";this.initStyle()};b.prototype.initStyle=function(){this.defaultStyle={general:{disabled:this.generalClassName+\"-disabled\",focused:this.generalClassName+\"-focused\",normal:this.generalClassName,hovered:this.generalClassName+\"-hovered\",selected:this.generalClassName+\"-selected\"},header:{disabled:this.headerClassName+\r\n\"-disabled\",focused:this.headerClassName+\"-focused\",normal:this.headerClassName,hovered:this.headerClassName+\"-hovered\",selected:this.headerClassName+\"-selected\"},content:{disabled:this.contentClassName+\"-disabled\",focused:this.contentClassName+\"-focused\",normal:this.contentClassName,hovered:this.contentClassName+\"-hovered\",selected:this.contentClassName+\"-selected\"}};this.updateStyle(this.controlStyle);this.updateControlClass();this.updateContentClass()};b.prototype.processStateChanged=function(){this.updateContentClass()};\r\nb.prototype.getSize=function(a){var b={width:0,height:0};a&&(b={width:a.offsetWidth,height:a.offsetHeight});return b};b.prototype.updateLayout=function(a,b){this.topPos=a.top;this.leftPos=a.left;var d={top:0,right:0,bottom:0,left:0};this.contentElem&&(d=this.commonService.getPadding(this.contentElem.nativeElement));this.elemWidth=b.width-(d.left+d.right)+\"px\";this.elemHeight=\"auto\"==b.height?\"auto\":b.height-(d.top+d.bottom)+\"px\"};b.prototype.getLayoutParams=function(){var a={size:{width:0,height:0},\r\npadding:{top:0,right:0,bottom:0,left:0}};if(this.elemRef){var b=this.elemRef.nativeElement.children[0];a.size=this.getSize(b);a.padding=this.commonService.getPadding(b)}return a};b.prototype.updateContentClass=function(){this.contentClass.length=0;this.contentClass.push(this.contentClassName);this.contentClass.push(this.options.currentStyle.content.normal);this.state&integralui_core_1.IntegralUIObjectState.disabled?this.contentClass.push(this.options.currentStyle.content.disabled):this.state&integralui_core_1.IntegralUIObjectState.focused?\r\nthis.contentClass.push(this.options.currentStyle.content.focused):this.state&integralui_core_1.IntegralUIObjectState.selected?this.contentClass.push(this.options.currentStyle.content.selected):this.state&integralui_core_1.IntegralUIObjectState.hovered&&this.contentClass.push(this.options.currentStyle.content.hovered)};b.prototype.getContentClass=function(){return this.contentClass};b.prototype.getContentStyle=function(a){return this.commonService.isString(a)?a:a?{disabled:this.commonService.isFieldAvailable(a.disabled,\r\nthis.contentClassName+\"-disabled\"),focused:this.commonService.isFieldAvailable(a.focused,this.contentClassName+\"-focused\"),hovered:this.commonService.isFieldAvailable(a.hovered,this.contentClassName+\"-hovered\"),normal:this.commonService.isFieldAvailable(a.normal,this.contentClassName),selected:this.commonService.isFieldAvailable(a.selected,this.contentClassName+\"-selected\")}:{disabled:this.defaultStyle.content.disabled,focused:this.defaultStyle.content.focused,hovered:this.defaultStyle.content.hovered,\r\nnormal:this.defaultStyle.content.normal,selected:this.defaultStyle.content.selected}};b.prototype.getHeaderClass=function(){var a=this.headerClassName;return a=this.state&integralui_core_1.IntegralUIObjectState.disabled?a+(\" \"+this.options.currentStyle.header.disabled):this.state&integralui_core_1.IntegralUIObjectState.focused?a+(\" \"+this.options.currentStyle.header.focused):this.state&integralui_core_1.IntegralUIObjectState.selected?a+(\" \"+this.options.currentStyle.header.selected):this.state&integralui_core_1.IntegralUIObjectState.hovered?\r\na+(\" \"+this.options.currentStyle.header.hovered):a+(\" \"+this.options.currentStyle.header.normal)};b.prototype.getHeaderStyle=function(a){return this.commonService.isString(a)?a:a?{disabled:this.commonService.isFieldAvailable(a.disabled,this.headerClassName+\"-disabled\"),focused:this.commonService.isFieldAvailable(a.focused,this.headerClassName+\"-focused\"),hovered:this.commonService.isFieldAvailable(a.hovered,this.headerClassName+\"-hovered\"),normal:this.commonService.isFieldAvailable(a.normal,this.headerClassName),\r\nselected:this.commonService.isFieldAvailable(a.selected,this.headerClassName+\"-selected\")}:{disabled:this.defaultStyle.header.disabled,focused:this.defaultStyle.header.focused,hovered:this.defaultStyle.header.hovered,normal:this.defaultStyle.header.normal,selected:this.defaultStyle.header.selected}};b.prototype.updateStyle=function(a){this.options.currentStyle=a?{general:this.getGeneralStyle(a.general),header:this.getHeaderStyle(a.header),content:this.getContentStyle(a.content)}:{general:{disabled:this.defaultStyle.general.disabled,\r\nfocused:this.defaultStyle.general.focused,hovered:this.defaultStyle.general.hovered,normal:this.defaultStyle.general.normal,selected:this.defaultStyle.general.selected},header:{disabled:this.defaultStyle.header.disabled,focused:this.defaultStyle.header.focused,hovered:this.defaultStyle.header.hovered,normal:this.defaultStyle.header.normal,selected:this.defaultStyle.header.selected},content:{disabled:this.defaultStyle.content.disabled,focused:this.defaultStyle.content.focused,hovered:this.defaultStyle.content.hovered,\r\nnormal:this.defaultStyle.content.normal,selected:this.defaultStyle.content.selected}}};b.prototype.getCurrentTabStyle=function(){return this.options.currentStyle};b.prototype.getTabContentClass=function(){var a=\"\";this.selected&&(a+=\" iui-tabstrip-tab-content-selected\");return a};return b}(integralui_core_1.IntegralUIBaseComponent);__decorate([core_1.ViewChild(\"content\"),__metadata(\"design:type\",core_1.ElementRef)],IntegralUITab.prototype,\"contentElem\",void 0);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",String)],IntegralUITab.prototype,\"text\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",String)],IntegralUITab.prototype,\"icon\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Boolean),__metadata(\"design:paramtypes\",[Boolean])],IntegralUITab.prototype,\"selected\",null);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITab.prototype,\"selectedChanged\",void 0);\r\nIntegralUITab=__decorate([core_1.Component({selector:\"iui-tab\",template:\"\\n\\t\\t<div [ngClass]=\\\"getContentClass()\\\" [ngStyle]=\\\"{ 'top': topPos + 'px', 'left': leftPos + 'px', 'width': elemWidth, 'height': elemHeight }\\\" [hidden]=\\\"selected==false\\\" #content>\\n\\t\\t\\t<div>\\n\\t\\t\\t\\t<ng-content></ng-content>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t\",inputs:[\"controlStyle\",\"data\",\"enabled\",\"name\",\"state\"],encapsulation:core_1.ViewEncapsulation.None}),__metadata(\"design:paramtypes\",[core_1.ElementRef,integralui_common_service_1.IntegralUICommonService,\r\nintegralui_core_1.IntegralUIBaseService])],IntegralUITab);exports.IntegralUITab=IntegralUITab;","/*\r\n  filename: integralui.treeitem.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(f,b){function a(){this.constructor=f}for(var c in b)b.hasOwnProperty(c)&&(f[c]=b[c]);f.prototype=null===b?Object.create(b):(a.prototype=b.prototype,new a)},__decorate=this&&this.__decorate||function(f,b,a,c){var e=arguments.length,d=3>e?b:null===c?c=Object.getOwnPropertyDescriptor(b,a):c,h;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)d=Reflect.decorate(f,b,a,c);else for(var g=f.length-1;0<=g;g--)if(h=f[g])d=(3>e?h(d):3<e?h(b,a,d):\r\nh(b,a))||d;return 3<e&&d&&Object.defineProperty(b,a,d),d},__metadata=this&&this.__metadata||function(f,b){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(f,b)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),integralui_data_service_1=require(\"../services/integralui.data.service\"),integralui_listitem_1=require(\"./integralui.listitem\"),IntegralUITreeItem=\r\nIntegralUITreeItem_1=function(f){function b(a,b,e,d){var c=f.call(this,a,e,d)||this;c.elemRef=a;c.dataService=b;c.commonService=e;c.baseService=d;c.contentAnimation={display:\"none\",left:0,width:0,height:0};c.numItems=0;c.templateData=[];c.expandState=\"none\";c.blockElemHeight=\"0\";c.eventList=[];c.parentItem=null;c.blockClass=[];c.expandBoxClass=[];return c}__extends(b,f);Object.defineProperty(b.prototype,\"expanded\",{get:function(){return this.isExpanded},set:function(a){if(this.isExpanded!=a){var c=\r\n!0;this.parentCtrl&&this.parentCtrl.invokeEvent&&(c=this.parentCtrl.invokeEvent(a?\"BEFORE_EXPAND\":\"BEFORE_COLLAPSE\",this.data));c&&(this.expandState=a?\"expand\":\"collapse\",this.isExpanded=a,this.parentCtrl&&this.parentCtrl.invokeMethod(\"CHANGE_EXPANDED\",{component:this}),this.updateBlockClass(),this.updateExpandBoxClass(),this.toggleContent(),this.parentCtrl&&this.parentCtrl.invokeEvent&&this.parentCtrl.invokeEvent(a?\"AFTER_EXPAND\":\"AFTER_COLLAPSE\",this.data))}},enumerable:!0,configurable:!0});b.prototype.ngOnInit=\r\nfunction(){this.templateData.push(this.data);this.parentCtrl=this.baseService.getComponent();this.dataService.init([{data:this.items}]);this.isExpanded=this.parentCtrl?this.parentCtrl.isItemExpanded(this.data):!0;this.blockElemHeight=\"0\";this.generalClassName=\"iui-treeitem\";this.blockClassName=this.generalClassName+\"-block\";this.contentClassName=this.generalClassName+\"-content\";this.expandBoxClassName=this.generalClassName+\"-expand-box\";this.initStyle()};b.prototype.initStyle=function(){this.defaultStyle=\r\n{general:{disabled:this.generalClassName+\"-disabled\",focused:this.generalClassName+\"-focused\",normal:this.generalClassName,hovered:this.generalClassName+\"-hovered\",selected:this.generalClassName+\"-selected\"},expandBox:{general:this.expandBoxClassName,load:this.expandBoxClassName+\"-load\",expanded:this.expandBoxClassName+\"-open\",collapsed:this.expandBoxClassName+\"-close\"},content:{disabled:this.contentClassName+\"-disabled\",focused:this.contentClassName+\"-focused\",normal:this.contentClassName,hovered:this.contentClassName+\r\n\"-hovered\",selected:this.contentClassName+\"-selected\"}};this.updateStyle(this.controlStyle);this.refresh()};b.prototype.ngAfterViewInit=function(){this.contentElem&&(this.contentAnimation={display:\"none\",left:this.contentElem.nativeElement.offsetWidth/2,width:0,height:this.contentElem.nativeElement.offsetHeight},this.toggleContent())};b.prototype.ngAfterContentChecked=function(){this.contentList&&(this.itemList=this.contentList.toArray(),this.numItems!=this.itemList.length&&(this.numItems=this.itemList.length,\r\nthis.refresh()))};b.prototype.itemDragOver=function(a,c){if(this.isEnabled&&this.parentCtrl){var b=this.parentCtrl.getItemFromComponent(this),d=this.getPageRect(),f=this.getContentSize();d={x:d.left,y:d.top,width:d.right-d.left,height:f.height};this.parentCtrl.expandOnDelay(b);this.parentCtrl.processDragOver(a,b,d,c)}a.stopPropagation()};b.prototype.itemDragDrop=function(a){if(this.isEnabled&&this.parentCtrl){this.parentCtrl.processDragDrop(a,this.data);var c=this;if(c.expanded&&!c.isBlockExpanded())var b=\r\nsetTimeout(function(){c.toggleContent();clearTimeout(b)},100)}a.stopPropagation()};b.prototype.isBlockExpanded=function(){return\"0\"==this.blockElemHeight?!1:!0};b.prototype.collapse=function(a){this.expanded=!1;a&&(this.itemList=this.contentList.toArray())&&0<this.itemList.length&&this.itemList.forEach(function(b){b.collapse(a)})};b.prototype.expand=function(a){this.expanded=!0;a&&(this.itemList=this.contentList.toArray())&&0<this.itemList.length&&this.itemList.forEach(function(b){b.expand(a)})};\r\nb.prototype.toggle=function(a,b){this.expanded=void 0!=a?a:!this.expanded;b&&(this.itemList=this.contentList.toArray())&&0<this.itemList.length&&this.itemList.forEach(function(c){c.toggle(a,b)})};b.prototype.onExpandBoxMouseDown=function(a){this.isEnabled&&this.toggle()};b.prototype.toggleContent=function(){var a=this;if(a.items){var b=a.contentElem.nativeElement.offsetHeight*a.items.length,e=0,d=0;if(a.expanded)var f=setInterval(function(){e<b?(d=0==d?1:d+2,e+=d,a.blockElemHeight=e+\"px\"):(a.blockElemHeight=\r\n\"auto\",a.expandState=\"none\",a.updateExpandBoxClass(),a.parentCtrl&&a.parentCtrl.updateLayout(),clearInterval(f))},25);else{e=a.blockElem.nativeElement.offsetHeight;var g=setInterval(function(){0<e?(d=0==d?1:d+2,e-=d,a.blockElemHeight=e+\"px\"):(a.blockElemHeight=\"0\",a.expandState=\"none\",a.updateExpandBoxClass(),a.parentCtrl&&a.parentCtrl.updateLayout(),clearInterval(g))},25)}}};b.prototype.getComponentFromItem=function(a){var b=null;if((this.itemList=this.contentList.toArray())&&0<this.itemList.length)for(var e=\r\n0;!b&&e<this.itemList.length;){b=this.itemList[e];if(this.getItemFromComponent(b)==a)break;else b=b.getComponentFromItem(a);e++}return b};b.prototype.getItemFromComponent=function(a){return a&&a.data?a.data:this.items&&(this.itemList=this.contentList.toArray(),a=this.itemList.indexOf(a),0<=a&&a<this.items.length)?this.items[a]:null};b.prototype.isThereVisibleChildren=function(){var a=!1;if(this.data&&this.parentCtrl){var b=this.data[this.parentCtrl.getDataFields().items];b&&0<b.length&&(a=!0)}return a};\r\nb.prototype.clearComponentSelection=function(){(this.itemList=this.contentList.toArray())&&0<this.itemList.length&&this.itemList.forEach(function(a){a.state&=~integralui_core_1.IntegralUIObjectState.selected;a.clearComponentSelection()})};b.prototype.selectItem=function(){this.parentCtrl&&this.parentCtrl.clearSelection();this.state|=integralui_core_1.IntegralUIObjectState.selected};b.prototype.refresh=function(){this.updateControlClass();this.updateContentClass();this.updateBlockClass();this.updateExpandBoxClass();\r\nif(this.contentList){this.itemList=this.contentList.toArray();for(var a=0;a<this.itemList.length;a++)this.itemList[a].refresh()}};b.prototype.updateBlockClass=function(){this.blockClass.length=0;this.blockClass.push(this.blockClassName);this.items&&0<this.items.length&&(0!=this.expanded?this.blockClass.push(this.blockClassName+\"-open\"):this.blockClass.push(this.blockClassName+\"-close\"))};b.prototype.getBlockClass=function(){return this.blockClass};b.prototype.getGeneralClass=function(){return this.generalClassName};\r\nb.prototype.updateExpandBoxClass=function(){this.expandBoxClass.length=0;if(this.options.currentStyle){var a=this.parentCtrl.getDataFields();(this.parentCtrl&&this.parentCtrl.isThereChildren()||this.data&&this.data[a.hasChildren])&&this.expandBoxClass.push(this.options.currentStyle.expandBox.general);if(this.data&&this.data[a.hasChildren]&&(this.isThereVisibleChildren()||!this.data[a.items]||this.data[a.items]&&0==this.data[a.items].length)||this.isThereVisibleChildren())this.parentCtrl&&this.parentCtrl.isItemLoading(this.data)?\r\nthis.expandBoxClass.push(this.options.currentStyle.expandBox.load):0!=this.expanded?\"none\"==this.expandState?this.expandBoxClass.push(this.options.currentStyle.expandBox.expanded):\"expand\"==this.expandState&&this.expandBoxClass.push(this.options.currentStyle.expandBox.expanded+\"-animate\"):\"none\"==this.expandState?this.expandBoxClass.push(this.options.currentStyle.expandBox.collapsed):\"collapse\"==this.expandState&&this.expandBoxClass.push(this.options.currentStyle.expandBox.collapsed+\"-animate\")}};\r\nb.prototype.getExpandBoxClass=function(){return this.expandBoxClass};b.prototype.getExpandBoxStyle=function(a){return this.commonService.isString(a)?a:a?{general:this.commonService.isFieldAvailable(a.general,this.expandBoxClassName),load:this.commonService.isFieldAvailable(a.load,this.expandBoxClassName+\"-load\"),expanded:this.commonService.isFieldAvailable(a.expanded,this.expandBoxClassName+\"-open\"),collapsed:this.commonService.isFieldAvailable(a.collapsed,this.expandBoxClassName+\"-close\")}:{general:this.defaultStyle.expandBox.general,\r\nload:this.defaultStyle.expandBox.load,expanded:this.defaultStyle.expandBox.expanded,collapsed:this.defaultStyle.expandBox.collapsed}};b.prototype.updateStyle=function(a){this.options.currentStyle=a?{content:this.getContentStyle(a.content),expandBox:this.getExpandBoxStyle(a.expandBox),general:this.getGeneralStyle(a.general)}:{content:{disabled:this.defaultStyle.content.disabled,focused:this.defaultStyle.content.focused,hovered:this.defaultStyle.content.hovered,normal:this.defaultStyle.content.normal,\r\nselected:this.defaultStyle.content.selected},expandBox:{general:this.defaultStyle.expandBox.general,load:this.defaultStyle.expandBox.load,expanded:this.defaultStyle.expandBox.expanded,collapsed:this.defaultStyle.expandBox.collapsed},general:{disabled:this.defaultStyle.general.disabled,focused:this.defaultStyle.general.focused,hovered:this.defaultStyle.general.hovered,normal:this.defaultStyle.general.normal,selected:this.defaultStyle.general.selected}}};return b}(integralui_listitem_1.IntegralUIListItem);\r\n__decorate([core_1.ViewChild(\"content\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUITreeItem.prototype,\"contentElem\",void 0);__decorate([core_1.ViewChild(\"dragElem\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUITreeItem.prototype,\"dragElem\",void 0);__decorate([core_1.ViewChild(\"block\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUITreeItem.prototype,\"blockElem\",void 0);\r\n__decorate([core_1.ViewChildren(IntegralUITreeItem_1),__metadata(\"design:type\",core_1.QueryList)],IntegralUITreeItem.prototype,\"contentList\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Array)],IntegralUITreeItem.prototype,\"items\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Object)],IntegralUITreeItem.prototype,\"templateRef\",void 0);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Boolean),__metadata(\"design:paramtypes\",[Boolean])],IntegralUITreeItem.prototype,\"expanded\",null);\r\nIntegralUITreeItem=IntegralUITreeItem_1=__decorate([core_1.Component({selector:\"iui-treeitem\",template:'\\n        <li [ngClass]=\"getControlClass()\">\\n            <div [ngClass]=\"getContentClass()\" (dragover)=\"itemDragOver($event)\" (drop)=\"itemDragDrop($event)\" #content>\\n                <span [ngClass]=\"getExpandBoxClass()\" (mousedown)=\"onExpandBoxMouseDown($event)\"></span>\\n                <div draggable=\"true\" (click)=\"onClick($event)\" (mousedown)=\"onMouseDown($event)\" (mouseup)=\"onMouseUp($event)\" (mouseenter)=\"onMouseEnter($event)\" (mousemove)=\"onMouseMove($event)\" (mouseleave)=\"onMouseLeave($event)\" (dragstart)=\"itemDragStart($event)\" #dragElem>\\n                    <ng-template ngFor [ngForOf]=\"templateData\" [ngForTemplate]=\"templateRef\"></ng-template> \\n                </div>\\n            </div> \\n            <ul [ngClass]=\"getBlockClass()\" [ngStyle]=\"{ \\'height\\': blockElemHeight }\" #block>\\n                <iui-treeitem *ngFor=\"let item of items\" [enabled]=\"item.enabled\" [expanded]=\"item.expanded\" [text]=\"item.text\" [items]=\"item.items\" [templateRef]=\"templateRef\" [data]=\"item\"></iui-treeitem>\\n            </ul>\\n        </li>\\n    ',inputs:\"controlStyle data enabled icon name state text\".split(\" \"),\r\noutputs:\"click mouseDown mouseEnter mouseLeave mouseMove mouseUp\".split(\" \"),providers:[integralui_data_service_1.IntegralUIDataService],encapsulation:core_1.ViewEncapsulation.None}),__metadata(\"design:paramtypes\",[core_1.ElementRef,integralui_data_service_1.IntegralUIDataService,integralui_common_service_1.IntegralUICommonService,integralui_core_1.IntegralUIBaseService])],IntegralUITreeItem);exports.IntegralUITreeItem=IntegralUITreeItem;var IntegralUITreeItem_1;","import config from '../config';\n\n// add more\n\nexport default config;\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\nexports.i(require(\"-!../../../node_modules/css-loader/index.js!../../../node_modules/font-awesome/css/font-awesome.css\"), \"\");\n\n// module\nexports.push([module.id, \"/*!\\n * Bootstrap v4.0.0 (https://getbootstrap.com)\\n * Copyright 2011-2018 The Bootstrap Authors\\n * Copyright 2011-2018 Twitter, Inc.\\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n */:root{--blue: #007bff;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #dc3545;--orange: #fd7e14;--yellow: #ffc107;--green: #28a745;--teal: #20c997;--cyan: #17a2b8;--white: #fff;--gray: #6c757d;--gray-dark: #343a40;--primary: #007bff;--secondary: #6c757d;--success: #28a745;--info: #17a2b8;--warning: #ffc107;--danger: #dc3545;--light: #f8f9fa;--dark: #343a40;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, \\\"Helvetica Neue\\\", Arial, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \\\"Liberation Mono\\\", \\\"Courier New\\\", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Roboto,\\\"Helvetica Neue\\\",Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";font-size:.9rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex=\\\"-1\\\"]:focus{outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:monospace, monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type=\\\"button\\\"],[type=\\\"reset\\\"],[type=\\\"submit\\\"]{-webkit-appearance:button}button::-moz-focus-inner,[type=\\\"button\\\"]::-moz-focus-inner,[type=\\\"reset\\\"]::-moz-focus-inner,[type=\\\"submit\\\"]::-moz-focus-inner{padding:0;border-style:none}input[type=\\\"radio\\\"],input[type=\\\"checkbox\\\"]{box-sizing:border-box;padding:0}input[type=\\\"date\\\"],input[type=\\\"time\\\"],input[type=\\\"datetime-local\\\"],input[type=\\\"month\\\"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=\\\"number\\\"]::-webkit-inner-spin-button,[type=\\\"number\\\"]::-webkit-outer-spin-button{height:auto}[type=\\\"search\\\"]{outline-offset:-2px;-webkit-appearance:none}[type=\\\"search\\\"]::-webkit-search-cancel-button,[type=\\\"search\\\"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}h1,.h1{font-size:2.25rem}h2,.h2{font-size:1.8rem}h3,.h3{font-size:1.575rem}h4,.h4{font-size:1.35rem}h5,.h5{font-size:1.125rem}h6,.h6{font-size:.9rem}.lead{font-size:1.125rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.125rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:\\\"\\\\2014   \\\\A0\\\"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,\\\"Liberation Mono\\\",\\\"Courier New\\\",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=\\\"col-\\\"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm,.col-sm-auto,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md,.col-md-auto,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg,.col-lg-auto,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:none}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:none}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:none}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:none}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:none}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:rgba(0,0,0,0)}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>th,.table-success>td{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark th,.table-dark td,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:.9rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.1rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.125rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.7875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.form-control-plaintext.form-control-lg,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:.7875rem;line-height:1.5;border-radius:.2rem}select.form-control-sm:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(1.68125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.125rem;line-height:1.5;border-radius:.3rem}select.form-control-lg:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(2.6875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=\\\"col-\\\"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled ~ .form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,0.8);border-radius:.2rem}.was-validated .form-control:valid,.form-control.is-valid,.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745}.was-validated .form-control:valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .form-control:valid ~ .valid-feedback,.was-validated .form-control:valid ~ .valid-tooltip,.form-control.is-valid ~ .valid-feedback,.form-control.is-valid ~ .valid-tooltip,.was-validated .custom-select:valid ~ .valid-feedback,.was-validated .custom-select:valid ~ .valid-tooltip,.custom-select.is-valid ~ .valid-feedback,.custom-select.is-valid ~ .valid-tooltip{display:block}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#28a745}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#28a745}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{background-color:#71dd8a}.was-validated .custom-control-input:valid ~ .valid-feedback,.was-validated .custom-control-input:valid ~ .valid-tooltip,.custom-control-input.is-valid ~ .valid-feedback,.custom-control-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{background-color:#34ce57}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid ~ .custom-file-label::before,.custom-file-input.is-valid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:valid ~ .valid-feedback,.was-validated .custom-file-input:valid ~ .valid-tooltip,.custom-file-input.is-valid ~ .valid-feedback,.custom-file-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,0.8);border-radius:.2rem}.was-validated .form-control:invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .form-control:invalid ~ .invalid-feedback,.was-validated .form-control:invalid ~ .invalid-tooltip,.form-control.is-invalid ~ .invalid-feedback,.form-control.is-invalid ~ .invalid-tooltip,.was-validated .custom-select:invalid ~ .invalid-feedback,.was-validated .custom-select:invalid ~ .invalid-tooltip,.custom-select.is-invalid ~ .invalid-feedback,.custom-select.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#dc3545}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{background-color:#efa2a9}.was-validated .custom-control-input:invalid ~ .invalid-feedback,.was-validated .custom-control-input:invalid ~ .invalid-tooltip,.custom-control-input.is-invalid ~ .invalid-feedback,.custom-control-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{background-color:#e4606d}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid ~ .custom-file-label::before,.custom-file-input.is-invalid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:invalid ~ .invalid-feedback,.was-validated .custom-file-input:invalid ~ .invalid-tooltip,.custom-file-input.is-invalid ~ .invalid-feedback,.custom-file-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:.9rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled):active,.btn:not(:disabled):not(.disabled).active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary:focus,.btn-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-link{font-weight:400;color:#007bff;background-color:transparent}.btn-link:hover{color:#0056b3;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:underline;border-color:transparent;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.125rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.7875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=\\\"submit\\\"].btn-block,input[type=\\\"reset\\\"].btn-block,input[type=\\\"button\\\"].btn-block{width:100%}.fade{opacity:0;transition:opacity 0.15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height 0.35s ease}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\\\"\\\";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:.9rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\\\"\\\";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\\\"\\\";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\\\"\\\"}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:\\\"\\\";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.7875rem;color:#6c757d;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:0 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=\\\"radio\\\"],.btn-group-toggle>.btn input[type=\\\"checkbox\\\"],.btn-group-toggle>.btn-group>.btn input[type=\\\"radio\\\"],.btn-group-toggle>.btn-group>.btn input[type=\\\"checkbox\\\"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file:focus{z-index:3}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:.9rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=\\\"radio\\\"],.input-group-text input[type=\\\"checkbox\\\"]{margin-top:0}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,0.25)}.custom-control-input:active ~ .custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled ~ .custom-control-label{color:#6c757d}.custom-control-input:disabled ~ .custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:\\\"\\\";user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:\\\"\\\";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{background-image:url(\\\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\\\")}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{background-image:url(\\\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\\\")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{background-image:url(\\\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\\\")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-select{display:inline-block;width:100%;height:calc(2.1rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url(\\\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\\\") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(128,189,255,0.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size=\\\"1\\\"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.68125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.6875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.1rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.1rem + 2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.custom-file-input:focus ~ .custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en) ~ .custom-file-label::after{content:\\\"Browse\\\"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.1rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.1rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:\\\"Browse\\\";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.33125rem;padding-bottom:.33125rem;margin-right:1rem;font-size:1.125rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.125rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:\\\"\\\";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,0.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url(\\\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0,0,0,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\\\")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url(\\\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\\\")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:\\\"/\\\"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.125rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.7875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:hover,.badge-info[href]:focus{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:hover,.badge-light[href]:focus{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3.85rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.675rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width 0.6s ease}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:hover,.list-group-item:focus{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.35rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.close:focus{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -25%)}.modal.show .modal-dialog{transform:translate(0, 0)}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Roboto,\\\"Helvetica Neue\\\",Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.7875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:\\\"\\\";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^=\\\"top\\\"]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^=\\\"top\\\"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^=\\\"top\\\"] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^=\\\"right\\\"]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^=\\\"right\\\"] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^=\\\"right\\\"] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^=\\\"bottom\\\"]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^=\\\"bottom\\\"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^=\\\"bottom\\\"] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^=\\\"left\\\"]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^=\\\"left\\\"] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^=\\\"left\\\"] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Roboto,\\\"Helvetica Neue\\\",Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.7875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:\\\"\\\";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^=\\\"top\\\"]{margin-bottom:.5rem}.bs-popover-top .arrow,.bs-popover-auto[x-placement^=\\\"top\\\"] .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^=\\\"top\\\"] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^=\\\"top\\\"] .arrow::after{border-width:.5rem .5rem 0}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^=\\\"top\\\"] .arrow::before{bottom:0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^=\\\"top\\\"] .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^=\\\"right\\\"]{margin-left:.5rem}.bs-popover-right .arrow,.bs-popover-auto[x-placement^=\\\"right\\\"] .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^=\\\"right\\\"] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^=\\\"right\\\"] .arrow::after{border-width:.5rem .5rem .5rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^=\\\"right\\\"] .arrow::before{left:0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^=\\\"right\\\"] .arrow::after{left:1px;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^=\\\"bottom\\\"]{margin-top:.5rem}.bs-popover-bottom .arrow,.bs-popover-auto[x-placement^=\\\"bottom\\\"] .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^=\\\"bottom\\\"] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^=\\\"bottom\\\"] .arrow::after{border-width:0 .5rem .5rem .5rem}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^=\\\"bottom\\\"] .arrow::before{top:0;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^=\\\"bottom\\\"] .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^=\\\"bottom\\\"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\\\"\\\";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^=\\\"left\\\"]{margin-right:.5rem}.bs-popover-left .arrow,.bs-popover-auto[x-placement^=\\\"left\\\"] .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^=\\\"left\\\"] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^=\\\"left\\\"] .arrow::after{border-width:.5rem 0 .5rem .5rem}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^=\\\"left\\\"] .arrow::before{right:0;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^=\\\"left\\\"] .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:.9rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;align-items:center;width:100%;transition:transform 0.6s ease;backface-visibility:hidden;perspective:1000px}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translate3d(0, 0, 0)}}.carousel-item-next,.active.carousel-item-right{transform:translateX(100%)}@supports (transform-style: preserve-3d){.carousel-item-next,.active.carousel-item-right{transform:translate3d(100%, 0, 0)}}.carousel-item-prev,.active.carousel-item-left{transform:translateX(-100%)}@supports (transform-style: preserve-3d){.carousel-item-prev,.active.carousel-item-left{transform:translate3d(-100%, 0, 0)}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url(\\\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\\\")}.carousel-control-next-icon{background-image:url(\\\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\\\")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,0.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:\\\"\\\"}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:\\\"\\\"}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-primary{background-color:#007bff !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#0062cc !important}.bg-secondary{background-color:#6c757d !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62 !important}.bg-success{background-color:#28a745 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34 !important}.bg-info{background-color:#17a2b8 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#ffc107 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00 !important}.bg-danger{background-color:#dc3545 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130 !important}.bg-light{background-color:#f8f9fa !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#343a40 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#007bff !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#28a745 !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#343a40 !important}.border-white{border-color:#fff !important}.rounded{border-radius:.25rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-right{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-left{border-top-left-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-circle{border-radius:50% !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:\\\"\\\"}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:\\\"\\\"}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.85714%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media (min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;clip-path:none}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:.25rem !important}.mt-sm-1,.my-sm-1{margin-top:.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:.25rem !important}.m-sm-2{margin:.5rem !important}.mt-sm-2,.my-sm-2{margin-top:.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:.25rem !important}.pt-sm-1,.py-sm-1{padding-top:.25rem !important}.pr-sm-1,.px-sm-1{padding-right:.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem !important}.pl-sm-1,.px-sm-1{padding-left:.25rem !important}.p-sm-2{padding:.5rem !important}.pt-sm-2,.py-sm-2{padding-top:.5rem !important}.pr-sm-2,.px-sm-2{padding-right:.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem !important}.pl-sm-2,.px-sm-2{padding-left:.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:.25rem !important}.mt-md-1,.my-md-1{margin-top:.25rem !important}.mr-md-1,.mx-md-1{margin-right:.25rem !important}.mb-md-1,.my-md-1{margin-bottom:.25rem !important}.ml-md-1,.mx-md-1{margin-left:.25rem !important}.m-md-2{margin:.5rem !important}.mt-md-2,.my-md-2{margin-top:.5rem !important}.mr-md-2,.mx-md-2{margin-right:.5rem !important}.mb-md-2,.my-md-2{margin-bottom:.5rem !important}.ml-md-2,.mx-md-2{margin-left:.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:.25rem !important}.pt-md-1,.py-md-1{padding-top:.25rem !important}.pr-md-1,.px-md-1{padding-right:.25rem !important}.pb-md-1,.py-md-1{padding-bottom:.25rem !important}.pl-md-1,.px-md-1{padding-left:.25rem !important}.p-md-2{padding:.5rem !important}.pt-md-2,.py-md-2{padding-top:.5rem !important}.pr-md-2,.px-md-2{padding-right:.5rem !important}.pb-md-2,.py-md-2{padding-bottom:.5rem !important}.pl-md-2,.px-md-2{padding-left:.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:.25rem !important}.mt-lg-1,.my-lg-1{margin-top:.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:.25rem !important}.m-lg-2{margin:.5rem !important}.mt-lg-2,.my-lg-2{margin-top:.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:.25rem !important}.pt-lg-1,.py-lg-1{padding-top:.25rem !important}.pr-lg-1,.px-lg-1{padding-right:.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem !important}.pl-lg-1,.px-lg-1{padding-left:.25rem !important}.p-lg-2{padding:.5rem !important}.pt-lg-2,.py-lg-2{padding-top:.5rem !important}.pr-lg-2,.px-lg-2{padding-right:.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem !important}.pl-lg-2,.px-lg-2{padding-left:.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:.25rem !important}.mt-xl-1,.my-xl-1{margin-top:.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:.25rem !important}.m-xl-2{margin:.5rem !important}.mt-xl-2,.my-xl-2{margin-top:.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:.25rem !important}.pt-xl-1,.py-xl-1{padding-top:.25rem !important}.pr-xl-1,.px-xl-1{padding-right:.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem !important}.pl-xl-1,.px-xl-1{padding-left:.25rem !important}.p-xl-2{padding:.5rem !important}.pt-xl-2,.py-xl-2{padding-top:.5rem !important}.pr-xl-2,.px-xl-2{padding-right:.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem !important}.pl-xl-2,.px-xl-2{padding-left:.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-justify{text-align:justify !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media (min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#007bff !important}a.text-primary:hover,a.text-primary:focus{color:#0062cc !important}.text-secondary{color:#6c757d !important}a.text-secondary:hover,a.text-secondary:focus{color:#545b62 !important}.text-success{color:#28a745 !important}a.text-success:hover,a.text-success:focus{color:#1e7e34 !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#117a8b !important}.text-warning{color:#ffc107 !important}a.text-warning:hover,a.text-warning:focus{color:#d39e00 !important}.text-danger{color:#dc3545 !important}a.text-danger:hover,a.text-danger:focus{color:#bd2130 !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#dae0e5 !important}.text-dark{color:#343a40 !important}a.text-dark:hover,a.text-dark:focus{color:#1d2124 !important}.text-muted{color:#6c757d !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:\\\" (\\\" attr(title) \\\")\\\"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}.table-borderless{border:none !important}.table-borderless-top{border-top:none}.table-borderless-top tr:first-child th,.table-borderless-top tr:first-child td{border-top:none}.table-borderless-bottom{border-bottom:none}.table-borderless-bottom tbody tr:last-child td{border-bottom:none}.table-borderless-side{border-left:none;border-right:none}.table-borderless-side tr td:first-child,.table-borderless-side tr th:first-child{border-left:none}.table-borderless-side tr td:last-child,.table-borderless-side tr th:last-child{border-right:none}.table-borderless tr:first-child th,.table-borderless tr:first-child td{border-top:none}.table-borderless tr td:first-child,.table-borderless tr th:first-child{border-left:none}.table-borderless tr td:last-child,.table-borderless tr th:last-child{border-right:none}.table-borderless tbody tr:last-child td{border-bottom:none}.microsoft a.link-colorless:not(.ms-Button){color:inherit}.microsoft a.link-colorless:not(.ms-Button):visited{color:inherit}\\n\", \"\"]);\n\n// exports\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 233;","var __decorate=this&&this.__decorate||function(d,a,b,c){var e=arguments.length,h=3>e?a:null===c?c=Object.getOwnPropertyDescriptor(a,b):c,f;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)h=Reflect.decorate(d,a,b,c);else for(var g=d.length-1;0<=g;g--)if(f=d[g])h=(3>e?f(h):3<e?f(a,b,h):f(a,b))||h;return 3<e&&h&&Object.defineProperty(a,b,h),h},__metadata=this&&this.__metadata||function(d,a){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(d,\r\na)},core_1=require(\"@angular/core\"),IntegralUIDataService=function(){function d(){this.data=[]}d.prototype.init=function(a){for(var b=this.data.length=0;b<a.length;b++){var c={data:a[b].data,fields:this.getDataFields(a[b].fields),key:a[b].key};this.data.push(c)}};d.prototype.getDataFields=function(a){return a?{content:a.content?a.content:\"content\",icon:a.icon?a.icon:\"icon\",id:a.id?a.id:\"id\",pid:a.pid?a.pid:\"pid\",objects:a.objects?a.objects:\"items\",statusIcon:a.statusIcon?a.statusIcon:\"statusIcon\",\r\nsubobjects:a.subobjects?a.subobjects:\"subitems\",text:a.text?a.text:\"text\"}:{content:\"content\",icon:\"icon\",id:\"id\",pid:\"pid\",objects:\"items\",statusIcon:\"statusIcon\",subobjects:\"subitems\",text:\"text\"}};d.prototype.updateDataFields=function(a,b){var c=this.getData(b);c&&(c.fields=this.getDataFields(a))};d.prototype.clear=function(a,b){this.getList(a,b).length=0};d.prototype.insertAt=function(a,b,c,e){this.insert(a,b,c,null,!1,e)};d.prototype.insert=function(a,b,c,e,h,d){a&&(e=this.getData(d))&&(e=e.fields,\r\na[e.pid]=c?c[e.id]:\"\",c=this.getList(c,d))&&(0>b||null===b||void 0===b?c.push(a):(b=Math.max(Math.min(b,c.length),0),c.splice(b,0,a)),a[e.id]||(a[e.id]=this.getUniqueId()))};d.prototype.insertByRef=function(a,b,c,e){if(a&&b){var d=this.getParent(b,e),f=this.getList(d,e).indexOf(b);c&&(f+=1);this.insert(a,f,d,b,c,e);return f}};d.prototype.removeAt=function(a,b,c,e){var d=null,f=this.getData(e);if(f){if(a){c=this.getParent(a,e);var g=this.getList(c,e);b=g.indexOf(a)}if(null===b||void 0===b)return{obj:d,\r\nresult:!1};g=this.getList(c,e);if(0<=b&&b<g.length)return d=g[b],d[f.fields.pid]=\"\",g.splice(b,1),{obj:d,result:!0}}return{obj:d,result:!1}};d.prototype.createCloneIds=function(a,b,c){a[c.id]=this.getUniqueId();a[c.pid]=b;if(b=a[c.objects])for(var e=0;e<b.length;e++)this.createCloneIds(b[e],a[c.id],c)};d.prototype.clone=function(a,b){var c=this.getData(b);if(c){var e=JSON.parse(JSON.stringify(a));this.createCloneIds(e,null,c.fields);return e}return{}};d.prototype.findObjectById=function(a,b){var c=\r\nthis.getData(b);if(c){var e=c.fields;c=c.data;return a?this.searchObj(a,c,e):null}return null};d.prototype.findObjectByText=function(a,b){var c=this.getData(b);if(c){var e=c.fields;c=c.data;return void 0!=a?this.searchObj(a,c,e,\"text\"):null}return null};d.prototype.searchObj=function(a,b,c,e){var d=null;if(a&&b)for(var f=0,g=!1;!d&&f<b.length;){switch(e){case \"text\":b[f][c.text]&&(g=b[f][c.text].toString()===a.toString());break;default:b[f][c.id]&&(g=b[f][c.id].toString()===a.toString())}d=g?b[f]:\r\nthis.searchObj(a,b[f][c.objects],c,e);f++}return d};d.prototype.findParent=function(a,b,c){var e=null;if(a&&b)for(var d=0;!e&&d<b.length;)e=b[d][c.id]&&a[c.pid]&&b[d][c.id].toString()===a[c.pid].toString()?b[d]:this.findParent(a,b[d][c.objects],c),d++;return e};d.prototype.getData=function(a){var b=null;if(!this.getKey(a)&&0<this.data.length)b=this.data[0];else for(var c=0;c<this.data.length;c++)if(this.data[c].key==a){b=this.data[c];break}return b};d.prototype.getKey=function(a){return a?a:null};\r\nd.prototype.getList=function(a,b){var c=this.getData(b);if(c){var d=c.fields;return a?(a[d.objects]||(a[d.objects]=[]),a[d.objects]):c.data}return[]};d.prototype.getParent=function(a,b){if(a){var c=this.getData(b);if(c)return this.findParent(a,c.data,c.fields)}return null};d.prototype.getUniqueId=function(a){function b(){return(65536*(1+Math.random())|0).toString(16).substring(1)}a=a||\"-\";return b()+b()+a+b()+a+b()+a+b()+a+b()+b()+b()};return d}();\r\nIntegralUIDataService=__decorate([core_1.Injectable(),__metadata(\"design:paramtypes\",[])],IntegralUIDataService);exports.IntegralUIDataService=IntegralUIDataService;","import { Injectable, NgZone } from '@angular/core';\nimport { Resolve, Router, CanActivate, ActivatedRouteSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs/Observable';\n\nimport {\n  EnvService,\n} from './base/services';\n\n@Injectable()\nexport class EnvironmentProvider implements CanActivate {\n// have to do it that way, not as resolver. to make it run before child providers\n\n  constructor(\n    private envService: EnvService\n  ) {}\n\n  canActivate(\n    route: ActivatedRouteSnapshot,\n  ): Observable<boolean> | boolean {\n\n    this.envService.resolve(route.queryParams);\n    return !!this.envService.options;\n  }\n}\n\n@Injectable()\nexport class IsLicensedProvider implements CanActivate {\n\n  constructor(\n    private router: Router,\n    private envService: EnvService\n  ) {}\n\n  canActivate(): Observable<boolean> | boolean {\n    // TODO: Microsoft-ize\n    //let isLicensed = this.envService.license || !this.envService.production; //do not have production cookie in jira server env\n    let isLicensed = this.envService.license;\n    !isLicensed && this.router.navigate(['license']);\n    return isLicensed;\n  }\n}\n\n@Injectable()\nexport class MapResolver implements Resolve<any> {\n  constructor(\n    private ngZone: NgZone,\n    private envService: EnvService\n  ) {}\n\n  resolve(route: ActivatedRouteSnapshot): Promise<any> {\n\n    let promise = new Promise((resolve, reject) => {\n\n      if (this.envService.isAtlassian) {\n        // preload board\n        this.envService.atlassian.retriveBoard().subscribe((board: any) => { // could be specified later\n\n          // preload global stuff\n          this.ngZone.runOutsideAngular(() => { // experimental patch / to prevent continuous zombie refreshes\n\n            Observable.combineLatest(\n              this.envService.atlassian.retriveFilter(board.filter['id']),\n              this.envService.atlassian.retriveFields(),\n              this.envService.atlassian.retriveIssueTypes(),\n              this.envService.atlassian.retriveIssueLinkTypes(),\n              this.envService.atlassian.retriveEpics(),\n              this.envService.atlassian.retriveQuickFilters()\n            ).subscribe(\n              () => {},\n              (err) => { reject(err); },\n              () => { resolve(null); }\n            );\n          });\n        });\n      }\n\n      if (this.envService.isMicrosoft) {\n        // preload global stuff\n        this.ngZone.runOutsideAngular(() => { // experimental patch / to prevent continuous zombie refreshes\n\n          Observable.combineLatest(\n            this.envService.microsoft.retriveIssueTypes(),\n            this.envService.microsoft.retriveFields(),\n            this.envService.microsoft.retriveUsers(),\n          ).subscribe(\n            () => {},\n            (err) => { reject(err); },\n            () => { resolve(null); }\n          );\n        });\n      }\n\n    });\n\n    return promise;\n  }\n}\n\n@Injectable()\nexport class GenericResolver implements Resolve<any> {\n  constructor(\n    private ngZone: NgZone,\n    private envService: EnvService\n  ) {}\n\n  resolve(route: ActivatedRouteSnapshot): Promise<any> {\n\n    let promise = new Promise((resolve, reject) => {\n\n      if (this.envService.isAtlassian) {\n        // pass\n        resolve(null);\n      }\n\n      if (this.envService.isMicrosoft) {\n        // pass\n        resolve(null);\n      }\n\n    });\n\n    return promise;\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { TObjectId } from '../interfaces/common.interface';\nimport { TBoardId } from '../interfaces/board.interface';\nimport { TIssueId, TIssueKey } from '../interfaces/issue.interface';\n\nimport config from '../config';\nimport { EnvAtlassianService } from './env.atlassian.service';\nimport { EnvMicrosoftService } from './env.microsoft.service';\nimport {\n  Storage,\n  AppHttp\n} from './index';\n\n@Injectable()\nexport class EnvService {\n\n  production: boolean;\n  new: boolean; // is the first app load\n\n  platform: any; // service\n  environment: string;\n  license: boolean;\n\n  settings: any;\n  options: any;\n  data: any;\n\n  constructor(\n    private storage: Storage,\n    protected http: AppHttp,\n    // platform specific sub services\n    public atlassian: EnvAtlassianService,\n    public microsoft: EnvMicrosoftService,\n  ) {\n\n    if (EnvService.isAtlassian) {\n      if (!window['AP']) {\n        throw new Error('Atlassian API is not detected');\n      }\n\n      this.platform = this.atlassian;\n      this.atlassian.AP = window['AP'];\n      this.atlassian.JIRA = this.atlassian.AP.jira;\n\n      // OBSOLETED / legacy all.js version\n      // this.AP.require('jira', jira => {\n      //   this.JIRA = jira;\n      // });\n\n      document.body.className += ' ' + config.platforms.ATLASSIAN; // experimental\n    }\n\n    if (EnvService.isMicrosoft) {\n      this.platform = this.microsoft;\n      this.microsoft.VSS = window['VSS'];\n      document.body.className += ' ' + config.platforms.MICROSOFT; // experimental\n    }\n\n    this.settings = this.platform.settings;\n    this.environment = this.platform.environment;\n    this.options = this.platform.options;\n    this.data = this.platform.data;\n  }\n\n  resolve(params: Object) {\n    this.production = document.cookie.includes('env=production');\n    this.new = !!this.getPreferences('new');\n\n    if (this.isAtlassian) {\n      this.license = true;// params['lic'] == 'active';\n    }\n\n    if (this.isMicrosoft) {\n      this.license = true;\n    }\n\n    this.platform.resolve(params);\n    this.getSettings();\n    this.setPreferences('new', true);\n  }\n\n  get isAtlassian() {\n    return this.atlassian.isAtlassian;\n  }\n\n  get isAtlassianServer() {\n    return this.atlassian.isAtlassianServer;\n  }\n\n  get isMicrosoft() {\n    return this.microsoft.isMicrosoft;\n  }\n\n  static get isAtlassian() {\n    return EnvAtlassianService.isAtlassian;\n  }\n\n  static get isAtlassianServer() {\n    return EnvAtlassianService.isAtlassianServer;\n  }\n\n  static get isMicrosoft() {\n    return EnvMicrosoftService.isMicrosoft;\n  }\n\n  url(path: string): string {\n    return this.platform.url(path);\n  }\n\n  // OBSOLETED\n  // urlBoard(id: TBoardId): string {\n  //   return this.url('/projects/AS?board=' + id + '&selectedItem=com.bit.story-map__ausm-provided-link-to-panel');\n  // }\n\n  setPreferences(key, value): void {\n    let preferences = this.storage.get(config.storage.preferences) || {};\n    preferences[key] = value;\n\n    this.storage.set(config.storage.preferences, preferences);\n  }\n\n  getPreferences(key): any {\n    let preferences = this.storage.get(config.storage.preferences) || {};\n    return preferences[key];\n  }\n\n  setScopePreferences(key, value): void {\n    let scopeKey = this.platform.getScopeKey(key);\n    scopeKey && this.setPreferences(scopeKey, value);\n  }\n\n  getScopePreferences(key): any {\n    let scopeKey = this.platform.getScopeKey(key);\n    return this.getPreferences(scopeKey);\n  }\n\n  // OBSOLETED\n  // retriveStatuses(): any {\n  //   // GET '/status'\n  //   const observable = this.http.get('status');\n\n  //   observable.subscribe(\n  //     (data: any) => {\n  //       this._data.status = data;\n  //     }\n  //   );\n\n  //   return observable;\n  // }\n\n  getSettings(): any {\n    let key = 'settings:' + this.environment;\n    this.settings = Object.assign(this.settings, this.getPreferences(key));\n    return this.settings;\n  }\n\n  setSettings(data: any) {\n    let key = 'settings:' + this.environment;\n    this.settings = Object.assign(this.settings, data);\n    this.setPreferences(key, this.settings);\n  }\n  \n  createFlag (options: any) : any{\n    return this.platform.createFlag(options);\n  }\n  \n  resize(width?, height?) {\n     this.platform.resize(width, height);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Http, URLSearchParams } from '@angular/http';\nimport { Observable } from 'rxjs/Observable';\nimport { ReplaySubject } from 'rxjs/ReplaySubject';\n\nimport { TAtlassianObjectId } from '../interfaces/common.atlassian.interface';\nimport { TAtlassianBoardId } from '../interfaces/board.atlassian.interface';\nimport { TAtlassianIssueId, TAtlassianIssueKey } from '../interfaces/issue.atlassian.interface';\n\nimport config from '../config';\nimport {\n  AppHttp,\n} from './index';\n\n@Injectable()\nexport class EnvAtlassianService {\n\n  protected _options: any = {\n    api: {\n      base: '/rest/api/2/',\n      agile: '/rest/agile/1.0/',\n    },\n    dialog: 'left=5,top=5,width=840,height=640,scrollbars=1,toolbar=1,resizable=0',\n  };\n\n  protected _settings: any = {\n    update: EnvAtlassianService.isAtlassianCloud, // live update (via webhooks, etc)\n  };\n\n  protected _data: any = {\n  };\n\n  environment: string;\n\n  // Atlassian specific APIs\n  public AP: any;\n  public JIRA: any;\n\n  public options = this._options;\n  public settings = this._settings;\n  public data = this._data;\n\n  constructor(\n    protected httpGlobal: Http,\n    protected http: AppHttp,\n  ) {\n    if (!EnvAtlassianService.isAtlassian) { return; }\n\n    this.environment =\n      EnvAtlassianService.isAtlassianCloud ? 'ATLASSIAN_CLOUD' :\n      EnvAtlassianService.isAtlassianServer ? 'ATLASSIAN_SERVER' :\n      undefined;\n  }\n\n  resolve(params: Object) {\n    if (this.environment == 'ATLASSIAN_CLOUD' || this.environment == 'ATLASSIAN_SERVER') {\n      this._options['key'] = params['xdm_deprecated_addon_key_do_not_use'] || this._options['xdm_deprecated_addon_key_do_not_use'];\n      this._options['jwt'] = params['jwt'] || this._options['jwt'];\n      this._options['user'] = params['user_id'] || this._options['user'];\n      this._options['board'] = params['board'] || this._options['board'];\n      this._options['version'] = params['cv'] || this._options['version']; // TODO: check the param name\n      this._options['baseUrl'] = params['xdm_e'] || this._options['baseUrl'] || '//localhost';\n      this._options['documentationUrl'] = '/plugins/servlet/ac/' + this._options['key'] + '/upgrade?user.id=' + this._options['user'];\n\n      this._options['tz'] = params['tz'] || this._options['tz'];\n      this._options['loc'] = params['loc'] || this._options['loc'];\n      this._options['client'] = this._options['baseUrl'].substr(this._options['baseUrl'].indexOf('//')+2);\n\n\n      // this._options['product'] = params['xdm_c'] || this._options['product'];\n      // this._options['client'] = params['xdm_c'] || this.client;\n      this._settings.update = true;\n    }\n\n    if (this.environment == 'ATLASSIAN_SERVER') {\n      this._options['documentationUrl'] = params['contextpath'] + '/projects/' + params['project'] + '?rapidView=1&selectedItem=com.bit.story-map__ausm-provided-link-to-panel';\n\n      // TODO: discuss the parameters. why we need them?\n      this._options['project'] = params['project'];\n      // this._options['contextpath'] = params['contextpath'];\n    }\n  }\n\n  static get isAtlassian() {\n    return !window.location.search.includes('microsoft'); // temporal / set proper param\n  }\n\n  static get isAtlassianCloud() {\n    return !(window['AP'] || {}).server;\n  }\n\n  static get isAtlassianServer() {\n    return !!(window['AP'] || {}).server;\n  }\n\n  get isAtlassian() {\n    return this.environment == 'ATLASSIAN_CLOUD' || this.environment == 'ATLASSIAN_SERVER';\n  }\n\n  get isAtlassianCloud() {\n    return this.environment == 'ATLASSIAN_CLOUD';\n  }\n\n  get isAtlassianServer() {\n    return this.environment == 'ATLASSIAN_SERVER';\n  }\n\n  url(path: string): string {\n    let url = path;\n    url = this._options.baseUrl + url;\n\n    return url;\n  }\n\n  urlBoard(id: TAtlassianBoardId): string {\n    return this.url('/projects/AS?board=' + id + '&selectedItem=com.bit.story-map__ausm-provided-link-to-panel');\n  }\n\n  // RESERVED\n  // urlIssueEdit(id: string): string {\n  //   let url = path;\n  //   url = this._options.baseUrl + 'secure/EditIssue!default.jspa?key=' + id; // id or key\n  //   return url;\n  // }\n\n\n  getFieldRank() {\n    let board = this._data.board;\n    let fieldId = 'customfield_' + board.ranking['rankCustomFieldId'];\n\n    // ranking can be disabled for some environments\n    return (this._data.fields || []).find(item => item.id == fieldId) || {};\n  }\n\n  getFieldPoints() {\n    if(!this._data.board.estimation || !this._data.board.estimation['field'])\n      return {};\n    let fieldId = this._data.board.estimation['field']['fieldId'];\n    return (this._data.fields || []).find(item => item.id == fieldId) || {};\n  }\n\n  getFieldSprint() {\n    return this.getFieldBySchema(\"com.pyxis.greenhopper.jira:gh-sprint\");\n  }\n\n  getFieldEpicLink() {\n    return this.getFieldBySchema(\"com.pyxis.greenhopper.jira:gh-epic-link\")\n  }\n\n  getFieldEpicName() {\n    return this.getFieldBySchema(\"com.pyxis.greenhopper.jira:gh-epic-label\")\n  }\n\n  getFieldEpicColor() {\n    return this.getFieldBySchema(\"com.pyxis.greenhopper.jira:gh-epic-color\")\n  }\n\n  getFieldEpicStatus() {\n    return this.getFieldBySchema(\"com.pyxis.greenhopper.jira:gh-epic-status\")\n  }\n\n  getFieldParentLink() {\n    return this.getFieldBySchema(\"com.atlassian.jpo:jpo-custom-field-parent\")\n  }\n\n  getFieldBySchema(name: string) {\n    return (this._data.fields || []).find(item => item.schema && item.schema.custom == name) || {};\n  }\n\n\n  getFieldByName(name: string) {\n    let field;\n\n    switch(name.toLowerCase()) {\n      case 'epic link':\n        field = this.getFieldEpicLink();\n        break;\n\n      case 'points':\n        field = this.getFieldPoints() ;\n        break;\n\n      case 'sprint':\n        field = this.getFieldSprint();\n        break;\n\n      case 'rank':\n        field = this.getFieldRank();\n        break;\n\n      case 'parent link':\n        field = this.getFieldParentLink();\n        break;\n    }\n\n    return field ||\n      (this._data.fields || []).find(item => (item.clauseNames || []).indexOf(name) > -1 || item.id == name) || {}; // don't rely on \"name\" prop, it's localization dependent\n  }\n\n\n  getIssueLinkByName(name: string) {\n    return (this._data.issueLinkTypes || []).find(item => item.name == name);\n  }\n\n  retriveBoard(id?: TAtlassianBoardId): Observable<any> {\n    id = id || this.options.board;\n\n    // GET '/board/:id/configuration'\n    const observable = this.http.get(this.options.api.agile + 'board/' + id + '/configuration');\n\n    observable.subscribe(\n      (data: any) => {\n        this._data.board = data || {};\n      }\n    );\n\n    return observable;\n  }\n\n  retriveEpics(id?: TAtlassianBoardId): Observable<any> {\n    id = id || this.options.board;\n\n    // GET '/board/:id/configuration'\n    const observable = this.http.get(this.options.api.agile + 'board/' + id + '/epic');\n\n    observable.subscribe(\n      (data: any) => {\n        // hotfix / Jira returns epic issue ids in numeric, non string format\n        (data.values || []).forEach(item => item.id = '' + item.id);\n        this._data.epics = data || {};\n        this._data.epicsMap = {};\n        for(let i in data.values)\n          this._data.epicsMap[data.values[i].key] = data.values[i];\n      }\n    );\n\n    return observable;\n  }\n\n  retriveFilter(id?: TAtlassianObjectId): Observable<any> {\n    id = id || this.options.board.filter['id'];\n\n    // GET '/filter'\n    const observable = this.http.get(this.options.api.base + 'filter/' + id);\n\n    observable.subscribe(\n      (data: any) => {\n        this._data.filter = data || {};\n      }\n    );\n\n    return observable;\n  }\n\n  retriveSprints(id?: TAtlassianBoardId): Observable<any> {\n    id = id || this.options.board;\n\n    // GET '/board/:id/sprint'\n    const observable = this.http.get(this.options.api.agile + 'board/' + id + '/sprint');\n\n    observable.subscribe(\n      (data: any) => {\n        this._data.sprints = data.values || [];\n      }\n    );\n\n    return observable;\n  }\n\n  retriveQuickFilters(id?: TAtlassianBoardId): Observable<any> {\n    id = id || this.options.board;\n    if(EnvAtlassianService.isAtlassianServer)//uickfilters are not available for jira server\n    {\n      this._data.quickfilter = [];\n      return Observable.create(subscriber => subscriber.complete());\n    }\n    else\n    {\n      // GET '/board/:id/sprint'\n      const observable = this.http.get(this.options.api.agile + 'board/' + id + '/quickfilter');\n\n      observable.subscribe(\n        (data: any) => {\n          this._data.quickfilter = data.values || [];\n        }\n      );\n\n      return observable;\n    }\n  }\n\n  retriveVersions(id?: TAtlassianBoardId): Observable<any> {\n    id = id || this.options.board;\n\n    // GET '/board/:id/version'\n    const observable = this.http.get(this.options.api.agile + 'board/' + id + '/version');\n\n    observable.subscribe(\n      (data: any) => {\n        this._data.versions = data.values || [];\n      }\n    );\n\n    return observable;\n  }\n\n  retriveProjects(): Observable<any> {\n    // GET '/projects'\n    const observable = this.http.get(this.options.api.base + 'projects');\n\n    observable.subscribe(\n      (data: any) => {\n        this._data.projects = data || [];\n      }\n    );\n\n    return observable;\n  }\n\n  retriveComponents(id: TAtlassianObjectId): Observable<any> {\n    // GET '/project/:id/components'\n    const observable = this.http.get(this.options.api.base + 'project/' + id + '/components');\n\n    observable.subscribe(\n      (data: any) => {\n        this._data.components = data || [];\n      }\n    );\n\n    return observable;\n  }\n\n  retriveFields(): Observable<any> {\n    // GET '/field'\n    const observable = this.http.get(this.options.api.base + 'field');\n\n    observable.subscribe(\n      (data: any) => {\n        this._data.fields = data || [];\n      }\n    );\n\n    return observable;\n  }\n\n  retriveIssueTypes(): Observable<any> {\n    // GET '/issuetype'\n    const observable = this.http.get(this.options.api.base + 'issuetype');\n\n    observable.subscribe(\n      (data: any) => {\n        this._data.issueTypes = data || [];\n      }\n    );\n\n    return observable;\n  }\n\n  retriveIssueLinkTypes(): Observable<any> {\n    // GET '/issueLinkType'\n    const observable = this.http.get(this.options.api.base + 'issueLinkType'); // yeah, camelcase\n\n    observable.subscribe(\n      (data: any) => {\n        this._data.issueLinkTypes = data['issueLinkTypes'] || []; // atlassian, why he hell is it nested?\n      }\n    );\n\n    return observable;\n  }\n\n  retrivePriorities(): Observable<any> {\n    // GET '/issueLinkType'\n    const observable = this.http.get(this.options.api.base + 'priority'); // yeah, camelcase\n\n    observable.subscribe(\n      (data: any) => {\n        this._data.priorities = data || [];\n      }\n    );\n\n    return observable;\n  }\n\n  getScopeKey(key: string): string {\n    // generate unique scope based key\n    let board = this._data.board;\n    return board && key + '_' + board.id;\n    //return this._options['client']; //key to identify client\n  }\n\n  // experimental\n  getBackup(): any {\n    let params = new URLSearchParams();\n    params.set('jwt', this._options['jwt']);\n    params.set('baseUrl', this._options['baseUrl']);\n\n    // GET '/backup'\n    const observable = this.httpGlobal\n      .get('/backup', {search: params})\n      .map(res => res.json());\n\n    observable.subscribe(\n      (data: any) => {\n        data.maps = Object.keys(data.maps).map(prop => data.maps[prop]);\n        this._data.backup = data;\n      }\n    );\n\n    return observable;\n  }\n\n  // experimental\n  setBackup(): any {\n    // pass\n  }\n\n  createFlag (options: any):any {\n    options.close = 'auto';\n   return window['AP'].flag.create(options);\n  }\n\n  resize(width?, height?) {\n    // window['AP'].sizeToParent(true);\n    // window['AP'].resize(width,height);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\nimport { ReplaySubject } from 'rxjs/ReplaySubject';\n// import { Http, URLSearchParams } from '@angular/http';\n\n// import { TMicrosoftBoardId } from '../interfaces/board.interface';\nimport { TMicrosoftIssueId } from '../interfaces/issue.microsoft.interface';\n\nimport config from '../config';\nimport {\n  AppHttp,\n} from './index';\n\n@Injectable()\nexport class EnvMicrosoftService {\n\n  protected _options: any = {\n    api: {\n      base: '...', // calculated\n    },\n  };\n\n  protected _settings: any = {\n    update: true, // live update (via webhooks, etc)\n  };\n\n  protected _data: any = {\n  };\n\n  environment: string;\n\n  // Microsoft VisialStudio specific APIs\n  public VSS: any;\n\n  public options = this._options;\n  public settings = this._settings;\n  public data = this._data;\n\n  constructor(\n    // protected httpGlobal: Http,\n    protected http: AppHttp\n  ) {\n    if (!EnvMicrosoftService.isMicrosoft) { return; }\n\n    this.environment = 'MICROSOFT';\n  }\n\n  resolve(params: Object) {\n    let context = window['VSS'].getWebContext();\n\n    this._options['baseUrl'] = context.host['uri'];\n    this._options.api['base'] = context.host['uri'] + 'DefaultCollection/_apis/'; // experimental\n    this._options.api['baseProject'] = context.host['uri'] + 'DefaultCollection/' + context.project['name'] + '/_apis/'; // experimental\n\n    this._data['host'] = context['host']; // experimental\n    this._data['project'] = context['project']; // experimental\n    this._data['collection'] = context['collection'];  // experimental\n    this._data['team'] = context['team'];\n    // RESERVED / this._data['user'] = context['user'];\n  }\n\n  static get isMicrosoft() {\n    return window.location.search.includes('microsoft');\n  }\n\n  get isMicrosoft() {\n    return this.environment == 'MICROSOFT';\n  }\n\n  url(path: string): string {\n    let url = path;\n    url = this._options.baseUrl + url;\n\n    return url;\n  }\n\n  urlProject(path: string): string {\n    return this.url(this._data.project.name + '/' + path);\n  }\n\n  urlCollection(path: string): string {\n    return this.url(this._data.collection.name + '/' + path);\n  }\n\n  retriveFields(): any {\n    // GET '.../Work/BacklogConfiguration'\n    const observable = this.http.get(this._options.api.baseProject + 'work/processconfiguration', {\n      'api-version': '2.0-preview.1',\n    }).share();\n\n    // RESERVED\n    // const observable = this.http.get(this._options.api.baseProject + 'work/backlogconfiguration', {\n    //   'api-version': '3.0-preview.1',\n    // });\n\n    observable.subscribe(\n      (data: any) => {\n        // v2.0 / to drop after api upgrade\n        let fields = data['typeFields'] || {};\n        fields = Object.keys(fields).reduce((output, item) => {\n          output[item] = fields[item]['referenceName'];\n          return output;\n        }, {});\n\n        this._data.fields = fields; // v3.0 / data['backlogFields']['typeFields']\n      }\n    );\n\n    return observable;\n  }\n\n  retriveIssueTypes(): Observable<any> {\n    // GET '.../wit/workItemTypes'\n    const observable = this.http.get(this._options.api.baseProject + 'wit/workItemTypes');\n\n    observable.subscribe(\n      (data: any) => {\n        let issueTypes = data['value'].reduce((output, item) => {\n          item.iconClass = {\n            'Bug': 'work-item-type-icon-control work-item-type-icon bowtie-icon bowtie-symbol-bug',\n            'Epic': 'work-item-type-icon-control work-item-type-icon bowtie-icon bowtie-symbol-crown',\n            'Feature': 'work-item-type-icon-control work-item-type-icon bowtie-icon bowtie-symbol-trophy',\n            'Issue': 'work-item-type-icon-control work-item-type-icon bowtie-icon bowtie-symbol-impediment',\n            'Task': 'work-item-type-icon-control work-item-type-icon bowtie-icon bowtie-symbol-task',\n            'Test Case': 'work-item-type-icon-control work-item-type-icon bowtie-icon bowtie-symbol-test-case',\n            'User Story': 'work-item-type-icon-control work-item-type-icon bowtie-icon bowtie-symbol-book',\n          }[item.name] || 'work-item-type-icon-control work-item-type-icon bowtie-icon bowtie-symbol-impediment';\n\n          item.iconStyle = {\n            'Bug': 'color: rgb(204, 41, 61);',\n            'Epic': 'color: rgb(255, 123, 0);',\n            'Feature': 'color: rgb(119, 59, 147);',\n            'Issue': 'color: rgb(180, 0, 158);',\n            'Task': 'color: rgb(242, 203, 29);',\n            'Test Case': 'color: rgb(0, 75, 80);',\n            'User Story': 'color: rgb(242, 203, 29);',\n          }[item.name] || 'color: rgb(180, 0, 158)';\n\n          output[item.name] = item;\n          return output;\n        }, {});\n\n        this._data.issueTypes = issueTypes;\n      }\n    );\n\n    return observable;\n  }\n\n  // exprimental / temporal\n  retriveUsers(): Observable<any> {\n    // GET '.../projects/:project/teams/:team/members'\n    const observable = this.http.get(this._options.api.base + 'projects/' + this._data.project.name + '/teams/' + this._data.team.name + '/members');\n\n    observable.subscribe(\n      (data: any) => {\n        let users = data['value'].reduce((output, item) => {\n          output[item.uniqueName] = item;\n          return output;\n        }, {});\n\n        this._data.users = users;\n      }\n    );\n\n    return observable;\n  }\n\n  getScopeKey(key: string): string {\n    // generate unique scope based key\n    let project = this._data.project; // temporal\n    return project && key + '_' + project.id;\n  }\n\n  // RESERVED\n  // https://www.visualstudio.com/en-us/docs/integrate/extensions/develop/using-host-dialog\n  // dialog() {\n  //   this.VSS.getService(this.VSS.ServiceIds.Dialog).then(dialogService => {\n  //       var extensionCtx = this.VSS.getExtensionContext();\n  //       var contributionId = extensionCtx.publisherId + \".\" + extensionCtx.extensionId + \".dialogContent\";\n\n  //       // Show dialog\n  //       var dialogOptions = {\n  //           title: \"Example...\",\n  //           width: 800,\n  //           height: 600\n  //       };\n\n  //       dialogService.openDialog(contributionId, dialogOptions);\n  //   });\n  // }\n\n}\n","import { Injectable, } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\nimport { ReplaySubject } from 'rxjs/ReplaySubject';\nimport { forkJoin } from \"rxjs/observable/forkJoin\";\n\nimport { TGroupId, IGroup } from '../interfaces/map.interface';\nimport { TAtlassianIssueId, TAtlassianIssueKey, TAtlassianIssueIndex, IAtlassianIssue } from '../interfaces/issue.atlassian.interface';\nimport { IBackendAtlassianError, IBackendAtlassianIssueList } from '../interfaces/backend.atlassian.interface';\nimport { TIssueId, TIssueIndex, IIssue, IIssueComment } from '../interfaces/issue.interface';\n\nimport { parseJavaObject } from '../utils/misc';\n\nimport config from '../config';\nimport {\n  AppHttp,\n  AppSocket,\n  DataService,\n  NotificationService,\n  EnvAtlassianService,\n  UserAtlassianService,\n} from './index';\n\n@Injectable()\nexport class IssueAtlassianService extends DataService {\n\n  protected _params = { // jira \"/search\" endpoint props\n    jql: '',\n    startAt: 0,\n    maxResults: 100, // max size of loaded chunks\n    fields: '',\n    expand: 'transitions',/*'transitions,renderedFields'*/\n  };\n\n  protected _appliedQuickFiltes: any[] = [];\n  protected _list: any;\n\n  constructor(\n    protected http: AppHttp,\n    protected socket: AppSocket,\n    protected notificationService: NotificationService,\n    protected envAtlassianService: EnvAtlassianService,\n    protected userAtlassianService: UserAtlassianService,\n  ) {\n    super();\n    if (!envAtlassianService.isAtlassian) { return; }\n\n    // init search params\n    this._params['jql'] = (this.envAtlassianService.data.filter || {})['jql'] || ''; // RESERVED / + 'ORDER BY Rank';\n    this._params['fields'] = '*all';\n    /*\n    this._params['fields'] = [].concat(\n      config.issue.fields,\n      (envAtlassianService.getFieldByName('Sprint') || {}).id,\n      (envAtlassianService.getFieldByName('Points') || {}).id,\n      (envAtlassianService.getFieldByName('Epic Link') || {}).id,\n      (envAtlassianService.getFieldByName('Parent Link') || {}).id,\n      (envAtlassianService.getFieldByName('Rank') || {}).id,\n    ).join(',');\n    */\n\n    // init sockets\n    // TODO: temp temp temp / refactor\n    //if (this.envAtlassianService.settings.update) {\n    if (!this.envAtlassianService.isAtlassianServer) {\n      //console.log('!!! init webhooks: ');\n      this.socket.on('issue:create').subscribe((data: IAtlassianIssue) => data && this.isUnlocked(data.id) && this.retrive(data.id, true));\n      this.socket.on('issue:update').subscribe((data: IAtlassianIssue) => data && this.isUnlocked(data.id) && this.retrive(data.id, true));\n      this.socket.on('issue:delete').subscribe((data: IAtlassianIssue) => data && this.isUnlocked(data.id) && this.delete(data.id, true));\n    }\n  }\n\n  format(atlassianIssue: IAtlassianIssue, atlassianList: IAtlassianIssue[] = []): IIssue {\n\n    let fieldId, fieldKey;\n    let fields = atlassianIssue.fields;\n\n    // RESERVED\n    // fieldId = this.envAtlassianService.getFieldRank().id;\n    // atlassianIssue.fields['rank'] = atlassianIssue.fields[fieldId] || null; // TODO: specify default value\n\n    fieldId = this.envAtlassianService.getFieldByName('Points').id;\n    fields['points'] = fields[fieldId] || 0;\n\n    fieldId = this.envAtlassianService.getFieldByName('Sprint').id;\n    fields['sprints'] = (fields[fieldId] || []).map(item => parseJavaObject(item));\n\n    fieldId = this.envAtlassianService.getFieldByName('Epic Link').id;\n\n    if(atlassianIssue.fields.issuetype.name != 'Epic') {\n      fields[fieldId] = fields[fieldId] || config.others.key;\n    }\n\n    fieldKey = fields[fieldId];\n    let epicLinkParent = atlassianIssue['parent'] || atlassianList.find(item => item.key == fieldKey);\n\n    fieldId = this.envAtlassianService.getFieldByName('Parent Link').id;\n    fieldKey = fields[fieldId];\n    //let linkParent = atlassianIssue['parent'] || atlassianList.find(item => item.key == fieldKey);\n    let linkParent = fields['parent'] || atlassianIssue['parent'] || atlassianList.find(item => item.key == fieldKey);\n    fieldId = this.envAtlassianService.getFieldRank().id;\n    let rank = fields[fieldId];\n\n    fields.reporter && (fields.reporter.avatarUrl = this.userAtlassianService.getAvatarUrl(fields.reporter));\n    fields.assignee && (fields.assignee.avatarUrl = this.userAtlassianService.getAvatarUrl(fields.assignee));\n    let reporter = fields.reporter ? this.userAtlassianService.format(fields.reporter) : undefined;\n    let assignee = fields.assignee ? this.userAtlassianService.format(fields.assignee) : undefined;\n\n    let epic = epicLinkParent ? this.envAtlassianService.data.epicsMap[epicLinkParent['key']] : undefined;\n\n    let links = {};\n    epicLinkParent && (links['parent'] = {\n      id: epicLinkParent['id'],\n      key: epicLinkParent['key'],\n      name: epic ? epic.name : '',\n      color: (epic && epic.color) ? epic.color.key : '',\n      colorKey: (epic && epic.color) ? config.epicColors[epic.color.key.substr(epic.color.key.length-1)] : '',\n      epic: epic\n    });\n\n    linkParent && (links['parentLink'] = {\n      id: linkParent['id'],\n      key: linkParent['key']\n    });\n\n    let issue: IIssue = <any>{\n      id: atlassianIssue.id,\n      key: atlassianIssue.key,\n      name: atlassianIssue.name,\n      description: fields['summary'],\n      newGen: (fields['issuetype'] || {}).entityId ? true : false,\n      type: { // TODO: replace with _lodash.pick\n        id: (fields['issuetype'] || {})['id'],\n        name: (fields['issuetype'] || {})['name'],\n        iconUrl: (fields['issuetype'] || {})['iconUrl'],\n      },\n\n      priority: { // TODO: replace with _lodash.pick\n        id: (fields['priority'] || {})['id'],\n        name: (fields['priority'] || {})['name'],\n        iconUrl: (fields['priority'] || {})['iconUrl'],\n      },\n\n      status: { // TODO: replace with _lodash.pick\n        id: (fields['status'] || {})['id'],\n        name: (fields['status'] || {})['name'],\n        iconUrl: (fields['status'] || {})['iconUrl'],\n      },\n\n      points: fields['points'] || 0,\n      progress: fields['resolution'] ? 1 : 0,\n\n      reporter: reporter && {\n        id: reporter.id || reporter.key,\n        key: reporter.key,\n        name: reporter.name,\n        avatarUrl: reporter.avatarUrl,\n      },\n\n      assignee: assignee && {\n        id: assignee.id || assignee.key,\n        key: assignee.key,\n        name: assignee.name,\n        avatarUrl: assignee.avatarUrl,\n      },\n\n      // experimental\n      links: links,\n\n      state: { // to store \"state\" values\n        rank: atlassianList.findIndex(item => item.id == atlassianIssue.id), // temporal\n        locks: 0,\n      },\n      rank: rank,\n    };\n\n    issue.atlassian = atlassianIssue;\n    return issue;\n  }\n\n  /**\n   * adds a field for each hierachy level to each issue and returns an array of the apropriate field configuration\n   */\n  private createHierarchy(atlassianList: IAtlassianIssue[]): any[] {\n    let fields = {maxLevel:0,fieldConfiguration:[]};\n\n    (atlassianList || this._data.list || []).forEach(issue => {\n      let parent = this.getParent(issue.id);\n      let hierachy = parent ? [parent.key]: [];\n      let index = 0;\n\n      while(parent !== undefined) {\n        parent = this.getParent(parent.id);\n        parent && hierachy.push(parent.key);\n        index++;\n        fields.maxLevel = fields.maxLevel < index ? index : fields.maxLevel;\n      }\n\n      hierachy.reverse().forEach((id, index) => {\n        issue.atlassian.fields['parent_' + index] = id;\n        issue.links = issue.links || {};\n        issue.links.parentLink = issue.links.parentLink || {};\n        issue.links['parentLink']['parent_' + index] = id;\n      });\n    });\n\n    for (let i = 0 ; i < fields.maxLevel; i++) {\n      fields.fieldConfiguration.push({\n        clauseNames: ['parent_' + i],\n        custom:true,\n        id:'parent_' + i,\n        key:'parent_' + i,\n        name:'Hierarchy Level ' + i,\n        navigable:true,\n        orderable:true,\n        portfolio:true,\n        schema:{type: \"issue-key\", custom: \"bit-parent-level\", customId: i},\n        searchable:false\n      });\n    }\n\n    return fields.fieldConfiguration;\n  }\n\n  private createSubTaskHierarchy(atlassianList: IAtlassianIssue[]): any[] {\n    (atlassianList || this._data.list || []).forEach(issue => {\n      issue.atlassian.fields['subtasks'].forEach(subtask => {\n        let sub = ((this.find(subtask.id) || {}).atlassian || subtask);\n        let parent,i = 0;\n\n        sub.fields['parent_sub'] = issue.key;\n        sub.fields[this.envAtlassianService.getFieldByName('Epic Link').id] = issue.atlassian.fields[this.envAtlassianService.getFieldByName('Epic Link').id];\n\n        while ( (parent = issue.atlassian.fields['parent_' + i] )) {\n          sub.fields['parent_' + i] = parent;\n          i++;\n        }\n      });\n    });\n\n    return [{\n      clauseNames:['parent_sub'],\n      custom:true,\n      id:'parent_sub',\n      key:'parent_sub',\n      name:'Hierarchy Sub Tasks',\n      navigable:true,\n      orderable:true,\n      portfolio:true,\n      subtask:true,\n      schema:{type: \"issue-key\", custom: \"bit-parent-level\", customId: 'sub'},\n      searchable:false,\n    }];\n  }\n\n  private createLinksHierarchy(atlassianList: IAtlassianIssue[] = []):any[] {\n    let linkTypes = {};\n\n    atlassianList.forEach(issue => {\n      issue.fields['issuelinks'].forEach(link => {\n        if (link.inwardIssue) {\n          issue.fields['parent_link_' + link.type.id + '_in'] = link.inwardIssue.key;\n        }\n\n        if (link.outwardIssue) {\n          (this.find(link.outwardIssue.id)?.atlassian || link.outwardIssue).fields['parent_link_' + link.type.id + '_out'] = link.outwardIssue.key;\n        }\n\n        linkTypes['parent_link_' + link.id + '_in'] = link.type;\n        linkTypes['parent_link_' + link.id + '_out'] = link.type;\n      });\n    });\n\n    return Object.keys(linkTypes).map(key => {\n      return {\n        clauseNames:[key],\n        custom:true,\n        id:key,\n        key:key,\n        name:'Hierarchy Link ' + linkTypes[key].name,\n        navigable:true,\n        orderable:true,\n        portfolio:false,\n        link:true,\n        schema:{type: \"issue-key\", custom: \"bit-parent-level\", customId: key},\n        searchable:false,\n      }\n    });\n  }\n\n  find(id: TAtlassianIssueId): IIssue {\n    return (this._data.list || []).find(item => item.id == id);\n  }\n\n  findByKey(key: TAtlassianIssueKey): IIssue {\n    return (this._data.list || []).find(item => item.key == key);\n  }\n\n  getParent(id: TAtlassianIssueId): IIssue {\n    let child = this.find(id);\n    // return (this._data.list || []).find(item => item.key == (child.links.parentLink || {}).key || item.key == (child.atlassian.fields.parent || {}).key );\n    return (this._data.list || []).find(item => item.key == (child.links.parentLink || {}).key );\n  }\n\n  findIndex(id: TAtlassianIssueId): number {\n    return (this._data.list || []).findIndex(item => item.id == id);\n  }\n\n  isLocked(id: TAtlassianIssueId): boolean {\n    let issue = this.find(id);\n    return issue ? issue.state.locks > 0 : false;\n  }\n\n  isUnlocked(id: TAtlassianIssueId): boolean {\n    let issue = this.find(id);\n    return issue ? issue.state.locks == 0 : true;\n  }\n\n  // experimental\n  // TODO issuetype.name can be changed in other languages....\n  isEpic(id: TAtlassianIssueId): boolean {\n    let issue = this.find(id);\n    return issue.type.name == 'Epic'; // || (issue.fields || {issuetype:{}}).issuetype.name == 'Epic';\n  }\n\n  isSubTask(id: TAtlassianIssueId): boolean {\n    let issue = this.find(id);\n    return issue.type.name == 'Sub-task'; // || (issue.fields || {issuetype:{}}).issuetype.name == 'Sub-task';\n  }\n\n  // experimental\n  isFeature(id: TAtlassianIssueId): boolean {\n    return false;\n  }\n\n  list(params: any = {}): Observable<IAtlassianIssue[]> {\n    const listObservable: ReplaySubject<IAtlassianIssue[]>  = new ReplaySubject(1);\n    let list: IAtlassianIssue[] = []; // obsoleted: [config.others];\n\n    params = jQuery.extend(true, {}, this._params, params);\n\n    // load epics\n    // const observable = this.http.get(this.envAtlassianService.options.api.agile + 'board/' + this.envAtlassianService.data.board.id + '/epics', params);\n\n    // load recursively by chunks (cause of the api limit)\n    this._list = (page: number = 0) => {\n      params.startAt = page * params.maxResults;\n      let tmpSQL = (this.envAtlassianService.data.filter || {})['jql'] || '';\n      params['jql'] = this._applyQuickFiltet2Jql(tmpSQL, this._appliedQuickFiltes);\n\n      // GET '/search'\n      const observable = this.http.get(this.envAtlassianService.options.api.base + 'search', params);\n      //const observable = this.http.get(this.envAtlassianService.options.api.agile + 'board/' + this.envAtlassianService.data.board.id + '/backlog', params);\n\n      observable.subscribe(\n        (data: IBackendAtlassianIssueList) => {\n          list = list.concat(data.issues || []);\n\n          if (list.length < params.maxResults * (page + 1)||list.length > config.map.max) {\n            // process all items\n            this.loadParentIssues(list).subscribe( parents => {\n              list = list.concat(parents || []);\n              list = list.filter((item, pos) =>  list.indexOf(item) == pos);//remove doublicates\n              this._data.list = list.map(item => this.format(item, list));\n              this.envAtlassianService.data.fields = this.envAtlassianService.data.fields.concat( this.createHierarchy(this._data.list) );\n              //this.envAtlassianService.data.fields = this.envAtlassianService.data.fields.concat( this.createLinksHierarchy(this._data.list) );\n              this.envAtlassianService.data.fields = this.envAtlassianService.data.fields.concat( this.createSubTaskHierarchy(this._data.list) );\n              this._observables.list.next(this._data.list);\n\n              listObservable.next(this._data.list);\n              listObservable.complete();\n            })\n\n          } else {\n            // load more items\n            this._list(page + 1);\n          }\n        }\n      );\n    }\n\n    this._list();\n\n    return listObservable;\n  }\n\n  loadParentIssues(atlassianList: any[]): Observable<any> {\n    return Observable.create(subscriber => {\n      var parentList = [];\n      var parentFieldId = this.envAtlassianService.getFieldByName('Parent Link').id;\n      var parentKeys = (atlassianList || [])\n          .filter(issue => issue.fields[parentFieldId] && !!issue.fields[parentFieldId].hasEpicLinkFieldDependency && (atlassianList.find(item => item.key == issue.fields[parentFieldId]) || []).length == 0 )\n          .map(issue => issue.fields[parentFieldId] );\n\n      var params = {jql: 'key in (' + parentKeys.toString() + ')'};\n\n      if(parentKeys.length > 0) {\n        this.http.get(this.envAtlassianService.options.api.base + 'search', params).subscribe(data => {\n          parentList = parentList.concat(data.issues);\n          this.loadParentIssues(parentList).subscribe(issues => {\n            parentList = parentList.concat(issues);\n            subscriber.next(parentList);\n            subscriber.complete();\n          });\n        });\n      } else {\n        subscriber.next(parentList);\n        subscriber.complete();\n      }\n    });\n  }\n\n  refresh() {\n    this.envAtlassianService.data.issues = [];\n    this._list(0); // refresh\n  }\n\n  retrive(id: TAtlassianIssueId, webhook?: boolean): Observable<IAtlassianIssue> {\n    let issue = this.find(id);\n    issue && (issue.state.updated = false); // experimental\n\n    // GET '/issue/:id'\n    const observable = this.http.get(this.envAtlassianService.options.api.base + 'issue/' + id, {\n      fields: this._params.fields,\n      expand: 'transitions'\n    });\n\n    observable.subscribe(\n      (data: IAtlassianIssue) => {\n        if(data.fields.parent) {\n          this.retrive(data.fields.parent.id, webhook);\n        }\n       this._view(data, webhook);\n      }\n    );\n    return observable;\n  }\n\n  toggleQuickFilter(id) {\n    for (let i = 0; i < this._appliedQuickFiltes.length; i++) {\n      if (this._appliedQuickFiltes[i].id == id) {\n        this._appliedQuickFiltes.splice(i, 1);\n        this.refresh(); // refresh\n        return\n      }\n    }\n\n    for (let i = 0; i < this.envAtlassianService.data.quickfilter.length; i++) {\n      if (this.envAtlassianService.data.quickfilter[i].id == id) {\n        this._appliedQuickFiltes.push(this.envAtlassianService.data.quickfilter[i]);\n        this.refresh(); // refresh\n        return\n      }\n    }\n  }\n\n  private _applyQuickFiltet2Jql(jql:string, quickFilters:any[]):string {\n     let result = '';\n     let orderByIndex = jql.toLowerCase().indexOf('order by');\n     let orderBy;\n\n     if (orderByIndex > -1) {\n         result = '(' + jql.substring(0, orderByIndex) + ')';\n         orderBy = jql.substring(orderByIndex);\n     }\n\n     for (let i in quickFilters) {\n        orderByIndex = quickFilters[i].jql.toLowerCase().indexOf('order by');\n        let filter = orderByIndex == -1 ? quickFilters[i].jql : quickFilters[i].jql.substring(0, orderByIndex);\n\n        if('' != filter.trim()) {\n          result +=  'AND (' + filter + ') ';\n        }\n     }\n\n     result += (' ' + orderBy); // orderBy\n     //console.log('XXX _applyQuickFiltet2Jql: ', {result,jql});\n     return result;\n   }\n\n  // The problem with updating multiple issues happened, because for one issue there may be more than one fields to update\n  // This depends on number of active groups. For this reason, you cannot have issue[i], fieldName[i] and fieldValue[i] with the same index i\n  // The update method should be able to update multiple fields for one issue at once, if possible\n  //\n  // The method below adds observables for changes to the issue for each field that requires an update\n  // I tried the CUT/PASTE operation, and it works\n  updateIssues_TEST(issue: IIssue[], fieldName: string[], fieldValue: any[], removefieldValue?: any[]): Observable<IAtlassianIssue>[] {\n    return this.updateIssues(issue, fieldName, fieldValue, removefieldValue);\n  }\n\n  _transformeHierarchyFieds(issue: IIssue[], fieldName: string[], fieldValue: any[], removefieldValue?: any[]) {\n    let parentId, level = -1, remove = [];\n\n    fieldName.forEach((n ,i) => {\n      if (n.substr(0,7) =='parent_') {\n        if (fieldValue[i]) {\n          var levelNew = parseInt(n.substr(7) == 'sub'? '99' : n.substr(7));\n          if (levelNew > level) {\n            parentId = fieldValue[i];\n            level = levelNew;\n          }\n        }\n\n        remove.push(i);\n      }\n    });\n\n    remove.sort((a,b) => b - a).map(i => {\n      fieldName.splice(i, 1);\n      fieldValue.splice(i, 1);\n    });\n\n    if (parentId) {\n      fieldName.push(this.envAtlassianService.getFieldParentLink().id);\n      fieldValue.push(parentId);\n    }\n\n    // return parentId;\n  }\n\n  updateIssues(issues: IIssue[], fieldName: string[], fieldValue: any[], removefieldValue?: any[]): Observable<IAtlassianIssue>[] {\n    const retValue = [];\n\n    // TODO: clarify. total mess\n    const parentId = undefined; // this._transformeHierarchyFieds(issues, fieldName, fieldValue, removefieldValue);\n\n    issues.forEach((item: IIssue) => {\n        if (parentId && this.isSubTask(item.id)) {\n          retValue.push(Observable.create(subscriber => {\n            subscriber.error(\"Cannot move sub-tasks because it is a Jira-move operation\");\n          }));\n\n        } else if (parentId && item.atlassian.fields[this.envAtlassianService.getFieldByName('epic link').id]) {\n          retValue.push(Observable.create(subscriber => {subscriber.error(\"Cannot use parent link when epic link is set.\")}));\n\n        } else {\n          for (let j = 0; j < fieldName.length; j++) {\n            retValue.push(this.updateMultipleIssueFields(item, fieldName[j], fieldValue[j], removefieldValue[j]));\n          }\n        }\n    });\n\n    return retValue;\n  }\n\n  // TODO: refactor\n  // the /createmeta endpoint to be removed:\n  // https://confluence.atlassian.com/jiracore/createmeta-rest-endpoint-to-be-removed-975040986.html\n  getCreateIssueMeta(project?: string): any {\n    const parameters = project ? '?projectKeys=' + project : '';\n    return this.http.get(this.envAtlassianService.options.api.base + 'issue/createmeta' + parameters);\n  }\n\n  retriveComments(id: string): Observable<[IIssueComment]>{\n    const commentsObservable: ReplaySubject<[IIssueComment]>  = new ReplaySubject(1);\n    const observable =  this.http.get(this.envAtlassianService.options.api.base + 'issue/' + id + '/comment?expand=renderedBody');\n    observable.subscribe(data => {\n      commentsObservable.next(data.comments);\n      commentsObservable.complete();\n    });\n    return commentsObservable;\n  }\n\n  createIssue(fieldName: string[], fieldValue: any[]): Observable<IAtlassianIssue> {\n    if (fieldName.indexOf('project') < 0 || fieldName.indexOf('issuetype') < 0) {\n      return Observable.create(subscriber => {subscriber.error('Fields required to create issue: projectID, issueTypeID');})\n    }\n\n    let data: any = {\n      \"fields\": {\n        \"project\": {\"id\": fieldValue[fieldName.indexOf('project')]},\n        \"issuetype\": {\"id\": fieldValue[fieldName.indexOf('issuetype')]},\n      }\n    };\n\n    let dataUpdate = {update:{}};\n\n    this._transformeHierarchyFieds([], fieldName, fieldValue, []);\n\n    if (fieldName.indexOf('parent') >= 0) {\n      data.fields.parent = {\"id\": fieldValue[fieldName.indexOf('parent')]};\n    }\n\n    for (let j = 0; j < fieldName.length; j++) {\n      dataUpdate = this._buildUpdateData(fieldName[j], fieldValue[j], dataUpdate);\n    }\n\n    if (dataUpdate && Object.keys(dataUpdate.update).length > 0) {\n      data.update = dataUpdate.update;\n    }\n\n    return this._update(undefined, this.http.post(this.envAtlassianService.options.api.base + 'issue/', data));\n  }\n\n  /**\n   * update Field values of the given issue\n   *\n   * @param {IIssue} issue - the issue to be updated\n   * @param {string} fieldName -  the field to be updated.\n   * @param {any} fieldValue -  the value to be updated\n   * @param {any} removefieldValue [optional] -  the value to be removed in case of fields ['versions', 'fixVersions', 'components'] and issuelinks\n   *\n   * values (both addValues or removeValues) for issuelinks must have this format: {\n      type: issuelinkType,\n      inwardIssue: issueId,\n      outwardIssue: issueId,\n    }\n  **/\n  updateMultipleIssueFields(issue: IIssue, fieldName: string, fieldValue: any, removefieldValue?: any): Observable<IAtlassianIssue> {\n    const field = this.envAtlassianService.getFieldByName(fieldName);\n    console.log('!!!updateMultipleIssueFields ', {issue:issue, field:(field || fieldName), fieldValue:fieldValue, removefieldValue:removefieldValue});\n\n    let isOthers : boolean = (fieldValue == 'Others');\n    // fieldValue = isOthers ? '' : fieldValue;\n    const dataUpdate = this._buildUpdateData(fieldName, fieldValue);\n\n    if ([\n      'aggregateprogress','aggregatetimeestimate','aggregatetimeoriginalestimate',\n      'aggregatetimespent','created','creator','lastViewd','progress','resolution',\n      'resolutiondate','timeoriginalestimate','timetracking','updated','worklog','workratio'\n    ].indexOf(fieldName) > -1) {\n      return Observable.create(subscriber => {subscriber.error(fieldName + \" cannot be modified\")});\n    }\n\n    else if ((fieldName || '').substr(0,7) =='parent_') {\n      return Observable.create(subscriber => {subscriber.error(fieldName + ' XXX => ' + fieldValue)});\n\n    } else if (dataUpdate && Object.keys(dataUpdate.update).length > 0) {\n      return this.update(issue,dataUpdate);\n      // .flatMap(result => {\n      //   //if((fieldName || '').startsWidth('parent_'))\n      //     this.createHierarchy();//TODO performance - only update changed objects\n      //     this.listObservable.next(this._data.list);\n      // });\n    }\n\n    else if(['versions', 'fixVersions', 'components', 'labels'].indexOf(fieldName) > -1)\n      return this.updateMultivalueField(issue, fieldName, fieldValue, removefieldValue);\n\n    switch (fieldName){\n      case this.envAtlassianService.getFieldByName('epic link').id:\n        return this.updateEpic(issue,fieldValue);\n\n      case this.envAtlassianService.getFieldByName('sprint').id:\n        return this.updateSprintforSingleIssue(issue,fieldValue);\n\n      case this.envAtlassianService.getFieldByName('points').id:\n        return this.updatePoints(issue, fieldValue);\n\n      case 'status':\n        return this.updateStatus(issue,fieldValue);\n\n      case 'issuetype':\n        return this.update(issue, {fields: {issuetype: {id: fieldValue}}});//issue type could not be changed by dataUpdate aproach\n\n      case 'issuelinks':\n        return fieldValue ?\n            this.updateIssueLinkCreate(issue, fieldValue.inwardIssue, fieldValue.outwardIssue, fieldValue.type)\n          :\n            this.updateIssueLinkDelete(issue, removefieldValue.inwardIssue, removefieldValue.outwardIssue, removefieldValue.type);\n    }\n\n    if (['watches','project','subtasks','parent'].indexOf(fieldName) > -1) { // TODO not implemented yet\n      return Observable.create(subscriber => {\n        subscriber.error(fieldName + \" cannot be modified\");\n      });\n    }\n\n    return Observable.create(subscriber => {\n      subscriber.error(new Error('field not found or unsupported field type: \"' + fieldName + '\"'), fieldValue);\n    });\n  }\n\n  // works for field types ['user','string','number','issue-key']\n  // ['datetime','date','progress','array','any','sd-servicelevelagreement','sd-feedback','option','option-with-child']\n  private _buildUpdateData(fieldName: string, fieldValue: any, updateData: any = {update: {}}): any {\n    const field = this.envAtlassianService.getFieldByName(fieldName) || {schema:{}};\n\n    if (field\n      && fieldName != this.envAtlassianService.getFieldEpicLink().id\n      && (['string', 'number', 'user', 'datetime', 'date','issue-key'].indexOf(field.schema.type) > -1\n        || ['summary', 'description', 'assignee', 'reporter', 'priority'].indexOf(fieldName) > -1\n        || fieldName == this.envAtlassianService.getFieldParentLink().id\n      )\n    ) {\n      fieldValue = (['priority'].indexOf(fieldName) > -1) ? {id:fieldValue}: fieldValue;\n      fieldValue = (['user'].indexOf(field.schema.type) > -1) ? {name:fieldValue}: fieldValue;\n      updateData.update[fieldName] = [{\"set\" : fieldValue}];\n    }\n\n    return updateData;\n  }\n\n  //issue = the issue to be updated\n  //fieldName = versions | fixVersions | components\n  //addValues = array of ids to be added\n  //removeValues = array of ids to be removed\n  updateMultivalueField(issue: IIssue, fieldName: string, addValues: any, removeValues: any): Observable<IAtlassianIssue> {\n    addValues = !Array.isArray(addValues) ? [addValues] : addValues;\n    removeValues = !Array.isArray(removeValues) ? [removeValues] : removeValues;\n\n    const isOthers: boolean = addValues && addValues.length && addValues[0] == config.map.group.extras.OTHERS;\n    const types = config.map.group.values;\n\n    let updates = addValues.map((item: string) =>\n      <any>({add: {id: item}})\n    ).concat(removeValues.map((item: string) =>\n      <any>({remove: {id: item}})\n    ));\n\n    let data: any = {\n      update: {},\n    };\n\n    data['update'][fieldName] = isOthers ?\n      (issue.atlassian.fields[fieldName] || []).map(item => ({remove: {id: addValues[0]}})) : // remove all items\n      updates; // add/remove item\n    return this.update(issue, data);\n  }\n\n  update(issue: IIssue, data: any): Observable<IAtlassianIssue> {\n    // RESERVED / if (!issue.id) return this.create(Object.assign({}, issue, data)); // dirty?...\n    const observable =\n      // PUT '/issue/:id'\n      this.http.put(this.envAtlassianService.options.api.base + 'issue/' + issue.id, data);\n\n    return this._update(issue, observable);\n  }\n\n  updateDescription(issue: IIssue, description: string): Observable<IAtlassianIssue> {\n    return this.update(issue, {\n      fields: {summary: description}\n    });\n  }\n\n  updateProject(issue: IIssue) {\n    window.open(this.envAtlassianService.url(\n      '/secure/views/bulkedit/BulkMigrateDetails.jspa?singleIssueId=' + issue.id\n    ), '_blank', this.envAtlassianService.options.dialog).focus();\n  }\n\n  updateEpic(issue: IIssue, epicId: any): Observable<IAtlassianIssue> {\n    // epicId 'none' to unlink issue from the epic\n    epicId = (epicId == 'Others' || epicId == '') ? 'none': epicId;\n    let data = {\n      issues: [issue.key],\n    };\n\n    const observable =\n      // POST '/epic/:id/issue'\n      this.http.post(this.envAtlassianService.options.api.agile + 'epic/' + epicId + '/issue', data);\n\n    return this._update(issue, observable);\n  }\n\n  updatePoints(issue: IIssue, value: string): Observable<IAtlassianIssue> {\n    let board = this.envAtlassianService.options['board'];\n    let data = {\n      value: value,\n    };\n\n    const observable =\n      // PUT '/issue/:id/estimation?boardId=:boardId'\n      this.http.put(this.envAtlassianService.options.api.agile + 'issue/' + issue.id + '/estimation?boardId=' + board, data);\n\n    return this._update(issue, observable);\n  }\n\n  updateStatus(issue: IIssue, name: string): Observable<IAtlassianIssue> {\n    // should pass status name and find transition id by name,\n    // cause ids can differ from project to project and so on.\n    let transition = issue.atlassian.transitions.find(item => item.to.name == name);\n\n    // skip update and revert changes for unpermissioned transitions\n    if (!transition) { return this.retrive(issue.id); }\n\n    let data = {\n      transition: {id: transition.id}\n    };\n\n    const observable =\n      // POST '/issue/:id/transitions'\n      this.http.post(this.envAtlassianService.options.api.base + 'issue/' + issue.id + '/transitions', data);\n\n    return this._update(issue, observable);\n  }\n\n  updateIssueLinkCreate(issue: IIssue, inwardIssueId: any, outwardIssueId: any, typeId: any): Observable<IAtlassianIssue> {\n    let data = {\n      type: {id: typeId},\n      inwardIssue: {id: inwardIssueId},\n      outwardIssue: {id: outwardIssueId},\n    };\n\n    const observable =\n      // POST '/issueLink'\n      this.http.post(this.envAtlassianService.options.api.base + 'issueLink', data);\n\n    return this._update(issue, observable);\n  }\n\n  updateIssueLinkDelete(issue: IIssue, inwardIssueId: any, outwardIssueId: any, typeId: any): Observable<IAtlassianIssue> {\n    let data = {\n      type: {id: typeId},\n      inwardIssue: {id: inwardIssueId},\n      outwardIssue: {id: outwardIssueId},\n    }\n\n    const observable =\n      // DELETE '/issueLink'\n      this.http.delete(this.envAtlassianService.options.api.base + 'issueLink', data);\n\n    return this._update(issue, observable);\n  }\n\n  updateSprint(issues: IIssue[], sprint: string): Observable<void> { //!!!TODO should return Observable<IAtlassianIssue>[]\n    //max 50 issues allowed per request\n    let data = {issues:[]};\n    for(let i in issues)\n      data.issues.push(issues[i].id);\n    const observable = this.http.post(this.envAtlassianService.options.api.agile + 'sprint/' + sprint + '/issue', data);\n    /*\n    observable.subscribe(\n      () => {\n        // update view object and emit item\n        this._data.view = issue;\n        this._observables.view.next(issue);\n      },\n      (err: IBackendAtlassianError) => {\n        // error message\n        this.notificationService.createFromBackendError(err);\n      }\n    );\n    */\n    return observable;\n    //return this._update(issue, observable);\n  }\n\n  updateSprintforSingleIssue(issue: IIssue, sprint: any): Observable<IAtlassianIssue> {\n    sprint = Array.isArray(sprint) ? sprint[0].id : sprint.is;\n    let data = {issues:[issue.id]};\n    const observable = this.http.post(this.envAtlassianService.options.api.agile + 'sprint/' + sprint + '/issue', data);\n    return this._update(issue, observable);\n  }\n\n  updateRank(issue: IIssue, issueBefore: IIssue, issueAfter: IIssue): Observable<void> {\n    // normalize data\n    issueAfter = !issueAfter && !issueBefore ? issue : issueAfter; // make a fake update if no data\n    issueAfter = issueAfter && issueBefore ? null : issueAfter; // make it valid for excessive data\n\n    let data = {\n      issues: [issue.key],\n      rankBeforeIssue: issueAfter  ? issueAfter.key : undefined, // yes, swapped values\n      rankAfterIssue: issueBefore ? issueBefore.key : undefined, // yes, swapped values\n    };\n\n    // PUT '/issue/rank'\n    const observable = this.http.put(this.envAtlassianService.options.api.agile + 'issue/rank', data);\n\n    observable.subscribe(\n      () => {\n        // update view object and emit item\n        this._data.view = issue;\n        this._observables.view.next(issue);\n      },\n      (err: IBackendAtlassianError) => {\n        // error message\n        this.notificationService.createFromBackendError(err);\n      }\n    );\n\n    return observable;\n  }\n\n  updateGroup(issue: IIssue, group: IGroup, add: boolean = true): Observable<IAtlassianIssue> {\n    const isOthers: boolean = group.id == config.map.group.extras.OTHERS;\n    const types = config.map.group.values;\n\n    let groupId: any;\n    let fieldId: string;\n    let data: any = {\n      update: {},\n      fields: {},\n    };\n\n    switch(group.type) {\n      case types.PROJECT:\n        // TODO: doesn't work, try another approach\n        data['update']['project'] = [{set: group.id}];\n        break;\n\n      case types.EPIC:\n        groupId = isOthers ? 'none' : group.id;\n\n        if (issue.newGen) {\n          data.fields.parent = {id: groupId}; // or key: group.key\n        } else {\n          return this.updateEpic(issue, groupId);\n        }\n        break;\n\n      case types.SPRINT:\n        groupId = isOthers ? null : parseInt(group.id);\n        fieldId = this.envAtlassianService.getFieldByName('Sprint').id;\n        data['update'][fieldId] = [{set: groupId}];\n        break;\n\n      case types.POINTS:\n        return this.updatePoints(issue, group.id);\n\n      case types.VERSION_AFFECTED:\n        data['update']['versions'] = isOthers ?\n          (issue.atlassian.fields['versions'] || []).map(item => ({remove: {id: item.id}})) : // remove all items\n          [add ? {add: {id: group.id}} : {remove: {id: group.id}}]; // add/remove item\n        break;\n\n      case types.VERSION_FIXED:\n        data['update']['fixVersions'] = isOthers ?\n          (issue.atlassian.fields['fixVersions'] || []).map(item => ({remove: {id: item.id}})) : // remove all items\n          [add ? {add: {id: group.id}} : {remove: {id: group.id}}]; // add/remove item\n        break;\n\n      case types.COMPONENT:\n        data['update']['components'] = isOthers ?\n          (issue.atlassian.fields['components'] || []).map(item => ({remove: {id: item.id}})) : // remove all items\n          [add ? {add: {id: group.id}} : {remove: {id: group.id}}]; // add/remove item\n        break;\n\n      case types.STATUS:\n        return this.updateStatus(issue, group.name || group.id); // yes, we pass name, not id\n\n      case types.PRIORITY:\n        data['update']['priority'] = [{set: {id: group.id}}];\n        break;\n\n      case types.TYPE:\n        data['fields']['issuetype'] = {id: group.id}; // doesn't work using \"update\" approach\n        break;\n\n      case types.ASSIGNEE:\n        data['update']['assignee'] = [{set: {name: isOthers ? null : group.id}}];\n        break;\n\n      case types.REPORTER:\n        data['update']['reporter'] = [{set: {name: isOthers ? null : group.id}}];\n        break;\n\n      case types.DUPLICATES:\n        fieldId = this.envAtlassianService.getIssueLinkByName('Duplicate').id;\n\n        if (isOthers) {\n          // TEMP TEMP TEMP\n          return this.updateIssueLinkCreate(issue, issue.id, group.id, fieldId);\n\n          // RESERVED\n          // return issue.atlassian.fields.issuelinks\n          //   .filter(item => item.id == typeId)\n          //   .map(item => this.updateIssueLinkDelete(issue, issue.id, group.id, typeId)\n\n        } else {\n          return this.updateIssueLinkCreate(issue, issue.id, group.id, fieldId);\n        }\n\n      case types.DUPLICATED:\n        fieldId = this.envAtlassianService.getIssueLinkByName('Duplicate').id;\n\n        if (isOthers) {\n          // TEMP TEMP TEMP\n          return this.updateIssueLinkCreate(issue, group.id, issue.id, fieldId);\n        } else {\n          return this.updateIssueLinkCreate(issue, group.id, issue.id, fieldId);\n        }\n\n      case types.BLOCKS:\n        fieldId = this.envAtlassianService.getIssueLinkByName('Blocks').id;\n\n        if (isOthers) {\n          // TEMP TEMP TEMP\n          return this.updateIssueLinkCreate(issue, issue.id, group.id, fieldId);\n        } else {\n          return this.updateIssueLinkCreate(issue, issue.id, group.id, fieldId);\n        }\n\n      case types.BLOCKED:\n        fieldId = this.envAtlassianService.getIssueLinkByName('Blocks').id;\n\n        if (isOthers) {\n          // TEMP TEMP TEMP\n          return this.updateIssueLinkCreate(issue, group.id, issue.id, fieldId);\n        } else {\n          return this.updateIssueLinkCreate(issue, group.id, issue.id, fieldId);\n        }\n    }\n\n    return this.update(issue, data);\n  }\n\n  updateGroupProperties(issue: IIssue, type: string, addGroups: IGroup[], removeGroups: IGroup[]): Observable<IAtlassianIssue> {\n    const isOthers: boolean = addGroups && addGroups.length && addGroups[0].id == config.map.group.extras.OTHERS;\n    const types = config.map.group.values;\n\n    let updates = addGroups.map((item: IGroup) =>\n      <any>({add: {id: item.id}})\n    ).concat(removeGroups.map((item: IGroup) =>\n      <any>({remove: {id: item.id}})\n    ));\n\n    let data: any = {\n      update: {},\n    };\n\n    switch(type) {\n      case types.VERSION_AFFECTED:\n        data['update']['versions'] = isOthers ?\n          (issue.atlassian.fields['versions'] || []).map(item => ({remove: {id: addGroups[0].id}})) : // remove all items\n          updates; // add/remove item\n        break;\n\n      case types.VERSION_FIXED:\n        data['update']['fixVersions'] = isOthers ?\n          (issue.atlassian.fields['fixVersions'] || []).map(item => ({remove: {id: addGroups[0].id}})) : // remove all items\n          updates; // add/remove item\n        break;\n\n      case types.COMPONENT:\n        data['update']['components'] = isOthers ?\n          (issue.atlassian.fields['components'] || []).map(item => ({remove: {id: addGroups[0].id}})) : // remove all items\n          updates; // add/remove item\n        break;\n    }\n\n    return this.update(issue, data);\n  }\n\n  // template\n  isUpdateGroup(issue: IIssue, group: IGroup): boolean {\n    const isOthers: boolean = group.id == config.map.group.extras.OTHERS;\n    const types = config.map.group.values;\n\n    if (isOthers) { return true; }\n\n    switch(group.type) {\n\n      case types.STATUS:\n        return true;\n    }\n\n    return true;\n  }\n\n  // experimental\n  delete(id: TAtlassianIssueId, webhook?: boolean) {\n    let index = this.findIndex(id);\n\n    if (index > - 1) {\n      this._data.list.splice(index, 1);\n      this._observables.list.next(this._data.list);\n    }\n  }\n\n  watch(issue: IIssue): Observable<IAtlassianIssue> {\n    const observable =\n      // POST '/issue/:id/watchers'\n      this.http.post(this.envAtlassianService.options.api.base + 'issue/' + issue.id + '/watchers', this.envAtlassianService.options['user']);\n\n    return this._update(issue, observable);\n  }\n\n  unwatch(issue: IIssue): Observable<IAtlassianIssue> {\n    const observable =\n      // POST '/issue/:id/unwatchers'\n      this.http.delete(this.envAtlassianService.options.api.base + 'issue/' + issue.id + '/watchers?username=' + this.envAtlassianService.options['user']);\n\n    return this._update(issue, observable);\n  }\n\n  url(issue: IIssue): string {\n    return this.envAtlassianService.url('/browse/' + issue.key);\n  }\n\n  createDialog() {\n    /*\n    const { TYPE } = config.map.group.values;\n\n    let issueTypeName = (group && group.type == TYPE) ? group.id : 'Story';\n    let issueTypeId = this.envAtlassianService.data.issueTypes.find(\n      itemIssueType => itemIssueType.name == issueTypeName\n    )['id'];\n    */\n\n    // OBSOLETED / let issueType = this.envAtlassianService.data.issueTypes.find(item => item.name == type);\n\n    if (this.envAtlassianService.isAtlassian) { // OBSOLETED: this.envAtlassianService.isAtlassianCloud\n      this.envAtlassianService.JIRA.openCreateIssueDialog((issues: IAtlassianIssue[]) => {\n\n        issues.forEach((atlassianIssue: IAtlassianIssue) => {\n          let issue = this.format(atlassianIssue, this._data.list); // TODO: maybe to drop it. check later\n\n          this.retrive(issue.id); // ...retrive to refresh map\n        });\n      }, {\n        // OBSOLETED / pid: parentIssue ? parentIssue.fields.project.id : null,\n\n      });\n    }\n\n    if (this.envAtlassianService.isAtlassianServer) {\n      // JIRA.Forms.createCreateIssueForm({\n      //   issueType: issueType,\n      //   pid: null,\n      //   parentIssueId: null,\n      // }).asDialog({\n      //   trigger: document.createElement('a'), // Because we're showing it manually, we don't want to have the dialog re-show for a different dialog.\n      //   id: 'issue-create-dialog',\n      //   windowTitle: AJS.I18n.getText('admin.issue.operations.create'),\n      // }).show();\n    }\n  }\n\n  issueDetailsDialog(issue: IAtlassianIssue) {\n    if (this.envAtlassianService.isAtlassianCloud) {\n      Object.assign(document.createElement('a'), { target: '_blank', href: this.envAtlassianService.url(\n        '/browse/' + issue.key\n      )}).click();\n    }\n\n    if (this.envAtlassianService.isAtlassianServer) {\n      this.envAtlassianService.JIRA.openEditIssueDialog(null, {issueId: issue.id});\n    }\n  }\n\n  editDialog(issue: IAtlassianIssue) {\n    if (this.envAtlassianService.isAtlassianCloud) {\n      Object.assign(document.createElement('a'), { target: '_blank', href: this.envAtlassianService.url(\n        '/secure/EditIssue!default.jspa?key=' + issue.key\n      )}).click();\n\n    }\n\n    if (this.envAtlassianService.isAtlassianServer) {\n      this.envAtlassianService.JIRA.openEditIssueDialog(null, {issueId: issue.id});\n    }\n  }\n\n  assignDialog(issue: IAtlassianIssue) {\n    if (this.envAtlassianService.isAtlassianCloud) {\n      window.open(this.envAtlassianService.url(\n        '/secure/AssignIssue!default.jspa?key=' + issue.key\n      ), '_blank', this.envAtlassianService.options.dialog).focus();\n    }\n\n    if (this.envAtlassianService.isAtlassianServer) {\n      this.envAtlassianService.JIRA.openEditIssueDialog(null, {issueId: issue.id});\n    }\n  }\n\n  commentDialog(issue: IAtlassianIssue) {\n    if (this.envAtlassianService.isAtlassianCloud) {\n      window.open(this.envAtlassianService.url(\n        '/secure/AddComment!default.jspa?key=' + issue.key\n      ), '_blank', this.envAtlassianService.options.dialog).focus();\n    }\n\n    if (this.envAtlassianService.isAtlassianServer) {\n      this.envAtlassianService.JIRA.openAddCommentIssueDialog(null, {issueId: issue.id});\n    }\n  }\n\n  viewVotersDialog(issue: IAtlassianIssue) {\n    if (this.envAtlassianService.isAtlassianCloud || this.envAtlassianService.isAtlassianServer) {\n      window.open(this.envAtlassianService.url(\n        '/secure/ViewVoters!default.jspa?key=' + issue.key\n      ), '_blank', this.envAtlassianService.options.dialog).focus();\n    }\n  }\n\n  attachFileDialog(issue: IAtlassianIssue) {\n    if (this.envAtlassianService.isAtlassianCloud || this.envAtlassianService.isAtlassianServer) {\n      window.open(this.envAtlassianService.url(\n        '/secure/AttachFile!default.jspa?key=' + issue.key\n      ), '_blank', this.envAtlassianService.options.dialog).focus();\n    }\n  }\n\n  manageWatchersDialog(issue: IAtlassianIssue) {\n    if (this.envAtlassianService.isAtlassianCloud || this.envAtlassianService.isAtlassianServer) {\n      window.open(this.envAtlassianService.url(\n        '/secure/ManageWatchers!default.jspa?key=' + issue.key\n      ), '_blank', this.envAtlassianService.options.dialog).focus();\n    }\n  }\n\n  moveIssueDialog(issue: IAtlassianIssue) {\n    if (this.envAtlassianService.isAtlassianCloud || this.envAtlassianService.isAtlassianServer) {\n      window.open(this.envAtlassianService.url(\n        '/secure/MoveIssue!default.jspa?key=' + issue.key\n      ), '_blank', this.envAtlassianService.options.dialog).focus();\n    }\n  }\n\n  cloneIssueDetailsDialog(issue: IAtlassianIssue) {\n    if (this.envAtlassianService.isAtlassianCloud || this.envAtlassianService.isAtlassianServer) {\n      window.open(this.envAtlassianService.url(\n        '/secure/CloneIssueDetails!default.jspa?key=' + issue.key\n      ), '_blank', this.envAtlassianService.options.dialog).focus();\n    }\n  }\n\n  linkJiraIssueDialog(issue: IAtlassianIssue) {\n    if (this.envAtlassianService.isAtlassianCloud || this.envAtlassianService.isAtlassianServer) {\n      window.open(this.envAtlassianService.url(\n        '/secure/LinkJiraIssue!default.jspa?key=' + issue.key\n      ), '_blank', this.envAtlassianService.options.dialog).focus();\n    }\n  }\n\n  editLabelsDialog(issue: IAtlassianIssue) {\n    if (this.envAtlassianService.isAtlassianCloud || this.envAtlassianService.isAtlassianServer) {\n      window.open(this.envAtlassianService.url(\n        '/secure/EditLabels!default.jspa?key=' + issue.key\n      ), '_blank', this.envAtlassianService.options.dialog).focus();\n    }\n  }\n\n  createSubissueDialog(issue: IAtlassianIssue) {\n    if (this.envAtlassianService.isAtlassianCloud) {\n      window.open(this.envAtlassianService.url(\n        '/secure/CreateSubTaskIssue!default.jspa?parentIssueId=' + issue.id\n      ), '_blank', this.envAtlassianService.options.dialog).focus();\n    }\n\n    if (this.envAtlassianService.isAtlassianServer) {\n      this.envAtlassianService.JIRA.openCreateSubIssueDialog(null, {issueId: issue.id});\n    }\n  }\n\n  // exprimental / process retrived or updated issue\n  _view(data: IAtlassianIssue, webhook?: boolean) {\n    let list = this._data.list;\n    if (!list) { return; }\n\n    // format issue\n    let issue: IIssue = this.find(data.id);\n    let issueData = this.format(data, list);\n\n    issueData.state = issue ? issue.state : issueData.state;\n    issueData.state.updated = true;\n\n    // update list\n    issue ? this.assign(issue, issueData) : list.push(issueData);\n    // OBSOLETED / mistakenly calls map.group / this._observables.list.next(list);\n\n    // update view object and emit item\n    this._data.view = issue || issueData;\n    //console.log('XXX _view: ', [this._data.view]);\n    this.createHierarchy([this._data.view]);\n    //this.createLinksHierarchy(this._data.list);\n    //this.createSubTaskHierarchy(this._data.list);\n\n    if(this.envAtlassianService.isAtlassianServer)//!!! temporary should be changed after webhooks are available for JIRA Server as well\n    {\n       this._observables.webhook.next(this._data.view);\n        this._observables.view.next(this._data.view);\n    }\n    else\n      webhook ? this._observables.webhook.next(this._data.view) : this._observables.view.next(this._data.view);\n  }\n\n  // experimental / routine to cascade observers for update/retrive\n  _update(issue: IIssue, observable: Observable<void>): ReplaySubject<IAtlassianIssue> { // TODO: Observable<IAtlassianIssue>\n    const retriveObservable: ReplaySubject<IAtlassianIssue> = new ReplaySubject(1);\n\n    observable.subscribe((data: any) => {\n      issue = issue ? issue : data;\n\n      this.retrive(issue.id).subscribe(\n        (atlassianIssue: IAtlassianIssue) => { retriveObservable.next(atlassianIssue); },\n        () => { retriveObservable.next(issue.atlassian); },\n        () => {\n          retriveObservable.complete();\n        }\n      );\n    },\n\n    (err: IBackendAtlassianError) => {\n      // error message\n      this.notificationService.createFromBackendError(err);\n\n      // experimental (pass no errors upward)\n      //retriveObservable.next(issue.atlassian);\n      retriveObservable.error(err);\n      retriveObservable.complete();\n    });\n\n    return retriveObservable;\n  }\n\n}\n","import { Injectable, } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\nimport { ReplaySubject } from 'rxjs/ReplaySubject';\n\nimport { TGroupId, IGroup } from '../interfaces/map.interface';\nimport { TMicrosoftUserId, IMicrosoftUser } from '../interfaces/user.microsoft.interface';\nimport { TMicrosoftIssueId, TMicrosoftIssueIndex, IMicrosoftIssue, IMicrosoftIssueRelation } from '../interfaces/issue.microsoft.interface';\nimport { IBackendMicrosoftError, IBackendMicrosoftIssueQuery, IBackendMicrosoftIssueList } from '../interfaces/backend.microsoft.interface';\nimport { TIssueId, TIssueIndex, IIssue } from '../interfaces/issue.interface';\n\nimport config from '../config';\nimport {\n  AppHttp,\n  AppSocket,\n  DataService,\n  NotificationService,\n  EnvMicrosoftService,\n  UserMicrosoftService,\n} from './index';\n\n@Injectable()\nexport class IssueMicrosoftService extends DataService { // aka WorkItem\n\n  protected _paramsQuery = {\n    query:\n      'Select [System.Id], [System.Title], [System.State] From WorkItems ' +\n      'Where [State] <> \"Closed\" AND [State] <> \"Removed\" ' +\n      'order by [Microsoft.VSTS.Common.StackRank] asc', // OBSOLETD: , [System.CreatedDate] desc',\n  };\n\n  protected _params = {\n    '$expand': 'all',\n\n    // RESERVED\n    // fields: ''\n    //   + 'System.Title,System.Description,System.WorkItemType,System.State,'\n    //   + 'System.TeamProject,System.CreatedBy,System.AssignedTo,System.RelatedLinks,System.Links.LinkType,System.RelatedLinkCount,'\n    //   + 'Microsoft.VSTS.Common.StackRank,Microsoft.VSTS.Scheduling.StoryPoints,Microsoft.VSTS.Scheduling.CompletedWork,Microsoft.VSTS.Scheduling.RemainingWork,Microsoft.VSTS.Scheduling.RemainingWork,Microsoft.VSTS.Common.Priority,'\n    //   + ''\n    //   + 'System.History,System.NodeType,System.Reason,System.Tags,System.TeamProject,System.TFServer,System.WorkItemForm' // experimental\n    //   + '',\n  };\n\n  constructor(\n    protected http: AppHttp,\n    protected socket: AppSocket,\n    protected notificationService: NotificationService,\n    protected envMicrosoftService: EnvMicrosoftService,\n    protected userMicrosoftService: UserMicrosoftService,\n  ) {\n    super();\n    if (!envMicrosoftService.isMicrosoft) { return; }\n\n    // init search params\n    let customFields = this.envMicrosoftService.data.fields;\n\n    // RESERVED\n    // this._params.fields = this._params.fields.replace('Microsoft.VSTS.Common.StackRank', customFields['Order']);\n    // this._params.fields = this._params.fields.replace('Microsoft.VSTS.Scheduling.StoryPoints', customFields['Effort']);\n    // this._params.fields = this._params.fields.replace('Microsoft.VSTS.Scheduling.RemainingWork', customFields['RemainingWork']);\n    // this._paramsQuery.query = this._paramsQuery.query.replace('Microsoft.VSTS.Common.StackRank', customFields['Order']);\n    // this._paramsQuery.query = this._paramsQuery.query.replace('Microsoft.VSTS.Scheduling.StoryPoints', customFields['Effort']);\n    // this._paramsQuery.query = this._paramsQuery.query.replace('Microsoft.VSTS.Scheduling.RemainingWork', customFields['RemainingWork']);\n\n    // this._params['jql'] = (this.envService.data.filter || {})['jql'] || ''; // RESERVED / + 'ORDER BY Rank';\n    // this._params['fields'] = [].concat(\n    //   config.issue.fields,\n    //   envService.getFieldByName('Sprint').id,\n    //   envService.getFieldByName('Story Points').id,\n    //   envService.getFieldByName('Rank').id,\n    //   envService.getFieldByName('Epic Link').id,\n    // ).join(',');\n\n    // // init sockets\n    // if (this.envService.settings.update) {\n    //   this.socket.on('jira:issue_created').subscribe((data: IIssue) => data && this.isUnlocked(data.id) && this.retrive(data.id));\n    //   this.socket.on('jira:issue_updated').subscribe((data: IIssue) => data && this.isUnlocked(data.id) && this.retrive(data.id));\n    //   this.socket.on('jira:issue_deleted').subscribe((data: IIssue) => data && this.isUnlocked(data.id) && this.delete(data.id));\n    //   this.socket.on('remote_issue_link_aggregate_cleared_event').subscribe((data: IIssue) => data && this.isUnlocked(data.id) && this.retrive(data.id)); // is it ok?\n    // }\n  }\n\n  format(microsoftIssue: IMicrosoftIssue, microsoftList: IMicrosoftIssue[] = []): IIssue {\n    const { EPIC } = config.map.group.values;\n\n    let fields = microsoftIssue.fields;\n    let relations = microsoftIssue.relations || [];\n    let customFields = this.envMicrosoftService.data.fields;\n\n    let type = this.envMicrosoftService.data.issueTypes[microsoftIssue.fields['System.WorkItemType']];\n    let reporter = fields['System.CreatedBy'] ? this.userMicrosoftService.format(this._findUser(fields['System.CreatedBy'])): null;\n    let assignee = fields['System.AssignedTo'] ? this.userMicrosoftService.format(this._findUser(fields['System.AssignedTo'])) : null;\n\n    let links = relations.reduce((output: any, itemRelation: IMicrosoftIssueRelation) => {\n      let microsoftIssueRelationId = this._desctructIssueLink(itemRelation.url);\n      let microsoftIssueRelation: IMicrosoftIssue = <any>microsoftList.find(itemList => itemList.id == microsoftIssueRelationId) || {};\n\n      let link = {\n        id: microsoftIssueRelation['id'],\n        key: microsoftIssueRelation.fields['System.Title'],\n        name: microsoftIssueRelation.fields['System.Title'],\n      }\n\n      switch(itemRelation.rel) {\n        case 'System.LinkTypes.Hierarchy-Reverse':\n          output['parent'] = link; // aka 'parent' // RESERVED: type == FEATURE ? EPIC : FEATURE\n          break;\n\n        case 'System.LinkTypes.Hierarchy-Forward':\n          output['child'] = (output['child'] || []).concat(link);\n          break;\n\n        case 'System.LinkTypes.Dependency-Forward':\n          // pass\n          break;\n\n        case 'System.LinkTypes.Dependency-Reverse':\n          // pass\n          break;\n\n        case 'System.LinkTypes.Related':\n          // pass\n          break;\n\n        case 'System.LinkTypes.AttachedFile':\n          // pass\n          break;\n\n        case 'System.LinkTypes.Hyperlink':\n          // pass\n          break;\n\n        case 'System.LinkTypes.TestedBy-Forward':\n          // pass\n          break;\n\n        case 'System.LinkTypes.TestedBy-Reverse':\n          // pass\n          break;\n      }\n\n      return output;\n    }, {});\n\n    fields['Order'] = fields[customFields['Order'] || 'Microsoft.VSTS.Common.StackRank'];\n    fields['Effort'] = fields[customFields['Effort'] || 'Microsoft.VSTS.Scheduling.StoryPoints'] || 0;\n    fields['Activity'] = fields[customFields['Activity'] || 'Microsoft.VSTS.Common.Activity'];\n    fields['RemainingWork'] = fields[customFields['RemainingWork'] || 'Microsoft.VSTS.Scheduling.RemainingWork'] || 0;\n    fields['CompletedWork'] = fields['Microsoft.VSTS.Scheduling.CompletedWork'] || 0; // experimental\n\n    let issue: IIssue = <any>{\n      id: microsoftIssue.id,\n      key: fields['System.Title'], // microsoftIssue.id, // \"title\" or \"id\"\n      name: fields['System.Title'],\n      description: fields['System.Description'],\n\n      type: {\n        id: type.name,\n        name: type.name,\n        iconClass: type.iconClass,\n        iconStyle: type.iconStyle,\n      },\n\n      priority: {\n        id: fields['Microsoft.VSTS.Common.Priority'],\n        name: fields['Microsoft.VSTS.Common.Priority'],\n        // iconUrl: '',\n      },\n\n      status: {\n        id: microsoftIssue.fields['System.State'],\n        name: microsoftIssue.fields['System.State'],\n        iconUrl: '',\n      },\n\n      points: fields['Effort'],\n      progress: fields['RemainingWork'] / (fields['CompletedWork'] + fields['RemainingWork'] || 1),\n\n      reporter: reporter && {\n        id: reporter.id,\n        key: reporter.key,\n        name: reporter.name,\n        avatarUrl: reporter.avatarUrl,\n      },\n\n      assignee: assignee && {\n        id: reporter.id,\n        key: reporter.key,\n        name: reporter.name,\n        avatarUrl: assignee.avatarUrl,\n      },\n\n      // experimental\n      links: links,\n\n      state: { // to store \"state\" values\n        rank: microsoftList.findIndex(item => item.id == microsoftIssue.id), // temporal\n        locks: 0,\n      },\n    };\n\n    issue.microsoft = microsoftIssue;\n    return issue;\n  }\n\n  find(id: TMicrosoftIssueId): IIssue {\n    return (this._data.list || []).find(item => item.id == id);\n  }\n\n  findIndex(id: TMicrosoftIssueId): number {\n    return (this._data.list || []).findIndex(item => item.id == id);\n  }\n\n  isLocked(id: TMicrosoftIssueId): boolean {\n    let issue = this.find(id);\n    return issue ? issue.state.locks > 0 : false;\n  }\n\n  isUnlocked(id: TMicrosoftIssueId): boolean {\n    let issue = this.find(id);\n    return issue ? issue.state.locks == 0 : true;\n  }\n\n  // experimental\n  isEpic(id: TMicrosoftIssueId): boolean {\n    let issue = this.find(id);\n    return issue.type.name == 'Epic';\n  }\n\n  // experimental\n  isFeature(id: TMicrosoftIssueId): boolean {\n    let issue = this.find(id);\n    return issue.type.name == 'Feature';\n  }\n\n  list(params?: any): Observable<IBackendMicrosoftIssueList> {\n    const listObservable: ReplaySubject<IBackendMicrosoftIssueList>  = new ReplaySubject(1);\n\n    // POST '.../wiql'\n    const observable = this.http.post(this.envMicrosoftService.options.api.base + 'wit/wiql', this._paramsQuery);\n\n    observable.subscribe(\n      (dataQuery: IBackendMicrosoftIssueQuery) => { // pre-list\n        let issueIds = dataQuery.workItems.map(item => item.id).splice(0, config.map.max || 1000);\n        let list: IMicrosoftIssue[] = [];\n\n        // load by chunks (cause of the api limit)\n        while (issueIds.length) {\n          let paramIds = issueIds.splice(0, 100);\n          let paramsList = jQuery.extend(true, {ids: paramIds}, this._params, params);\n\n          // GET '.../workitems'\n          this.http.get(this.envMicrosoftService.options.api.base + 'wit/workitems', paramsList).subscribe(\n            (data: IBackendMicrosoftIssueList) => { // list\n              list = list.concat(data.value);\n\n              if (dataQuery.workItems.length == list.length) {\n                // sort issues\n                let indexIds = dataQuery.workItems.reduce(\n                  (output: any, item: IMicrosoftIssue, index: number) => {\n                    output[item.id] = index;\n                    return output;\n                  },\n                {});\n\n                list = list.sort((a: IMicrosoftIssue, b: IMicrosoftIssue) =>\n                  indexIds[a.id] > indexIds[b.id] ? 1 : -1\n                );\n\n                // store issues\n                this._data.list = list.map(item => this.format(item, list));\n                this._observables.list.next(this._data.list);\n\n                console.log('!!!LIST', this._data.list);\n                listObservable.next(this._data.list);\n                listObservable.complete();\n              }\n            });\n        }\n      },\n\n      (err: IBackendMicrosoftError) => {\n        // error message\n        this.notificationService.createFromBackendError(err);\n\n        // experimental (pass no errors upward)\n        listObservable.complete();\n      }\n\n    );\n\n    return listObservable;\n  }\n\n  retrive(id: TMicrosoftIssueId): Observable<IMicrosoftIssue> {\n    let issue = this.find(id);\n    issue && (issue.state.updated = false); // experimental\n\n    // GET '.../workitems/:id'\n    const observable = this.http.get(this.envMicrosoftService.options.api.base + 'wit/workitems/' + id, {\n      // fields: this._params.fields,\n      expand: 'all' // 'transitions'\n    });\n\n    observable.subscribe(\n      (data: IMicrosoftIssue) => {\n        this._view(data);\n      }\n    );\n\n    return observable;\n  }\n\n  update(issue: IIssue, data: any): Observable<IMicrosoftIssue> {\n    // RESERVED / if (!issue.id) return this.create(Object.assign({}, issue, data)); // dirty?...\n    const observable =\n      // PATCH '.../workitems/:id'\n      this.http.patch(this.envMicrosoftService.options.api.base + 'wit/workitems/' + issue.id, data);\n\n      observable.subscribe(\n        (data: IMicrosoftIssue) => {\n          this._view(data);\n        },\n        (err: IBackendMicrosoftError) => {\n          // error message\n          this.notificationService.createFromBackendError(err);\n        }\n      );\n\n    return observable;\n  }\n\n  updateDescription(issue: IIssue, description: string): Observable<IMicrosoftIssue> {\n    return this.update(issue, [\n      {\n        op: 'replace',\n        path: '/fields/System.Description',\n        value: description,\n      }\n    ]);\n  }\n\n  // experimental\n  updateRank(issue: IIssue, issueBefore: IIssue, issueAfter: IIssue): Observable<IMicrosoftIssue> {\n    let issueBeforeRank = issueBefore ? issueBefore.microsoft.fields['Order'] : undefined;\n    let issueAfterRank = issueAfter ? issueAfter.microsoft.fields['Order'] : undefined;\n    let step = 1000 * 1000 * 1000;\n\n    // normalize ranks\n    if (issueBeforeRank == undefined && issueAfterRank == undefined) {\n      issueBeforeRank = step\n      issueAfterRank = step * 3;\n\n    } else {\n      issueBeforeRank = issueBeforeRank == undefined ? issueAfterRank - issueAfterRank / this._data.list.length : issueBeforeRank;\n      issueAfterRank = issueAfterRank == undefined ? issueBeforeRank + step * 2 : issueAfterRank;\n    }\n\n    let data = [{\n      op: 'replace',\n      path: '/fields/' + this.envMicrosoftService.data.fields['Order'],\n      value: Math.round((issueAfterRank - issueBeforeRank) / 2), // poor\n    }];\n\n    return this.update(issue, data);\n\n    // OBSOLETED\n    // let data = {\n    //   ParentId: null,\n    //   IterationPath: issue.microsoft.fields['System.IterationPath'],\n    //   Ids: [issue.id],\n    //   PreviousId: issueAfter  ? issueAfter.id : undefined,\n    //   NextId: issueBefore ? issueBefore.id : undefined,\n    // };\n\n    // OBSOLETED\n    // experimental / non-documented endpoint\n    // POST '/_ReorderWorkItems/Reorder'\n    //const observable = this.http.post('https://sigent.visualstudio.com/35377537-3a85-4777-ac70-2d8af5d90e9d/_api/' + '_ReorderWorkItems/Reorder?__v=5', data);\n  }\n\n  // experimental\n  updateRelation(issue: IIssue, relation: string, relationUrl: string): Observable<IMicrosoftIssue> {\n\n    const updateRemoveObservable: ReplaySubject<IMicrosoftIssue> = new ReplaySubject(1);\n    const updateAddObservable: ReplaySubject<IMicrosoftIssue> = new ReplaySubject(1);\n\n    let relationIndex = (issue.microsoft.relations || []).findIndex(\n      (itemRelation: IMicrosoftIssueRelation) => itemRelation.rel == relation\n    );\n\n    // add relation\n    updateRemoveObservable.subscribe(\n      (data: IMicrosoftIssue) => {\n        if (relationUrl) {\n          let data = {\n            op: 'add',\n            path: '/relations/-',\n            value: {\n              rel: relation,\n              url: relationUrl,\n            },\n          }\n\n          this.update(issue, [data]).subscribe(\n            (data: IMicrosoftIssue) => {\n              updateAddObservable.next(data);\n              updateAddObservable.complete();\n            },\n          );\n\n        } else {\n          updateAddObservable.next(data);\n          updateAddObservable.complete();\n        }\n      },\n    );\n\n    // remove relation\n    if (relationIndex > -1) {\n      let data = {\n        op: 'remove',\n        path: '/relations/' + relationIndex,\n        value: null,\n      }\n\n      this.update(issue, [data]).subscribe(() => {\n        updateRemoveObservable.next(issue.microsoft);\n      });\n\n    } else {\n      updateRemoveObservable.next(issue.microsoft);\n    }\n\n    return updateAddObservable;\n  }\n\n  updateGroup(issue: IIssue, group: IGroup, add: boolean = true): Observable<IMicrosoftIssue> {\n    const isOthers: boolean = group.id == config.map.group.extras.OTHERS;\n    const types = config.map.group.values;\n\n    let data: any = {\n      op: 'replace', // 'add'\n      value: add ? group.id : null,\n    };\n\n    // TODO: add isOthers support\n    switch(group.type) {\n\n      case types.POINTS:\n        data.path = '/fields/' + this.envMicrosoftService.data.fields['Effort'];\n        return this.update(issue, [data]);\n\n      // OBSOLETED\n      // case types.FEATURE:\n      //   return this.updateRelation(\n      //     issue,\n      //     'System.LinkTypes.Hierarchy-Reverse',\n      //     isOthers ? this._consctructIssueLink(group.id) : null,\n      //   );\n\n      // TODO: add \"feature\" support\n      case types.EPIC:\n        return this.updateRelation(\n          issue,\n          'System.LinkTypes.Hierarchy-Reverse',\n          isOthers ? this._consctructIssueLink(group.id) : null,\n        );\n\n      case types.STATUS:\n        data.path = '/fields/System.State';\n        return this.update(issue, [data]);\n\n      case types.TYPE:\n        data.path = '/fields/System.WorkItemType';\n        return this.update(issue, [data]);\n\n      case types.PRIORITY:\n        data.path = '/fields/Microsoft.VSTS.Common.Priority';\n        return this.update(issue, [data]);\n\n      case types.ASSIGNEE:\n        data.value = isOthers ? '' : issue.microsoft.fields['System.AssignedTo'];\n        data.path = '/fields/System.AssignedTo';\n        return this.update(issue, [data]);\n\n      case types.REPORTER:\n        data.value = isOthers ? '' : issue.microsoft.fields['System.CreatedBy'];\n        data.path = '/fields/System.CreatedBy';\n        return this.update(issue, [data]);\n    }\n\n    return this.update(issue, data);\n  }\n\n  isUpdateGroup(issue: IIssue, group: IGroup): boolean {\n    const isOthers: boolean = group.id == config.map.group.extras.OTHERS;\n    const types = config.map.group.values;\n\n    if (isOthers) { return true; } // yeah, always good\n\n    switch(group.type) {\n\n      case types.STATUS:\n        let issueTypes = this.envMicrosoftService.data.issueTypes;\n        let transitions = issueTypes[issue.type.id].transitions[issue.status.id];\n        return !!transitions.find(item => item.to == group.id);\n    }\n\n    return true;\n  }\n\n  url(issue: IIssue): string {\n    return this.envMicrosoftService.urlProject('_workitems/?id=' + issue.id);\n  }\n\n  createUrl(group?: IGroup) {\n    const { TYPE } = config.map.group.values;\n    let params = ''\n      + '&witd=' + (group && group.type == TYPE ?  + group.id : 'Issue')\n      + ''\n    ;\n\n    return this.envMicrosoftService.urlProject('_workitems?_a=new' + params);\n  }\n\n  createDialog(group?: IGroup, data?: any) {\n    const { TYPE } = config.map.group.values;\n    let type = null, fields = Object.assign({}, data);\n\n    switch (group.type) {\n      case TYPE:\n        type = group.id;\n        break;\n\n      // TODO: add more cases\n    }\n\n    this.envMicrosoftService.VSS.require(['TFS/WorkItemTracking/Services'], workItemServices => {\n      workItemServices.WorkItemFormNavigationService.getService().then(workItemNavSvc => {\n        workItemNavSvc.openNewWorkItem(type, fields);\n      });\n    });\n  }\n\n  // RESERVED\n  // editUrl(group?: IGroup) {\n  //   return this.envMicrosoftService.urlProject('_workitems?_a=edit&id=' + issue.id);\n  // }\n\n  editDialog(issue: IIssue) {\n    this.envMicrosoftService.VSS.require(['TFS/WorkItemTracking/Services'], workItemServices => {\n      workItemServices.WorkItemFormNavigationService.getService().then(workItemNavSvc => {\n        workItemNavSvc.openWorkItem(issue.id);\n      });\n    });\n  }\n\n  // exprimental / process retrived or updated issue\n  _view(data: IMicrosoftIssue) {\n    let list = this._data.list;\n    if (!list) { return; }\n\n    // format issue\n    let microsoftList = list.map((item: IIssue) => item.microsoft);\n    let issue: IIssue = this.find(data.id);\n    let issueData = this.format(data, microsoftList);\n\n    issueData.state = issue ? issue.state : issueData.state;\n    issueData.state.updated = true;\n\n    // update list\n    issue ? this.assign(issue, issueData) : list.push(issueData);\n    // OBSOLETED / mistakenly calls map.group / this._observables.list.next(list);\n\n    // update view object and emit item\n    this._data.view = issue;\n    this._observables.view.next(issue);\n  }\n\n  // experimental\n  _findUser(uniqueName: string): IMicrosoftUser {\n    uniqueName = uniqueName.match(/([^<]+)\\s<(.*)>/)[2]; // parse \"Name <email>\" string\n    return <any>this.envMicrosoftService.data.users[uniqueName];\n  }\n\n  _consctructIssueLink(id: TMicrosoftIssueId): string {\n    return id ? this.envMicrosoftService.options.api.base + 'wit/workItems/' + id : null;\n  }\n\n  _desctructIssueLink(url: string): TMicrosoftIssueId {\n    return <any>url.split(/[\\/]+/).pop();\n  }\n\n}\n","export * from './utils/modal.component';\nexport * from './utils/form-typeahead.component';\n\nexport * from './header.component';\nexport * from './header-map.component';\nexport * from './header-configuration.component';\nexport * from './notification-list.component';\nexport * from './notification.component';\nexport * from './help-modal.component';\n\nexport * from './default.component';\nexport * from './license.component';\nexport * from './upgrade.atlassian.component';\nexport * from './configuration-migration.atlassian.component';\nexport * from './configuration-settings.atlassian.component';\n\nexport * from './map.component';\nexport * from './map-filter.component';\nexport * from './map-grid.component';\nexport * from './map-grid-issue.component';\nexport * from './map-grid-issue-actions.component';\nexport * from './map-grid-issue-properties.component';\nexport * from './map-grid-issue-subissues.component';\nexport * from './map-grid-issue-group.atlassian.component';\nexport * from './map-grid-issue-group.microsoft.component';\nexport * from './map-grid-group.component';\nexport * from './map-tree.component';\n\n//export * from './issue-subissues.component';\n//export * from './issue-create.component';\n//export * from './issue-assign.component';\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { FormArray, FormControl } from '@angular/forms';\n\n\nimport {\n  IssueService,\n} from '../services';\n\n@Component({\n  selector: 'help-modal',\n  template: `\n    <div modal style=\"display:block !important\" (cancel)=\"onCancel()\" class=\"modal \" id=\"issueProperiesModal\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n      <div class=\"modal-dialog modal-lg\" role=\"document\">\n        <div class=\"modal-content\">\n          <div class=\"modal-header\">\n            <h5 class=\"modal-title\">\n              <div class=\"product-logo\"> </div>\n              <!--\n              <img class=\"float-left mr-3\" style=\"width:30px\" src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMS4wLjIsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iRWJlbmVfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1Ni43IDU2LjciIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDU2LjcgNTYuNzsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6I0NEMTc0Qzt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTUzLjUsMEgzLjJDMS40LDAsMCwxLjQsMCwzLjJ2NTAuM2MwLDEuOCwxLjQsMy4yLDMuMiwzLjJIMjNoMzAuNWMxLjgsMCwzLjItMS40LDMuMi0zLjJ2LTUuMlYzLjINCglDNTYuNywxLjUsNTUuMywwLDUzLjUsMHogTTMwLjEsMy4yaDkuOGwwLDBsMCwwdjUuOWgtOS44bDAsMGwwLDBWMy4yeiBNMTYuOCwzLjJoOS44bDAsMGwwLDB2NS45aC05LjhsMCwwbDAsMFYzLjJ6IE0zLjYsMy4yaDkuOA0KCWwwLDBsMCwwdjUuOUgzLjZsMCwwbDAsMFYzLjJ6IE0zLjYsMTMuNGg0OS42bDAsMHYzMGgtNC45Yy0wLjItMC40LTAuNC0wLjgtMC42LTEuMmMtMS41LTMtMi40LTYuMi0zLjktOS4zDQoJYy0xLjQtMi45LTIuNy01LjYtNC45LTguMWMtMS4zLTEuNS0yLjItMi44LTQuMS0zLjZjLTAuOC0wLjMtNS41LTEuNi01LjUtMi4xYzEtMC43LDItMy4zLTAuMy0zLjNjLTAuOCwwLTAuNSwxLjItMS4zLDEuMw0KCWMtMC42LDAuMS0wLjQtMC44LTEtMS4yYy0wLjktMC43LTAuNSwxLTAuNiwxLjdjLTEuNi0wLjEtMS45LTIuMy0yLjksMC4zYy0wLjUtMC4yLTEuOC0yLTEuOS0yYy0wLjUsMC4yLDAuMywyLjItMC4zLDIuNQ0KCWMtMSwwLjYtMS4zLTEuNS0yLjEtMS4yYy0wLjEsMC4xLDAsMS4zLTAuMSwxLjRjLTAuMywwLjktMC44LDAuNi0xLjMsMS4zYy0wLjQsMC41LDAsMi44LDAuMiwzLjdjMC40LDEuNywwLjgsMC44LTAuNywyDQoJYy0xLDAuOC0yLjUsMi40LTIsMy44YzAuOC0wLjYsNS4xLTMuNyw2LjQtMi4zYy0wLjUsMC4yLTYuNSwyLjUtNS44LDMuNWMwLjIsMC4zLDEuMi0wLjEsMS40LTAuMWMxLjQtMC4zLDEuOS0xLjIsMy40LTAuNQ0KCWMxLjYsMC44LDAuNC0wLjIsMC43LDEuNmMwLjIsMSwwLjMsMiwxLDIuOGMxLjMsMS40LDEuNywwLjUsMS44LDIuNGMwLjEsMC44LDAuMiwxLjcsMC4yLDIuNGMwLjEsMS40LTAuNCwyLjctMC44LDRIMy44bDAsMFYxMy40DQoJSDMuNnogTTEzLjQsNTMuNkgzLjZsMCwwbDAsMHYtNS45aDkuOGwwLDBsMCwwVjUzLjZ6IE0yNi43LDUzLjZoLTkuOGwwLDBsMCwwdi01LjloNS45aDRsMCwwbDAsMEwyNi43LDUzLjZMMjYuNyw1My42eiBNMzkuOSw1My42DQoJaC05LjhsMCwwbDAsMHYtNS45aDkuOGwwLDBsMCwwVjUzLjZ6IE01My4yLDUzLjZoLTkuOGwwLDBsMCwwdi01LjloOS44bDAsMGwwLDBWNTMuNnogTTUzLjIsOS4xaC05LjhsMCwwbDAsMFYzLjJoOS44bDAsMGwwLDBWOS4xeg0KCSIvPg0KPC9zdmc+DQo=\" >\n              -->\n              How may we help you?\n            </h5>\n\n            <div class=\"mr-3\" style=\"margin-left: auto;\">\n            </div>\n\n            <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\" (click)=\"cancelEvent.emit()\">\n              <span aria-hidden=\"true\">&times;</span>\n            </button>\n          </div>\n          <div id=\"modal-body\">\n            <div style=\"margin:40px\" >\n               <dl>\n                  <dt><a href=\"//bauer-information-technology.com/user-manual-issue-organizer/\" target=\"_blank\">Read the User Guide</a></dt>\n                  <dd>Whether you’re building your first user story map or need to navigate a complex project, our User Guide is the perfect place to get started.</dd>\n                  <dt><a href=\"//community.atlassian.com/t5/tag/addon-jira.structure.issue.organizer/tg-p?style=all&amp;sort=likes\" target=\"_blank\" data-reactid=\"11\">Ask the community</a></dt>\n                  <dd>Have a burning question? Find the answer in the Bauer Agile User Story Map community.</dd>\n                  <dt><a href=\"//www.youtube.com/watch?v=DAOzs2oYHMA\" target=\"_blank\">Watch the video</a></dt>\n                  <dd>Watch our 50-second video to learn more about Agile User Story Map.</dd>\n                  <dt><a href=\"//marketplace.atlassian.com/apps/1212749/easy-issue-organizer-for-jira?hosting=cloud&tab=reviews\" target=\"_blank\">Write a review</a></dt>\n                  <dd>Loving your experience? Share your feedback with others on Atlassian Marketplace.</dd>\n               </dl>\n               <dl>\n                  <dt><a href=\"//bauer-it.atlassian.net/servicedesk/customer/portal/4/create/15\" target=\"_blank\">Submit a support request</a></dt>\n                  <dd>Encountered a feature that isn’t working as expected? Have an idea for an update? Let our team know.</dd>\n               </dl>\n            </div>          \n          \n          \n          </div>\n\n         \n\n          <div class=\"modal-footer\">\n            <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\" (click)=\"cancelEvent.emit()\">Cancel</button>\n            <!-- <button type=\"submit\" class=\"btn btn-primary\">Save</button> -->\n          </div>\n        </div>\n      </div>\n    </div>\n  `,\n})\nexport class HelpModalComponent implements OnInit {\n  \n  // RESERVED / @Input() form: FormArray;\n\n  // RESERVED / @Output('submit') submitEvent: EventEmitter<any> = new EventEmitter();\n  @Output('cancel') cancelEvent: EventEmitter<any> = new EventEmitter();\n  @Input() parent:any;\n  \n\n  constructor(\n   \n  ) {\n  }\n\n  ngOnInit() {\n    // init subissues (nested objects have no all the needed fields)\n    \n  }\n\n  // RESERVED\n  // onSubmit() {\n  //   this.submitEvent.emit(this.issue);\n  // }\n\n  onCancel() {\n    this.cancelEvent.emit();\n  }\n}\n\n","import { Component, OnInit, AfterViewInit, ElementRef, OnDestroy, HostListener, ViewChild, ViewContainerRef } from '@angular/core';\n//import { Router } from '@angular/router';\nimport { FormGroup, FormArray, FormControl } from '@angular/forms';\nimport { Subject }    from 'rxjs/Subject';\n\nimport { TGroupId, IGroup } from '../../base/interfaces/map.interface';\n\nimport { TreeGridComponent } from './treegrid.component';\n\nimport config from '../../base/config';\n\nimport {\n  AppSocket,\n  IssueAtlassianService,\n  IssueMicrosoftService,\n  IssueService,\n  MapService,\n  EnvService,\n  NotificationService\n} from '../../base/services';\n\n@Component({\n  selector: 'map',\n  providers: [\n    AppSocket,\n    IssueAtlassianService,\n    IssueMicrosoftService,\n    IssueService,\n    MapService,\n  ],\n  template: `\n    <div #application  style=\"overflow:visible\">\n      <help-modal *ngIf=\"action.modal\" (cancel)=\"onModalCancel()\"></help-modal>\n      <bit-treegrid-header title=\"Board\" (button-select)=\"toolbarEvent.next($event)\" (searchValueChanged)=\"onSearchValueChanged($event)\" [action]=\"action\" #header></bit-treegrid-header>\n\n      \n      <bit-treegrid-toolbar *ngIf=\"action.toolbar\" (button-select)=\"toolbarEvent.next($event)\" (searchValueChanged)=\"onSearchValueChanged($event)\" #toolbar></bit-treegrid-toolbar>\n      \n      <!-- <bit-treegrid-filterbar (button-select)=\"toolbarEvent.next($event)\"></bit-treegrid-filterbar> -->\n      <bit-treegrid [preferences]=\"toolbarEvent\" [appRef]=\"applicationRef\" [appElemRef]=\"appElemRef\" (configChanged)=\"onConfigChanged($event)\" #bitGrid></bit-treegrid>\n      \n    </div>\n    \n  `,\n  styleUrls: ['./lidor/treegrid.page.css' ]\n})\nexport class TreeGridPageComponent implements OnInit, OnDestroy {\n  @ViewChild('application', {read: ViewContainerRef}) applicationRef: ViewContainerRef;\n  @ViewChild('application', {read: ElementRef}) appElemRef: ElementRef;\n\n  @ViewChild('header', {read: ElementRef}) headerElemRef: ElementRef;\n  @ViewChild('toolbar', {read: ElementRef}) toolbarElemRef: ElementRef;\n  @ViewChild('bitGrid', {read: ElementRef}) bitGridElemRef: ElementRef;\n  @ViewChild('bitGrid') gridComponent: TreeGridComponent;\n\n  config = config;\n  toolbarEvent:Subject<any> = new Subject();\n\n  private isLoading: boolean = true;\n  private width: number = 0;\n  private height: number = 0;\n\n  private headerHeight: number = 0;\n  private toolbarHeight: number = 0;\n  private gridHeight: number = 0;\n  private action: any = {modal:false,toolbar:false};\n\n  formOptions = new FormGroup({\n    expandedMap: new FormControl(true),\n    expandedIssue: new FormControl(true),\n  });\n\n  constructor(\n    private issues: IssueService,\n    private map: MapService,\n    private env: EnvService,\n    protected notificationService: NotificationService\n  ) {\n    // pass\n  }\n\n  ngOnInit() {\n    // load issues\n    this.issues.list();\n  }\n  \n  ngAfterViewInit() {\n    //this.resize(document.body.scrollWidth + 40, document.body.scrollHeight);\n    //this.resize_NEW(document.body.scrollWidth + 40, document.body.scrollHeight-20);\n    this.resize();\n  }\n\n  ngOnDestroy() {\n    // pqss\n  }\n\n  @HostListener('window:resize', ['$event'])\n  onResize(event) {\n    this.resize();\n  }\n\n  resize(width?, height?)\n  {\n    this.env.resize(width, height);\n  }\n\n  resize_NEW(width: number, height: number)\n  {\n    if (width > this.width || height > this.height) {\n      setTimeout(()=>{  \n        width = document.body.scrollWidth;\n        height = document.body.scrollHeight;\n        this.env.atlassian.AP.resize(width + 'px', height + 'px',);\n        this.height = -1;\n        this.width = -1;\n      }, 200);\n    }\n  }\n\n  onRenderingFinished(event){\n    this.resize();\n  }\n\n  onConfigChanged(e: any){\n    // pass\n  }\n\n  onSearchValueChanged(e: any){\n    if (this.gridComponent) {\n      this.gridComponent.filterBySearch(e.value);\n    }\n  }\n\n  onModalCancel() {\n    this.action.modal = false;\n  }\n}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { IntegralUIAnchorStyle, IntegralUIBaseComponent, IntegralUIDraggable, IntegralUIDragWindow, IntegralUIFocus, IntegralUIHeaderItem, IntegralUIItem, IntegralUIObjectState, IntegralUIScrollMode, IntegralUISelectionMode, IntegralUITComponent, IntegralUITemplate, IntegralUITemplateOutlet, IntegralUIVisibility } from './components/integralui.core';\r\n\r\nimport { IntegralUICommonService } from './services/integralui.common.service';\r\nimport { IntegralUIDragDropService } from './services/integralui.dragdrop.service';\r\nimport { IntegralUIFilterService } from './services/integralui.filter.service';\r\n\r\n@NgModule({\r\n  \timports: [ CommonModule, FormsModule ],\r\n  \tdeclarations: [ \r\n        IntegralUIBaseComponent,\r\n        IntegralUIDraggable,\r\n        IntegralUIDragWindow,\r\n        IntegralUIFocus,\r\n  \t\t  IntegralUIHeaderItem, \r\n  \t\t  IntegralUIItem, \r\n        IntegralUITComponent,\r\n        IntegralUITemplate,\r\n        IntegralUITemplateOutlet\r\n  \t],\r\n  \texports: [\r\n        IntegralUIBaseComponent, \r\n        IntegralUIDraggable,\r\n        IntegralUIFocus, \r\n  \t\t  IntegralUIHeaderItem, \r\n  \t\t  IntegralUIItem, \r\n        IntegralUITemplate,\r\n        IntegralUITemplateOutlet\r\n  \t],\r\n    entryComponents: [ IntegralUIDragWindow, IntegralUITComponent ],\r\n    providers: [ IntegralUICommonService, IntegralUIDragDropService, IntegralUIFilterService ]\r\n})\r\nexport class IntegralUICoreModule { }\r\n","import { Injectable } from '@angular/core'\nimport { Observable } from 'rxjs/Observable';\nimport { of as observableOf } from 'rxjs/observable/of';\nimport { _throw as observableThrow } from 'rxjs/observable/throw';\n\n//@Andrej: please remove this dependency!\nimport { IntegralUISortOrder } from '../../assets/integralui/components/integralui.core';\n\nexport interface ILocalStorage {\n\tcolumns: Array<any>,\n\tcolumns2: Array<any>,\n\tcolumnOrder: Array<any>,\n\tcolumnOrder2: Array<any>,\n\texpandLevel: string,\n\texpandStatusList: Array<any>,\n\tgroups: Array<any>,\n\tgroups2: Array<any>,\n\tisGrouping: boolean,\n\tisRankButtonActive: boolean,\n\tlayout: string,\n    selectedRows: Array<any>,\n    sortColumnID: any,\n    sortColumnID2: any,\n    sortOrder: IntegralUISortOrder,\n    sortOrder2: IntegralUISortOrder\n}\n\n@Injectable()\nexport class LocalStorageService {\n\n    clearData(key: string): Observable<ILocalStorage> {\n        if (localStorage)\n            localStorage.removeItem(key);\n            \n        let data: ILocalStorage = {\n    \t    columns: [],\n    \t    columns2: [],\n    \t    columnOrder: [],\n    \t    columnOrder2: [],\n    \t    expandLevel: 'All',\n\t        expandStatusList: [],\n    \t    groups: [],\n    \t    groups2: [],\n    \t    isGrouping: true,\n    \t    isRankButtonActive: false,\n    \t    layout: 'single',\n    \t    selectedRows: [],\n    \t    sortColumnID: -1,\n    \t    sortColumnID2: -1,\n    \t    sortOrder: IntegralUISortOrder.None,\n    \t    sortOrder2: IntegralUISortOrder.None\n    \t}\n\n        return observableOf(data);\n    }\n    \n    setData(key: string, data: ILocalStorage): Observable<boolean> {\n        let retValue: boolean = false;\n        \n        if (localStorage){\n            localStorage.setItem(key, JSON.stringify(data));\n            retValue = true;\n        }\n        \n        return observableOf(retValue);\n    }\n  \n    getData(key: string): Observable<ILocalStorage> {\n        if (localStorage){\n            //let data: ILocalStorage = localStorage.getItem(key); //!!! @Andrej: cannot cast string to ILocalStorage\n            let data: any = localStorage.getItem(key);\n            \n            if (data != null){\n                try {\n                    data = JSON.parse(data);\n                }\n                catch (error){\n                    return observableThrow(new Error('Invalid data in localStorage.'));\n                }\n                \n                return observableOf(data);\n            }\n        }\n            \n        return this.clearData(key);\n    }\n\n}\n","import { Component, Input, Output, OnInit, OnDestroy, EventEmitter } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { IAtlassianIssue } from '../../base/interfaces/issue.atlassian.interface';\nimport { Observable } from 'rxjs/Observable';\n\nimport config from '../../base/config';\nimport {\n  EnvService,\n  IssueService,\n  NotificationService\n} from '../../base/services';\n\nimport { ILocalStorage, LocalStorageService } from '../../base/services/local.storage.service';\n\n@Component({\n  selector: 'bit-treegrid-toolbar',\n  template: `\n  <div class=\"row bit-treegrid-toolbar\">\n   <div class=\"btn-toolbar col-sm-10\" role=\"toolbar\">\n      <span>&#160;&#160;</span>\n      <div class=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n        <button (click)=\"onButtonSelect('treegrid-expand','All')\" type=\"button\" class=\"btn btn-sm btn-light clickable\" title=\"Fully expand tree grid\"><i class=\"fa fa-expand\" aria-hidden=\"true\"></i></button>\n        <button (click)=\"onButtonSelect('treegrid-collapse','All')\" type=\"button\" class=\"btn btn-sm btn-light clickable\" title=\"Collapse all sub-items\"><i class=\"fa fa-compress\" aria-hidden=\"true\"></i></button>\n        <button id=\"treegrid-expand\" type=\"button\" class=\"btn btn-sm btn-light dropdown-toggle clickable\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n        </button>\n        <div class=\"dropdown-menu\" aria-labelledby=\"treegrid-expand\">\n          <a (click)=\"onButtonSelect('treegrid-expand','level-1')\" class=\"dropdown-item clickable\" >Level 1</a>\n          <a (click)=\"onButtonSelect('treegrid-expand','level-2')\" class=\"dropdown-item clickable\" >Level 2</a>\n          <a (click)=\"onButtonSelect('treegrid-expand','level-3')\" class=\"dropdown-item clickable\" >Level 3</a>\n          <a (click)=\"onButtonSelect('treegrid-expand','all')\" class=\"dropdown-item clickable\" >All Levels</a>\n        </div>\n      </div>\n      <span>&#160;&#160;</span>\n      <div class=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n        <button (click)=\"onButtonSelect('move-treegrid-lane','Up')\" [disabled]=\"!rank\" [class.btn-success]=\"rank\"  type=\"button\" class=\"btn btn-sm btn-light disabled clickable\" title=\"Move selected items up\"><i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i></button>\n        <button (click)=\"onButtonSelect('move-treegrid-lane','Down')\" [disabled]=\"!rank\" type=\"button\" class=\"btn btn-sm btn-light disabled clickable\" title=\"Move selected items down\"><i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i></button>\n      </div>\n      <span>&#160;&#160;</span>\n      <div class=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n        <button (click)=\"onButtonSelect('selected-row-action','edit')\" type=\"button\" class=\"btn btn-sm btn-light clickable\" title=\"Edit focused element\"><i class=\"fa fa-pencil\" aria-hidden=\"true\"></i></button>\n        <button (click)=\"onButtonSelect('selected-row-action','cut')\" type=\"button\" class=\"btn btn-sm btn-light clickable\" title=\"Cut - mark selected items for moving to another place\"><i class=\"fa fa-cut\" aria-hidden=\"true\"></i></button>\n        <button (click)=\"onButtonSelect('selected-row-action','paste')\" type=\"button\" class=\"btn btn-sm btn-light clickable\" title=\"Paste copied or cut rows after the currently focused item\"><i class=\"fa fa-paste\" aria-hidden=\"true\"></i></button>\n        <button (click)=\"onButtonSelect('rank',!rank)\" [class.btn-success]=\"rank\" type=\"button\" class=\"btn btn-sm btn-light clickable\" title=\"Order items by rank field\"><i class=\"fa fa-sort-amount-asc\" aria-hidden=\"true\"></i></button>\n        <button (click)=\"onButtonSelect('pin',!pin)\"   [class.btn-success]=\"pin\" type=\"button\" class=\"btn btn-sm btn-light clickable\" title=\"Pin focused item to show only its sub-items and parent items\"><i class=\"fa bit-icon-pin\" aria-hidden=\"true\"></i></button>\n      </div>\n    </div>\n    <div class=\"btn-toolbar justify-content-end col-sm-2\" role=\"toolbar\">\n      <span>&#160;&#160;</span>\n      <div class=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n        <div class=\"dropdown\">\n          <button class=\"btn btn-sm btn-link clickabledropdown-toggle clickable\" type=\"button\" id=\"dropdownMenuButton\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n            <i class=\"fa fa-sign-out\" aria-hidden=\"true\"></i>&#160;Export\n          </button>\n          <div class=\"dropdown-menu dropdown-menu-right clickable\" aria-labelledby=\"dropdownMenuButton\">\n            <a class=\"dropdown-item clickable\" (click)=\"onButtonSelect('export','print')\"><i class=\"fa fa-print\" aria-hidden=\"true\"></i>&#160;Printable Page</a>\n            <a class=\"dropdown-item clickable\" (click)=\"onButtonSelect('export','excel')\"><i class=\"fa fa-file-excel-o\" aria-hidden=\"true\"></i>&#160;Export to Excel</a>\n          </div>\n        </div>\n      </div>\n      <span>&#160;&#160;</span>\n  </div>\n</div>\n  `,\n  styleUrls: ['./lidor/treegrid.component.css'],\n  providers: [LocalStorageService]\n})\nexport class TreeGridToolbarComponent {\n  @Input() formOptions: FormGroup;\n  @Input() formFilter: FormGroup;\n  @Output('button-select') butonSelect: EventEmitter<any> = new EventEmitter();\n  @Output() searchValueChanged: EventEmitter<any> = new EventEmitter();\n  @Input() action: any;\n   \n  config = config;\n  \n\n\n  private issuePropertiesModal: boolean = false;\n  private rank: boolean = false;\n  private pin: boolean = false;\n  private quickfilters: Array<string> = [];\n  \n  private storageKey: string = 'GRID_CONFIG';\n    \n  public searchValue: string = '';\n  \n  constructor(\n    private env: EnvService,\n    private issues: IssueService,\n    private storageService: LocalStorageService,\n    protected notificationService: NotificationService,\n  ) {\n  }\n  \n  onButtonSelect(key: String, value : any, data?: any, event?: Event) {\n    this.butonSelect.emit({event:event, value:value, key: key, data: data});\n    \n    if(key=='open-modal' && value =='issuePropertiesModal')\n      this.issuePropertiesModal = true;\n    if(key=='rank')\n      this.rank = value;\n    if(key=='pin'){\n      this.pin = value;\n      this.searchValue = '';\n    }\n    if(key=='quickfilter'){\n      let index = this.quickfilters.indexOf(value);\n      if (index > -1) \n        this.quickfilters.splice(index, 1);\n      else\n        this.quickfilters.push(value);\n      this.issues.toggleQuickFilter(value);\n    }\n    else if(key=='export')\n      this.notificationService.create('Feature will be available soon!', null, 'warning');\n  }\n  \n  onModalSubmit(event){\n    //console.log('!!!Modal has been submitted: ' , event);\n    this.issuePropertiesModal = false;\n  }\n  \n  isQuickFilterApplied(filterId):boolean\n  {\n    return this.quickfilters.indexOf(filterId)>-1?true:false;\n  }\n  \n  onModalCancel(event) {\n    //console.log('!!!Modal has been canceled: ' , event);\n    this.issuePropertiesModal = false;\n  }\n\n  onScroll(forward = true) {\n   \n  }\n  \n  ngAfterViewInit(){\n    let self = this;\n    \n    let retValue: Observable<ILocalStorage> = self.storageService.getData(self.storageKey);\n    retValue.subscribe(\n      (data) => {\n        self.rank = data.isRankButtonActive != undefined ? data.isRankButtonActive : false;\n      }\n    );\n                    \n  }\n  \n  onSearchChange(value: string){\n    this.searchValueChanged.emit({ value: value });\n  }\n\n}\n","import { Component, Input, Output, OnInit, OnDestroy, EventEmitter } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\n\nimport config from '../../base/config';\nimport {\n  EnvService,\n  NotificationService,\n  IssueService\n} from '../../base/services';\n\n@Component({\n  selector: 'bit-treegrid-header', // or 'layout-header'\n  template: `\n   \n      <div class=\"row bit-treegrid-header\">\n        <div id=\"bit-header\" class=\"col-sm-6\">\n          <div class=\"product-logo\"> </div>\n          <div style=\"\">\n            {{title}}\n            <span> Board / {{getBoard().name}}</span>\n          </div>\n          <h5 style=\"margin:5px 0 0 0;\">Easy Issue Organizer</h5>\n        </div>\n        <div class=\"col-sm-6\" role=\"toolbar\" >\n          <div class=\"btn-group\" style=\"float:right\">\n            <input placeholder=\"Search...\" [(ngModel)]=\"searchValue\" (input)=\"onSearchChange($event.target.value)\" type=\"text\" class=\"form-control form-control-sm\" title=\"Search Issues\" />\n            <div class=\"dropdown\" *ngIf=\"!envService.isAtlassianServer\" title=\"Filter Issues\">\n              <button class=\"btn btn-bit btn-sm btn-light dropdown-toggle clickable\" type=\"button\" id=\"dropdownMenuButton\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                <i class=\"fa fa-filter\" aria-hidden=\"true\"></i> Quick filters\n              </button>\n              <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton\">\n                <span *ngFor=\"let item of envService.data.quickfilter; let last = last; let index = index;\">\n                  <a (click)=\"onButtonSelect('quickfilter',item.id)\" class=\"dropdown-item clickable\" [class.active]=\"isQuickFilterApplied(item.id)\" >{{item.name}}</a>\n                </span>\n                <div class=\"dropdown-divider\"></div>\n                <span>\n                  <a (click)=\"onButtonSelect('openBoardSettings',0)\" class=\"dropdown-item clickable\" >Manage</a>\n                </span>\n              </div>\n            </div>\n            <div>\n              <button class=\"btn btn-bit btn-sm btn-light\" title=\"Add\" (click)=\"onButtonSelect('create-new','issue')\"><span class=\"bit-icon-plus\"></span>&nbsp;Add</button>\n            </div>\n            <div>\n              <button class=\"btn btn-bit btn-sm btn-light\" title=\"How may we help you?\" (click)=\"onButtonSelect('help','')\"><span class=\"bit-icon-help\"></span></button>\n            </div>\n            <div class=\"dropdown\">\n              <button class=\"btn btn-bit btn-sm btn-light\" type=\"button\" id=\"dropdownMenuButton\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                <i class=\"fa fa fa-ellipsis-h\" aria-hidden=\"true\"></i> \n              </button>\n              <div class=\"dropdown-menu dropdown-menu-right\" aria-labelledby=\"dropdownMenuButton\">\n                <span class=\"dropdown-header\">LAYOUT</span>\n                  <a (click)=\"onButtonSelect('layoutMode','single')\" class=\"dropdown-item clickable\">Single Grid</a>\n                  <a (click)=\"onButtonSelect('layoutMode','double')\" class=\"dropdown-item clickable\">Double Grid</a>\n                  <a (click)=\"onButtonSelect('layoutMode','grid-details')\" class=\"dropdown-item clickable\">Grid + Details</a>\n                <div class=\"dropdown-divider\"></div>\n                   <a (click)=\"onButtonSelect('toolbar','')\" class=\"dropdown-item clickable\" [class.active]=\"action.toolbar\">Toolbar</a>\n                <div class=\"dropdown-divider\"></div>\n                <span class=\"dropdown-header\">ASSOCIATED VIEWS</span>\n                  <a (click)=\"onButtonSelect('columnConfiguration',0)\" class=\"dropdown-item clickable\" >Basic view</a>\n                  <a (click)=\"onButtonSelect('columnConfiguration',1)\" class=\"dropdown-item clickable\" >Planning</a>\n                  <a (click)=\"onButtonSelect('columnConfiguration',2)\" class=\"dropdown-item clickable\" >Tracking</a>\n                <div class=\"dropdown-divider\"></div>\n                <span class=\"dropdown-header\">HIRARCHY</span>\n                  <a (click)=\"onButtonSelect('groupConfiguration','portfolioHierarchy')\" class=\"dropdown-item clickable\" >Portfolio Hirarchy</a>\n                  <a (click)=\"onButtonSelect('groupConfiguration','storyMap')\" class=\"dropdown-item clickable\" >Story Map</a>\n                  <a (click)=\"onButtonSelect('groupConfiguration','kanban')\" class=\"dropdown-item clickable\" >Kanban</a>\n                  <a (click)=\"onButtonSelect('groupConfiguration','estimate')\" class=\"dropdown-item clickable\" >Estimates</a>\n              </div>\n            </div>\n          </div>  \n        </div> \n      </div>\n  `,\n  styleUrls: ['./lidor/treegrid.component.css']\n})\nexport class TreeGridHeaderComponent implements OnInit, OnDestroy {\n  @Input() formOptions: FormGroup;\n  @Input() formFilter: FormGroup;\n  @Output('button-select') butonSelect: EventEmitter<any> = new EventEmitter();\n  @Output() searchValueChanged: EventEmitter<any> = new EventEmitter();\n  @Input() action: any = {modal:false,toolbar:false};\n\n  private rank: boolean = false;\n  private pin: boolean = false;\n  private issuePropertiesModal: boolean = false;\n  private quickfilters: Array<string> = [];\n  public searchValue: string = '';\n\n  constructor(\n    protected envService: EnvService, \n    protected notificationService: NotificationService,\n    private issues: IssueService,\n  ) {\n    // pass\n  }\n\n  ngOnInit() {\n    // pass\n  }\n\n  isQuickFilterApplied(filterId):boolean\n  {\n    return this.quickfilters.indexOf(filterId)>-1?true:false;\n  }\n\n  onButtonSelect(key: String, value : any, data?: any, event?: Event) {\n    if(key=='open-modal' && value =='issuePropertiesModal') {\n      this.issuePropertiesModal = true;\n    }\n\n    else if(key=='rank') {\n      this.rank = value;\n    }\n\n    else if(key=='pin') {\n      this.pin = value;\n      this.searchValue = '';\n    }\n\n    else if (key=='quickfilter') {\n      let index = this.quickfilters.indexOf(value);\n      if (index > -1) \n        this.quickfilters.splice(index, 1);\n      else\n        this.quickfilters.push(value);\n      this.issues.toggleQuickFilter(value);\n    }\n\n    else if(key=='export') {\n      this.notificationService.create('Feature will be available soon!', null, 'warning');\n    }\n\n    else if(key=='help') {\n      this.action.modal = true;\n    }\n\n    else if(key=='toolbar') {\n      this.action.toolbar = !this.action.toolbar;\n    }\n\n    else if(key=='openBoardSettings') {\n      window.open(this.envService.options.baseUrl + '/secure/RapidBoard.jspa?rapidView=' + this.envService.data.board.id  + '&config=quickFilters', '_blank');\n    }\n\n    else {\n      this.butonSelect.emit({event:event, value:value, key: key, data: data});\n    }\n  }\n\n  onSearchChange(value: string){\n    this.searchValueChanged.emit({ value: value });\n  }\n\n  getBoard()\n  {\n    return this.envService.data.board;\n  }\n\n  ngOnDestroy() {\n    // pass\n  }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { FormArray, FormControl } from '@angular/forms';\n\n@Component({\n  selector: 'grid-dialog',\n  template: `\n      <!-- <div modal (hidden)=\"onCancel()\" class=\"modal fade\" id=\"showIssueDetails\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n          <div class=\"modal-dialog\" role=\"document\">\n              <div class=\"modal-content\">\n                  <div class=\"modal-header\">\n                      <h5 class=\"modal-title\">{{modalTitle}}</h5>\n                      <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n                        <span aria-hidden=\"true\">&times;</span>\n                      </button>\n                  </div>\n                  <form (ngSubmit)=\"onSubmit()\" novalidate>\n                      <div class=\"modal-body\" style=\"white-space:nowrap;overflow:hidden\">\n                          <grid-dialog-list [data]=\"data.versions\" [title]=\"'Versions'\"></grid-dialog-list>\n                          <grid-dialog-list [data]=\"data.fixVersions\" [title]=\"'FixVersions'\"></grid-dialog-list>\n                          <grid-dialog-list [data]=\"data.components\" [title]=\"'Components'\"></grid-dialog-list>\n                      </div>\n                      <div class=\"modal-footer\">\n                          <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Cancel</button>\n                          <button type=\"submit\" class=\"btn btn-primary\">Save</button>\n                      </div>\n                  </form>\n              </div>\n          </div>\n      </div> -->\n      \n      <iui-dialog [visible]=\"true\" (closed)=\"onDialogClosed()\" #dialog>\n          <div class=\"modal-dialog\" role=\"document\" style=\"margin:0 !important;\">\n              <div class=\"modal-content\" style=\"border:0\">\n                  <div class=\"modal-header\">\n                      <h5 class=\"modal-title\">{{modalTitle}}</h5>\n                      <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\" (click)=\"closeDialog()\">\n                        <span aria-hidden=\"true\">&times;</span>\n                      </button>\n                  </div>\n                  <form (ngSubmit)=\"onSubmit()\" novalidate>\n                      <div class=\"modal-body\" style=\"white-space:nowrap;overflow:hidden\">\n                          <grid-dialog-list [data]=\"data.versions\" [title]=\"'Versions'\"></grid-dialog-list>\n                          <grid-dialog-list [data]=\"data.fixVersions\" [title]=\"'FixVersions'\"></grid-dialog-list>\n                          <grid-dialog-list [data]=\"data.components\" [title]=\"'Components'\"></grid-dialog-list>\n                      </div>\n                      <div class=\"modal-footer\">\n                          <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\" (click)=\"closeDialog()\">Cancel</button>\n                          <button type=\"submit\" class=\"btn btn-primary\">Save</button>\n                      </div>\n                  </form>\n              </div>\n          </div>\n      </iui-dialog>\n  `\n})\nexport class GridDialogComponent {\n  @Input() data: any;  \n  @Input() form: FormArray;\n  @Input() modalTitle: string = \"Select entries for multi value fields\";\n\n  @Output('submit') submitEvent: EventEmitter<any> = new EventEmitter();\n  @Output('cancel') cancelEvent: EventEmitter<any> = new EventEmitter();\n\n  public isDialogVisible: boolean = true;\n\n  constructor(){\n  }\n   \n  ngAfterViewInit(){\n  }\n \n\n  onSubmit() {\n    this.submitEvent.emit({});\n  }\n\n  onCancel() {\n    this.cancelEvent.emit({});\n  }\n\n  onDialogClosed(){\n    this.isDialogVisible = false;\n    this.cancelEvent.emit({});\n  }\n  \n  closeDialog(){\n    this.cancelEvent.emit({});\n  }\n}\n\n@Component({\n  selector: 'grid-dialog-list',\n  template: `\n      <div class=\"dialog-list-block\">\n        <h5 class=\"dialog-list-header\">{{title}}</h5>\n        <ul class=\"dialog-list\">\n            <li *ngFor=\"let item of data.list\" (mousedown)=\"onItemChecked(item)\">\n                <i *ngIf=\"item.checked\" class=\"fa fa-check-square-o\" aria-hidden=\"true\" style=\"width:14px\"></i>\n                <i *ngIf=\"!item.checked\" class=\"fa fa-square-o\" aria-hidden=\"true\" style=\"width:14px\"></i>\n                <span>{{item.text}}</span>\n            </li>\n        </ul>\n      </div>\n      \n      <!-- <span class=\"item-check-box\" [ngClass]=\"{ 'item-check-box-true': item.checked != false, 'item-check-box-false': item.checked == false }\"></span> -->\n  `,\n  styleUrls: ['./lidor/grid.dialog.component.css']\n})\nexport class GridDialogListComponent {\n  @Input() data: any;\n  @Input() title: string;\n  \n  onItemChecked(item: any){\n      item.checked = item.checked != undefined ? !item.checked : true; \n      \n      this.data.changed = true;\n  }\n}","\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require(\"@angular/core\");\r\nvar IntegralUIDialog = (function () {\r\n    function IntegralUIDialog() {\r\n        // Variables -------------------------------------------------------------------------\r\n        this.isEnabled = true;\r\n        this.isVisible = false;\r\n        // Events ----------------------------------------------------------------------------\r\n        this.closed = new core_1.EventEmitter();\r\n        this.closing = new core_1.EventEmitter();\r\n        this.opened = new core_1.EventEmitter();\r\n        this.opening = new core_1.EventEmitter();\r\n    }\r\n    Object.defineProperty(IntegralUIDialog.prototype, \"visible\", {\r\n        get: function () {\r\n            return this.isVisible;\r\n        },\r\n        set: function (value) {\r\n            if (this.isVisible != value) {\r\n                if (value)\r\n                    this.open();\r\n                else\r\n                    this.close();\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIDialog.prototype, \"enabled\", {\r\n        get: function () {\r\n            return this.isEnabled;\r\n        },\r\n        set: function (value) {\r\n            if (this.isEnabled != value) {\r\n                this.isEnabled = value;\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    // Initialization --------------------------------------------------------------------\r\n    IntegralUIDialog.prototype.ngAfterViewInit = function () {\r\n    };\r\n    // Layout ----------------------------------------------------------------------------\r\n    IntegralUIDialog.prototype.updateLayout = function () {\r\n    };\r\n    // Open/Close ------------------------------------------------------------------------\r\n    IntegralUIDialog.prototype.open = function () {\r\n        if (!this.isVisible) {\r\n            var eventObj = { cancel: false };\r\n            this.opening.emit(eventObj);\r\n            if (!eventObj.cancel) {\r\n                this.isVisible = true;\r\n                this.opened.emit(null);\r\n            }\r\n        }\r\n    };\r\n    IntegralUIDialog.prototype.close = function () {\r\n        if (this.isVisible) {\r\n            var eventObj = { cancel: false };\r\n            this.closing.emit(eventObj);\r\n            if (!eventObj.cancel) {\r\n                this.isVisible = false;\r\n                this.closed.emit(null);\r\n            }\r\n        }\r\n    };\r\n    return IntegralUIDialog;\r\n}());\r\n__decorate([\r\n    core_1.ViewChild('inputLabel', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.ElementRef)\r\n], IntegralUIDialog.prototype, \"inputLabelElem\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean)\r\n], IntegralUIDialog.prototype, \"closeButton\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean),\r\n    __metadata(\"design:paramtypes\", [Boolean])\r\n], IntegralUIDialog.prototype, \"visible\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean),\r\n    __metadata(\"design:paramtypes\", [Boolean])\r\n], IntegralUIDialog.prototype, \"enabled\", null);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIDialog.prototype, \"closed\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIDialog.prototype, \"closing\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIDialog.prototype, \"opened\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIDialog.prototype, \"opening\", void 0);\r\nIntegralUIDialog = __decorate([\r\n    core_1.Component({\r\n        selector: 'iui-dialog',\r\n        template: \"\\n  \\t\\t<div *ngIf=\\\"visible\\\" class=\\\"iui-dialog iui-dialog-animation\\\" [ngClass]=\\\"{ 'iui-dialog-disabled': !enabled }\\\">\\n  \\t\\t\\t<ng-content></ng-content>\\n  \\t\\t\\t<div class=\\\"iui-dialog-buttons\\\">\\n  \\t\\t\\t\\t<span *ngIf=\\\"closeButton\\\" class=\\\"iui-dialog-icon iui-dialog-button-close\\\" (click)=\\\"close()\\\"></span>\\n  \\t\\t\\t</div>\\n\\t\\t</div>\\n\\t\\t<p *ngIf=\\\"visible\\\" class=\\\"iui-dialog-overlay iui-overlay-animation\\\" (click)=\\\"close()\\\"></p>\\n\\t\",\r\n        encapsulation: core_1.ViewEncapsulation.None\r\n    })\r\n], IntegralUIDialog);\r\nexports.IntegralUIDialog = IntegralUIDialog;\r\n//# sourceMappingURL=integralui.dialog.js.map","/*\r\n  filename: integralui.frame.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\n\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require(\"@angular/core\");\r\nvar integralui_core_1 = require(\"../components/integralui.core\");\r\nvar integralui_common_service_1 = require(\"../services/integralui.common.service\");\r\nvar IntegralUIFrame = (function () {\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUIFrame(elemRef, elemRenderer, commonService) {\r\n        this.elemRef = elemRef;\r\n        this.elemRenderer = elemRenderer;\r\n        this.commonService = commonService;\r\n        // Variables -------------------------------------------------------------------------\r\n        // Data\r\n        // General\r\n        this.isActive = false;\r\n        // Layout\r\n        this.startPos = { x: 0, y: 0 };\r\n        this.currentPos = { x: 0, y: 0 };\r\n        this.newSizeDistance = { dx: 0, dy: 0 };\r\n        // References\r\n        this.parentElem = null;\r\n        // Events ----------------------------------------------------------------------------\r\n        this.sizeChanged = new core_1.EventEmitter();\r\n    }\r\n    IntegralUIFrame.prototype.ngAfterViewInit = function () {\r\n        this.resizerElem = this.elemRenderer.createElement(this.elemRef.nativeElement, \"div\");\r\n        this.elemRenderer.setElementClass(this.resizerElem, \"iui-frame\", true);\r\n        if (this.settings.visible == integralui_core_1.IntegralUIVisibility.Hover)\r\n            this.hideFrame();\r\n    };\r\n    IntegralUIFrame.prototype.ngOnDestroy = function () {\r\n        if (this.resizerElem)\r\n            this.resizerElem.remove();\r\n    };\r\n    // Event Handlers --------------------------------------------------------------------\r\n    IntegralUIFrame.prototype.onMouseEnter = function (e) {\r\n        if (this.settings.visible == integralui_core_1.IntegralUIVisibility.Hover)\r\n            this.showFrame();\r\n    };\r\n    IntegralUIFrame.prototype.onMouseLeave = function () {\r\n        if (this.settings.visible == integralui_core_1.IntegralUIVisibility.Hover)\r\n            this.hideFrame();\r\n    };\r\n    IntegralUIFrame.prototype.onMouseDown = function (e) {\r\n        if (e.buttons == 1) {\r\n            var elemSize = this.getElemSize();\r\n            if (e.offsetX > elemSize.width - 16 && e.offsetY > elemSize.height - 16) {\r\n                this.isActive = true;\r\n                this.startPos = { x: e.pageX, y: e.pageY };\r\n            }\r\n            else\r\n                this.isActive = false;\r\n        }\r\n    };\r\n    IntegralUIFrame.prototype.onMouseUp = function (e) {\r\n        this.isActive = false;\r\n    };\r\n    IntegralUIFrame.prototype.onWindowMouseMove = function (e) {\r\n        if (e.buttons == 1 && this.isActive) {\r\n            this.newSizeDistance = { dx: e.pageX - this.startPos.x, dy: e.pageY - this.startPos.y };\r\n            this.updateSize(this.newSizeDistance);\r\n            this.startPos = { x: e.pageX, y: e.pageY };\r\n        }\r\n    };\r\n    IntegralUIFrame.prototype.onWindowMouseUp = function (e) {\r\n        this.isActive = false;\r\n    };\r\n    // General ---------------------------------------------------------------------------\r\n    IntegralUIFrame.prototype.hideFrame = function () {\r\n        if (this.resizerElem && this.elemRef) {\r\n            this.elemRenderer.setElementStyle(this.resizerElem, \"display\", \"none\");\r\n            this.elemRenderer.setElementStyle(this.elemRef.nativeElement, \"border-color\", \"transparent\");\r\n        }\r\n    };\r\n    IntegralUIFrame.prototype.showFrame = function () {\r\n        if (this.resizerElem && this.elemRef) {\r\n            this.elemRenderer.setElementStyle(this.resizerElem, \"display\", \"block\");\r\n            this.elemRenderer.setElementStyle(this.elemRef.nativeElement, \"border-color\", \"#bcbcbc\");\r\n        }\r\n    };\r\n    // Layout ----------------------------------------------------------------------------\r\n    IntegralUIFrame.prototype.getElemSize = function () {\r\n        return {\r\n            width: this.elemRef.nativeElement.offsetWidth - 2,\r\n            height: this.elemRef.nativeElement.offsetHeight - 2\r\n        };\r\n    };\r\n    IntegralUIFrame.prototype.updateSize = function (value) {\r\n        var elemSize = this.getElemSize();\r\n        var elemPadding = this.commonService.getPadding(this.elemRef.nativeElement);\r\n        var newSize = elemSize;\r\n        if (elemSize.width + value.dx > 16)\r\n            newSize.width = elemSize.width + value.dx - (elemPadding.left + elemPadding.right);\r\n        if (elemSize.height + value.dy > 16)\r\n            newSize.height = elemSize.height + value.dy - (elemPadding.top + elemPadding.bottom);\r\n        this.elemRenderer.setElementStyle(this.elemRef.nativeElement, \"width\", newSize.width + \"px\");\r\n        this.elemRenderer.setElementStyle(this.elemRef.nativeElement, \"height\", newSize.height + \"px\");\r\n        this.sizeChanged.emit(newSize);\r\n    };\r\n    return IntegralUIFrame;\r\n}());\r\n__decorate([\r\n    core_1.Input('iuiFrame'),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUIFrame.prototype, \"settings\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIFrame.prototype, \"sizeChanged\", void 0);\r\n__decorate([\r\n    core_1.HostListener('mouseenter', ['$event']),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUIFrame.prototype, \"onMouseEnter\", null);\r\n__decorate([\r\n    core_1.HostListener('mouseleave'),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", []),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUIFrame.prototype, \"onMouseLeave\", null);\r\n__decorate([\r\n    core_1.HostListener('mousedown', ['$event']),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUIFrame.prototype, \"onMouseDown\", null);\r\n__decorate([\r\n    core_1.HostListener('mouseup', ['$event']),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUIFrame.prototype, \"onMouseUp\", null);\r\n__decorate([\r\n    core_1.HostListener('document:mousemove', ['$event']),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUIFrame.prototype, \"onWindowMouseMove\", null);\r\n__decorate([\r\n    core_1.HostListener('document:mouseup', ['$event']),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUIFrame.prototype, \"onWindowMouseUp\", null);\r\nIntegralUIFrame = __decorate([\r\n    core_1.Directive({\r\n        selector: '[iuiFrame]'\r\n    }),\r\n    __metadata(\"design:paramtypes\", [core_1.ElementRef,\r\n        core_1.Renderer,\r\n        integralui_common_service_1.IntegralUICommonService])\r\n], IntegralUIFrame);\r\nexports.IntegralUIFrame = IntegralUIFrame;\r\n//# sourceMappingURL=integralui.frame.js.map","/*\r\n  filename: integralui.paginator.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __decorate=this&&this.__decorate||function(b,a,d,e){var f=arguments.length,c=3>f?a:null===e?e=Object.getOwnPropertyDescriptor(a,d):e,g;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)c=Reflect.decorate(b,a,d,e);else for(var h=b.length-1;0<=h;h--)if(g=b[h])c=(3>f?g(c):3<f?g(a,d,c):g(a,d))||c;return 3<f&&c&&Object.defineProperty(a,d,c),c},__metadata=this&&this.__metadata||function(b,a){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(b,\r\na)},core_1=require(\"@angular/core\"),IntegralUIPaginator=function(){function b(){this.currentPageNumber=0;this.isEnabled=!0;this.minPageNumber=this.maxPageNumber=0;this.numPages=\"0\";this.inputWidth=30;this.prevValue=0;this.pageChanged=new core_1.EventEmitter;this.updateCurrentPage=function(){0==this.currentPageNumber?this.currentPageNumber=0<this.maxPageNumber?1:this.currentPageNumber:(this.currentPageNumber<this.minPageNumber&&(this.currentPageNumber=this.minPageNumber),this.currentPageNumber>this.maxPageNumber&&\r\n(this.currentPageNumber=this.maxPageNumber));this.currentPageNumber!=this.prevValue&&this.pageChanged.emit({value:this.currentPageNumber});this.prevValue=this.currentPageNumber}}Object.defineProperty(b.prototype,\"currentPage\",{get:function(){return this.currentPageNumber},set:function(a){this.prevValue=this.currentPageNumber;this.currentPageNumber!=a&&(this.currentPageNumber=a);this.updateCurrentPage()},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\"enabled\",{get:function(){return this.isEnabled},\r\nset:function(a){this.isEnabled!=a&&(this.isEnabled=a)},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\"maxPages\",{get:function(){return this.maxPageNumber},set:function(a){this.maxPageNumber!=a&&(this.maxPageNumber=a,0<a&&(this.minPageNumber=1));this.updateCurrentPage()},enumerable:!0,configurable:!0});b.prototype.ngAfterViewInit=function(){var a=this,b=setTimeout(function(){a.updateCurrentPage();clearTimeout(b)},1);a.updateLayout()};b.prototype.firstPage=function(){this.isEnabled&&\r\nthis.currentPage!=this.minPageNumber&&(this.currentPage=this.minPageNumber)};b.prototype.lastPage=function(){this.isEnabled&&this.currentPage!=this.maxPageNumber&&(this.currentPage=this.maxPageNumber)};b.prototype.nextPage=function(){this.isEnabled&&this.currentPage<this.maxPageNumber&&this.currentPage++};b.prototype.prevPage=function(){this.isEnabled&&this.currentPage>this.minPageNumber&&this.currentPage--};b.prototype.onCurrentPageChange=function(a){this.pageChanged.emit({value:a})};b.prototype.updateLayout=\r\nfunction(){this.inputWidth=this.inputLabelElem.nativeElement.offsetWidth+20};return b}();__decorate([core_1.ViewChild(\"inputLabel\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUIPaginator.prototype,\"inputLabelElem\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUIPaginator.prototype,\"currentPage\",null);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Boolean),__metadata(\"design:paramtypes\",[Boolean])],IntegralUIPaginator.prototype,\"enabled\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUIPaginator.prototype,\"maxPages\",null);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIPaginator.prototype,\"pageChanged\",void 0);\r\nIntegralUIPaginator=__decorate([core_1.Component({selector:\"iui-paginator\",template:'<div class=\"iui-paginator\" [ngClass]=\"{ \\'iui-paginator-disabled\\': !enabled }\" data-element=\"paginator\">\\n  \\t\\t\\t<span class=\"iui-paginator-button iui-paginator-first\" (click)=\"firstPage()\" [ngStyle]=\"{ \\'opacity\\': currentPageNumber==minPageNumber ? 0.5 : 1 }\"></span>\\n  \\t\\t\\t<span class=\"iui-paginator-button iui-paginator-prev\" (click)=\"prevPage()\" [ngStyle]=\"{ \\'opacity\\': currentPageNumber==minPageNumber ? 0.5 : 1 }\"></span>\\n  \\t\\t\\t<input type=\"number\" class=\"iui-paginator-input\" [disabled]=\"!enabled\" [(ngModel)]=\"currentPageNumber\" (change)=\"onCurrentPageChange(currentPageNumber)\" min=\"{{minPageNumber}}\" max=\"{{maxPageNumber}}\" [ngStyle]=\"{ width: inputWidth + \\'px\\' }\" />\\n  \\t\\t\\t<span class=\"iui-paginator-label\" #inputLabel> / {{maxPageNumber}}</span>\\n  \\t\\t\\t<span class=\"iui-paginator-button iui-paginator-next\" (click)=\"nextPage()\" [ngStyle]=\"{ \\'opacity\\': currentPageNumber==maxPageNumber ? 0.5 : 1 }\"></span>\\n  \\t\\t\\t<span class=\"iui-paginator-button iui-paginator-last\" (click)=\"lastPage()\" [ngStyle]=\"{ \\'opacity\\': currentPageNumber==maxPageNumber ? 0.5 : 1 }\"></span>\\n\\t\\t</div>\\n\\t'})],\r\nIntegralUIPaginator);exports.IntegralUIPaginator=IntegralUIPaginator;","\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require(\"@angular/core\");\r\nvar integralui_core_1 = require(\"../components/integralui.core\");\r\nvar integralui_common_service_1 = require(\"../services/integralui.common.service\");\r\nvar IntegralUIRange = (function () {\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUIRange(elemRef, elemRenderer, commonService) {\r\n        this.elemRef = elemRef;\r\n        this.elemRenderer = elemRenderer;\r\n        this.commonService = commonService;\r\n        // Variables -------------------------------------------------------------------------\r\n        // Data\r\n        this.defaultSettings = {\r\n            anchor: integralui_core_1.IntegralUIAnchorStyle.Top | integralui_core_1.IntegralUIAnchorStyle.Left,\r\n            factor: 1,\r\n            height: 0,\r\n            maxHeight: 9999999,\r\n            maxWidth: 9999999,\r\n            minHeight: 0,\r\n            minWidth: 0,\r\n            ref: 'parent',\r\n            width: 0\r\n        };\r\n        // General\r\n        this.resizeInterval = null;\r\n        // Layout\r\n        this.originalElemSize = { width: 0, height: 0 };\r\n        // Events ----------------------------------------------------------------------------\r\n        this.sizeChanged = new core_1.EventEmitter();\r\n    }\r\n    IntegralUIRange.prototype.ngAfterViewInit = function () {\r\n        var self = this;\r\n        self.defaultSettings.width = parseInt(self.elemRef.nativeElement.width, 10);\r\n        var currentSettings = {\r\n            anchor: integralui_core_1.IntegralUIAnchorStyle.Top | integralui_core_1.IntegralUIAnchorStyle.Left,\r\n            factor: 1,\r\n            height: 0,\r\n            maxHeight: 9999999,\r\n            maxWidth: 9999999,\r\n            minHeight: 0,\r\n            minWidth: 0,\r\n            ref: 'parent',\r\n            width: 0\r\n        };\r\n        if (self.settings) {\r\n            currentSettings.anchor = self.commonService.isFieldAvailable(self.settings.anchor, self.defaultSettings.anchor);\r\n            currentSettings.factor = self.commonService.isFieldAvailable(self.settings.factor, self.defaultSettings.factor);\r\n            currentSettings.minWidth = parseInt(self.commonService.isFieldAvailable(self.settings.minWidth, self.defaultSettings.minWidth), 10);\r\n            currentSettings.maxWidth = parseInt(self.commonService.isFieldAvailable(self.settings.maxWidth, self.defaultSettings.maxWidth), 10);\r\n            currentSettings.minHeight = parseInt(self.commonService.isFieldAvailable(self.settings.minHeight, self.defaultSettings.minHeight), 10);\r\n            currentSettings.maxHeight = parseInt(self.commonService.isFieldAvailable(self.settings.maxHeight, self.defaultSettings.maxHeight), 10);\r\n        }\r\n        var originalParentSize = {\r\n            width: self.elemRef.nativeElement.parentElement.offsetWidth,\r\n            height: self.elemRef.nativeElement.parentElement.offsetHeight\r\n        };\r\n        var newParentSize = {\r\n            width: 0,\r\n            height: 0\r\n        };\r\n        self.originalElemSize = {\r\n            width: self.elemRef.nativeElement.offsetWidth,\r\n            height: self.elemRef.nativeElement.offsetHeight\r\n        };\r\n        var sizeChange = { dx: 0, dy: 0 };\r\n        self.resizeInterval = setInterval(function () {\r\n            var currentParentSize = {\r\n                width: self.elemRef.nativeElement.parentElement.offsetWidth - 2,\r\n                height: self.elemRef.nativeElement.parentElement.offsetHeight - 2\r\n            };\r\n            if (currentParentSize.width != newParentSize.width)\r\n                sizeChange.dx = (currentParentSize.width - originalParentSize.width) * currentSettings.factor;\r\n            if (currentParentSize.height != newParentSize.height)\r\n                sizeChange.dy = (currentParentSize.height - originalParentSize.height) * currentSettings.factor;\r\n            if (self.settings && self.settings.ref == 'parent')\r\n                self.updateSize(currentSettings, sizeChange);\r\n            newParentSize = {\r\n                width: currentParentSize.width,\r\n                height: currentParentSize.height\r\n            };\r\n        }, 10);\r\n    };\r\n    IntegralUIRange.prototype.ngOnDestroy = function () {\r\n        if (this.resizeInterval != null)\r\n            clearInterval(this.resizeInterval);\r\n    };\r\n    // Event Handlers --------------------------------------------------------------------\r\n    IntegralUIRange.prototype.onMouseEnter = function () {\r\n        this.sizeChanged.emit(null);\r\n        //this.elemRef.nativeElement.style.width = 200;\r\n    };\r\n    IntegralUIRange.prototype.onChange = function (e) {\r\n    };\r\n    IntegralUIRange.prototype.onResize = function (e) {\r\n    };\r\n    // General ---------------------------------------------------------------------------\r\n    // Layout ----------------------------------------------------------------------------\r\n    IntegralUIRange.prototype.updateSize = function (currentSettings, sizeChange) {\r\n        var self = this;\r\n        var elemSize = {\r\n            width: self.defaultSettings.width,\r\n            height: self.defaultSettings.height\r\n        };\r\n        var parentPadding = self.commonService.getPadding(self.elemRef.nativeElement.parentElement);\r\n        var parentClientSize = {\r\n            width: self.elemRef.nativeElement.parentElement.clientWidth - (parentPadding.left + parentPadding.right),\r\n            height: self.elemRef.nativeElement.parentElement.clientHeight - (parentPadding.top + parentPadding.bottom)\r\n        };\r\n        //if (self.settings.width){\r\n        //elemSize.width = Math.floor(self.settings.width * parentClientSize.width);\r\n        if (currentSettings.anchor & integralui_core_1.IntegralUIAnchorStyle.Right) {\r\n            //elemSize.width = Math.floor(self.settings.width * parentClientSize.width);\r\n            elemSize.width = self.originalElemSize.width + sizeChange.dx;\r\n            elemSize.width = elemSize.width < currentSettings.minWidth ? currentSettings.minWidth : elemSize.width;\r\n            elemSize.width = elemSize.width > currentSettings.maxWidth ? currentSettings.maxWidth : elemSize.width;\r\n            self.elemRenderer.setElementStyle(self.elemRef.nativeElement, \"width\", elemSize.width - 2 + \"px\");\r\n        }\r\n        if (currentSettings.anchor & integralui_core_1.IntegralUIAnchorStyle.Bottom) {\r\n            elemSize.height = self.originalElemSize.height + sizeChange.dy;\r\n            elemSize.height = elemSize.height < currentSettings.minHeight ? currentSettings.minHeight : elemSize.height;\r\n            elemSize.height = elemSize.height > currentSettings.maxHeight ? currentSettings.maxHeight : elemSize.height;\r\n            self.elemRenderer.setElementStyle(self.elemRef.nativeElement, \"height\", elemSize.height - 2 + \"px\");\r\n        }\r\n    };\r\n    return IntegralUIRange;\r\n}());\r\n__decorate([\r\n    core_1.Input('iuiRange'),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUIRange.prototype, \"settings\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIRange.prototype, \"sizeChanged\", void 0);\r\n__decorate([\r\n    core_1.HostListener('mouseenter'),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", []),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUIRange.prototype, \"onMouseEnter\", null);\r\n__decorate([\r\n    core_1.HostListener('change'),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUIRange.prototype, \"onChange\", null);\r\n__decorate([\r\n    core_1.HostListener('window:resize'),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUIRange.prototype, \"onResize\", null);\r\nIntegralUIRange = __decorate([\r\n    core_1.Directive({\r\n        selector: '[iuiRange]'\r\n    }),\r\n    __metadata(\"design:paramtypes\", [core_1.ElementRef,\r\n        core_1.Renderer,\r\n        integralui_common_service_1.IntegralUICommonService])\r\n], IntegralUIRange);\r\nexports.IntegralUIRange = IntegralUIRange;\r\n//# sourceMappingURL=integralui.range.js.map","\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require(\"@angular/core\");\r\nvar integralui_common_service_1 = require(\"../services/integralui.common.service\");\r\nvar IntegralUIResize = (function () {\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUIResize(elemRef, commonService) {\r\n        this.elemRef = elemRef;\r\n        this.commonService = commonService;\r\n        // Variables -------------------------------------------------------------------------\r\n        this.elemSize = { width: 0, height: 0 };\r\n        this.prevElemSize = { width: 0, height: 0 };\r\n        // Events ----------------------------------------------------------------------------\r\n        this.elemSizeChanged = new core_1.EventEmitter();\r\n    }\r\n    IntegralUIResize.prototype.ngAfterViewInit = function () {\r\n        this.elemSize = {\r\n            width: this.elemRef.nativeElement.offsetWidth,\r\n            height: this.elemRef.nativeElement.offsetHeight\r\n        };\r\n        this.prevElemSize.width = this.elemSize.width;\r\n        this.prevElemSize.height = this.elemSize.height;\r\n    };\r\n    // Change Detection ------------------------------------------------------------------\r\n    IntegralUIResize.prototype.ngAfterContentChecked = function () {\r\n        this.elemSize = {\r\n            width: this.elemRef.nativeElement.offsetWidth,\r\n            height: this.elemRef.nativeElement.offsetHeight\r\n        };\r\n        var isThereChange = false;\r\n        if (this.elemSize.width != this.prevElemSize.width) {\r\n            this.prevElemSize.width = this.elemSize.width;\r\n            isThereChange = true;\r\n        }\r\n        else if (this.elemSize.height != this.prevElemSize.height) {\r\n            this.prevElemSize.height = this.elemSize.height;\r\n            isThereChange = true;\r\n        }\r\n        if (isThereChange) {\r\n            var borderWidth = this.commonService.getBorderWidth(this.elemRef.nativeElement);\r\n            var margin = this.commonService.getMargin(this.elemRef.nativeElement);\r\n            var padding = this.commonService.getPadding(this.elemRef.nativeElement);\r\n            this.elemSizeChanged.emit({ borderWidth: borderWidth, margin: margin, padding: padding, size: this.elemSize });\r\n        }\r\n    };\r\n    return IntegralUIResize;\r\n}());\r\n__decorate([\r\n    core_1.Input('iuiResize'),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUIResize.prototype, \"settings\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIResize.prototype, \"elemSizeChanged\", void 0);\r\nIntegralUIResize = __decorate([\r\n    core_1.Directive({\r\n        selector: '[iuiResize]'\r\n    }),\r\n    __metadata(\"design:paramtypes\", [core_1.ElementRef,\r\n        integralui_common_service_1.IntegralUICommonService])\r\n], IntegralUIResize);\r\nexports.IntegralUIResize = IntegralUIResize;\r\n//# sourceMappingURL=integralui.resize.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require(\"@angular/core\");\r\nvar integralui_core_1 = require(\"../components/integralui.core\");\r\nvar integralui_common_service_1 = require(\"../services/integralui.common.service\");\r\nvar IntegralUITooltipComponent = (function (_super) {\r\n    __extends(IntegralUITooltipComponent, _super);\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUITooltipComponent(elemRef, commonService) {\r\n        var _this = _super.call(this, commonService) || this;\r\n        _this.elemRef = elemRef;\r\n        _this.commonService = commonService;\r\n        // General\r\n        _this.showTimer = null;\r\n        _this.popupTimer = null;\r\n        _this.mousePos = { x: 0, y: 0 };\r\n        // Layout\r\n        _this.tooltipDisplay = 'none';\r\n        _this.tooltipPos = { top: 0, left: 0 };\r\n        _this.tooltipSize = { width: 0, height: 0 };\r\n        // Events ----------------------------------------------------------------------------\r\n        _this.closed = new core_1.EventEmitter();\r\n        _this.updateOptions();\r\n        return _this;\r\n    }\r\n    Object.defineProperty(IntegralUITooltipComponent.prototype, \"options\", {\r\n        get: function () {\r\n            return this.tooltipOptions;\r\n        },\r\n        // Properties ------------------------------------------------------------------------\r\n        set: function (value) {\r\n            this.updateOptions(value);\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    // Data ---------------------------------------------------------------------------\r\n    IntegralUITooltipComponent.prototype.updateOptions = function (value) {\r\n        if (value) {\r\n            this.tooltipOptions = {\r\n                autoPopDelay: this.commonService.isFieldAvailable(value.autoPopDelay, 5000),\r\n                enabled: this.commonService.isFieldAvailable(value.enabled, true),\r\n                initialDelay: this.commonService.isFieldAvailable(value.initialDelay, 500),\r\n                position: this.commonService.isFieldAvailable(value.position, 'mouse'),\r\n                showMarker: this.commonService.isFieldAvailable(value.showMarker, true),\r\n                title: this.commonService.isFieldAvailable(value.title, '')\r\n            };\r\n        }\r\n        else {\r\n            this.tooltipOptions = {\r\n                autoPopDelay: 5000,\r\n                enabled: true,\r\n                initialDelay: 500,\r\n                position: 'mouse',\r\n                showMarker: true,\r\n                title: ''\r\n            };\r\n        }\r\n    };\r\n    // General ---------------------------------------------------------------------------\r\n    IntegralUITooltipComponent.prototype.removeTimers = function () {\r\n        if (this.showTimer) {\r\n            clearTimeout(this.showTimer);\r\n            this.showTimer = null;\r\n        }\r\n        if (this.popupTimer) {\r\n            clearTimeout(this.popupTimer);\r\n            this.popupTimer = null;\r\n        }\r\n    };\r\n    // Layout ----------------------------------------------------------------------------\r\n    IntegralUITooltipComponent.prototype.open = function (elemPageRect, elemSize) {\r\n        var self = this;\r\n        self.tooltipPos.top = -9999999;\r\n        self.tooltipDisplay = 'block';\r\n        var openTimer = setTimeout(function () {\r\n            self.tooltipSize = self.size();\r\n            self.tooltipDisplay = 'none';\r\n            self.removeTimers();\r\n            if (self.tooltipOptions.enabled && self.tooltipOptions.title != '')\r\n                self.showTimer = setTimeout(function () {\r\n                    self.show(elemPageRect, elemSize);\r\n                    self.popupTimer = setTimeout(function () {\r\n                        self.closed.emit(null);\r\n                        clearTimeout(self.popupTimer);\r\n                    }, self.tooltipOptions.autoPopDelay);\r\n                    clearTimeout(self.showTimer);\r\n                }, self.tooltipOptions.initialDelay);\r\n            clearTimeout(openTimer);\r\n        }, 1);\r\n    };\r\n    IntegralUITooltipComponent.prototype.show = function (elemPageRect, elemSize) {\r\n        this.tooltipPos = {\r\n            top: this.mousePos.y + 24,\r\n            left: this.mousePos.x\r\n        };\r\n        switch (this.tooltipOptions.position) {\r\n            case 'above':\r\n                this.tooltipPos = {\r\n                    top: elemPageRect.top - 4 - this.tooltipSize.height,\r\n                    left: elemPageRect.left + Math.floor((elemSize.width - this.tooltipSize.width) / 2)\r\n                };\r\n                //if (tooltipOptions.showMarker)\r\n                //tooltipElem.addClass(\"iui-tooltip-marker-bottom\");\r\n                break;\r\n            case 'below':\r\n                this.tooltipPos = {\r\n                    top: elemPageRect.bottom + 4,\r\n                    left: elemPageRect.left + Math.floor((elemSize.width - this.tooltipSize.width) / 2)\r\n                };\r\n                //if (tooltipOptions.showMarker)\r\n                //tooltipElem.addClass(\"iui-tooltip-marker-top\");\r\n                break;\r\n            case 'left':\r\n                this.tooltipPos = {\r\n                    top: elemPageRect.top + Math.floor((elemSize.height - this.tooltipSize.height) / 2),\r\n                    left: elemPageRect.left - 4 - this.tooltipSize.width\r\n                };\r\n                //if (tooltipOptions.showMarker)\r\n                //tooltipElem.addClass(\"iui-tooltip-marker-right\");\r\n                break;\r\n            case 'right':\r\n                this.tooltipPos = {\r\n                    top: elemPageRect.top + Math.floor((elemSize.height - this.tooltipSize.height) / 2),\r\n                    left: elemPageRect.right + 4\r\n                };\r\n                //if (tooltipOptions.showMarker)\r\n                //tooltipElem.addClass(\"iui-tooltip-marker-left\");\r\n                break;\r\n        }\r\n        this.tooltipDisplay = 'block';\r\n    };\r\n    IntegralUITooltipComponent.prototype.size = function () {\r\n        var elemSize = {\r\n            width: this.elemRef.nativeElement.firstElementChild.offsetWidth,\r\n            height: this.elemRef.nativeElement.firstElementChild.offsetHeight\r\n        };\r\n        return elemSize;\r\n    };\r\n    IntegralUITooltipComponent.prototype.updateMousePos = function (value) {\r\n        if (this.mousePos != value)\r\n            this.mousePos = value;\r\n    };\r\n    // Style -----------------------------------------------------------------------------\r\n    IntegralUITooltipComponent.prototype.updateControlClass = function () {\r\n        this.ctrlClass.length = 0;\r\n        this.ctrlClass.push('iui-tooltip');\r\n        if (this.tooltipOptions.showMarker)\r\n            switch (this.tooltipOptions.position) {\r\n                case 'above':\r\n                    this.ctrlClass.push('iui-tooltip-marker-bottom');\r\n                    break;\r\n                case 'right':\r\n                    this.ctrlClass.push('iui-tooltip-marker-left');\r\n                    break;\r\n                case 'below':\r\n                    this.ctrlClass.push('iui-tooltip-marker-top');\r\n                    break;\r\n                case 'left':\r\n                    this.ctrlClass.push('iui-tooltip-marker-right');\r\n                    break;\r\n            }\r\n    };\r\n    return IntegralUITooltipComponent;\r\n}(integralui_core_1.IntegralUIBaseComponent));\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object),\r\n    __metadata(\"design:paramtypes\", [Object])\r\n], IntegralUITooltipComponent.prototype, \"options\", null);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUITooltipComponent.prototype, \"closed\", void 0);\r\nIntegralUITooltipComponent = __decorate([\r\n    core_1.Component({\r\n        selector: 'iui-tooltip',\r\n        template: \"\\n\\t\\t<div class=\\\"iui-tooltip\\\" [ngClass]=\\\"getControlClass()\\\" [ngStyle]=\\\"{ 'display': tooltipDisplay, 'top': tooltipPos.top + 'px', 'left': tooltipPos.left + 'px' }\\\" style=\\\"opacity:1 !important\\\">{{tooltipOptions.title}}</div>\\n\\t\",\r\n        inputs: ['controlStyle', 'data', 'state'],\r\n        encapsulation: core_1.ViewEncapsulation.None\r\n    }),\r\n    __metadata(\"design:paramtypes\", [core_1.ElementRef,\r\n        integralui_common_service_1.IntegralUICommonService])\r\n], IntegralUITooltipComponent);\r\nexports.IntegralUITooltipComponent = IntegralUITooltipComponent;\r\nvar IntegralUITooltip = (function () {\r\n    // Events ----------------------------------------------------------------------------\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUITooltip(elemRef, cmpResolver, commonService) {\r\n        this.elemRef = elemRef;\r\n        this.cmpResolver = cmpResolver;\r\n        this.commonService = commonService;\r\n        // Variables -------------------------------------------------------------------------\r\n        // Data\r\n        this.eventList = [];\r\n        // References\r\n        this.cmpRef = null;\r\n    }\r\n    // General ---------------------------------------------------------------------------\r\n    IntegralUITooltip.prototype.closeTooltip = function () {\r\n        var self = this;\r\n        if (self.cmpRef) {\r\n            if (self.eventList)\r\n                self.eventList.forEach(function (obj) { return obj.unsubscribe(); });\r\n            self.cmpRef.destroy();\r\n        }\r\n    };\r\n    // Layout ----------------------------------------------------------------------------\r\n    IntegralUITooltip.prototype.size = function () {\r\n        var elemSize = {\r\n            width: this.elemRef.nativeElement.offsetWidth,\r\n            height: this.elemRef.nativeElement.offsetHeight\r\n        };\r\n        return elemSize;\r\n    };\r\n    // Event Handlers --------------------------------------------------------------------\r\n    IntegralUITooltip.prototype.onMouseEnter = function (e) {\r\n        var self = this;\r\n        var appRef = self.tooltipRef ? self.tooltipRef : self.settings.appRef;\r\n        if (appRef) {\r\n            self.closeTooltip();\r\n            var factory = self.cmpResolver.resolveComponentFactory(IntegralUITooltipComponent);\r\n            if (factory) {\r\n                self.cmpRef = appRef.createComponent(factory);\r\n                if (self.cmpRef) {\r\n                    var cmp = null;\r\n                    if (self.cmpRef._component)\r\n                        cmp = self.cmpRef._component;\r\n                    else if (self.cmpRef._hostElement)\r\n                        cmp = self.cmpRef._hostElement.component;\r\n                    if (cmp) {\r\n                        cmp.options = self.settings;\r\n                        cmp.updateMousePos(self.commonService.getMousePos(e));\r\n                        var elemPageRect = this.elemRef.nativeElement.getBoundingClientRect();\r\n                        cmp.open(elemPageRect, self.size());\r\n                        self.eventList.push(cmp.closed.subscribe(function (e) {\r\n                            self.closeTooltip();\r\n                        }));\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    };\r\n    IntegralUITooltip.prototype.onMouseLeave = function (e) {\r\n        this.closeTooltip();\r\n    };\r\n    IntegralUITooltip.prototype.onMouseMove = function (e) {\r\n        var self = this;\r\n        if (self.cmpRef) {\r\n            if (self.cmpRef._component) {\r\n                var cmp = self.cmpRef._component;\r\n                cmp.updateMousePos(self.commonService.getMousePos(e));\r\n            }\r\n            else if (self.cmpRef && self.cmpRef._hostElement) {\r\n                var cmp = self.cmpRef._hostElement.component;\r\n                cmp.updateMousePos(self.commonService.getMousePos(e));\r\n            }\r\n        }\r\n    };\r\n    return IntegralUITooltip;\r\n}());\r\n__decorate([\r\n    core_1.Input('iuiTooltip'),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUITooltip.prototype, \"settings\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUITooltip.prototype, \"tooltipRef\", void 0);\r\n__decorate([\r\n    core_1.HostListener('mouseenter', ['$event']),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUITooltip.prototype, \"onMouseEnter\", null);\r\n__decorate([\r\n    core_1.HostListener('mouseleave', ['$event']),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUITooltip.prototype, \"onMouseLeave\", null);\r\n__decorate([\r\n    core_1.HostListener('mousemove', ['$event']),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUITooltip.prototype, \"onMouseMove\", null);\r\nIntegralUITooltip = __decorate([\r\n    core_1.Directive({\r\n        selector: '[iuiTooltip]',\r\n    }),\r\n    __metadata(\"design:paramtypes\", [core_1.ElementRef,\r\n        core_1.ComponentFactoryResolver,\r\n        integralui_common_service_1.IntegralUICommonService])\r\n], IntegralUITooltip);\r\nexports.IntegralUITooltip = IntegralUITooltip;\r\n//# sourceMappingURL=integralui.tooltip.js.map","/*\r\n  filename: integralui.accordion.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(g,b){function a(){this.constructor=g}for(var d in b)b.hasOwnProperty(d)&&(g[d]=b[d]);g.prototype=null===b?Object.create(b):(a.prototype=b.prototype,new a)},__decorate=this&&this.__decorate||function(g,b,a,d){var f=arguments.length,e=3>f?b:null===d?d=Object.getOwnPropertyDescriptor(b,a):d,c;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)e=Reflect.decorate(g,b,a,d);else for(var h=g.length-1;0<=h;h--)if(c=g[h])e=(3>f?c(e):3<f?c(b,a,e):\r\nc(b,a))||e;return 3<f&&e&&Object.defineProperty(b,a,e),e},__metadata=this&&this.__metadata||function(g,b){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(g,b)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),integralui_data_service_1=require(\"../services/integralui.data.service\"),integralui_groupbox_1=require(\"./integralui.groupbox\"),IntegralUIAccordion=\r\nfunction(g){function b(a,d,b,e){var c=g.call(this,d)||this;c.dataService=a;c.commonService=d;c.cmpResolver=b;c.baseService=e;c.numGroups=0;c.currentSelection=null;c.currentSelectedIndex=-1;c.selectedComponent=null;c.prevComponent=null;c.removeIndex=-1;c.toggleTimer=null;c.afterCollapse=new core_1.EventEmitter;c.afterExpand=new core_1.EventEmitter;c.afterSelect=new core_1.EventEmitter;c.beforeCollapse=new core_1.EventEmitter;c.beforeExpand=new core_1.EventEmitter;c.beforeSelect=new core_1.EventEmitter;\r\nc.groupAdding=new core_1.EventEmitter;c.groupAdded=new core_1.EventEmitter;c.clear=new core_1.EventEmitter;c.groupRemoving=new core_1.EventEmitter;c.groupRemoved=new core_1.EventEmitter;c.selectionChanged=new core_1.EventEmitter;c.groupList=[];return c}__extends(b,g);Object.defineProperty(b.prototype,\"selectedIndex\",{get:function(){return this.currentSelectedIndex},set:function(a){this.currentSelectedIndex!=a&&(this.currentSelectedIndex=a,this.selectComponentByIndex(a))},enumerable:!0,configurable:!0});\r\nObject.defineProperty(b.prototype,\"selectedGroup\",{get:function(){return this.currentSelection},set:function(a){this.currentSelection!=a&&(this.currentSelection=a,this.selectGroup(a))},enumerable:!0,configurable:!0});b.prototype.ngOnInit=function(){this.baseService.setComponent(this);this.dataService.init([{data:this.groups}]);this.generalClassName=\"iui-accordion\";this.initStyle()};b.prototype.ngAfterContentInit=function(){this.groupList=this.contentList.toArray();this.numGroups=this.groupList.length;\r\n0<this.numGroups&&(0<=this.selectedIndex?this.selectComponentByIndex(this.selectedIndex):this.selectedGroup&&this.groups?this.selectComponentByIndex(this.groups.indexOf(this.selectedGroup)):this.selectComponentByIndex(0));this.updateLayout()};b.prototype.ngOnDestroy=function(){this.toggleTimer&&clearInterval(this.toggleTimer)};b.prototype.ngAfterContentChecked=function(){this.contentList&&(this.groupList=this.contentList.toArray(),this.numGroups!=this.groupList.length&&(this.numGroups=this.groupList.length,\r\nthis.selectComponentByIndex(this.selectedIndex)),0==this.numGroups&&(this.currentSelection=this.selectedComponent=null))};b.prototype.addGroup=function(a){this.callEventAdd(\"add\",a)};b.prototype.clearGroups=function(){this.dataService.clear();this.clear.emit(null)};b.prototype.insertGroupAt=function(a,d){this.callEventAdd(\"at\",a,d)};b.prototype.insertGroupBefore=function(a,d){this.callEventAdd(\"ref\",a,-1,d)};b.prototype.insertGroupAfter=function(a,d){this.callEventAdd(\"ref\",a,-1,d,!0)};b.prototype.removeGroup=\r\nfunction(a){this.callEventRemove(a)};b.prototype.removeGroupAt=function(a){this.groups&&0<=a&&a<this.groups.length&&this.callEventRemove(this.groups[a])};b.prototype.callEventAdd=function(a,d,b,e,c){var f={cancel:!1,group:d};this.groupAdding.emit(f);if(1!=f.cancel){switch(a){case \"at\":this.dataService.insert(d,b);break;case \"ref\":this.dataService.insertByRef(d,e,c);break;default:this.dataService.insert(d)}this.groupAdded.emit({group:d});this.selectedComponent||this.selectComponentByIndex(0)}};b.prototype.callEventRemove=\r\nfunction(a){var d={cancel:!1,group:a};this.groupRemoving.emit(d);1!=d.cancel&&(this.removeIndex=this.groups?this.groups.indexOf(a):-1,this.dataService.removeAt(a),this.groupRemoved.emit({group:a}))};b.prototype.collapse=function(a){if(a=this.getComponentFromGroup(a))a.expanded=!1};b.prototype.expand=function(a){if(a=this.getComponentFromGroup(a))a.expanded=!0};b.prototype.closeGroups=function(a){this.groupList=this.contentList.toArray();this.groupList.forEach(function(d){d!=a&&(d.selected=!1,d.collapse())})};\r\nb.prototype.collapseComponent=function(a){if(a)var d=this,b=setTimeout(function(){var e=0,c=a.getContentHeight(),f=setInterval(function(){0<c?(e=0==e?1:e+2,c-=e,c=0<c?c:0,a.setContentHeight(c+\"px\")):(a.setContentHeight(\"0\"),a.expanded=!1,d.invokeEvent(\"AFTER_COLLAPSE\",a),clearInterval(f))},25);clearInterval(b)},100)};b.prototype.toggleGroups=function(){var a=this;a.toggleTimer&&(a.endToggle(),clearInterval(a.toggleTimer));a.selectedComponent&&(a.toggleTimer=setTimeout(function(){var d=0,b=0,e=0,c=\r\na.selectedComponent.getContentHeight(),g=0;if(a.selectedComponent.expanded){a.prevComponent&&(d=a.prevComponent.getContentHeight());var k=setInterval(function(){b<c?(e=0==e?1:e+2,b+=e,d-=e,d=0<d?d:0,g=.75*b/c,a.selectedComponent.setOpacity(g),a.selectedComponent.setContentHeight(b+\"px\"),a.prevComponent&&a.prevComponent.setContentHeight(d+\"px\")):(g=1,a.endToggle(),clearInterval(k))},25)}else a.selectedComponent.setContentHeight(\"0\"),a.prevComponent&&a.prevComponent.setContentHeight(\"auto\");clearInterval(a.toggleTimer);\r\na.toggleTimer=null},100))};b.prototype.endToggle=function(){this.selectedComponent.setOpacity(1);this.selectedComponent.setContentHeight(\"auto\");this.prevComponent&&(this.prevComponent.setContentHeight(\"0\"),this.prevComponent.expanded=!1,this.invokeEvent(\"AFTER_COLLAPSE\",this.prevComponent));this.invokeEvent(\"AFTER_EXPAND\",this.selectedComponent)};b.prototype.getGroupCurrentIndex=function(a){this.groupList=this.contentList.toArray();return a&&this.groupList?this.groupList.indexOf(a):-1};b.prototype.getGroupDataIndex=\r\nfunction(a){return a&&(a=this.getGroupCurrentIndex(a),this.groups&&0<=a&&a<this.groups.length)?a:-1};b.prototype.getGroupData=function(a){return this.groups&&0<=a&&a<this.groups.length?this.groups[a]:null};b.prototype.getGroupIndex=function(a){return a&&this.groups?this.groups.indexOf(a):-1};b.prototype.getComponentData=function(a){if(a){if(a.data)return a.data;a=this.getGroupDataIndex(a);if(this.groups&&0<=a&&a<this.groups.length)return this.groups[a]}return null};b.prototype.getComponentFromGroup=\r\nfunction(a){var b=null;if(a){this.groupList=this.contentList.toArray();for(var f=0;f<this.groupList.length;f++)if(this.groupList[f].data&&this.groupList[f].data==a){b=this.groupList[f];break}}return b};b.prototype.invokeEvent=function(a,b){var d=!0;if(this.isEnabled){var e=this.getComponentData(b),c={cancel:!1,group:e};switch(a){case \"AFTER_COLLAPSE\":this.afterCollapse.emit({group:e});break;case \"AFTER_EXPAND\":this.afterExpand.emit({group:e});this.closeGroups(b);break;case \"AFTER_SELECT\":this.afterSelect.emit({group:e});\r\nbreak;case \"BEFORE_COLLAPSE\":this.beforeCollapse.emit(c);d=!c.cancel;break;case \"BEFORE_EXPAND\":this.beforeExpand.emit(c);d=!c.cancel;break;case \"BEFORE_SELECT\":this.beforeSelect.emit(c),d=!c.cancel}}return d};b.prototype.invokeMethod=function(a,b){var d=!0;if(this.isEnabled){var e;switch(a){case \"COLLAPSE_GROUP\":this.collapseComponent(b);break;case \"SELECT_GROUP\":(e=this.invokeEvent(\"BEFORE_SELECT\",b))&&(d=this.selectComponent(b))&&this.invokeEvent(\"AFTER_SELECT\",b);break;case \"TOGGLE_GROUPS\":this.selectComponent(b),\r\nthis.toggleGroups(),d=!1}}return d};b.prototype.isIndexInRange=function(a){this.contentList&&(this.groupList=this.contentList.toArray());return this.groupList?0<=a&&a<this.groupList.length:!1};b.prototype.updateLayout=function(){};b.prototype.clearSelection=function(){this.clearCmpSelection()};b.prototype.clearCmpSelection=function(a){this.groupList=this.contentList.toArray();this.groupList.forEach(function(b){b!=a&&(b.selected=!1,b.expanded=!1)});a||(this.selectedComponent=null);this.prevComponent&&\r\n!this.prevComponent.expanded&&(this.prevComponent=null)};b.prototype.selectComponent=function(a){if(a&&a!=this.selectedComponent){var b=this.getGroupCurrentIndex(a);this.currentSelectedIndex=b;this.groups&&0<=b&&b<this.groups.length&&(this.currentSelection=this.groups[b]);this.prevComponent=this.selectedComponent;this.selectedComponent=a;this.clearCmpSelection(a);a.selected=!0;a.expanded=!0;this.selectionChanged.emit({index:b,group:this.getGroupData(this.getGroupDataIndex(a))});return!0}return!1};\r\nb.prototype.selectComponentByIndex=function(a){var b=this,f=setTimeout(function(){b.isIndexInRange(a)&&b.selectComponent(b.groupList[a]);clearTimeout(f)},100)};b.prototype.selectGroup=function(a){this.groups&&(this.currentSelectedIndex=this.groups.indexOf(a),this.selectComponentByIndex(this.currentSelectedIndex))};b.prototype.refresh=function(){this.updateStyle(this.controlStyle);this.updateControlClass()};return b}(integralui_core_1.IntegralUIBaseComponent);\r\n__decorate([core_1.ContentChildren(integralui_groupbox_1.IntegralUIGroupBox),__metadata(\"design:type\",core_1.QueryList)],IntegralUIAccordion.prototype,\"contentList\",void 0);__decorate([core_1.ViewChild(\"content\",{read:core_1.ViewContainerRef}),__metadata(\"design:type\",core_1.ViewContainerRef)],IntegralUIAccordion.prototype,\"contentRef\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Array)],IntegralUIAccordion.prototype,\"groups\",void 0);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUIAccordion.prototype,\"selectedIndex\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Object),__metadata(\"design:paramtypes\",[Object])],IntegralUIAccordion.prototype,\"selectedGroup\",null);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIAccordion.prototype,\"afterCollapse\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIAccordion.prototype,\"afterExpand\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIAccordion.prototype,\"afterSelect\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIAccordion.prototype,\"beforeCollapse\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIAccordion.prototype,\"beforeExpand\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIAccordion.prototype,\"beforeSelect\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIAccordion.prototype,\"groupAdding\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIAccordion.prototype,\"groupAdded\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIAccordion.prototype,\"clear\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIAccordion.prototype,\"groupRemoving\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIAccordion.prototype,\"groupRemoved\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIAccordion.prototype,\"selectionChanged\",void 0);\r\nIntegralUIAccordion=__decorate([core_1.Component({selector:\"iui-accordion\",template:'\\n\\t\\t<div [ngClass]=\"getControlClass()\">\\n\\t\\t\\t<div #content>\\n\\t\\t\\t\\t<ng-content></ng-content>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t',inputs:[\"controlStyle\",\"data\",\"enabled\",\"name\",\"state\"],providers:[integralui_core_1.IntegralUIBaseService,integralui_data_service_1.IntegralUIDataService],encapsulation:core_1.ViewEncapsulation.None}),__metadata(\"design:paramtypes\",[integralui_data_service_1.IntegralUIDataService,integralui_common_service_1.IntegralUICommonService,\r\ncore_1.ComponentFactoryResolver,integralui_core_1.IntegralUIBaseService])],IntegralUIAccordion);exports.IntegralUIAccordion=IntegralUIAccordion;","\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require(\"@angular/core\");\r\nvar integralui_core_1 = require(\"./integralui.core\");\r\nvar integralui_common_service_1 = require(\"../services/integralui.common.service\");\r\nvar integralui_data_service_1 = require(\"../services/integralui.data.service\");\r\nvar IntegralUILayout = (function (_super) {\r\n    __extends(IntegralUILayout, _super);\r\n    // Events ----------------------------------------------------------------------------\r\n    //@Output() afterSelect: EventEmitter<any> = new EventEmitter();\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUILayout(dataService, elemRef, commonService) {\r\n        var _this = _super.call(this, commonService) || this;\r\n        _this.dataService = dataService;\r\n        _this.elemRef = elemRef;\r\n        _this.commonService = commonService;\r\n        _this.currentList = [];\r\n        _this.dataPanels = [];\r\n        _this.fullList = [];\r\n        _this.options = {\r\n            dataFields: null\r\n        };\r\n        // Layout\r\n        _this.clientRect = { width: 0, height: 0 };\r\n        _this.prevClientRect = { width: 0, height: 0 };\r\n        _this.updateTimer = null;\r\n        _this.updateOptions();\r\n        return _this;\r\n    }\r\n    Object.defineProperty(IntegralUILayout.prototype, \"data\", {\r\n        get: function () {\r\n            return this.ctrlData;\r\n        },\r\n        set: function (value) {\r\n            this.ctrlData = value;\r\n            if (value && value[this.options.dataFields.panels]) {\r\n                this.dataPanels = value[this.options.dataFields.panels];\r\n                this.updateData();\r\n            }\r\n            this.updateLayout();\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    IntegralUILayout.prototype.ngOnInit = function () {\r\n        this.updateData();\r\n        this.updateCurrentList();\r\n        this.generalClassName = \"iui-layout\";\r\n        this.initStyle();\r\n    };\r\n    IntegralUILayout.prototype.updateData = function () {\r\n        this.dataService.init([{ data: this.dataPanels }]);\r\n    };\r\n    // Change Detection ------------------------------------------------------------------\r\n    IntegralUILayout.prototype.ngAfterContentChecked = function () {\r\n        var self = this;\r\n        if (self.autoUpdate == true) {\r\n            self.clientRect = {\r\n                width: self.elemRef.nativeElement.firstElementChild.clientWidth,\r\n                height: self.elemRef.nativeElement.firstElementChild.clientHeight\r\n            };\r\n            if (self.clientRect.width != self.prevClientRect.width) {\r\n                self.updateLayout();\r\n                self.prevClientRect.width = self.clientRect.width;\r\n            }\r\n            else if (self.clientRect.height != self.prevClientRect.height) {\r\n                self.updateLayout();\r\n                self.prevClientRect.height = self.clientRect.height;\r\n            }\r\n        }\r\n    };\r\n    // Data ------------------------------------------------------------------------------\r\n    IntegralUILayout.prototype.updateOptions = function (value) {\r\n        if (value) {\r\n            this.options = {\r\n                dataFields: null\r\n            };\r\n        }\r\n        else {\r\n            this.options = {\r\n                dataFields: null\r\n            };\r\n            this.updateDataFields();\r\n        }\r\n    };\r\n    IntegralUILayout.prototype.updateDataFields = function (fields) {\r\n        if (fields)\r\n            this.options.dataFields = {\r\n                enabled: fields.enabled ? fields.enabled : 'enabled',\r\n                id: fields.id ? fields.id : 'id',\r\n                objects: fields.panels ? fields.panels : 'panels',\r\n                orientation: fields.orientation ? fields.orientation : 'orientation',\r\n                panels: fields.panels ? fields.panels : 'panels',\r\n                pid: fields.pid ? fields.pid : 'pid',\r\n                size: fields.size ? fields.size : 'size',\r\n                visible: fields.visible ? fields.visible : 'visible'\r\n            };\r\n        else\r\n            this.options.dataFields = {\r\n                enabled: 'enabled',\r\n                id: 'id',\r\n                objects: 'panels',\r\n                orientation: 'orientation',\r\n                panels: 'panels',\r\n                pid: 'pid',\r\n                size: 'size',\r\n                visible: 'visible'\r\n            };\r\n        if (this.dataService)\r\n            this.dataService.updateDataFields(this.options.dataFields);\r\n    };\r\n    IntegralUILayout.prototype.updateCurrentList = function () {\r\n        var self = this;\r\n        self.currentList.length = 0;\r\n        var list = self.dataService.getList();\r\n        if (list) {\r\n            list.forEach(function (panel) {\r\n                self.addChildPanels(panel, null);\r\n            });\r\n        }\r\n    };\r\n    IntegralUILayout.prototype.addChildPanels = function (parent, pid, flag) {\r\n        var self = this;\r\n        var pass = true;\r\n        if (!parent[self.options.dataFields.panels]) {\r\n            pass = self.addPanelToCurrentList(parent, pid, flag);\r\n            return pass;\r\n        }\r\n        //pass = self.addPanelToCurrentList(parent, pid, flag);\r\n        if (pass) {\r\n            var list = parent[self.options.dataFields.panels];\r\n            if (list) {\r\n                list.forEach(function (panel) {\r\n                    self.addChildPanels(panel, parent[self.options.dataFields.id], flag);\r\n                });\r\n            }\r\n        }\r\n        return pass;\r\n    };\r\n    IntegralUILayout.prototype.addPanelToCurrentList = function (panel, pid, flag) {\r\n        var self = this;\r\n        panel.type = \"panel\";\r\n        if (!panel[self.options.dataFields.id])\r\n            panel[self.options.dataFields.id] = this.commonService.getUniqueId();\r\n        if (pid)\r\n            panel[self.options.dataFields.pid] = pid;\r\n        var pass = self.isPanelAllowed(panel);\r\n        if (pass) {\r\n            if (flag)\r\n                self.fullList.push(panel);\r\n            else\r\n                self.currentList.push({\r\n                    data: panel,\r\n                    position: { top: 0, left: 0 },\r\n                    size: { width: 0, height: 0 }\r\n                });\r\n        }\r\n        return pass;\r\n    };\r\n    IntegralUILayout.prototype.isPanelAllowed = function (panel) {\r\n        //if (panel[this.options.dataFields.visible] == false)\r\n        //return false;\r\n        return true;\r\n    };\r\n    // Layout --------------------------------------------------------------------\r\n    IntegralUILayout.prototype.resetLayout = function () {\r\n        if (this.updateTimer)\r\n            clearTimeout(this.updateTimer);\r\n        this.updateTimer = null;\r\n    };\r\n    IntegralUILayout.prototype.updateLayout = function () {\r\n        var self = this;\r\n        //if (self.allowUpdate){\r\n        self.resetLayout();\r\n        self.updateTimer = setTimeout(function () {\r\n            self.updateCurrentList();\r\n            self.clientRect = {\r\n                width: self.elemRef.nativeElement.firstElementChild.clientWidth,\r\n                height: self.elemRef.nativeElement.firstElementChild.clientHeight\r\n            };\r\n            var parentBounds = {\r\n                top: 0,\r\n                left: 0,\r\n                width: self.clientRect.width,\r\n                height: self.clientRect.height\r\n            };\r\n            self.updatePanelLayout(self.data, parentBounds);\r\n            clearTimeout(self.updateTimer);\r\n        }, 100);\r\n        //}\r\n    };\r\n    IntegralUILayout.prototype.updatePanelLayout = function (panel, bounds) {\r\n        var panelObj = this.getCurrentPanelObj(panel[this.options.dataFields.id]);\r\n        if (panelObj) {\r\n            panelObj.position = { top: bounds.top, left: bounds.left };\r\n            panelObj.size = { width: bounds.width, height: bounds.height };\r\n        }\r\n        var currentBounds = {\r\n            top: bounds.top,\r\n            left: bounds.left,\r\n            width: bounds.width,\r\n            height: bounds.height\r\n        };\r\n        var currentOrientation = panel[this.options.dataFields.orientation] ? panel[this.options.dataFields.orientation] : integralui_core_1.IntegralUIOrientation.Horizontal;\r\n        var currentSize = 0;\r\n        var remSize = 1;\r\n        var list = panel[this.options.dataFields.panels];\r\n        if (list && list.length > 0) {\r\n            for (var i = 0; i < list.length; i++) {\r\n                currentSize = list[i][this.options.dataFields.size] ? list[i][this.options.dataFields.size] : remSize / (list.length - i);\r\n                if (currentSize <= remSize) {\r\n                    if (currentOrientation == integralui_core_1.IntegralUIOrientation.Horizontal)\r\n                        currentBounds.height = bounds.height * currentSize;\r\n                    else\r\n                        currentBounds.width = bounds.width * currentSize;\r\n                    this.updatePanelLayout(list[i], currentBounds);\r\n                    if (currentOrientation == integralui_core_1.IntegralUIOrientation.Horizontal)\r\n                        currentBounds.top += currentBounds.height;\r\n                    else\r\n                        currentBounds.left += currentBounds.width;\r\n                    remSize -= currentSize;\r\n                }\r\n            }\r\n        }\r\n    };\r\n    IntegralUILayout.prototype.getCurrentPanelObj = function (id) {\r\n        var found = null;\r\n        for (var j = 0; j < this.currentList.length; j++) {\r\n            if (this.currentList[j].data[this.options.dataFields.id] == id) {\r\n                found = this.currentList[j];\r\n                break;\r\n            }\r\n        }\r\n        return found;\r\n    };\r\n    return IntegralUILayout;\r\n}(integralui_core_1.IntegralUIBaseComponent));\r\n__decorate([\r\n    core_1.ContentChild(core_1.TemplateRef),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUILayout.prototype, \"panelTemplate\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean)\r\n], IntegralUILayout.prototype, \"autoUpdate\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object),\r\n    __metadata(\"design:paramtypes\", [Object])\r\n], IntegralUILayout.prototype, \"data\", null);\r\nIntegralUILayout = __decorate([\r\n    core_1.Component({\r\n        selector: 'iui-layout',\r\n        template: \"\\n\\t\\t<div [ngClass]=\\\"getControlClass()\\\">\\n\\t        <div *ngFor=\\\"let panel of currentList; let i = index\\\" style=\\\"background:#cecece;border:thin solid gray;position:absolute;\\\" [ngStyle]=\\\"{ top: panel.position.top + 'px', left: panel.position.left + 'px', width: panel.size.width + 'px', height: panel.size.height + 'px' }\\\" #panelElem>\\n\\t\\t\\t\\t<span [iuiTemplateOutlet]=\\\"panelTemplate\\\" [iuiTemplateOutletContext]=\\\"{$implicit: (panel.data)}\\\"></span>\\n\\t        </div>\\n\\t\\t</div>\\n\\t\",\r\n        inputs: ['controlStyle', 'data', 'enabled', 'name', 'state'],\r\n        providers: [integralui_data_service_1.IntegralUIDataService],\r\n        encapsulation: core_1.ViewEncapsulation.None\r\n    }),\r\n    __metadata(\"design:paramtypes\", [integralui_data_service_1.IntegralUIDataService,\r\n        core_1.ElementRef,\r\n        integralui_common_service_1.IntegralUICommonService])\r\n], IntegralUILayout);\r\nexports.IntegralUILayout = IntegralUILayout;\r\n//# sourceMappingURL=integralui.layout.js.map","/*\r\n  filename: integralui.listbar.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(h,b){function a(){this.constructor=h}for(var d in b)b.hasOwnProperty(d)&&(h[d]=b[d]);h.prototype=null===b?Object.create(b):(a.prototype=b.prototype,new a)},__decorate=this&&this.__decorate||function(h,b,a,d){var g=arguments.length,e=3>g?b:null===d?d=Object.getOwnPropertyDescriptor(b,a):d,f;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)e=Reflect.decorate(h,b,a,d);else for(var c=h.length-1;0<=c;c--)if(f=h[c])e=(3>g?f(e):3<g?f(b,a,e):\r\nf(b,a))||e;return 3<g&&e&&Object.defineProperty(b,a,e),e},__metadata=this&&this.__metadata||function(h,b){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(h,b)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),integralui_data_service_1=require(\"../services/integralui.data.service\"),integralui_listgroup_1=require(\"./integralui.listgroup\"),IntegralUIListBar=\r\nfunction(h){function b(a,d,b,e,f){var c=h.call(this,b)||this;c.elemRef=a;c.dataService=d;c.commonService=b;c.cmpResolver=e;c.baseService=f;c.numGroups=0;c.blockMarginTop=0;c.scrollPos={x:0,y:0};c.maxScrollPos={x:0,y:0};c.buttonWidth=0;c.groupEventList=[];c.initScrollPos=0;c.isScrollActive=!1;c.isScrollVisible=!1;c.scrollCount=0;c.scrollTimer=null;c.stopScrolling=!1;c.currentSelection=null;c.currentSelectedIndex=-1;c.selectedComponent=null;c.prevComponent=null;c.removeIndex=-1;c.afterCollapse=new core_1.EventEmitter;\r\nc.afterExpand=new core_1.EventEmitter;c.afterSelect=new core_1.EventEmitter;c.beforeCollapse=new core_1.EventEmitter;c.beforeExpand=new core_1.EventEmitter;c.beforeSelect=new core_1.EventEmitter;c.groupAdding=new core_1.EventEmitter;c.groupAdded=new core_1.EventEmitter;c.clear=new core_1.EventEmitter;c.groupRemoving=new core_1.EventEmitter;c.groupRemoved=new core_1.EventEmitter;c.selectionChanged=new core_1.EventEmitter;c.groupList=[];return c}__extends(b,h);Object.defineProperty(b.prototype,\"selectedIndex\",\r\n{get:function(){return this.currentSelectedIndex},set:function(a){this.currentSelectedIndex!=a&&(this.currentSelectedIndex=a,this.selectComponentByIndex(a))},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\"selectedGroup\",{get:function(){return this.currentSelection},set:function(a){this.currentSelection!=a&&(this.currentSelection=a,this.selectGroup(a))},enumerable:!0,configurable:!0});b.prototype.ngOnInit=function(){this.baseService.setComponent(this);this.dataService.init([{data:this.groups}]);\r\nthis.generalClassName=\"iui-listbar\";this.defaultStyle={general:{disabled:this.generalClassName+\"-disabled\",focused:this.generalClassName+\"-focused\",normal:this.generalClassName,hovered:this.generalClassName+\"-hovered\",selected:this.generalClassName+\"-selected\"}};this.updateStyle(this.controlStyle);this.updateControlClass()};b.prototype.ngAfterContentInit=function(){this.groupList=this.contentList.toArray();this.numGroups=this.groupList.length;this.attachGroupEvents();0<this.numGroups&&(0<=this.selectedIndex?\r\nthis.selectComponentByIndex(this.selectedIndex):this.selectedGroup&&this.groups&&this.selectComponentByIndex(this.groups.indexOf(this.selectedGroup)));this.updateLayout()};b.prototype.ngAfterContentChecked=function(){this.contentList&&(this.groupList=this.contentList.toArray(),this.numGroups!=this.groupList.length&&(this.attachGroupEvents(),this.numGroups=this.groupList.length,this.selectComponentByIndex(this.selectedIndex)),0==this.numGroups&&(this.selectedComponent=null));this.updateLayout()};b.prototype.clearGroups=\r\nfunction(){this.dataService.clear();this.clear.emit(null)};b.prototype.addGroup=function(a){this.callEventAdd(\"add\",a)};b.prototype.insertGroupAt=function(a,b){this.callEventAdd(\"at\",a,b)};b.prototype.insertGroupBefore=function(a,b){this.callEventAdd(\"ref\",a,-1,b)};b.prototype.insertGroupAfter=function(a,b){this.callEventAdd(\"ref\",a,-1,b,!0)};b.prototype.removeGroup=function(a){this.callEventRemove(a)};b.prototype.removeGroupAt=function(a){this.groups&&0<=a&&a<this.groups.length&&this.callEventRemove(this.groups[a])};\r\nb.prototype.callEventAdd=function(a,b,g,e,f){var d={cancel:!1,group:b};this.groupAdding.emit(d);if(1!=d.cancel){switch(a){case \"at\":this.dataService.insert(b,g);break;case \"ref\":this.dataService.insertByRef(b,e,f);break;default:this.dataService.insert(b)}this.groupAdded.emit({group:b});this.selectedComponent||this.selectComponentByIndex(0)}};b.prototype.callEventRemove=function(a){var b={cancel:!1,group:a};this.groupRemoving.emit(b);1!=b.cancel&&(this.removeIndex=this.groups?this.groups.indexOf(a):\r\n-1,this.dataService.removeAt(a),this.groupRemoved.emit({group:a}))};b.prototype.closeGroups=function(a){this.groupList=this.contentList.toArray();this.groupList.forEach(function(b,g){b!=a&&(b.selected=!1,b.collapse())})};b.prototype.toggleGroups=function(){var a=this;if(a.selectedComponent)var b=setTimeout(function(){var d=0,e=0,f=0,c=a.selectedComponent.getContentHeight();if(a.selectedComponent.expanded){a.prevComponent&&(d=a.prevComponent.getContentHeight());var h=setInterval(function(){e<c?(f=\r\n0==f?1:f+2,e+=f,d-=f,d=0<d?d:0,a.selectedComponent.setContentHeight(e+\"px\"),a.prevComponent&&a.prevComponent.setContentHeight(d+\"px\")):(a.selectedComponent.setContentHeight(\"auto\"),a.prevComponent&&(a.prevComponent.setContentHeight(\"0\"),a.prevComponent.expanded=!1,a.invokeEvent(\"AFTER_COLLAPSE\",a.prevComponent)),a.invokeEvent(\"AFTER_EXPAND\",a.selectedComponent),clearInterval(h))},25)}else a.selectedComponent.setContentHeight(\"0\"),a.prevComponent&&a.prevComponent.setContentHeight(\"auto\");clearInterval(b)},\r\n100)};b.prototype.getGroupCurrentIndex=function(a){this.groupList=this.contentList.toArray();return a&&this.groupList?this.groupList.indexOf(a):-1};b.prototype.getGroupDataIndex=function(a){return a&&(a=this.getGroupCurrentIndex(a),this.groups&&0<=a&&a<this.groups.length)?a:-1};b.prototype.getGroupData=function(a){return this.groups&&0<=a&&a<this.groups.length?this.groups[a]:null};b.prototype.getGroupIndex=function(a){return a&&this.groups?this.groups.indexOf(a):-1};b.prototype.getComponentData=function(a){if(a){if(a.data)return a.data;\r\na=this.getGroupDataIndex(a);if(this.groups&&0<=a&&a<this.groups.length)return this.groups[a]}return null};b.prototype.invokeEvent=function(a,b){var d=!0,e=this.getComponentData(b),f={cancel:!1,group:e};switch(a){case \"AFTER_COLLAPSE\":this.afterCollapse.emit({group:e});break;case \"AFTER_EXPAND\":this.afterExpand.emit({group:e});this.closeGroups(b);break;case \"BEFORE_COLLAPSE\":this.beforeCollapse.emit(f);d=!f.cancel;break;case \"BEFORE_EXPAND\":this.beforeExpand.emit(f),d=!f.cancel}return d};b.prototype.invokeMethod=\r\nfunction(a,b){var d=!0;switch(a){case \"SELECT_GROUP\":d=this.selectComponent(b)}return d};b.prototype.isIndexInRange=function(a){this.contentList&&(this.groupList=this.contentList.toArray());return this.groupList?0<=a&&a<this.groupList.length:!1};b.prototype.attachGroupEvents=function(){var a=this;this.groupList=this.contentList.toArray();a.groupEventList&&(a.groupEventList.forEach(function(a){a.forEach(function(a){a.unsubscribe()})}),a.groupEventList.length=0);this.groupList&&0<this.groupList.length&&\r\nthis.groupList.forEach(function(b){var d=[];d.push(b.beforeSelect.subscribe(function(d){var e={cancel:!1,group:a.getComponentData(b)};a.beforeSelect.emit(e);d.cancel=e.cancel}));d.push(b.afterSelect.subscribe(function(d){a.clearSelection(b)}));d.push(b.selectedChanged.subscribe(function(d){b.selected&&a.clearSelection(b)}));a.groupEventList.push(d)})};b.prototype.updateLayout=function(){this.contentElem&&(this.isScrollVisible=this.elemRef.nativeElement.firstElementChild.offsetHeight<this.contentElem.nativeElement.offsetHeight,\r\nthis.maxScrollPos={x:0,y:this.isScrollVisible?this.elemRef.nativeElement.firstElementChild.offsetHeight-this.contentElem.nativeElement.offsetHeight-(this.buttonUpElem.nativeElement.offsetHeight+this.buttonDownElem.nativeElement.offsetHeight)-2:0},this.initScrollPos=this.isScrollVisible?this.buttonUpElem.nativeElement.offsetHeight:0,this.isScrollVisible||(this.scrollPos.y=0))};b.prototype.scrollUpPressed=function(){this.isEnabled&&this.startScroll(!1)};b.prototype.scrollUpReleased=function(){this.isEnabled&&\r\nthis.stopScroll()};b.prototype.scrollDownPressed=function(){this.isEnabled&&this.startScroll(!0)};b.prototype.scrollDownReleased=function(){this.isEnabled&&this.stopScroll()};b.prototype.startScroll=function(a){var b=this;b.scrollTimer&&clearInterval(b.scrollTimer);b.scrollCount=0;b.isScrollActive=!0;b.scrollTimer=setInterval(function(){b.scrollTimerElapsed(a)},100)};b.prototype.stopScroll=function(){this.scrollTimer&&clearInterval(this.scrollTimer);this.isScrollActive=!1};b.prototype.scrollTimerElapsed=\r\nfunction(a){0==this.scrollCount&&(this.scrollCount=1);this.scrollCount+=5;this.stopScrolling=!1;this.processScroll(a);this.stopScrolling&&this.stopScroll()};b.prototype.processScroll=function(a){a?this.scrollPos.y-this.scrollCount>this.maxScrollPos.y?this.scrollPos.y-=this.scrollCount:(this.stopScrolling=!0,this.scrollPos.y=this.maxScrollPos.y):0>this.scrollPos.y+this.scrollCount?this.scrollPos.y+=this.scrollCount:(this.stopScrolling=!0,this.scrollPos.y=0)};b.prototype.listMouseWheel=function(a){this.isEnabled&&\r\n(a.preventDefault(),this.setScrollPos({x:0,y:this.scrollPos.y- -30*Math.max(-1,Math.min(1,a.wheelDelta||-a.detail))}))};b.prototype.setScrollPos=function(a){a.y<this.maxScrollPos.y&&(a.y=this.maxScrollPos.y);0<a.y&&(a.y=0);this.scrollPos={x:0,y:a.y}};b.prototype.clearSelection=function(a){this.groupList=this.contentList.toArray();this.groupList.forEach(function(b,g){b!=a&&(b.selected=!1,b.clearSelection())})};b.prototype.selectComponent=function(a){var b=this.getComponentData(a),g={cancel:!1,group:b};\r\nthis.beforeSelect.emit(g);return 1!=g.cancel&&a&&a!=this.selectedComponent?(this.currentSelectedIndex=g=this.getGroupCurrentIndex(a),this.groups&&0<=g&&g<this.groups.length&&(this.currentSelection=this.groups[g]),this.prevComponent=this.selectedComponent,this.selectedComponent=a,this.clearSelection(a),a.selected=!0,a.expanded=!0,this.afterSelect.emit({group:b}),this.selectionChanged.emit({index:g,group:this.getGroupData(this.getGroupDataIndex(a))}),!0):!1};b.prototype.selectComponentByIndex=function(a){this.isIndexInRange(a)&&\r\nthis.selectComponent(this.groupList[a])};b.prototype.selectGroup=function(a){this.groups&&(this.currentSelectedIndex=this.groups.indexOf(a),this.selectComponentByIndex(this.currentSelectedIndex))};return b}(integralui_core_1.IntegralUIBaseComponent);__decorate([core_1.ViewChild(\"buttonUp\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUIListBar.prototype,\"buttonUpElem\",void 0);\r\n__decorate([core_1.ViewChild(\"buttonDown\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUIListBar.prototype,\"buttonDownElem\",void 0);__decorate([core_1.ViewChild(\"content\",{read:core_1.ViewContainerRef}),__metadata(\"design:type\",core_1.ViewContainerRef)],IntegralUIListBar.prototype,\"contentRef\",void 0);__decorate([core_1.ViewChild(\"content\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUIListBar.prototype,\"contentElem\",void 0);\r\n__decorate([core_1.ContentChildren(integralui_listgroup_1.IntegralUIListGroup),__metadata(\"design:type\",core_1.QueryList)],IntegralUIListBar.prototype,\"contentList\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Array)],IntegralUIListBar.prototype,\"groups\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUIListBar.prototype,\"selectedIndex\",null);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Object),__metadata(\"design:paramtypes\",[Object])],IntegralUIListBar.prototype,\"selectedGroup\",null);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIListBar.prototype,\"afterCollapse\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIListBar.prototype,\"afterExpand\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIListBar.prototype,\"afterSelect\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIListBar.prototype,\"beforeCollapse\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIListBar.prototype,\"beforeExpand\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIListBar.prototype,\"beforeSelect\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIListBar.prototype,\"groupAdding\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIListBar.prototype,\"groupAdded\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIListBar.prototype,\"clear\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIListBar.prototype,\"groupRemoving\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIListBar.prototype,\"groupRemoved\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIListBar.prototype,\"selectionChanged\",void 0);\r\nIntegralUIListBar=__decorate([core_1.Component({selector:\"iui-listbar\",template:'\\n\\t\\t<div [ngClass]=\"getControlClass()\" (DOMMouseScroll)=\"listMouseWheel($event)\" (mousewheel)=\"listMouseWheel($event)\">\\n\\t\\t\\t<div class=\"iui-listbar-button-up\" [ngStyle]=\"{ \\'display\\': isScrollVisible ? \\'block\\' : \\'none\\' }\" (mousedown)=\"scrollUpPressed()\" (mouseup)=\"scrollUpReleased()\" [ngStyle]=\"{ \\'width\\': buttonWidth + \\'px\\' }\" #buttonUp>\\n\\t\\t\\t\\t<span class=\"iui-listbar-button-up-icon\" [ngStyle]=\"{ \\'display\\': scrollPos.y != 0 ? \\'inline-block\\' : \\'none\\' }\"></span>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div class=\"iui-listbar-content\" [ngStyle]=\"{ \\'margin-top\\': scrollPos.y + initScrollPos - 1 + \\'px\\' }\" #content>\\n\\t\\t\\t\\t<ng-content></ng-content>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div class=\"iui-listbar-button-down\" [ngStyle]=\"{ \\'display\\': isScrollVisible ? \\'block\\' : \\'none\\' }\" (mousedown)=\"scrollDownPressed()\" (mouseup)=\"scrollDownReleased()\" [ngStyle]=\"{ \\'width\\': buttonWidth + \\'px\\' }\" #buttonDown>\\n\\t\\t\\t\\t<span class=\"iui-listbar-button-down-icon\" [ngStyle]=\"{ \\'display\\': scrollPos.y != maxScrollPos.y ? \\'inline-block\\' : \\'none\\' }\"></span>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t',providers:[integralui_core_1.IntegralUIBaseService,\r\nintegralui_data_service_1.IntegralUIDataService],inputs:[\"controlStyle\",\"data\",\"enabled\",\"name\",\"state\"],encapsulation:core_1.ViewEncapsulation.None}),__metadata(\"design:paramtypes\",[core_1.ElementRef,integralui_data_service_1.IntegralUIDataService,integralui_common_service_1.IntegralUICommonService,core_1.ComponentFactoryResolver,integralui_core_1.IntegralUIBaseService])],IntegralUIListBar);exports.IntegralUIListBar=IntegralUIListBar;","/*\r\n  filename: integralui.listbox.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(d,b){function a(){this.constructor=d}for(var c in b)b.hasOwnProperty(c)&&(d[c]=b[c]);d.prototype=null===b?Object.create(b):(a.prototype=b.prototype,new a)},__decorate=this&&this.__decorate||function(d,b,a,c){var g=arguments.length,e=3>g?b:null===c?c=Object.getOwnPropertyDescriptor(b,a):c,h;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)e=Reflect.decorate(d,b,a,c);else for(var f=d.length-1;0<=f;f--)if(h=d[f])e=(3>g?h(e):3<g?h(b,a,e):\r\nh(b,a))||e;return 3<g&&e&&Object.defineProperty(b,a,e),e},__metadata=this&&this.__metadata||function(d,b){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(d,b)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),integralui_data_service_1=require(\"../services/integralui.data.service\"),integralui_dragdrop_service_1=require(\"../services/integralui.dragdrop.service\"),\r\nintegralui_filter_service_1=require(\"../services/integralui.filter.service\"),integralui_base_list_1=require(\"./integralui.base.list\"),integralui_listitem_1=require(\"./integralui.listitem\"),IntegralUIListBox=function(d){function b(a,b,g,e,h,f,k,l){var c=d.call(this,a,b,g,e,h,f)||this;c.dataService=a;c.dragDropService=b;c.elemRef=g;c.elemRenderer=e;c.commonService=h;c.filterService=f;c.cmpResolver=k;c.baseService=l;c.itemList=[];return c}__extends(b,d);b.prototype.ngOnInit=function(){this.baseService.setComponent(this);\r\nthis.updateData();this.updateCurrentList();this.generalClassName=\"iui-listbox\";this.itemClassName=\"iui-listitem\";this.itemContentClassName=this.itemClassName+\"-content\";this.initStyle()};b.prototype.updateData=function(){this.dataService.init([{data:this.items}])};b.prototype.ngAfterViewInit=function(){this.updateLayout()};b.prototype.ngAfterContentInit=function(){};b.prototype.ngOnDestroy=function(){this.removeDropMark();this.updateTimer&&clearTimeout(this.updateTimer)};b.prototype.addItem=function(a){this.callEventAdd(\"add\",\r\na)};b.prototype.clearItems=function(){this.dataService.clear();this.clear.emit(null)};b.prototype.insertItemAt=function(a,b){this.callEventAdd(\"at\",a,b)};b.prototype.removeItemAt=function(a){return this.callEventRemove(null,a)};b.prototype.updateCurrentList=function(){this.currentList.length=0;var a=this.dataService.getList();if(a){this.applySorting(a);for(var b=0;b<a.length;b++)this.addItemToCurrentList(a[b])}};b.prototype.addItemToCurrentList=function(a){a.type=\"item\";a[this.options.dataFields.id]||\r\n(a[this.options.dataFields.id]=this.commonService.getUniqueId());this.isItemAllowed(a)&&this.currentList.push({data:a})};b.prototype.updateScrollItemList=function(){for(var a=this.scrollItemList.length=0,b=this.currentIndex;b<this.currentList.length&&b<this.currentIndex+this.visibleRange;b++,a++){var d={data:this.currentList[b].data,index:b-this.currentIndex,style:{},tabIndex:a};this.updateItemStyle(d);this.scrollItemList.push(d)}};b.prototype.getItemFromComponent=function(a){return a&&a.data?a.data:\r\nthis.items&&(this.updateItemList(),a=this.itemList.indexOf(a),0<=a&&a<this.items.length)?this.items[a]:null};b.prototype.updateItemList=function(){this.contentList&&(this.itemList=this.contentList.toArray())};b.prototype.updateBlockSize=function(){this.blockSize={width:this.contentElem.nativeElement.offsetWidth,height:this.contentElem.nativeElement.offsetHeight}};b.prototype.getContentSize=function(){return this.contentElem?{width:this.contentElem.nativeElement.offsetWidth,height:this.contentElem.nativeElement.offsetHeight}:\r\n{width:0,height:0}};b.prototype.getItemElemList=function(){return this.itemElems?this.itemElems.toArray():null};b.prototype.updateLayout=function(){var a=this;a.allowUpdate&&(a.updateTimer=setTimeout(function(){a.updateCurrentList();a.clientRect={width:a.elemRef.nativeElement.firstElementChild.clientWidth,height:a.elemRef.nativeElement.firstElementChild.clientHeight};a.virtualMode&&a.updateScrollItemList();var b=setTimeout(function(){a.updateVisibleRange();a.virtualMode&&a.updateScrollItemList();\r\nvar c=setTimeout(function(){a.updateBlockSize();var b=a.getItemElemList();a.avgItemHeight=0;if(b&&0<b.length){for(var d=0,f=0;f<b.length;f++)d+=b[f].nativeElement.offsetHeight;a.avgItemHeight=Math.floor(d/b.length)}a.updateScrollSize();a.refresh();a.updateComplete.emit(null);clearTimeout(c)},1);clearTimeout(b)},50);clearTimeout(a.updateTimer)},100))};b.prototype.resetRefresh=function(){this.refreshTimer&&clearTimeout(this.refreshTimer);this.refreshTimer=null};b.prototype.refresh=function(a){this.resetRefresh();\r\nif(0!=this.virtualMode)for(this.updateControlClass(),a=0;a<this.scrollItemList.length;a++)this.updateItemStyle(this.scrollItemList[a]);else for(this.updateItemList(),this.clearComponentSelection(),a=0;a<this.currentSelectedItems.length;a++){var b=this.getItemCurrentIndex(this.currentSelectedItems[a]);this.isComponentIndexInRange(b)&&(this.itemList[b].state|=integralui_core_1.IntegralUIObjectState.selected)}};return b}(integralui_base_list_1.IntegralUIBaseList);\r\n__decorate([core_1.ContentChildren(integralui_listitem_1.IntegralUIListItem),__metadata(\"design:type\",core_1.QueryList)],IntegralUIListBox.prototype,\"contentList\",void 0);__decorate([core_1.ViewChild(\"content\",{read:core_1.ViewContainerRef}),__metadata(\"design:type\",core_1.ViewContainerRef)],IntegralUIListBox.prototype,\"contentRef\",void 0);__decorate([core_1.ViewChild(\"content\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUIListBox.prototype,\"contentElem\",void 0);\r\n__decorate([core_1.ViewChildren(\"itemElem\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.QueryList)],IntegralUIListBox.prototype,\"itemElems\",void 0);__decorate([core_1.ContentChild(core_1.TemplateRef),__metadata(\"design:type\",Object)],IntegralUIListBox.prototype,\"itemTemplate\",void 0);\r\nIntegralUIListBox=__decorate([core_1.Component({selector:\"iui-listbox\",template:'\\n\\t\\t<div [ngClass]=\"getControlClass()\" (DOMMouseScroll)=\"processMouseWheel($event)\" (mousewheel)=\"processMouseWheel($event)\" (mouseenter)=\"onCtrlMouseEnter($event)\" (mouseleave)=\"onCtrlMouseLeave($event)\" (dragleave)=\"ctrlDragLeave($event)\" (dragover)=\"ctrlDragOver($event)\" (drop)=\"ctrlDragDrop($event)\" (scroll)=\"onScroll($event)\" [ngStyle]=\"{ overflow: virtualMode != false ? \\'hidden\\' : \\'auto\\' }\">\\n            <span [ngSwitch]=\"virtualMode\" #content>\\n                <span *ngSwitchCase=\"true\">\\n\\t                <ul style=\"margin:0;padding:0;\" [ngStyle]=\"{ width: contentSize.width + \\'px\\', height: contentSize.height + \\'px\\' }\">\\n\\t\\t\\t\\t        <li [ngClass]=\"item.style.general\" *ngFor=\"let item of scrollItemList; let i = index\" (click)=\"itemClickEvent($event, item)\" (mousedown)=\"itemMouseDown($event, item)\" (mouseup)=\"itemMouseUp($event, item)\" (mouseenter)=\"itemMouseEnter($event, item)\" (mouseleave)=\"itemMouseLeave($event, item)\" draggable=\"true\" (dragstart)=\"itemDragStart($event, item)\" (dragover)=\"itemDragOver($event, item, i, true)\" (drop)=\"itemDragDrop($event, item)\" #itemElem>\\n\\t\\t\\t\\t            <div [ngClass]=\"item.style.content\" tabindex=\"{{item.tabIndex}}\" [iuiFocus]=\"item.data == this.currentFocusItem\" (focus)=\"itemGotFocus(item)\" (blur)=\"itemLostFocus(item)\" (keydown)=\"itemKeyDown($event, item)\" (keypress)=\"itemKeyPress($event, item)\" (keyup)=\"itemKeyUp($event, item)\">\\n\\t\\t\\t\\t\\t\\t\\t\\t<span [iuiTemplateOutlet]=\"itemTemplate\" [iuiTemplateOutletContext]=\"{$implicit: (item.data)}\"></span>\\n\\t\\t\\t\\t            </div>\\n\\t\\t\\t\\t        </li>\\n\\t\\t\\t\\t    </ul>\\n\\t\\t            <iui-scrollbar *ngIf=\"isVerScrollVisible()\" [enabled]=\"enabled\" [value]=\"currentScrollPos.y\" [max]=\"maxScrollPos.y\" [largeChange]=\"scrollLargeChange.y\" [height]=\"scrollBarSize.height\" (valueChanged)=\"onVerticalScrollChanged($event)\" (scrollStart)=\"onVerticalScrollStart($event)\" (scrollEnd)=\"onVerticalScrollEnd($event)\" #verScroll></iui-scrollbar>\\n\\t\\t            <iui-scrollbar *ngIf=\"isHorScrollVisible()\" [enabled]=\"enabled\" [orientation]=\"horScrollOrientation\" [value]=\"currentScrollPos.x\" [max]=\"maxScrollPos.x\" [width]=\"scrollBarSize.width\" (valueChanged)=\"onHorizontalScrollChanged($event)\" (scrollStart)=\"onHorizontalScrollStart($event)\" (scrollEnd)=\"onHorizontalScrollEnd($event)\" #horScroll></iui-scrollbar>\\n\\t\\t            <div *ngIf=\"isVerScrollVisible() && isHorScrollVisible()\" style=\"background:#f5f5f5;position:absolute;right:0;bottom:0;width:16px;height:16px;\"></div>\\n\\t            </span>\\n                <span *ngSwitchDefault>\\n\\t\\t\\t\\t\\t<ul style=\"margin:0;padding:0;\" #content>\\n\\t\\t\\t\\t\\t\\t<ng-content></ng-content>\\n\\t\\t\\t\\t\\t</ul>\\n\\t            </span>\\n            </span>\\n\\t\\t</div>\\n\\t',inputs:\"allowDrag allowDrop allowFilter allowFocus appRef controlStyle data enabled items name selectedItem selectionMode sorting state virtualMode\".split(\" \"),\r\noutputs:\"afterSelect beforeEdit beforeSelect change clear dragDrop dragOver itemAdding itemAdded itemRemoving itemRemoved keyDown keyPress keyUp loadComplete scrollPosChanged selectionChanged updateComplete\".split(\" \"),providers:[integralui_core_1.IntegralUIBaseService,integralui_data_service_1.IntegralUIDataService]}),__metadata(\"design:paramtypes\",[integralui_data_service_1.IntegralUIDataService,integralui_dragdrop_service_1.IntegralUIDragDropService,core_1.ElementRef,core_1.Renderer,integralui_common_service_1.IntegralUICommonService,\r\nintegralui_filter_service_1.IntegralUIFilterService,core_1.ComponentFactoryResolver,integralui_core_1.IntegralUIBaseService])],IntegralUIListBox);exports.IntegralUIListBox=IntegralUIListBox;","/*\r\n  filename: integralui.listview.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(g,b){function a(){this.constructor=g}for(var e in b)b.hasOwnProperty(e)&&(g[e]=b[e]);g.prototype=null===b?Object.create(b):(a.prototype=b.prototype,new a)},__decorate=this&&this.__decorate||function(g,b,a,e){var d=arguments.length,c=3>d?b:null===e?e=Object.getOwnPropertyDescriptor(b,a):e,f;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)c=Reflect.decorate(g,b,a,e);else for(var h=g.length-1;0<=h;h--)if(f=g[h])c=(3>d?f(c):3<d?f(b,a,c):\r\nf(b,a))||c;return 3<d&&c&&Object.defineProperty(b,a,c),c},__metadata=this&&this.__metadata||function(g,b){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(g,b)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),integralui_data_service_1=require(\"../services/integralui.data.service\"),integralui_dragdrop_service_1=require(\"../services/integralui.dragdrop.service\"),\r\nintegralui_filter_service_1=require(\"../services/integralui.filter.service\"),integralui_base_list_1=require(\"./integralui.base.list\"),integralui_listitem_1=require(\"./integralui.listitem\"),IntegralUIListView=function(g){function b(a,e,d,c,b,h,k,l){var f=g.call(this,a,e,d,c,b,h)||this;f.dataService=a;f.dragDropService=e;f.elemRef=d;f.elemRenderer=c;f.commonService=b;f.filterService=h;f.cmpResolver=k;f.baseService=l;f.clientSpace={width:0,height:0};f.contentPos={top:0,left:0};f.currentItemSize={width:0,\r\nheight:0};f.itemsPerColumn=0;f.itemsPerRow=0;f.numColumns=0;f.numRows=0;f.currentScrollMode=integralui_core_1.IntegralUIScrollMode.Horizontal;f.overflowSettings={horizontal:\"auto\",vertical:\"auto\"};f.itemList=[];return f}__extends(b,g);Object.defineProperty(b.prototype,\"itemSize\",{get:function(){return this.currentItemSize},set:function(a){a&&(this.currentItemSize={width:0<a.width?a.width+4:0,height:0<a.height?a.height+4:0},this.updateLayout())},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\r\n\"scrollMode\",{get:function(){return this.currentScrollMode},set:function(a){this.currentScrollMode!=a&&(this.currentScrollMode=a,this.contentPos={top:0,left:0},this.updateLayout())},enumerable:!0,configurable:!0});b.prototype.updateOverflowSettings=function(){this.overflowSettings=0!=this.virtualMode?{horizontal:\"hidden\",vertical:\"hidden\"}:this.currentScrollMode==integralui_core_1.IntegralUIScrollMode.Horizontal?{horizontal:\"auto\",vertical:\"hidden\"}:{horizontal:\"hidden\",vertical:\"auto\"}};b.prototype.ngOnInit=\r\nfunction(){this.baseService.setComponent(this);this.updateData();this.updateCurrentList();this.generalClassName=\"iui-listview\";this.itemClassName=\"iui-listitem\";this.itemContentClassName=this.itemClassName+\"-content\";this.initStyle()};b.prototype.updateData=function(){this.dataService.init([{data:this.items}])};b.prototype.ngAfterContentInit=function(){this.updateLayout()};b.prototype.ngOnDestroy=function(){this.removeDropMark();this.updateTimer&&clearTimeout(this.updateTimer)};b.prototype.addItem=\r\nfunction(a){this.callEventAdd(\"add\",a)};b.prototype.clearItems=function(){this.dataService.clear();this.clear.emit(null)};b.prototype.insertItemAt=function(a,e){this.callEventAdd(\"at\",a,e)};b.prototype.removeItemAt=function(a){return this.callEventRemove(null,a)};b.prototype.itemDragOver=function(a,e,d,c){if(this.isEnabled){var b=this.getItemElemList();b&&0<=d&&d<b.length&&(d=this.commonService.getPageRect(b[d].nativeElement),this.processDragOver(a,e.data,{x:d.left,y:d.top,width:d.right-d.left,height:d.bottom-\r\nd.top},c))}a.stopPropagation()};b.prototype.updateCurrentList=function(){var a=this;a.currentList.length=0;var e=a.dataService.getList();e&&(a.applySorting(e),e.forEach(function(e){a.addItemToCurrentList(e)}))};b.prototype.addItemToCurrentList=function(a){a.type=\"item\";a[this.options.dataFields.id]||(a[this.options.dataFields.id]=this.commonService.getUniqueId());this.isItemAllowed(a)&&this.currentList.push({data:a})};b.prototype.updateScrollItemList=function(){this.scrollItemList.length=0;for(var a=\r\n{x:0,y:0},e=0,d=this.currentIndex;d<this.currentList.length&&d<this.currentIndex+this.visibleRange;d++,e++){var c={data:this.currentList[d].data,index:d-this.currentIndex,position:{x:0,y:0},style:{},tabIndex:e};this.scrollMode==integralui_core_1.IntegralUIScrollMode.Horizontal?(a.y+this.currentItemSize.height>this.clientSpace.height&&(a={x:a.x+this.currentItemSize.width,y:0}),c.position={x:a.x,y:a.y},a.y+=this.currentItemSize.height):(a.x+this.currentItemSize.width>this.clientSpace.width&&(a={x:0,\r\ny:a.y+this.currentItemSize.height}),c.position={x:a.x,y:a.y},a.x+=this.currentItemSize.width);this.updateItemStyle(c);this.scrollItemList.push(c)}};b.prototype.getItem=function(a){return this.items&&(this.updateItemList(),a=this.itemList.indexOf(a),0<=a&&a<this.items.length)?this.items[a]:null};b.prototype.getItemFromComponent=function(a){return a&&a.data?a.data:this.items&&(this.updateItemList(),a=this.itemList.indexOf(a),0<=a&&a<this.items.length)?this.items[a]:null};b.prototype.getItemIndex=function(a){return this.itemList&&\r\n0<this.itemList.length?this.itemList.indexOf(a):-1};b.prototype.updateItemList=function(){this.contentList&&(this.itemList=this.contentList.toArray())};b.prototype.processDownArrowKey=function(a,e){var d=this.getDownItem(a);if(d){this.currentFocusItem=d.data;var c=this,b=setTimeout(function(){c.processSelection(e,d.data);clearTimeout(b)},1),h=Math.floor(this.visibleRange/2);c.scrollMode==integralui_core_1.IntegralUIScrollMode.Horizontal?d.index>=h-this.itemsPerColumn&&this.scrollPos({x:this.currentScrollPos.x+\r\nthis.itemSize.width,y:this.currentScrollPos.y}):d.index>=h-this.itemsPerRow&&this.scrollPos({x:this.currentScrollPos.x,y:this.currentScrollPos.y+this.itemSize.height})}return d};b.prototype.processEndKey=function(a,e){var d=null,c=this;0<c.scrollItemList.length&&(c.scrollMode==integralui_core_1.IntegralUIScrollMode.Horizontal?c.scrollPos({x:c.maxScrollPos.x,y:c.currentScrollPos.y}):c.scrollPos({x:c.currentScrollPos.x,y:c.maxScrollPos.y}),setTimeout(function(){d=c.scrollItemList[c.scrollItemList.length-\r\n1];c.currentFocusItem=d.data;var a=setTimeout(function(){c.processSelection(e,d.data);clearTimeout(a)},1)},1));return d};b.prototype.processHomeKey=function(a,e){var d=null,c=this;0<c.scrollItemList.length&&(c.scrollMode==integralui_core_1.IntegralUIScrollMode.Horizontal?c.scrollPos({x:0,y:c.currentScrollPos.y}):c.scrollPos({x:c.currentScrollPos.x,y:0}),setTimeout(function(){d=c.scrollItemList[0];c.currentFocusItem=d.data;var a=setTimeout(function(){c.processSelection(e,d.data);clearTimeout(a)},1)},\r\n1));return d};b.prototype.processLeftArrowKey=function(a,e){var d=this.getLeftItem(a);if(d){this.currentFocusItem=d.data;var c=this,b=setTimeout(function(){c.processSelection(e,d.data);clearTimeout(b)},1);c.scrollMode==integralui_core_1.IntegralUIScrollMode.Horizontal?d.index<this.itemsPerColumn&&this.scrollPos({x:this.currentScrollPos.x-this.itemSize.width,y:this.currentScrollPos.y}):d.index<this.itemsPerRow&&this.scrollPos({x:this.currentScrollPos.x,y:this.currentScrollPos.y-this.itemSize.height})}return d};\r\nb.prototype.processPageDownKey=function(a,e){var d=null,c=this;if(0<c.scrollItemList.length){var b=0;c.scrollMode==integralui_core_1.IntegralUIScrollMode.Horizontal?(b=Math.floor((this.visibleRange-2*this.itemsPerColumn)/2),0<c.itemsPerColumn&&c.scrollPos({x:c.currentScrollPos.x+Math.floor(b*c.itemSize.width/this.itemsPerColumn),y:c.currentScrollPos.y})):(b=Math.floor((this.visibleRange-2*this.itemsPerRow)/2),0<c.itemsPerRow&&c.scrollPos({x:c.currentScrollPos.x,y:c.currentScrollPos.y+Math.floor(b*\r\nc.itemSize.height/this.itemsPerRow)}));setTimeout(function(){var b=0<=a.index&&a.index<c.scrollItemList.length?a.index:c.scrollItemList.length-1;b=c.scrollMode==integralui_core_1.IntegralUIScrollMode.Horizontal?c.currentScrollPos.x==c.maxScrollPos.x?c.scrollItemList.length-1:b:c.currentScrollPos.y==c.maxScrollPos.y?c.scrollItemList.length-1:b;d=c.scrollItemList[b];c.currentFocusItem=d.data;var f=setTimeout(function(){c.processSelection(e,d.data);clearTimeout(f)},1)},1)}return d};b.prototype.processPageUpKey=\r\nfunction(a,e){var b=null,c=this;if(0<c.scrollItemList.length){var f=0;c.scrollMode==integralui_core_1.IntegralUIScrollMode.Horizontal?(f=Math.floor((this.visibleRange-2*this.itemsPerColumn)/2),0<c.itemsPerColumn&&c.scrollPos({x:c.currentScrollPos.x-Math.floor(f*c.itemSize.width/this.itemsPerColumn),y:c.currentScrollPos.y})):(f=Math.floor((this.visibleRange-2*this.itemsPerRow)/2),0<c.itemsPerRow&&c.scrollPos({x:c.currentScrollPos.x,y:c.currentScrollPos.y-Math.floor(f*c.itemSize.height/this.itemsPerRow)}));\r\nsetTimeout(function(){var d=0<=a.index&&a.index<c.scrollItemList.length?a.index:0;d=c.scrollMode==integralui_core_1.IntegralUIScrollMode.Horizontal?0==c.currentScrollPos.x?0:d:0==c.currentScrollPos.y?0:d;b=c.scrollItemList[d];c.currentFocusItem=b.data;var f=setTimeout(function(){c.processSelection(e,b.data);clearTimeout(f)},1)},1)}return b};b.prototype.processRightArrowKey=function(a,e){var b=this.getRightItem(a);if(b){this.currentFocusItem=b.data;var c=this,f=setTimeout(function(){c.processSelection(e,\r\nb.data);clearTimeout(f)},1),g=Math.floor(this.visibleRange/2);c.scrollMode==integralui_core_1.IntegralUIScrollMode.Horizontal?b.index>=g-this.itemsPerColumn&&this.scrollPos({x:this.currentScrollPos.x+this.itemSize.width,y:this.currentScrollPos.y}):b.index>=g-this.itemsPerRow&&this.scrollPos({x:this.currentScrollPos.x,y:this.currentScrollPos.y+this.itemSize.height})}return b};b.prototype.processUpArrowKey=function(a,b){var e=this.getUpItem(a);if(e){this.currentFocusItem=e.data;var c=this,f=setTimeout(function(){c.processSelection(b,\r\ne.data);clearTimeout(f)},1);c.scrollMode==integralui_core_1.IntegralUIScrollMode.Horizontal?e.index<this.itemsPerColumn&&this.scrollPos({x:this.currentScrollPos.x-this.itemSize.width,y:this.currentScrollPos.y}):e.index<this.itemsPerRow&&this.scrollPos({x:this.currentScrollPos.x,y:this.currentScrollPos.y-this.itemSize.height})}return e};b.prototype.getDownItem=function(a){var b=0<=a.index&&a.index<this.scrollItemList.length-1?a.index+1:-1;this.scrollMode!=integralui_core_1.IntegralUIScrollMode.Horizontal&&\r\n(b=a.index+this.itemsPerRow,b=0<=b&&b<this.scrollItemList.length?b:-1);return 0<=b?this.scrollItemList[b]:null};b.prototype.getLeftItem=function(a){var b=a.index-this.itemsPerColumn;b=0<=b&&b<this.scrollItemList.length?b:-1;this.scrollMode!=integralui_core_1.IntegralUIScrollMode.Horizontal&&(b=0<a.index?a.index-1:-1);return 0<=b&&b<this.scrollItemList.length?this.scrollItemList[b]:null};b.prototype.getRightItem=function(a){var b=a.index+this.itemsPerColumn;b=0<=b&&b<this.scrollItemList.length?b:-1;\r\nthis.scrollMode!=integralui_core_1.IntegralUIScrollMode.Horizontal&&(b=0<=a.index&&a.index<this.scrollItemList.length-1?a.index+1:-1);return 0<=b&&b<this.scrollItemList.length?this.scrollItemList[b]:null};b.prototype.getUpItem=function(a){var b=0<a.index?a.index-1:-1;this.scrollMode!=integralui_core_1.IntegralUIScrollMode.Horizontal&&(b=a.index-this.itemsPerRow,b=0<=b&&b<this.scrollItemList.length?b:-1);return 0<=b?this.scrollItemList[b]:null};b.prototype.getContentSize=function(){return this.contentElem?\r\n{width:this.contentElem.nativeElement.offsetWidth,height:this.contentElem.nativeElement.offsetHeight}:{width:0,height:0}};b.prototype.updateLayout=function(){this.allowUpdate&&(this.updateOverflowSettings(),0!=this.virtualMode?this.updateLayoutVirtual():this.updateLayoutNormal())};b.prototype.updateLayoutNormal=function(){var a=this,b=setTimeout(function(){a.updateCurrentList();a.updateItemList();if(a.itemList&&0<a.itemList.length){var d={x:0,y:0};a.scrollMode==integralui_core_1.IntegralUIScrollMode.Horizontal?\r\na.itemList.forEach(function(b){var c=b.getSize();d.y+c.height>a.elemRef.nativeElement.firstElementChild.clientHeight&&(d={x:d.x+c.width,y:0});b.updatePos(d);d.y+=c.height}):a.itemList.forEach(function(b){var c=b.getSize();d.x+c.width>a.elemRef.nativeElement.firstElementChild.clientWidth&&(d={x:0,y:d.y+c.height});b.updatePos(d);d.x+=c.width})}a.selectedItem&&a.updateSelectedItem(a.selectedItem);a.updateComplete.emit(null);clearTimeout(b)},10)};b.prototype.updateLayoutVirtual=function(){var a=this;\r\na.updateTimer=setTimeout(function(){a.updateCurrentList();0==a.currentList.length&&(a.currentScrollPos={x:0,y:0});a.clientRect={width:a.elemRef.nativeElement.firstElementChild.clientWidth,height:a.elemRef.nativeElement.firstElementChild.clientHeight};a.updateScrollItemList();var b=setTimeout(function(){a.updateBlockSize();a.avgItemHeight=a.itemSize.height;a.updateScrollSize();a.updateVisibleRange();a.updateScrollItemList();a.refresh();a.updateComplete.emit(null);clearTimeout(b)},1);clearTimeout(a.updateTimer)},\r\n100)};b.prototype.updateScrollSize=function(){this.contentSize={width:this.clientRect.width,height:this.clientRect.height};if(this.currentScrollMode==integralui_core_1.IntegralUIScrollMode.Horizontal){this.itemsPerColumn=Math.floor(this.clientRect.height/this.itemSize.height);var a=0<this.itemsPerColumn?this.currentList.length/this.itemsPerColumn:0;this.numColumns=Math.floor(a);this.numColumns<a&&this.numColumns++;a=this.numColumns*this.itemSize.width-this.clientRect.width+2;0<a&&(this.itemsPerColumn=\r\nMath.floor((this.clientRect.height-16)/this.itemSize.height),a=0<this.itemsPerColumn?this.currentList.length/this.itemsPerColumn:0,this.numColumns=Math.floor(a),this.numColumns<a&&this.numColumns++,a=this.numColumns*this.itemSize.width-this.clientRect.width+2);this.scrollSize.width=a;this.contentSize.width+=this.itemSize.width}else this.itemsPerRow=Math.floor(this.clientRect.width/this.itemSize.width),a=0<this.itemsPerRow?this.currentList.length/this.itemsPerRow:0,this.numRows=Math.floor(a),this.numRows<\r\na&&this.numRows++,a=this.numRows*this.itemSize.height-this.clientRect.height+2,0<a&&(this.itemsPerRow=Math.floor((this.clientRect.width-16)/this.itemSize.width),a=0<this.itemsPerRow?this.currentList.length/this.itemsPerRow:0,this.numRows=Math.floor(a),this.numRows<a&&this.numRows++,a=this.numRows*this.itemSize.height-this.clientRect.height+2),this.scrollSize.height=a,this.contentSize.height+=this.itemSize.height;this.isVerScrollVisible()&&(this.contentSize.width-=18,0<this.scrollSize.width&&(this.scrollSize.width+=\r\n16));this.isHorScrollVisible()&&(this.scrollSize.height+=16);this.scrollSize.width=0<this.scrollSize.width?this.scrollSize.width:0;this.scrollSize.height=0<this.scrollSize.height?this.scrollSize.height:0;this.maxScrollPos={x:this.scrollSize.width,y:this.scrollSize.height};this.currentScrollPos.x>this.maxScrollPos.x&&this.changeHorizontalScrollPos(this.maxScrollPos.x);this.currentScrollPos.y>this.maxScrollPos.y&&this.changeVerticalScrollPos(this.maxScrollPos.y);this.scrollBarSize={width:this.isVerScrollVisible()?\r\nthis.clientRect.width-20:this.clientRect.width-4,height:this.isHorScrollVisible()?this.clientRect.height-20:this.clientRect.height-4};this.scrollLargeChange={x:this.scrollBarSize.width,y:this.scrollBarSize.height};this.clientSpace={width:this.clientRect.width,height:this.clientRect.height};this.isHorScrollVisible()&&(this.clientSpace.height-=16);this.isVerScrollVisible()&&(this.clientSpace.width-=16)};b.prototype.updateVisibleRange=function(){this.visibleRange=1;var a=this.getItemElemList();a&&0<\r\na.length&&(this.visibleRange=this.currentScrollMode==integralui_core_1.IntegralUIScrollMode.Horizontal?2*Math.floor(this.clientSpace.height/this.itemSize.height)*(Math.floor(this.clientSpace.width/this.itemSize.width)+1):2*(Math.floor(this.clientSpace.height/this.itemSize.height)+1)*Math.floor(this.clientSpace.width/this.itemSize.width))};b.prototype.getItemElemList=function(){return this.itemElems?this.itemElems.toArray():null};b.prototype.changeHorizontalScrollPos=function(a){this.currentScrollPos.x=\r\nMath.max(0,Math.min(a,this.maxScrollPos.x));this.currentScrollPos.x!=this.prevScrollPos.x&&(this.updateView(),this.scrollPosChanged.emit({value:this.scrollPos()}),this.prevScrollPos.x=this.currentScrollPos.x)};b.prototype.isVerScrollVisible=function(){return this.virtualMode&&this.currentScrollMode!=integralui_core_1.IntegralUIScrollMode.Horizontal?this.isEnabled&&0<this.scrollSize.height?!0:!1:!1};b.prototype.isHorScrollVisible=function(){return this.virtualMode&&this.currentScrollMode!=integralui_core_1.IntegralUIScrollMode.Vertical?\r\nthis.isEnabled&&0<this.scrollSize.width?!0:!1:!1};b.prototype.onHorizontalScrollChanged=function(a){this.changeHorizontalScrollPos(a.value)};b.prototype.updateView=function(){if(this.currentScrollMode==integralui_core_1.IntegralUIScrollMode.Horizontal){var a=Math.floor(this.clientSpace.height/this.itemSize.height),b=Math.floor(this.currentScrollPos.x/this.itemSize.width);this.contentPos.left=this.currentScrollPos.x-b*this.itemSize.width}else a=Math.floor(this.clientSpace.width/this.itemSize.width),\r\nb=Math.floor(this.currentScrollPos.y/this.itemSize.height),this.contentPos.top=this.currentScrollPos.y-b*this.itemSize.height;this.currentIndex=b*a;this.currentIndex!=this.prevIndex&&(this.updateScrollItemList(),this.prevIndex=this.currentIndex)};b.prototype.listViewMouseWheel=function(a){this.isEnabled&&this.processMouseWheel(a,this.scrollMode==integralui_core_1.IntegralUIScrollMode.Horizontal)};b.prototype.scrollTo=function(a){0!=this.virtualMode&&a&&(a=this.getItemCurrentIndex(a),0<=a&&(this.currentScrollMode==\r\nintegralui_core_1.IntegralUIScrollMode.Horizontal?0<this.itemsPerColumn&&0<this.itemSize.width&&(a=this.itemSize.width*(a/this.itemsPerColumn-Math.floor(this.clientSpace.width/this.itemSize.width)+1),this.scrollPos({x:a,y:this.currentScrollPos.y})):0<this.itemsPerRow&&0<this.itemSize.height&&(a=this.itemSize.height*(a/this.itemsPerRow-Math.floor(this.clientSpace.height/this.itemSize.height)+1),this.scrollPos({x:this.currentScrollPos.x,y:a})),this.updateLayout()))};b.prototype.clearSelection=function(){this.updateItemList();\r\nthis.itemList&&0<this.itemList.length&&this.itemList.forEach(function(a){a.state&=~integralui_core_1.IntegralUIObjectState.selected})};b.prototype.selectItem=function(a){a&&(this.clearSelection(),a.state|=integralui_core_1.IntegralUIObjectState.selected)};b.prototype.updateSelectedItemFromElem=function(a){if(this.itemList&&0<this.itemList.length){var b=-1;a&&(b=this.itemList.indexOf(a));0<=b&&b<this.items.length&&(this.selectedItem=this.items[b])}};b.prototype.updateSelectedItem=function(a){if(this.items&&\r\n0<this.items.length){var b=-1;a&&(b=this.items.indexOf(a));0<=b&&b<this.itemList.length&&this.selectItem(this.itemList[b])}};b.prototype.resetRefresh=function(){this.refreshTimer&&clearTimeout(this.refreshTimer);this.refreshTimer=null};b.prototype.refresh=function(a){this.resetRefresh();if(0!=this.virtualMode)for(this.updateControlClass(),a=0;a<this.scrollItemList.length;a++)this.updateItemStyle(this.scrollItemList[a]);else for(this.updateItemList(),this.clearComponentSelection(),a=0;a<this.currentSelectedItems.length;a++){var b=\r\nthis.getItemCurrentIndex(this.currentSelectedItems[a]);this.isComponentIndexInRange(b)&&(this.itemList[b].state|=integralui_core_1.IntegralUIObjectState.selected)}};return b}(integralui_base_list_1.IntegralUIBaseList);__decorate([core_1.ContentChildren(integralui_listitem_1.IntegralUIListItem),__metadata(\"design:type\",core_1.QueryList)],IntegralUIListView.prototype,\"contentList\",void 0);\r\n__decorate([core_1.ViewChild(\"content\",{read:core_1.ViewContainerRef}),__metadata(\"design:type\",core_1.ViewContainerRef)],IntegralUIListView.prototype,\"contentRef\",void 0);__decorate([core_1.ViewChild(\"content\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUIListView.prototype,\"contentElem\",void 0);__decorate([core_1.ViewChildren(\"itemElem\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.QueryList)],IntegralUIListView.prototype,\"itemElems\",void 0);\r\n__decorate([core_1.ContentChild(core_1.TemplateRef),__metadata(\"design:type\",Object)],IntegralUIListView.prototype,\"itemTemplate\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Object),__metadata(\"design:paramtypes\",[Object])],IntegralUIListView.prototype,\"itemSize\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUIListView.prototype,\"scrollMode\",null);\r\nIntegralUIListView=__decorate([core_1.Component({selector:\"iui-listview\",template:'\\n\\t\\t<div [ngClass]=\"getControlClass()\" (DOMMouseScroll)=\"listViewMouseWheel($event)\" (mousewheel)=\"listViewMouseWheel($event)\" (mouseenter)=\"onCtrlMouseEnter($event)\" (mouseleave)=\"onCtrlMouseLeave($event)\" (dragleave)=\"ctrlDragLeave($event)\" (dragover)=\"ctrlDragOver($event)\" (drop)=\"ctrlDragDrop($event)\" (scroll)=\"onScroll($event)\" [ngStyle]=\"{ \\'overflow-x\\': overflowSettings.horizontal, \\'overflow-y\\': overflowSettings.vertical }\">\\n            <div [ngSwitch]=\"virtualMode\" #content>\\n                <span *ngSwitchCase=\"true\">\\n\\t                <ul style=\"position:absolute;margin:0;padding:0;\" [ngStyle]=\"{ \\'left\\': -contentPos.left + \\'px\\', \\'top\\': -contentPos.top + \\'px\\', width: contentSize.width + \\'px\\', height: contentSize.height + \\'px\\' }\">\\n\\t\\t\\t\\t        <li [ngClass]=\"item.style.general\" *ngFor=\"let item of scrollItemList; let i = index\" (click)=\"itemClickEvent($event, item)\" (mousedown)=\"itemMouseDown($event, item)\" (mouseup)=\"itemMouseUp($event, item)\" (mouseenter)=\"itemMouseEnter($event, item)\" (mouseleave)=\"itemMouseLeave($event, item)\" draggable=\"true\" (dragstart)=\"itemDragStart($event, item)\" (dragover)=\"itemDragOver($event, item, i, true)\" (drop)=\"itemDragDrop($event, item)\"  [ngStyle]=\"{ \\'position\\': \\'absolute\\', \\'top\\': item.position.y + \\'px\\', \\'left\\': item.position.x + \\'px\\', width: currentItemSize.width - 4 + \\'px\\', height: currentItemSize.height - 4 + \\'px\\' }\" #itemElem>\\n\\t\\t\\t\\t            <div [ngClass]=\"item.style.content\" tabindex=\"{{item.tabIndex}}\" [iuiFocus]=\"item.data == this.currentFocusItem\" (focus)=\"itemGotFocus(item)\" (blur)=\"itemLostFocus(item)\" (keydown)=\"itemKeyDown($event, item)\" (keypress)=\"itemKeyPress($event, item)\" (keyup)=\"itemKeyUp($event, item)\">\\n\\t\\t\\t\\t\\t\\t\\t\\t<span [iuiTemplateOutlet]=\"itemTemplate\" [iuiTemplateOutletContext]=\"{$implicit: (item.data)}\"></span>\\n\\t\\t\\t\\t            </div>\\n\\t\\t\\t\\t        </li>\\n\\t\\t\\t\\t    </ul>\\n\\t\\t            <iui-scrollbar *ngIf=\"isVerScrollVisible()\" [enabled]=\"enabled\" [value]=\"currentScrollPos.y\" [max]=\"maxScrollPos.y\" [largeChange]=\"scrollLargeChange.y\" [height]=\"scrollBarSize.height\" (valueChanged)=\"onVerticalScrollChanged($event)\" (scrollStart)=\"onVerticalScrollStart($event)\" (scrollEnd)=\"onVerticalScrollEnd($event)\" #verScroll></iui-scrollbar>\\n\\t\\t            <iui-scrollbar *ngIf=\"isHorScrollVisible()\" [enabled]=\"enabled\" [orientation]=\"horScrollOrientation\" [value]=\"currentScrollPos.x\" [max]=\"maxScrollPos.x\" [width]=\"scrollBarSize.width\" (valueChanged)=\"onHorizontalScrollChanged($event)\" (scrollStart)=\"onHorizontalScrollStart($event)\" (scrollEnd)=\"onHorizontalScrollEnd($event)\" #horScroll></iui-scrollbar>\\n\\t\\t            <div *ngIf=\"isVerScrollVisible() && isHorScrollVisible()\" style=\"background:#f5f5f5;position:absolute;right:0;bottom:0;width:16px;height:16px;\"></div>\\n\\t            </span>\\n                <span *ngSwitchDefault>\\n\\t\\t\\t\\t\\t<ul style=\"margin:0;padding:0;\" #content>\\n\\t\\t\\t\\t\\t\\t<ng-content></ng-content>\\n\\t\\t\\t\\t\\t</ul>\\n\\t            </span>\\n            </div>\\n\\t\\t</div>\\n\\t',\r\ninputs:\"allowDrag allowDrop allowFilter allowFocus appRef controlStyle data enabled items name selectedItem sorting state virtualMode\".split(\" \"),outputs:\"afterSelect beforeEdit beforeSelect change clear dragDrop dragOver itemAdding itemAdded itemRemoving itemRemoved keyDown keyPress keyUp loadComplete scrollPosChanged selectionChanged updateComplete\".split(\" \"),providers:[integralui_core_1.IntegralUIBaseService,integralui_data_service_1.IntegralUIDataService]}),__metadata(\"design:paramtypes\",[integralui_data_service_1.IntegralUIDataService,\r\nintegralui_dragdrop_service_1.IntegralUIDragDropService,core_1.ElementRef,core_1.Renderer,integralui_common_service_1.IntegralUICommonService,integralui_filter_service_1.IntegralUIFilterService,core_1.ComponentFactoryResolver,integralui_core_1.IntegralUIBaseService])],IntegralUIListView);exports.IntegralUIListView=IntegralUIListView;","\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\n/*\r\n  filename: integralui.contextmenu.ts\r\n  version : 1.1.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library.\r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language\r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.\r\n*/\r\nvar core_1 = require(\"@angular/core\");\r\nvar integralui_core_1 = require(\"../components/integralui.core\");\r\nvar integralui_core_2 = require(\"../components/integralui.core\");\r\nvar integralui_common_service_1 = require(\"../services/integralui.common.service\");\r\nvar integralui_data_service_1 = require(\"../services/integralui.data.service\");\r\nvar integralui_menuitem_1 = require(\"../components/integralui.menuitem\");\r\nvar IntegralUIContextMenuComponent = (function (_super) {\r\n    __extends(IntegralUIContextMenuComponent, _super);\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUIContextMenuComponent(dataService, elemRef, commonService, cmpResolver, baseService) {\r\n        var _this = _super.call(this, commonService) || this;\r\n        _this.dataService = dataService;\r\n        _this.elemRef = elemRef;\r\n        _this.commonService = commonService;\r\n        _this.cmpResolver = cmpResolver;\r\n        _this.baseService = baseService;\r\n        // Layout\r\n        _this.blockDisplay = 'none';\r\n        _this.blockElemWidth = \"0\";\r\n        _this.blockElemHeight = \"0\";\r\n        _this.blockOverflow = 'hidden';\r\n        _this.blockOpacity = 0;\r\n        // Trial\r\n        _this.trialRef = null;\r\n        // Properties ------------------------------------------------------------------------\r\n        _this.adjustment = { top: 0, left: 0 };\r\n        _this.autoClose = true;\r\n        _this.direction = integralui_core_2.IntegralUIDirection.None;\r\n        _this.inverse = false;\r\n        _this.mode = 'normal';\r\n        _this.position = { x: 0, y: -9999999 };\r\n        // Events ----------------------------------------------------------------------------\r\n        _this.itemClick = new core_1.EventEmitter();\r\n        _this.menuOpened = new core_1.EventEmitter();\r\n        _this.menuClosed = new core_1.EventEmitter();\r\n        _this.itemList = [];\r\n        return _this;\r\n    }\r\n    IntegralUIContextMenuComponent.prototype.ngOnInit = function () {\r\n        this.baseService.setComponent(this);\r\n        this.dataService.init(this.items);\r\n        this.generalClassName = \"iui-contextmenu\";\r\n        this.initStyle();\r\n    };\r\n    IntegralUIContextMenuComponent.prototype.ngAfterViewInit = function () {\r\n        var self = this;\r\n        var trialTimer = setTimeout(function () {\r\n            var factory = self.cmpResolver.resolveComponentFactory(integralui_core_1.IntegralUITComponent);\r\n            if (factory && self.contentRef)\r\n                self.trialRef = self.contentRef.createComponent(factory);\r\n            clearTimeout(trialTimer);\r\n        }, 100);\r\n    };\r\n    IntegralUIContextMenuComponent.prototype.ngAfterContentInit = function () {\r\n        var self = this;\r\n        var focusTimer = setTimeout(function () {\r\n            self.elemRef.nativeElement.firstElementChild.focus();\r\n            clearTimeout(focusTimer);\r\n        }, 1);\r\n    };\r\n    IntegralUIContextMenuComponent.prototype.ngOnDestroy = function () {\r\n        if (this.trialRef)\r\n            this.trialRef.destroy();\r\n    };\r\n    // Event Handlers --------------------------------------------------------------------\r\n    /*itemClicked(e: any){\r\n        e.event.preventDefault();\r\n\r\n        if (e.event.buttons == 1)\r\n            this.itemClick.emit({ item: e.item.data });\r\n\r\n        e.event.stopPropagation();\r\n    }*/\r\n    IntegralUIContextMenuComponent.prototype.onBlur = function (e) {\r\n        if (this.autoClose != false)\r\n            this.menuClosed.emit({ event: e });\r\n    };\r\n    IntegralUIContextMenuComponent.prototype.onRightClick = function (e) {\r\n        e.preventDefault();\r\n    };\r\n    // General ---------------------------------------------------------------------------\r\n    IntegralUIContextMenuComponent.prototype.getItemFromComponent = function (cmp) {\r\n        if (cmp && cmp.data)\r\n            return cmp.data;\r\n        if (this.items) {\r\n            this.itemList = this.contentList.toArray();\r\n            var index = this.itemList.indexOf(cmp);\r\n            if (index >= 0 && index < this.items.length)\r\n                return this.items[index];\r\n        }\r\n        return null;\r\n    };\r\n    IntegralUIContextMenuComponent.prototype.invokeMethod = function (name, value) {\r\n        switch (name) {\r\n            case 'ITEM_CLICK':\r\n                this.itemClick.emit({ event: value.event, item: this.getItemFromComponent(value.cmp) });\r\n                break;\r\n        }\r\n    };\r\n    // Layout ----------------------------------------------------------------------------\r\n    IntegralUIContextMenuComponent.prototype.size = function () {\r\n        var elemSize = {\r\n            width: this.elemRef.nativeElement.firstElementChild.offsetWidth,\r\n            height: this.elemRef.nativeElement.firstElementChild.offsetHeight\r\n        };\r\n        return elemSize;\r\n    };\r\n    // Open ------------------------------------------------------------------------------\r\n    IntegralUIContextMenuComponent.prototype.adjustPosition = function (e, openMode, pos, appSize, elemPageRect) {\r\n        var self = this;\r\n        var shiftPos = self.commonService.getShiftPos();\r\n        setTimeout(function () {\r\n            var menuSize = self.size();\r\n            var newPos = pos;\r\n            if (openMode == 'manual' && elemPageRect) {\r\n                newPos.x = elemPageRect.left + elemPageRect.width + shiftPos.x + self.adjustment.left;\r\n                newPos.y = elemPageRect.bottom + shiftPos.y + 4 + self.adjustment.top;\r\n                if (self.direction & integralui_core_2.IntegralUIDirection.Above) {\r\n                    newPos.y -= menuSize.height;\r\n                }\r\n                if (self.inverse || self.direction & integralui_core_2.IntegralUIDirection.Left) {\r\n                    newPos.x -= menuSize.width;\r\n                }\r\n            }\r\n            if (appSize) {\r\n                if (newPos.y + menuSize.height > appSize.height) {\r\n                    var shift = newPos.y + menuSize.height - appSize.height;\r\n                    newPos.y -= shift;\r\n                }\r\n            }\r\n            self.position = newPos;\r\n            self.menuOpened.emit({ event: e });\r\n        }, 10);\r\n    };\r\n    IntegralUIContextMenuComponent.prototype.open = function (e, openMode, pos, appSize, elemPageRect) {\r\n        var self = this;\r\n        if (self.items) {\r\n            self.blockDisplay = 'block';\r\n            self.blockOpacity = 1;\r\n            self.adjustPosition(e, openMode, pos, appSize, elemPageRect);\r\n        }\r\n    };\r\n    return IntegralUIContextMenuComponent;\r\n}(integralui_core_1.IntegralUIBaseComponent));\r\n__decorate([\r\n    core_1.ViewChild('content', { read: core_1.ViewContainerRef }),\r\n    __metadata(\"design:type\", core_1.ViewContainerRef)\r\n], IntegralUIContextMenuComponent.prototype, \"contentRef\", void 0);\r\n__decorate([\r\n    core_1.ContentChildren(integralui_menuitem_1.IntegralUIMenuItem),\r\n    __metadata(\"design:type\", core_1.QueryList)\r\n], IntegralUIContextMenuComponent.prototype, \"contentList\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUIContextMenuComponent.prototype, \"adjustment\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean)\r\n], IntegralUIContextMenuComponent.prototype, \"autoClose\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Number)\r\n], IntegralUIContextMenuComponent.prototype, \"direction\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean)\r\n], IntegralUIContextMenuComponent.prototype, \"inverse\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Array)\r\n], IntegralUIContextMenuComponent.prototype, \"items\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", String)\r\n], IntegralUIContextMenuComponent.prototype, \"mode\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUIContextMenuComponent.prototype, \"position\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUIContextMenuComponent.prototype, \"itemTemplate\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIContextMenuComponent.prototype, \"itemClick\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIContextMenuComponent.prototype, \"menuOpened\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIContextMenuComponent.prototype, \"menuClosed\", void 0);\r\nIntegralUIContextMenuComponent = __decorate([\r\n    core_1.Component({\r\n        selector: 'iui-contextmenu',\r\n        template: \"\\n\\t\\t<div [ngClass]=\\\"getControlClass()\\\" [ngStyle]=\\\"{ 'top': position.y + 'px', 'left': position.x + 'px', 'height': 'auto', 'opacity': blockOpacity }\\\" (blur)=\\\"onBlur($event)\\\" (contextmenu)=\\\"onRightClick($event)\\\" tabindex=\\\"999\\\">\\n\\t\\t\\t<ul #content>\\n\\t\\t\\t\\t<iui-menuitem *ngFor=\\\"let item of items\\\" [data]=\\\"item\\\" [items]=\\\"item.items\\\" [enabled]=\\\"item.enabled\\\" [icon]=\\\"item.icon\\\" [iconUrl]=\\\"item.iconUrl\\\"  [text]=\\\"item.text\\\" [orientation]=\\\"'vertical'\\\" [level]=\\\"0\\\" [templateRef]=\\\"itemTemplate\\\"></iui-menuitem>\\n\\t\\t\\t</ul>\\n\\t\\t</div>\\n\\t\",\r\n        inputs: ['controlStyle', 'data', 'state'],\r\n        providers: [integralui_core_1.IntegralUIBaseService, integralui_data_service_1.IntegralUIDataService],\r\n        encapsulation: core_1.ViewEncapsulation.None\r\n    }),\r\n    __metadata(\"design:paramtypes\", [integralui_data_service_1.IntegralUIDataService,\r\n        core_1.ElementRef,\r\n        integralui_common_service_1.IntegralUICommonService,\r\n        core_1.ComponentFactoryResolver,\r\n        integralui_core_1.IntegralUIBaseService])\r\n], IntegralUIContextMenuComponent);\r\nexports.IntegralUIContextMenuComponent = IntegralUIContextMenuComponent;\r\nvar IntegralUIContextMenu = (function () {\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUIContextMenu(elemRef, viewContainer, cmpResolver) {\r\n        this.elemRef = elemRef;\r\n        this.viewContainer = viewContainer;\r\n        this.cmpResolver = cmpResolver;\r\n        // Variables -------------------------------------------------------------------------\r\n        this.isMenuActive = false;\r\n        // Events\r\n        this.eventList = [];\r\n        this.cmpRef = null;\r\n        //Template\r\n        this.templateList = [];\r\n        // Events ----------------------------------------------------------------------------\r\n        this.itemClick = new core_1.EventEmitter();\r\n        this.menuClick = new core_1.EventEmitter();\r\n        this.menuOpening = new core_1.EventEmitter();\r\n        this.menuOpened = new core_1.EventEmitter();\r\n        this.menuClosed = new core_1.EventEmitter();\r\n    }\r\n    IntegralUIContextMenu.prototype.ngAfterContentInit = function () {\r\n        var self = this;\r\n        self.templateList = self.templates.toArray();\r\n        for (var i = 0; i < self.templateList.length; i++) {\r\n            if (self.templateList[i].settings)\r\n                switch (self.templateList[i].settings.type) {\r\n                    case 'menu-item':\r\n                        self.itemTemplate = self.templateList[i].getTemplate();\r\n                        break;\r\n                }\r\n        }\r\n    };\r\n    IntegralUIContextMenu.prototype.ngOnDestroy = function () {\r\n        this.closeMenu();\r\n    };\r\n    // Layout ----------------------------------------------------------------------------\r\n    IntegralUIContextMenu.prototype.size = function () {\r\n        var elemSize = {\r\n            width: this.elemRef.nativeElement.offsetWidth,\r\n            height: this.elemRef.nativeElement.offsetHeight\r\n        };\r\n        return elemSize;\r\n    };\r\n    // Event Handlers --------------------------------------------------------------------\r\n    IntegralUIContextMenu.prototype.closeMenu = function (e) {\r\n        var self = this;\r\n        if (self.cmpRef) {\r\n            if (self.eventList)\r\n                self.eventList.forEach(function (obj) { return obj.unsubscribe(); });\r\n            self.cmpRef.destroy();\r\n        }\r\n        if (e)\r\n            self.menuClosed.emit({ event: e });\r\n    };\r\n    IntegralUIContextMenu.prototype.onContextMenu = function (e) {\r\n        if (this.settings.position != 'manual')\r\n            this.processMenuOpen(e);\r\n    };\r\n    IntegralUIContextMenu.prototype.onMouseDown = function (e) {\r\n        if (this.settings.position == 'manual')\r\n            this.processMenuOpen(e, 'manual');\r\n    };\r\n    IntegralUIContextMenu.prototype.processMenuOpen = function (e, position) {\r\n        e.preventDefault();\r\n        var self = this;\r\n        var appRef = self.contextMenuRef ? self.contextMenuRef : self.settings.appRef;\r\n        if (appRef) {\r\n            self.closeMenu();\r\n            // Fire event that menu is about to open\r\n            var eventObj = { cancel: false, event: e };\r\n            self.menuOpening.emit(eventObj);\r\n            if (eventObj.cancel != true) {\r\n                var factory = self.cmpResolver.resolveComponentFactory(IntegralUIContextMenuComponent);\r\n                if (factory) {\r\n                    self.cmpRef = appRef.createComponent(factory);\r\n                    if (self.cmpRef) {\r\n                        var cmp = null;\r\n                        if (self.cmpRef._component)\r\n                            cmp = self.cmpRef._component;\r\n                        else if (self.cmpRef._hostElement)\r\n                            cmp = self.cmpRef._hostElement.component;\r\n                        if (cmp) {\r\n                            self.isMenuActive = true;\r\n                            cmp.mode = position;\r\n                            cmp.items = self.createMenuList(self.settings.items);\r\n                            cmp.adjustment = self.settings.adjustment ? self.settings.adjustment : { top: 0, left: 0 };\r\n                            cmp.autoClose = self.settings.autoClose != undefined ? self.settings.autoClose : true;\r\n                            cmp.direction = self.settings.direction ? self.settings.direction : integralui_core_2.IntegralUIDirection.None;\r\n                            cmp.inverse = self.settings.inverse != undefined ? self.settings.inverse : false;\r\n                            cmp.itemTemplate = self.itemTemplate;\r\n                            cmp.controlStyle = self.settings.style;\r\n                            var appSize = self.settings.appSize ? self.settings.appSize : { width: window.innerWidth, height: window.innerHeight };\r\n                            if (position == 'manual')\r\n                                cmp.open(e, position, { x: 0, y: 0 }, appSize, self.elemRef.nativeElement.getBoundingClientRect());\r\n                            else\r\n                                cmp.open(e, position, { x: e.pageX, y: e.pageY }, appSize);\r\n                            self.eventList.push(cmp.itemClick.subscribe(function (e) {\r\n                                self.itemClick.emit(e);\r\n                                self.menuClick.emit(e);\r\n                                self.closeMenu(e);\r\n                            }));\r\n                            self.eventList.push(cmp.menuOpened.subscribe(function (e) {\r\n                                self.menuOpened.emit(e);\r\n                            }));\r\n                            self.eventList.push(cmp.menuClosed.subscribe(function (e) {\r\n                                self.closeMenu(e);\r\n                            }));\r\n                            if (position == 'manual')\r\n                                e.stopPropagation();\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    };\r\n    IntegralUIContextMenu.prototype.createMenuList = function (list) {\r\n        var result = [];\r\n        if (list) {\r\n            for (var i = 0; i < list.length; i++)\r\n                if (list[i].visible != false)\r\n                    result.push(list[i]);\r\n        }\r\n        return result;\r\n    };\r\n    return IntegralUIContextMenu;\r\n}());\r\n__decorate([\r\n    core_1.ContentChildren(integralui_core_1.IntegralUITemplate),\r\n    __metadata(\"design:type\", core_1.QueryList)\r\n], IntegralUIContextMenu.prototype, \"templates\", void 0);\r\n__decorate([\r\n    core_1.Input('iuiContextMenu'),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUIContextMenu.prototype, \"settings\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUIContextMenu.prototype, \"contextMenuRef\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIContextMenu.prototype, \"itemClick\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIContextMenu.prototype, \"menuClick\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIContextMenu.prototype, \"menuOpening\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIContextMenu.prototype, \"menuOpened\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIContextMenu.prototype, \"menuClosed\", void 0);\r\n__decorate([\r\n    core_1.HostListener('contextmenu', ['$event']),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUIContextMenu.prototype, \"onContextMenu\", null);\r\n__decorate([\r\n    core_1.HostListener('mousedown', ['$event']),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUIContextMenu.prototype, \"onMouseDown\", null);\r\nIntegralUIContextMenu = __decorate([\r\n    core_1.Directive({\r\n        selector: '[iuiContextMenu]'\r\n    }),\r\n    __metadata(\"design:paramtypes\", [core_1.ElementRef,\r\n        core_1.ViewContainerRef,\r\n        core_1.ComponentFactoryResolver])\r\n], IntegralUIContextMenu);\r\nexports.IntegralUIContextMenu = IntegralUIContextMenu;\r\n//# sourceMappingURL=integralui.contextmenu.js.map","/*\r\n  filename: integralui.menu.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(c,b){function a(){this.constructor=c}for(var e in b)b.hasOwnProperty(e)&&(c[e]=b[e]);c.prototype=null===b?Object.create(b):(a.prototype=b.prototype,new a)},__decorate=this&&this.__decorate||function(c,b,a,e){var f=arguments.length,d=3>f?b:null===e?e=Object.getOwnPropertyDescriptor(b,a):e,g;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)d=Reflect.decorate(c,b,a,e);else for(var h=c.length-1;0<=h;h--)if(g=c[h])d=(3>f?g(d):3<f?g(b,a,d):\r\ng(b,a))||d;return 3<f&&d&&Object.defineProperty(b,a,d),d},__metadata=this&&this.__metadata||function(c,b){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(c,b)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),integralui_data_service_1=require(\"../services/integralui.data.service\"),integralui_menuitem_1=require(\"../components/integralui.menuitem\"),IntegralUIMenu=\r\nfunction(c){function b(b,e,f,d,g,h){var a=c.call(this,d)||this;a.dataService=b;a.elemRef=e;a.elemRenderer=f;a.commonService=d;a.cmpResolver=g;a.baseService=h;a.virtualization=!0;a.itemClick=new core_1.EventEmitter;return a}__extends(b,c);Object.defineProperty(b.prototype,\"virtualMode\",{get:function(){return this.virtualization},set:function(a){this.virtualization=a;this.updateLayout()},enumerable:!0,configurable:!0});b.prototype.ngOnInit=function(){this.baseService.setComponent(this);this.dataService.init([{data:this.items}]);\r\nthis.generalClassName=\"iui-menu\";this.initStyle()};b.prototype.ngAfterContentInit=function(){this.itemList=this.contentList.toArray();this.updateLayout()};b.prototype.getItemFromComponent=function(a){return a&&a.data?a.data:this.items&&(this.itemList=this.contentList.toArray(),a=this.itemList.indexOf(a),0<=a&&a<this.items.length)?this.items[a]:null};b.prototype.getItemParent=function(a){return this.dataService.getParent(a)};b.prototype.invokeMethod=function(a,b){if(this.isEnabled)switch(a){case \"ITEM_CLICK\":this.itemClick.emit({event:b.event,\r\nitem:b.item})}};b.prototype.updateLayout=function(){};return b}(integralui_core_1.IntegralUIBaseComponent);__decorate([core_1.ContentChildren(integralui_menuitem_1.IntegralUIMenuItem),__metadata(\"design:type\",core_1.QueryList)],IntegralUIMenu.prototype,\"contentList\",void 0);__decorate([core_1.ViewChild(\"content\",{read:core_1.ViewContainerRef}),__metadata(\"design:type\",core_1.ViewContainerRef)],IntegralUIMenu.prototype,\"contentRef\",void 0);\r\n__decorate([core_1.ContentChild(core_1.TemplateRef),__metadata(\"design:type\",Object)],IntegralUIMenu.prototype,\"itemTemplate\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Object)],IntegralUIMenu.prototype,\"appRef\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Array)],IntegralUIMenu.prototype,\"items\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Boolean),__metadata(\"design:paramtypes\",[Boolean])],IntegralUIMenu.prototype,\"virtualMode\",null);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUIMenu.prototype,\"itemClick\",void 0);\r\nIntegralUIMenu=__decorate([core_1.Component({selector:\"iui-menu\",template:'\\n\\t\\t<div [ngClass]=\"getControlClass()\">\\n            <span [ngSwitch]=\"virtualMode\">\\n                <span *ngSwitchCase=\"true\">\\n\\t\\t\\t\\t\\t<ul class=\"iui-menu-block\" #content>\\n\\t\\t\\t\\t\\t\\t<iui-menuitem *ngFor=\"let item of items\" [data]=\"item\" [items]=\"item.items\" [enabled]=\"item.enabled\" [icon]=\"item.icon\" [iconUrl]=\"item.iconUrl\"  [text]=\"item.text\" [level]=\"0\" [templateRef]=\"itemTemplate\"></iui-menuitem>\\n\\t\\t\\t\\t\\t</ul>\\n\\t            </span>\\n                <span *ngSwitchDefault>\\n\\t\\t\\t\\t\\t<ul class=\"iui-menu-block\" #content>\\n\\t\\t\\t\\t\\t\\t<ng-content></ng-content>\\n\\t\\t\\t\\t\\t</ul>\\n\\t            </span>\\n            </span>\\n\\t\\t</div>\\n\\t',inputs:[\"controlStyle\",\r\n\"data\",\"enabled\",\"name\",\"state\"],providers:[integralui_core_1.IntegralUIBaseService,integralui_data_service_1.IntegralUIDataService]}),__metadata(\"design:paramtypes\",[integralui_data_service_1.IntegralUIDataService,core_1.ElementRef,core_1.Renderer,integralui_common_service_1.IntegralUICommonService,core_1.ComponentFactoryResolver,integralui_core_1.IntegralUIBaseService])],IntegralUIMenu);exports.IntegralUIMenu=IntegralUIMenu;","/*\r\n  filename: integralui.slidebar.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(d,b){function a(){this.constructor=d}for(var e in b)b.hasOwnProperty(e)&&(d[e]=b[e]);d.prototype=null===b?Object.create(b):(a.prototype=b.prototype,new a)},__decorate=this&&this.__decorate||function(d,b,a,e){var f=arguments.length,c=3>f?b:null===e?e=Object.getOwnPropertyDescriptor(b,a):e,g;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)c=Reflect.decorate(d,b,a,e);else for(var h=d.length-1;0<=h;h--)if(g=d[h])c=(3>f?g(c):3<f?g(b,a,c):\r\ng(b,a))||c;return 3<f&&c&&Object.defineProperty(b,a,c),c},__metadata=this&&this.__metadata||function(d,b){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(d,b)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),integralui_data_service_1=require(\"../services/integralui.data.service\"),IntegralUISlide=function(){function d(b){this.elemRef=b}d.prototype.size=\r\nfunction(){return{width:Math.floor(this.elemRef.nativeElement.firstElementChild.offsetWidth),height:Math.floor(this.elemRef.nativeElement.firstElementChild.offsetHeight)}};d.prototype.cloneElem=function(){return this.elemRef.nativeElement.firstElementChild.cloneNode(!0)};return d}();\r\nIntegralUISlide=__decorate([core_1.Component({selector:\"iui-slide\",template:'<li class=\"iui-slide\" data-element=\"slide\">\\n    \\t\\t<ng-content></ng-content>\\n\\t\\t</li>\\n\\t'}),__metadata(\"design:paramtypes\",[core_1.ElementRef])],IntegralUISlide);exports.IntegralUISlide=IntegralUISlide;\r\nvar IntegralUISlideBar=function(d){function b(a,b,f){var c=d.call(this,b)||this;c.dataService=a;c.commonService=b;c.cmpResolver=f;c.animationTimeout=null;c.animationTimer=null;c.buttons=[];c.arrowTopPos=0;c.arrowDisplay=\"none\";c.numSlides=0;c.cloneAdded=!1;c.cloneElem=null;c.blockMargin=0;c.elemSize={width:0,height:0};c.blockSize={width:0,height:0};c.slideSize={width:0,height:0};c.currentSelection=null;c.currentSelectedIndex=-1;c.selectedSlideComponent=null;c.removeIndex=-1;c.allowAnimation=!0;c.animationPause=\r\n2E3;c.animationSpeed=\"normal\";c.clear=new core_1.EventEmitter;c.slideAdding=new core_1.EventEmitter;c.slideAdded=new core_1.EventEmitter;c.slideChanged=new core_1.EventEmitter;c.slideRemoving=new core_1.EventEmitter;c.slideRemoved=new core_1.EventEmitter;return c}__extends(b,d);Object.defineProperty(b.prototype,\"selectedIndex\",{get:function(){return this.currentSelectedIndex},set:function(a){this.currentSelectedIndex!=a&&(this.currentSelectedIndex=a,this.selectSlideByIndex(a))},enumerable:!0,configurable:!0});\r\nObject.defineProperty(b.prototype,\"selectedSlide\",{get:function(){return this.currentSelection},set:function(a){this.currentSelection!=a&&(this.currentSelection=a,this.slides&&this.selectSlideByIndex(this.slides.indexOf(a)))},enumerable:!0,configurable:!0});b.prototype.ngOnInit=function(){this.dataService.init([{data:this.slides}])};b.prototype.ngAfterContentInit=function(){this.slideList=this.contentSlideList.toArray();this.checkClone();this.numSlides=this.slideList.length;0<this.numSlides&&(0<=\r\nthis.selectedIndex?this.selectSlideByIndex(this.selectedIndex):this.selectedSlide&&this.slides&&this.selectSlideByIndex(this.slides.indexOf(this.selectedSlide)));this.updateLayout();this.changeSlide()};b.prototype.ngAfterContentChecked=function(){this.contentSlideList&&(this.slideList=this.contentSlideList.toArray(),this.numSlides!=this.slideList.length&&(this.numSlides>this.slideList.length&&this.slides&&0<this.slides.length&&(this.removeIndex==this.slides.length&&(this.removeIndex=this.slides.length-\r\n1),0<=this.removeIndex&&this.removeIndex<this.slides.length&&(this.isIndexInRange(this.removeIndex)?this.selectSlideByIndex(this.removeIndex):this.selectSlideByIndex(this.slideList.length-1))),this.numSlides=this.slideList.length,this.updateLayout()),0==this.numSlides&&(this.cloneElem&&(this.cloneElem.remove(),this.cloneElem=null,this.cloneAdded=!1),this.selectedSlideComponent=null,this.arrowDisplay=\"none\"))};b.prototype.checkClone=function(){this.slideList&&0<this.slideList.length&&!this.cloneAdded&&\r\n(this.cloneElem=this.slideList[0].cloneElem(),this.blockElem.nativeElement.append(this.cloneElem),this.cloneAdded=!0)};b.prototype.clearSlides=function(){this.dataService.clear();this.clear.emit(null)};b.prototype.addSlide=function(a){this.callEventAdd(\"add\",a)};b.prototype.insertSlideAt=function(a,b){this.callEventAdd(\"at\",a,b)};b.prototype.insertSlideBefore=function(a,b){this.callEventAdd(\"ref\",a,-1,b)};b.prototype.insertSlideAfter=function(a,b){this.callEventAdd(\"ref\",a,-1,b,!0)};b.prototype.removeSlide=\r\nfunction(a){this.callEventRemove(a)};b.prototype.removeSlideAt=function(a){this.slides&&0<=a&&a<this.slides.length&&this.callEventRemove(this.slides[a])};b.prototype.callEventAdd=function(a,b,d,c,g){var e={cancel:!1,slide:b};this.slideAdding.emit(e);if(1!=e.cancel){switch(a){case \"at\":this.dataService.insert(b,d);break;case \"ref\":this.dataService.insertByRef(b,c,g);break;default:this.dataService.insert(b)}this.slideAdded.emit({slide:b});this.selectedSlideComponent||this.selectSlideByIndex(0)}};b.prototype.callEventRemove=\r\nfunction(a){var b={cancel:!1,slide:a};this.slideRemoving.emit(b);1!=b.cancel&&(this.removeIndex=this.slides?this.slides.indexOf(a):-1,this.dataService.removeAt(a),this.slideRemoved.emit({slide:a}))};b.prototype.getButtonClass=function(a){var b=this.getSlideCurrentIndex(this.selectedSlideComponent);return a&&a.index==b?\"iui-slidebar-navigator-button-selected\":\"\"};b.prototype.getSlideCurrentIndex=function(a){this.slideList=this.contentSlideList.toArray();return a&&this.slideList?this.slideList.indexOf(a):\r\n-1};b.prototype.getSlideDataIndex=function(a){return a&&(a=this.getSlideCurrentIndex(a),this.slides&&0<=a&&a<this.slides.length)?a:-1};b.prototype.getSlideData=function(a){return this.slides&&0<=a&&a<this.slides.length?this.slides[a]:null};b.prototype.isIndexInRange=function(a){return this.slideList?0<=a&&a<this.slideList.length:!1};b.prototype.ctrlMouseEnter=function(a){this.isEnabled&&(this.arrowDisplay=\"block\")};b.prototype.ctrlMouseLeave=function(a){this.arrowDisplay=\"none\"};b.prototype.prevSlide=\r\nfunction(){if(this.isEnabled){var a=this.getSlideCurrentIndex(this.selectedSlideComponent)-1;this.isIndexInRange(a)?this.selectSlideByIndex(a):this.selectSlideByIndex(this.slideList.length-1)}};b.prototype.nextSlide=function(){if(this.isEnabled){var a=this.getSlideCurrentIndex(this.selectedSlideComponent)+1;this.isIndexInRange(a)?this.selectSlideByIndex(a):this.selectSlideByIndex(0)}};b.prototype.updateLayout=function(){var a=this;a.slideList=a.contentSlideList.toArray();a.buttons.length=0;if(a.slideList&&\r\n0<a.slideList.length){a.blockSize.width=0;a.checkClone();a.selectedSlideComponent||(a.selectedSlideComponent=a.slideList[0]);var b=0;a.slideList.forEach(function(d){var c=d.size();a.blockSize.width+=c.width;a.blockSize.height=c.height;d==a.slideList[0]&&(a.blockSize.width+=c.width,a.elemSize.width=c.width);a.slideSize.width=c.width;a.slideSize.height=c.height;a.buttons.push({index:b});b++});a.blockSize.width++;a.arrowTopPos=Math.floor((a.blockSize.height-a.arrowElem.nativeElement.offsetHeight)/2)}};\r\nb.prototype.cancelAnimation=function(){this.animationTimer&&clearInterval(this.animationTimer);this.animationTimer=null};b.prototype.changeSlide=function(){var a=this.getSlideCurrentIndex(this.selectedSlideComponent);0<=a&&(this.blockMargin=-(this.slideSize.width*a));this.startAnimation()};b.prototype.getSpeedFactor=function(){switch(this.animationSpeed){case \"veryfast\":return 25;case \"fast\":return 15;case \"slow\":return 5;case \"veryslow\":return 2}return 10};b.prototype.startAnimation=function(){var a=\r\nthis;a.animationTimeout&&clearTimeout(a.animationTimeout);a.animationTimeout=setTimeout(function(){a.cancelAnimation();if(0!=a.allowAnimation&&1<a.slideList.length){var b=a.getSlideCurrentIndex(a.selectedSlideComponent),d=0,c=a.getSpeedFactor();a.animationTimer=setInterval(function(){d<a.slideSize.width?(d+=c,a.blockMargin-=c):(d=0,a.cancelAnimation(),b++,a.isIndexInRange(b)?a.selectSlideByIndex(b):a.selectSlideByIndex(0))},15)}clearTimeout(a.animationTimeout)},a.animationPause)};b.prototype.stopAnimation=\r\nfunction(){this.cancelAnimation();var a=this.getSlideCurrentIndex(this.selectedSlideComponent);this.blockMargin=-(this.slideSize.width*a)};b.prototype.selectSlide=function(a){a&&(this.selectedSlideComponent=a,this.slideChanged.emit({index:this.getSlideCurrentIndex(a),slide:this.getSlideData(this.getSlideDataIndex(a))}),this.changeSlide())};b.prototype.selectSlideByIndex=function(a){this.isIndexInRange(a)&&this.selectSlide(this.slideList[a])};return b}(integralui_core_1.IntegralUIBaseComponent);\r\n__decorate([core_1.ViewChild(\"control\",{read:core_1.ViewContainerRef}),__metadata(\"design:type\",core_1.ViewContainerRef)],IntegralUISlideBar.prototype,\"controlRef\",void 0);__decorate([core_1.ViewChild(\"block\",{read:core_1.ViewContainerRef}),__metadata(\"design:type\",core_1.ViewContainerRef)],IntegralUISlideBar.prototype,\"blockRef\",void 0);__decorate([core_1.ContentChildren(IntegralUISlide),__metadata(\"design:type\",core_1.QueryList)],IntegralUISlideBar.prototype,\"contentSlideList\",void 0);\r\n__decorate([core_1.ViewChild(\"block\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUISlideBar.prototype,\"blockElem\",void 0);__decorate([core_1.ViewChild(\"arrow\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUISlideBar.prototype,\"arrowElem\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Boolean)],IntegralUISlideBar.prototype,\"allowAnimation\",void 0);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Number)],IntegralUISlideBar.prototype,\"animationPause\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",String)],IntegralUISlideBar.prototype,\"animationSpeed\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Array)],IntegralUISlideBar.prototype,\"slides\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUISlideBar.prototype,\"selectedIndex\",null);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Object),__metadata(\"design:paramtypes\",[Object])],IntegralUISlideBar.prototype,\"selectedSlide\",null);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUISlideBar.prototype,\"clear\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUISlideBar.prototype,\"slideAdding\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUISlideBar.prototype,\"slideAdded\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUISlideBar.prototype,\"slideChanged\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUISlideBar.prototype,\"slideRemoving\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUISlideBar.prototype,\"slideRemoved\",void 0);\r\nIntegralUISlideBar=__decorate([core_1.Component({selector:\"iui-slidebar\",template:'<div class=\"iui-slidebar\" #control data-element=\"slidebar\" (mouseenter)=\"ctrlMouseEnter($event)\" (mouseleave)=\"ctrlMouseLeave($event)\" [ngStyle]=\"{ \\'width\\': elemSize.width + \\'px\\' }\">\\n        \\t<ul #block class=\"iui-slidebar-container\" [ngStyle]=\"{ \\'margin-left\\': blockMargin + \\'px\\', \\'width\\': blockSize.width + \\'px\\', \\'height\\': blockSize.height + \\'px\\' }\">\\n        \\t\\t<ng-content></ng-content>\\n        \\t</ul>\\n        \\t<div class=\"iui-slidebar-navigator\">\\n        \\t\\t<span class=\"iui-slidebar-navigator-button\" *ngFor=\"let button of buttons; let i = index\" [ngClass]=\"getButtonClass(button)\" (click)=\"selectSlideByIndex(i)\"></span>\\n        \\t</div>\\n        \\t<div #arrow class=\"iui-slidebar-arrow iui-slidebar-arrow-left\" [ngStyle]=\"{ \\'display\\': arrowDisplay, \\'top\\': arrowTopPos + \\'px\\' }\" (click)=\"prevSlide()\"><span></span></div>\\n        \\t<div class=\"iui-slidebar-arrow iui-slidebar-arrow-right\" [ngStyle]=\"{ \\'display\\': arrowDisplay, \\'top\\': arrowTopPos + \\'px\\' }\" (click)=\"nextSlide()\"><span></span></div>\\n\\t\\t</div>\\n\\t',\r\ninputs:[\"controlStyle\",\"data\",\"enabled\",\"name\",\"state\"],providers:[integralui_data_service_1.IntegralUIDataService]}),__metadata(\"design:paramtypes\",[integralui_data_service_1.IntegralUIDataService,integralui_common_service_1.IntegralUICommonService,core_1.ComponentFactoryResolver])],IntegralUISlideBar);exports.IntegralUISlideBar=IntegralUISlideBar;","/*\r\n  filename: integralui.splitcontainer.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(f,b){function a(){this.constructor=f}for(var e in b)b.hasOwnProperty(e)&&(f[e]=b[e]);f.prototype=null===b?Object.create(b):(a.prototype=b.prototype,new a)},__decorate=this&&this.__decorate||function(f,b,a,e){var d=arguments.length,g=3>d?b:null===e?e=Object.getOwnPropertyDescriptor(b,a):e,c;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)g=Reflect.decorate(f,b,a,e);else for(var h=f.length-1;0<=h;h--)if(c=f[h])g=(3>d?c(g):3<d?c(b,a,g):\r\nc(b,a))||g;return 3<d&&g&&Object.defineProperty(b,a,g),g},__metadata=this&&this.__metadata||function(f,b){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(f,b)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),IntegralUISplitContainerTags=function(){return function(){}}();\r\nIntegralUISplitContainerTags=__decorate([core_1.Directive({selector:\"iui-panel1, iui-panel2\"})],IntegralUISplitContainerTags);exports.IntegralUISplitContainerTags=IntegralUISplitContainerTags;\r\nvar IntegralUISplitContainer=function(f){function b(a,b,d,g){var c=f.call(this,b)||this;c.elemRef=a;c.commonService=b;c.cmpResolver=d;c.baseService=g;c.panel1Data={text:\"Panel1\"};c.panel2Data={text:\"Panel2\"};c.blockPos={top:\"0\",right:\"auto\",bottom:\"auto\",left:\"0\"};c.swap=!0;c.tabSize={width:0,height:0};c.maxPos={x:0,y:0};c.currentOrientation=integralui_core_1.IntegralUIOrientation.Horizontal;c.clientRect={width:0,height:0};c.currentSplitterDistance=100;c.panel1Size={width:0,height:0};c.panel2Size=\r\n{width:0,height:0};c.splitterSize={width:0,height:0};c.splitterBlockSize={width:0,height:0};c.splitterHandleSize={width:0,height:0};c.swapButtonSize={width:0,height:0};c.tab1Size={width:0,height:0};c.tab1ContentSize={width:0,height:0};c.tab2Size={width:0,height:0};c.tab2ContentSize={width:0,height:0};c.handleClass=[];c.panelClass=[];c.splitterClass=[];c.swapButtonClass=[];c.tabClass=[];c.orientationChanged=new core_1.EventEmitter;c.panelsSwapped=new core_1.EventEmitter;c.splitterMoved=new core_1.EventEmitter;\r\nc.splitterMoving=new core_1.EventEmitter;c.splitterStartPos={x:0,y:0};c.isSplitterActive=!1;return c}__extends(b,f);Object.defineProperty(b.prototype,\"orientation\",{get:function(){return this.currentOrientation},set:function(a){if(this.currentOrientation!=a)var b=this,d=setTimeout(function(){b.currentOrientation=a;b.refresh();b.updateLayout();clearTimeout(d)},1)},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\"panel1\",{get:function(){return this.panel1Data},set:function(a){this.panel1Data!=\r\na&&(this.panel1Data=a,this.updateLayout())},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\"panel2\",{get:function(){return this.panel2Data},set:function(a){this.panel2Data!=a&&(this.panel2Data=a,this.updateLayout())},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\"splitterDistance\",{get:function(){return this.currentSplitterDistance},set:function(a){if(this.currentSplitterDistance!=a)var b=this,d=setTimeout(function(){a=b.orientation==integralui_core_1.IntegralUIOrientation.Vertical?\r\nMath.min(Math.max(0,a),b.maxPos.x):Math.min(Math.max(0,a),b.maxPos.y);b.currentSplitterDistance=a;b.splitterMoved.emit({value:a});b.updateLayout();clearTimeout(d)},1)},enumerable:!0,configurable:!0});b.prototype.ngOnInit=function(){this.baseService.setComponent(this);this.generalClassName=\"iui-splitcontainer\";this.handleClassName=this.generalClassName+\"-handle\";this.panelClassName=this.generalClassName+\"-panel\";this.splitterClassName=this.generalClassName+\"-splitter\";this.swapButtonClassName=this.generalClassName+\r\n\"-swap-button\";this.tabClassName=this.generalClassName+\"-tab\";this.initStyle()};b.prototype.initStyle=function(){this.defaultStyle={general:{disabled:this.generalClassName+\"-disabled\",focused:this.generalClassName+\"-focused\",normal:this.generalClassName,hovered:this.generalClassName+\"-hovered\",selected:this.generalClassName+\"-selected\"},panel:{disabled:this.panelClassName+\"-disabled\",normal:this.panelClassName+\"-normal\"},splitter:{general:{normal:this.splitterClassName,horizontal:this.splitterClassName+\r\n\"-horizontal\",vertical:this.splitterClassName+\"-vertical\"},handle:{general:this.handleClassName,horizontal:this.handleClassName+\"-horizontal\",vertical:this.handleClassName+\"-vertical\"},swapButton:{disabled:this.swapButtonClassName+\"-disabled\",hovered:this.swapButtonClassName+\"-hovered\",normal:this.swapButtonClassName+\"-normal\",selected:this.swapButtonClassName+\"-selected\"},tab:{disabled:this.tabClassName+\"-disabled\",focused:this.tabClassName+\"-focused\",hovered:this.tabClassName+\"-hovered\",normal:this.tabClassName+\r\n\"-normal\",selected:this.tabClassName+\"-selected\"}}};this.updateStyle(this.controlStyle);this.refresh()};b.prototype.ngAfterContentInit=function(){this.ctrlRect=this.commonService.getPageRect(this.elemRef.nativeElement);this.updateLayout()};b.prototype.swapButtonClicked=function(){if(this.isEnabled){this.swap=!this.swap;var a=this.panel1Data;this.panel1Data=this.panel2Data;this.panel2Data=a;this.panelsSwapped.emit(null);this.updateLayout()}};b.prototype.updateLayout=function(){var a=this,b=setTimeout(function(){a.splitterSize=\r\n{width:0,height:0};for(var d=a.splitterElem.nativeElement.children,e=0;e<d.length-1;e++){switch(e){case 0:a.tab1Size={width:d[e].offsetWidth,height:d[e].offsetHeight};break;case 1:a.swapButtonSize={width:d[e].offsetWidth,height:d[e].offsetHeight};break;case 2:a.tab2Size={width:d[e].offsetWidth,height:d[e].offsetHeight}}a.splitterSize.width<d[0].firstElementChild.offsetHeight&&(a.splitterSize.width=d[0].firstElementChild.offsetHeight);a.splitterSize.height<d[0].offsetHeight&&(a.splitterSize.height=\r\nd[0].offsetHeight)}a.tab1ContentSize={width:a.tab1ContentElem.nativeElement.offsetWidth,height:a.tab1ContentElem.nativeElement.offsetHeight};a.tab2ContentSize={width:a.tab2ContentElem.nativeElement.offsetWidth,height:a.tab2ContentElem.nativeElement.offsetHeight};a.splitterSize.width+=2;a.splitterSize.height+=2;a.clientRect={width:a.elemRef.nativeElement.firstElementChild.clientWidth-2,height:a.elemRef.nativeElement.firstElementChild.clientHeight-2};a.panel1Size={width:a.currentSplitterDistance,height:a.currentSplitterDistance};\r\na.panel2Size={width:a.clientRect.width-a.currentSplitterDistance-a.splitterSize.width-4,height:a.clientRect.height-a.currentSplitterDistance-a.splitterSize.height-4};a.splitterBlockSize=a.orientation==integralui_core_1.IntegralUIOrientation.Vertical?{width:a.splitterElem.nativeElement.clientWidth,height:a.splitterElem.nativeElement.clientHeight-(a.tab1ContentSize.width+a.swapButtonSize.height+a.tab2ContentSize.width+8)}:{width:a.splitterElem.nativeElement.clientWidth-(a.tab1Size.width+a.swapButtonSize.width+\r\na.tab2Size.width+8),height:a.splitterElem.nativeElement.clientHeight};a.splitterHandleSize={width:a.handleElem.nativeElement.offsetWidth,height:a.handleElem.nativeElement.offsetHeight};a.maxPos={x:a.clientRect.width-a.splitterSize.width-4,y:a.clientRect.height-a.splitterSize.height-4};clearTimeout(b)},1)};b.prototype.ctrlMouseMove=function(a){if(this.isEnabled&&1==a.buttons&&this.isSplitterActive){var b=this.commonService.getShiftPos();a={x:a.pageX-this.ctrlRect.left-b.x,y:a.pageY-this.ctrlRect.top-\r\nb.y};b=this.splitterDistance;this.orientation==integralui_core_1.IntegralUIOrientation.Vertical?(b+=a.x-this.splitterStartPos.x,b=Math.min(Math.max(0,b),this.maxPos.x)):(b+=a.y-this.splitterStartPos.y,b=Math.min(Math.max(0,b),this.maxPos.y));if(this.currentSplitterDistance!=b){var d={cancel:!1,value:b};this.splitterMoving.emit(d);1!=d.cancel&&(this.currentSplitterDistance=b,this.updateLayout())}this.splitterStartPos=a}};b.prototype.splitterMouseDown=function(a){if(this.isEnabled){var b=this.commonService.getShiftPos();\r\na={x:a.pageX-this.ctrlRect.left-b.x,y:a.pageY-this.ctrlRect.top-b.y};this.orientation==integralui_core_1.IntegralUIOrientation.Vertical?a.y>this.tab1Size.height+this.swapButtonSize.height+this.tab2Size.height+10&&(this.splitterStartPos=a,this.isSplitterActive=!0):a.x>this.tab1Size.width+this.swapButtonSize.width+this.tab2Size.width+10&&(this.splitterStartPos=a,this.isSplitterActive=!0)}};b.prototype.onWindowMouseUp=function(a){this.isEnabled&&(this.isSplitterActive=!1,this.splitterMoved.emit({value:this.currentSplitterDistance}))};\r\nb.prototype.getInlinePanel1Style=function(){var a={top:\"0\",left:\"0\",width:\"auto\",height:\"auto\"};this.orientation==integralui_core_1.IntegralUIOrientation.Vertical?(a.width=this.panel1Size.width+\"px\",a.height=this.clientRect.height+\"px\"):a.height=this.panel1Size.height+\"px\";return a};b.prototype.getInlinePanel2Style=function(){var a={top:\"0\",left:\"0\",width:\"auto\",height:\"auto\"};this.orientation==integralui_core_1.IntegralUIOrientation.Vertical?(a.left=this.panel1Size.width+this.splitterSize.width+\r\n1+\"px\",a.width=this.panel2Size.width+\"px\",a.height=this.clientRect.height+\"px\"):(a.height=this.panel2Size.height+\"px\",a.top=this.panel1Size.height+this.splitterSize.height+\"px\");return a};b.prototype.getInlineSplitterStyle=function(){var a={top:\"0\",left:\"0\",width:\"auto\",height:\"auto\"};this.orientation==integralui_core_1.IntegralUIOrientation.Vertical?(a.left=this.panel1Size.width+\"px\",a.width=this.splitterSize.width+\"px\",a.height=this.clientRect.height+\"px\"):(a.width=this.clientRect.width+\"px\",a.height=\r\nthis.splitterSize.height+\"px\",a.top=this.panel1Size.height+1+\"px\");return a};b.prototype.getInlineTab1Style=function(){var a={top:\"-1px\",left:\"0\",width:\"auto\",height:\"auto\"};this.orientation==integralui_core_1.IntegralUIOrientation.Vertical?(a.left=\"-1px\",a[\"border-left\"]=\"0\",a.width=this.tab1ContentSize.height+\"px\",a.height=this.tab1ContentSize.width+\"px\"):(a.left=\"-1px\",a[\"border-top\"]=\"0\",a.width=this.tab1ContentSize.width+\"px\",a.height=this.tab1ContentSize.height+\"px\");return a};b.prototype.getInlineTab1ContentStyle=\r\nfunction(){var a={top:\"0\",left:\"0\"};this.orientation==integralui_core_1.IntegralUIOrientation.Vertical&&(a.top=(this.tab1ContentSize.width-this.tab1ContentSize.height)/2+\"px\",a.left=(this.tab1ContentSize.height-this.tab1ContentSize.width)/2+\"px\");return a};b.prototype.getInlineTab2Style=function(){var a={top:\"auto\",right:\"auto\",bottom:\"auto\",left:\"auto\",width:\"auto\",height:\"auto\"};this.orientation==integralui_core_1.IntegralUIOrientation.Vertical?(a[\"border-right\"]=\"0\",a.right=\"-1px\",a.top=this.tab1ContentSize.width+\r\nthis.swapButtonSize.height+4+\"px\",a.width=this.tab2ContentSize.height+\"px\",a.height=this.tab2ContentSize.width+\"px\"):(a.bottom=\"-1px\",a.left=this.tab1ContentSize.width+this.swapButtonSize.width+4+\"px\",a[\"border-bottom\"]=\"0\",a.width=this.tab2ContentSize.width+\"px\",a.height=this.tab2ContentSize.height+\"px\");return a};b.prototype.getInlineTab2ContentStyle=function(){var a={top:\"0\",right:\"0\"};this.orientation==integralui_core_1.IntegralUIOrientation.Vertical&&(a.top=(this.tab2ContentSize.width-this.tab2ContentSize.height)/\r\n2+\"px\",a.right=(this.tab2ContentSize.height-this.tab2ContentSize.width)/2+\"px\");return a};b.prototype.getInlineHandleBlockStyle=function(){var a={cursor:\"ew-resize\",width:\"auto\",height:\"auto\",top:\"auto\",left:\"auto\"};this.orientation==integralui_core_1.IntegralUIOrientation.Vertical?(a.height=this.splitterBlockSize.height+\"px\",a.top=this.tab1ContentSize.width+this.swapButtonSize.height+this.tab2ContentSize.width+8+\"px\",a.left=(this.splitterBlockSize.width-this.splitterHandleSize.width)/2+\"px\"):(a.cursor=\r\n\"ns-resize\",a.width=this.splitterBlockSize.width+\"px\",a.top=(this.splitterBlockSize.height-this.splitterHandleSize.height)/2+\"px\",a.left=this.tab1Size.width+this.swapButtonSize.width+this.tab2Size.width+8+\"px\");return a};b.prototype.getInlineHandleStyle=function(){var a={\"margin-top\":\"0\",\"margin-left\":\"0\"};this.orientation==integralui_core_1.IntegralUIOrientation.Vertical?a[\"margin-top\"]=(this.splitterBlockSize.height-this.splitterHandleSize.height)/2+\"px\":a[\"margin-left\"]=(this.splitterBlockSize.width-\r\nthis.splitterHandleSize.width)/2+\"px\";return a};b.prototype.getInlineSwapButtonStyle=function(){return this.orientation==integralui_core_1.IntegralUIOrientation.Vertical?{top:this.tab1ContentSize.width+2+\"px\",left:(this.splitterSize.width-this.swapButtonSize.width)/2+\"px\"}:{top:(this.splitterSize.height-this.swapButtonSize.height)/2+\"px\",left:this.tab1ContentSize.width+2+\"px\"}};b.prototype.updateSplitterClass=function(){this.splitterClass.length=0;this.splitterClass.push(this.splitterClassName);this.splitterClass.push(this.options.currentStyle.splitter.general.normal);\r\nthis.orientation==integralui_core_1.IntegralUIOrientation.Vertical?this.splitterClass.push(this.options.currentStyle.splitter.general.vertical):this.splitterClass.push(this.options.currentStyle.splitter.general.horizontal)};b.prototype.getSplitterClass=function(){return this.splitterClass};b.prototype.updateHandleClass=function(){this.handleClass.length=0;this.handleClass.push(this.handleClassName);this.handleClass.push(this.options.currentStyle.splitter.handle.general);this.orientation==integralui_core_1.IntegralUIOrientation.Vertical?\r\nthis.handleClass.push(this.options.currentStyle.splitter.handle.vertical):this.handleClass.push(this.options.currentStyle.splitter.handle.horizontal)};b.prototype.getHandleClass=function(){return this.handleClass};b.prototype.updatePanelClass=function(){this.panelClass.length=0;this.panelClass.push(this.panelClassName);this.panelClass.push(this.options.currentStyle.panel.normal)};b.prototype.getPanelClass=function(){return this.panelClass};b.prototype.updateSwapButtonClass=function(){this.swapButtonClass.length=\r\n0;this.swapButtonClass.push(this.swapButtonClassName);this.swapButtonClass.push(this.options.currentStyle.splitter.swapButton.normal);this.orientation==integralui_core_1.IntegralUIOrientation.Vertical&&this.swapButtonClass.push(this.swapButtonClassName+\"-vertical\")};b.prototype.getSwapButtonClass=function(){return this.swapButtonClass};b.prototype.updateTabClass=function(){this.tabClass.length=0;this.tabClass.push(this.tabClassName);this.tabClass.push(this.options.currentStyle.splitter.tab.selected);\r\nthis.orientation==integralui_core_1.IntegralUIOrientation.Vertical&&this.tabClass.push(this.tabClassName+\"-vertical\")};b.prototype.getTabClass=function(){return this.tabClass};b.prototype.getPanelStyle=function(a){return this.commonService.isString(a)?a:a?{disabled:this.commonService.isFieldAvailable(a.disabled,this.panelClassName+\"-disabled\"),normal:this.commonService.isFieldAvailable(a.normal,this.panelClassName)}:{disabled:this.defaultStyle.panel.disabled,normal:this.defaultStyle.panel.normal}};\r\nb.prototype.getSplitterGeneralStyle=function(a){return this.commonService.isString(a)?a:a?{normal:this.commonService.isFieldAvailable(a.normal,this.splitterClassName),horizontal:this.commonService.isFieldAvailable(a.horizontal,this.splitterClassName+\"-horizontal\"),vertical:this.commonService.isFieldAvailable(a.vertical,this.splitterClassName+\"-vertical\")}:{normal:this.defaultStyle.splitter.general.normal,horizontal:this.defaultStyle.splitter.general.horizontal,vertical:this.defaultStyle.splitter.general.vertical}};\r\nb.prototype.getHandleStyle=function(a){return this.commonService.isString(a)?a:a?{general:this.commonService.isFieldAvailable(a.general,this.handleClassName),horizontal:this.commonService.isFieldAvailable(a.horizontal,this.handleClassName+\"-horizontal\"),vertical:this.commonService.isFieldAvailable(a.vertical,this.handleClassName+\"-vertical\")}:{general:this.defaultStyle.splitter.handle.general,horizontal:this.defaultStyle.splitter.handle.horizontal,vertical:this.defaultStyle.splitter.handle.vertical}};\r\nb.prototype.getSwapButtonStyle=function(a){return this.commonService.isString(a)?a:a?{disabled:this.commonService.isFieldAvailable(a.disabled,this.swapButtonClassName+\"-disabled\"),hovered:this.commonService.isFieldAvailable(a.hovered,this.swapButtonClassName+\"-hovered\"),normal:this.commonService.isFieldAvailable(a.normal,this.swapButtonClassName),selected:this.commonService.isFieldAvailable(a.selected,this.swapButtonClassName+\"-selected\")}:{disabled:this.defaultStyle.splitter.swapButton.disabled,\r\nhovered:this.defaultStyle.splitter.swapButton.hovered,normal:this.defaultStyle.splitter.swapButton.normal,selected:this.defaultStyle.splitter.swapButton.selected}};b.prototype.getTabStyle=function(a){return this.commonService.isString(a)?a:a?{disabled:this.commonService.isFieldAvailable(a.disabled,this.tabClassName+\"-disabled\"),focused:this.commonService.isFieldAvailable(a.focused,this.tabClassName+\"-focused\"),hovered:this.commonService.isFieldAvailable(a.hovered,this.tabClassName+\"-hovered\"),normal:this.commonService.isFieldAvailable(a.normal,\r\nthis.tabClassName),selected:this.commonService.isFieldAvailable(a.selected,this.tabClassName+\"-selected\")}:{disabled:this.defaultStyle.splitter.tab.disabled,focused:this.defaultStyle.splitter.tab.focused,hovered:this.defaultStyle.splitter.tab.hovered,normal:this.defaultStyle.splitter.tab.normal,selected:this.defaultStyle.splitter.tab.selected}};b.prototype.getSplitterStyle=function(a){return this.commonService.isString(a)?a:a?{general:this.getSplitterGeneralStyle(a.general),handle:this.getHandleStyle(a.handle),\r\nswapButton:this.getSwapButtonStyle(a.swapButton),tab:this.getTabStyle(a.tab)}:this.getDefaultSplitterStyle()};b.prototype.getDefaultStyle=function(){return{general:this.getDefaultGeneralStyle(),panel:this.getDefaultPanelStyle(),splitter:this.getDefaultSplitterStyle()}};b.prototype.getDefaultPanelStyle=function(){return{disabled:this.defaultStyle.panel.disabled,normal:this.defaultStyle.panel.normal}};b.prototype.getDefaultSplitterStyle=function(){return{general:{normal:this.defaultStyle.splitter.general.normal,\r\nhorizontal:this.defaultStyle.splitter.general.horizontal,vertical:this.defaultStyle.splitter.general.vertical},handle:{general:this.defaultStyle.splitter.handle.general,horizontal:this.defaultStyle.splitter.handle.horizontal,vertical:this.defaultStyle.splitter.handle.vertical},swapButton:{disabled:this.defaultStyle.splitter.swapButton.disabled,hovered:this.defaultStyle.splitter.swapButton.hovered,normal:this.defaultStyle.splitter.swapButton.normal,selected:this.defaultStyle.splitter.swapButton.selected},\r\ntab:{disabled:this.defaultStyle.splitter.tab.disabled,focused:this.defaultStyle.splitter.tab.focused,hovered:this.defaultStyle.splitter.tab.hovered,normal:this.defaultStyle.splitter.tab.normal,selected:this.defaultStyle.splitter.tab.selected}}};b.prototype.updateStyle=function(a){this.options.currentStyle=a?{general:this.getGeneralStyle(a.general),panel:this.getPanelStyle(a.panel),splitter:this.getSplitterStyle(a.splitter)}:this.getDefaultStyle()};b.prototype.refresh=function(){this.updateControlClass();\r\nthis.updateSplitterClass();this.updateHandleClass();this.updatePanelClass();this.updateSwapButtonClass();this.updateTabClass()};return b}(integralui_core_1.IntegralUIBaseComponent);__decorate([core_1.ViewChild(\"handle\"),__metadata(\"design:type\",core_1.ElementRef)],IntegralUISplitContainer.prototype,\"handleElem\",void 0);__decorate([core_1.ViewChild(\"panel1\"),__metadata(\"design:type\",core_1.ElementRef)],IntegralUISplitContainer.prototype,\"panel1Elem\",void 0);\r\n__decorate([core_1.ViewChild(\"panel2\"),__metadata(\"design:type\",core_1.ElementRef)],IntegralUISplitContainer.prototype,\"panel2Elem\",void 0);__decorate([core_1.ViewChild(\"splitter\"),__metadata(\"design:type\",core_1.ElementRef)],IntegralUISplitContainer.prototype,\"splitterElem\",void 0);__decorate([core_1.ViewChild(\"splitter\",{read:core_1.ViewContainerRef}),__metadata(\"design:type\",core_1.ViewContainerRef)],IntegralUISplitContainer.prototype,\"splitterRef\",void 0);\r\n__decorate([core_1.ViewChild(\"tab1Content\"),__metadata(\"design:type\",core_1.ElementRef)],IntegralUISplitContainer.prototype,\"tab1ContentElem\",void 0);__decorate([core_1.ViewChild(\"tab2Content\"),__metadata(\"design:type\",core_1.ElementRef)],IntegralUISplitContainer.prototype,\"tab2ContentElem\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUISplitContainer.prototype,\"orientation\",null);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Object),__metadata(\"design:paramtypes\",[Object])],IntegralUISplitContainer.prototype,\"panel1\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Object),__metadata(\"design:paramtypes\",[Object])],IntegralUISplitContainer.prototype,\"panel2\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUISplitContainer.prototype,\"splitterDistance\",null);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUISplitContainer.prototype,\"orientationChanged\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUISplitContainer.prototype,\"panelsSwapped\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUISplitContainer.prototype,\"splitterMoved\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUISplitContainer.prototype,\"splitterMoving\",void 0);__decorate([core_1.HostListener(\"document:mouseup\",[\"$event\"]),__metadata(\"design:type\",Function),__metadata(\"design:paramtypes\",[Object]),__metadata(\"design:returntype\",void 0)],IntegralUISplitContainer.prototype,\"onWindowMouseUp\",null);\r\nIntegralUISplitContainer=__decorate([core_1.Component({selector:\"iui-splitcontainer\",template:'\\n\\t\\t<div [ngClass]=\"getControlClass()\" (mousemove)=\"ctrlMouseMove($event)\">\\n\\t\\t\\t<div [ngClass]=\"getPanelClass()\" [ngStyle]=\"getInlinePanel1Style()\" #panel1>\\n\\t\\t\\t\\t<ng-content select=\"iui-panel1\"></ng-content>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div [ngClass]=\"getSplitterClass()\" [ngStyle]=\"getInlineSplitterStyle()\" (mousedown)=\"splitterMouseDown($event)\" #splitter>\\n\\t\\t\\t\\t<div [ngClass]=\"getTabClass()\" [ngStyle]=\"getInlineTab1Style()\">\\n\\t\\t\\t\\t\\t<div #tab1Content [ngStyle]=\"getInlineTab1ContentStyle()\">\\n\\t\\t\\t\\t\\t\\t<span *ngIf=\"panel1Data.icon\" [ngClass]=\"panel1Data.icon\"></span>\\n\\t\\t\\t\\t\\t    <span *ngIf=\"panel1Data.text\">{{panel1Data.text}}</span>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t<div [ngClass]=\"getSwapButtonClass()\" [ngStyle]=\"getInlineSwapButtonStyle()\" (click)=\"swapButtonClicked()\" #btnSwap>\\n\\t\\t\\t\\t\\t<span></span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t<div [ngClass]=\"getTabClass()\" [ngStyle]=\"getInlineTab2Style()\">\\n\\t\\t\\t\\t\\t<div #tab2Content [ngStyle]=\"getInlineTab2ContentStyle()\">\\n\\t\\t\\t\\t\\t\\t<span *ngIf=\"panel2Data.icon\" [ngClass]=\"panel2Data.icon\"></span>\\n\\t\\t\\t\\t\\t    <span *ngIf=\"panel2Data.text\">{{panel2Data.text}}</span>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t<div [ngClass]=\"getHandleClass()\" [ngStyle]=\"getInlineHandleBlockStyle()\">\\n\\t\\t\\t\\t\\t<span [ngStyle]=\"getInlineHandleStyle()\" #handle></span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div [ngClass]=\"getPanelClass()\" [ngStyle]=\"getInlinePanel2Style()\" #panel2>\\n\\t\\t\\t\\t<ng-content select=\"iui-panel2\"></ng-content>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t',inputs:[\"controlStyle\",\r\n\"data\",\"enabled\",\"name\",\"state\"],providers:[integralui_core_1.IntegralUIBaseService],encapsulation:core_1.ViewEncapsulation.None}),__metadata(\"design:paramtypes\",[core_1.ElementRef,integralui_common_service_1.IntegralUICommonService,core_1.ComponentFactoryResolver,integralui_core_1.IntegralUIBaseService])],IntegralUISplitContainer);exports.IntegralUISplitContainer=IntegralUISplitContainer;","/*\r\n  filename: integralui.tabstrip.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(g,c){function a(){this.constructor=g}for(var b in c)c.hasOwnProperty(b)&&(g[b]=c[b]);g.prototype=null===c?Object.create(c):(a.prototype=c.prototype,new a)},__decorate=this&&this.__decorate||function(g,c,a,b){var e=arguments.length,f=3>e?c:null===b?b=Object.getOwnPropertyDescriptor(c,a):b,k;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)f=Reflect.decorate(g,c,a,b);else for(var m=g.length-1;0<=m;m--)if(k=g[m])f=(3>e?k(f):3<e?k(c,a,f):\r\nk(c,a))||f;return 3<e&&f&&Object.defineProperty(c,a,f),f},__metadata=this&&this.__metadata||function(g,c){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(g,c)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),integralui_data_service_1=require(\"../services/integralui.data.service\"),integralui_tab_1=require(\"./integralui.tab\"),IntegralUITabStrip=function(g){function c(a,\r\nb,c,f,k,m){var d=g.call(this,f)||this;d.dataService=a;d.elemRef=b;d.elemRenderer=c;d.commonService=f;d.cmpResolver=k;d.baseService=m;d.dataTabs=[];d.eventList=[];d.numTabs=0;d.autoSizeValue=!1;d.currentTabPlacement=integralui_core_1.IntegralUITabStripPlacement.Top;d.blockPos={top:\"0\",right:\"auto\",bottom:\"auto\",left:\"0\"};d.tabSize={width:0,height:0};d.currentSelection=null;d.currentSelectedIndex=-1;d.selectedComponent=null;d.prevComponent=null;d.removeIndex=-1;d.tabSpacing=0;d.afterSelect=new core_1.EventEmitter;\r\nd.beforeSelect=new core_1.EventEmitter;d.tabAdding=new core_1.EventEmitter;d.tabAdded=new core_1.EventEmitter;d.clear=new core_1.EventEmitter;d.tabRemoving=new core_1.EventEmitter;d.tabRemoved=new core_1.EventEmitter;d.selectionChanged=new core_1.EventEmitter;d.tabList=[];return d}__extends(c,g);Object.defineProperty(c.prototype,\"autoSize\",{get:function(){return this.autoSizeValue},set:function(a){this.autoSizeValue!=a&&(this.autoSizeValue=a,this.updateLayout())},enumerable:!0,configurable:!0});Object.defineProperty(c.prototype,\r\n\"selectedIndex\",{get:function(){return this.currentSelectedIndex},set:function(a){this.currentSelectedIndex!=a&&(this.currentSelectedIndex=a,this.selectComponentByIndex(a))},enumerable:!0,configurable:!0});Object.defineProperty(c.prototype,\"selectedTab\",{get:function(){return this.currentSelection},set:function(a){this.currentSelection!=a&&(this.currentSelection=a,this.selectTab(a))},enumerable:!0,configurable:!0});Object.defineProperty(c.prototype,\"tabs\",{get:function(){return this.dataTabs},set:function(a){this.dataTabs=\r\na;this.updateData();var b=this;setTimeout(function(){b.tabList=b.contentList.toArray();b.numTabs=b.tabList.length;0<b.numTabs&&(0<=b.selectedIndex?b.selectComponentByIndex(b.selectedIndex):b.selectedTab&&b.tabs?b.selectComponentByIndex(b.tabs.indexOf(b.selectedTab)):b.selectComponentByIndex(0));b.updateLayout()},100)},enumerable:!0,configurable:!0});Object.defineProperty(c.prototype,\"tabStripPlacement\",{get:function(){return this.currentTabPlacement},set:function(a){this.currentTabPlacement!=a&&(this.currentTabPlacement=\r\na,this.updateLayout())},enumerable:!0,configurable:!0});c.prototype.ngOnInit=function(){this.baseService.setComponent(this);this.updateData();this.generalClassName=\"iui-tabstrip\";this.tabHeaderClassName=\"iui-tab-header\";this.initStyle()};c.prototype.updateData=function(){this.dataService.init([{data:this.tabs}])};c.prototype.ngAfterContentInit=function(){};c.prototype.addTab=function(a){this.callEventAdd(\"add\",a)};c.prototype.clearTabs=function(){this.dataService.clear();this.clear.emit(null)};c.prototype.insertTabAt=\r\nfunction(a,b){this.callEventAdd(\"at\",a,b)};c.prototype.insertTabBefore=function(a,b){this.callEventAdd(\"ref\",a,-1,b)};c.prototype.insertTabAfter=function(a,b){this.callEventAdd(\"ref\",a,-1,b,!0)};c.prototype.removeTab=function(a){this.callEventRemove(a)};c.prototype.removeTabAt=function(a){this.tabs&&0<=a&&a<this.tabs.length&&this.callEventRemove(this.tabs[a])};c.prototype.callEventAdd=function(a,b,c,f,k){var e={cancel:!1,tab:b};this.tabAdding.emit(e);if(1!=e.cancel){switch(a){case \"at\":this.dataService.insert(b,\r\nc);break;case \"ref\":this.dataService.insertByRef(b,f,k);break;default:this.dataService.insert(b)}this.tabAdded.emit({tab:b});this.selectedComponent||this.selectComponentByIndex(0)}};c.prototype.callEventRemove=function(a){var b={cancel:!1,tab:a};this.tabRemoving.emit(b);1!=b.cancel&&(this.removeIndex=this.tabs?this.tabs.indexOf(a):-1,this.dataService.removeAt(a),this.tabRemoved.emit({tab:a}))};c.prototype.attachTabEvents=function(){};c.prototype.getTabCurrentIndex=function(a){this.tabList=this.contentList.toArray();\r\nreturn a&&this.tabList?this.tabList.indexOf(a):-1};c.prototype.getTabDataIndex=function(a){return a&&(a=this.getTabCurrentIndex(a),this.tabs&&0<=a&&a<this.tabs.length)?a:-1};c.prototype.getTabData=function(a){return this.tabs&&0<=a&&a<this.tabs.length?this.tabs[a]:null};c.prototype.getTabIndex=function(a){return a&&this.tabs?this.tabs.indexOf(a):-1};c.prototype.getComponentData=function(a){if(a){if(a.data)return a.data;a=this.getTabDataIndex(a);if(this.tabs&&0<=a&&a<this.tabs.length)return this.tabs[a]}return null};\r\nc.prototype.isIndexInRange=function(a){this.contentList&&(this.tabList=this.contentList.toArray());return this.tabList?0<=a&&a<this.tabList.length:!1};c.prototype.updateLayout=function(){this.updateTabLayout()};c.prototype.updateTabLayout=function(){var a=this,b=setTimeout(function(){a.tabList=a.contentList.toArray();if(a.tabHeaders){var c=0,f=0,k=0,g=0,d={top:0,left:0},l={width:0,height:0};a.tabSize={width:0,height:0};var n=a.tabHeaders.toArray();if(n&&0<n.length){n.forEach(function(b,d){k=b.nativeElement.offsetWidth;\r\ng=b.nativeElement.offsetHeight;var e=a.commonService.getPadding(b.nativeElement);switch(a.currentTabPlacement){case integralui_core_1.IntegralUITabStripPlacement.Right:a.blockPos={top:\"0\",right:\"0\",bottom:\"auto\",left:\"auto\"};a.elemRenderer.setElementStyle(b.nativeElement,\"top\",f+\"px\");a.elemRenderer.setElementStyle(b.nativeElement,\"right\",\"0\");a.elemRenderer.setElementStyle(b.nativeElement,\"bottom\",\"auto\");a.elemRenderer.setElementStyle(b.nativeElement,\"left\",\"auto\");a.tabSize.width<k&&(a.tabSize.width=\r\nk-(e.left+e.right)-1);break;case integralui_core_1.IntegralUITabStripPlacement.Bottom:a.blockPos={top:\"auto\",right:\"auto\",bottom:\"0\",left:\"0\"};a.elemRenderer.setElementStyle(b.nativeElement,\"top\",\"auto\");a.elemRenderer.setElementStyle(b.nativeElement,\"right\",\"auto\");a.elemRenderer.setElementStyle(b.nativeElement,\"bottom\",\"0\");a.elemRenderer.setElementStyle(b.nativeElement,\"left\",c+\"px\");a.tabSize.height<g&&(a.tabSize.height=g-(e.top+e.bottom));break;case integralui_core_1.IntegralUITabStripPlacement.Left:a.blockPos=\r\n{top:\"0\",right:\"auto\",bottom:\"auto\",left:\"0\"};a.elemRenderer.setElementStyle(b.nativeElement,\"top\",f+\"px\");a.elemRenderer.setElementStyle(b.nativeElement,\"right\",\"auto\");a.elemRenderer.setElementStyle(b.nativeElement,\"bottom\",\"auto\");a.elemRenderer.setElementStyle(b.nativeElement,\"left\",\"0\");a.tabSize.width<k&&(a.tabSize.width=k-(e.left+e.right)-1);break;default:a.blockPos={top:\"0\",right:\"auto\",bottom:\"auto\",left:\"0\"},a.elemRenderer.setElementStyle(b.nativeElement,\"top\",\"0\"),a.elemRenderer.setElementStyle(b.nativeElement,\r\n\"right\",\"auto\"),a.elemRenderer.setElementStyle(b.nativeElement,\"bottom\",\"auto\"),a.elemRenderer.setElementStyle(b.nativeElement,\"left\",c+\"px\"),a.tabSize.height<g&&(a.tabSize.height=g)}e=a.tabSpacing;c+=k+e-1;f+=g+e-1});var h=a.commonService.getBorderWidth(a.elemRef.nativeElement.children[0]);n.forEach(function(b,c){var e=a.commonService.getPadding(b.nativeElement);switch(a.currentTabPlacement){case integralui_core_1.IntegralUITabStripPlacement.Right:a.elemRenderer.setElementStyle(b.nativeElement,\"width\",\r\na.tabSize.width+\"px\");d={top:0,left:0};l={width:a.elemRef.nativeElement.children[0].clientWidth-(h.left+h.right-1)-a.tabSize.width-(e.left+e.right)-2,height:a.elemRef.nativeElement.children[0].clientHeight-(h.top+h.bottom)};break;case integralui_core_1.IntegralUITabStripPlacement.Bottom:a.elemRenderer.setElementStyle(b.nativeElement,\"height\",a.tabSize.height+\"px\");d={top:0,left:0};l={width:a.elemRef.nativeElement.children[0].clientWidth-(h.left+h.right),height:a.elemRef.nativeElement.children[0].clientHeight-\r\na.tabSize.height-(e.top+e.bottom)-2-(h.top+h.bottom-1)};break;case integralui_core_1.IntegralUITabStripPlacement.Left:a.elemRenderer.setElementStyle(b.nativeElement,\"width\",a.tabSize.width+\"px\");d={top:0,left:a.tabSize.width+(e.left+e.right)+1};l={width:a.elemRef.nativeElement.children[0].clientWidth-(h.left+h.right-1)-a.tabSize.width-(e.left+e.right)-2,height:a.elemRef.nativeElement.children[0].clientHeight-(h.top+h.bottom)};break;default:d={top:a.tabSize.height-1,left:0},l={width:a.elemRef.nativeElement.children[0].clientWidth-\r\n(h.left+h.right),height:a.elemRef.nativeElement.children[0].clientHeight-a.tabSize.height-(h.top+h.bottom-1)},a.autoSizeValue&&(l.height=\"auto\")}})}a.tabList&&0<a.tabList.length&&a.tabList.forEach(function(a){a.updateLayout(d,l)})}clearTimeout(b)},1)};c.prototype.tabClicked=function(a,b){this.isEnabled&&this.selectComponent(b)};c.prototype.tabEnter=function(a,b){this.isEnabled&&!b.selected&&(b.state|=integralui_core_1.IntegralUIObjectState.hovered)};c.prototype.tabLeave=function(a,b){b.state&=~integralui_core_1.IntegralUIObjectState.hovered};\r\nc.prototype.clearSelection=function(a){this.tabList=this.contentList.toArray();this.tabList.forEach(function(b,c){b!=a&&(b.selected=!1)})};c.prototype.selectComponent=function(a){if(a&&a!=this.selectedComponent){var b=this.getTabCurrentIndex(a),c=this.getComponentData(a),f={cancel:!1,index:b,tab:c};this.beforeSelect.emit(f);if(1!=f.cancel)return this.currentSelectedIndex=b,this.tabs&&0<=b&&b<this.tabs.length&&(this.currentSelection=this.tabs[b]),this.prevComponent=this.selectedComponent,this.selectedComponent=\r\na,this.clearSelection(a),a.selected=!0,this.afterSelect.emit({index:b,tab:c}),this.selectionChanged.emit({index:b,tab:c}),!0}return!1};c.prototype.selectComponentByIndex=function(a){this.isIndexInRange(a)&&this.selectComponent(this.tabList[a])};c.prototype.selectTab=function(a){this.tabs&&(this.currentSelectedIndex=this.tabs.indexOf(a),this.selectComponentByIndex(this.currentSelectedIndex))};c.prototype.getTabHeaderClass=function(a){var b=a.getCurrentTabStyle(),c=b.header.normal;if(a.state&integralui_core_1.IntegralUIObjectState.disabled)c+=\r\n\" \"+b.header.disabled;else if(a.state&integralui_core_1.IntegralUIObjectState.focused)c+=\" \"+b.header.focused;else if(a.state&integralui_core_1.IntegralUIObjectState.selected)switch(c+=\" \"+b.header.selected,this.currentTabPlacement){case integralui_core_1.IntegralUITabStripPlacement.Right:c+=\" iui-tab-selected-right\";break;case integralui_core_1.IntegralUITabStripPlacement.Bottom:c+=\" iui-tab-selected-bottom\";break;case integralui_core_1.IntegralUITabStripPlacement.Left:c+=\" iui-tab-selected-left\";\r\nbreak;default:c+=\" iui-tab-selected-top\"}else a.state&integralui_core_1.IntegralUIObjectState.hovered&&(c+=\" \"+b.header.hovered);return c};return c}(integralui_core_1.IntegralUIBaseComponent);__decorate([core_1.ContentChildren(integralui_tab_1.IntegralUITab),__metadata(\"design:type\",core_1.QueryList)],IntegralUITabStrip.prototype,\"contentList\",void 0);__decorate([core_1.ViewChild(\"tabBlock\"),__metadata(\"design:type\",core_1.ElementRef)],IntegralUITabStrip.prototype,\"tabBlock\",void 0);\r\n__decorate([core_1.ViewChild(\"tabBlock\",{read:core_1.ViewContainerRef}),__metadata(\"design:type\",core_1.ViewContainerRef)],IntegralUITabStrip.prototype,\"tabBlockRef\",void 0);__decorate([core_1.ViewChildren(\"tabHeader\"),__metadata(\"design:type\",core_1.QueryList)],IntegralUITabStrip.prototype,\"tabHeaders\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Boolean),__metadata(\"design:paramtypes\",[Boolean])],IntegralUITabStrip.prototype,\"autoSize\",null);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Number)],IntegralUITabStrip.prototype,\"tabSpacing\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUITabStrip.prototype,\"selectedIndex\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Object),__metadata(\"design:paramtypes\",[Object])],IntegralUITabStrip.prototype,\"selectedTab\",null);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Array),__metadata(\"design:paramtypes\",[Array])],IntegralUITabStrip.prototype,\"tabs\",null);__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUITabStrip.prototype,\"tabStripPlacement\",null);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITabStrip.prototype,\"afterSelect\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITabStrip.prototype,\"beforeSelect\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITabStrip.prototype,\"tabAdding\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITabStrip.prototype,\"tabAdded\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITabStrip.prototype,\"clear\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITabStrip.prototype,\"tabRemoving\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITabStrip.prototype,\"tabRemoved\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITabStrip.prototype,\"selectionChanged\",void 0);\r\nIntegralUITabStrip=__decorate([core_1.Component({selector:\"iui-tabstrip\",template:'\\n\\t\\t<div [ngClass]=\"getControlClass()\">\\n\\t\\t\\t<ul [ngStyle]=\"{ \\'top\\': blockPos.top , \\'right\\': blockPos.right, \\'bottom\\': blockPos.bottom, \\'left\\': blockPos.left }\" #tabBlock>\\n\\t\\t\\t\\t<li *ngFor=\"let tab of tabList\" (mouseenter)=\"tabEnter($event, tab)\" (mouseleave)=\"tabLeave($event, tab)\" (mousedown)=\"tabClicked($event, tab)\" [ngClass]=\"getTabHeaderClass(tab)\" [ngStyle]=\"{ \\'z-index\\': tab.elemOrder }\" #tabHeader>\\n\\t\\t\\t\\t\\t<span *ngIf=\"tab.icon\" [ngClass]=\"tab.icon\"></span>\\n\\t\\t\\t\\t    <span *ngIf=\"tab.text\" class=\"iui-tab-label\">{{tab.text}}</span>\\n\\t\\t\\t\\t</li>\\n\\t\\t\\t</ul>\\n\\t\\t\\t<ng-content></ng-content>\\n\\t\\t</div>\\n\\t',inputs:[\"controlStyle\",\r\n\"data\",\"enabled\",\"name\",\"state\"],providers:[integralui_core_1.IntegralUIBaseService,integralui_data_service_1.IntegralUIDataService],encapsulation:core_1.ViewEncapsulation.None}),__metadata(\"design:paramtypes\",[integralui_data_service_1.IntegralUIDataService,core_1.ElementRef,core_1.Renderer,integralui_common_service_1.IntegralUICommonService,core_1.ComponentFactoryResolver,integralui_core_1.IntegralUIBaseService])],IntegralUITabStrip);exports.IntegralUITabStrip=IntegralUITabStrip;","\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require(\"@angular/core\");\r\nvar integralui_core_1 = require(\"./integralui.core\");\r\nvar integralui_base_grid_1 = require(\"./integralui.base.grid\");\r\nvar integralui_common_service_1 = require(\"../services/integralui.common.service\");\r\nvar integralui_data_service_1 = require(\"../services/integralui.data.service\");\r\nvar integralui_dragdrop_service_1 = require(\"../services/integralui.dragdrop.service\");\r\nvar integralui_filter_service_1 = require(\"../services/integralui.filter.service\");\r\nvar integralui_scrollbar_1 = require(\"./integralui.scrollbar\");\r\nvar IntegralUITreeGrid = (function (_super) {\r\n    __extends(IntegralUITreeGrid, _super);\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUITreeGrid(dataService, dragDropService, elemRef, elemRenderer, commonService, filterService, cmpResolver, baseService) {\r\n        var _this = _super.call(this, dataService, dragDropService, elemRef, elemRenderer, commonService, filterService) || this;\r\n        _this.dataService = dataService;\r\n        _this.dragDropService = dragDropService;\r\n        _this.elemRef = elemRef;\r\n        _this.elemRenderer = elemRenderer;\r\n        _this.commonService = commonService;\r\n        _this.filterService = filterService;\r\n        _this.cmpResolver = cmpResolver;\r\n        _this.baseService = baseService;\r\n        // Variables -------------------------------------------------------------------------\r\n        // Data\r\n        _this.headerData = [];\r\n        _this.rowData = [];\r\n        _this.cellData = [];\r\n        _this.footerData = [];\r\n        _this.fullList = [];\r\n        // Drag Drop\r\n        _this.expandTimeout = null;\r\n        _this.expandRow = null;\r\n        _this.horScrollOrientation = integralui_core_1.IntegralUIOrientation.Horizontal;\r\n        _this.isThereChildRows = false;\r\n        // Drag Drop\r\n        // Layout \r\n        _this.blockMarginTop = 0;\r\n        _this.blockSize = { width: 0, height: 0 };\r\n        _this.updateTimer = null;\r\n        _this.templateList = [];\r\n        // Resizing\r\n        _this.gridCursor = 'default';\r\n        _this.refreshTimer = null;\r\n        // Trial\r\n        _this.trialRef = null;\r\n        // Properties ------------------------------------------------------------------------\r\n        _this.autoExpand = false;\r\n        // Events ----------------------------------------------------------------------------\r\n        _this.afterCollapse = new core_1.EventEmitter();\r\n        _this.afterExpand = new core_1.EventEmitter();\r\n        _this.beforeCollapse = new core_1.EventEmitter();\r\n        _this.beforeExpand = new core_1.EventEmitter();\r\n        return _this;\r\n    }\r\n    Object.defineProperty(IntegralUITreeGrid.prototype, \"expandColumnIndex\", {\r\n        get: function () {\r\n            return this.expandColIndex;\r\n        },\r\n        set: function (value) {\r\n            if (this.expandColIndex != value) {\r\n                this.expandColIndex = value;\r\n                this.updateLayout();\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUITreeGrid.prototype, \"expandColumnID\", {\r\n        get: function () {\r\n            return this.currentExpandColumnID;\r\n        },\r\n        set: function (value) {\r\n            if (this.currentExpandColumnID != value) {\r\n                this.currentExpandColumnID = value;\r\n                this.updateLayout();\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUITreeGrid.prototype, \"indent\", {\r\n        get: function () {\r\n            return this.options.indent;\r\n        },\r\n        set: function (value) {\r\n            if (this.options.indent != value) {\r\n                this.options.indent = value;\r\n                this.updateLayout();\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUITreeGrid.prototype, \"showHeader\", {\r\n        get: function () {\r\n            return this.isHeaderVisible;\r\n        },\r\n        set: function (value) {\r\n            if (this.isHeaderVisible != value) {\r\n                this.isHeaderVisible = value;\r\n                this.updateLayout();\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUITreeGrid.prototype, \"showFooter\", {\r\n        get: function () {\r\n            return this.isFooterVisible;\r\n        },\r\n        set: function (value) {\r\n            if (this.isFooterVisible != value) {\r\n                this.isFooterVisible = value;\r\n                this.updateLayout();\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    IntegralUITreeGrid.prototype.ngOnInit = function () {\r\n        this.baseService.setComponent(this);\r\n        this.updateData();\r\n        this.generalClassName = \"iui-treegrid\";\r\n        this.columnClassName = this.generalClassName + '-column';\r\n        this.columnHeaderClassName = this.columnClassName + '-header';\r\n        this.columnBodyClassName = this.columnClassName + '-body';\r\n        this.columnFooterClassName = this.columnClassName + '-footer';\r\n        this.rowClassName = this.generalClassName + '-row';\r\n        this.cellBorderClassName = 'iui-treegrid-lines-both';\r\n        this.cellClassName = this.rowClassName + '-cell';\r\n        this.expandBoxClassName = this.generalClassName + '-expand-box';\r\n        this.gridLinesClassName = this.generalClassName + '-lines';\r\n        this.sortingClassName = 'iui-sort';\r\n        this.initStyle();\r\n    };\r\n    IntegralUITreeGrid.prototype.updateData = function () {\r\n        this.dataService.init([\r\n            { data: this.columns, fields: this.options.columnFields, key: this.columnDataKey },\r\n            { data: this.rows, fields: this.options.rowFields, key: this.rowDataKey }\r\n        ]);\r\n    };\r\n    IntegralUITreeGrid.prototype.initStyle = function () {\r\n        this.defaultStyle = {\r\n            general: {\r\n                disabled: this.generalClassName + '-disabled',\r\n                focused: this.generalClassName + '-focused',\r\n                normal: this.generalClassName,\r\n                hovered: this.generalClassName + '-hovered',\r\n                selected: this.generalClassName + '-selected'\r\n            },\r\n            column: {\r\n                header: {\r\n                    cell: this.columnHeaderClassName + '-cell',\r\n                    disabled: this.columnHeaderClassName + '-disabled',\r\n                    normal: this.columnHeaderClassName,\r\n                    hovered: this.columnHeaderClassName + '-hovered',\r\n                    selected: this.columnHeaderClassName + '-selected'\r\n                },\r\n                body: {\r\n                    cell: this.columnBodyClassName + '-cell',\r\n                    disabled: this.columnBodyClassName + '-disabled',\r\n                    normal: this.columnBodyClassName,\r\n                    hovered: this.columnBodyClassName + '-hovered',\r\n                    selected: this.columnBodyClassName + '-selected'\r\n                },\r\n                footer: {\r\n                    cell: this.columnFooterClassName + '-cell',\r\n                    disabled: this.columnFooterClassName + '-disabled',\r\n                    normal: this.columnFooterClassName,\r\n                    hovered: this.columnFooterClassName + '-hovered',\r\n                    selected: this.columnFooterClassName + '-selected'\r\n                },\r\n                sorting: {\r\n                    normal: {\r\n                        ascending: this.sortingClassName + '-ascending',\r\n                        descending: this.sortingClassName + '-descending'\r\n                    },\r\n                    selected: {\r\n                        ascending: this.sortingClassName + '-ascending-selected',\r\n                        descending: this.sortingClassName + '-descending-selected'\r\n                    }\r\n                }\r\n            },\r\n            row: {\r\n                general: {\r\n                    disabled: this.rowClassName + '-disabled',\r\n                    focused: this.rowClassName + '-focused',\r\n                    normal: this.rowClassName,\r\n                    hovered: this.rowClassName + '-hovered',\r\n                    selected: this.rowClassName + '-selected'\r\n                },\r\n                expandBox: {\r\n                    general: this.expandBoxClassName,\r\n                    load: this.expandBoxClassName + '-load',\r\n                    expanded: this.expandBoxClassName + '-open',\r\n                    collapsed: this.expandBoxClassName + '-close'\r\n                },\r\n                cell: {\r\n                    disabled: this.cellClassName + '-disabled',\r\n                    focused: this.cellClassName + '-focused',\r\n                    normal: this.cellClassName,\r\n                    hovered: this.cellClassName + '-hovered',\r\n                    selected: this.cellClassName + '-selected'\r\n                }\r\n            },\r\n            gridLines: {\r\n                none: this.gridLinesClassName + '-none',\r\n                horizontal: this.gridLinesClassName + '-horizontal',\r\n                vertical: this.gridLinesClassName + '-vertical',\r\n                both: this.gridLinesClassName + '-both'\r\n            }\r\n        };\r\n        this.updateStyle(this.controlStyle);\r\n        this.refresh();\r\n    };\r\n    IntegralUITreeGrid.prototype.ngAfterViewInit = function () {\r\n        var self = this;\r\n        var trialTimer = setTimeout(function () {\r\n            var factory = self.cmpResolver.resolveComponentFactory(integralui_core_1.IntegralUITComponent);\r\n            if (factory && self.contentRef)\r\n                self.trialRef = self.contentRef.createComponent(factory);\r\n            clearTimeout(trialTimer);\r\n        }, 100);\r\n        self.updateLayout();\r\n    };\r\n    IntegralUITreeGrid.prototype.ngAfterContentInit = function () {\r\n        var self = this;\r\n        self.templateList = self.templates.toArray();\r\n        for (var i = 0; i < self.templateList.length; i++) {\r\n            if (self.templateList[i].settings)\r\n                switch (self.templateList[i].settings.type) {\r\n                    case 'header':\r\n                        self.headerData.push(self.templateList[i].getTemplate());\r\n                        break;\r\n                    case 'row':\r\n                        self.rowData.push(self.templateList[i].getTemplate());\r\n                        break;\r\n                    case 'cell':\r\n                        self.cellData.push(self.templateList[i].getTemplate());\r\n                        break;\r\n                    case 'footer':\r\n                        self.footerData.push(self.templateList[i].getTemplate());\r\n                        break;\r\n                }\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.ngOnDestroy = function () {\r\n        if (this.expandTimeout)\r\n            clearTimeout(this.expandTimeout);\r\n        this.removeDropMark();\r\n        if (this.trialRef)\r\n            this.trialRef.destroy();\r\n    };\r\n    // Change Detection ------------------------------------------------------------------\r\n    IntegralUITreeGrid.prototype.ngAfterContentChecked = function () {\r\n        var self = this;\r\n        if (self.autoUpdate == true) {\r\n            self.paginatorHeight = self.paginatorElem ? self.paginatorElem.nativeElement.offsetHeight : 0;\r\n            self.paginatorPos.top = self.elemRef.nativeElement.firstElementChild.clientHeight - self.paginatorHeight + 1;\r\n            self.horScrollElemPos.bottom = self.paginatorHeight > 0 ? self.paginatorHeight - 1 : 0;\r\n            self.cornerScrollElemPos.bottom = self.paginatorHeight > 0 ? self.paginatorHeight - 1 : 0;\r\n            self.clientRect = {\r\n                width: self.elemRef.nativeElement.firstElementChild.clientWidth,\r\n                height: self.elemRef.nativeElement.firstElementChild.clientHeight - self.paginatorHeight\r\n            };\r\n            if (self.clientRect.width != self.prevClientRect.width) {\r\n                self.updateLayout();\r\n                self.prevClientRect.width = self.clientRect.width;\r\n            }\r\n            else if (self.clientRect.height != self.prevClientRect.height) {\r\n                self.updateLayout();\r\n                self.prevClientRect.height = self.clientRect.height;\r\n            }\r\n        }\r\n    };\r\n    // Data ------------------------------------------------------------------------------\r\n    IntegralUITreeGrid.prototype.updateScrollColumnList = function () {\r\n        this.scrollColumnList.length = 0;\r\n        for (var j = this.viewIndexRange.left; j < this.currentColumnList.length && j <= this.viewIndexRange.right; j++) {\r\n            var obj = this.currentColumnList[j];\r\n            var scrollObj = {\r\n                data: obj.data,\r\n                inlineStyle: this.getColumnInlineStyle(obj.data[this.options.columnFields.style]),\r\n                style: {}\r\n            };\r\n            this.updateColumnStyle(scrollObj);\r\n            this.scrollColumnList.push(scrollObj);\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.updateScrollRowList = function () {\r\n        this.scrollRowList.length = 0;\r\n        var tabIndexCount = 0;\r\n        // Update rows that are present in current view\r\n        for (var i = this.currentIndex; i < this.currentRowList.length && i < this.currentIndex + this.visibleRange; i++) {\r\n            var obj = this.currentRowList[i];\r\n            var scrollObj = {\r\n                cells: [],\r\n                data: obj.data,\r\n                draggable: this.isEnabled ? true : false,\r\n                indent: obj.indent,\r\n                inlineStyle: obj.data[this.options.rowFields.style],\r\n                style: {}\r\n            };\r\n            this.updateRowStyle(scrollObj);\r\n            // Update row cells, their style and width\r\n            var cellList = scrollObj.data[this.options.rowFields.cells];\r\n            for (var j = this.viewIndexRange.left; j < this.currentColumnList.length && j <= this.viewIndexRange.right; j++) {\r\n                var column = this.currentColumnList[j].data;\r\n                var cellIndex = j;\r\n                var colID = column[this.options.columnFields.id];\r\n                if (colID)\r\n                    cellIndex = this.getCellIndexById(cellList, j, colID);\r\n                tabIndexCount++;\r\n                var currentCell = cellIndex >= 0 && cellIndex < cellList.length ? cellList[cellIndex] : {};\r\n                var cellObj = {\r\n                    align: this.getCellAlignment(column),\r\n                    colIndex: j - this.viewIndexRange.left,\r\n                    data: currentCell,\r\n                    expandBoxAllowed: this.isExpandBoxAllowed(column),\r\n                    indent: this.getRowIndent(scrollObj, column),\r\n                    inlineStyle: currentCell && currentCell[this.options.cellFields.style] ? currentCell[this.options.cellFields.style] : '',\r\n                    rowIndex: i - this.currentIndex,\r\n                    style: {\r\n                        content: 'iui-grid-row-cell-content'\r\n                    },\r\n                    tabIndex: tabIndexCount,\r\n                    width: this.getCellWidth(scrollObj, column),\r\n                    height: this.rowHeight > 0 ? this.rowHeight + 'px' : 'auto'\r\n                };\r\n                scrollObj.cells.push(cellObj);\r\n            }\r\n            this.scrollRowList.push(scrollObj);\r\n        }\r\n    };\r\n    // Columns\r\n    IntegralUITreeGrid.prototype.addColumnToCurrentList = function (column) {\r\n        var self = this;\r\n        if (!self.isColumnVisible(column))\r\n            return;\r\n        column.type = \"column\";\r\n        if (!column[self.options.columnFields.id])\r\n            column[self.options.columnFields.id] = self.commonService.getUniqueId();\r\n        if (column[self.options.columnFields.visible] != false) {\r\n            var params = column[self.options.columnFields.filterParams];\r\n            var filterTree = params ? self.filterService.createTree(params.conditions, params.formula) : null;\r\n            self.currentColumnList.push({ data: column, filter: filterTree });\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.updateCurrentColumnList = function () {\r\n        this.currentColumnList.length = 0;\r\n        var list = this.dataService.getList(null, this.columnDataKey);\r\n        if (list) {\r\n            for (var i = 0; i < list.length; i++)\r\n                this.addColumnToCurrentList(list[i]);\r\n        }\r\n    };\r\n    // Rows\r\n    IntegralUITreeGrid.prototype.updateCurrentRowList = function () {\r\n        var self = this;\r\n        self.currentRowList.length = 0;\r\n        if (self.options.paging.enabled) {\r\n            if (self.currentPageNumber >= 1 && self.currentPageNumber <= self.pageList.length)\r\n                for (var i = 0; i < self.pageList[self.currentPageNumber - 1].length; i++)\r\n                    self.currentRowList.push(self.pageList[self.currentPageNumber - 1][i]);\r\n        }\r\n        else {\r\n            self.isThereChildRows = false;\r\n            var list = self.dataService.getList(null, this.rowDataKey);\r\n            if (list) {\r\n                self.applySorting(list);\r\n                for (var i = 0; i < list.length; i++)\r\n                    self.addChildRows(list[i], 0, null, false);\r\n            }\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.updatePageList = function () {\r\n        this.pageNumber = 0;\r\n        this.pageList.length = 0;\r\n        this.pageRowCount = 0;\r\n        this.isThereChildRows = false;\r\n        var list = this.dataService.getList(null, this.rowDataKey);\r\n        if (list && list.length > 0) {\r\n            this.applySorting(list);\r\n            this.pageList.push([]);\r\n            for (var i = 0; i < list.length; i++)\r\n                this.addChildRows(list[i], 0, null, false);\r\n            if (this.pageList.length > 0 && this.pageList[this.pageList.length - 1].length == 0)\r\n                this.pageList.splice(this.pageList.length - 1, 1);\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.addChildRows = function (parentRow, indent, pid, flag) {\r\n        var pass = true;\r\n        if (!parentRow[this.options.rowFields.rows]) {\r\n            pass = this.addRowToCurrentList(parentRow, indent, pid, flag);\r\n            return pass;\r\n        }\r\n        pass = this.addRowToCurrentList(parentRow, indent, pid, flag);\r\n        if (pass) {\r\n            var visibleChildCount = 0;\r\n            var childPass = true;\r\n            if (flag || this.isRowExpanded(parentRow)) {\r\n                var list = parentRow[this.options.rowFields.rows];\r\n                if (list) {\r\n                    this.applySorting(list);\r\n                    for (var i = 0; i < list.length; i++) {\r\n                        childPass = this.addChildRows(list[i], indent + this.options.indent, parentRow[this.options.rowFields.id], flag);\r\n                        if (childPass)\r\n                            visibleChildCount++;\r\n                    }\r\n                }\r\n            }\r\n            if (!flag && !this.isThereChildRows && (visibleChildCount > 0 || (!this.isRowExpanded(parentRow) && parentRow[this.options.rowFields.rows] && parentRow[this.options.rowFields.rows].length > 0 && this.isThereVisibleChildren(parentRow))))\r\n                this.isThereChildRows = true;\r\n        }\r\n        return pass;\r\n    };\r\n    IntegralUITreeGrid.prototype.addRowToCurrentList = function (row, indent, pid, flag) {\r\n        var self = this;\r\n        if (!row.type)\r\n            row.type = \"row\";\r\n        if (!row[self.options.rowFields.id])\r\n            row[self.options.rowFields.id] = self.commonService.getUniqueId();\r\n        if (pid)\r\n            row[self.options.rowFields.pid] = pid;\r\n        var pass = true;\r\n        var cellList = row[self.options.rowFields.cells];\r\n        if (cellList && cellList.length > 0) {\r\n            pass = self.isRowAllowed(row, flag);\r\n            var colID = -1;\r\n            var currentColumn = null;\r\n            for (var j = 0; j < self.currentColumnList.length; j++) {\r\n                currentColumn = self.currentColumnList[j].data;\r\n                colID = currentColumn[self.options.columnFields.id];\r\n                var cellIndex = j;\r\n                if (colID)\r\n                    cellIndex = self.getCellIndexById(cellList, j, colID);\r\n                if (cellIndex >= 0 && cellIndex < cellList.length) {\r\n                    cellList[cellIndex].type = 'cell';\r\n                    cellList[cellIndex][self.options.cellFields.rid] = row[self.options.rowFields.id];\r\n                }\r\n            }\r\n        }\r\n        if (pass) {\r\n            if (flag)\r\n                self.fullList.push(row);\r\n            else {\r\n                if (self.options.paging.enabled) {\r\n                    if (self.onlyCurrentPage)\r\n                        self.currentPageList.push({ data: row, indent: indent });\r\n                    else {\r\n                        if (!row[self.options.rowFields.pid])\r\n                            self.pageRowCount++;\r\n                        if (self.pageRowCount > self.options.paging.pageSize) {\r\n                            self.pageRowCount = 1;\r\n                            self.pageNumber++;\r\n                            self.pageList.push([]);\r\n                        }\r\n                        self.pageList[self.pageNumber].push({ data: row, indent: indent });\r\n                    }\r\n                }\r\n                else\r\n                    self.currentRowList.push({ data: row, indent: indent });\r\n            }\r\n        }\r\n        return pass;\r\n    };\r\n    IntegralUITreeGrid.prototype.getFullList = function () {\r\n        this.fullList.length = 0;\r\n        var list = this.dataService.getList(null, this.rowDataKey);\r\n        if (list) {\r\n            for (var i = 0; i < list.length; i++)\r\n                this.addChildRows(list[i], 0, null, true);\r\n        }\r\n        return this.fullList;\r\n    };\r\n    IntegralUITreeGrid.prototype.loadData = function (data, parent, fields, flat) {\r\n        this.processLoadData(data, parent, fields, flat);\r\n    };\r\n    // Drag Drop -------------------------------------------------------------------------\r\n    IntegralUITreeGrid.prototype.expandOnDelay = function (row) {\r\n        var self = this;\r\n        if (self.autoExpand != false) {\r\n            if (self.expandRow != row) {\r\n                if (self.expandTimeout)\r\n                    clearTimeout(self.expandTimeout);\r\n                self.expandTimeout = setTimeout(function () {\r\n                    if (self.expandTimeout)\r\n                        self.expand(row);\r\n                    clearTimeout(self.expandTimeout);\r\n                }, 500);\r\n            }\r\n            self.expandRow = row;\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.rowDragStart = function (e, obj) {\r\n        if (this.isEnabled)\r\n            this.processDragStart(e, obj.data);\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUITreeGrid.prototype.rowDragOver = function (e, obj, index) {\r\n        if (this.isEnabled && this.rowElems) {\r\n            var elemList = this.rowElems.toArray();\r\n            if (elemList && index >= 0 && index < elemList.length) {\r\n                var rowRect = this.commonService.getPageRect(elemList[index].nativeElement);\r\n                var rowBounds = {\r\n                    x: rowRect.left,\r\n                    y: rowRect.top,\r\n                    width: rowRect.right - rowRect.left,\r\n                    height: rowRect.bottom - rowRect.top\r\n                };\r\n                this.expandOnDelay(obj.data);\r\n                this.processScroll(e);\r\n                this.processDragOver(e, obj.data, rowBounds);\r\n            }\r\n        }\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUITreeGrid.prototype.rowDragDrop = function (e, obj) {\r\n        if (this.isEnabled) {\r\n            this.expandRow = null;\r\n            if (this.expandTimeout)\r\n                clearTimeout(this.expandTimeout);\r\n            this.processDragDrop(e, obj.data);\r\n        }\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUITreeGrid.prototype.isParentOf = function (targetRow, row) {\r\n        var parent = this.dataService.getParent(row);\r\n        if (targetRow && row && parent && this.commonService.isEqual(targetRow[this.options.rowFields.id], parent[this.options.rowFields.id]))\r\n            return true;\r\n        return false;\r\n    };\r\n    IntegralUITreeGrid.prototype.isChildOf = function (targetRow, row) {\r\n        var found = false;\r\n        if (targetRow && row) {\r\n            var list = row[this.options.rowFields.rows];\r\n            if (list && list.length > 0) {\r\n                for (var i = 0; i < list.length; i++) {\r\n                    if (this.commonService.isEqual(targetRow[this.options.rowFields.id], list[i][this.options.rowFields.id])) {\r\n                        found = true;\r\n                        break;\r\n                    }\r\n                    else\r\n                        found = this.isChildOf(targetRow, list[i]);\r\n                    if (found)\r\n                        break;\r\n                }\r\n            }\r\n        }\r\n        return found;\r\n    };\r\n    // Expand / Collapse -----------------------------------------------------------------\r\n    IntegralUITreeGrid.prototype.collapse = function (row) {\r\n        this.toggle(row, false);\r\n    };\r\n    IntegralUITreeGrid.prototype.expand = function (row) {\r\n        this.toggle(row, true);\r\n    };\r\n    IntegralUITreeGrid.prototype.toggle = function (row, value) {\r\n        if (this.isEnabled) {\r\n            if (row) {\r\n                if ((!row[this.options.rowFields.hasChildren] && (!row[this.options.rowFields.rows] || row[this.options.rowFields.rows].length == 0)))\r\n                    return;\r\n                else if (value && row[this.options.rowFields.expanded] != false)\r\n                    return;\r\n                else if (value === false && row[this.options.rowFields.expanded] == false)\r\n                    return;\r\n                var expandedValue = value !== undefined ? value : row[this.options.rowFields.expanded] !== false ? true : false;\r\n                var allowToggle = true;\r\n                var eventObj = { cancel: false, row: row };\r\n                if (value !== undefined) {\r\n                    if (value)\r\n                        this.beforeExpand.emit(eventObj);\r\n                    else\r\n                        this.beforeCollapse.emit(eventObj);\r\n                }\r\n                else {\r\n                    if (expandedValue)\r\n                        this.beforeCollapse.emit(eventObj);\r\n                    else\r\n                        this.beforeExpand.emit(eventObj);\r\n                }\r\n                if (eventObj.cancel != true) {\r\n                    var prevValue = row[this.options.rowFields.expanded];\r\n                    var newValue = value != undefined ? value : !expandedValue;\r\n                    if (newValue != prevValue) {\r\n                        row[this.options.rowFields.expanded] = newValue;\r\n                        this.updateCurrentLayout();\r\n                    }\r\n                    if (this.isRowExpanded(row))\r\n                        this.afterExpand.emit({ row: row });\r\n                    else\r\n                        this.afterCollapse.emit({ row: row });\r\n                }\r\n            }\r\n            else {\r\n                var list = this.getFullList();\r\n                for (var i = 0; i < list.length; i++) {\r\n                    list[i][this.options.rowFields.expanded] = value;\r\n                }\r\n                this.updateCurrentLayout();\r\n            }\r\n        }\r\n    };\r\n    // General ---------------------------------------------------------------------------\r\n    IntegralUITreeGrid.prototype.findColumnById = function (id) {\r\n        return this.dataService.findObjectById(id, this.columnDataKey);\r\n    };\r\n    IntegralUITreeGrid.prototype.getColumnRealIndex = function (j) {\r\n        var list = this.dataService.getList(null, this.columnDataKey);\r\n        return j >= 0 && j < list.length && j < this.currentColumnList.length ? list.indexOf(this.currentColumnList[j].data) : -1;\r\n    };\r\n    IntegralUITreeGrid.prototype.getCellIndexById = function (list, colIndex, id) {\r\n        var cellIndex = -1;\r\n        if (list) {\r\n            var realColIndex = this.getColumnRealIndex(colIndex);\r\n            for (var j = 0; j < list.length; j++) {\r\n                if (list[j][this.options.cellFields.cid] == undefined) {\r\n                    cellIndex = realColIndex;\r\n                    break;\r\n                }\r\n                else if (list[j][this.options.cellFields.cid] == id) {\r\n                    cellIndex = j;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        return cellIndex;\r\n    };\r\n    IntegralUITreeGrid.prototype.getColumnFromCell = function (cell, index) {\r\n        var column = null;\r\n        if (cell[this.options.cellFields.cid]) {\r\n            for (var j = 0; j < this.currentColumnList.length; j++) {\r\n                if (this.currentColumnList[j].data[this.options.columnFields.id] == cell[this.options.cellFields.cid]) {\r\n                    column = this.currentColumnList[j].data;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        else if (index >= 0 && index < this.currentColumnList.length)\r\n            column = this.currentColumnList[index].data;\r\n        return column;\r\n    };\r\n    IntegralUITreeGrid.prototype.getCellAlignment = function (column) {\r\n        return column ? column[this.options.columnFields.contentAlignment] : '';\r\n    };\r\n    IntegralUITreeGrid.prototype.getColumnAlignment = function (column, flag) {\r\n        if (column)\r\n            return flag ? column[this.options.columnFields.footerAlignment] : column[this.options.columnFields.headerAlignment];\r\n        return '';\r\n    };\r\n    IntegralUITreeGrid.prototype.isRowExpanded = function (row) {\r\n        return row ? (row[this.options.rowFields.expanded] || row[this.options.rowFields.expanded] === undefined ? true : false) : true;\r\n    };\r\n    IntegralUITreeGrid.prototype.isThereVisibleChildren = function (row) {\r\n        var found = false;\r\n        if (row) {\r\n            var list = row[this.options.rowFields.rows];\r\n            if (list && list.length > 0) {\r\n                for (var i = 0; i < list.length; i++) {\r\n                    if (this.isRowAllowed(list[i]) && !this.isRowFixed(list[i])) {\r\n                        found = true;\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return found;\r\n    };\r\n    // Hovering ----------------------------------------------------------------------------\r\n    IntegralUITreeGrid.prototype.columnMouseDown = function (e, obj) {\r\n        if (this.isEnabled) {\r\n            switch (e.which) {\r\n                case 1:\r\n                    if (this.resizeColumnIndex >= 0 && this.resizeColumnIndex < this.currentColumnList.length) {\r\n                        var shiftPos = this.commonService.getShiftPos();\r\n                        var pos = {\r\n                            x: e.pageX - shiftPos.x,\r\n                            y: e.pageY - shiftPos.y\r\n                        };\r\n                        this.columnStartPos = pos;\r\n                        this.isColumnResizing = true;\r\n                        this.resizeColumn = this.currentColumnList[this.resizeColumnIndex].data;\r\n                    }\r\n                    else {\r\n                        this.processColumnSelection(e, obj.data);\r\n                        if (this.options.allowColumnReorder == true && obj.data[this.options.columnFields.allowDrag] != false)\r\n                            this.startColumnReorder = true;\r\n                    }\r\n                    break;\r\n                case 2:\r\n                    this.processColumnSelection(e, obj.data);\r\n                    break;\r\n            }\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.columnMouseUp = function (e, obj) {\r\n        if (this.isEnabled && e.which == 1)\r\n            this.columnClick.emit({ event: e, column: obj.data });\r\n    };\r\n    IntegralUITreeGrid.prototype.columnMouseMove = function (e, obj) {\r\n        if (this.isEnabled && !this.isScrollActive) {\r\n            this.resizeColumnIndex = -1;\r\n            if (this.startColumnReorder && !this.columnReorderActive) {\r\n                this.columnReorderActive = true;\r\n                this.reorderColumn = obj.data;\r\n                this.reorderColumnObj = obj;\r\n                this.reorderColumnStartPos.left = e.pageX;\r\n                this.reorderColumnCurrentPos.left = e.pageX;\r\n                this.updateOrignalScrollColumnList();\r\n                this.updateReorderColumnPos();\r\n            }\r\n            else if (!this.columnReorderActive && this.columnElems) {\r\n                var elemList = this.columnElems.toArray();\r\n                var colIndex = this.getColumnCurrentIndex(obj.data);\r\n                var elemIndex = colIndex - this.viewIndexRange.left;\r\n                if (elemIndex >= 0 && elemIndex < elemList.length) {\r\n                    var elem = elemList[elemIndex].nativeElement;\r\n                    var shiftPos = this.commonService.getShiftPos();\r\n                    var columnRect = this.commonService.getPageRect(elem);\r\n                    var mousePos = {\r\n                        x: e.pageX - shiftPos.x,\r\n                        y: e.pageY - shiftPos.y\r\n                    };\r\n                    var rightMargin = {\r\n                        top: columnRect.top,\r\n                        right: columnRect.right,\r\n                        bottom: columnRect.bottom,\r\n                        left: columnRect.right - 10\r\n                    };\r\n                    var leftMargin = {\r\n                        top: columnRect.top,\r\n                        right: columnRect.left + 10,\r\n                        bottom: columnRect.bottom,\r\n                        left: columnRect.left\r\n                    };\r\n                    var allowResize = this.getColumnAllowResize(obj.data);\r\n                    if (allowResize.right && this.commonService.checkHit(mousePos.x, mousePos.y, rightMargin)) {\r\n                        if (this.isAutoSizeColumnsActive)\r\n                            this.resizeColumnIndex = colIndex + 1;\r\n                        else\r\n                            this.resizeColumnIndex = colIndex;\r\n                    }\r\n                    else if (allowResize.left && this.commonService.checkHit(mousePos.x, mousePos.y, leftMargin)) {\r\n                        if (this.isAutoSizeColumnsActive)\r\n                            this.resizeColumnIndex = colIndex;\r\n                        else\r\n                            this.resizeColumnIndex = colIndex - 1;\r\n                    }\r\n                    if (this.isColumnWidthFixed(this.resizeColumnIndex))\r\n                        this.resizeColumnIndex = -1;\r\n                    if (this.resizeColumnIndex >= 0 || this.isColumnResizing)\r\n                        this.gridCursor = 'ew-resize';\r\n                    else\r\n                        this.gridCursor = 'default';\r\n                }\r\n            }\r\n            else\r\n                this.gridCursor = 'default';\r\n        }\r\n        else\r\n            this.gridCursor = 'default';\r\n    };\r\n    IntegralUITreeGrid.prototype.columnMouseEnter = function (e, obj) {\r\n        if (this.isEnabled && !this.isScrollActive && !this.isColumnResizing) {\r\n            this.hoverColumn = obj.data;\r\n            this.updateColumnStyle(obj);\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.columnMouseLeave = function (e, obj) {\r\n        if (this.isEnabled && !this.isScrollActive && !this.isColumnResizing) {\r\n            this.hoverColumn = null;\r\n            this.gridCursor = this.isColumnResizing ? 'ew-resize' : 'default';\r\n            this.updateColumnStyle(obj);\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.gridMouseMove = function (e) {\r\n        this.isGridHovered = false;\r\n        if (this.isEnabled) {\r\n            if (e.which == 1 && this.columnReorderActive && this.reorderColumn) {\r\n                this.isGridHovered = true;\r\n                //this.gridCursor =  'no-drop';\r\n                this.reorderColumnCurrentPos.left = e.pageX;\r\n                this.updateReorderColumnPos();\r\n                e.stopPropagation();\r\n            }\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.gridMouseUp = function (e) {\r\n        if (e.which == 1 && this.reorderColumn && this.reorderNewColIndex >= 0 && this.reorderNewColIndex < this.originalScrollColumnList.length) {\r\n            var index = this.columns.indexOf(this.reorderColumn);\r\n            var newIndex = this.columns.indexOf(this.originalScrollColumnList[this.reorderNewColIndex].data);\r\n            if (newIndex != index) {\r\n                this.moveObject(index, newIndex, this.columns);\r\n                this.columnOrderChanged.emit({ column: this.reorderColumn });\r\n                this.updateLayout();\r\n            }\r\n        }\r\n        this.resetReorderColumnSettings();\r\n    };\r\n    IntegralUITreeGrid.prototype.gridMouseLeave = function (e) {\r\n        this.hoverRow = null;\r\n        this.hoverColumn = null;\r\n        this.isGridHovered = false;\r\n        if (this.isEnabled) {\r\n            if (e.which == 1 && this.columnReorderActive) {\r\n                this.restoreColumnOrder();\r\n            }\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.rowMouseEnter = function (e, obj) {\r\n        if (this.isEnabled && !this.isScrollActive && !this.isColumnResizing) {\r\n            this.hoverRow = obj.data;\r\n            this.updateRowStyle(obj);\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.rowMouseLeave = function (e, obj) {\r\n        if (this.isEnabled && !this.isScrollActive && !this.isColumnResizing) {\r\n            this.hoverRow = null;\r\n            this.updateRowStyle(obj);\r\n        }\r\n    };\r\n    // Keyboard Navigation ---------------------------------------------------------------\r\n    IntegralUITreeGrid.prototype.processLeftArrowKey = function (cell) {\r\n        var column = this.getColumnFromCell(cell.data, cell.colIndex);\r\n        if (column && this.getColumnIndexFromList(column) == this.expandColIndex && cell.rowIndex >= 0 && cell.rowIndex < this.scrollRowList.length) {\r\n            var row = this.scrollRowList[cell.rowIndex].data;\r\n            if (this.isRowExpanded(row) && this.isThereVisibleChildren(row)) {\r\n                this.collapse(row);\r\n                return cell;\r\n            }\r\n        }\r\n        var prevCell = this.getPrevCell(cell);\r\n        if (prevCell) {\r\n            this.currentFocusCell = prevCell.data;\r\n            if (this.isFirstCell(prevCell)) {\r\n                this.scrollPos({\r\n                    x: this.currentScrollPos.x - prevCell.width * 2,\r\n                    y: this.currentScrollPos.y\r\n                });\r\n            }\r\n            var self_1 = this;\r\n            setTimeout(function () {\r\n                self_1.refresh();\r\n            }, 1);\r\n        }\r\n        return prevCell;\r\n    };\r\n    IntegralUITreeGrid.prototype.processRightArrowKey = function (cell) {\r\n        var column = this.getColumnFromCell(cell.data, cell.colIndex);\r\n        if (column && this.getColumnIndexFromList(column) == this.expandColIndex && cell.rowIndex >= 0 && cell.rowIndex < this.scrollRowList.length) {\r\n            var row = this.scrollRowList[cell.rowIndex].data;\r\n            if (!this.isRowExpanded(row) && this.isThereVisibleChildren(row)) {\r\n                this.expand(row);\r\n                return cell;\r\n            }\r\n        }\r\n        var nextCell = this.getNextCell(cell);\r\n        if (nextCell) {\r\n            this.currentFocusCell = nextCell.data;\r\n            if (this.isLastCell(nextCell))\r\n                this.scrollPos({\r\n                    x: this.currentScrollPos.x + nextCell.width * 2,\r\n                    y: this.currentScrollPos.y\r\n                });\r\n            else {\r\n                if (nextCell.colIndex >= this.currentColumnList.length - 2)\r\n                    this.scrollPos({\r\n                        x: this.maxScrollPos.x,\r\n                        y: this.currentScrollPos.y\r\n                    });\r\n            }\r\n            var self_2 = this;\r\n            setTimeout(function () {\r\n                self_2.refresh();\r\n            }, 1);\r\n        }\r\n        return nextCell;\r\n    };\r\n    // Layout ----------------------------------------------------------------------------\r\n    IntegralUITreeGrid.prototype.updateRange = function () {\r\n        this.viewIndexRange = {\r\n            left: 0,\r\n            middle: 999,\r\n            right: 999\r\n        };\r\n        var isLeftLimitFound = false;\r\n        var isMiddleLimitFound = false;\r\n        var isRightLimitFound = false;\r\n        var viewScrollLimit = this.currentScrollPos.x + this.clientRect.width;\r\n        var rightScrollLimit = viewScrollLimit * 2;\r\n        var sumWidth = 0;\r\n        for (var j = 0; j < this.currentColumnList.length; j++) {\r\n            sumWidth += this.getColumnWidth(this.currentColumnList[j].data) + this.columnPadding.left + this.columnPadding.right + 6;\r\n            if (!isLeftLimitFound && sumWidth >= this.currentScrollPos.x) {\r\n                this.viewIndexRange.left = j;\r\n                isLeftLimitFound = true;\r\n            }\r\n            if (!isMiddleLimitFound && sumWidth >= viewScrollLimit) {\r\n                this.viewIndexRange.middle = j;\r\n                isMiddleLimitFound = true;\r\n            }\r\n            if (!isRightLimitFound && sumWidth >= rightScrollLimit) {\r\n                this.viewIndexRange.right = j;\r\n                isRightLimitFound = true;\r\n            }\r\n            if (isLeftLimitFound && isRightLimitFound)\r\n                break;\r\n        }\r\n        sumWidth = 0;\r\n        for (var j = 0; j < this.currentColumnList.length && j < this.viewIndexRange.left; j++)\r\n            sumWidth += this.getColumnWidth(this.currentColumnList[j].data) + this.columnPadding.left + this.columnPadding.right + 6;\r\n        this.contentLeftPos = this.currentScrollPos.x - sumWidth;\r\n        this.updateScrollColumnList();\r\n        this.updateScrollRowList();\r\n    };\r\n    IntegralUITreeGrid.prototype.updateCurrentLayout = function () {\r\n        var self = this;\r\n        self.resetLayout();\r\n        if (self.options.paging.enabled) {\r\n            self.updatePageList();\r\n            self.updatePageNumber();\r\n        }\r\n        self.updateCurrentRowList();\r\n        self.updateRange();\r\n        self.updateScrollSize();\r\n        self.updateTimer = setTimeout(function () {\r\n            self.updateBlockSize();\r\n            clearTimeout(self.updateTimer);\r\n        }, 1);\r\n    };\r\n    IntegralUITreeGrid.prototype.updateBlockSize = function () {\r\n        this.blockSize = {\r\n            width: this.bodyElem.nativeElement.offsetWidth,\r\n            height: this.bodyElem.nativeElement.offsetHeight\r\n        };\r\n    };\r\n    IntegralUITreeGrid.prototype.resetLayout = function () {\r\n        if (this.updateTimer)\r\n            clearTimeout(this.updateTimer);\r\n        this.updateTimer = null;\r\n    };\r\n    IntegralUITreeGrid.prototype.updateExpandingColumn = function () {\r\n        if (this.currentExpandColumnID != undefined) {\r\n            var column = this.findColumnById(this.currentExpandColumnID);\r\n            var index = this.getColumnCurrentIndex(column);\r\n            this.expandColIndex = index >= 0 ? index : 0;\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.updateLayout = function () {\r\n        var self = this;\r\n        if (self.allowUpdate) {\r\n            self.beforeUpdate.emit(null);\r\n            self.resetLayout();\r\n            self.updateTimer = setTimeout(function () {\r\n                self.updateCurrentColumnList();\r\n                self.updateExpandingColumn();\r\n                if (self.options.paging.enabled)\r\n                    self.updatePageList();\r\n                self.updateCurrentRowList();\r\n                self.paginatorHeight = self.paginatorElem ? self.paginatorElem.nativeElement.offsetHeight : 0;\r\n                self.paginatorPos.top = self.elemRef.nativeElement.firstElementChild.clientHeight - self.paginatorHeight + 1;\r\n                self.horScrollElemPos.bottom = self.paginatorHeight > 0 ? self.paginatorHeight - 1 : 0;\r\n                self.cornerScrollElemPos.bottom = self.paginatorHeight > 0 ? self.paginatorHeight - 1 : 0;\r\n                self.clientRect = {\r\n                    width: self.elemRef.nativeElement.firstElementChild.clientWidth,\r\n                    height: self.elemRef.nativeElement.firstElementChild.clientHeight - self.paginatorHeight\r\n                };\r\n                self.updateRange();\r\n                var columnLayoutTimer = setTimeout(function () {\r\n                    self.columnPadding = { top: 0, right: 0, bottom: 0, left: 0 };\r\n                    var elemList = [];\r\n                    if (self.columnElems && self.showHeader)\r\n                        elemList = self.columnElems.toArray();\r\n                    else if (self.footerElems && self.showFooter)\r\n                        elemList = self.footerElems.toArray();\r\n                    else if (self.cellElems)\r\n                        elemList = self.cellElems.toArray();\r\n                    if (elemList && elemList.length > 0)\r\n                        self.columnPadding = self.commonService.getPadding(elemList[0].nativeElement.firstElementChild);\r\n                    self.headerHeight = self.headerElem ? self.headerElem.nativeElement.offsetHeight : 0;\r\n                    self.footerHeight = self.footerElem ? self.footerElem.nativeElement.offsetHeight : 0;\r\n                    self.updateVisibleRange();\r\n                    self.updateRange();\r\n                    var rowLayoutTimer = setTimeout(function () {\r\n                        self.blockMarginTop = self.headerHeight;\r\n                        self.updateBlockSize();\r\n                        if (self.rowElems) {\r\n                            var elemList_1 = self.rowElems.toArray();\r\n                            self.avgRowHeight = 0;\r\n                            if (elemList_1 && elemList_1.length > 0) {\r\n                                var sumHeight = 0;\r\n                                for (var i = 0; i < elemList_1.length; i++) {\r\n                                    sumHeight += elemList_1[i].nativeElement.offsetHeight;\r\n                                }\r\n                                self.avgRowHeight = Math.floor(sumHeight / elemList_1.length);\r\n                            }\r\n                        }\r\n                        self.updateScrollSize();\r\n                        self.updateColumnWidth();\r\n                        self.updateScrollSize();\r\n                        self.updateComplete.emit(null);\r\n                        clearTimeout(rowLayoutTimer);\r\n                    }, 1);\r\n                    clearTimeout(columnLayoutTimer);\r\n                }, 1);\r\n                clearTimeout(self.updateTimer);\r\n            }, 100);\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.updateVisibleRange = function () {\r\n        this.visibleRange = 1;\r\n        var elemList = this.rowElems.toArray();\r\n        if (elemList && elemList.length > 0) {\r\n            var sumHeight = 0;\r\n            for (var i = 0; i < elemList.length; i++) {\r\n                sumHeight += elemList[i].nativeElement.offsetHeight;\r\n            }\r\n            var rowHeight = Math.floor(sumHeight / elemList.length);\r\n            if (rowHeight > 0)\r\n                this.visibleRange = Math.floor((this.clientRect.height - (this.headerHeight + this.footerHeight)) / rowHeight) + 1;\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.updateScrollSize = function () {\r\n        var self = this;\r\n        self.allColWidth = 0;\r\n        for (var j = 0; j < self.currentColumnList.length; j++)\r\n            self.allColWidth += self.getColumnWidth(self.currentColumnList[j].data) + self.columnPadding.left + self.columnPadding.right + 6;\r\n        self.scrollSize = {\r\n            width: self.allColWidth - self.clientRect.width,\r\n            height: (self.avgRowHeight * self.currentRowList.length) - self.clientRect.height + self.headerHeight + self.footerHeight + self.avgRowHeight\r\n        };\r\n        if (self.isVerScrollVisible())\r\n            self.scrollSize.width += 16;\r\n        if (self.isHorScrollVisible())\r\n            self.scrollSize.height += 16;\r\n        self.scrollSize.width = self.scrollSize.width > 0 ? self.scrollSize.width : 0;\r\n        self.scrollSize.height = self.scrollSize.height > 0 ? self.scrollSize.height : 0;\r\n        self.maxScrollPos = {\r\n            x: self.scrollSize.width,\r\n            y: self.scrollSize.height\r\n        };\r\n        if (self.currentScrollPos.x > self.maxScrollPos.x)\r\n            self.changeHorizontalScrollPos(self.maxScrollPos.x);\r\n        if (self.currentScrollPos.y > self.maxScrollPos.y)\r\n            self.changeVerticalScrollPos(self.maxScrollPos.y);\r\n        self.scrollBarSize = {\r\n            width: self.isVerScrollVisible() ? self.clientRect.width - 20 : self.clientRect.width - 4,\r\n            height: self.isHorScrollVisible() ? self.clientRect.height - 20 : self.clientRect.height - 4\r\n        };\r\n        self.scrollLargeChange = {\r\n            x: self.scrollBarSize.width,\r\n            y: self.scrollBarSize.height - self.headerHeight - self.footerHeight\r\n        };\r\n    };\r\n    IntegralUITreeGrid.prototype.getRowScrollIndex = function (row) {\r\n        var index = -1;\r\n        for (var i = 0; i < this.scrollRowList.length; i++) {\r\n            if (this.scrollRowList[i].data == row) {\r\n                index = i;\r\n                break;\r\n            }\r\n        }\r\n        return index;\r\n    };\r\n    // Mouse Events ----------------------------------------------------------------------\r\n    IntegralUITreeGrid.prototype.onWindowMouseMove = function (e) {\r\n        if (this.isEnabled) {\r\n            if (e.buttons != 1)\r\n                this.resetReorderColumnSettings();\r\n            if (e.buttons == 1 && this.isColumnResizing) {\r\n                var shiftPos = this.commonService.getShiftPos();\r\n                var newPos = {\r\n                    x: e.pageX - shiftPos.x,\r\n                    y: e.pageY - shiftPos.y\r\n                };\r\n                if (this.resizeColumn) {\r\n                    var newWidth = 0;\r\n                    if (this.isAutoSizeColumnsActive) {\r\n                        var widthChange = newPos.x - this.columnStartPos.x;\r\n                        if (widthChange < 0) {\r\n                            var prevColumn = this.getPrevColumn(this.resizeColumn);\r\n                            if (prevColumn) {\r\n                                var newWidthPrevColumn = this.getColumnWidth(prevColumn) + widthChange;\r\n                                var minWidthPrevColumn = this.getColumnWidth(prevColumn, 'min');\r\n                                if (newWidthPrevColumn > minWidthPrevColumn) {\r\n                                    this.setColumnWidth(prevColumn, newWidthPrevColumn);\r\n                                    this.updateCellWidth(prevColumn);\r\n                                    newWidth = this.getColumnWidth(this.resizeColumn) - widthChange;\r\n                                    this.setColumnWidth(this.resizeColumn, newWidth);\r\n                                    this.updateCellWidth(this.resizeColumn);\r\n                                }\r\n                                else {\r\n                                    this.setColumnWidth(prevColumn, minWidthPrevColumn);\r\n                                    this.updateCellWidth(prevColumn);\r\n                                }\r\n                            }\r\n                        }\r\n                        else {\r\n                            newWidth = this.getColumnWidth(this.resizeColumn) - widthChange;\r\n                            var minWidth = this.getColumnWidth(this.resizeColumn, 'min');\r\n                            newWidth = newWidth > minWidth ? newWidth : minWidth;\r\n                            if (newWidth > minWidth) {\r\n                                this.setColumnWidth(this.resizeColumn, newWidth);\r\n                                this.updateCellWidth(this.resizeColumn);\r\n                                var prevColumn = this.getPrevColumn(this.resizeColumn, true);\r\n                                if (prevColumn) {\r\n                                    var newWidthPrevColumn = this.getColumnWidth(prevColumn) + widthChange;\r\n                                    this.setColumnWidth(prevColumn, newWidthPrevColumn);\r\n                                    this.updateCellWidth(prevColumn);\r\n                                }\r\n                            }\r\n                        }\r\n                        this.checkWidthChanges();\r\n                    }\r\n                    else {\r\n                        newWidth = this.getColumnWidth(this.resizeColumn) + newPos.x - this.columnStartPos.x;\r\n                        newWidth = newWidth > 0 ? newWidth : 0;\r\n                        this.setColumnWidth(this.resizeColumn, newWidth);\r\n                        this.updateCellWidth(this.resizeColumn);\r\n                    }\r\n                    this.updateScrollSize();\r\n                }\r\n                this.columnStartPos = newPos;\r\n            }\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.onWindowMouseUp = function (e) {\r\n        if (this.isEnabled && this.isColumnResizing) {\r\n            this.isColumnResizing = false;\r\n            this.columnSizeChanged.emit({ column: this.resizeColumn });\r\n            this.updateRange();\r\n        }\r\n        this.removeDropMark();\r\n        this.gridCursor = 'default';\r\n        this.resetReorderColumnSettings();\r\n        this.hoverRow = null;\r\n        this.hoverColumn = null;\r\n        this.isCtrlDragEntered = false;\r\n        if (this.isEnabled)\r\n            this.refresh();\r\n    };\r\n    IntegralUITreeGrid.prototype.getRowLevel = function (row) {\r\n        var level = 0;\r\n        var parent = this.getRowParent(row);\r\n        while (parent) {\r\n            level++;\r\n            parent = this.getRowParent(parent);\r\n        }\r\n        return level;\r\n    };\r\n    IntegralUITreeGrid.prototype.getRowParent = function (row) {\r\n        return row ? this.dataService.findObjectById(row[this.options.rowFields.pid], this.rowDataKey) : null;\r\n    };\r\n    // Move operations -------------------------------------------------------------------\r\n    IntegralUITreeGrid.prototype.getPrevRow = function (row) {\r\n        var prevRow = null;\r\n        if (row) {\r\n            var list = this.rows;\r\n            var parent_1 = this.getRowParent(row);\r\n            if (parent_1)\r\n                list = parent_1[this.options.rowFields.rows];\r\n            var index = list.indexOf(row);\r\n            index = index > 0 ? index - 1 : -1;\r\n            if (index >= 0)\r\n                prevRow = list[index];\r\n        }\r\n        return prevRow;\r\n    };\r\n    IntegralUITreeGrid.prototype.getNextRow = function (row) {\r\n        var nextRow = null;\r\n        if (row) {\r\n            var list = this.rows;\r\n            var parent_2 = this.getRowParent(row);\r\n            if (parent_2)\r\n                list = parent_2[this.options.rowFields.rows];\r\n            var index = list.indexOf(row);\r\n            index = index < list.length - 1 ? index + 1 : -1;\r\n            if (index >= 0)\r\n                nextRow = list[index];\r\n        }\r\n        return nextRow;\r\n    };\r\n    IntegralUITreeGrid.prototype.moveRow = function (row, direction, targetRow, position) {\r\n        if (row) {\r\n            this.allowUpdate = false;\r\n            var newRowIndex = -1;\r\n            switch (direction) {\r\n                case integralui_base_grid_1.IntegralUIDirection.At:\r\n                    newRowIndex = position;\r\n                    break;\r\n                case integralui_base_grid_1.IntegralUIDirection.Down:\r\n                    targetRow = this.getNextRow(row);\r\n                    break;\r\n                case integralui_base_grid_1.IntegralUIDirection.First:\r\n                    newRowIndex = 0;\r\n                    break;\r\n                case integralui_base_grid_1.IntegralUIDirection.Left:\r\n                    targetRow = this.getRowParent(row);\r\n                    break;\r\n                case integralui_base_grid_1.IntegralUIDirection.Right:\r\n                    targetRow = this.getPrevRow(row);\r\n                    break;\r\n                case integralui_base_grid_1.IntegralUIDirection.Up:\r\n                    targetRow = this.getPrevRow(row);\r\n                    break;\r\n            }\r\n            if (Array.isArray(row)) {\r\n                var moveList = [];\r\n                // To avoid duplicate rows, only move rows which parents are not included\r\n                for (var i = 0; i < row.length; i++) {\r\n                    var found = false;\r\n                    var parentRow = this.getRowParent(row[i]);\r\n                    while (parentRow) {\r\n                        if (row.indexOf(parentRow) >= 0) {\r\n                            found = true;\r\n                            break;\r\n                        }\r\n                        parentRow = this.getRowParent(parentRow);\r\n                    }\r\n                    if (!found)\r\n                        moveList.push(row[i]);\r\n                }\r\n                if (moveList.length > 0) {\r\n                    var firstIndex = this.getRowCurrentIndex(moveList[0]);\r\n                    var lastIndex = this.getRowCurrentIndex(moveList[moveList.length - 1]);\r\n                    if (firstIndex <= lastIndex)\r\n                        for (var i = 0; i < moveList.length; i++)\r\n                            this.moveRowAt(moveList[i], targetRow, direction, newRowIndex);\r\n                    else\r\n                        for (var i = moveList.length - 1; i >= 0; i--)\r\n                            this.moveRowAt(moveList[i], targetRow, direction, newRowIndex);\r\n                }\r\n            }\r\n            else\r\n                this.moveRowAt(row, targetRow, direction, newRowIndex);\r\n            this.allowUpdate = true;\r\n            this.updateCurrentLayout();\r\n            this.change.emit({ type: 'move-row' });\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.moveRowAt = function (row, targetRow, direction, position) {\r\n        if (targetRow) {\r\n            var isRowRemoved = this.removeRow(row);\r\n            if (isRowRemoved) {\r\n                // Add row at specified position\r\n                if (direction == integralui_base_grid_1.IntegralUIDirection.First || direction == integralui_base_grid_1.IntegralUIDirection.Right || direction == integralui_base_grid_1.IntegralUIDirection.Last || direction == integralui_base_grid_1.IntegralUIDirection.At)\r\n                    this.insertRowAt(row, position, targetRow);\r\n                else if (direction == integralui_base_grid_1.IntegralUIDirection.Before || direction == integralui_base_grid_1.IntegralUIDirection.Up)\r\n                    this.insertRowBefore(row, targetRow);\r\n                else if (direction == integralui_base_grid_1.IntegralUIDirection.After || direction == integralui_base_grid_1.IntegralUIDirection.Left || direction == integralui_base_grid_1.IntegralUIDirection.Down)\r\n                    this.insertRowAfter(row, targetRow);\r\n            }\r\n        }\r\n    };\r\n    // Loading ---------------------------------------------------------------------------\r\n    IntegralUITreeGrid.prototype.beginLoad = function (row) {\r\n        if (row) {\r\n            if (this.options.loadRows.indexOf(row) < 0)\r\n                this.options.loadRows.push(row);\r\n            this.refresh();\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.endLoad = function (row) {\r\n        var rowIndex = this.options.loadRows.indexOf(row);\r\n        if (rowIndex >= 0)\r\n            this.options.loadRows.splice(rowIndex, 1);\r\n        this.updateCurrentLayout();\r\n    };\r\n    IntegralUITreeGrid.prototype.isRowLoading = function (row) {\r\n        return this.options.loadRows.indexOf(row) >= 0 ? true : false;\r\n    };\r\n    // Reorder ---------------------------------------------------------------------------\r\n    IntegralUITreeGrid.prototype.getHeaderRect = function () {\r\n        return this.headerRowElem ? this.commonService.getPageRect(this.headerRowElem.nativeElement) : { top: 0, right: 0, bottom: 0, left: 0, height: 0, width: 0, x: 0, y: 0 };\r\n    };\r\n    // Scrolling -------------------------------------------------------------------------\r\n    IntegralUITreeGrid.prototype.scrollTo = function (row) {\r\n        if (row) {\r\n            this.suspendLayout();\r\n            var parent_3 = this.getRowParent(row);\r\n            while (parent_3 != null) {\r\n                this.expand(parent_3);\r\n                parent_3 = this.getRowParent(parent_3);\r\n            }\r\n            this.resumeLayout();\r\n            var self_3 = this;\r\n            var scrollToTimeout_1 = setTimeout(function () {\r\n                var index = self_3.getRowCurrentIndex(row);\r\n                if (index >= 0) {\r\n                    self_3.scrollPos({\r\n                        x: self_3.currentScrollPos.x,\r\n                        y: self_3.avgRowHeight * (index + 1 - self_3.visibleRange / 2)\r\n                    });\r\n                    self_3.updateLayout();\r\n                }\r\n                clearTimeout(scrollToTimeout_1);\r\n            }, 150);\r\n        }\r\n    };\r\n    // Selection -------------------------------------------------------------------------\r\n    IntegralUITreeGrid.prototype.rowMouseDown = function (e, obj) {\r\n        if (this.isEnabled)\r\n            this.processRowSelection(e, obj.data);\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUITreeGrid.prototype.rowMouseUp = function (e, obj) {\r\n        if (this.isEnabled)\r\n            this.updateRowSelection(e, obj.data);\r\n        //e.stopPropagation();\r\n    };\r\n    IntegralUITreeGrid.prototype.rowClickEvent = function (e, obj) {\r\n        if (this.isEnabled && e.which == 1)\r\n            this.rowClick.emit({ row: obj.data });\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUITreeGrid.prototype.rowDblClickEvent = function (e, obj) {\r\n        if (this.isEnabled) {\r\n            var eventObj = { cancel: false, row: obj.data };\r\n            this.rowDblClick.emit(eventObj);\r\n            if (eventObj.cancel != true)\r\n                this.toggle(obj.data);\r\n        }\r\n        e.stopPropagation();\r\n    };\r\n    // Style ----------------------------------------------------------------------------\r\n    ////////////////////////////\r\n    // Style Update\r\n    ///////////////////////////\r\n    IntegralUITreeGrid.prototype.updateColumnStyle = function (obj) {\r\n        if (obj) {\r\n            obj.style = {\r\n                header: [],\r\n                footer: [],\r\n                sorting: []\r\n            };\r\n            // Column Header Style\r\n            obj.style.header.push(this.columnHeaderClassName);\r\n            obj.style.header.push(this.options.currentStyle.column.header.normal);\r\n            //if (!this.enabled)\r\n            //obj.style.header.push(this.options.currentStyle.column.header.disabled);\r\n            if (obj.data == this.selectedColumn)\r\n                obj.style.header.push(this.options.currentStyle.column.header.selected);\r\n            else if (obj.data == this.hoverColumn)\r\n                obj.style.header.push(this.options.currentStyle.column.header.hovered);\r\n            // Column Footer Style\r\n            obj.style.footer.push(this.columnFooterClassName);\r\n            obj.style.footer.push(this.options.currentStyle.column.footer.normal);\r\n            //if (!this.enabled)\r\n            //obj.style.footer.push(this.options.currentStyle.column.footer.disabled);\r\n            if (obj.data == this.selectedColumn)\r\n                obj.style.footer.push(this.options.currentStyle.column.footer.selected);\r\n            else if (obj.data == this.hoverColumn)\r\n                obj.style.footer.push(this.options.currentStyle.column.footer.hovered);\r\n            // Grid Lines\r\n            switch (this.gridLines) {\r\n                case integralui_base_grid_1.IntegralUIGridLines.None:\r\n                    obj.style.header.push(this.options.currentStyle.gridLines.none);\r\n                    obj.style.footer.push(this.options.currentStyle.gridLines.none);\r\n                    break;\r\n                case integralui_base_grid_1.IntegralUIGridLines.Horizontal:\r\n                    obj.style.header.push(this.options.currentStyle.gridLines.horizontal);\r\n                    obj.style.footer.push(this.options.currentStyle.gridLines.horizontal);\r\n                    break;\r\n                case integralui_base_grid_1.IntegralUIGridLines.Vertical:\r\n                    obj.style.header.push(this.options.currentStyle.gridLines.vertical);\r\n                    obj.style.footer.push(this.options.currentStyle.gridLines.vertical);\r\n                    break;\r\n                default:\r\n                    obj.style.header.push(this.options.currentStyle.gridLines.both);\r\n                    obj.style.footer.push(this.options.currentStyle.gridLines.both);\r\n                    break;\r\n            }\r\n            // Sorting\r\n            if (this.isSortingAllowed() && this.isSortingColumn(obj.data)) {\r\n                switch (this.options.sorting) {\r\n                    case integralui_core_1.IntegralUISortOrder.Ascending:\r\n                        obj.style.sorting.push(this.options.currentStyle.column.sorting.normal.ascending);\r\n                        if (obj.data == this.selectedColumn)\r\n                            obj.style.sorting.push(this.options.currentStyle.column.sorting.selected.ascending);\r\n                        break;\r\n                    case integralui_core_1.IntegralUISortOrder.Descending:\r\n                        obj.style.sorting.push(this.options.currentStyle.column.sorting.normal.descending);\r\n                        if (obj.data == this.selectedColumn)\r\n                            obj.style.sorting.push(this.options.currentStyle.column.sorting.selected.descending);\r\n                        break;\r\n                }\r\n            }\r\n        }\r\n    };\r\n    IntegralUITreeGrid.prototype.updateRowStyle = function (obj) {\r\n        if (obj) {\r\n            obj.style = {\r\n                row: [],\r\n                expandBox: [],\r\n                cell: []\r\n            };\r\n            // Row General Style\r\n            obj.style.row.push(this.rowClassName);\r\n            obj.style.row.push(this.options.currentStyle.row.general.normal);\r\n            // Row Cell Style\r\n            obj.style.cell.push(this.cellClassName);\r\n            obj.style.cell.push(this.options.currentStyle.row.cell.normal);\r\n            if (!this.isRowEnabled(obj.data)) {\r\n                obj.style.row.push(this.options.currentStyle.row.general.disabled);\r\n                obj.style.cell.push(this.options.currentStyle.row.cell.disabled);\r\n            }\r\n            else if (this.isRowSelected(obj.data)) {\r\n                obj.style.row.push(this.options.currentStyle.row.general.selected);\r\n                obj.style.cell.push(this.options.currentStyle.row.cell.selected);\r\n            }\r\n            else if (this.isRowHovered(obj.data)) {\r\n                obj.style.row.push(this.options.currentStyle.row.general.hovered);\r\n                obj.style.cell.push(this.options.currentStyle.row.cell.hovered);\r\n            }\r\n            switch (this.gridLines) {\r\n                case integralui_base_grid_1.IntegralUIGridLines.None:\r\n                    obj.style.cell.push(this.options.currentStyle.gridLines.none);\r\n                    break;\r\n                case integralui_base_grid_1.IntegralUIGridLines.Horizontal:\r\n                    obj.style.cell.push(this.options.currentStyle.gridLines.horizontal);\r\n                    break;\r\n                case integralui_base_grid_1.IntegralUIGridLines.Vertical:\r\n                    obj.style.cell.push(this.options.currentStyle.gridLines.vertical);\r\n                    break;\r\n                default:\r\n                    obj.style.cell.push(this.options.currentStyle.gridLines.both);\r\n                    break;\r\n            }\r\n            // Row ExpandBox Style\r\n            if (this.isThereChildRows || (obj.data[this.options.rowFields.hasChildren]))\r\n                obj.style.expandBox.push(this.options.currentStyle.row.expandBox.general);\r\n            var rowHasChildren = obj.data[this.options.rowFields.hasChildren] && (this.isThereVisibleChildren(obj.data) || !obj.data[this.options.rowFields.rows] || (obj.data[this.options.rowFields.rows] && obj.data[this.options.rowFields.rows].length == 0));\r\n            if (rowHasChildren || this.isThereVisibleChildren(obj.data)) {\r\n                if (this.isRowLoading(obj.data))\r\n                    obj.style.expandBox.push(this.options.currentStyle.row.expandBox.load);\r\n                else {\r\n                    if (obj.data[this.options.rowFields.expanded] !== false)\r\n                        obj.style.expandBox.push(this.options.currentStyle.row.expandBox.collapsed);\r\n                    else\r\n                        obj.style.expandBox.push(this.options.currentStyle.row.expandBox.expanded);\r\n                }\r\n            }\r\n            for (var j = 0; j < obj.cells.length; j++) {\r\n                var cell = obj.cells[j];\r\n                if (this.options.allowFocus && cell.data == this.currentFocusCell)\r\n                    cell.style = {\r\n                        content: 'iui-treegrid-row-cell-content iui-treegrid-row-cell-content-focused'\r\n                    };\r\n                else\r\n                    cell.style = {\r\n                        content: 'iui-treegrid-row-cell-content'\r\n                    };\r\n            }\r\n        }\r\n    };\r\n    ////////////////////////////\r\n    // User Defined Styles\r\n    ///////////////////////////\r\n    IntegralUITreeGrid.prototype.getColumnStyle = function (value) {\r\n        if (value)\r\n            return {\r\n                header: this.getColumnHeaderStyle(value.header),\r\n                body: this.getColumnBodyStyle(value.body),\r\n                footer: this.getColumnFooterStyle(value.footer),\r\n                sorting: this.getColumnSortingStyle(value.sorting)\r\n            };\r\n        else\r\n            return this.getDefaultColumnStyle();\r\n    };\r\n    IntegralUITreeGrid.prototype.getColumnHeaderStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                cell: this.commonService.isFieldAvailable(value.cell, this.columnHeaderClassName + '-cell'),\r\n                disabled: this.commonService.isFieldAvailable(value.disabled, this.columnHeaderClassName + '-disabled'),\r\n                normal: this.commonService.isFieldAvailable(value.normal, this.columnHeaderClassName),\r\n                hovered: this.commonService.isFieldAvailable(value.hovered, this.columnHeaderClassName + '-hovered'),\r\n                selected: this.commonService.isFieldAvailable(value.selected, this.columnHeaderClassName + '-selected')\r\n            };\r\n        else\r\n            return this.getDefaultColumnHeaderStyle();\r\n    };\r\n    IntegralUITreeGrid.prototype.getColumnBodyStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                cell: this.commonService.isFieldAvailable(value.cell, this.columnBodyClassName + '-cell'),\r\n                disabled: this.commonService.isFieldAvailable(value.disabled, this.columnBodyClassName + '-disabled'),\r\n                normal: this.commonService.isFieldAvailable(value.normal, this.columnBodyClassName),\r\n                hovered: this.commonService.isFieldAvailable(value.hovered, this.columnBodyClassName + '-hovered'),\r\n                selected: this.commonService.isFieldAvailable(value.selected, this.columnBodyClassName + '-selected')\r\n            };\r\n        else\r\n            return this.getDefaultColumnBodyStyle();\r\n    };\r\n    IntegralUITreeGrid.prototype.getColumnFooterStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                cell: this.commonService.isFieldAvailable(value.cell, this.columnFooterClassName + '-cell'),\r\n                disabled: this.commonService.isFieldAvailable(value.disabled, this.columnFooterClassName + '-disabled'),\r\n                normal: this.commonService.isFieldAvailable(value.normal, this.columnFooterClassName),\r\n                hovered: this.commonService.isFieldAvailable(value.hovered, this.columnFooterClassName + '-hovered'),\r\n                selected: this.commonService.isFieldAvailable(value.selected, this.columnFooterClassName + '-selected')\r\n            };\r\n        else\r\n            return this.getDefaultColumnFooterStyle();\r\n    };\r\n    IntegralUITreeGrid.prototype.getColumnSortingStyle = function (value) {\r\n        if (value)\r\n            return {\r\n                normal: this.getColumnSortingNormalStyle(value.normal),\r\n                selected: this.getColumnSortingSelectedStyle(value.selected)\r\n            };\r\n        else\r\n            return this.getDefaultColumnSortingStyle();\r\n    };\r\n    IntegralUITreeGrid.prototype.getColumnSortingNormalStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                ascending: this.commonService.isFieldAvailable(value.ascending, this.sortingClassName + '-ascending'),\r\n                descending: this.commonService.isFieldAvailable(value.descending, this.sortingClassName + '-descending')\r\n            };\r\n        else\r\n            return {\r\n                ascending: this.defaultStyle.column.sorting.normal.ascending,\r\n                descending: this.defaultStyle.column.sorting.normal.descending\r\n            };\r\n    };\r\n    IntegralUITreeGrid.prototype.getColumnSortingSelectedStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                ascending: this.commonService.isFieldAvailable(value.ascending, this.sortingClassName + '-ascending-selected'),\r\n                descending: this.commonService.isFieldAvailable(value.descending, this.sortingClassName + '-descending-selected')\r\n            };\r\n        else\r\n            return {\r\n                ascending: this.defaultStyle.column.sorting.selected.ascending,\r\n                descending: this.defaultStyle.column.sorting.selected.descending\r\n            };\r\n    };\r\n    IntegralUITreeGrid.prototype.getRowStyle = function (value) {\r\n        if (value)\r\n            return {\r\n                general: this.getRowGeneralStyle(value.general),\r\n                expandBox: this.getRowExpandBoxStyle(value.expandBox),\r\n                cell: this.getRowCellStyle(value.cell)\r\n            };\r\n        else\r\n            return this.getDefaultRowStyle();\r\n    };\r\n    IntegralUITreeGrid.prototype.getRowGeneralStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                disabled: this.commonService.isFieldAvailable(value.disabled, this.rowClassName + '-disabled'),\r\n                focused: this.commonService.isFieldAvailable(value.focused, this.rowClassName + '-focused'),\r\n                normal: this.commonService.isFieldAvailable(value.normal, this.rowClassName),\r\n                hovered: this.commonService.isFieldAvailable(value.hovered, this.rowClassName + '-hovered'),\r\n                selected: this.commonService.isFieldAvailable(value.selected, this.rowClassName + '-selected')\r\n            };\r\n        else\r\n            return this.getDefaultRowGeneralStyle();\r\n    };\r\n    IntegralUITreeGrid.prototype.getRowExpandBoxStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                general: this.commonService.isFieldAvailable(value.disabled, this.expandBoxClassName),\r\n                load: this.commonService.isFieldAvailable(value.focused, this.expandBoxClassName + '-load'),\r\n                expanded: this.commonService.isFieldAvailable(value.normal, this.expandBoxClassName + '-open'),\r\n                collapsed: this.commonService.isFieldAvailable(value.hovered, this.expandBoxClassName + '-close')\r\n            };\r\n        else\r\n            return this.getDefaultRowExpandBoxStyle();\r\n    };\r\n    IntegralUITreeGrid.prototype.getRowCellStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                disabled: this.commonService.isFieldAvailable(value.disabled, this.cellClassName + '-disabled'),\r\n                focused: this.commonService.isFieldAvailable(value.focused, this.cellClassName + '-focused'),\r\n                normal: this.commonService.isFieldAvailable(value.normal, this.cellClassName),\r\n                hovered: this.commonService.isFieldAvailable(value.hovered, this.cellClassName + '-hovered'),\r\n                selected: this.commonService.isFieldAvailable(value.selected, this.cellClassName + '-selected')\r\n            };\r\n        else\r\n            return this.getDefaultRowCellStyle();\r\n    };\r\n    IntegralUITreeGrid.prototype.getGridLinesStyle = function (value) {\r\n        if (value)\r\n            return {\r\n                none: this.commonService.isFieldAvailable(value.none, this.gridLinesClassName + '-none'),\r\n                horizontal: this.commonService.isFieldAvailable(value.horizontal, this.gridLinesClassName + '-horizontal'),\r\n                vertical: this.commonService.isFieldAvailable(value.vertical, this.gridLinesClassName + '-vertical'),\r\n                both: this.commonService.isFieldAvailable(value.both, this.gridLinesClassName + '-both')\r\n            };\r\n        else\r\n            return this.getDefaultGridLinesStyle();\r\n    };\r\n    ////////////////////////////\r\n    // Default Styles\r\n    ///////////////////////////\r\n    IntegralUITreeGrid.prototype.getDefaultGridStyle = function () {\r\n        return {\r\n            general: this.getDefaultGeneralStyle(),\r\n            column: this.getDefaultColumnStyle(),\r\n            row: this.getDefaultRowStyle(),\r\n            gridLines: this.getDefaultGridLinesStyle()\r\n        };\r\n    };\r\n    IntegralUITreeGrid.prototype.getDefaultColumnStyle = function () {\r\n        return {\r\n            header: this.getDefaultColumnHeaderStyle(),\r\n            body: this.getDefaultColumnBodyStyle(),\r\n            footer: this.getDefaultColumnFooterStyle(),\r\n            sorting: this.getDefaultColumnSortingStyle()\r\n        };\r\n    };\r\n    IntegralUITreeGrid.prototype.getDefaultColumnHeaderStyle = function () {\r\n        return {\r\n            cell: this.defaultStyle.column.header.cell,\r\n            disabled: this.defaultStyle.column.header.disabled,\r\n            normal: this.defaultStyle.column.header.normal,\r\n            hovered: this.defaultStyle.column.header.hovered,\r\n            selected: this.defaultStyle.column.header.selected\r\n        };\r\n    };\r\n    IntegralUITreeGrid.prototype.getDefaultColumnBodyStyle = function () {\r\n        return {\r\n            cell: this.defaultStyle.column.body.cell,\r\n            disabled: this.defaultStyle.column.body.disabled,\r\n            normal: this.defaultStyle.column.body.normal,\r\n            hovered: this.defaultStyle.column.body.hovered,\r\n            selected: this.defaultStyle.column.body.selected\r\n        };\r\n    };\r\n    IntegralUITreeGrid.prototype.getDefaultColumnFooterStyle = function () {\r\n        return {\r\n            cell: this.defaultStyle.column.footer.cell,\r\n            disabled: this.defaultStyle.column.footer.disabled,\r\n            normal: this.defaultStyle.column.footer.normal,\r\n            hovered: this.defaultStyle.column.footer.hovered,\r\n            selected: this.defaultStyle.column.footer.selected\r\n        };\r\n    };\r\n    IntegralUITreeGrid.prototype.getDefaultColumnSortingStyle = function () {\r\n        return {\r\n            normal: {\r\n                ascending: this.defaultStyle.column.sorting.normal.ascending,\r\n                descending: this.defaultStyle.column.sorting.normal.descending\r\n            },\r\n            selected: {\r\n                ascending: this.defaultStyle.column.sorting.selected.ascending,\r\n                descending: this.defaultStyle.column.sorting.selected.descending\r\n            }\r\n        };\r\n    };\r\n    IntegralUITreeGrid.prototype.getDefaultRowStyle = function () {\r\n        return {\r\n            general: this.getDefaultRowGeneralStyle(),\r\n            expandBox: this.getDefaultRowExpandBoxStyle(),\r\n            cell: this.getDefaultRowCellStyle()\r\n        };\r\n    };\r\n    IntegralUITreeGrid.prototype.getDefaultRowGeneralStyle = function () {\r\n        return {\r\n            disabled: this.defaultStyle.row.general.disabled,\r\n            focused: this.defaultStyle.row.general.focused,\r\n            normal: this.defaultStyle.row.general.normal,\r\n            hovered: this.defaultStyle.row.general.hovered,\r\n            selected: this.defaultStyle.row.general.selected\r\n        };\r\n    };\r\n    IntegralUITreeGrid.prototype.getDefaultRowExpandBoxStyle = function () {\r\n        return {\r\n            general: this.defaultStyle.row.expandBox.general,\r\n            load: this.defaultStyle.row.expandBox.load,\r\n            expanded: this.defaultStyle.row.expandBox.expanded,\r\n            collapsed: this.defaultStyle.row.expandBox.collapsed\r\n        };\r\n    };\r\n    IntegralUITreeGrid.prototype.getDefaultRowCellStyle = function () {\r\n        return {\r\n            disabled: this.defaultStyle.row.cell.disabled,\r\n            focused: this.defaultStyle.row.cell.focused,\r\n            normal: this.defaultStyle.row.cell.normal,\r\n            hovered: this.defaultStyle.row.cell.hovered,\r\n            selected: this.defaultStyle.row.cell.selected\r\n        };\r\n    };\r\n    IntegralUITreeGrid.prototype.getDefaultGridLinesStyle = function () {\r\n        return {\r\n            none: this.defaultStyle.gridLines.none,\r\n            horizontal: this.defaultStyle.gridLines.horizontal,\r\n            vertical: this.defaultStyle.gridLines.vertical,\r\n            both: this.defaultStyle.gridLines.both\r\n        };\r\n    };\r\n    IntegralUITreeGrid.prototype.updateStyle = function (value) {\r\n        if (value)\r\n            this.options.currentStyle = {\r\n                general: this.getGeneralStyle(value.general),\r\n                column: this.getColumnStyle(value.column),\r\n                row: this.getRowStyle(value.row),\r\n                gridLines: this.getGridLinesStyle(value.gridLines)\r\n            };\r\n        else\r\n            this.options.currentStyle = this.getDefaultGridStyle();\r\n    };\r\n    IntegralUITreeGrid.prototype.resetRefresh = function () {\r\n        if (this.refreshTimer)\r\n            clearTimeout(this.refreshTimer);\r\n        this.refreshTimer = null;\r\n    };\r\n    IntegralUITreeGrid.prototype.refresh = function (obj) {\r\n        var self = this;\r\n        self.resetRefresh();\r\n        //self.refreshTimer = setTimeout(function(){\r\n        self.updateControlClass();\r\n        for (var j = 0; j < self.scrollColumnList.length; j++)\r\n            self.updateColumnStyle(self.scrollColumnList[j]);\r\n        for (var i = 0; i < self.scrollRowList.length; i++) {\r\n            var obj_1 = self.scrollRowList[i];\r\n            self.updateRowStyle(obj_1);\r\n        }\r\n        //clearTimeout(self.refreshTimer);\r\n        //}, 100);\r\n    };\r\n    return IntegralUITreeGrid;\r\n}(integralui_base_grid_1.IntegralUIBaseGrid));\r\n__decorate([\r\n    core_1.ContentChildren(integralui_core_1.IntegralUITemplate),\r\n    __metadata(\"design:type\", core_1.QueryList)\r\n], IntegralUITreeGrid.prototype, \"templates\", void 0);\r\n__decorate([\r\n    core_1.ViewChildren('headerCellElem', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.QueryList)\r\n], IntegralUITreeGrid.prototype, \"columnElems\", void 0);\r\n__decorate([\r\n    core_1.ViewChildren('footerCellElem', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.QueryList)\r\n], IntegralUITreeGrid.prototype, \"footerElems\", void 0);\r\n__decorate([\r\n    core_1.ViewChildren('rowElem', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.QueryList)\r\n], IntegralUITreeGrid.prototype, \"rowElems\", void 0);\r\n__decorate([\r\n    core_1.ViewChildren('rowCellElem', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.QueryList)\r\n], IntegralUITreeGrid.prototype, \"cellElems\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('header', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.ElementRef)\r\n], IntegralUITreeGrid.prototype, \"headerElem\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('headerRow', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.ElementRef)\r\n], IntegralUITreeGrid.prototype, \"headerRowElem\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('footer', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.ElementRef)\r\n], IntegralUITreeGrid.prototype, \"footerElem\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('body', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.ElementRef)\r\n], IntegralUITreeGrid.prototype, \"bodyElem\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('verScroll'),\r\n    __metadata(\"design:type\", integralui_scrollbar_1.IntegralUIScrollBar)\r\n], IntegralUITreeGrid.prototype, \"verScrollCmp\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('horScroll'),\r\n    __metadata(\"design:type\", integralui_scrollbar_1.IntegralUIScrollBar)\r\n], IntegralUITreeGrid.prototype, \"horScrollCmp\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('contentBlock', { read: core_1.ViewContainerRef }),\r\n    __metadata(\"design:type\", core_1.ViewContainerRef)\r\n], IntegralUITreeGrid.prototype, \"contentRef\", void 0);\r\n__decorate([\r\n    core_1.ViewChild('paginator', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.ElementRef)\r\n], IntegralUITreeGrid.prototype, \"paginatorElem\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean)\r\n], IntegralUITreeGrid.prototype, \"autoExpand\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Number),\r\n    __metadata(\"design:paramtypes\", [Number])\r\n], IntegralUITreeGrid.prototype, \"expandColumnIndex\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Number),\r\n    __metadata(\"design:paramtypes\", [Number])\r\n], IntegralUITreeGrid.prototype, \"expandColumnID\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Number),\r\n    __metadata(\"design:paramtypes\", [Number])\r\n], IntegralUITreeGrid.prototype, \"indent\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean),\r\n    __metadata(\"design:paramtypes\", [Boolean])\r\n], IntegralUITreeGrid.prototype, \"showHeader\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean),\r\n    __metadata(\"design:paramtypes\", [Boolean])\r\n], IntegralUITreeGrid.prototype, \"showFooter\", null);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUITreeGrid.prototype, \"afterCollapse\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUITreeGrid.prototype, \"afterExpand\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUITreeGrid.prototype, \"beforeCollapse\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUITreeGrid.prototype, \"beforeExpand\", void 0);\r\n__decorate([\r\n    core_1.HostListener('document:mousemove', ['$event']),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUITreeGrid.prototype, \"onWindowMouseMove\", null);\r\n__decorate([\r\n    core_1.HostListener('document:mouseup', ['$event']),\r\n    __metadata(\"design:type\", Function),\r\n    __metadata(\"design:paramtypes\", [Object]),\r\n    __metadata(\"design:returntype\", void 0)\r\n], IntegralUITreeGrid.prototype, \"onWindowMouseUp\", null);\r\nIntegralUITreeGrid = __decorate([\r\n    core_1.Component({\r\n        selector: 'iui-treegrid',\r\n        template: \"\\n\\t\\t<div [ngClass]=\\\"getControlClass()\\\" (DOMMouseScroll)=\\\"gridMouseWheel($event)\\\" (mousewheel)=\\\"gridMouseWheel($event)\\\" (mousemove)=\\\"gridMouseMove($event)\\\" (mouseup)=\\\"gridMouseUp($event)\\\" (mouseleave)=\\\"gridMouseLeave($event)\\\" [ngStyle]=\\\"{ cursor: gridCursor }\\\" (dragenter)=\\\"ctrlDragEnter($event)\\\" (dragleave)=\\\"ctrlDragLeave($event)\\\" (dragover)=\\\"ctrlDragOver($event)\\\" (drop)=\\\"ctrlDragDrop($event)\\\" (scroll)=\\\"onGridScroll($event)\\\" (touchstart)=\\\"ctrlTouchStart($event)\\\" (touchend)=\\\"ctrlTouchEnd($event)\\\">\\n\\t\\t\\t<div *ngIf=\\\"showHeader\\\" class=\\\"iui-treegrid-block iui-treegrid-block-top\\\" [ngStyle]=\\\"{ left: -contentLeftPos + 'px' }\\\" #header>\\n\\t\\t\\t\\t<table cellpadding=\\\"0\\\" cellspacing=\\\"0\\\">\\n\\t\\t\\t\\t\\t<tr style=\\\"position:relative;\\\" #headerRow>\\n\\t\\t\\t\\t\\t\\t<td [ngClass]=\\\"column.style.header\\\" *ngFor=\\\"let column of scrollColumnList\\\" (mousemove)=\\\"columnMouseMove($event, column)\\\" (mousedown)=\\\"columnMouseDown($event, column)\\\" (mouseup)=\\\"columnMouseUp($event, column)\\\" (mouseenter)=\\\"columnMouseEnter($event, column)\\\" (mouseleave)=\\\"columnMouseLeave($event, column)\\\" (touchstart)=\\\"columnTouchStart($event, column)\\\" [ngStyle]=\\\"column.inlineStyle.header\\\" #headerCellElem>\\n\\t\\t\\t\\t\\t\\t\\t<div [ngStyle]=\\\"{ opacity: getColumnOpacity(column), 'text-align': getColumnAlignment(column.data), width: getColumnWidth(column.data) + 'px' }\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t<span *ngIf=\\\"isSortingColumn(column.data)\\\" [ngClass]=\\\"column.style.sorting\\\" data-element=\\\"sort-button\\\"></span>\\n\\t\\t\\t\\t\\t\\t\\t\\t<span [iuiTemplateOutlet]=\\\"headerData[0]\\\" [iuiTemplateOutletContext]=\\\"{$implicit: (column.data)}\\\"></span>\\n\\t\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t</td>\\n\\t\\t\\t\\t\\t\\t<td *ngIf=\\\"reorderColumnObj && isGridHovered\\\" [ngClass]=\\\"reorderColumnObj.style.header\\\" [ngStyle]=\\\"{ position: 'absolute', top:0, left: reorderColumnObjPos.left + 'px', 'pointer-events': 'none', 'z-index': 999 }\\\">\\n\\t\\t\\t\\t\\t\\t\\t<div [ngStyle]=\\\"{ opacity: '0.5', 'text-align': getColumnAlignment(reorderColumnObj.data), width: getColumnWidth(reorderColumnObj.data) + 'px' }\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t<span [iuiTemplateOutlet]=\\\"headerData[0]\\\" [iuiTemplateOutletContext]=\\\"{$implicit: (reorderColumnObj.data)}\\\"></span>\\n\\t\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t</td>\\n\\t\\t\\t\\t\\t</tr>\\n\\t\\t\\t\\t</table>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div class=\\\"iui-treegrid-block\\\" [ngStyle]=\\\"{ 'margin-top': blockMarginTop + 'px', height: blockSize.height + 'px' }\\\" (scroll)=\\\"onContentScroll($event)\\\" #contentBlock>\\n\\t\\t\\t\\t<table cellpadding=\\\"0\\\" cellspacing=\\\"0\\\" style=\\\"position:absolute;\\\" [ngStyle]=\\\"{ left: -contentLeftPos + 'px' }\\\" #body>\\n\\t\\t\\t\\t\\t<tr [ngClass]=\\\"row.style.row\\\" *ngFor=\\\"let row of scrollRowList; let i = index\\\" (mouseenter)=\\\"rowMouseEnter($event, row)\\\" (mouseleave)=\\\"rowMouseLeave($event, row)\\\" (mousedown)=\\\"rowMouseDown($event, row)\\\" (mouseup)=\\\"rowMouseUp($event, row)\\\" [iuiDraggable]=\\\"row.draggable\\\" (dragstart)=\\\"rowDragStart($event, row)\\\" (dragover)=\\\"rowDragOver($event, row, i)\\\" (drop)=\\\"rowDragDrop($event, row)\\\" (click)=\\\"rowClickEvent($event, row)\\\" (dblclick)=\\\"rowDblClickEvent($event, row)\\\" (touchstart)=\\\"rowTouchStart($event, row)\\\" [ngStyle]=\\\"row.inlineStyle\\\" #rowElem>\\n\\t\\t\\t\\t\\t\\t<td [ngClass]=\\\"row.style.cell\\\" *ngFor=\\\"let cell of row.cells; let j = index\\\" (mousedown)=\\\"cellMouseDown($event, cell)\\\" [ngStyle]=\\\"cell.inlineStyle\\\" #rowCellElem>\\n\\t\\t\\t\\t\\t\\t\\t<div [ngClass]=\\\"cell.style.content\\\" [ngStyle]=\\\"{ 'padding-left': cell.indent + 'px', 'text-align': cell.align, width: cell.width + 'px', height: cell.height }\\\" tabindex=\\\"{{cell.tabIndex}}\\\" [iuiFocus]=\\\"cell.data == this.currentFocusCell\\\" (focus)=\\\"cellGotFocus(cell)\\\" (blur)=\\\"cellLostFocus(cell)\\\" (keydown)=\\\"cellKeyDown($event, cell)\\\" (keypress)=\\\"cellKeyPress($event, cell)\\\" (keyup)=\\\"cellKeyUp($event, cell)\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t<span *ngIf=\\\"cell.expandBoxAllowed\\\" [ngClass]=\\\"row.style.expandBox\\\" (mousedown)=\\\"expandBoxMouseDown($event, row.data)\\\" (mouseup)=\\\"expandBoxMouseUp($event, row.data)\\\" (touchstart)=\\\"expandBoxTouchStart($event, row.data)\\\"></span>\\n\\t\\t\\t\\t\\t\\t\\t\\t<span [iuiTemplateOutlet]=\\\"cellData[0]\\\" [iuiTemplateOutletContext]=\\\"{$implicit: (cell.data)}\\\"></span>\\n\\t\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t</td> \\n\\t\\t\\t\\t\\t</tr>\\n\\t\\t\\t\\t</table>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div *ngIf=\\\"showFooter\\\" class=\\\"iui-treegrid-block iui-treegrid-block-bottom\\\" [ngStyle]=\\\"{ left: -contentLeftPos + 'px', bottom: getFooterBottomPos() + 'px' }\\\" #footer>\\n\\t\\t\\t\\t<table cellpadding=\\\"0\\\" cellspacing=\\\"0\\\">\\n\\t\\t\\t\\t\\t<tr>\\n\\t\\t\\t\\t\\t\\t<td [ngClass]=\\\"column.style.footer\\\" *ngFor=\\\"let column of scrollColumnList\\\" [ngStyle]=\\\"column.inlineStyle.footer\\\" #footerCellElem>\\n\\t\\t\\t\\t\\t\\t\\t<div [ngStyle]=\\\"{ 'text-align': getColumnAlignment(column.data, true), width: getColumnWidth(column.data) + 'px' }\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t<span [iuiTemplateOutlet]=\\\"footerData[0]\\\" [iuiTemplateOutletContext]=\\\"{$implicit: (column.data)}\\\"></span>\\n\\t\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t</td> \\n\\t\\t\\t\\t\\t</tr>\\n\\t\\t\\t\\t</table>\\n\\t\\t\\t</div>\\n            <iui-scrollbar *ngIf=\\\"isVerScrollVisible()\\\" [enabled]=\\\"enabled\\\" [value]=\\\"currentScrollPos.y\\\" [max]=\\\"maxScrollPos.y\\\" [largeChange]=\\\"scrollLargeChange.y\\\" [height]=\\\"scrollBarSize.height\\\" (valueChanged)=\\\"onVerticalScrollChanged($event)\\\" (scrollStart)=\\\"onVerticalScrollStart($event)\\\" (scrollEnd)=\\\"onVerticalScrollEnd($event)\\\" [position]=\\\"{ top: 1 }\\\" #verScroll></iui-scrollbar>\\n            <iui-scrollbar *ngIf=\\\"isHorScrollVisible()\\\" [enabled]=\\\"enabled\\\" [orientation]=\\\"horScrollOrientation\\\" [value]=\\\"currentScrollPos.x\\\" [max]=\\\"maxScrollPos.x\\\" [width]=\\\"scrollBarSize.width\\\" (valueChanged)=\\\"onHorizontalScrollChanged($event)\\\" (scrollStart)=\\\"onHorizontalScrollStart($event)\\\" (scrollEnd)=\\\"onHorizontalScrollEnd($event)\\\" [position]=\\\"{ bottom: horScrollElemPos.bottom }\\\" #horScroll></iui-scrollbar>\\n            <div *ngIf=\\\"isVerScrollVisible() && isHorScrollVisible()\\\" style=\\\"background:#f5f5f5;position:absolute;right:0;bottom:0;width:16px;height:16px;\\\" [ngStyle]=\\\"{ bottom: cornerScrollElemPos.bottom + 'px' }\\\"></div>\\n            <iui-paginator *ngIf=\\\"isPaginationEnabled()\\\" align=\\\"center\\\" style=\\\"position:absolute;top:0;width:100%\\\" [ngStyle]=\\\"{ top: paginatorPos.top + 'px' }\\\" [maxPages]=\\\"getMaxPages()\\\" [currentPage]=\\\"currentPageNumber\\\" (pageChanged)=\\\"paginatorPageChanged($event)\\\" #paginator></iui-paginator>\\n\\t\\t</div>\\n\\t\",\r\n        inputs: ['allowDrag', 'allowDrop', 'allowFilter', 'allowFocus', 'appRef', 'autoSizeColumns', 'autoUpdate', 'columns', 'controlStyle', 'data', 'dataFields', 'enabled', 'focusedCell', 'gridLines', 'name', 'rowHeight', 'rows', 'paging', 'selectedColumn', 'selectedRow', 'selectionMode', 'showScroll', 'sorting', 'state'],\r\n        outputs: ['afterSelect', 'beforeEdit', 'beforeSelect', 'beforeUpdate', 'change', 'columnAdding', 'columnAdded', 'columnClick', 'columnRemoving', 'columnRemoved', 'columnsCleared', 'columnOrderChanged', 'columnSizeChanged', 'dragEnter', 'dragDrop', 'dragLeave', 'dragOver', 'keyDown', 'keyPress', 'keyUp', 'loadComplete', 'rowAdding', 'rowAdded', 'rowClick', 'rowDblClick', 'rowRemoving', 'rowRemoved', 'rowsCleared', 'scrollPosChanged', 'selectionChanged', 'updateComplete'],\r\n        providers: [integralui_core_1.IntegralUIBaseService, integralui_data_service_1.IntegralUIDataService],\r\n        encapsulation: core_1.ViewEncapsulation.None\r\n    }),\r\n    __metadata(\"design:paramtypes\", [integralui_data_service_1.IntegralUIDataService,\r\n        integralui_dragdrop_service_1.IntegralUIDragDropService,\r\n        core_1.ElementRef,\r\n        core_1.Renderer,\r\n        integralui_common_service_1.IntegralUICommonService,\r\n        integralui_filter_service_1.IntegralUIFilterService,\r\n        core_1.ComponentFactoryResolver,\r\n        integralui_core_1.IntegralUIBaseService])\r\n], IntegralUITreeGrid);\r\nexports.IntegralUITreeGrid = IntegralUITreeGrid;\r\n//# sourceMappingURL=integralui.treegrid.js.map","/*\r\n  filename: integralui.treelist.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(f,a){function g(){this.constructor=f}for(var b in a)a.hasOwnProperty(b)&&(f[b]=a[b]);f.prototype=null===a?Object.create(a):(g.prototype=a.prototype,new g)},__decorate=this&&this.__decorate||function(f,a,g,b){var d=arguments.length,e=3>d?a:null===b?b=Object.getOwnPropertyDescriptor(a,g):b,h;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)e=Reflect.decorate(f,a,g,b);else for(var c=f.length-1;0<=c;c--)if(h=f[c])e=(3>d?h(e):3<d?h(a,g,e):\r\nh(a,g))||e;return 3<d&&e&&Object.defineProperty(a,g,e),e},__metadata=this&&this.__metadata||function(f,a){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(f,a)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),integralui_data_service_1=require(\"../services/integralui.data.service\"),IntegralUITreeListItem=function(f){function a(g,b,d){var a=f.call(this,\r\ng,b)||this;a.elemRef=g;a.commonService=b;a.baseService=d;a.templateData=[];a.parentCtrl=null;return a}__extends(a,f);a.prototype.ngOnInit=function(){this.templateData.push(this.data);this.parentCtrl=this.baseService.getComponent();this.generalClassName=\"iui-treelistitem\";this.contentClassName=this.generalClassName+\"-content\";this.initStyle()};return a}(integralui_core_1.IntegralUIItem);__decorate([core_1.Input(),__metadata(\"design:type\",Object)],IntegralUITreeListItem.prototype,\"templateRef\",void 0);\r\nIntegralUITreeListItem=__decorate([core_1.Component({selector:\"iui-treelistitem\",template:'\\n\\t\\t<li [ngClass]=\"getControlClass()\" (click)=\"onClick($event)\" (mousedown)=\"onMouseDown($event)\" (mouseup)=\"onMouseUp($event)\" (mouseenter)=\"onMouseEnter($event)\" (mousemove)=\"onMouseMove($event)\" (mouseleave)=\"onMouseLeave($event)\">\\n\\t\\t\\t<ng-template ngFor [ngForOf]=\"templateData\" [ngForTemplate]=\"templateRef\"></ng-template>  \\n\\t\\t</li>\\n\\t',inputs:\"controlStyle data enabled icon name state text\".split(\" \"),\r\noutputs:\"click mouseDown mouseEnter mouseLeave mouseMove mouseUp\".split(\" \"),encapsulation:core_1.ViewEncapsulation.None}),__metadata(\"design:paramtypes\",[core_1.ElementRef,integralui_common_service_1.IntegralUICommonService,integralui_core_1.IntegralUIBaseService])],IntegralUITreeListItem);exports.IntegralUITreeListItem=IntegralUITreeListItem;\r\nvar IntegralUITreeList=function(f){function a(a,b,d,e,h){var c=f.call(this,d)||this;c.dataService=a;c.elemRef=b;c.commonService=d;c.cmpResolver=e;c.baseService=h;c.animSpeed=300;c.prevData=null;c.itemData=null;c.nextData=null;c.hoverItem=null;c.blockPos={top:30,left:0};c.leftBlockPos={top:30,left:-300};c.rightBlockPos={top:30,left:300};c.leftBlockWidth=0;c.blockWidth=0;c.rightBlockWidth=0;c.leftBlockOpacity=0;c.blockOpacity=1;c.rightBlockOpacity=0;c.elemSize={width:0,height:0};c.currentSelection=\r\nnull;c.headerItem=null;c.headerText=\"\";c.afterSelect=new core_1.EventEmitter;c.beforeSelect=new core_1.EventEmitter;c.clear=new core_1.EventEmitter;c.itemAdding=new core_1.EventEmitter;c.itemAdded=new core_1.EventEmitter;c.itemRemoving=new core_1.EventEmitter;c.itemRemoved=new core_1.EventEmitter;c.selectionChanged=new core_1.EventEmitter;c.selList=[];return c}__extends(a,f);Object.defineProperty(a.prototype,\"selectedItem\",{get:function(){return this.currentSelection},set:function(a){var b={cancel:!1,\r\nheader:this.headerItem,item:a};this.beforeSelect.emit(b);1!=b.cancel&&this.currentSelection!=a&&(this.currentSelection=a,a?a.items&&0<a.items.length&&(this.headerItem=a,this.headerText=a.text):(this.headerItem=null,this.headerText=this.title),this.afterSelect.emit({header:this.headerItem,item:a}),this.selectionChanged.emit(null))},enumerable:!0,configurable:!0});a.prototype.ngOnInit=function(){this.baseService.setComponent(this);this.dataService.init([{data:this.items}]);this.itemData=this.items;\r\nthis.headerText=this.title;this.generalClassName=\"iui-treelist\";this.initStyle()};a.prototype.ngAfterViewInit=function(){this.blockPos.top=this.headerElem.nativeElement.offsetHeight;this.leftBlockPos.top=this.headerElem.nativeElement.offsetHeight;this.rightBlockPos.top=this.headerElem.nativeElement.offsetHeight;this.elemSize={width:this.elemRef.nativeElement.firstElementChild.clientWidth,height:this.elemRef.nativeElement.firstElementChild.clientHeight};this.leftBlockWidth=this.blockWidth=this.rightBlockWidth=\r\nthis.elemSize.width};a.prototype.onItemMouseEnter=function(a,b){this.isEnabled&&(this.hoverItem=b)};a.prototype.onItemMouseLeave=function(a,b){this.hoverItem=null};a.prototype.onItemMouseDown=function(a,b){if(this.isEnabled&&1==a.buttons&&b){var d=this;if(b.items&&0<b.items.length){d.selList.push(d.headerItem);d.nextData=b.items;var e=0,g=5/d.elemSize.width,c=.5,f=1/d.elemSize.width,k=0,l=setInterval(function(){e<d.elemSize.width?(e+=10,c-=g,k+=f,d.blockPos.left=-e,d.blockOpacity=c,d.rightBlockPos.left=\r\nd.elemSize.width-e,d.rightBlockOpacity=k):(d.selectedItem=b,d.itemData=d.nextData,d.blockPos.left=0,d.blockOpacity=1,d.rightBlockPos.left=d.elemSize.width,d.rightBlockOpacity=0,clearInterval(l))},10)}else d.selectedItem=b}};a.prototype.onHeaderMouseDown=function(a){var b=this;if(this.isEnabled&&1==a.buttons&&0<b.selList.length){var d=b.selList.length-1;b.prevData=b.selList[d]&&b.selList[d].items?b.selList[d].items:b.items;var e=0,f=5/b.elemSize.width,c=.5,g=1/b.elemSize.width,k=0,l=setInterval(function(){e<\r\nb.elemSize.width?(e+=10,c-=f,k+=g,b.blockPos.left=e,b.blockOpacity=c,b.leftBlockPos.left=e-b.elemSize.width,b.leftBlockOpacity=k):(b.selectedItem=b.selList[d],b.itemData=b.prevData,b.selList.splice(d,1),b.blockPos.left=0,b.blockOpacity=1,b.leftBlockPos.left=-b.elemSize.width,b.leftBlockOpacity=0,clearInterval(l))},10)}};a.prototype.getItemState=function(a){return a==this.selectedItem?integralui_core_1.IntegralUIObjectState.selected:a==this.hoverItem?integralui_core_1.IntegralUIObjectState.hovered:\r\nintegralui_core_1.IntegralUIObjectState.normal};return a}(integralui_core_1.IntegralUIBaseComponent);__decorate([core_1.ViewChildren(IntegralUITreeListItem),__metadata(\"design:type\",core_1.QueryList)],IntegralUITreeList.prototype,\"contentList\",void 0);__decorate([core_1.ViewChild(\"contentBlock\",{read:core_1.ViewContainerRef}),__metadata(\"design:type\",core_1.ViewContainerRef)],IntegralUITreeList.prototype,\"contentRef\",void 0);\r\n__decorate([core_1.ViewChild(\"header\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUITreeList.prototype,\"headerElem\",void 0);__decorate([core_1.ViewChild(\"leftBlock\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUITreeList.prototype,\"leftBlockElem\",void 0);__decorate([core_1.ViewChild(\"contentBlock\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUITreeList.prototype,\"blockElem\",void 0);\r\n__decorate([core_1.ViewChild(\"rightBlock\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUITreeList.prototype,\"rightBlockElem\",void 0);__decorate([core_1.ContentChild(core_1.TemplateRef),__metadata(\"design:type\",Object)],IntegralUITreeList.prototype,\"itemTemplate\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Array)],IntegralUITreeList.prototype,\"items\",void 0);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",String)],IntegralUITreeList.prototype,\"title\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Object),__metadata(\"design:paramtypes\",[Object])],IntegralUITreeList.prototype,\"selectedItem\",null);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITreeList.prototype,\"afterSelect\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITreeList.prototype,\"beforeSelect\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITreeList.prototype,\"clear\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITreeList.prototype,\"itemAdding\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITreeList.prototype,\"itemAdded\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITreeList.prototype,\"itemRemoving\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITreeList.prototype,\"itemRemoved\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITreeList.prototype,\"selectionChanged\",void 0);\r\nIntegralUITreeList=__decorate([core_1.Component({selector:\"iui-treelist\",template:'\\n\\t\\t<div [ngClass]=\"getControlClass()\">\\n\\t\\t\\t<div class=\"iui-treelist-header\" (mousedown)=\"onHeaderMouseDown($event)\" #header>\\n                <span class=\"expand-icons back\" *ngIf=\"headerItem!=null\"></span>\\n                <span>{{headerText}}</span>\\n\\t\\t\\t</div>\\n\\t\\t\\t<ul class=\"iui-treelist-block\" #leftBlock [ngStyle]=\"{ \\'position\\': \\'absolute\\', \\'top\\': leftBlockPos.top + \\'px\\', \\'left\\': leftBlockPos.left + \\'px\\', \\'width\\': leftBlockWidth + \\'px\\', \\'opacity\\': leftBlockOpacity }\">\\n\\t            <iui-treelistitem *ngFor=\"let item of prevData\" [enabled]=\"item.enabled\" [text]=\"item.text\" [templateRef]=\"itemTemplate\" [data]=\"item\">\\n\\t\\t\\t\\t</iui-treelistitem> \\n\\t\\t\\t</ul>\\n\\t\\t\\t<ul class=\"iui-treelist-block\" #contentBlock [ngStyle]=\"{ \\'position\\': \\'absolute\\', \\'top\\': blockPos.top + \\'px\\', \\'left\\': blockPos.left + \\'px\\', \\'width\\': blockWidth + \\'px\\', \\'opacity\\': blockOpacity }\">\\n\\t            <iui-treelistitem *ngFor=\"let item of itemData\" [enabled]=\"item.enabled\" [text]=\"item.text\" [templateRef]=\"itemTemplate\" [data]=\"item\" (mouseDown)=\"onItemMouseDown($event, item)\" (mouseEnter)=\"onItemMouseEnter($event, item)\" (mouseLeave)=\"onItemMouseLeave($event, item)\" [state]=\"getItemState(item)\">\\n\\t\\t\\t\\t</iui-treelistitem> \\n\\t\\t\\t</ul>\\n\\t\\t\\t<ul class=\"iui-treelist-block\" #rightBlock [ngStyle]=\"{ \\'position\\': \\'absolute\\', \\'top\\': rightBlockPos.top + \\'px\\', \\'left\\': rightBlockPos.left + \\'px\\', \\'width\\': rightBlockWidth + \\'px\\', \\'opacity\\': rightBlockOpacity }\">\\n\\t            <iui-treelistitem *ngFor=\"let item of nextData\" [enabled]=\"item.enabled\" [text]=\"item.text\" [templateRef]=\"itemTemplate\" [data]=\"item\">\\n\\t\\t\\t\\t</iui-treelistitem> \\n\\t\\t\\t</ul>\\n\\t\\t</div>\\n\\t',inputs:[\"controlStyle\",\r\n\"data\",\"enabled\",\"state\"],providers:[integralui_core_1.IntegralUIBaseService,integralui_data_service_1.IntegralUIDataService]}),__metadata(\"design:paramtypes\",[integralui_data_service_1.IntegralUIDataService,core_1.ElementRef,integralui_common_service_1.IntegralUICommonService,core_1.ComponentFactoryResolver,integralui_core_1.IntegralUIBaseService])],IntegralUITreeList);exports.IntegralUITreeList=IntegralUITreeList;","/*\r\n  filename: integralui.treeview.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(g,b){function a(){this.constructor=g}for(var c in b)b.hasOwnProperty(c)&&(g[c]=b[c]);g.prototype=null===b?Object.create(b):(a.prototype=b.prototype,new a)},__decorate=this&&this.__decorate||function(g,b,a,c){var e=arguments.length,d=3>e?b:null===c?c=Object.getOwnPropertyDescriptor(b,a):c,f;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)d=Reflect.decorate(g,b,a,c);else for(var h=g.length-1;0<=h;h--)if(f=g[h])d=(3>e?f(d):3<e?f(b,a,d):\r\nf(b,a))||d;return 3<e&&d&&Object.defineProperty(b,a,d),d},__metadata=this&&this.__metadata||function(g,b){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(g,b)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),integralui_data_service_1=require(\"../services/integralui.data.service\"),integralui_dragdrop_service_1=require(\"../services/integralui.dragdrop.service\"),\r\nintegralui_filter_service_1=require(\"../services/integralui.filter.service\"),integralui_base_list_1=require(\"./integralui.base.list\"),integralui_scrollbar_1=require(\"./integralui.scrollbar\"),integralui_treeitem_1=require(\"./integralui.treeitem\"),IntegralUITreeView=function(g){function b(a,c,e,b,f,h,l,k){var d=g.call(this,a,c,e,b,f,h)||this;d.dataService=a;d.dragDropService=c;d.elemRef=e;d.elemRenderer=b;d.commonService=f;d.filterService=h;d.cmpResolver=l;d.baseService=k;d.fullList=[];d.isThereChildItems=\r\n!1;d.expandTimeout=null;d.expandItem=null;d.autoExpand=!1;d.afterCollapse=new core_1.EventEmitter;d.afterExpand=new core_1.EventEmitter;d.beforeCollapse=new core_1.EventEmitter;d.beforeExpand=new core_1.EventEmitter;d.itemList=[];return d}__extends(b,g);Object.defineProperty(b.prototype,\"dataFields\",{set:function(a){this.updateDataFields(a)},enumerable:!0,configurable:!0});Object.defineProperty(b.prototype,\"indent\",{get:function(){return this.options.indent},set:function(a){this.options.indent!=a&&\r\n(this.options.indent=a,this.updateLayout())},enumerable:!0,configurable:!0});b.prototype.ngOnInit=function(){this.baseService.setComponent(this);this.updateData();this.updateCurrentList();this.generalClassName=\"iui-treeview\";this.itemClassName=\"iui-treeitem\";this.itemContentClassName=this.itemClassName+\"-content\";this.expandBoxClassName=this.itemClassName+\"-expand-box\";this.initStyle()};b.prototype.updateData=function(){this.dataService.init([{data:this.items}])};b.prototype.initStyle=function(){this.defaultStyle=\r\n{general:{disabled:this.generalClassName+\"-disabled\",focused:this.generalClassName+\"-focused\",normal:this.generalClassName,hovered:this.generalClassName+\"-hovered\",selected:this.generalClassName+\"-selected\"},item:{general:{disabled:this.itemClassName+\"-disabled\",focused:this.itemClassName+\"-focused\",normal:this.itemClassName,hovered:this.itemClassName+\"-hovered\",selected:this.itemClassName+\"-selected\"},expandBox:{general:this.expandBoxClassName,load:this.expandBoxClassName+\"-load\",expanded:this.expandBoxClassName+\r\n\"-open\",collapsed:this.expandBoxClassName+\"-close\"},content:{disabled:this.itemContentClassName+\"-disabled\",focused:this.itemContentClassName+\"-focused\",normal:this.itemContentClassName,hovered:this.itemContentClassName+\"-hovered\",selected:this.itemContentClassName+\"-selected\"}}};this.updateStyle(this.controlStyle);this.updateControlClass();this.refresh()};b.prototype.ngAfterViewInit=function(){this.updateLayout()};b.prototype.ngAfterContentInit=function(){};b.prototype.ngOnDestroy=function(){this.removeDropMark();\r\nthis.expandTimeout&&clearTimeout(this.expandTimeout);this.updateTimer&&clearTimeout(this.updateTimer)};b.prototype.ngAfterContentChecked=function(){};b.prototype.ngAfterViewChecked=function(){};b.prototype.checkForChildren=function(a){var c=!1;if(a=a[this.options.dataFields.items])for(var e=0;e<a.length;e++)if(this.isItemAllowed(a[e])){c=!0;break}return c};b.prototype.updateIsThereChildItems=function(){var a=!1,c=this.dataService.getList();if(c)for(var e=0;e<c.length&&!(a=this.checkForChildren(c[e]));e++);\r\nthis.isThereChildItems=a};b.prototype.processItemAdd=function(a,c){this.allowUpdate&&this.updateIsThereChildItems()};b.prototype.processItemRemoval=function(a,c){this.allowUpdate&&this.updateIsThereChildItems()};b.prototype.updateOptions=function(a){a?this.options={allowDrag:this.commonService.isFieldAvailable(a.allowDrag,!1),allowDrop:this.commonService.isFieldAvailable(a.allowDrop,!0),dataFields:null,indent:this.commonService.isFieldAvailable(a.indent,15),loadItems:[],selectedItem:this.commonService.isFieldAvailable(a.selectedItem,\r\nthis.options.selectedItem?this.options.selectedItem:null)}:(this.options={allowDrag:!1,allowDrop:!0,dataFields:null,indent:15,loadItems:[],selectedItem:null},this.updateDataFields())};b.prototype.updateDataFields=function(a){this.options.dataFields=a?{allowDrag:a.allowDrag?a.allowDrag:\"allowDrag\",allowDrop:a.allowDrop?a.allowDrop:\"allowDrop\",allowEdit:a.allowEdit?a.allowEdit:\"allowEdit\",allowFocus:a.allowFocus?a.allowFocus:\"allowFocus\",autoCheck:a.autoCheck?a.autoCheck:\"autoCheck\",checkBoxSettings:a.checkBoxSettings?\r\na.checkBoxSettings:\"checkBoxSettings\",checked:a.checked?a.checked:\"checked\",checkState:a.checkState?a.checkState:\"checkState\",content:a.content?a.content:\"content\",contextMenu:a.contextMenu?a.contextMenu:\"contextMenu\",enabled:a.enabled?a.enabled:\"enabled\",expanded:a.expanded?a.expanded:\"expanded\",hasChildren:a.hasChildren?a.hasChildren:\"hasChildren\",icon:a.icon?a.icon:\"icon\",id:a.id?a.id:\"id\",items:a.items?a.items:\"items\",pid:a.pid?a.pid:\"pid\",selected:a.selected?a.selected:\"selected\",statusIcon:a.statusIcon?\r\na.statusIcon:\"statusIcon\",style:a.style?a.style:\"style\",templateObj:a.templateObj?a.templateObj:\"templateObj\",text:a.text?a.text:\"text\",tooltip:a.tooltip?a.tooltip:\"tooltip\",value:a.value?a.value:\"value\"}:{allowDrag:\"allowDrag\",allowDrop:\"allowDrop\",allowEdit:\"allowEdit\",allowFocus:\"allowFocus\",autoCheck:\"autoCheck\",checkBoxSettings:\"checkBoxSettings\",checked:\"checked\",checkState:\"checkState\",content:\"content\",contextMenu:\"contextMenu\",enabled:\"enabled\",expanded:\"expanded\",hasChildren:\"hasChildren\",\r\nicon:\"icon\",id:\"id\",items:\"items\",pid:\"pid\",selected:\"selected\",statusIcon:\"statusIcon\",style:\"style\",templateObj:\"templateObj\",text:\"text\",tooltip:\"tooltip\",value:\"value\"};this.dataService&&this.dataService.updateDataFields(this.options.dataFields)};b.prototype.getDataFields=function(){return this.options.dataFields};b.prototype.updateCurrentList=function(){var a=this;a.currentList.length=0;a.isThereChildItems=!1;var c=a.dataService.getList();c&&(a.applySorting(c),c.forEach(function(c){a.addChildItems(c,\r\n0,null,!1)}))};b.prototype.addChildItems=function(a,c,e,b,f){var d=this,g=!0;if(!a[d.options.dataFields.items])return g=d.addItemToCurrentList(a,c,e,b,f);if(g=d.addItemToCurrentList(a,c,e,b,f)){var k=0,m=!0;if(b||d.isItemExpanded(a))if(e=a[d.options.dataFields.items])d.applySorting(e),e.forEach(function(e){(m=d.addChildItems(e,c+d.options.indent,a[d.options.dataFields.id],b,a))&&k++});b||d.isThereChildItems||!(0<k||!d.isItemExpanded(a)&&a[d.options.dataFields.items]&&0<a[d.options.dataFields.items].length&&\r\nd.isThereVisibleChildren(a))||(d.isThereChildItems=!0)}return g};b.prototype.addItemToCurrentList=function(a,c,b,d,f){a.type=\"item\";a[this.options.dataFields.id]||(a[this.options.dataFields.id]=this.commonService.getUniqueId());b&&(a[this.options.dataFields.pid]=b);(b=this.isItemAllowed(a))&&(d?this.fullList.push(a):this.currentList.push({data:a,indent:c}));return b};b.prototype.loadData=function(a,c,b,d){this.processLoadData(a,c,b,d)};b.prototype.updateItem=function(a){var c=this;if(a&&this.isItemExpanded(a))var b=\r\nsetTimeout(function(){var e=c.getComponentFromItem(a);e&&!e.isBlockExpanded()&&e.toggleContent();clearTimeout(b)},100)};b.prototype.updateScrollItemList=function(){for(var a=this.scrollItemList.length=0,c=this.currentIndex;c<this.currentList.length&&c<this.currentIndex+this.visibleRange;c++,a++){var b=this.currentList[c];b={data:b.data,indent:b.indent,index:c-this.currentIndex,style:{},tabIndex:a};this.updateItemStyle(b);this.scrollItemList.push(b)}};b.prototype.expandOnDelay=function(a){var c=this;\r\n0!=c.autoExpand&&(c.expandItem!=a&&(c.expandTimeout&&clearTimeout(c.expandTimeout),c.expandTimeout=setTimeout(function(){c.expandTimeout&&c.expand(a);clearTimeout(c.expandTimeout)},500)),c.expandItem=a)};b.prototype.itemDragOver=function(a,c,b,d){if(this.isEnabled){var e=this.getItemElemList();e&&0<=b&&b<e.length&&(b=this.commonService.getPageRect(e[b].nativeElement),b={x:b.left,y:b.top,width:b.right-b.left,height:b.bottom-b.top},this.expandOnDelay(c.data),this.processScroll(a),this.processDragOver(a,\r\nc.data,b,d))}a.stopPropagation()};b.prototype.itemDragDrop=function(a,b){this.isEnabled&&(this.expandItem=null,this.expandTimeout&&clearTimeout(this.expandTimeout),this.processDragDrop(a,b.data));a.stopPropagation()};b.prototype.collapse=function(a){this.toggle(a,!1)};b.prototype.expand=function(a){this.toggle(a,!0)};b.prototype.expandBoxClicked=function(a,b){1==a.buttons&&this.toggle(b);a.stopPropagation()};b.prototype.toggle=function(a,b){if(a){if((a[this.options.dataFields.hasChildren]||a[this.options.dataFields.items]&&\r\n0!=a[this.options.dataFields.items].length)&&!(b&&0!=a[this.options.dataFields.expanded]||!1===b&&0==a[this.options.dataFields.expanded])){var c=void 0!==b?b:!1!==a[this.options.dataFields.expanded]?!0:!1,d=void 0!=b?b:!c;if(0!=this.virtualMode){var f={cancel:!1,item:a};void 0!==b?b?this.beforeExpand.emit(f):this.beforeCollapse.emit(f):c?this.beforeCollapse.emit(f):this.beforeExpand.emit(f);1!=f.cancel&&(d!=a[this.options.dataFields.expanded]&&(a[this.options.dataFields.expanded]=d,this.updateCurrentLayout()),\r\nthis.isItemExpanded(a)?this.afterExpand.emit({item:a}):this.afterCollapse.emit({item:a}))}else if(c=this.getComponentFromItem(a))c.expanded=d}}else if(0!=this.virtualMode){d=this.getFullList();for(c=0;c<d.length;c++)d[c][this.options.dataFields.expanded]=b;this.updateCurrentLayout()}else(this.itemList=this.contentList.toArray())&&0<this.itemList.length&&this.itemList.forEach(function(a){a.toggle(b,!0)})};b.prototype.getFullList=function(){this.fullList.length=0;var a=this.dataService.getList();if(a)for(var b=\r\n0;b<a.length;b++)this.addChildItems(a[b],0,null,!0);return this.fullList};b.prototype.getItemFromComponent=function(a){return a&&a.data?a.data:this.items&&(this.itemList=this.contentList.toArray(),a=this.itemList.indexOf(a),0<=a&&a<this.items.length)?this.items[a]:null};b.prototype.getItemIndex=function(a){return this.itemList&&0<this.itemList.length?this.itemList.indexOf(a):-1};b.prototype.getItemParent=function(a){return this.dataService.getParent(a)};b.prototype.getList=function(a,b){switch(a){case \"current\":return this.currentList;\r\ncase \"selected\":return this.currentSelectedItems}return this.dataService.getList(b)};b.prototype.isChildOf=function(a,b){var c=!1;if(a&&b){var d=b[this.options.dataFields.items];if(d&&0<d.length)for(var f=0;f<d.length;f++){if(this.commonService.isEqual(a[this.options.dataFields.id],d[f][this.options.dataFields.id])){c=!0;break}else c=this.isChildOf(a,d[f]);if(c)break}}return c};b.prototype.isParentOf=function(a,b){var c=this.dataService.getParent(b);return a&&b&&c&&this.commonService.isEqual(a[this.options.dataFields.id],\r\nc[this.options.dataFields.id])?!0:!1};b.prototype.isThereChildren=function(){return this.isThereChildItems};b.prototype.isItemExpanded=function(a){return a?a[this.options.dataFields.expanded]||void 0===a[this.options.dataFields.expanded]?!0:!1:!0};b.prototype.isThereVisibleChildren=function(a){var b=!1;if(a&&(a=a[this.options.dataFields.items]))for(var e=0;e<a.length;e++)if(this.isItemAllowed(a[e])){b=!0;break}return b};b.prototype.invokeEvent=function(a,b){var c=!0;if(this.isEnabled&&b){var d={cancel:!1,\r\nitem:b};switch(a){case \"AFTER_COLLAPSE\":this.afterCollapse.emit({item:b});break;case \"AFTER_EXPAND\":this.afterExpand.emit({item:b});break;case \"BEFORE_COLLAPSE\":this.beforeCollapse.emit(d);c=!d.cancel;break;case \"BEFORE_EXPAND\":this.beforeExpand.emit(d),c=!d.cancel}}return c};b.prototype.invokeMethod=function(a,b){var c=!0;if(this.isEnabled&&b)switch(a){case \"CHANGE_EXPANDED\":this.changeExpanded(b.component);break;case \"SELECT_ITEM\":c=this.processSelection(b.event,b.item);break;case \"UPDATE_SELECTION\":this.updateSelection(b.event,\r\nb.item)}return c};b.prototype.changeExpanded=function(a){a&&a.data&&(a.data[this.options.dataFields.expanded]=a.expanded)};b.prototype.processLeftArrowKey=function(a,b){this.collapse(a.data);return null};b.prototype.processRightArrowKey=function(a,b){this.expand(a.data);return null};b.prototype.getContentSize=function(){return this.contentElem?{width:this.contentElem.nativeElement.offsetWidth,height:this.contentElem.nativeElement.offsetHeight}:{width:0,height:0}};b.prototype.getComponentFromItem=\r\nfunction(a){var b=null;if((this.itemList=this.contentList.toArray())&&0<this.itemList.length)for(var e=0;!b&&e<this.itemList.length;){b=this.itemList[e];if(this.getItemFromComponent(b)==a)break;else b=b.getComponentFromItem(a);e++}return b};b.prototype.updateBlockSize=function(){this.blockSize={width:this.contentElem.nativeElement.offsetWidth,height:this.contentElem.nativeElement.offsetHeight}};b.prototype.updateCurrentLayout=function(){var a=this;a.allowUpdate&&(a.resetLayout(),a.updateCurrentList(),\r\na.updateScrollItemList(),a.updateScrollSize(),a.updateTimer=setTimeout(function(){a.updateBlockSize();clearTimeout(a.updateTimer)},1))};b.prototype.getItemElemList=function(){return this.itemElems?this.itemElems.toArray():null};b.prototype.beginLoad=function(a){a&&0>this.options.loadItems.indexOf(a)&&this.options.loadItems.push(a)};b.prototype.endLoad=function(a){a=this.options.loadItems.indexOf(a);0<=a&&this.options.loadItems.splice(a,1)};b.prototype.isItemLoading=function(a){return 0<=this.options.loadItems.indexOf(a)?\r\n!0:!1};b.prototype.itemDblClickEvent=function(a,b){this.isEnabled&&this.toggle(b.data);a.stopPropagation()};b.prototype.scrollTo=function(a){if(0!=this.virtualMode&&a){this.suspendLayout();for(var b=this.getItemParent(a);null!=b;)this.expand(b),b=this.getItemParent(b);this.resumeLayout();var e=this,d=setTimeout(function(){var b=e.getItemCurrentIndex(a);0<=b&&(e.scrollPos({x:e.currentScrollPos.x,y:e.avgItemHeight*(b-Math.floor(e.visibleRange/2))}),e.updateLayout());clearTimeout(d)},150)}};b.prototype.clearComponentSelection=\r\nfunction(){this.contentList&&(this.itemList=this.contentList.toArray())&&0<this.itemList.length&&this.itemList.forEach(function(a){a.state&=~integralui_core_1.IntegralUIObjectState.selected;a.clearComponentSelection()})};b.prototype.updateItemStyle=function(a){a&&(a.style={general:[],expandBox:[],content:[]},a.style.general.push(this.itemClassName),a.style.general.push(this.options.currentStyle.item.general.normal),a.style.content.push(this.itemContentClassName),a.style.content.push(this.options.currentStyle.item.content.normal),\r\nthis.isItemEnabled(a.data)?this.isItemSelected(a.data)?(a.style.general.push(this.options.currentStyle.item.general.selected),a.style.content.push(this.options.currentStyle.item.content.selected)):this.isItemHovered(a.data)&&(a.style.general.push(this.options.currentStyle.item.general.hovered),a.style.content.push(this.options.currentStyle.item.content.hovered)):(a.style.general.push(this.options.currentStyle.item.general.disabled),a.style.content.push(this.options.currentStyle.item.content.disabled)),\r\na.data==this.currentFocusItem&&a.style.content.push(this.options.currentStyle.item.content.focused),(this.isThereChildItems||a.data[this.options.dataFields.hasChildren])&&a.style.expandBox.push(this.options.currentStyle.item.expandBox.general),a.data[this.options.dataFields.hasChildren]&&(this.isThereVisibleChildren(a.data)||!a.data[this.options.dataFields.items]||a.data[this.options.dataFields.items]&&0==a.data[this.options.dataFields.items].length)||this.isThereVisibleChildren(a.data))&&(this.isItemLoading(a.data)?\r\na.style.expandBox.push(this.options.currentStyle.item.expandBox.load):0!=a.data[this.options.dataFields.expanded]?a.style.expandBox.push(this.options.currentStyle.item.expandBox.expanded):a.style.expandBox.push(this.options.currentStyle.item.expandBox.collapsed))};b.prototype.getItemStyle=function(a){return a?{general:this.getItemGeneralStyle(a.general),expandBox:this.getItemExpandBoxStyle(a.expandBox),content:this.getItemContentStyle(a.content)}:this.getDefaultItemStyle()};b.prototype.getItemExpandBoxStyle=\r\nfunction(a){return this.commonService.isString(a)?a:a?{general:this.commonService.isFieldAvailable(a.disabled,this.expandBoxClassName),load:this.commonService.isFieldAvailable(a.focused,this.expandBoxClassName+\"-load\"),expanded:this.commonService.isFieldAvailable(a.normal,this.expandBoxClassName+\"-open\"),collapsed:this.commonService.isFieldAvailable(a.hovered,this.expandBoxClassName+\"-close\")}:this.getDefaultItemExpandBoxStyle()};b.prototype.getDefaultItemStyle=function(){return{general:this.getDefaultItemGeneralStyle(),\r\nexpandBox:this.getDefaultItemExpandBoxStyle(),content:this.getDefaultItemContentStyle()}};b.prototype.getDefaultItemExpandBoxStyle=function(){return{general:this.defaultStyle.item.expandBox.general,load:this.defaultStyle.item.expandBox.load,expanded:this.defaultStyle.item.expandBox.expanded,collapsed:this.defaultStyle.item.expandBox.collapsed}};b.prototype.resetRefresh=function(){this.refreshTimer&&clearTimeout(this.refreshTimer);this.refreshTimer=null};b.prototype.refresh=function(a){if(this.allowUpdate)if(this.resetRefresh(),\r\n0!=this.virtualMode)for(this.updateControlClass(),a=0;a<this.scrollItemList.length;a++)this.updateItemStyle(this.scrollItemList[a]);else{this.clearComponentSelection();for(a=0;a<this.currentSelectedItems.length;a++){var b=this.getComponentFromItem(this.currentSelectedItems[a]);b&&(b.state|=integralui_core_1.IntegralUIObjectState.selected)}if(this.contentList)for(this.itemList=this.contentList.toArray(),a=0;a<this.itemList.length;a++)this.itemList[a].refresh()}};return b}(integralui_base_list_1.IntegralUIBaseList);\r\n__decorate([core_1.ViewChildren(integralui_treeitem_1.IntegralUITreeItem),__metadata(\"design:type\",core_1.QueryList)],IntegralUITreeView.prototype,\"contentList\",void 0);__decorate([core_1.ViewChild(\"content\",{read:core_1.ViewContainerRef}),__metadata(\"design:type\",core_1.ViewContainerRef)],IntegralUITreeView.prototype,\"contentRef\",void 0);__decorate([core_1.ViewChild(\"content\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUITreeView.prototype,\"contentElem\",void 0);\r\n__decorate([core_1.ContentChild(core_1.TemplateRef),__metadata(\"design:type\",Object)],IntegralUITreeView.prototype,\"itemTemplate\",void 0);__decorate([core_1.ViewChildren(\"itemElem\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.QueryList)],IntegralUITreeView.prototype,\"itemElems\",void 0);__decorate([core_1.ViewChild(\"verScroll\"),__metadata(\"design:type\",integralui_scrollbar_1.IntegralUIScrollBar)],IntegralUITreeView.prototype,\"verScrollCmp\",void 0);\r\n__decorate([core_1.ViewChild(\"horScroll\"),__metadata(\"design:type\",integralui_scrollbar_1.IntegralUIScrollBar)],IntegralUITreeView.prototype,\"horScrollCmp\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Boolean)],IntegralUITreeView.prototype,\"autoExpand\",void 0);__decorate([core_1.Input(),__metadata(\"design:type\",Object),__metadata(\"design:paramtypes\",[Object])],IntegralUITreeView.prototype,\"dataFields\",null);\r\n__decorate([core_1.Input(),__metadata(\"design:type\",Number),__metadata(\"design:paramtypes\",[Number])],IntegralUITreeView.prototype,\"indent\",null);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITreeView.prototype,\"afterCollapse\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITreeView.prototype,\"afterExpand\",void 0);\r\n__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITreeView.prototype,\"beforeCollapse\",void 0);__decorate([core_1.Output(),__metadata(\"design:type\",core_1.EventEmitter)],IntegralUITreeView.prototype,\"beforeExpand\",void 0);\r\nIntegralUITreeView=__decorate([core_1.Component({selector:\"iui-treeview\",template:'\\n\\t\\t<div [ngClass]=\"getControlClass()\" (DOMMouseScroll)=\"processMouseWheel($event)\" (mousewheel)=\"processMouseWheel($event)\" (mouseenter)=\"onCtrlMouseEnter($event)\" (mouseleave)=\"onCtrlMouseLeave($event)\" (dragleave)=\"ctrlDragLeave($event)\" (dragover)=\"ctrlDragOver($event)\" (drop)=\"ctrlDragDrop($event)\" (scroll)=\"onScroll($event)\" [ngStyle]=\"{ overflow: virtualMode != false ? \\'hidden\\' : \\'auto\\' }\">\\n            <span [ngSwitch]=\"virtualMode\" #content>\\n                <span *ngSwitchCase=\"true\">\\n\\t                <ul  style=\"margin:0;padding:0;\" [ngStyle]=\"{ width: contentSize.width + \\'px\\', height: contentSize.height + \\'px\\' }\">\\n\\t\\t\\t\\t        <li [ngClass]=\"item.style.general\" *ngFor=\"let item of scrollItemList; let i = index\" [ngStyle]=\"{ \\'padding-left\\': item.indent + \\'px\\' }\" (mouseenter)=\"itemMouseEnter($event, item)\" (mouseleave)=\"itemMouseLeave($event, item)\" (mousedown)=\"itemMouseDown($event, item)\" (mouseup)=\"itemMouseUp($event, item)\" (dragover)=\"itemDragOver($event, item, i)\" (drop)=\"itemDragDrop($event, item)\" #itemElem>\\n\\t        \\t            <div [ngClass]=\"item.style.content\" tabindex=\"{{item.tabIndex}}\" [iuiFocus]=\"item.data == this.currentFocusItem\" (focus)=\"itemGotFocus(item)\" (blur)=\"itemLostFocus(item)\" (keydown)=\"itemKeyDown($event, item)\" (keypress)=\"itemKeyPress($event, item)\" (keyup)=\"itemKeyUp($event, item)\">\\n\\t\\t\\t\\t\\t\\t\\t\\t<span [ngClass]=\"item.style.expandBox\" (mousedown)=\"expandBoxClicked($event, item.data)\"></span>\\n\\t\\t\\t\\t\\t\\t\\t\\t<div draggable=\"true\" (dragstart)=\"itemDragStart($event, item)\" (click)=\"itemClickEvent($event, item)\" (dblclick)=\"itemDblClickEvent($event, item)\">\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<span [iuiTemplateOutlet]=\"itemTemplate\" [iuiTemplateOutletContext]=\"{$implicit: (item.data)}\"></span>\\n\\t\\t\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t        </li>\\n\\t                </ul>\\n\\t\\t            <iui-scrollbar *ngIf=\"isVerScrollVisible()\" [enabled]=\"enabled\" [value]=\"currentScrollPos.y\" [max]=\"maxScrollPos.y\" [largeChange]=\"scrollLargeChange.y\" [height]=\"scrollBarSize.height\" (valueChanged)=\"onVerticalScrollChanged($event)\" (scrollStart)=\"onVerticalScrollStart($event)\" (scrollEnd)=\"onVerticalScrollEnd($event)\" #verScroll></iui-scrollbar>\\n\\t\\t            <iui-scrollbar *ngIf=\"isHorScrollVisible()\" [enabled]=\"enabled\" [orientation]=\"horScrollOrientation\" [value]=\"currentScrollPos.x\" [max]=\"maxScrollPos.x\" [width]=\"scrollBarSize.width\" (valueChanged)=\"onHorizontalScrollChanged($event)\" (scrollStart)=\"onHorizontalScrollStart($event)\" (scrollEnd)=\"onHorizontalScrollEnd($event)\" #horScroll></iui-scrollbar>\\n\\t\\t            <div *ngIf=\"isVerScrollVisible() && isHorScrollVisible()\" style=\"background:#f5f5f5;position:absolute;right:0;bottom:0;width:16px;height:16px;\"></div>\\n\\t            </span>\\n                <span *ngSwitchDefault>\\n\\t                <ul style=\"margin:0;padding:0;\">\\n\\t\\t\\t            <iui-treeitem *ngFor=\"let item of items\" [enabled]=\"item.enabled\" [text]=\"item.text\" [templateRef]=\"itemTemplate\" [data]=\"item\" [items]=\"item.items\">\\n\\t\\t\\t\\t\\t\\t</iui-treeitem> \\n\\t                </ul>\\n\\t            </span>\\n            </span>\\n\\t\\t</div>\\n\\t',inputs:\"allowDrag allowDrop allowFilter allowFocus appRef controlStyle data enabled items name selectedItem selectionMode sorting state virtualMode\".split(\" \"),\r\noutputs:\"afterSelect beforeEdit beforeSelect change clear dragDrop dragOver itemAdding itemAdded itemRemoving itemRemoved keyDown keyPress keyUp loadComplete scrollPosChanged selectionChanged updateComplete\".split(\" \"),providers:[integralui_core_1.IntegralUIBaseService,integralui_data_service_1.IntegralUIDataService]}),__metadata(\"design:paramtypes\",[integralui_data_service_1.IntegralUIDataService,integralui_dragdrop_service_1.IntegralUIDragDropService,core_1.ElementRef,core_1.Renderer,integralui_common_service_1.IntegralUICommonService,\r\nintegralui_filter_service_1.IntegralUIFilterService,core_1.ComponentFactoryResolver,integralui_core_1.IntegralUIBaseService])],IntegralUITreeView);exports.IntegralUITreeView=IntegralUITreeView;","import 'core-js/es6';\nimport 'core-js/es7/reflect';\nimport 'zone.js/dist/zone';\n\nif (process.env.ENV == 'production') {\n  // pass\n} else {\n  Error.stackTraceLimit = Infinity;\n  require('zone.js/dist/long-stack-trace-zone');\n}\n\n\n// css (for webpack only)\nimport './assets/fontello/css/fontello.css';\n\nimport './assets/scss/index.scss'; // customized bootstrap\n\n// js \n// import 'jquery';\nimport '@angular/core';\nimport '@angular/common';\nimport '@angular/platform-browser';\nimport '@angular/platform-browser-dynamic';\nimport '@angular/router';\nimport '@angular/http';\nimport '@angular/forms';\n\nimport { Observable } from 'rxjs/Observable';\nimport { ReplaySubject } from 'rxjs/ReplaySubject';\nimport 'rxjs/add/observable/throw';\nimport 'rxjs/add/observable/interval';\nimport 'rxjs/add/observable/combineLatest';\nimport 'rxjs/add/operator/share';\nimport 'rxjs/add/operator/catch';\nimport 'rxjs/add/operator/filter';\nimport 'rxjs/add/operator/startWith';\nimport 'rxjs/add/operator/take';\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/mergeMap';\nimport 'rxjs/add/operator/debounceTime';\nimport 'rxjs/add/operator/first';\n\nimport 'bootstrap';\nimport 'ng2-dnd';\n\n// css (for webpack only)\nimport './assets/css/app.css';\nimport './assets/css/aui.css'; // temporal / drop asap\n\n// js\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\nimport { AppModule } from './app/app.module';\nimport { EnvService } from './app/base/services';\n\nif (process.env.MOCK) { // see \"--env.mock\" cli option\n  require('lokijs'); // to put in vendor bundle only\n}\n\n// experimental\nif (EnvService.isMicrosoft) {\n  window.onload = () => {\n    window['VSS'].init();\n    window['VSS'].ready(() => {\n      platformBrowserDynamic().bootstrapModule(AppModule);\n    });\n  };\n}\n\nif (EnvService.isAtlassian) {\n  window.onload = () => {\n    platformBrowserDynamic().bootstrapModule(AppModule);\n  };\n}\n","\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require(\"@angular/core\");\r\nvar integralui_common_service_1 = require(\"../services/integralui.common.service\");\r\n// ---------------------------------------------------------------------------------------\r\n// IntegralUIDraggable Directive\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIDraggable = (function () {\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUIDraggable(elemRef, elemRenderer) {\r\n        this.elemRef = elemRef;\r\n        this.elemRenderer = elemRenderer;\r\n    }\r\n    IntegralUIDraggable.prototype.ngAfterViewInit = function () {\r\n        if (this.settings)\r\n            this.elemRenderer.setElementAttribute(this.elemRef.nativeElement, \"draggable\", \"true\");\r\n    };\r\n    return IntegralUIDraggable;\r\n}());\r\n__decorate([\r\n    core_1.Input('iuiDraggable'),\r\n    __metadata(\"design:type\", Boolean)\r\n], IntegralUIDraggable.prototype, \"settings\", void 0);\r\nIntegralUIDraggable = __decorate([\r\n    core_1.Directive({\r\n        selector: '[iuiDraggable]'\r\n    }),\r\n    __metadata(\"design:paramtypes\", [core_1.ElementRef,\r\n        core_1.Renderer])\r\n], IntegralUIDraggable);\r\nexports.IntegralUIDraggable = IntegralUIDraggable;\r\n// ---------------------------------------------------------------------------------------\r\n// IntegralUITemplate Directive\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUITemplate = (function () {\r\n    function IntegralUITemplate() {\r\n    }\r\n    IntegralUITemplate.prototype.getTemplate = function () {\r\n        return this.template;\r\n    };\r\n    return IntegralUITemplate;\r\n}());\r\n__decorate([\r\n    core_1.Input('iuiTemplate'),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUITemplate.prototype, \"settings\", void 0);\r\n__decorate([\r\n    core_1.ContentChild(core_1.TemplateRef),\r\n    __metadata(\"design:type\", core_1.TemplateRef)\r\n], IntegralUITemplate.prototype, \"template\", void 0);\r\nIntegralUITemplate = __decorate([\r\n    core_1.Directive({\r\n        selector: '[iuiTemplate]'\r\n    }),\r\n    __metadata(\"design:paramtypes\", [])\r\n], IntegralUITemplate);\r\nexports.IntegralUITemplate = IntegralUITemplate;\r\n// ---------------------------------------------------------------------------------------\r\n// IntegralUITemplateOutlet Directive\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUITemplateOutlet = (function () {\r\n    function IntegralUITemplateOutlet(containerRef) {\r\n        this.containerRef = containerRef;\r\n    }\r\n    IntegralUITemplateOutlet.prototype.ngOnChanges = function (changes) {\r\n        this.removeView();\r\n        this.createView();\r\n    };\r\n    IntegralUITemplateOutlet.prototype.ngOnDestroy = function () {\r\n        this.removeView();\r\n    };\r\n    IntegralUITemplateOutlet.prototype.createView = function () {\r\n        if (this.iuiTemplateOutlet)\r\n            this.viewRef = this.containerRef.createEmbeddedView(this.iuiTemplateOutlet, this.iuiTemplateOutletContext);\r\n    };\r\n    IntegralUITemplateOutlet.prototype.removeView = function () {\r\n        if (this.viewRef)\r\n            this.containerRef.remove(this.containerRef.indexOf(this.viewRef));\r\n    };\r\n    return IntegralUITemplateOutlet;\r\n}());\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUITemplateOutlet.prototype, \"iuiTemplateOutletContext\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", core_1.TemplateRef)\r\n], IntegralUITemplateOutlet.prototype, \"iuiTemplateOutlet\", void 0);\r\nIntegralUITemplateOutlet = __decorate([\r\n    core_1.Directive({\r\n        selector: '[iuiTemplateOutlet]'\r\n    }),\r\n    __metadata(\"design:paramtypes\", [core_1.ViewContainerRef])\r\n], IntegralUITemplateOutlet);\r\nexports.IntegralUITemplateOutlet = IntegralUITemplateOutlet;\r\n// ---------------------------------------------------------------------------------------\r\n// Anchor Styles Enumeration\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIAnchorStyle;\r\n(function (IntegralUIAnchorStyle) {\r\n    IntegralUIAnchorStyle[IntegralUIAnchorStyle[\"None\"] = 0] = \"None\";\r\n    IntegralUIAnchorStyle[IntegralUIAnchorStyle[\"Top\"] = 1] = \"Top\";\r\n    IntegralUIAnchorStyle[IntegralUIAnchorStyle[\"Right\"] = 2] = \"Right\";\r\n    IntegralUIAnchorStyle[IntegralUIAnchorStyle[\"Bottom\"] = 4] = \"Bottom\";\r\n    IntegralUIAnchorStyle[IntegralUIAnchorStyle[\"Left\"] = 8] = \"Left\";\r\n})(IntegralUIAnchorStyle = exports.IntegralUIAnchorStyle || (exports.IntegralUIAnchorStyle = {}));\r\n// ---------------------------------------------------------------------------------------\r\n// CheckState Enumeration\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUICheckState;\r\n(function (IntegralUICheckState) {\r\n    IntegralUICheckState[IntegralUICheckState[\"Unchecked\"] = 0] = \"Unchecked\";\r\n    IntegralUICheckState[IntegralUICheckState[\"Indeterminate\"] = 1] = \"Indeterminate\";\r\n    IntegralUICheckState[IntegralUICheckState[\"Checked\"] = 2] = \"Checked\";\r\n})(IntegralUICheckState = exports.IntegralUICheckState || (exports.IntegralUICheckState = {}));\r\n// ---------------------------------------------------------------------------------------\r\n// Anchor Styles Enumeration\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIDirection;\r\n(function (IntegralUIDirection) {\r\n    IntegralUIDirection[IntegralUIDirection[\"None\"] = 0] = \"None\";\r\n    IntegralUIDirection[IntegralUIDirection[\"Above\"] = 1] = \"Above\";\r\n    IntegralUIDirection[IntegralUIDirection[\"Right\"] = 2] = \"Right\";\r\n    IntegralUIDirection[IntegralUIDirection[\"Below\"] = 4] = \"Below\";\r\n    IntegralUIDirection[IntegralUIDirection[\"Left\"] = 8] = \"Left\";\r\n})(IntegralUIDirection = exports.IntegralUIDirection || (exports.IntegralUIDirection = {}));\r\n// ---------------------------------------------------------------------------------------\r\n// Numeric DisplayMode Enumeration\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUINumericDisplayMode;\r\n(function (IntegralUINumericDisplayMode) {\r\n    IntegralUINumericDisplayMode[IntegralUINumericDisplayMode[\"InBound\"] = 0] = \"InBound\";\r\n    IntegralUINumericDisplayMode[IntegralUINumericDisplayMode[\"LeftRight\"] = 1] = \"LeftRight\";\r\n    IntegralUINumericDisplayMode[IntegralUINumericDisplayMode[\"UpDown\"] = 2] = \"UpDown\";\r\n})(IntegralUINumericDisplayMode = exports.IntegralUINumericDisplayMode || (exports.IntegralUINumericDisplayMode = {}));\r\n// ---------------------------------------------------------------------------------------\r\n// Item Display Mode Enumeration\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIItemDisplayMode;\r\n(function (IntegralUIItemDisplayMode) {\r\n    IntegralUIItemDisplayMode[IntegralUIItemDisplayMode[\"Partial\"] = 0] = \"Partial\";\r\n    IntegralUIItemDisplayMode[IntegralUIItemDisplayMode[\"Full\"] = 1] = \"Full\";\r\n})(IntegralUIItemDisplayMode = exports.IntegralUIItemDisplayMode || (exports.IntegralUIItemDisplayMode = {}));\r\n// ---------------------------------------------------------------------------------------\r\n// Object State Enumeration\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIObjectState;\r\n(function (IntegralUIObjectState) {\r\n    IntegralUIObjectState[IntegralUIObjectState[\"normal\"] = 0] = \"normal\";\r\n    IntegralUIObjectState[IntegralUIObjectState[\"hovered\"] = 1] = \"hovered\";\r\n    IntegralUIObjectState[IntegralUIObjectState[\"selected\"] = 2] = \"selected\";\r\n    IntegralUIObjectState[IntegralUIObjectState[\"focused\"] = 4] = \"focused\";\r\n    IntegralUIObjectState[IntegralUIObjectState[\"disabled\"] = 8] = \"disabled\";\r\n})(IntegralUIObjectState = exports.IntegralUIObjectState || (exports.IntegralUIObjectState = {}));\r\n// ---------------------------------------------------------------------------------------\r\n// Selection Mode Enumeration\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIOrientation;\r\n(function (IntegralUIOrientation) {\r\n    IntegralUIOrientation[IntegralUIOrientation[\"Horizontal\"] = 0] = \"Horizontal\";\r\n    IntegralUIOrientation[IntegralUIOrientation[\"Vertical\"] = 1] = \"Vertical\";\r\n})(IntegralUIOrientation = exports.IntegralUIOrientation || (exports.IntegralUIOrientation = {}));\r\n// ---------------------------------------------------------------------------------------\r\n// Increment Mode Enumeration\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIIncrementMode;\r\n(function (IntegralUIIncrementMode) {\r\n    IntegralUIIncrementMode[IntegralUIIncrementMode[\"Free\"] = 0] = \"Free\";\r\n    IntegralUIIncrementMode[IntegralUIIncrementMode[\"Partial\"] = 1] = \"Partial\";\r\n    IntegralUIIncrementMode[IntegralUIIncrementMode[\"Full\"] = 2] = \"Full\";\r\n})(IntegralUIIncrementMode = exports.IntegralUIIncrementMode || (exports.IntegralUIIncrementMode = {}));\r\n// ---------------------------------------------------------------------------------------\r\n// Placement Enumeration\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIPlacement;\r\n(function (IntegralUIPlacement) {\r\n    IntegralUIPlacement[IntegralUIPlacement[\"Top\"] = 0] = \"Top\";\r\n    IntegralUIPlacement[IntegralUIPlacement[\"Right\"] = 1] = \"Right\";\r\n    IntegralUIPlacement[IntegralUIPlacement[\"Bottom\"] = 2] = \"Bottom\";\r\n    IntegralUIPlacement[IntegralUIPlacement[\"Left\"] = 3] = \"Left\";\r\n})(IntegralUIPlacement = exports.IntegralUIPlacement || (exports.IntegralUIPlacement = {}));\r\n// ---------------------------------------------------------------------------------------\r\n// Scroll Mode Enumeration\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIScrollMode;\r\n(function (IntegralUIScrollMode) {\r\n    IntegralUIScrollMode[IntegralUIScrollMode[\"Horizontal\"] = 0] = \"Horizontal\";\r\n    IntegralUIScrollMode[IntegralUIScrollMode[\"Vertical\"] = 1] = \"Vertical\";\r\n})(IntegralUIScrollMode = exports.IntegralUIScrollMode || (exports.IntegralUIScrollMode = {}));\r\n// ---------------------------------------------------------------------------------------\r\n// Selection Mode Enumeration\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUISelectionMode;\r\n(function (IntegralUISelectionMode) {\r\n    IntegralUISelectionMode[IntegralUISelectionMode[\"None\"] = 0] = \"None\";\r\n    IntegralUISelectionMode[IntegralUISelectionMode[\"One\"] = 1] = \"One\";\r\n    IntegralUISelectionMode[IntegralUISelectionMode[\"MultiSimple\"] = 2] = \"MultiSimple\";\r\n    IntegralUISelectionMode[IntegralUISelectionMode[\"MultiExtended\"] = 3] = \"MultiExtended\";\r\n})(IntegralUISelectionMode = exports.IntegralUISelectionMode || (exports.IntegralUISelectionMode = {}));\r\n// ---------------------------------------------------------------------------------------\r\n// SortOrder Enumeration\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUISortOrder;\r\n(function (IntegralUISortOrder) {\r\n    IntegralUISortOrder[IntegralUISortOrder[\"None\"] = 0] = \"None\";\r\n    IntegralUISortOrder[IntegralUISortOrder[\"Ascending\"] = 1] = \"Ascending\";\r\n    IntegralUISortOrder[IntegralUISortOrder[\"Descending\"] = 2] = \"Descending\";\r\n})(IntegralUISortOrder = exports.IntegralUISortOrder || (exports.IntegralUISortOrder = {}));\r\n// ---------------------------------------------------------------------------------------\r\n// TabStripPlacement Enumeration\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUITabStripPlacement;\r\n(function (IntegralUITabStripPlacement) {\r\n    IntegralUITabStripPlacement[IntegralUITabStripPlacement[\"Top\"] = 0] = \"Top\";\r\n    IntegralUITabStripPlacement[IntegralUITabStripPlacement[\"Right\"] = 1] = \"Right\";\r\n    IntegralUITabStripPlacement[IntegralUITabStripPlacement[\"Middle\"] = 2] = \"Middle\";\r\n    IntegralUITabStripPlacement[IntegralUITabStripPlacement[\"Bottom\"] = 3] = \"Bottom\";\r\n    IntegralUITabStripPlacement[IntegralUITabStripPlacement[\"Left\"] = 4] = \"Left\";\r\n})(IntegralUITabStripPlacement = exports.IntegralUITabStripPlacement || (exports.IntegralUITabStripPlacement = {}));\r\n// ---------------------------------------------------------------------------------------\r\n// Visibility Enumeration\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIVisibility;\r\n(function (IntegralUIVisibility) {\r\n    IntegralUIVisibility[IntegralUIVisibility[\"None\"] = 0] = \"None\";\r\n    IntegralUIVisibility[IntegralUIVisibility[\"Hover\"] = 1] = \"Hover\";\r\n    IntegralUIVisibility[IntegralUIVisibility[\"Click\"] = 2] = \"Click\";\r\n    IntegralUIVisibility[IntegralUIVisibility[\"Always\"] = 3] = \"Always\";\r\n})(IntegralUIVisibility = exports.IntegralUIVisibility || (exports.IntegralUIVisibility = {}));\r\n// ---------------------------------------------------------------------------------------\r\n// Base Component\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIBaseComponent = (function () {\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUIBaseComponent(commonService) {\r\n        this.commonService = commonService;\r\n        // Variables -------------------------------------------------------------------------\r\n        // General\r\n        this.ctrlState = IntegralUIObjectState.normal;\r\n        this.isEnabled = true;\r\n        this.options = {};\r\n        // Style\r\n        this.generalClassName = '';\r\n        this.defaultStyle = {};\r\n        this.ctrlClass = [];\r\n        // Events ----------------------------------------------------------------------------\r\n        this.styleChanged = new core_1.EventEmitter();\r\n        this.stateChanged = new core_1.EventEmitter();\r\n        this.options = {\r\n            currentStyle: null\r\n        };\r\n    }\r\n    Object.defineProperty(IntegralUIBaseComponent.prototype, \"enabled\", {\r\n        get: function () {\r\n            return this.isEnabled;\r\n        },\r\n        set: function (value) {\r\n            if (value != undefined && this.isEnabled != value) {\r\n                this.isEnabled = value;\r\n                if (this.isEnabled)\r\n                    this.state &= ~IntegralUIObjectState.disabled;\r\n                else\r\n                    this.state |= IntegralUIObjectState.disabled;\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(IntegralUIBaseComponent.prototype, \"state\", {\r\n        get: function () {\r\n            return this.ctrlState;\r\n        },\r\n        set: function (value) {\r\n            if (this.ctrlState != value) {\r\n                this.ctrlState = value;\r\n                this.updateControlClass();\r\n                this.processStateChanged();\r\n                this.stateChanged.emit(this);\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    IntegralUIBaseComponent.prototype.ngOnInit = function () {\r\n        this.generalClassName = \"iui-control\";\r\n        this.initStyle();\r\n    };\r\n    IntegralUIBaseComponent.prototype.initStyle = function () {\r\n        this.defaultStyle = {\r\n            general: {\r\n                disabled: this.generalClassName + '-disabled',\r\n                focused: this.generalClassName + '-focused',\r\n                normal: this.generalClassName,\r\n                hovered: this.generalClassName + '-hovered',\r\n                selected: this.generalClassName + '-selected'\r\n            }\r\n        };\r\n        this.updateStyle(this.controlStyle);\r\n        this.updateControlClass();\r\n    };\r\n    // General ---------------------------------------------------------------------------\r\n    IntegralUIBaseComponent.prototype.processStateChanged = function () { };\r\n    // Style -----------------------------------------------------------------------------\r\n    IntegralUIBaseComponent.prototype.updateControlClass = function () {\r\n        this.ctrlClass.length = 0;\r\n        this.ctrlClass.push(this.generalClassName);\r\n        if (this.options.currentStyle) {\r\n            this.ctrlClass.push(this.options.currentStyle.general.normal);\r\n            if (this.state & IntegralUIObjectState.disabled)\r\n                this.ctrlClass.push(this.options.currentStyle.general.disabled);\r\n            else if (this.state & IntegralUIObjectState.focused)\r\n                this.ctrlClass.push(this.options.currentStyle.general.focused);\r\n            else if (this.state & IntegralUIObjectState.selected)\r\n                this.ctrlClass.push(this.options.currentStyle.general.selected);\r\n            else if (this.state & IntegralUIObjectState.hovered)\r\n                this.ctrlClass.push(this.options.currentStyle.general.hovered);\r\n        }\r\n    };\r\n    IntegralUIBaseComponent.prototype.getControlClass = function () {\r\n        return this.ctrlClass;\r\n    };\r\n    IntegralUIBaseComponent.prototype.getDefaultStyle = function () {\r\n        return {\r\n            general: this.getDefaultGeneralStyle()\r\n        };\r\n    };\r\n    IntegralUIBaseComponent.prototype.getDefaultGeneralStyle = function () {\r\n        return {\r\n            disabled: this.defaultStyle.general.disabled,\r\n            focused: this.defaultStyle.general.focused,\r\n            hovered: this.defaultStyle.general.hovered,\r\n            normal: this.defaultStyle.general.normal,\r\n            selected: this.defaultStyle.general.selected\r\n        };\r\n    };\r\n    IntegralUIBaseComponent.prototype.getGeneralStyle = function (value) {\r\n        if (this.commonService) {\r\n            if (this.commonService.isString(value))\r\n                return value;\r\n            else if (value)\r\n                return {\r\n                    disabled: this.commonService.isFieldAvailable(value.disabled, this.generalClassName + '-disabled'),\r\n                    focused: this.commonService.isFieldAvailable(value.focused, this.generalClassName + '-focused'),\r\n                    hovered: this.commonService.isFieldAvailable(value.hovered, this.generalClassName + '-hovered'),\r\n                    normal: this.commonService.isFieldAvailable(value.normal, this.generalClassName),\r\n                    selected: this.commonService.isFieldAvailable(value.selected, this.generalClassName + '-selected')\r\n                };\r\n        }\r\n        return this.getDefaultGeneralStyle();\r\n    };\r\n    IntegralUIBaseComponent.prototype.updateStyle = function (value) {\r\n        if (value)\r\n            this.options.currentStyle = {\r\n                general: this.getGeneralStyle(value.general)\r\n            };\r\n        else\r\n            this.options.currentStyle = this.getDefaultStyle();\r\n    };\r\n    return IntegralUIBaseComponent;\r\n}());\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUIBaseComponent.prototype, \"controlStyle\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUIBaseComponent.prototype, \"data\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", String)\r\n], IntegralUIBaseComponent.prototype, \"name\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean),\r\n    __metadata(\"design:paramtypes\", [Boolean])\r\n], IntegralUIBaseComponent.prototype, \"enabled\", null);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Number),\r\n    __metadata(\"design:paramtypes\", [Number])\r\n], IntegralUIBaseComponent.prototype, \"state\", null);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseComponent.prototype, \"styleChanged\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseComponent.prototype, \"stateChanged\", void 0);\r\nIntegralUIBaseComponent = __decorate([\r\n    core_1.Component({\r\n        selector: 'iui-base',\r\n        template: ''\r\n    }),\r\n    __metadata(\"design:paramtypes\", [integralui_common_service_1.IntegralUICommonService])\r\n], IntegralUIBaseComponent);\r\nexports.IntegralUIBaseComponent = IntegralUIBaseComponent;\r\n// ---------------------------------------------------------------------------------------\r\n// Base Service\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIBaseService = (function () {\r\n    // Initialization ----------------------------------------------------------------\r\n    function IntegralUIBaseService() {\r\n        this.componentRef = null;\r\n    }\r\n    // Methods -----------------------------------------------------------------------\r\n    IntegralUIBaseService.prototype.getComponent = function () {\r\n        return this.componentRef;\r\n    };\r\n    IntegralUIBaseService.prototype.setComponent = function (ref) {\r\n        this.componentRef = ref;\r\n    };\r\n    return IntegralUIBaseService;\r\n}());\r\nIntegralUIBaseService = __decorate([\r\n    core_1.Injectable(),\r\n    __metadata(\"design:paramtypes\", [])\r\n], IntegralUIBaseService);\r\nexports.IntegralUIBaseService = IntegralUIBaseService;\r\n// ---------------------------------------------------------------------------------------\r\n// Drag Window Component\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIDragWindow = (function () {\r\n    function IntegralUIDragWindow() {\r\n        // Properties ------------------------------------------------------------------------\r\n        this.iconClass = '';\r\n        this.position = { x: 0, y: 0 };\r\n        this.size = { width: 0, height: 0 };\r\n        this.title = '';\r\n        this.display = 'block';\r\n    }\r\n    // Layout ----------------------------------------------------------------------------\r\n    IntegralUIDragWindow.prototype.updatePos = function (value) {\r\n        if (value) {\r\n            if (value.class)\r\n                this.iconClass = value.class;\r\n            this.position = { x: value.left, y: value.top };\r\n            if (value.text)\r\n                this.title = value.text;\r\n        }\r\n    };\r\n    return IntegralUIDragWindow;\r\n}());\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", String)\r\n], IntegralUIDragWindow.prototype, \"iconClass\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUIDragWindow.prototype, \"position\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUIDragWindow.prototype, \"size\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", String)\r\n], IntegralUIDragWindow.prototype, \"title\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", String)\r\n], IntegralUIDragWindow.prototype, \"display\", void 0);\r\nIntegralUIDragWindow = __decorate([\r\n    core_1.Component({\r\n        selector: 'iui-dragwin',\r\n        template: \"\\n        <div class=\\\"iui-dragwin\\\" data-element=\\\"drag-window\\\" [ngStyle]=\\\"{ 'display': display, 'top': position.y + 'px', 'left': position.x + 'px' }\\\">\\n            <span [ngClass]=\\\"iconClass\\\"></span>\\n            <span class='iui-dragwin-title'>{{title}}</span>\\n        </div>\\n    \"\r\n    })\r\n], IntegralUIDragWindow);\r\nexports.IntegralUIDragWindow = IntegralUIDragWindow;\r\nvar IntegralUIBaseValueComponent = (function (_super) {\r\n    __extends(IntegralUIBaseValueComponent, _super);\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUIBaseValueComponent(elemRef, commonService) {\r\n        var _this = _super.call(this, commonService) || this;\r\n        _this.elemRef = elemRef;\r\n        _this.commonService = commonService;\r\n        _this.onChange = function (_) { };\r\n        _this.onTouched = function () { };\r\n        // Layout \r\n        _this.clientRect = { width: 0, height: 0 };\r\n        _this.prevClientRect = { width: 0, height: 0 };\r\n        _this.contentClass = [];\r\n        /*@Input()\r\n        set value(val: number){\r\n            if (this.currentValue != val && val >= 0){\r\n                this.currentValue = val;\r\n            }\r\n        }\r\n        get value(): number {\r\n            return this.currentValue;\r\n        }*/\r\n        // Events ----------------------------------------------------------------------------\r\n        _this.valueChanged = new core_1.EventEmitter();\r\n        return _this;\r\n    }\r\n    Object.defineProperty(IntegralUIBaseValueComponent.prototype, \"value\", {\r\n        //_value: any = '';\r\n        get: function () { return this.currentValue; },\r\n        set: function (val) {\r\n            if (val !== this.currentValue) {\r\n                this.currentValue = val;\r\n                this.onChange(val);\r\n                this.processValueChange();\r\n                this.valueChanged.emit({ value: this.currentValue });\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    ;\r\n    IntegralUIBaseValueComponent.prototype.writeValue = function (val) {\r\n        this.value = val;\r\n    };\r\n    IntegralUIBaseValueComponent.prototype.registerOnChange = function (fn) { this.onChange = fn; };\r\n    IntegralUIBaseValueComponent.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\r\n    IntegralUIBaseValueComponent.prototype.processValueChange = function () { };\r\n    IntegralUIBaseValueComponent.prototype.ngOnInit = function () {\r\n        this.generalClassName = \"iui-common\";\r\n        this.contentClassName = this.generalClassName + \"-content\";\r\n        this.initStyle();\r\n    };\r\n    IntegralUIBaseValueComponent.prototype.initStyle = function () {\r\n        this.defaultStyle = {\r\n            general: {\r\n                disabled: this.generalClassName + '-disabled',\r\n                focused: this.generalClassName + '-focused',\r\n                normal: this.generalClassName,\r\n                hovered: this.generalClassName + '-hovered',\r\n                selected: this.generalClassName + '-selected'\r\n            },\r\n            content: {\r\n                disabled: this.contentClassName + '-disabled',\r\n                focused: this.contentClassName + '-focused',\r\n                normal: this.contentClassName,\r\n                hovered: this.contentClassName + '-hovered',\r\n                selected: this.contentClassName + '-selected'\r\n            }\r\n        };\r\n        this.updateStyle(this.controlStyle);\r\n        this.updateControlClass();\r\n        this.updateContentClass();\r\n    };\r\n    // Layout ----------------------------------------------------------------------------\r\n    IntegralUIBaseValueComponent.prototype.updateLayout = function () {\r\n        var self = this;\r\n        var layoutTimer = setTimeout(function () {\r\n            self.clientRect = {\r\n                width: self.elemRef.nativeElement.firstElementChild.clientWidth,\r\n                height: self.elemRef.nativeElement.firstElementChild.clientHeight\r\n            };\r\n            clearTimeout(layoutTimer);\r\n        }, 1);\r\n    };\r\n    // Style -----------------------------------------------------------------------------\r\n    IntegralUIBaseValueComponent.prototype.updateContentClass = function () {\r\n        this.contentClass.length = 0;\r\n        this.contentClass.push(this.contentClassName);\r\n        if (this.options.currentStyle) {\r\n            this.contentClass.push(this.options.currentStyle.content.normal);\r\n            if (this.state & IntegralUIObjectState.disabled)\r\n                this.contentClass.push(this.options.currentStyle.content.disabled);\r\n            else if (this.state & IntegralUIObjectState.focused)\r\n                this.contentClass.push(this.options.currentStyle.content.focused);\r\n            else if (this.state & IntegralUIObjectState.selected)\r\n                this.contentClass.push(this.options.currentStyle.content.selected);\r\n            else if (this.state & IntegralUIObjectState.hovered)\r\n                this.contentClass.push(this.options.currentStyle.content.hovered);\r\n        }\r\n    };\r\n    IntegralUIBaseValueComponent.prototype.getContentClass = function () {\r\n        return this.contentClass;\r\n    };\r\n    IntegralUIBaseValueComponent.prototype.getContentStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                disabled: this.commonService.isFieldAvailable(value.disabled, this.contentClassName + '-disabled'),\r\n                focused: this.commonService.isFieldAvailable(value.focused, this.contentClassName + '-focused'),\r\n                hovered: this.commonService.isFieldAvailable(value.hovered, this.contentClassName + '-hovered'),\r\n                normal: this.commonService.isFieldAvailable(value.normal, this.contentClassName),\r\n                selected: this.commonService.isFieldAvailable(value.selected, this.contentClassName + '-selected')\r\n            };\r\n        else {\r\n            return {\r\n                disabled: this.defaultStyle.content.disabled,\r\n                focused: this.defaultStyle.content.focused,\r\n                hovered: this.defaultStyle.content.hovered,\r\n                normal: this.defaultStyle.content.normal,\r\n                selected: this.defaultStyle.content.selected\r\n            };\r\n        }\r\n    };\r\n    IntegralUIBaseValueComponent.prototype.updateStyle = function (value) {\r\n        if (value)\r\n            this.options.currentStyle = {\r\n                general: this.getGeneralStyle(value.general),\r\n                content: this.getContentStyle(value.content)\r\n            };\r\n        else\r\n            this.options.currentStyle = {\r\n                general: {\r\n                    disabled: this.defaultStyle.general.disabled,\r\n                    focused: this.defaultStyle.general.focused,\r\n                    hovered: this.defaultStyle.general.hovered,\r\n                    normal: this.defaultStyle.general.normal,\r\n                    selected: this.defaultStyle.general.selected\r\n                },\r\n                content: {\r\n                    disabled: this.defaultStyle.content.disabled,\r\n                    focused: this.defaultStyle.content.focused,\r\n                    hovered: this.defaultStyle.content.hovered,\r\n                    normal: this.defaultStyle.content.normal,\r\n                    selected: this.defaultStyle.content.selected\r\n                }\r\n            };\r\n    };\r\n    return IntegralUIBaseValueComponent;\r\n}(IntegralUIBaseComponent));\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Boolean)\r\n], IntegralUIBaseValueComponent.prototype, \"autoUpdate\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIBaseValueComponent.prototype, \"valueChanged\", void 0);\r\nIntegralUIBaseValueComponent = __decorate([\r\n    core_1.Component({\r\n        selector: 'iui-common',\r\n        template: '',\r\n        inputs: ['controlStyle', 'data', 'enabled', 'name', 'state'],\r\n        encapsulation: core_1.ViewEncapsulation.None\r\n    }),\r\n    __metadata(\"design:paramtypes\", [core_1.ElementRef,\r\n        integralui_common_service_1.IntegralUICommonService])\r\n], IntegralUIBaseValueComponent);\r\nexports.IntegralUIBaseValueComponent = IntegralUIBaseValueComponent;\r\n// ---------------------------------------------------------------------------------------\r\n// Item Component\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIItem = (function (_super) {\r\n    __extends(IntegralUIItem, _super);\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUIItem(elemRef, commonService) {\r\n        var _this = _super.call(this, commonService) || this;\r\n        _this.elemRef = elemRef;\r\n        _this.commonService = commonService;\r\n        // Variables -------------------------------------------------------------------------\r\n        // Layout\r\n        _this.itemPos = { top: 0, left: 0 };\r\n        _this.positionType = 'static';\r\n        _this.contentClass = [];\r\n        _this.iconSize = { width: 16, height: 16 };\r\n        // Events ----------------------------------------------------------------------------\r\n        _this.click = new core_1.EventEmitter();\r\n        _this.mouseDown = new core_1.EventEmitter();\r\n        _this.mouseUp = new core_1.EventEmitter();\r\n        _this.mouseEnter = new core_1.EventEmitter();\r\n        _this.mouseMove = new core_1.EventEmitter();\r\n        _this.mouseLeave = new core_1.EventEmitter();\r\n        return _this;\r\n    }\r\n    IntegralUIItem.prototype.ngOnInit = function () {\r\n        this.generalClassName = \"iui-item\";\r\n        this.contentClassName = this.generalClassName + \"-content\";\r\n        this.initStyle();\r\n    };\r\n    IntegralUIItem.prototype.initStyle = function () {\r\n        this.defaultStyle = {\r\n            general: {\r\n                disabled: this.generalClassName + '-disabled',\r\n                focused: this.generalClassName + '-focused',\r\n                normal: this.generalClassName,\r\n                hovered: this.generalClassName + '-hovered',\r\n                selected: this.generalClassName + '-selected'\r\n            },\r\n            content: {\r\n                disabled: this.contentClassName + '-disabled',\r\n                focused: this.contentClassName + '-focused',\r\n                normal: this.contentClassName,\r\n                hovered: this.contentClassName + '-hovered',\r\n                selected: this.contentClassName + '-selected'\r\n            }\r\n        };\r\n        this.updateStyle(this.controlStyle);\r\n        this.updateControlClass();\r\n        this.updateContentClass();\r\n    };\r\n    // Style -----------------------------------------------------------------------------\r\n    IntegralUIItem.prototype.updateContentClass = function () {\r\n        this.contentClass.length = 0;\r\n        this.contentClass.push(this.contentClassName);\r\n        if (this.options.currentStyle) {\r\n            this.contentClass.push(this.options.currentStyle.content.normal);\r\n            if (this.state & IntegralUIObjectState.disabled)\r\n                this.contentClass.push(this.options.currentStyle.content.disabled);\r\n            else if (this.state & IntegralUIObjectState.focused)\r\n                this.contentClass.push(this.options.currentStyle.content.focused);\r\n            else if (this.state & IntegralUIObjectState.selected)\r\n                this.contentClass.push(this.options.currentStyle.content.selected);\r\n            else if (this.state & IntegralUIObjectState.hovered)\r\n                this.contentClass.push(this.options.currentStyle.content.hovered);\r\n        }\r\n    };\r\n    IntegralUIItem.prototype.getContentClass = function () {\r\n        return this.contentClass;\r\n    };\r\n    IntegralUIItem.prototype.getContentStyle = function (value) {\r\n        if (this.commonService.isString(value))\r\n            return value;\r\n        else if (value)\r\n            return {\r\n                disabled: this.commonService.isFieldAvailable(value.disabled, this.contentClassName + '-disabled'),\r\n                focused: this.commonService.isFieldAvailable(value.focused, this.contentClassName + '-focused'),\r\n                hovered: this.commonService.isFieldAvailable(value.hovered, this.contentClassName + '-hovered'),\r\n                normal: this.commonService.isFieldAvailable(value.normal, this.contentClassName),\r\n                selected: this.commonService.isFieldAvailable(value.selected, this.contentClassName + '-selected')\r\n            };\r\n        else {\r\n            return {\r\n                disabled: this.defaultStyle.content.disabled,\r\n                focused: this.defaultStyle.content.focused,\r\n                hovered: this.defaultStyle.content.hovered,\r\n                normal: this.defaultStyle.content.normal,\r\n                selected: this.defaultStyle.content.selected\r\n            };\r\n        }\r\n    };\r\n    IntegralUIItem.prototype.updateStyle = function (value) {\r\n        if (value)\r\n            this.options.currentStyle = {\r\n                general: this.getGeneralStyle(value.general),\r\n                content: this.getContentStyle(value.content)\r\n            };\r\n        else\r\n            this.options.currentStyle = {\r\n                general: {\r\n                    disabled: this.defaultStyle.general.disabled,\r\n                    focused: this.defaultStyle.general.focused,\r\n                    hovered: this.defaultStyle.general.hovered,\r\n                    normal: this.defaultStyle.general.normal,\r\n                    selected: this.defaultStyle.general.selected\r\n                },\r\n                content: {\r\n                    disabled: this.defaultStyle.content.disabled,\r\n                    focused: this.defaultStyle.content.focused,\r\n                    hovered: this.defaultStyle.content.hovered,\r\n                    normal: this.defaultStyle.content.normal,\r\n                    selected: this.defaultStyle.content.selected\r\n                }\r\n            };\r\n    };\r\n    // General ---------------------------------------------------------------------------\r\n    IntegralUIItem.prototype.processStateChanged = function () {\r\n        this.updateContentClass();\r\n    };\r\n    // Mouse Events ----------------------------------------------------------------------\r\n    IntegralUIItem.prototype.onClick = function (e) {\r\n        if (this.isEnabled)\r\n            this.click.emit(e);\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIItem.prototype.onMouseDown = function (e) {\r\n        if (this.isEnabled)\r\n            this.mouseDown.emit(e);\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIItem.prototype.onMouseUp = function (e) {\r\n        if (this.isEnabled)\r\n            this.mouseUp.emit(e);\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIItem.prototype.onMouseEnter = function (e) {\r\n        if (this.isEnabled) {\r\n            this.state |= IntegralUIObjectState.hovered;\r\n            this.mouseEnter.emit(e);\r\n        }\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIItem.prototype.onMouseMove = function (e) {\r\n        if (this.isEnabled)\r\n            this.mouseMove.emit(e);\r\n        e.stopPropagation();\r\n    };\r\n    IntegralUIItem.prototype.onMouseLeave = function (e) {\r\n        if (this.isEnabled) {\r\n            this.state &= ~IntegralUIObjectState.hovered;\r\n            this.mouseLeave.emit(e);\r\n        }\r\n        e.stopPropagation();\r\n    };\r\n    // Layout ----------------------------------------------------------------------------\r\n    IntegralUIItem.prototype.getContentSize = function () {\r\n        var elemSize = { width: 0, height: 0 };\r\n        if (this.contentElem) {\r\n            var elemMargin = this.commonService.getMargin(this.contentElem.nativeElement);\r\n            elemSize = {\r\n                width: this.contentElem.nativeElement.offsetWidth + (elemMargin.left + elemMargin.right),\r\n                height: this.contentElem.nativeElement.offsetHeight + (elemMargin.top + elemMargin.bottom) / 2\r\n            };\r\n        }\r\n        return elemSize;\r\n    };\r\n    IntegralUIItem.prototype.getIconStatus = function () {\r\n        return this.icon ? 'inline-block' : 'none';\r\n    };\r\n    IntegralUIItem.prototype.getMargin = function () {\r\n        if (this.elemRef)\r\n            return this.commonService.getMargin(this.elemRef.nativeElement.firstElementChild);\r\n        return { top: 0, right: 0, bottom: 0, left: 0 };\r\n    };\r\n    IntegralUIItem.prototype.getPageRect = function () {\r\n        var elemRect = { top: 0, right: 0, bottom: 0, left: 0 };\r\n        if (this.elemRef)\r\n            elemRect = this.commonService.getPageRect(this.elemRef.nativeElement.firstElementChild);\r\n        return elemRect;\r\n    };\r\n    IntegralUIItem.prototype.getSize = function () {\r\n        var elemSize = { width: 0, height: 0 };\r\n        if (this.elemRef) {\r\n            var elemMargin = this.commonService.getMargin(this.elemRef.nativeElement.firstElementChild);\r\n            elemSize = {\r\n                width: this.elemRef.nativeElement.firstElementChild.offsetWidth + (elemMargin.left + elemMargin.right),\r\n                height: this.elemRef.nativeElement.firstElementChild.offsetHeight + (elemMargin.top + elemMargin.bottom) / 2\r\n            };\r\n        }\r\n        return elemSize;\r\n    };\r\n    IntegralUIItem.prototype.resetPos = function () {\r\n        this.updateLayout(\"static\", { x: \"auto\", y: \"auto\" });\r\n    };\r\n    IntegralUIItem.prototype.updateLayout = function (ref, pos) {\r\n        this.positionType = ref;\r\n        this.itemPos = {\r\n            top: pos.y,\r\n            left: pos.x //pos.x == \"auto\" ? \"auto\" : pos.x + \"px\r\n        };\r\n    };\r\n    IntegralUIItem.prototype.updatePos = function (pos) {\r\n        this.updateLayout(\"absolute\", pos);\r\n    };\r\n    return IntegralUIItem;\r\n}(IntegralUIBaseComponent));\r\n__decorate([\r\n    core_1.ViewChild('content', { read: core_1.ElementRef }),\r\n    __metadata(\"design:type\", core_1.ElementRef)\r\n], IntegralUIItem.prototype, \"contentElem\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", String)\r\n], IntegralUIItem.prototype, \"icon\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", String)\r\n], IntegralUIItem.prototype, \"iconUrl\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", Object)\r\n], IntegralUIItem.prototype, \"iconSize\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", String)\r\n], IntegralUIItem.prototype, \"text\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIItem.prototype, \"click\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIItem.prototype, \"mouseDown\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIItem.prototype, \"mouseUp\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIItem.prototype, \"mouseEnter\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIItem.prototype, \"mouseMove\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIItem.prototype, \"mouseLeave\", void 0);\r\nIntegralUIItem = __decorate([\r\n    core_1.Component({\r\n        selector: 'iui-item',\r\n        template: \"\\n        <div [ngClass]=\\\"getControlClass()\\\" (click)=\\\"onClick($event)\\\" (mousedown)=\\\"onMouseDown($event)\\\" (mouseup)=\\\"onMouseUp($event)\\\" (mouseenter)=\\\"onMouseEnter($event)\\\" (mousemove)=\\\"onMouseMove($event)\\\" (mouseleave)=\\\"onMouseLeave($event)\\\" [ngStyle]=\\\"{ 'position': positionType, 'top': itemPos.top + 'px', 'left': itemPos.left + 'px' }\\\" #content>\\n            <span *ngIf=\\\"icon\\\" class=\\\"iui-item-icon\\\" [ngClass]=\\\"icon\\\" [style.display]=\\\"getIconStatus()\\\"></span>\\n            <img *ngIf=\\\"iconUrl\\\" class=\\\"iui-item-icon-url\\\" src=\\\"{{iconUrl}}\\\" width=\\\"{{iconSize.width}}\\\" height=\\\"{{iconSize.height}}\\\" />\\n            <span *ngIf=\\\"text\\\" class=\\\"iui-item-label\\\">{{text}}</span>\\n            <ng-content></ng-content>\\n        </div>\\n    \",\r\n        inputs: ['controlStyle', 'data', 'enabled', 'name', 'state'],\r\n        encapsulation: core_1.ViewEncapsulation.None\r\n    }),\r\n    __metadata(\"design:paramtypes\", [core_1.ElementRef, integralui_common_service_1.IntegralUICommonService])\r\n], IntegralUIItem);\r\nexports.IntegralUIItem = IntegralUIItem;\r\n// ---------------------------------------------------------------------------------------\r\n// Focus Directive\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIFocus = (function () {\r\n    function IntegralUIFocus(elemRef) {\r\n        this.elemRef = elemRef;\r\n        this.settings = false;\r\n    }\r\n    Object.defineProperty(IntegralUIFocus.prototype, \"settings\", {\r\n        get: function () {\r\n            return this.isFocused;\r\n        },\r\n        set: function (value) {\r\n            if (this.isFocused != value) {\r\n                this.isFocused = value;\r\n                if (value) {\r\n                    var self_1 = this;\r\n                    var focusTimeout_1 = setTimeout(function () {\r\n                        self_1.elemRef.nativeElement.focus();\r\n                        clearTimeout(focusTimeout_1);\r\n                    }, 1);\r\n                }\r\n            }\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    return IntegralUIFocus;\r\n}());\r\n__decorate([\r\n    core_1.Input('iuiFocus'),\r\n    __metadata(\"design:type\", Boolean),\r\n    __metadata(\"design:paramtypes\", [Boolean])\r\n], IntegralUIFocus.prototype, \"settings\", null);\r\nIntegralUIFocus = __decorate([\r\n    core_1.Directive({\r\n        selector: '[iuiFocus]'\r\n    }),\r\n    __metadata(\"design:paramtypes\", [core_1.ElementRef])\r\n], IntegralUIFocus);\r\nexports.IntegralUIFocus = IntegralUIFocus;\r\n// ---------------------------------------------------------------------------------------\r\n// Header Component\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUIHeaderItem = (function (_super) {\r\n    __extends(IntegralUIHeaderItem, _super);\r\n    // Initialization --------------------------------------------------------------------\r\n    function IntegralUIHeaderItem(elemRef, commonService) {\r\n        var _this = _super.call(this, elemRef, commonService) || this;\r\n        _this.elemRef = elemRef;\r\n        _this.commonService = commonService;\r\n        _this.expandHorizontalClass = [];\r\n        _this.expandVerticalClass = [];\r\n        _this.expandArrowBottomLeftClass = [];\r\n        _this.expandArrowBottomRightClass = [];\r\n        _this.expandArrowVerticalClass = [];\r\n        _this.expandArrowTopLeftClass = [];\r\n        _this.expandArrowTopRightClass = [];\r\n        // Properties ------------------------------------------------------------------------\r\n        _this.animationType = '';\r\n        _this.animationState = '';\r\n        // Events ----------------------------------------------------------------------------\r\n        _this.expandClicked = new core_1.EventEmitter();\r\n        return _this;\r\n    }\r\n    IntegralUIHeaderItem.prototype.ngOnInit = function () {\r\n        this.generalClassName = \"iui-header\";\r\n        this.expandBoxClassName = this.generalClassName + \"expand-box\";\r\n        this.contentClassName = this.generalClassName + \"-content\";\r\n        this.initStyle();\r\n    };\r\n    IntegralUIHeaderItem.prototype.initStyle = function () {\r\n        this.defaultStyle = {\r\n            general: {\r\n                disabled: this.generalClassName + '-disabled',\r\n                focused: this.generalClassName + '-focused',\r\n                normal: this.generalClassName,\r\n                hovered: this.generalClassName + '-hovered',\r\n                selected: this.generalClassName + '-selected'\r\n            },\r\n            content: {\r\n                disabled: this.contentClassName + '-disabled',\r\n                focused: this.contentClassName + '-focused',\r\n                normal: this.contentClassName,\r\n                hovered: this.contentClassName + '-hovered',\r\n                selected: this.contentClassName + '-selected'\r\n            },\r\n            expandBox: this.expandBoxClassName\r\n        };\r\n        this.updateStyle(this.controlStyle);\r\n        this.updateControlClass();\r\n        this.updateContentClass();\r\n    };\r\n    // Animations ------------------------------------------------------------------------\r\n    // Expand Box - Plus/Minus\r\n    IntegralUIHeaderItem.prototype.getExpandVerticalClass = function () {\r\n        this.expandVerticalClass.length = 0;\r\n        this.expandVerticalClass.push('iui-header-expand-box-vertical');\r\n        if (this.state & IntegralUIObjectState.selected)\r\n            this.expandVerticalClass.push('iui-header-expand-box-vertical-collapse');\r\n        else\r\n            this.expandVerticalClass.push('iui-header-expand-box-vertical-expand');\r\n        if (this.options.currentStyle.expandBox)\r\n            this.expandVerticalClass.push(this.options.currentStyle.expandBox);\r\n        return this.expandVerticalClass;\r\n    };\r\n    IntegralUIHeaderItem.prototype.getExpandHorizontalClass = function () {\r\n        this.expandHorizontalClass.length = 0;\r\n        this.expandHorizontalClass.push('iui-header-expand-box-horizontal');\r\n        if (this.state & IntegralUIObjectState.selected)\r\n            this.expandHorizontalClass.push('iui-header-expand-box-horizontal-collapse');\r\n        else\r\n            this.expandHorizontalClass.push('iui-header-expand-box-horizontal-expand');\r\n        if (this.options.currentStyle.expandBox)\r\n            this.expandHorizontalClass.push(this.options.currentStyle.expandBox);\r\n        return this.expandHorizontalClass;\r\n    };\r\n    // Expand Box - Arrow\r\n    IntegralUIHeaderItem.prototype.getExpandArrowBottomLeftClass = function () {\r\n        this.expandArrowBottomLeftClass.length = 0;\r\n        this.expandArrowBottomLeftClass.push('iui-header-expand-box-arrow-bottom-left');\r\n        //if (this.state & IntegralUIObjectState.selected)\r\n        if (this.animationState == 'expand')\r\n            this.expandArrowBottomLeftClass.push('iui-header-expand-box-arrow-bottom-left-collapse');\r\n        else\r\n            this.expandArrowBottomLeftClass.push('iui-header-expand-box-arrow-bottom-left-expand');\r\n        if (this.options.currentStyle.expandBox)\r\n            this.expandArrowBottomLeftClass.push(this.options.currentStyle.expandBox);\r\n        return this.expandArrowBottomLeftClass;\r\n    };\r\n    IntegralUIHeaderItem.prototype.getExpandArrowBottomRightClass = function () {\r\n        this.expandArrowBottomRightClass.length = 0;\r\n        this.expandArrowBottomRightClass.push('iui-header-expand-box-arrow-bottom-right');\r\n        //if (this.state & IntegralUIObjectState.selected)\r\n        if (this.animationState == 'expand')\r\n            this.expandArrowBottomRightClass.push('iui-header-expand-box-arrow-bottom-right-collapse');\r\n        else\r\n            this.expandArrowBottomRightClass.push('iui-header-expand-box-arrow-bottom-right-expand');\r\n        if (this.options.currentStyle.expandBox)\r\n            this.expandArrowBottomRightClass.push(this.options.currentStyle.expandBox);\r\n        return this.expandArrowBottomRightClass;\r\n    };\r\n    IntegralUIHeaderItem.prototype.getExpandArrowVerticalClass = function () {\r\n        this.expandArrowVerticalClass.length = 0;\r\n        this.expandArrowVerticalClass.push('iui-header-expand-box-arrow-vertical');\r\n        //if (this.state & IntegralUIObjectState.selected)\r\n        if (this.animationState == 'expand')\r\n            this.expandArrowVerticalClass.push('iui-header-expand-box-arrow-vertical-collapse');\r\n        else\r\n            this.expandArrowVerticalClass.push('iui-header-expand-box-arrow-vertical-expand');\r\n        if (this.options.currentStyle.expandBox)\r\n            this.expandArrowVerticalClass.push(this.options.currentStyle.expandBox);\r\n        return this.expandArrowVerticalClass;\r\n    };\r\n    IntegralUIHeaderItem.prototype.getExpandArrowTopLeftClass = function () {\r\n        this.expandArrowTopLeftClass.length = 0;\r\n        this.expandArrowTopLeftClass.push('iui-header-expand-box-arrow-top-left');\r\n        //if (this.state & IntegralUIObjectState.selected)\r\n        if (this.animationState == 'expand')\r\n            this.expandArrowTopLeftClass.push('iui-header-expand-box-arrow-top-left-expand');\r\n        else\r\n            this.expandArrowTopLeftClass.push('iui-header-expand-box-arrow-top-left-collapse');\r\n        if (this.options.currentStyle.expandBox)\r\n            this.expandArrowTopLeftClass.push(this.options.currentStyle.expandBox);\r\n        return this.expandArrowTopLeftClass;\r\n    };\r\n    IntegralUIHeaderItem.prototype.getExpandArrowTopRightClass = function () {\r\n        this.expandArrowTopRightClass.length = 0;\r\n        this.expandArrowTopRightClass.push('iui-header-expand-box-arrow-top-right');\r\n        //if (this.state & IntegralUIObjectState.selected)\r\n        if (this.animationState == 'expand')\r\n            this.expandArrowTopRightClass.push('iui-header-expand-box-arrow-top-right-expand');\r\n        else\r\n            this.expandArrowTopRightClass.push('iui-header-expand-box-arrow-top-right-collapse');\r\n        if (this.options.currentStyle.expandBox)\r\n            this.expandArrowTopRightClass.push(this.options.currentStyle.expandBox);\r\n        return this.expandArrowTopRightClass;\r\n    };\r\n    // Expand Buttons --------------------------------------------------------------------\r\n    IntegralUIHeaderItem.prototype.expandBoxClicked = function (e) {\r\n        if (this.isEnabled && e.buttons == 1)\r\n            this.expandClicked.emit(null);\r\n    };\r\n    // Style -----------------------------------------------------------------------------\r\n    IntegralUIHeaderItem.prototype.updateStyle = function (value) {\r\n        if (value)\r\n            this.options.currentStyle = {\r\n                general: this.getGeneralStyle(value.general),\r\n                content: this.getContentStyle(value.content),\r\n                expandBox: this.commonService.isFieldAvailable(value.expandBox, this.expandBoxClassName)\r\n            };\r\n        else\r\n            this.options.currentStyle = {\r\n                general: {\r\n                    disabled: this.defaultStyle.general.disabled,\r\n                    focused: this.defaultStyle.general.focused,\r\n                    hovered: this.defaultStyle.general.hovered,\r\n                    normal: this.defaultStyle.general.normal,\r\n                    selected: this.defaultStyle.general.selected\r\n                },\r\n                content: {\r\n                    disabled: this.defaultStyle.content.disabled,\r\n                    focused: this.defaultStyle.content.focused,\r\n                    hovered: this.defaultStyle.content.hovered,\r\n                    normal: this.defaultStyle.content.normal,\r\n                    selected: this.defaultStyle.content.selected\r\n                },\r\n                expandBox: this.defaultStyle.expandBox\r\n            };\r\n    };\r\n    return IntegralUIHeaderItem;\r\n}(IntegralUIItem));\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", String)\r\n], IntegralUIHeaderItem.prototype, \"animationType\", void 0);\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", String)\r\n], IntegralUIHeaderItem.prototype, \"animationState\", void 0);\r\n__decorate([\r\n    core_1.Output(),\r\n    __metadata(\"design:type\", core_1.EventEmitter)\r\n], IntegralUIHeaderItem.prototype, \"expandClicked\", void 0);\r\nIntegralUIHeaderItem = __decorate([\r\n    core_1.Component({\r\n        selector: 'iui-header',\r\n        template: \"\\n        <div [ngClass]=\\\"getControlClass()\\\" (click)=\\\"onClick($event)\\\" (mousedown)=\\\"onMouseDown($event)\\\" (mouseup)=\\\"onMouseUp($event)\\\" (mouseenter)=\\\"onMouseEnter($event)\\\" (mousemove)=\\\"onMouseMove($event)\\\" (mouseleave)=\\\"onMouseLeave($event)\\\" #content>\\n            <span *ngIf=\\\"icon\\\" class=\\\"iui-item-icon\\\" [ngClass]=\\\"icon\\\" [style.display]=\\\"getIconStatus()\\\"></span>\\n            <img *ngIf=\\\"iconUrl\\\" class=\\\"iui-item-icon-url\\\" src=\\\"{{iconUrl}}\\\" width=\\\"{{iconSize.width}}\\\" height=\\\"{{iconSize.height}}\\\" />\\n            <span *ngIf=\\\"text\\\" class=\\\"iui-item-label\\\">{{text}}</span>\\n            <div class=\\\"iui-header-expand-box\\\" [ngStyle]=\\\"{ display: animationType=='plus-minus' ? 'block' : 'none' }\\\" (mousedown)=\\\"expandBoxClicked($event)\\\">\\n                <span class=\\\"iui-header-expand-box-vertical\\\" [ngClass]=\\\"getExpandVerticalClass()\\\"></span>\\n                <span class=\\\"iui-header-expand-box-horizontal\\\" [ngClass]=\\\"getExpandHorizontalClass()\\\"></span>\\n            </div>\\n            <div class=\\\"iui-header-expand-box-arrow\\\" [ngStyle]=\\\"{ display: animationType=='arrow' ? 'block' : 'none' }\\\" (mousedown)=\\\"expandBoxClicked($event)\\\">\\n                <span class=\\\"iui-header-expand-box-arrow-bottom-left\\\" [ngClass]=\\\"getExpandArrowBottomLeftClass()\\\"></span>\\n                <span class=\\\"iui-header-expand-box-arrow-bottom-right\\\" [ngClass]=\\\"getExpandArrowBottomRightClass()\\\"></span>\\n                <!-- <span class=\\\"iui-header-expand-box-arrow-vertical\\\" [ngClass]=\\\"getExpandArrowVerticalClass()\\\"></span> -->\\n                <span class=\\\"iui-header-expand-box-arrow-top-left\\\" [ngClass]=\\\"getExpandArrowTopLeftClass()\\\"></span>\\n                <span class=\\\"iui-header-expand-box-arrow-top-right\\\" [ngClass]=\\\"getExpandArrowTopRightClass()\\\"></span>\\n            </div>\\n            <ng-content></ng-content>\\n        </div>\\n    \",\r\n        inputs: ['controlStyle', 'data', 'enabled', 'icon', 'iconUrl', 'iconSize', 'name', 'state', 'text'],\r\n        outputs: ['click', 'mouseDown', 'mouseEnter', 'mouseLeave', 'mouseMove', 'mouseUp'],\r\n        encapsulation: core_1.ViewEncapsulation.None\r\n    }),\r\n    __metadata(\"design:paramtypes\", [core_1.ElementRef, integralui_common_service_1.IntegralUICommonService])\r\n], IntegralUIHeaderItem);\r\nexports.IntegralUIHeaderItem = IntegralUIHeaderItem;\r\n// ---------------------------------------------------------------------------------------\r\n// Trial Component\r\n// ---------------------------------------------------------------------------------------\r\nvar IntegralUITComponent = (function () {\r\n    function IntegralUITComponent() {\r\n        this.tvData = '';\r\n        this.tvTimer = null;\r\n        this.tvCycle = 200 * 3 * 100;\r\n        this.tvDefault = 'none';\r\n        //this.tvStyle = 'none';\r\n    }\r\n    // Trial\r\n    IntegralUITComponent.prototype.crpar = function () {\r\n        return ['si', 'Tri', 'Ver', 'on', 'al '];\r\n    };\r\n    IntegralUITComponent.prototype.crtr = function (params) {\r\n        return params[1] + params[4] + params[2] + params[0] + params[3];\r\n    };\r\n    IntegralUITComponent.prototype.ngOnInit = function () {\r\n        var self = this;\r\n        self.tvData = self.crtr(self.crpar());\r\n        self.tvStyle = self.tvDefault;\r\n        self.tvTimer = setInterval(function () {\r\n            self.tvStyle = 'block';\r\n            var tempTimer = setTimeout(function () {\r\n                self.tvStyle = self.tvDefault;\r\n                clearTimeout(tempTimer);\r\n            }, 3000);\r\n        }, self.tvCycle);\r\n    };\r\n    IntegralUITComponent.prototype.ngOnDestroy = function () {\r\n        if (this.tvTimer)\r\n            clearInterval(this.tvTimer);\r\n    };\r\n    return IntegralUITComponent;\r\n}());\r\n__decorate([\r\n    core_1.Input(),\r\n    __metadata(\"design:type\", String)\r\n], IntegralUITComponent.prototype, \"tvStyle\", void 0);\r\nIntegralUITComponent = __decorate([\r\n    core_1.Component({\r\n        selector: 'iui-tc',\r\n        template: \"\\n        <style>\\n            .tr-cmp\\n            {\\n            \\tbackground: white;\\n            \\tcolor: #c60d0d;\\n            \\tborder: thin solid black;\\n            \\tpadding: 5px;\\n            \\tposition: absolute;\\n            \\ttop: 0;\\n            \\tleft: 0;\\n            \\tz-index: 999;\\n            }\\n        </style>\\n\\t\\t<div class=\\\"tr-cmp\\\" [ngStyle]=\\\"{ 'display': tvStyle }\\\">{{tvData}}</div>\\n\\t\"\r\n    }),\r\n    __metadata(\"design:paramtypes\", [])\r\n], IntegralUITComponent);\r\nexports.IntegralUITComponent = IntegralUITComponent;\r\n//# sourceMappingURL=integralui.core.js.map","// extracted by mini-css-extract-plugin\nexport {};","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content from \"!!../../../node_modules/css-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js!./index.scss\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","var __decorate=this&&this.__decorate||function(g,a,b,c){var d=arguments.length,f=3>d?a:null===c?c=Object.getOwnPropertyDescriptor(a,b):c,e;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)f=Reflect.decorate(g,a,b,c);else for(var k=g.length-1;0<=k;k--)if(e=g[k])f=(3>d?e(f):3<d?e(a,b,f):e(a,b))||f;return 3<d&&f&&Object.defineProperty(a,b,f),f},__metadata=this&&this.__metadata||function(g,a){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(g,\r\na)},core_1=require(\"@angular/core\"),IntegralUIFilterService=function(){function g(){}g.prototype.isString=function(a){return a?\"string\"==typeof a||a instanceof String:!1};g.prototype.isFilterCondition=function(a){return\"a\"==a||\"b\"==a||\"c\"==a||\"d\"==a||\"e\"==a||\"f\"==a||\"g\"==a||\"h\"==a||\"i\"==a||\"j\"==a||\"k\"==a||\"l\"==a||\"m\"==a||\"n\"==a||\"o\"==a||\"p\"==a||\"q\"==a||\"r\"==a||\"s\"==a||\"t\"==a||\"u\"==a||\"v\"==a||\"w\"==a||\"x\"==a||\"y\"==a||\"z\"==a?!0:!1};g.prototype.beginsWith=function(a,b,c){return void 0!=a&&void 0!=b&&\r\nthis.isString(a)&&this.isString(b)&&a.length>=b.length?0!=c?a.substring(0,b.length)==b?!0:!1:a.toLowerCase().substring(0,b.length)==b.toLowerCase()?!0:!1:!1};g.prototype.endsWith=function(a,b,c){return void 0!=a&&void 0!=b&&this.isString(a)&&this.isString(b)&&a.length>=b.length?0!=c?a.substring(a.length-b.length,a.length)==b?!0:!1:a.toLowerCase().substring(a.length-b.length,a.length)==b.toLowerCase()?!0:!1:!1};g.prototype.getFilterCondition=function(a,b){var c=\"abcdefghijklmnopqrstuvwxyz\".indexOf(b);\r\nreturn a&&0<=c&&c<a.length?a[c]:null};g.prototype.createFilterNode=function(){return{result:!1}};g.prototype.setFilterNode=function(a,b,c,d){var f=this.createFilterNode();f.condition=this.getFilterCondition(b,c);f.negative=d;a.left?a.right||(a.right=f):a.left=f};g.prototype.getMatchResult=function(a,b,c,d,f){var e=!1;if(void 0!=a&&void 0!=c){switch(b){case \">\":e=a>c;break;case \">=\":e=a>=c;break;case \"<\":e=a<c;break;case \"<=\":e=a<=c;break;case \"=\":e=this.isString(a)&&this.isString(c)?0!=f?a==c:a.toLowerCase()==\r\nc.toLowerCase():a==c;break;case \"!=\":e=this.isString(a)&&this.isString(c)?0!=f?a!=c:a.toLowerCase()!=c.toLowerCase():a!=c;break;case \"<>\":e=this.isString(a)&&this.isString(c)?0!=f?a!=c:a.toLowerCase()!=c.toLowerCase():a!=c;break;case \"->\":e=this.beginsWith(a,c,f);break;case \"<-\":e=this.endsWith(a,c,f);break;case \"><\":e=this.isString(a)&&this.isString(c)?0!=f?-1<a.indexOf(c):-1<a.toLowerCase().indexOf(c.toLowerCase()):!1;break;case \"[]\":e=this.isString(a)&&this.isString(c)?0!=f?-1<a.indexOf(c):-1<\r\na.toLowerCase().indexOf(c.toLowerCase()):!1}1==d&&(e=!e)}return e};g.prototype.getFilterResult=function(a,b,c,d){if(b){if(Array.isArray(b.value)){for(var f=[],e=0;e<b.value.length;e++)f.push(this.getMatchResult(a,b.operation,b.value[e],c,d));a=!0;if(\"&\"==b.join)for(e=0;e<f.length;e++)a=a&&f[e];else for(a=!1,e=0;e<f.length;e++)a=a||f[e];return a}return this.getMatchResult(a,b.operation,b.value,c,d)}return!0};g.prototype.applyFilter=function(a,b,c){if(b){var d=b;d.left&&(d.left.condition?d.left.result=\r\nthis.getFilterResult(a,d.left.condition,d.left.negative,c):(d=d.left,this.applyFilter(a,d,c)));d=b;d.right&&(d.right.condition?d.right.result=this.getFilterResult(a,d.right.condition,d.right.negative,c):(d=d.right,this.applyFilter(a,d,c)));\"&\"==b.operator?(b.result=!0,b.left&&(b.result=b.result&&b.left.result),b.right&&(b.result=b.result&&b.right.result)):(b.result=!1,b.left&&(b.result=b.result||b.left.result),b.right&&(b.result=b.result||b.right.result));return b.result}return!0};g.prototype.createTree=\r\nfunction(a,b){if(b){for(var c=this.createFilterNode(),d=c,f,e=!1,g=0;g<b.length;g++)this.isFilterCondition(b[g])?this.setFilterNode(d,a,b[g],e):\"&\"==b[g]||\"|\"==b[g]?(e=!1,d.operator=b[g]):\"!\"==b[g]?e=!0:\"(\"==b[g]?(e=!1,f=this.createFilterNode(),f.parent=d,d=f):\")\"==b[g]&&(e=!1,d.parent&&(d.parent.left?d.parent.right||(d.parent.right=d):d.parent.left=d),d=d.parent);return c}return null};g.prototype.match=function(a,b,c,d,f){return Array.isArray(b)?(d||(d=this.createTree(b,c)),this.applyFilter(a,d,\r\nf)):this.getFilterResult(a,b,b?b.negative:!1,f)};g.prototype.filter=function(a,b,c,d,f,e){var g=[];if(a&&Array.isArray(a))for(var h=0;h<a.length;h++)this.match(b?a[h][b]:a[h],c,d,f,e)&&g.push(a[h]);return g};return g}();IntegralUIFilterService=__decorate([core_1.Injectable(),__metadata(\"design:paramtypes\",[])],IntegralUIFilterService);exports.IntegralUIFilterService=IntegralUIFilterService;","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// OBSOLETED / import { APP_BASE_HREF } from '@angular/common';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BaseRequestOptions, HttpModule } from '@angular/http';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { enableProdMode, NgModule, NgZone } from '@angular/core';\n\nimport { DndModule } from 'ng2-dnd';\n\nimport { routing, APP_ROUTER_PROVIDERS } from './app.routes';\nimport { GenericResolver, MapResolver } from './app.resolvers';\n\nimport { APP_BASE_HREF } from '@angular/common';\n\nimport {\n  Storage,\n  AppHttp,\n  NotificationService,\n  EnvAtlassianService,\n  EnvMicrosoftService,\n  EnvService,\n} from './base/services';\n\n// NOT IN USE?\n// import {\n//   TreeGridService\n// } from './treegrid/services/treegrid.service.ts';\n\nimport {\n  ModalComponent,\n  FormTypeaheadComponent,\n\n  HeaderComponent,\n  HeaderMapComponent,\n  HeaderConfigurationComponent,\n  NotificationComponent,\n  NotificationListComponent,\n\n  DefaultComponent,\n  LicenseComponent,\n  UpgradeAtlassianComponent,\n  ConfigurationMigrationAtlassianComponent,\n  ConfigurationSettingsAtlassianComponent,\n\n  // MapComponent,\n  // MapFilterComponent,\n  // MapGridComponent,\n  // MapGridIssueComponent,\n  // MapGridIssueActionsComponent,\n  // MapGridIssuePropertiesComponent,\n  // MapGridIssueSubissuesComponent,\n  // MapGridIssueGroupAtlassianComponent,\n  // MapGridIssueGroupMicrosoftComponent,\n  // MapGridGroupComponent,\n  // MapTreeComponent\n} from './base/components';\n\n// import {\n//   TreeGridComponent2,\n//   TreeGridToolbarComponent,\n//   TreeGridFilterBarComponent,\n//   TreeGridPageComponent,\n//   TreeGridHeaderComponent,\n//   GridDialogComponent,\n//   GridDialogListComponent\n// } from './lidor';\n// import { IntegralUIModule } from './lidor/integralui/integralui.module';\n// import { CanvasModule } from './canvas/canvas.module';\nimport { TreegridModule } from './treegrid/treegrid.module';\n\nimport {\n  DndDirective,\n  DropdownDirective,\n  FormControlValidator,\n  LastDirective\n} from './base/directives';\n\nimport {\n  SafePipe,\n  PluralizePipe,\n  TruncatePipe,\n} from './base/pipes';\n\nlet BackendService: any;\nlet Backend: any;\nlet AppComponent: any;\n\nif (process.env.MOCK) { // see \"--env mock\" cli option\n  // NOT IN USE\n  // RESERVED / BackendService = require('./services/backend.service').BackendService;\n  // RESERVED / Backend = require('@angular/http/testing').MockBackend;\n  // RESERVED / AppComponent = require('./app-mock.component').AppMockComponent;\n} else {\n  Backend = EnvService.isAtlassian ?\n    require('./base/utils/atlassian_backend').AtlassianBackend : // require('@angular/http').XHRBackend;\n    require('./base/utils/microsoft_backend').MicrosoftBackend; // require('@angular/http').XHRBackend;\n\n  AppComponent = require('./app.component').AppComponent;\n}\n\nprocess.env.ENV == 'production' && enableProdMode();\n\n@NgModule({\n  imports: [\n    DndModule.forRoot(),\n    BrowserModule,\n    HttpModule,\n    FormsModule,\n    ReactiveFormsModule,\n    routing,\n    /* IntegralUIModule, */\n    TreegridModule\n  ],\n  providers: [\n    ...[\n      BaseRequestOptions,\n      Storage,\n      NotificationService,\n      EnvAtlassianService,\n      EnvMicrosoftService,\n      EnvService,\n      APP_ROUTER_PROVIDERS,\n      {\n        provide: APP_BASE_HREF,\n        useValue: document.location.pathname.substring(0, document.location.pathname.lastIndexOf('/bit') + '/bit'.length) || '/'\n      },\n      {\n        provide: Backend,\n        useClass: Backend\n      },\n      {\n        provide: AppHttp,\n        deps: [Backend, BaseRequestOptions, Storage],\n        useFactory: (Backend, defaultOptions, storage) => new AppHttp(Backend, defaultOptions, storage),\n      },\n      {\n        provide: GenericResolver,\n        deps: [NgZone, EnvService],\n        useFactory: (NgZone, EnvService) => new GenericResolver(NgZone, EnvService),\n      },\n      {\n        provide: MapResolver,\n        deps: [NgZone, EnvService],\n        useFactory: (NgZone, EnvService) => new MapResolver(NgZone, EnvService),\n      },\n    ].concat(process.env.MOCK ? [\n      {\n        provide: BackendService,\n        deps: [Backend],\n        useFactory: Backend => new BackendService(Backend),\n      }\n    ] : []),\n  ],\n  declarations: [\n    AppComponent,\n    ModalComponent,\n    FormTypeaheadComponent,\n\n    HeaderComponent,\n    HeaderMapComponent,\n    HeaderConfigurationComponent,\n    NotificationComponent,\n    NotificationListComponent,\n\n    DefaultComponent,\n    LicenseComponent,\n    UpgradeAtlassianComponent,\n    ConfigurationMigrationAtlassianComponent,\n    ConfigurationSettingsAtlassianComponent,\n\n    // OBSOLETED?\n    // MapComponent,\n    // MapFilterComponent,\n    // MapGridComponent,\n    // MapGridIssueComponent,\n    // MapGridIssueActionsComponent,\n    // MapGridIssuePropertiesComponent,\n    // MapGridIssueSubissuesComponent,\n    // MapGridIssueGroupAtlassianComponent,\n    // MapGridIssueGroupMicrosoftComponent,\n    // MapGridGroupComponent,\n    // MapTreeComponent,\n\n    // Pipes\n    SafePipe,\n    PluralizePipe,\n    TruncatePipe,\n\n    // Directives\n    DndDirective,\n    DropdownDirective,\n    FormControlValidator,\n    LastDirective,\n\n    // Lidor\n    // TreeGridComponent2,\n    // TreeGridToolbarComponent,\n    // TreeGridFilterBarComponent,\n    // TreeGridPageComponent,\n    // TreeGridHeaderComponent,\n    // GridDialogComponent,\n    // GridDialogListComponent\n  ],\n  bootstrap: [AppComponent]\n})\nexport class AppModule {}\n","import { Routes, RouterModule } from '@angular/router';\n\nimport {\n  EnvironmentProvider,\n  IsLicensedProvider,\n  GenericResolver,\n  MapResolver,\n} from './app.resolvers';\n\nimport {\n  MapComponent,\n  LicenseComponent,\n  UpgradeAtlassianComponent,\n  ConfigurationMigrationAtlassianComponent,\n  ConfigurationSettingsAtlassianComponent,\n  DefaultComponent,\n} from './base/components/index';\n\nimport {\n  TreeGridPageComponent\n} from './treegrid/components/index';\n/*\nimport {\n  CanvasPageComponent\n} from './canvas/components/index';\n*/\nexport const appRoutes: Routes = [\n  {\n    path: '',\n    canActivate: [EnvironmentProvider],\n    children: [\n      /* {path: 'canvas', component: CanvasPageComponent, canActivate: [IsLicensedProvider], resolve: {board: MapResolver}}, */\n      /* {path: 'canvas/index', component: CanvasPageComponent, canActivate: [IsLicensedProvider], resolve: {board: MapResolver}}, */\n      {path: 'map', component: TreeGridPageComponent, canActivate: [IsLicensedProvider], resolve: {board: MapResolver}},\n      {path: 'map/index', component: TreeGridPageComponent, canActivate: [IsLicensedProvider], resolve: {board: MapResolver}},\n      {path: 'license', component: LicenseComponent},\n      {path: 'upgrade', component: UpgradeAtlassianComponent},\n      {\n        path: 'configure', canActivate: [IsLicensedProvider], resolve: {board: GenericResolver},\n        children: [\n          {path: '', component: ConfigurationMigrationAtlassianComponent},\n          {path: 'migration', component: ConfigurationMigrationAtlassianComponent},\n          {path: 'settings', component: ConfigurationSettingsAtlassianComponent},\n        ]\n      },\n      {path: '**', component: DefaultComponent},\n    ]\n  },\n];\n\nexport const APP_ROUTER_PROVIDERS = [\n  EnvironmentProvider, IsLicensedProvider,\n];\n\nexport const routing = RouterModule.forRoot(appRoutes);\n","import { Injectable } from '@angular/core';\nimport { Http, Request, Response, Headers, URLSearchParams } from '@angular/http';\nimport { ConnectionBackend, RequestOptions, RequestOptionsArgs } from '@angular/http';\nimport { Observable } from 'rxjs/Observable';\nimport { Observer } from 'rxjs/Observer';\n\nimport { IBackendError } from '../interfaces/backend.interface';\n\nimport config from '../config';\nimport {\n  Storage,\n} from './index';\n\n@Injectable()\nexport class AppHttp extends Http {\n\n  constructor(\n    protected _backend: ConnectionBackend,\n    protected _defaultOptions: RequestOptions,\n    private storage: Storage\n  ) {\n    super(_backend, _defaultOptions);\n  }\n\n  private _headers(options?: RequestOptionsArgs) {\n    options = options || {};\n    options['headers'] = options.headers || new Headers();\n\n    return options;\n  }\n\n  // wrap and serialize request\n  private _serialize(value: any): string {\n    return JSON.stringify(value);\n  }\n\n  // unwrap and deserialize response\n  private _deserialize(res: Observable<Response>): any {\n    return res\n      .map(res => {\n        let data = !!res.text() ? res.json() : {};\n        return (data);\n      })\n      .catch(res => {\n        // server errors\n        if (res.stack) { return Observable.throw(res); } // exception from http api\n\n        if (res.status >= 500 && res.status < 600) {\n          let data = res.json() || 'Server error (${res.status})'; // res.text()\n          return Observable.throw(data);\n        }\n\n        // client errors\n        if (res.status >= 400 && res.status < 500) {\n          return Observable.throw(res.json()); // res.text()\n        }\n\n        return Observable.throw(res.json());\n      });\n  }\n\n  // encode search (url) params\n  private _encode(params?: any): URLSearchParams {\n    if (params instanceof URLSearchParams) return params;\n\n    let searchParams = new URLSearchParams();\n    Object.keys(params).forEach(key => params[key] !== null && searchParams.set(key, params[key]));\n\n    return searchParams;\n  }\n\n  // OBSOLETED / cannot be modified for angular 2.4+\n  // request(url: string | Request, options?: RequestOptionsArgs): Observable<any> {\n  //   options = this._headers(options);\n\n  //   let res = super.request(url, options);\n  //   return this._deserialize(res).share(); // share: to make consecutive observers calls\n  // }\n\n  get(url: string, params?: any, options?: RequestOptionsArgs): Observable<any> {\n    options = this._headers(options);\n    params && (options.search = this._encode(params));\n\n    let res = this._request(super.get.bind(this, url, options));\n    return this._deserialize(res).share(); // share: to make cosecutive observers calls\n  }\n\n  post(url: string, body: any, params?: any, options?: RequestOptionsArgs): Observable<any> {\n    options = this._headers(options);\n    body = this._serialize(body);\n    params && (options.search = this._encode(params));\n\n    let res = this._request(super.post.bind(this, url, body, options));\n    return this._deserialize(res).share(); // share: to make cosecutive observers calls\n  }\n\n  put(url: string, body: any, params?: any, options?: RequestOptionsArgs): Observable<any> {\n    options = this._headers(options);\n    body = this._serialize(body);\n    params && (options.search = this._encode(params));\n\n    let res = this._request(super.put.bind(this, url, body, options));\n    return this._deserialize(res).share(); // share: to make cosecutive observers calls\n  }\n\n  patch(url: string, body: any, params?: any, options?: RequestOptionsArgs): Observable<any> {\n    options = this._headers(options);\n    body = this._serialize(body);\n    params && (options.search = this._encode(params));\n\n    let res = this._request(super.patch.bind(this, url, body, options));\n    return this._deserialize(res).share(); // share: to make cosecutive observers calls\n  }\n\n  delete(url: string, params?: any, options?: RequestOptionsArgs): Observable<any> {\n    options = this._headers(options);\n    params && (options.search = this._encode(params));\n\n    let res = this._request(super.delete.bind(this, url, options));\n    return this._deserialize(res).share(); // share: to make cosecutive observers calls\n  }\n\n  // experimental\n  // add extra async level to please Microsoft VisualStudio platform\n  _request(callback): Observable<any> {\n\n    let _callback = (observer: Observer<Response>) => {\n      callback().subscribe(\n        (res) => observer.next(res),\n        (err) => observer.error(err),\n        () => observer.complete()\n      );\n    }\n\n    let observable = new Observable<Response>((observer: Observer<any>) => {\n      let resolveConnection = this._backend['resolveConnection'];\n\n      if (resolveConnection) {\n        resolveConnection.call(this._backend).then(_callback.bind(this, observer));\n      } else {\n        _callback(observer);\n      }\n    });\n\n    return observable;\n  }\n}\n","// TODO: supposed to be replaced with any stable angular/es6 storage lib\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class Storage {\n\n  // TODO: try to add caching\n\n  get(key: string): any {\n    const value = localStorage.getItem(key);\n\n    try {\n      return value == undefined ? undefined : JSON.parse(value);\n    } catch (err) {\n      return value; // err.name == 'SyntaxError' // err instanceof SyntaxError\n    }\n  }\n\n  set(key: string, value: any): void {\n    localStorage.setItem(key, JSON.stringify(value));\n  }\n\n  remove(key: string): void {\n    localStorage.removeItem(key);\n  }\n\n  clear(): void {\n    localStorage.clear();\n  }\n}\n","const config = {\n\n    platforms: { // experimental\n        ATLASSIAN: 'atlassian',\n        MICROSOFT: 'microsoft',\n    },\n\n    storage: {\n        preferences: 'preferences',\n    },\n\n    debounce: {\n        interval: 1000, // milliseconds;\n    },\n\n    pdf: {\n        filename: 'Agile-User-Story-Map.pdf',\n    },\n\n    notification: { // inspired by http://tamerayd.in/ngToast/\n        interval: 3000, // refresh interval in milliseconds\n        level: {\n            values: {\n                HINT: 'hint',\n                SUCCESS: 'success',\n                WARNING: 'warning',\n                ERROR: 'error',\n                // GENERIC: 'generic',\n                // INFO: 'info', // aka 'default'\n            },\n        },\n        type: {\n            values: { // could be used directly as string values\n                DEFAULT: 'DEFAULT',\n                ERROR: 'ERROR',\n                WARNING: 'WARNING',\n                TABLE_IMPORT: 'TABLE_IMPORT',\n                FLOW_PLAY: 'FLOW_PLAY',\n                FLOWSTEP_PLAY: 'FLOWSTEP_PLAY',\n            },\n        },\n        defaults: { // default per-item options\n            dismissOnTimeout: true,\n            timeout: 70000, // milliseconds\n            dismissButton: false,\n            dismissOnClick: true,\n            onDismiss: null,\n            //combineDuplications: false,\n        }\n    },\n\n    dnd: { // dnd zones\n        MAP_GRID_LANE: 'map-grid-lane',\n        MAP_GRID_COLUMN: 'map-grid-column',\n    },\n\n    map: {\n        max: 2000, // max number of displayed issue\n\n        group: {\n            values: {\n                PROJECT: 'PROJECT',\n                EPIC: 'EPIC',\n                FEATURE: 'FEATURE', // Microsoft\n                SPRINT: 'SPRINT',\n                POINTS: 'POINTS',\n                VERSION_AFFECTED: 'VERSION_AFFECTED',\n                VERSION_FIXED: 'VERSION_FIXED',\n                COMPONENT: 'COMPONENT',\n                STATUS: 'STATUS',\n                PRIORITY: 'PRIORITY',\n                TYPE: 'TYPE',\n                ASSIGNEE: 'ASSIGNEE',\n                REPORTER: 'REPORTER',\n                DUPLICATES: 'DUPLICATES',\n                DUPLICATED: 'DUPLICATED',\n                BLOCKS: 'BLOCKS',\n                BLOCKED: 'BLOCKED',\n            },\n            labels: {\n                PROJECT: 'Project',\n                EPIC: 'Epic link',\n                FEATURE: 'Feature link',\n                SPRINT: 'Sprint',\n                POINTS: 'Story points',\n                VERSION_AFFECTED: 'Affects version/s',\n                VERSION_FIXED: 'Fix version/s', // aka \"revision\"\n                COMPONENT: 'Component/s',\n                STATUS: 'Status', // aka \"state\"\n                PRIORITY: 'Priority',\n                TYPE: 'Issue type',\n                ASSIGNEE: 'Assignee',\n                REPORTER: 'Reporter',\n                DUPLICATES: 'Duplicates (out)',\n                DUPLICATED: 'Is duplicated by (in)',\n                BLOCKS: 'Blocks (out)',\n                BLOCKED: 'Is blocked by (in)',\n            },\n            list: {\n                atlassian: [\n                    'PROJECT', 'EPIC', 'SPRINT', 'POINTS',\n                    'VERSION_AFFECTED', 'VERSION_FIXED', 'COMPONENT',\n                    'STATUS', 'PRIORITY', 'TYPE', 'ASSIGNEE', 'REPORTER',\n                    'DUPLICATES', 'DUPLICATED', 'BLOCKS', 'BLOCKED',\n                ],\n                microsoft: [\n                    'POINTS',\n                    'EPIC',\n                    'STATUS', 'PRIORITY', 'TYPE', 'ASSIGNEE', 'REPORTER',\n                    // 'REVISION' // Microsoft.VSTS.Build.FoundIn / VERSION_AFFECTED / build number, also known as a  revision, in which a bug was found.\n                    // 'REVISION2' // Microsoft.VSTS.Build.IntegrationBuild / VERSION_FIXED /  build number that incorporates the code or fixes a bug.\n\n                    // 'ACTIVITY' // Microsoft.VSTS.Common.Activity / Design, Development, Documentation, Testing, ...\n                    // SPRINT // System.IterationPath / Groups the work items by named sprints or time periods. The iteration must be a valid node in the project hierarchy.\n                    // PRIORITY // Microsoft.VSTS.Common.Priority / A subjective rating of the bug, issue, task, or test case as it relates to the business. You can specify the following values\n                    // RATING // POINTS? / 0-5 / Microsoft.VSTS.Common.Rating / The number of stars that an item receives from a reviewer in a star-based ranking system. (Feedback Response)\n                    // RISK / 1-3 / Microsoft.VSTS.Common.Risk / A subjective rating of the relative uncertainty about the successful completion of the user story\n\n                    // PROJECT / System.TeamProject / Team Project\n                    // AREA / COMPONENT or FEATURE / System.AreaPath / Groups the work items into product feature or team areas. The area must be a valid node in the project hierarchy.\n\n                    // Microsoft.VSTS.TCM.AutomationStatus\n                    // System.AssignedTo\n                    // NO / Microsoft.VSTS.CodeReview.ClosedStatus\n\n                    // Microsoft.VSTS.Common.BusinessValue\n                    // Microsoft.VSTS.Scheduling.CompletedWork\n                    // Microsoft.VSTS.Scheduling.Effort\n                    // Microsoft.VSTS.Scheduling.OriginalEstimate\n                    // Microsoft.VSTS.Scheduling.RemainingWork\n                    // Microsoft.VSTS.Scheduling.StoryPoints\n\n                    // ??? Severity / 1-3 /  Microsoft.VSTS.Common.Severity\n                    // ??? Stack Rank / 1-3 / Microsoft.VSTS.Common.Rank\n                    // ??? REASON / System.Reason / The reason that the work item is in the current state. Values are specific to both the state and the type of work item.\n                    // ??? REV / System.Rev / A number that is assigned to the historical revision of a work item.\n                ],\n            },\n            tree: {\n                atlassian: [\n                    {\n                        name: 'Issue fields',\n                        list: [\n                            'PROJECT', 'EPIC', 'SPRINT', 'POINTS',\n                            'VERSION_AFFECTED', 'VERSION_FIXED', 'COMPONENT',\n                            'STATUS', 'PRIORITY', 'TYPE', 'ASSIGNEE', 'REPORTER',\n                        ]\n                    },\n                    {\n                        name: 'Linked issues',\n                        list: [\n                            'DUPLICATES', 'DUPLICATED', 'BLOCKS', 'BLOCKED',\n                        ]\n                    },\n                ],\n                microsoft: [\n                    {\n                        name: 'Issue fields',\n                        list: [\n                            'POINTS',\n                            'EPIC',\n                            'STATUS', 'PRIORITY', 'TYPE', 'ASSIGNEE', 'REPORTER',\n                        ]\n                    },\n                ],\n            },\n            default: {\n                atlassian: {\n                    column: 'POINTS',\n                    lane: 'SPRINT',\n                },\n                microsoft: {\n                    column: 'TYPE',\n                    lane: 'POINTS',\n                },\n            },\n            extras: { // experimental\n                NEW: '_n_e_w_',\n                OTHERS: '_o_t_h_e_r_s_',\n            }\n        },\n        lane: {\n            // @TODO: to do\n        },\n    },\n\n    project: {},\n\n    issue: {\n        // temporal\n        type: {\n            values: {\n                EPIC: 'Epic',\n            }\n        },\n        fields: [\n            'id', 'watches', 'versions', 'summary', 'subtasks', 'status', 'resolution', 'reporter', 'labels', 'parent',\n            'project', 'progress', 'priority', 'issuetype', 'issuelinks', 'fixVersions', 'components', 'assignee', 'created', 'updated'\n            // Sprint\n            // Story points\n            // Rank\n            // Epic link\n        ]\n    },\n\n    epicColors: {\n        1: '#815b3a',\n        2: '#f79132',\n        3: '#d39d3f',\n        4: '#3b80c4',\n        5: '#4a6785',\n        6: '#8fb021',\n        7: '#ac707a',\n        8: '#644982',\n        9: '#f15c75',\n    },\n\n    fields: {\n        all: ['aggregateprogress', 'aggregatetimeestimate', 'aggregatetimeoriginalestimate', 'aggregatetimespent', 'assignee', 'attachment', 'comment', 'components', 'created', 'creator', 'description', 'duedate', 'environment', 'fixVersions', 'issueLinks', 'issueType', 'labels', 'lastViewd', 'points', 'priority', 'progress', 'project', 'reporter', 'resolution', 'resolutiondate', 'security', 'sprints', 'status', 'subtasks', 'summary', 'timeestimate', 'timeoriginalestimate', 'timespent', 'timetracking', 'updated', 'versions', 'votes', 'watches', 'worklog', 'workratio'],\n        notyetImplemented: ['assignee', 'attachment', 'comment', 'components', 'created', 'creator', 'description', 'duedate', 'environment', 'fixVersions', 'issueLinks', 'issueType', 'labels', 'lastViewd', 'points', 'priority', 'progress', 'project', 'reporter', 'resolution', 'resolutiondate', 'security', 'sprints', 'status', 'subtasks', 'summary', 'timeestimate', 'timeoriginalestimate', 'timespent', 'timetracking', 'updated', 'versions', 'votes', 'watches', 'worklog', 'workratio'],\n        readonly: ['aggregateprogress', 'aggregatetimeestimate', 'aggregatetimeoriginalestimate', 'aggregatetimespent', 'created', 'creator', 'lastViewd', 'progress', 'resolution', 'resolutiondate', 'timeoriginalestimate', 'timetracking', 'updated', 'worklog', 'workratio']\n    },\n\n    others: {\n        id: 'Others',\n        key: 'Others',\n        fields: {\n            issuelinks: [],\n            subtasks: [],\n            project: {\n                name: 'Others', avatarUrls: {\n                    '16x16': '/img/lightblue.svg',\n                    '24x24': '/img/lightblue.svg',\n                    '32x32': '/img/lightblue.svg',\n                    '48x48': '/img/lightblue.svg'\n                }\n            },\n            reporter: {\n                name: 'Others', displayName: 'Others', avatarUrl: '/img/lightblue.svg', avatarUrls: {\n                    '16x16': '/img/lightblue.svg',\n                    '24x24': '/img/lightblue.svg',\n                    '32x32': '/img/lightblue.svg',\n                    '48x48': '/img/lightblue.svg'\n                }\n            },\n            assignee: {\n                name: 'Others', displayName: 'Others', avatarUrl: '/img/lightblue.svg', avatarUrls: {\n                    '16x16': '/img/lightblue.svg',\n                    '24x24': '/img/lightblue.svg',\n                    '32x32': '/img/lightblue.svg',\n                    '48x48': '/img/lightblue.svg'\n                }\n            },\n            priority: {name: 'Others', iconUrl: '/img/lightblue.svg'},\n            issuetype: {name: 'Others', iconUrl: '/img/lightblue.svg'},\n            summary: 'Others',\n            name: 'Others',\n            description: 'Others',\n            status: {name: 'Others', iconUrl: '/img/lightblue.svg', statusCategory: {colorName: 'green'}},\n            color: {\n                key: 'color_1',\n            }\n        }\n    },\n};\n\nexport default config;\n\n// OBSOLETED?\n// priority:{name:'Others',iconUrl:'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5zOnNrZXRjaD0iaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoL25zIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggMy41LjIgKDI1MjM1KSAtIGh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaCAtLT4KICAgIDx0aXRsZT5zdWJ0YXNrPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGRlZnM+PC9kZWZzPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc2tldGNoOnR5cGU9Ik1TUGFnZSI+CiAgICAgICAgPGcgaWQ9InN1YnRhc2siIHNrZXRjaDp0eXBlPSJNU0FydGJvYXJkR3JvdXAiPgogICAgICAgICAgICA8ZyBpZD0iU3VidGFzayIgc2tldGNoOnR5cGU9Ik1TTGF5ZXJHcm91cCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS4wMDAwMDAsIDEuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlLTM2IiBmaWxsPSIjNEJBRUU4IiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHJ4PSIyIj48L3JlY3Q+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+'},\n// issuetype:{name:'Others',iconUrl:'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5zOnNrZXRjaD0iaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoL25zIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggMy41LjIgKDI1MjM1KSAtIGh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaCAtLT4KICAgIDx0aXRsZT5zdWJ0YXNrPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGRlZnM+PC9kZWZzPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc2tldGNoOnR5cGU9Ik1TUGFnZSI+CiAgICAgICAgPGcgaWQ9InN1YnRhc2siIHNrZXRjaDp0eXBlPSJNU0FydGJvYXJkR3JvdXAiPgogICAgICAgICAgICA8ZyBpZD0iU3VidGFzayIgc2tldGNoOnR5cGU9Ik1TTGF5ZXJHcm91cCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS4wMDAwMDAsIDEuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlLTM2IiBmaWxsPSIjNEJBRUU4IiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHJ4PSIyIj48L3JlY3Q+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+'},\n","import { io } from 'socket.io-client';\n\nimport { NgZone } from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\n\nimport {\n  EnvService,\n} from './index';\n\n@Injectable()\nexport class AppSocket {\n\n  private _socket: any;\n\n  constructor(\n    private _ngZone: NgZone,\n    protected envService: EnvService,\n  ) {\n  }\n\n  init(projects?: string) {\n    return;\n    if (this.envService.isAtlassian) {\n      this._socket = this.envService.isAtlassianServer ? new window['AP'].SocketService(projects) : io({\n          transports: ['websocket'],\n        }\n      );\n    }\n\n    this._socket && this._socket.on('connect', () => {\n      let roomKey = this.envService.options['client']; // aka \"Set\" in socket.io v3\n      this._socket.emit('room', roomKey);\n    });\n  }\n\n  on(eventName: string, projects?: string): Observable<any> {\n    if (!this._socket) { this.init(projects); }\n\n    return Observable.create(observer => {\n      this._socket ? this._socket.on(eventName, (data: any) => {\n        this._ngZone.run(() => {\n          data.webhook = true;\n          observer.next(data);\n        });\n      }) : observer.complete();\n    });\n  }\n\n  emit(eventName: string, data: any) {\n    this._socket && this._socket.emit(eventName, data);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { FormControl, FormGroup, FormArray, AbstractControl } from '@angular/forms';\nimport { ReplaySubject } from 'rxjs/ReplaySubject';\n\nimport { IEvent } from '../interfaces/event.interface';\n\nimport config from '../config';\n//import {} from './index';\n\n@Injectable()\nexport class DataService {\n\n  // TODO: naming\n  protected _type = null; // should be assigned in child services\n\n  protected _params: any = {\n    startAt: 0,\n    maxResults: 1000, // @TODO: how about 'null'?\n  };\n\n  protected _data: any = {\n    list: null,\n    view: null,\n    edit: null,\n  };\n\n  protected _observables: any = {\n    list: null,\n    view: null,\n    edit: null,\n  };\n\n  public data = this._data;\n  public observables = this._observables;\n\n  constructor() {\n    // init observers\n    ['list', 'view', 'edit', 'webhook'].forEach(prop => {\n      let observable = new ReplaySubject(1); // buffer last value\n      this._observables[prop] = observable;\n    });\n  }\n\n  assign(item: Object, data: Object = {}): Object {\n    Object.keys(item).forEach(key => !data[key] && (delete item[key]));\n    Object.keys(data).forEach(key => item[key] = data[key]);\n    return item;\n  }\n\n  view(item?: Object): void {\n    const data = item ? jQuery.extend(true, {}, item) : null;\n\n    this._data.view = data;\n    this._observables.view.next(data);\n  }\n\n  edit(item?: Object): void {\n    item = item || this._data.view || {};\n    const data = item ? jQuery.extend(true, {}, item) : null;\n\n    this._data.edit = data;\n    this._observables.edit.next(data);\n  }\n\n  editForm(form: FormGroup, item?: Object): void {\n    item = item || this._data.view || {};\n    const data = jQuery.extend(true, {}, item);\n\n    this._editForm(form, data);\n\n    this._data.edit = data;\n    this._observables.edit.next(data);\n  }\n\n  // experimental\n  reset() {\n    Object.keys(this._data).forEach(prop => { delete this._data[prop]; });\n  }\n\n  private _refresh(event: IEvent): void {\n    if (!event.data.target || event.data.target != this._type) { return; }\n\n    // update list\n    let list = (this._data.list || []).map(item => item.id);\n    list.length && list.indexOf(event.data.id) > -1 && this['list'] && this['list']();\n\n    // update view\n    this._data.view && this._data.view.id == event.data.id && this['get'] && this['get'](event.data.id);\n\n    // update edit\n    //this._data.edit && this._data.edit.id == event.data.id && this['get'] && this['get'](event.data.id);\n  }\n\n  private _cloneForm(abstractControl: AbstractControl): AbstractControl {\n    // experimental and weird\n    // supposed to be used to clone ControlArray elements\n    let control: FormControl | FormGroup | FormArray;\n\n    // ControlGroup\n    if (abstractControl instanceof FormGroup) {\n      let props = Object.keys(abstractControl.controls);\n      control = <FormGroup> new FormGroup({}, abstractControl.validator, abstractControl.asyncValidator);\n\n      for (let i = 0; i < props.length; ++i) {\n        let abstractControlItem = abstractControl.controls[props[i]];\n        control.addControl(props[i], this._cloneForm(abstractControlItem));\n      }\n    }\n\n    // ControlArray\n    if (abstractControl instanceof FormArray) {\n      let length = abstractControl.controls.length;\n      control = <FormArray> new FormArray([], abstractControl.validator, abstractControl.asyncValidator);\n\n      for (let i = 0; i < length; ++i) {\n        let abstractControlItem = abstractControl.controls[i];\n        control.push(this._cloneForm(abstractControlItem));\n      }\n    }\n\n    // Control\n    if (abstractControl instanceof FormControl) {\n      // how to set default values? :/\n      control = new FormControl(null, abstractControl.validator, abstractControl.asyncValidator);\n    }\n\n    return control;\n  }\n\n  private _editForm(abstractControl: AbstractControl, data: any): void {\n    // set initial values for form controls (recursively)\n    if (data === undefined) { return; }\n\n    // ControlGroup\n    if (abstractControl instanceof FormGroup) {\n\n      data = data || {};\n      let props = Object.keys(abstractControl.controls);\n\n      for (let i = 0; i < props.length; ++i) {\n        let abstractControlItem = abstractControl.controls[props[i]];\n        this._editForm(abstractControlItem, data[props[i]]);\n      }\n    }\n\n    // ControlArray\n    if (abstractControl instanceof FormArray) {\n\n      data = data || [];\n      let length = Math.max(abstractControl.controls.length, data.length);\n\n      for (let i = 0; i < length; ++i) {\n        let abstractControlItem = abstractControl.controls[i] || this.__editFormExtendArray(abstractControl);\n        this._editForm(abstractControlItem, data[i]);\n      }\n    }\n\n    // Control\n    if (abstractControl instanceof FormControl) {\n      abstractControl.setValue(data, {onlySelf: false, emitEvent: false, emitModelToViewChange: false}); // do it silently (last param)\n    }\n  }\n\n  private __editFormExtendArray(controlArray: FormArray): AbstractControl {\n    // to extend control array (see _editForm)\n    let prototypeControl = controlArray.controls[0] || new FormControl(); // could be even smarter\n    let control: AbstractControl = this._cloneForm(prototypeControl);\n\n    controlArray.push(control);\n    return control;\n  }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\nimport { Subject } from 'rxjs/Subject';\n\nimport { TNotificationId, INotification } from '../interfaces/notification.interface';\nimport { IBackendError } from '../interfaces/backend.interface';\nimport { EnvService } from './env.service';\nimport config from '../config';\n\n@Injectable()\nexport class NotificationService {\n  private INTERVAL = 3000;\n  protected _data: INotification[] = []; // experimental / could be more complex\n\n  public data = this._data;\n  public observable : Subject<INotification> = new Subject();\n  \n  constructor(\n    private ngZone: NgZone,\n    private envService: EnvService\n  ) {\n    this.observable.subscribe((notification: INotification) => {\n        envService.createFlag({\n            title: notification.data.title,\n            body: notification.data.text,\n            type: notification.data.level,\n          });\n    });\n  }\n\n  find(id: TNotificationId): INotification {\n    return (this._data || []).find(item => item.id == id);\n  }\n\n  create(item: {} | string, title?: string, level?: string): INotification {\n    let notification: INotification;\n\n    // create notification object\n    if (typeof item == 'string') {\n      notification = <any> {\n        data: {\n          level: level || config.notification.level.values.HINT,\n          title: title, // text\n          text: item, // text\n        },\n      };\n\n    } else {\n      notification = jQuery.extend(true, {}, item);\n    }\n\n    // set props\n    notification.id = <TNotificationId> '_' + Math.random().toString(36).substr(2, 9);\n    notification.type = notification.type || config.notification.type.values.DEFAULT;\n    notification.data = notification.data || {};\n    notification.created = Date.now();\n\n    notification.options = <any> Object.assign({}, config.notification.defaults, notification.options);\n\n    // set \"observable\" data props\n    if (notification.data instanceof Observable) {\n      let observable = <Observable<any>> notification.data;\n\n      notification.data = {};\n      observable.subscribe(this._subscribe(notification));\n    }\n\n    this._data.push(notification);\n    this.observable.next(notification);\n    return notification;\n  }\n\n  update(id: TNotificationId, data?: any): INotification {\n    let notification = this.find(id);\n\n    // pass // @todo: update notification\n    return notification;\n  }\n\n  delete(id: TNotificationId): TNotificationId {\n    let index = this.data.reduce((result, item, index) => {\n      return item.id == id ? index : result;\n    }, -1);\n\n    index > -1 && this._data.splice(index, 1);\n\n    return id;\n  }\n\n  createFromBackendError(data: IBackendError | string): INotification[] {\n    let dataErrorMessages = data['errorMessages'] || [];\n    let dataErrors = Object.keys(data['errors'] || {}).map(item => data['errors'][item]);\n    let messages = dataErrorMessages.length ? dataErrorMessages : dataErrors.length ? dataErrors : [data.toString()];\n\n    return messages.map(item => this.create(item, '', 'error'));\n  }\n\n  trackBy(index: number, item): any {\n    return item && item['id'];\n  }\n\n  private _subscribe(notification: INotification) {\n    return (data: any) => {\n      notification.data = data; // unpack observerable data\n    };\n  }\n\n  private _refresh(notifications: INotification[] = []) {\n    let now = Date.now();\n\n    for (let i = notifications.length - 1; i >= 0; i--) {\n      let item = notifications[i];\n      let dismiss = (\n        item.options.dismissOnTimeout\n          ? item.options.timeout\n          ? item.created + item.options.timeout < now : false : false\n        // add more conditions here\n      );\n\n      dismiss && item.options.onDismiss && item.options.onDismiss(item);\n      dismiss && this._data.splice(i, 1);\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\n\nimport { TAtlassianUserId, IAtlassianUser } from '../interfaces/user.atlassian.interface';\nimport { IBackendAtlassianError, IBackendAtlassianUserList } from '../interfaces/backend.atlassian.interface';\nimport { TUserId, IUser } from '../interfaces/user.interface';\n\nimport config from '../config';\nimport {\n  AppHttp,\n  DataService,\n  EnvAtlassianService,\n} from './index';\n\n@Injectable()\nexport class UserAtlassianService extends DataService {\n\n  protected _params = {\n  };\n\n  constructor(\n    protected http: AppHttp,\n    protected envAtlassianService: EnvAtlassianService\n  ) {\n    super();\n  }\n\n  format(atlassianUser: IAtlassianUser): IUser {\n    let user: IUser = <any>{\n      id: atlassianUser.id,\n      key: atlassianUser.key,\n      name: atlassianUser.name,\n      avatarUrl: this.getAvatarUrl(atlassianUser),\n\n      atlassian: atlassianUser,\n    }\n\n    return user;\n  }\n\n  list(params?: any): Observable<IBackendAtlassianUserList> {\n    params = jQuery.extend(true, {}, this._params, params);\n\n    // GET '/user/search'\n    const observable = this.http.get(this.envAtlassianService.options.api.base + 'user/search', params);\n\n    observable.subscribe(\n      (data: IBackendAtlassianUserList) => {\n        this._data.list = (data || []).map(item => this.format(item));\n\n        // RESERVED \n        // this._data.listMeta = {\n        //   count: data.total,\n        //   startAt: data.startAt,\n        // };\n\n        this._observables.list.next(this._data.list);\n      }\n    );\n\n    return observable;\n  }\n\n  getAvatarUrl(item: IAtlassianUser): string {\n    return item && item.avatarUrls ? item.avatarUrls['16x16'] : '/img/useravatar_small.png'; // legacy: $options.init.base + '/img/useravatar_small.png';\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\n\nimport { TMicrosoftUserId, IMicrosoftUser } from '../interfaces/user.microsoft.interface';\nimport { IBackendMicrosoftError, IBackendMicrosoftUserList } from '../interfaces/backend.microsoft.interface';\nimport { TUserId, IUser } from '../interfaces/user.interface';\n\nimport config from '../config';\nimport {\n  AppHttp,\n  DataService,\n  EnvMicrosoftService,\n} from './index';\n\n@Injectable()\nexport class UserMicrosoftService extends DataService {\n\n  protected _params = {\n  };\n\n  constructor(\n    protected http: AppHttp,\n    protected envMicrosoftService: EnvMicrosoftService\n  ) {\n    super();\n  }\n\n  format(microsoftUser: IMicrosoftUser): IUser {\n    let user: IUser = <any>{\n      id: microsoftUser.id || microsoftUser.uniqueName,\n      key: microsoftUser.id || microsoftUser.uniqueName,\n      name: microsoftUser.displayName || microsoftUser.uniqueName,\n      avatarUrl: this.getAvatarUrl(microsoftUser),\n\n      microsoft: microsoftUser,\n    }\n\n    return user;\n  }\n\n  list(params?: any): Observable<IBackendMicrosoftUserList> {\n    params = jQuery.extend(true, {}, this._params, params);\n\n    // GET '/user/search'\n    const observable = this.http.get(this.envMicrosoftService.options.api.base + 'user/search', params);\n\n    observable.subscribe(\n      (data: IBackendMicrosoftUserList) => {\n        this._data.list = (data.value || []).map(item => this.format(item));\n\n        // RESERVED \n        // this._data.listMeta = {\n        //   count: data.total,\n        //   startAt: data.startAt,\n        // };\n\n        this._observables.list.next(this._data.list);\n      }\n    );\n\n    return observable;\n  }\n\n  getAvatarUrl(item: IMicrosoftUser): string {\n    return item['imageUrl'];\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\n\nimport { TUserId, IUser } from '../interfaces/user.interface';\nimport { IBackendError, IBackendUserList } from '../interfaces/backend.interface';\n\nimport config from '../config';\nimport {\n  AppHttp,\n  DataService,\n  EnvService,\n  UserAtlassianService,\n  UserMicrosoftService\n} from './index';\n\n@Injectable()\nexport class UserService extends DataService {\n\n  platform: any; // service\n  data: any;\n\n  constructor(\n    protected http: AppHttp,\n    protected envService: EnvService,\n    // platform specific sub services\n    public atlassian: UserAtlassianService,\n    public microsoft: UserMicrosoftService\n  ) {\n    super();\n\n    this.platform =\n      this.envService.isAtlassian ? this.atlassian :\n      this.envService.isMicrosoft ? this.microsoft :\n      null;\n\n    this.data = this.platform.data;\n  }\n\n  list(params?: any): Observable<IBackendUserList> {\n    return this.platform.list(params);\n  }\n}\n","export * from './http.service';\nexport * from './storage.service';\nexport * from './env.service';\nexport * from './env.atlassian.service';\nexport * from './env.microsoft.service';\nexport * from './socket.service';\n\nexport * from './data.service';\nexport * from './notification.service';\nexport * from './user.atlassian.service';\nexport * from './user.microsoft.service';\nexport * from './user.service';\nexport * from './board.service';\nexport * from './filter.service';\nexport * from './issue.atlassian.service';\nexport * from './issue.microsoft.service';\nexport * from './issue.service';\nexport * from './map.service';\n\n// RESERVED / export * from './backend.service';\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\n\nimport { TBoardId, IBoard } from '../interfaces/board.interface';\nimport { IBackendError, IBackendBoardList } from '../interfaces/backend.interface';\n\nimport config from '../config';\nimport {\n  AppHttp,\n  DataService,\n  NotificationService,\n  EnvAtlassianService,\n} from './index';\n\n@Injectable()\nexport class BoardService extends DataService {\n\n  protected _params = {\n    startAt: 0,\n    maxResults: 100,\n    // type: ...\n    // name: ...\n    // projectKeyOrId: ...\n  };\n\n  constructor(\n    protected http: AppHttp,\n    protected notificationService: NotificationService,\n    protected envAtlassianService: EnvAtlassianService\n  ) {\n    super();\n  }\n\n  _parse(board: IBoard, list: IBoard[] = []) {\n    // pass / not in use\n    return board;\n  }\n\n  find(id): IBoard {\n    return (this._data.list || []).find(item => item.id == id);\n  }\n\n  findIndex(id): number {\n    return (this._data.list || []).findIndex(item => item.id == id);\n  }\n\n  list(params?: any): Observable<IBackendBoardList> {\n    params = jQuery.extend(true, {}, this._params, params);\n\n    // GET '/board'\n    const observable = this.http.get(this.envAtlassianService.options.api.base + 'board', params);\n\n    observable.subscribe(\n      (data: IBackendBoardList) => {\n        this._data.list = (data.values || []).map(item => this._parse(item, data.values));\n\n        // RESERVED \n        // this._data.listMeta = {\n        //   count: data.total,\n        //   startAt: data.startAt,\n        // };\n\n        this._observables.list.next(this._data.list);\n      }\n    );\n\n    return observable;\n  }\n\n  retrive(id: TBoardId): Observable<IBoard> {\n    // GET '/board/:id'\n    const observable = this.http.get(this.envAtlassianService.options.api.base + 'board/' + id);\n\n    observable.subscribe(\n      (data: IBoard) => {\n        // update view object / not in use...\n        this._data.view = data;\n        this._observables.view.next(data);\n\n        let list = this._data.list;\n        if (!list) { return; }\n\n        // update list\n        let board = this.find(data.id);\n        let issueData = this._parse(data, list);\n\n        board ? this.assign(board, issueData) : list.push(issueData);\n        this._observables.list.next(list);\n      }\n    );\n\n    return observable;\n  }\n\n  create(data: any): Observable<IBoard> {\n    data = jQuery.extend(true, {}, data);\n\n    // POST '/board'\n    const observable = this.http.post(this.envAtlassianService.options.api.base + 'board', data);\n\n    observable.subscribe(\n      (data: IBoard) => {\n        // update view object / not in use...\n        this._data.view = data;\n        this._observables.view.next(data);\n\n        let list = this._data.list;\n        if (!list) { return; }\n\n        // update list\n        let board = this.find(data.id);\n        let issueData = this._parse(data, list);\n\n        board ? this.assign(board, issueData) : list.push(issueData);\n        this._observables.list.next(list);\n      },\n      (err: IBackendError) => {\n        this.notificationService.createFromBackendError(err);\n      }\n    );\n\n    return observable;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\n\nimport { TFilterId, IFilter } from '../interfaces/filter.interface';\nimport { IBackendError } from '../interfaces/backend.interface';\n\nimport config from '../config';\nimport {\n  AppHttp,\n  DataService,\n  NotificationService,\n  EnvAtlassianService\n} from './index';\n\n@Injectable()\nexport class FilterService extends DataService {\n\n  constructor(\n    protected http: AppHttp,\n    protected notificationService: NotificationService,\n    protected envAtlassianService: EnvAtlassianService\n  ) {\n    super();\n  }\n\n  _parse(filter: IFilter, list: IFilter[] = []) {\n    // pass / not in use\n    return filter;\n  }\n\n  find(id): IFilter {\n    return (this._data.list || []).find(item => item.id == id);\n  }\n\n  findIndex(id): number {\n    return (this._data.list || []).findIndex(item => item.id == id);\n  }\n\n  retrive(id: TFilterId): Observable<IFilter> {\n    // GET '/filter/:id'\n    const observable = this.http.get(this.envAtlassianService.options.api.base + 'filter/' + id);\n\n    observable.subscribe(\n      (data: IFilter) => {\n        this._data.view = data;\n        this._observables.view.next(data);\n      }\n    );\n\n    return observable;\n  }\n\n  create(data: any): Observable<IFilter> {\n    data = jQuery.extend(true, {}, data);\n\n    // POST '/filter'\n    const observable = this.http.post(this.envAtlassianService.options.api.base + 'filter', data);\n\n    observable.subscribe(\n      (data: IFilter) => {\n        this._data.view = data;\n        this._observables.view.next(data);\n      },\n      (err: IBackendError) => {\n        this.notificationService.createFromBackendError(err);\n      }\n    );\n\n    return observable;\n  }\n\n  update(filter: IFilter, data: any): Observable<IFilter> {\n    if (!filter.id) return this.create(Object.assign({}, filter, data)); // dirty?...\n    data = jQuery.extend(true, {}, data);\n\n    // PUT '/filter/:id'\n    const observable = this.http.put(this.envAtlassianService.options.api.base + 'filter/' + filter.id, data);\n\n    observable.subscribe(\n      (data: IFilter) => {\n        this._data.view = data;\n        this._observables.view.next(data);\n      },\n      (err: IBackendError) => {\n        this.notificationService.createFromBackendError(err);\n      }\n    );\n\n    return observable;\n  }\n}\n","// TODO: move it somewhere\n// does anybody know proper way to parse stringified Java objects?\n// ex. \"com.atlassian.sprint.Sprint@1a0ccd6[id=1,name=Sprint 1,completeDate=<null>]\"\nexport function parseJavaObject(value: string) {\n  value = value || '';\n  value = typeof value === 'string' ? value : JSON.stringify(value);\n  value = value.substring(value.indexOf('[') + 1, value.lastIndexOf(']'));\n\n  // get values\n  let values: any[] = value.split(',');\n  values = values.map(item => [item.substring(0, item.indexOf('=')), item.substring(item.indexOf('=') + 1)]); // let's make it gently\n\n  // format values\n  values = values.map(item =>\n    item[1] == '<null>' ? [item[0], null] : item\n  )\n\n  // convert props and values to object\n  let data = {};\n  values.forEach(item => data[item[0]] = item[1]);\n\n  return data;\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\nimport { ReplaySubject } from 'rxjs/ReplaySubject';\n\nimport { TGroupId, IGroup } from '../interfaces/map.interface';\nimport { TIssueId, TIssueIndex, IIssue, IIssueComment } from '../interfaces/issue.interface';\nimport { IBackendError, IBackendIssueList } from '../interfaces/backend.interface';\n\nimport { parseJavaObject } from '../utils/misc';\n\nimport config from '../config';\nimport { IssueAtlassianService } from './issue.atlassian.service';\nimport { IssueMicrosoftService } from './issue.microsoft.service';\nimport {\n  AppHttp,\n  AppSocket,\n  DataService,\n  NotificationService,\n  EnvService,\n  UserService,\n} from './index';\n\n@Injectable()\nexport class IssueService extends DataService {\n\n  platform: any; // service\n\n  constructor(\n    protected http: AppHttp,\n    protected socket: AppSocket,\n    protected notificationService: NotificationService,\n    protected envService: EnvService,\n    protected userService: UserService,\n    // platform specific sub services\n    public atlassian: IssueAtlassianService,\n    public microsoft: IssueMicrosoftService\n  ) {\n    super();\n\n    this.platform =\n      this.envService.isAtlassian ? this.atlassian :\n      this.envService.isMicrosoft ? this.microsoft :\n      null;\n\n    this.data = this._data = this.platform.data;\n    this.observables = this._observables = this.platform.observables;\n  }\n\n  find(id: TIssueId): IIssue {\n    return this.platform.find(id);\n  }\n\n  findIndex(id: TIssueId): number {\n    return this.platform.findIndex(id);\n  }\n\n  isLocked(id: TIssueId): boolean {\n    let issue = this.find(id);\n    return issue ? issue.state.locks > 0 : false;\n  }\n\n  isUnlocked(id: TIssueId): boolean {\n    let issue = this.find(id);\n    return issue ? issue.state.locks == 0 : true;\n  }\n\n  // experimental\n  isEpic(id: TIssueId): boolean {\n    return this.platform.isEpic(id);\n  }\n\n  // experimental\n  isFeature(id: TIssueId): boolean {\n    return this.platform.isFeature(id);\n  }\n\n  list(params?: any): Observable<any> {\n    const observable =  this.platform.list(params);\n    return observable;\n  }\n\n  retrive(id: TIssueId): Observable<any> {\n    const observable = this.platform.retrive(id);\n\n    // TODO: revert in case of server error/rejection\n    // let issue = this.find(data.id);\n    // issue && this.regroup(issue);\n\n    return observable;\n  }\n  \n  retriveComments(id: string): Observable<[IIssueComment]>{\n    return this.platform.retriveComments(id);\n  }\n  \n  toggleQuickFilter(id){\n    this.platform.toggleQuickFilter(id);\n  }\n\n  updateRank(issue: IIssue, issueBefore: IIssue, issueAfter: IIssue): Observable<void> {\n    const observable = this.platform.updateRank(issue, issueBefore, issueAfter);\n    return this._update(issue, observable);\n  }\n\n  updateGroup(issue: IIssue, group: IGroup, add: boolean = true): Observable<any> {\n    const observable = this.platform.updateGroup(issue, group, add);\n    return this._update(issue, observable);\n  }\n\n  // experimental\n  updateGroupProperties(issue: IIssue, type: string, addGroups: IGroup[], removeGroups: IGroup[]): Observable<any> {\n    const observable = this.platform.updateGroupProperties(issue, type, addGroups, removeGroups);\n    return this._update(issue, observable);\n  }\n\n  // experimental\n  updateDescription(issue: IIssue, description: string): Observable<any> {\n    const observable = this.platform.updateDescription(issue, description);\n    return this._update(issue, observable);\n  }\n\n  isUpdateGroup(issue: IIssue, group: IGroup): boolean {\n    return this.platform.isUpdateGroup(issue, group);\n  }\n\n  // experimental\n  delete(id: TIssueId) {\n    const observable =  this.platform.delete(id);\n    return observable;\n  }\n\n  url(issue: IIssue): string {\n    return this.platform.url(issue);\n  }\n\n  _update(issue, observable: Observable<void>): Observable<any> {\n    issue.state.locks++; // exprimental\n\n    observable.subscribe(\n      () => {},\n      () => {},\n      () => {\n        issue.state.locks--;\n      }\n    );\n\n    return observable;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs/ReplaySubject';\n\nimport { TGroupId, TGroupType, IGroup } from '../interfaces/map.interface';\nimport { TIssueId, TIssueIndex, IIssue } from '../interfaces/issue.interface';\n\nimport config from '../config';\nimport {\n  EnvService,\n  IssueService,\n} from './index';\n\n@Injectable()\nexport class MapService {\n\n  protected _data: {\n    _issues: IIssue[];\n    _indexes: TIssueIndex[];\n    _locks: number;\n\n    ranks: {[key: string]: {[key: string]: number}[]}; // key: TGroupType, key: TIssueId\n    groups: {[key: string]: IGroup[]}; // key: TGroupType\n    issues: TIssueIndex[][][];\n    laneGroups: IGroup[];\n    columnGroups: IGroup[];\n\n  } = {\n    _issues: null, // list of issues\n    _indexes: null, // list of issues indexes ordered by rank\n    _locks: 0, // counter / to lock map refreshing\n\n    ranks: {},\n    groups: {},\n    issues: null,\n    laneGroups: null,\n    columnGroups: null,\n  };\n\n  protected _observables: any = {\n  }\n\n  public data = this._data;\n  public observables = this._observables;\n  public types: { // aka group types\n    tree: any;\n    list: string[];\n    default: {\n      column: string;\n      lane: string;\n    };\n  } = <any>{};\n\n  constructor(\n    protected envService: EnvService,\n    protected issueService: IssueService\n  ) {\n    // init observerables\n    let observable = new ReplaySubject(1); // buffer last value\n    this._observables['groups'] = observable;\n\n    // init triggres\n    this.issueService.observables.list.subscribe((data: IIssue[]) => {\n      this.group(data); // create groups\n    });\n\n    this.issueService.observables.view.subscribe((data: IIssue) => {\n      this.regroup(data.id); // update groups\n    });\n\n    // init ranks\n    this._data.ranks = this.envService.getScopePreferences('ranks') || {};\n\n    // init groups / experimental\n    this.types.list =\n      this.envService.isAtlassian ? config.map.group.list.atlassian :\n      this.envService.isMicrosoft ? config.map.group.list.microsoft :\n      <any>[];\n\n    this.types.tree =\n      this.envService.isAtlassian ? config.map.group.tree.atlassian :\n      this.envService.isMicrosoft ? config.map.group.tree.microsoft :\n      <any>[];\n\n    this.types.default =\n      this.envService.isAtlassian ? config.map.group.default.atlassian :\n      this.envService.isMicrosoft ? config.map.group.default.microsoft :\n      <any>{};\n  }\n\n  get isLocked(): boolean {\n    return this._data._locks > 0;\n  }\n\n  get isUnlocked(): boolean {\n    return this._data._locks == 0;\n  }\n\n  // OBSOLETED\n  // // experimental\n  // findPrevious(issueId: TIssueId): IIssue {\n  //   let issues = this._data._issues;\n  //   let indexes = this._data._indexes;\n\n  //   let index = this.issueService.findIndex(issueId);\n  //   let indexOrdered = indexes.indexOf(index) - 1;\n\n  //   return indexOrdered > -1 ? issues[indexes[indexOrdered]] : undefined;\n  // }\n\n  // // experimental\n  // findNext(issueId: TIssueId): IIssue {\n  //   let issues = this._data._issues;\n  //   let indexes = this._data._indexes;\n\n  //   let index = this.issueService.findIndex(issueId);\n  //   let indexOrdered = indexes.indexOf(index) + 1;\n\n  //   return indexOrdered < indexes.length ? issues[indexes[indexOrdered]] : undefined;\n  // }\n\n  // rank groups / experimental\n  rank(group: IGroup, groupBefore: IGroup, groupAfter: IGroup) {\n    let groups = this._data.groups[group.type].filter(item => item.id != group.id); // cut group\n    let indexBefore = groupBefore ? groups.findIndex(item => item.id == groupBefore.id) : -1;\n    let indexAfter = groupAfter ? groups.findIndex(item => item.id == groupAfter.id) : -1;\n    let index = indexAfter > -1 ? indexAfter : indexBefore > -1 ? indexBefore + 1 : groups.length;\n    groups.splice(index, 0, group);\n\n    // update ranks\n    groups.forEach((item: IGroup, index) => item.rank = index);\n\n    this._data.ranks[group.type] = groups.reduce((output: any, item: IGroup) => {\n      output[item.id] = item.rank;\n      return output;\n    }, {});\n\n    // store ranks\n    this._data.groups[group.type] = groups;\n    this.envService.setScopePreferences('ranks', this._data.ranks);\n    this._observables.groups.next(this._data.groups);\n  }\n\n  // create groups (aka pre-mapping)\n  group(issues: IIssue[]) {\n    let groups: {[key: string]: IGroup[]} = {};\n    let indexes: TIssueIndex[] = issues.map((item, index) => index).sort((a, b) =>\n       issues[a].state.rank > issues[b].state.rank ? 1 : -1\n    ); // experimental\n\n    this.types.list.forEach(item => {\n      groups[item] = this._group(item, issues, indexes);\n      groups[item] = this._rank(item, groups[item]);\n    });\n\n    this._data._issues = issues;\n    this._data._indexes = indexes;\n    this._data.groups = groups;\n    this._observables.groups.next(this._data.groups);\n  }\n\n  regroup(issueId: TIssueId) {\n    let issues = this._data._issues;\n    let indexes = this._data._indexes;\n\n    let issueIndex = issues.findIndex(item => item.id == issueId);\n    let issue = issues[issueIndex];\n\n    if (!issue) { return; }\n    if (!this.isUnlocked) { return; }\n\n    let isEpicGroupItem = !this.issueService.isEpic(issue.id); // to customly process EPIC/FEATURE issues\n    let isFeatureGroupItem = !this.issueService.isFeature(issue.id);\n\n    // yeah, looks terrifying\n    this.types.list.forEach(item => {\n      let isGroupItem = !this._isEpicGroup(<any>{type: item}) || (isEpicGroupItem && isFeatureGroupItem);\n\n      // create group for specific issue\n      let newGroups: IGroup[] = this._group(item, [issue], [0]); // mimic params\n      let oldGroups: IGroup[] = this._data.groups[item];\n\n      // remove issue from group items\n      let newGroupIds = newGroups.map(itemGroup => itemGroup.id);\n      oldGroups.forEach((itemGroup: IGroup) => {\n        let itemIndex = itemGroup.items.indexOf(issueIndex);\n        newGroupIds.indexOf(itemGroup.id) == -1 && itemIndex > -1 && itemGroup.items.splice(itemIndex, 1); // remove the issue\n        itemGroup.points = itemGroup.items.reduce((output: number, item: TIssueIndex) => output + issues[item].points, 0);\n      });\n\n      // add issue to group items (and add group items)\n      let oldGroupIds = oldGroups.map(itemGroup => itemGroup.id);\n\n      isGroupItem && newGroups.forEach((itemGroup: IGroup) => {\n        let groupIndex = oldGroupIds.indexOf(itemGroup.id);\n\n        if (groupIndex > -1) {\n          oldGroups[groupIndex].items.indexOf(issueIndex) == -1 && oldGroups[groupIndex].items.push(issueIndex); // add the issue\n        } else {\n          oldGroups.push(itemGroup); // add group item\n          groupIndex = oldGroups.length - 1;\n        }\n\n        groupIndex != -1 && oldGroups[groupIndex].items.sort((a, b) => indexes.indexOf(a) > indexes.indexOf(b) ? 1 : -1); // refresh groups that includes the issue\n        itemGroup.points = itemGroup.items.reduce((output: number, item: TIssueIndex) => output + issues[item].points, 0);\n      });\n\n      // OBSOLETED\n      // remove empty groups items\n      // this._data.groups[item] = oldGroups.filter(itemGroup => itemGroup.items.length);\n    });\n\n    // notify subscribers\n    this._observables.groups.next(this._data.groups);\n  }\n\n  reorder(issueId: TIssueId, issueBefore: IIssue, issueAfter: IIssue) {\n    let issues = this._data._issues;\n    let indexes = this._data._indexes;\n    let index = issues.findIndex(item => item.id == issueId);\n\n    // get old sorting index\n    let indexOld = indexes.findIndex(item => issues[item].id == issueId);\n    indexes.splice(indexOld, 1).pop();\n\n    // set new sorting index\n    let indexBefore = issueBefore ? indexes.findIndex(item => issues[item].id == issueBefore.id) : -1;\n    let indexAfter = issueAfter ? indexes.findIndex(item => issues[item].id == issueAfter.id) : -1;\n    let indexNew = indexAfter > -1 ? indexAfter : indexBefore > -1 ? indexBefore + 1 : issues.length;\n    indexes.splice(indexNew, 0, index);\n  }\n\n  // TODO: specify filter type\n  render(columnType: string, laneType: string, filterGroups: any) {\n    if (this.isLocked) { return; }\n\n    let data = this._data;\n\n    // map groups\n    data.columnGroups = this._renderGroups(columnType, data.groups, filterGroups);\n    data.laneGroups = this._renderGroups(laneType, data.groups, filterGroups);\n\n    // map issues\n    data.issues = this._renderIssues(data.columnGroups, data.laneGroups);\n\n    // map analytics\n    data.columnGroups = data.columnGroups.map((group: IGroup) => {\n      group['analytics'] = group.items.reduce((output: any, item: TIssueIndex, index) => {\n        let issue = this._data._issues[item];\n\n        return {\n          points: output.points + issue.points,\n          progress: (output.progress * index + issue.progress) / (index + 1), // don't take points in account\n\n          // OBSOLETED / itemsTotal: output.itemsTotal + 1,\n          // OBSOLETED / itemsCompleted: output.itemsCompleted + (issue.progress == 1 ? 1 : 0), // weak\n        }\n      }, {points: 0, progress: 0});\n\n      return group;\n    });\n  }\n\n  addLock(n: number = 1): number {\n    return this._data._locks += n;\n  }\n\n  removeLock(n: number = 1): number {\n    return this._data._locks -= n;\n  }\n\n  private _renderGroups(type: string, groups: any, filterGroups: any): any {\n    return ((groups || {})[type] || []).filter((group: IGroup) =>\n      !filterGroups[type].items[group.id].hidden\n    );\n  }\n\n  private _renderIssues(columnGroups: IGroup[], laneGroups: IGroup[]): any {\n    return (\n      // generate lanes\n      laneGroups.map((groupLane: IGroup) =>\n\n        // generate columns\n        columnGroups.map((groupColumn: IGroup) =>\n          groupColumn.items.filter((item: TIssueIndex) =>\n            groupLane.items.indexOf(item) > -1\n          )\n        )\n\n      )\n    );\n  }\n\n  // experimental\n  // TODO: think to rename\n  private _rank(type: TGroupType, groups: IGroup[]): any {\n    let ranks = this._data.ranks[type] || {};\n    let { OTHERS } = config.map.group.extras;\n\n    // pre sort by alphabet\n    groups = groups.sort((a: IGroup, b: IGroup) => (\n      type == config.map.group.values.POINTS ?\n        parseFloat(a.name) > parseFloat(b.name) ? 1 : -1\n      :\n        a.id == OTHERS ? 1 :\n        b.id == OTHERS ? -1 :\n        a.name > b.name ? 1 : -1\n    ));\n\n    // rank by preferences and order\n    let rankLast = (groups[0] || {})['rank'] || 0;\n    groups.forEach((item: IGroup, index) => {\n      item.rank = ranks.hasOwnProperty(item.id) ? ranks[item.id] : rankLast;\n      rankLast = item.rank;\n    });\n\n    // sort by rank\n    groups = groups.sort((a: IGroup, b: IGroup) => a.rank > b.rank ? 1 : -1);\n\n    // experimental\n    // sort by parents / for epics only\n    // (keep groups with the same \"parent\" together)\n    if (type == config.map.group.values.EPIC) {\n      let parentIndexes = {};\n \n      groups = groups.reduce((output: IGroup[], itemGroup: IGroup, index) => {\n        if (itemGroup.parent) {\n          let parent = itemGroup.parent;\n          parent.first = !(parent.id in parentIndexes);\n\n          parentIndexes[parent.id] = parent.first ? index : parentIndexes[parent.id] + 1;\n          output.splice(parentIndexes[parent.id], 0, itemGroup);\n\n        } else {\n          output.push(itemGroup);\n        }\n\n        return output;\n      }, []);\n    }\n\n    // rank by indexes\n    groups.forEach((item: IGroup, index) => item.rank = index);\n\n    return groups;\n  }\n\n  // arrange groups for specific group type\n  private _group(type: TGroupType, issues: IIssue[], indexes: TIssueIndex[]): IGroup[] {\n    let ids: TGroupId[] = []; // to speed up grouping\n\n    // create groups\n    let groups = indexes.reduce((output: IGroup[], issueIndex: TIssueIndex) => {\n      let issue = issues[issueIndex];\n      let groups = this._groupCreate(type, issue, issueIndex);\n\n      groups.forEach((group: IGroup) => {\n        let indexOutput = ids.indexOf(group.id);\n\n        let isEpicGroupItem = !this.issueService.isEpic(issue.id); // to customly process EPIC/FEATURE issues\n        let isFeatureGroupItem = !this.issueService.isFeature(issue.id);\n        let isGroupItem = !this._isEpicGroup(<any>{type: type}) || (isEpicGroupItem && isFeatureGroupItem);\n\n        // create or update group\n        if (indexOutput == -1) {\n          group.type = type;\n          group.items = isGroupItem ? [issueIndex] : [];\n          group.points = issue.points || 0;\n          group.rank = group.id == config.map.group.extras.OTHERS ? 100 : 0; // move 'others' to the end\n\n          output.push(group);\n          ids.push(group.id);\n\n        } else {\n          group = output[indexOutput];\n\n          // TODO: optimize condition\n          if (isGroupItem) {\n            group.items.push(issueIndex);\n            group.points += issue.points || 0;\n\n          } else {\n            // process epic items for epic groups differently\n            group.issueIndex === undefined && this.issueService.isEpic(issue.id)\n              && (group.issueIndex = issueIndex);\n          }\n        }\n      });\n\n      return output;\n    }, []);\n\n    // experimental\n    // arrange groups\n    // (for epics only)\n    // let groupsParents = {};\n    // groups.\n\n    return groups;\n  }\n\n  // arrange group(s) for specific issue\n  private _groupCreate(type: TGroupType, item: IIssue, index: TIssueIndex): IGroup[] {\n    let types = config.map.group.values;\n    let { OTHERS } = config.map.group.extras;\n\n    switch(type) {\n\n      case types.PROJECT:\n        return [{\n          id: item.atlassian.fields['project']['id'] || OTHERS,\n          name: item.atlassian.fields['project']['name'] || 'Others',\n        }];\n\n      case types.EPIC:\n        let parentIssueId = (item.links['parent'] || {})['id'];\n        let parentIssueIndex = parentIssueId && this.issueService.findIndex(parentIssueId);\n        let parentIssue = parentIssueIndex && this.issueService.data.list[parentIssueIndex];\n\n        let grandParentIssueId = parentIssue && (parentIssue.links['parent'] || {})['id'];\n        let grandparentIssueIndex = grandParentIssueId && this.issueService.findIndex(grandParentIssueId);\n        let grandparentIssue = grandparentIssueIndex && this.issueService.data.list[grandparentIssueIndex];\n\n        return this.issueService.isEpic(item.id) || this.issueService.isFeature(item.id) ? [\n        ] : [{\n          id: (parentIssue || {})['id'] || OTHERS, // should be 'none' for unlinked group\n          name: (parentIssue || {})['key'] || 'Unlinked',\n          issueIndex: parentIssueIndex,\n          parent: this.envService.isMicrosoft ? grandparentIssue && { // experimental\n            id: grandparentIssue['id'],\n            name: grandparentIssue['name'],\n            issueIndex: grandparentIssueIndex,\n          } || {\n            id: OTHERS,\n            name: 'Others',\n          } : undefined\n        }];\n\n        // OBSOLETED\n        // return this.issueService.isEpic(item.id) ? this.envService.isAtlassian && [\n        //   id: item['id'],\n        //   name: item['key'],\n        //   issueIndex: index,\n        // }] : this.issueService.isFeature(item.id) ? this.envService.isMicrosoft && [{\n        //   id: item['id'],\n        //   name: item['key'],\n        //   issueIndex: index,\n        //   parent: parentIssue && { // experimental\n        //     id: parentIssue['id'],\n        //     name: parentIssue['name'],\n        //     issueIndex: parentIssueIndex,\n        //   } || {\n        //     id: OTHERS,\n        //     name: 'Others',\n        //   }\n        // }] : [{\n        //   id: (parentIssue || {})['id'] || OTHERS, // should be 'none' for unlinked group\n        //   name: (parentIssue || {})['key'] || 'Unlinked',\n        //   parent: this.envService.isMicrosoft ? grandparentIssue && { // experimental\n        //     id: grandparentIssue['id'],\n        //     name: grandparentIssue['name'],\n        //     issueIndex: grandparentIssueIndex,\n        //   } || {\n        //     id: OTHERS,\n        //     name: 'Others',\n        //   } : undefined\n        // }];\n\n      case types.SPRINT:\n        return (item.atlassian.fields['sprints'] || []).length ? item.atlassian.fields['sprints'].map(item => ({\n          id: item['id'] || OTHERS,\n          name: item['name'] || 'Others',\n        })) : [{id: OTHERS, name: 'Others'}];\n\n      case types.POINTS:\n        return [{\n          id: '' + (item.points || 0),\n          name: '' + (item.points || '0'),\n        }];\n\n      case types.VERSION_AFFECTED:\n        return (item.atlassian.fields['versions'] || []).length ? item.atlassian.fields['versions'].map(item => ({\n          id: item['id'] || OTHERS,\n          name: item['name'] || 'Others',\n        })) : [{id: OTHERS, name: 'Others'}];\n\n      case types.VERSION_FIXED:\n        return (item.atlassian.fields['fixVersions'] || []).length ? item.atlassian.fields['fixVersions'].map(item => ({\n          id: item['id'] || OTHERS,\n          name: item['name'] || 'Others',\n        })) : [{id: OTHERS, name: 'Others'}];\n\n      case types.COMPONENT:\n        return (item.atlassian.fields['components'] || []).length ? item.atlassian.fields['components'].map(item => ({\n          id: item['id'] || OTHERS,\n          name: item['name'] || 'Others',\n        })) : [{id: OTHERS, name: 'Others'}];\n\n      case types.STATUS:\n        return [{\n          id: item.status['id'] || OTHERS,\n          name: item.status['name'] || 'Others',\n        }];\n\n      case types.PRIORITY:\n        return [{\n          id: item.priority['id'] || OTHERS,\n          name: item.priority['name'] || 'Others',\n        }];\n\n      case types.TYPE:\n        return [{\n          id: item['type']['id'] || OTHERS, // item.atlassian.fields['issuetype']['id'] || OTHERS,\n          name: item['type']['name'] || 'Others', // item.atlassian.fields['issuetype']['name'] || 'Others',\n        }];\n\n      case types.ASSIGNEE:\n        let assigneeGroupId =\n          item.atlassian ? (item.assignee || {})['id'] :\n          item.microsoft ? item.microsoft.fields['System.AssignedTo'] : // yeah, that value\n          null;\n\n        return [{\n          id: assigneeGroupId || OTHERS, // there is no ID :(\n          key: (item.assignee || {})['key'],\n          name: (item.assignee || {})['name'] || 'Others',\n        }];\n\n      case types.REPORTER:\n        let reporterGroupId =\n          item.atlassian ? (item.assignee || {})['id'] :\n          item.microsoft ? item.microsoft.fields['System.CreatedBy'] : // yeah, that value\n          null;\n\n        return [{\n          id: reporterGroupId || OTHERS, // there is no ID :(\n          key: (item.reporter || {})['key'],\n          name: (item.reporter || {})['name'] || 'Others',\n        }];\n\n      case types.DUPLICATES:\n        return (item.atlassian.fields['issuelinks'] || []).length ?\n          item.atlassian.fields['issuelinks']\n            .filter(item => item['type']['outward'] == 'duplicates' && item['outwardIssue'])\n            .map(item => ({\n              id: item['outwardIssue']['id'] || OTHERS,\n              name: item['outwardIssue']['key'] || 'Others',\n            }))\n          : [{id: OTHERS, name: 'Others'}]; // not sure we need 'Others' for the group\n\n      case types.DUPLICATED:\n        return (item.atlassian.fields['issuelinks'] || []).length ?\n          item.atlassian.fields['issuelinks']\n            .filter(item => item['type']['inward'] == 'is duplicated by' && item['inwardIssue'])\n            .map(item => ({\n              id: item['inwardIssue']['id'] || OTHERS,\n              name: item['inwardIssue']['key'] || 'Others',\n            }))\n          : [{id: OTHERS, name: 'Others'}]; // not sure we need 'Others' for the group\n\n      case types.BLOCKS:\n        return (item.atlassian.fields['issuelinks'] || []).length ?\n          item.atlassian.fields['issuelinks']\n            .filter(item => item['type']['outward'] == 'blocks' && item['outwardIssue'])\n            .map(item => ({\n              id: item['outwardIssue']['id'] || OTHERS,\n              name: item['outwardIssue']['key'] || 'Others',\n            }))\n          : [{id: OTHERS, name: 'Others'}]; // not sure we need 'Others' for the group\n\n      case types.BLOCKED:\n        return (item.atlassian.fields['issuelinks'] || []).length ?\n          item.atlassian.fields['issuelinks']\n            .filter(item => item['type']['inward'] == 'is blocked by' && item['inwardIssue'])\n            .map(item => ({\n              id: item['inwardIssue']['id'] || OTHERS,\n              name: item['inwardIssue']['key'] || 'Others',\n            }))\n          : [{id: OTHERS, name: 'Others'}]; // not sure we need 'Others' for the group\n\n      default:\n        return [{\n          id: item.id,\n        }];\n    }\n  }\n\n  // experimental\n  // TEMP TEMP TEMP\n  private _isEpicGroup(item: IGroup): boolean {\n    return item.type == config.map.group.values.EPIC;\n  }\n\n  // experimental\n  // TEMP TEMP TEMP\n  private _isFeatureGroup(item: IGroup): boolean {\n    return item.type == config.map.group.values.FEATURE;\n  }\n}\n","import { Component, OnInit, OnDestroy, Input, Output, ElementRef, EventEmitter } from '@angular/core';\n\n// Use example:\n// <div modal *ngIf=\"nameModal\" class=\"modal\">...</div>\n// the component is supposed to be \"data-driven\", not \"action-driven\", don't call actions directly\n@Component({\n  selector: '[modal]',\n  template: `\n    <ng-content></ng-content>\n  `,\n})\nexport class ModalComponent implements OnInit, OnDestroy {\n  // RESERVED / @Input('options') options: Object;\n\n  @Output('show') showEvent: EventEmitter<any> = new EventEmitter();\n  @Output('shown') shownEvent: EventEmitter<any> = new EventEmitter();\n  @Output('hide') hideEvent: EventEmitter<any> = new EventEmitter();\n  @Output('hidden') hiddenEvent: EventEmitter<any> = new EventEmitter();\n\n  private el: HTMLElement;\n  private shown: boolean;\n  private hidden: boolean;\n\n  constructor(\n    private elementRef: ElementRef\n  ) {\n  }\n\n  ngOnInit() {\n    this.el = this.elementRef.nativeElement;\n\n    $(this.el).on('shown.bs.modal', () => { // jQuery only events\n      this.shown = true;\n      this.hidden = !this.shown;\n      this.shownEvent.emit();\n    });\n\n    $(this.el).on('hidden.bs.modal', () => {\n      this.shown = false;\n      this.hidden = !this.shown;\n      this.hiddenEvent.emit();\n    });\n\n    $(this.el).on('show.bs.modal', () => {\n      this.showEvent.emit();\n    });\n\n    $(this.el).on('hide.bs.modal', () => {\n      this.hideEvent.emit();\n    });\n\n    this.shown = false;\n    this.hidden = true;\n    this.show();\n  }\n\n  ngOnDestroy() {\n    this.hide();\n  }\n\n  modal(action: string) {\n    return $(this.el)['modal'](action);\n  }\n\n  show() {\n    this.hidden && this.modal('show');\n  }\n\n  hide() {\n    this.shown && this.modal('hide');\n  }\n\n  toggle() {\n    return this.modal('toggle');\n  }\n}\n","import { Component, Input, Output, OnInit, EventEmitter } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\nimport config from '../../config';\n\n@Component({\n  selector: 'form-typeahead',\n  template: `\n    <div style=\"position: relative\">\n      <input [id]=\"id\" [formControl]=\"inputControl\" [formControlValidator]=\"control\" [placeholder]=\"placeholder\" type=\"text\" class=\"form-control\">\n      <div *ngIf=\"options?.length && show\" class=\"dropdown-menu\" role=\"menu\" style=\"display: block\">\n        <a *ngFor=\"let item of options\" [innerHTML]=\"optionLabel(item)\" (click)=\"onSelect(item)\" class=\"dropdown-item link\"></a>\n      </div>\n    </div>\n  `\n})\nexport class FormTypeaheadComponent implements OnInit {\n  @Input() control: FormControl;\n\n  @Input() placeholder: string;\n  @Input() default: string;\n  @Input() options: any[];\n  @Input() optionValue: Function = item => item;\n  @Input() optionLabel: Function = item => item;\n  @Input() optionLabelInput: Function; // experimental\n\n  @Output() search: EventEmitter<string> = new EventEmitter();\n  @Output() select: EventEmitter<string> = new EventEmitter();\n\n  private debounceDelay = (config.debounce.interval || 1000) / 2; // milliseconds\n  private inputControl = new FormControl();\n  private show: boolean = false;\n  private id: string;\n\n  constructor(\n  ) {\n  }\n\n  ngOnInit() {\n    this.id = (new Date().getTime()).toString(36); // unique id\n\n    // init controls\n    this.inputControl.setValue(this.default || '');\n\n    this.inputControl.valueChanges.debounceTime(this.debounceDelay).subscribe((value: string) => {\n      this.search.emit(value);\n      this.control.reset();\n      this.show = true;\n    });\n\n    this.control.valueChanges.subscribe((value: any) => {\n      typeof value == 'undefined' // experimental\n        && this.inputControl.setValue(this.default || '', {emitEvent: false});\n    });\n  }\n\n  onSelect(option: any) {\n    let label = (this.optionLabelInput || this.optionLabel)(option);\n\n    this.inputControl.setValue(label, {emitEvent: false});\n    this.control.setValue(this.optionValue(option));\n    this.select.emit(this.control.value);\n    this.show = false;\n  }\n}\n","import { Component, Input, Output, OnInit, OnDestroy, EventEmitter } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\n\nimport config from '../config';\nimport {\n  EnvService,\n} from '../services';\n\n@Component({\n  selector: 'bit-header', // or 'layout-header'\n  template: `\n   \n      <div class=\"row\">\n        <div id=\"bit-header\" class=\"col-sm-10\">\n          <img class=\"float-left mr-3\" style=\"\" src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjAuMiwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkViZW5lXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA1Ni43IDU2LjciIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDU2LjcgNTYuNzsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiNDRDE5NEQ7fQo8L3N0eWxlPgo8Zz4KCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik01My41LDBIMy4yQzEuNCwwLDAsMS40LDAsMy4ydjUwLjJjMCwxLjgsMS40LDMuMiwzLjIsMy4yaDUwLjNjMS44LDAsMy4yLTEuNCwzLjItMy4yVjMuMgoJCUM1Ni43LDEuNCw1NS4zLDAsNTMuNSwweiBNNTIuNiwzOC42YzAsMS42LTEuMywyLjktMi45LDIuOUgyOC4xYy0wLjcsMC0xLjMtMC4yLTEuOC0wLjZINS43SDQuOGMtMC40LDAtMC43LTAuMy0wLjctMC44VjE2LjMKCQljMC0wLjQsMC4zLTAuOCwwLjctMC44aDAuOGgyMC45YzAuNC0wLjMsMS0wLjQsMS41LTAuNGgyMS42YzEuNiwwLDIuOSwxLjMsMi45LDIuOVYzOC42eiIvPgoJPHBhdGggY2xhc3M9InN0MCIgZD0iTTM5LjQsMTcuNGMtMS4zLDAtMi42LDAuNy0zLjcsMS43aC03LjV2MS4zaDYuM2MtMC41LDAuNi0wLjksMS4zLTEuMywyLjFoLTV2MS4zaDQuMwoJCWMtMC4zLDAuNy0wLjYsMS40LTAuOCwyLjFoLTMuNXYxLjNoMy4xYy0wLjIsMC43LTAuMywxLjQtMC40LDIuMWgtMi43djEuM2gyLjdjMCwwLjcsMC4xLDEuNCwwLjMsMi4xaC0yLjl2MS4zaDMuNAoJCWMwLjMsMC44LDAuOCwxLjUsMS4zLDIuMWgtNC43djEuM2g2LjFjMS40LDEuMSwzLjIsMS43LDUuMiwxLjdjMS45LDAsMy43LTAuNiw1LjItMS43aDQuNnYtMS4zSDQ2YzAuNS0wLjYsMS0xLjMsMS4zLTIuMWgxLjl2LTEuMwoJCWgtMS41YzAuMi0wLjcsMC4zLTEuNCwwLjMtMi4xaDEuMnYtMS4zaC0xLjNjLTAuMS0wLjctMC4yLTEuNC0wLjQtMi4xaDEuN1YyNmgtMmMtMC4yLTAuNy0wLjUtMS40LTAuOC0yLjFoMi45di0xLjNoLTMuNQoJCWMtMC40LTAuNy0wLjktMS41LTEuMy0yLjFoNC45di0xLjNoLTYuMUM0MiwxOCw0MC43LDE3LjQsMzkuNCwxNy40eiIvPgoJPHBhdGggY2xhc3M9InN0MCIgZD0iTTUuNywxOS40aDE5LjZ2LTEuM2MwLTAuMywwLTAuNiwwLjEtMC45SDUuN1YxOS40eiIvPgoJPHBhdGggY2xhc3M9InN0MCIgZD0iTTcuNSwyNi4zVjI3djIuN3YwLjd2Mi43djAuN3YyLjdoMTcuN3YtMi43di0wLjd2LTIuN3YtMC43VjI3di0wLjd2LTIuN0g3LjVWMjYuM3ogTTcuNSwyNi4zaDE3LjdWMjdINy41CgkJVjI2LjN6IE03LjUsMjkuN2gxNy43djAuN0g3LjVWMjkuN3ogTTcuNSwzMy4xaDE3Ljd2MC43SDcuNVYzMy4xeiIvPgoJPHJlY3QgeD0iNy41IiB5PSIyMC4xIiBjbGFzcz0ic3QwIiB3aWR0aD0iMTcuNyIgaGVpZ2h0PSIyLjciLz4KCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNS4yLDM3LjNINS43djJoMTkuNmMtMC4xLTAuMi0wLjEtMC41LTAuMS0wLjdWMzcuM3oiLz4KPC9nPgo8L3N2Zz4K\" >\n          <div style=\"\">\n            {{title}}\n            <span> Board / my Boards</span>\n          </div>\n          <h5>Bauer Issue Organizer</h5>\n        </div>\n        <div class=\"col-sm-2\">\n          <button id=\"board-tools-section-button\" class=\"aui-button\">\n            <span class=\"aui-icon aui-icon-small aui-iconfont-more\">Board </span>\n          </button>\n        </div>\n      </div>\n  `,\n  styles: [`\n      #bit-header img {\n        width: 2.33em; \n        height: 2.33em;\n      }\n      #bit-header div {\n        font-size: 10px;\n        line-height: 11px;\n      }\n  `]\n})\nexport class HeaderComponent implements OnInit, OnDestroy {\n  @Input() title: string;\n  @Input() formOptions: FormGroup;\n  @Input() formFilter: FormGroup;\n  @Output('print') printEvent: EventEmitter<any> = new EventEmitter();\n\n  config = config;\n  private routeSubscription: any;\n  private path: string;\n\n  constructor(\n    private route: ActivatedRoute,\n    private env: EnvService,\n  ) {\n  }\n\n  ngOnInit() {\n    this.routeSubscription = this.route.url.subscribe(data => {\n      this.path = (data.pop() || {})['path'] || 'migration';\n    });\n  }\n\n  ngOnDestroy() {\n    this.routeSubscription.unsubscribe();\n  }\n}\n","import { Component, Input, Output, OnInit, OnDestroy, EventEmitter } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\n\nimport config from '../config';\nimport {\n  EnvService,\n  IssueService,\n} from '../services';\n\n@Component({\n  selector: 'header-map',\n  template: `\n    <div class=\"btn-toolbar justify-content-end\" role=\"toolbar\">\n      <div class=\"btn-group\">\n      <!--\n        <a class=\"btn link link-colorless link-decorless px-1\" title=\"Scroll left\" (click)=\"onScroll(false)\" style=\"border: none\"><span class=\"bit-icon-left-big\"></span></a>\n        <a class=\"btn link link-colorless link-decorless px-1 pr-2\" title=\"Scroll right\" (click)=\"onScroll(true)\" style=\"border: none\"><span class=\"bit-icon-right-big\"></span></a>\n      -->\n        <input [formControl]=\"formFilter.controls.search\" placeholder=\"Search...\" type=\"text\" class=\"form-control\" style=\"border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-right: none\">\n        <a *ngIf=\"env.isAtlassian\" class=\"btn btn-secondary link link-colorless link-decorless\" title=\"Create Epic\" (click)=\"issues.atlassian.createDialog({id: config.issue.type.values.EPIC, type: config.map.group.values.TYPE})\">Create Epic</a>\n        <a *ngIf=\"env.isMicrosoft\" class=\"btn btn-secondary link link-colorless link-decorless\" title=\"Create Epic\" (click)=\"issues.microsoft.createDialog({id: config.issue.type.values.EPIC, type: config.map.group.values.TYPE})\">Create Epic</a>\n        <a class=\"btn btn-secondary link link-colorless link-decorless px-2\" title=\"Print PDF\" (click)=\"printEvent.emit()\"><span class=\"bit-icon-print\"></span></a>\n\n        <a class=\"btn btn-secondary link link-colorless link-decorless px-2\" title=\"Reduce Cards\" (click)=\"formOptions.controls.expandedIssue.setValue(!formOptions.value.expandedIssue)\"><span title=\"Reduce Cards\" class=\"bit-icon-resize-small\"></span></a>\n        <a class=\"btn btn-secondary link link-colorless link-decorless px-2\" title=\"Toggle filter menu and header\" (click)=\"formOptions.controls.expandedMap.setValue(!formOptions.value.expandedMap)\"><span title=\"Toggle filter menu and header\" class=\"bit-icon-exchange\"></span></a>\n        <a class=\"btn btn-secondary link link-colorless link-decorless px-2\" title=\"Documentation\" [href]=\"env.url(env.options['documentationUrl'])\" target=\"_blank\"><span title=\"Documentation\" class=\"bit-icon-help\"></span></a>\n      </div>\n    </div>\n  `,\n})\nexport class HeaderMapComponent {\n  @Input() formOptions: FormGroup;\n  @Input() formFilter: FormGroup;\n  @Output('print') printEvent: EventEmitter<any> = new EventEmitter();\n\n  config = config;\n\n  constructor(\n    private env: EnvService,\n    private issues: IssueService\n  ) {\n  }\n\n  onScroll(forward = true) {\n    // temporal / experimental\n    const step = 40;\n    let el = $('.bit-storymap-grid').first();\n    let position = el.scrollLeft() + (forward ? step : -step);\n\n    el.scrollLeft(position);\n  }\n}\n","import { Component } from '@angular/core';\n\nimport {\n} from '../services';\n\n@Component({\n  selector: 'header-configuration',\n  template: `\n    <div class=\"btn-toolbar justify-content-end\" role=\"toolbar\">\n      <div class=\"btn-group\">\n        <a routerLink=\"/configure/migration\" class=\"btn btn-secondary link link-colorless link-decorless\" routerLinkActive=\"active\" title=\"Migration\">Migration</a>\n        <a routerLink=\"/configure/settings\" class=\"btn btn-secondary link link-colorless link-decorless\" routerLinkActive=\"active\" title=\"Settings\">Settings</a>\n      </div>\n    </div>\n  `,\n})\nexport class HeaderConfigurationComponent {\n\n  constructor(\n  ) {\n  }\n}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { NotificationService } from '../services';\n\n@Component({\n  selector: 'notification-list',\n  template: `\n    <div *ngIf=\"notifications.data && notifications.data.length\" class=\"bit-storymap-notification-list\">\n      <div *ngFor=\"let item of notifications.data; trackBy:notifications.trackBy\">\n        <notification [item]=\"item\"></notification>\n      </div>\n    </div>\n  `,\n})\nexport class NotificationListComponent {\n\n  constructor(\n    private router: Router,\n    private notifications: NotificationService\n  ) {\n  }\n}\n\n","import { Component, Input } from '@angular/core';\n\nimport { INotification } from '../interfaces/notification.interface';\nimport { NotificationService } from '../services';\n\n@Component({\n  selector: 'notification',\n  template: `\n    <div *ngIf=\"item.type == 'DEFAULT' || !item.type\" [ngClass]=\"'bit-storymap-notification-item fadeout closeable aui-message aui-message-' + item.data.level\">\n      <p *ngIf=\"item.title\">{{item.title}}</p>\n      <div *ngIf=\"item.data.html\" [innerHTML]=\"item.data.html\"></div>\n      <div *ngIf=\"item.data.text\" [innerHTML]=\"item.data.text\"></div>\n      <span class=\"aui-icon icon-close\" (click)=\"notifications.delete(item.id)\"></span>\n    </div>\n  `,\n})\nexport class NotificationComponent {\n  @Input() item: INotification;\n\n  constructor(private notifications: NotificationService) {\n  }\n}\n","import { Component } from '@angular/core';\n\nimport config from '../config';\nimport {\n  EnvService,\n} from '../services';\n\n@Component({\n  selector: 'default',\n  template: `\n    <div class=\"mx-5 mt-3 p-5\">\n      <div>\n        <img src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjAuMiwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkViZW5lXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA1Ni43IDU2LjciIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDU2LjcgNTYuNzsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiNDRDE5NEQ7fQo8L3N0eWxlPgo8Zz4KCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik01My41LDBIMy4yQzEuNCwwLDAsMS40LDAsMy4ydjUwLjJjMCwxLjgsMS40LDMuMiwzLjIsMy4yaDUwLjNjMS44LDAsMy4yLTEuNCwzLjItMy4yVjMuMgoJCUM1Ni43LDEuNCw1NS4zLDAsNTMuNSwweiBNNTIuNiwzOC42YzAsMS42LTEuMywyLjktMi45LDIuOUgyOC4xYy0wLjcsMC0xLjMtMC4yLTEuOC0wLjZINS43SDQuOGMtMC40LDAtMC43LTAuMy0wLjctMC44VjE2LjMKCQljMC0wLjQsMC4zLTAuOCwwLjctMC44aDAuOGgyMC45YzAuNC0wLjMsMS0wLjQsMS41LTAuNGgyMS42YzEuNiwwLDIuOSwxLjMsMi45LDIuOVYzOC42eiIvPgoJPHBhdGggY2xhc3M9InN0MCIgZD0iTTM5LjQsMTcuNGMtMS4zLDAtMi42LDAuNy0zLjcsMS43aC03LjV2MS4zaDYuM2MtMC41LDAuNi0wLjksMS4zLTEuMywyLjFoLTV2MS4zaDQuMwoJCWMtMC4zLDAuNy0wLjYsMS40LTAuOCwyLjFoLTMuNXYxLjNoMy4xYy0wLjIsMC43LTAuMywxLjQtMC40LDIuMWgtMi43djEuM2gyLjdjMCwwLjcsMC4xLDEuNCwwLjMsMi4xaC0yLjl2MS4zaDMuNAoJCWMwLjMsMC44LDAuOCwxLjUsMS4zLDIuMWgtNC43djEuM2g2LjFjMS40LDEuMSwzLjIsMS43LDUuMiwxLjdjMS45LDAsMy43LTAuNiw1LjItMS43aDQuNnYtMS4zSDQ2YzAuNS0wLjYsMS0xLjMsMS4zLTIuMWgxLjl2LTEuMwoJCWgtMS41YzAuMi0wLjcsMC4zLTEuNCwwLjMtMi4xaDEuMnYtMS4zaC0xLjNjLTAuMS0wLjctMC4yLTEuNC0wLjQtMi4xaDEuN1YyNmgtMmMtMC4yLTAuNy0wLjUtMS40LTAuOC0yLjFoMi45di0xLjNoLTMuNQoJCWMtMC40LTAuNy0wLjktMS41LTEuMy0yLjFoNC45di0xLjNoLTYuMUM0MiwxOCw0MC43LDE3LjQsMzkuNCwxNy40eiIvPgoJPHBhdGggY2xhc3M9InN0MCIgZD0iTTUuNywxOS40aDE5LjZ2LTEuM2MwLTAuMywwLTAuNiwwLjEtMC45SDUuN1YxOS40eiIvPgoJPHBhdGggY2xhc3M9InN0MCIgZD0iTTcuNSwyNi4zVjI3djIuN3YwLjd2Mi43djAuN3YyLjdoMTcuN3YtMi43di0wLjd2LTIuN3YtMC43VjI3di0wLjd2LTIuN0g3LjVWMjYuM3ogTTcuNSwyNi4zaDE3LjdWMjdINy41CgkJVjI2LjN6IE03LjUsMjkuN2gxNy43djAuN0g3LjVWMjkuN3ogTTcuNSwzMy4xaDE3Ljd2MC43SDcuNVYzMy4xeiIvPgoJPHJlY3QgeD0iNy41IiB5PSIyMC4xIiBjbGFzcz0ic3QwIiB3aWR0aD0iMTcuNyIgaGVpZ2h0PSIyLjciLz4KCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNS4yLDM3LjNINS43djJoMTkuNmMtMC4xLTAuMi0wLjEtMC41LTAuMS0wLjdWMzcuM3oiLz4KPC9nPgo8L3N2Zz4K\" style=\"width: 3.33em; height: 3.33em;\">\n      </div>\n\n      <h2 class=\"mt-5\">Bauer User Story Map</h2>\n      <p>\n        Many of you are waiting impatiently for our brand new Bauer User Story  Map version,\n        which we are proud to&nbsp;reveal today with many great features.\n      </p>\n      <p>\n        <b>Terefore you have to update the app's version manually in your \"Manage Add Ons\" section.</b>\n      </p>\n\n      <p class=\"mt-3\">\n        <a [href]=\"env.url('/plugins/servlet/upm')\" target=\"_blank\" class=\"btn btn-primary\">Go to Manage Add Ons &nbsp;&nbsp;&nbsp;&gt;</a>\n      </p>\n    </div>\n  `,\n})\nexport class DefaultComponent {\n  config = config;\n\n  constructor(\n    private env: EnvService\n  ) {\n  }\n}\n","import { Component } from '@angular/core';\n\nimport config from '../config';\nimport {\n  EnvService,\n} from '../services';\n\n@Component({\n  selector: 'license',\n  template: `\n    <div class=\"m-5\">\n      <div class=\"pa-2 aui-message aui-message-warning\">\n        <h3>\n          <strong>No valid License</strong>\n        </h3>\n        <p>\n          Please purchase a valid license at the\n          <a [href]=\"envService.url('/plugins/servlet/upm#manage/jira.structure.bauer.issue.organizer')\" target=\"_parent\">Plugin Manager</a>\n          or the\n          <a [href]=\"'//marketplace.atlassian.com/plugins/jira.structure.issue.organizer'\" target=\"_parent\">Atlassian Marketplace</a>.\n        </p>\n      </div>\n    </div>\n  `,\n})\nexport class LicenseComponent {\n  config = config;\n\n  constructor(\n    private envService: EnvService,\n  ) {\n  }\n}\n","import { Component } from '@angular/core';\n\nimport config from '../config';\nimport {\n  EnvService,\n} from '../services';\n\n@Component({\n  selector: 'upgrade-atlassian',\n  template: `\n    <div class=\"mx-5 mt-5 p-5\">\n      <div>\n        <div class=\"product-logo\"> </div>\n\n          <h5 style=\"margin:5px 0 0 0;\">Easy Issue Organizer by Bauer</h5>\n      </div>\n\n      <h2 class=\"mt-5\">Easy Issue Organizer for Jira</h2>\n      <p>\n        <img style=\"width:15%; float:right\" src=\"/img/enterFromLeftHandBar.png\" class=\"my-2\" />\n        Each of your Scrum, Agility or Kanban boards has an associated Easy Issue Organizer.\n        <br/>\n        Access a Easy Issue Organizer from\n      </p>\n      <ul>\n        <li>\n          any <b>project</b> by using the left hand navigation bar and selecting 'Easy Issue Organizer'.\n        </li>\n        <li>\n          any <b>agile board</b> by using the 'Board' dropdown in the top right and selecting 'Easy Issue Organizer'.\n        </li>\n      </ul>\n\n      <h2 class=\"mt-5\">User Manual and Support</h2>\n      <p>\n        Please consult our <a target=\"_blank\" href=\"//bauer-information-technology.com/docs/user+manual+bauer+issue+organizer\" >user manual</a> for any questions or \n        you can request support through our <a target=\"_blank\" href=\"https://bauer-it.atlassian.net/servicedesk/customer/portal/4\">Help Center</a>.\n      </p>\n\n\n    </div>\n  `,\n  styleUrls: ['./lidor/treegrid.component.css']\n})\nexport class UpgradeAtlassianComponent {\n  config = config;\n\n  constructor(\n    private env: EnvService\n  ) {\n  }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { NgZone } from '@angular/core'; // PATCH\n//import { FormGroup, FormArray, FormControl } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { TBoardId, IBoard } from '../interfaces/board.interface';\nimport { TFilterId, IFilter } from '../interfaces/filter.interface';\n\nimport config from '../config';\nimport {\n  EnvService,\n  BoardService,\n  FilterService,\n} from '../services';\n\n// experimental\ninterface IMapLegacy {\n  id: string;\n  name: string;\n  description?: string;\n  jql: string;\n  owner: string; // email\n  // ...more\n\n  board: IBoard, // calculated \n}\n\n@Component({\n  selector: 'configuration-atlassian-migration',\n  template: `\n    <header title=\"Configuration\"></header>\n\n    <div *ngIf=\"env.data.backup?.maps?.length && boards.data.list\" class=\"container-fluid\">\n      <table class=\"table table-borderless-top\" width=\"100%\">\n        <thead>\n          <tr>\n            <th>Name</th>\n            <th>Owner</th>\n            <th>Board</th>\n            <th></th>\n          </tr>\n        </thead>\n        <tbody *ngFor=\"let item of env.data.backup?.maps\">\n          <tr *ngIf=\"item.name\">\n            <td>\n              <a [href]=\"item.self\" target=\"_top\" class=\"link\">{{item.name}}</a>\n            </td>\n            <td>\n              {{item.owner}}\n            </td>\n            <td *ngIf=\"item.board\">\n              <a href=\"{{env.urlBoard(item.board.id)}}\" target=\"_blank\">{{item.board.name}} (#{{item.board.id}})</a>\n            </td>\n            <td *ngIf=\"!item.board\">\n              -\n            </td>\n            <td *ngIf=\"item.board\" class=\"text-right\">\n              <button class=\"btn btn-outline-secondary disabled\">Migrated</button>\n            </td>\n            <td *ngIf=\"!item.board\" class=\"text-right\">\n              <button (click)=\"onImport(item)\" class=\"btn btn-outline-primary link\">Migrate</button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n\n    <div *ngIf=\"env.data.backup && !env.data.backup?.maps.length\" class=\"container-fluid py-5\">\n      <div class=\"aui-message aui-message-warning\">\n        <h4>\n          <strong>Import settings</strong>\n        </h4>\n        <p>\n          No story maps to import.\n        </p>\n      </div>\n    </div>\n  `,\n})\nexport class ConfigurationMigrationAtlassianComponent implements OnInit {\n  config = config;\n\n  constructor(\n    private _ngZone: NgZone, // PATCH\n    private route: ActivatedRoute,\n    private env: EnvService,\n    private boards: BoardService,\n    private filters: FilterService\n  ) {\n  }\n\n  ngOnInit() {\n    // load data / experimental\n    this.boards.list().subscribe(() => {\n      this.env.atlassian.getBackup().subscribe(() => {\n\n        this.env.data.backup.maps.forEach((itemMap: IMapLegacy) => {\n          itemMap.board = this.boards.data.list.find(\n            (itemBoard: IBoard) => itemBoard.name == itemMap.name\n          );\n        });\n\n        this._ngZone.run(() => {}); // PATCH\n      });\n    });\n  }\n\n  onImport(map: IMapLegacy) {\n    this.filters.create({\n      name: '' + (map.name || map.id) + ' ' + Date.now(),\n      description: map.description || '',\n      jql: map.jql || '',\n\n    }).subscribe((filter: IFilter) => {\n      this.boards.create({\n        name: map.name || map.id,\n        type: 'scrum',\n        filterId: filter.id,\n\n      }).subscribe((board: IBoard) => {\n        map.board = board;\n      });\n    });\n  }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\n// import { NgZone } from '@angular/core'; // PATCH\n\nimport config from '../config';\nimport {\n  EnvService,\n} from '../services';\n\n@Component({\n  selector: 'configuration-atlassian-settings',\n  template: `\n    <header title=\"Configuration\"></header>\n\n    <div class=\"container-fluid\">\n      <form [formGroup]=\"form\">\n        <table class=\"table table-borderless-top\" width=\"100%\">\n          <tbody>\n            <tr>\n              <td>\n                Update storymap on external changes\n              </td>\n              <td>\n                <div class=\"form-group\">\n                  <label class=\"custom-control custom-checkbox\">\n                    <input formControlName=\"update\" type=\"checkbox\" class=\"custom-control-input\">\n                    <span class=\"custom-control-indicator\"></span>\n                  </label>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </form>\n    </div>\n  `,\n})\nexport class ConfigurationSettingsAtlassianComponent implements OnInit {\n  config = config;\n\n  form: FormGroup = new FormGroup({\n    update: new FormControl(true),\n  });\n\n  constructor(\n    // OBSOLETED / private _ngZone: NgZone, // PATCH\n    private env: EnvService,\n  ) {\n  }\n\n  ngOnInit() {\n    let settings = this.env.getSettings();\n    this.form.patchValue(Object.assign({}, settings), {emitEvent: false});\n\n    this.form.valueChanges.subscribe(data => {\n      this.env.setSettings(data);\n    });\n  }\n}\n","import { Component, OnInit, OnDestroy } from '@angular/core';\n//import { Router } from '@angular/router';\nimport { FormGroup, FormArray, FormControl } from '@angular/forms';\n\nimport { TGroupId, IGroup } from '../interfaces/map.interface';\n\nimport config from '../config';\nimport {\n  AppSocket,\n  IssueAtlassianService,\n  IssueMicrosoftService,\n  IssueService,\n  MapService,\n} from '../services';\n\n@Component({\n  selector: 'map',\n  providers: [\n    AppSocket,\n    IssueAtlassianService,\n    IssueMicrosoftService,\n    IssueService,\n    MapService,\n  ],\n  template: `\n    <header class=\"header\" title=\"Board\"></header>\n    <bit-treegrid-toolbar></bit-treegrid-toolbar>\n    <bit-treegrid-filterbar></bit-treegrid-filterbar>\n    <bit-treegrid2></bit-treegrid2>\n  `,\n  styleUrls: [ ],\n})\nexport class MapComponent implements OnInit, OnDestroy {\n  config = config;\n\n  formOptions = new FormGroup({\n    expandedMap: new FormControl(true),\n    expandedIssue: new FormControl(true),\n  });\n\n  formFilter = new FormGroup({\n    search: new FormControl(), // experimental\n    column: new FormControl(), // group for columns\n    lane: new FormControl(), // group for lanes\n    groups: <FormGroup> new FormGroup({}), // options for group items (hidden and etc)\n    supergroups: new FormArray([]), // superset of groups\n  });\n\n  formFilterColumnSubscription: any;\n  formFilterLaneSubscription: any;\n\n  constructor(\n    private issues: IssueService,\n    private map: MapService\n  ) {\n  }\n\n  ngOnInit() {\n    let formFilter = this.formFilter; // why not\n\n    // create filter form fields for groups\n    this.map.types.list.forEach(item => {\n      formFilter.controls['groups']['addControl'](item, new FormGroup({ // dammit typescript\n        open: new FormControl(),\n        dirty: new FormControl(false),\n        items: new FormGroup({}), // by group ids\n      }));\n    });\n\n    // create filter form fields for supergroups\n    this.map.types.tree.map(item => {\n      formFilter.controls['supergroups']['push'](\n        new FormControl(item.name == this.map.types.tree[0].name)\n      )\n    });\n\n    // update map on filter changes\n    this.formFilterColumnSubscription = formFilter.controls['column'].valueChanges.subscribe(() => {\n      //this.formColumnEvent(formFilter.value.column);\n      this.mapIssues();\n    });\n\n    this.formFilterLaneSubscription = formFilter.controls['lane'].valueChanges.subscribe(() => {\n      //this.formLaneEvent(formFilter.value.lane);\n      this.mapIssues();\n    });\n\n    // update map on group/list changes\n    this.map.observables.groups.subscribe(() => {\n      this.mapFilter();\n      this.mapIssues();\n    });\n\n    // load issues\n    this.issues.list();\n  }\n\n  ngOnDestroy() {\n    this.formFilterColumnSubscription.unsubscribe();\n    this.formFilterLaneSubscription.unsubscribe();\n  }\n\n  mapIssues() {\n    const column = this.formFilter.controls['column'].value; // don't use form.value here!\n    const lane = this.formFilter.controls['lane'].value; // don't use form.value!\n    column && lane && this.map.render(column, lane, this.formFilter.value.groups);\n  }\n\n  mapFilter() {\n    this.map.types.list.forEach(itemGroup => {\n      let items = this.map.data.groups[itemGroup];\n      let controlItems = this.formFilter.controls['groups']['controls'][itemGroup].controls.items; // dammit typescript\n\n      // add controls for \"added\" groups\n      items.forEach((item: TGroupId) => {\n        !controlItems.controls[item.id] && controlItems.addControl(item.id, new FormGroup({\n          hidden: new FormControl(false),\n          highlightA: new FormControl(false),\n          highlightB: new FormControl(false),\n        }));\n      });\n\n      // remove controls for \"removed\" groups\n      Object.keys(controlItems.controls).forEach((item: TGroupId) => {\n        !items.find(itemFind => item == itemFind.id) && controlItems.removeControl(item);\n      });\n    });\n  }\n\n  onPrint() {\n    // TODO: temporal / move it somewhere else\n\n    // All units are in the set measurement for the document\n    // This can be changed to \"pt\" (points), \"mm\" (Default), \"cm\", \"in\"\n    //OBSOLET let element = <any> document.querySelector('.bit-storymap-grid');\n    let element = <any> document.querySelector('#map-grid-content');\n    let elementNewColumn = <any> element.querySelector('.bit-storymap-grid-list-item-new');\n\n    element.className += ' printable';\n    element.style.width = '' + (element.scrollWidth - (elementNewColumn ? elementNewColumn.offsetWidth : 0) - 5) + 'px'; // 5px margin\n\n    window['html2canvas'](element, {\n      allowTaint: false,\n      logging: false,\n      useCORS: true,\n\n      onrendered: canvas => {\n        element.className = element.className.substr(0, element.className.indexOf(' printable'));\n        element.style.width = '';\n\n        let image = canvas.toDataURL('image/png');\n        let paperSize = [canvas.width * 0.75 , canvas.height * 0.75]; // 1px = 0.75 pt\n        let paperOrientation = (canvas.width > canvas.height) ? 'l' : 'p';\n\n        let doc = new window['jspdf'](paperOrientation, 'pt', paperSize);\n        doc.addImage(image, 'PNG', 1, 1);\n        doc.save(config.pdf.filename);\n      }\n    });\n  }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\n\nimport { TGroupId, IGroup } from '../interfaces/map.interface';\nimport { TIssueId, TIssueIndex, IIssue } from '../interfaces/issue.interface';\n\nimport config from '../config';\nimport {\n  EnvService,\n  IssueService,\n  MapService,\n} from '../services';\n\n@Component({\n  selector: 'map-filter',\n  template: `\n    <div *ngFor=\"let itemTree of map.types.tree; let index = index\">\n\n      <div (click)=\"form.controls.supergroups.controls[index](!form.value.supergroups[index])\" class=\"bit-storymap-filter-label\">\n        <span [class]=\"'link' + (form.value.supergroups[index] ? ' bit-icon-angle-down' : ' bit-icon-angle-right')\"></span>\n        <span>{{itemTree.name}}</span>\n      </div>\n\n      <div *ngFor=\"let item of itemTree.list\" class=\"bit-storymap-filter-list\">\n        <span class=\"bit-storymap-filter-label\" (click)=\"form.controls.groups.controls[item].controls.open.setValue(!form.value.groups[item].open); setFilterPreferences()\">\n          <span [class]=\"'link' + (form.value.groups[item].open ? ' bit-icon-angle-down' : ' bit-icon-angle-right')\"></span>\n          <span class=\"link\">{{config.map.group.labels[item]}}</span>\n          <span *ngIf=\"form.value.groups[item].dirty\" class=\"bit-icon-pin text-warning\"></span>\n        </span>\n\n        <div class=\"float-right\">\n          <a *ngIf=\"item == form.value.lane\">\n            <span class=\"bit-icon-table-header-row text-lighter\" title=\"Table header column\"></span>\n          </a>\n          <a *ngIf=\"item != form.value.lane\"\n            (click)=\"form.controls.column.setValue(item); setFilterPreferences()\"\n            title=\"Arrange {{config.map.group.labels[item]}} as columns\"\n            class=\"link\"\n            >\n            <i [class]=\"'bit-icon-table-header-row' + (form.value.column == item ? ' text-primary': ' text-muted')\" title=\"Table header column\"></i>\n          </a>\n\n          <a *ngIf=\"item == form.value.column\">\n            <span class=\"bit-icon-table-header-column text-lighter\" title=\"Table header row\"></span>\n          </a>\n          <a *ngIf=\"item != form.value.column\"\n            (click)=\"form.controls.lane.setValue(item); setFilterPreferences()\"\n            title=\"Arrange {{config.map.group.labels[item]}} as lanes\"\n            class=\"link\"\n            >\n            <i [class]=\"'bit-icon-table-header-column' + (form.value.lane == item ? ' text-primary': ' text-muted')\" title=\"Table header row\"></i>\n          </a>\n        </div>\n\n        <div *ngIf=\"groups && form.value.groups[item].open\" class=\"bit-storymap-filter-group\">\n          <div *ngFor=\"let itemGroup of groups[item]; let itemGroupIndex = index\" class=\"bit-storymap-filter-label\">\n            <div *ngIf=\"itemGroup.items?.length\">\n              <a class=\"link\"\n                (click)=\"onClickOption('hidden', groups[item][itemGroupIndex], form.controls.groups.controls[item]); setFilterPreferences()\"\n                title=\"Hide/show selected cards\"\n                >\n                <i [class]=\"form.value.groups[item]?.items[itemGroup.id]?.hidden ? 'bit-icon-eye-off text-primary': 'bit-icon-eye'\"></i>\n              </a>\n\n              <span title=\"{{item.name}}\">\n                {{itemGroup.name | truncate:12}}\n                <div class=\"badge badge-pill bit-storymap-filter-label-badge\">{{itemGroup.items.length}}</div>\n              </span>\n\n              <div class=\"bit-storymap-filter-label-highlight float-right\">\n                <a class=\"link\"\n                  (click)=\"onClickOption('highlightA', groups[item][itemGroupIndex], form.controls.groups.controls[item]); setFilterPreferences()\"\n                  title=\"Mark selected cards\">\n                  <i [class]=\"'text-success' + (form.value.groups[item]?.items[itemGroup.id]?.highlightA ? ' bit-icon-ok-circled': ' bit-icon-circle')\"></i>\n                </a>\n                <a class=\"link\"\n                  (click)=\"onClickOption('highlightB', groups[item][itemGroupIndex], form.controls.groups.controls[item]); setFilterPreferences()\"\n                  title=\"Mark selected cards\">\n                  <i [class]=\"'text-warning' + (form.value.groups[item]?.items[itemGroup.id]?.highlightB ? ' bit-icon-ok-circled': ' bit-icon-circle')\"></i>\n                </a>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        <div class=\"clearfix\"></div>\n      </div>\n\n    </div>\n  `,\n})\nexport class MapFilterComponent implements OnInit {\n  @Input() form: FormGroup;\n  @Input() groups: any // TODO: specify type, it's not IGroup[];\n\n  config = config;\n\n  constructor(\n    private env: EnvService,\n    private issues: IssueService,\n    private map: MapService\n  ) {\n  }\n\n  ngOnInit() {\n    let form = this.form; // why not\n\n    // save filter on value changes\n    // ...see the calls in template code: setFilterPreferences()\n\n    // load filter on groups init\n    // supposed to be run _after_ similar subscriber in map.component\n    this.map.observables.groups.first().subscribe((groups: any) => { // TODO: specify type, it's not IGroup[];\n      groups && this.getFilterPreferences(groups);\n    });\n\n    // subscribe to search control (see header component)\n    this.form.controls.search.valueChanges\n      .debounceTime(config.debounce.interval)\n      .subscribe((value: string) => {\n        this.onSearch(value);\n      });\n  }\n\n  onSearch(value: string) {\n    let regex = new RegExp(value, 'i');\n\n    this.issues.data.list.forEach((item: IIssue) => {\n      let excluded = !regex.test(item.description);\n      let hidden = item.state.hidden;\n\n      item.state.hidden = (hidden || 0) + (\n         excluded == item.state.excluded ? 0 : excluded ? 1 : hidden && -1\n      ); // a-la counter\n\n      item.state.excluded = excluded;\n    });\n  }\n\n  onClickOption(name: string, group: IGroup, controlGroupType: FormGroup) {\n    let controlGroups = <FormGroup> controlGroupType.controls['items'];\n    let controlGroup = <FormGroup> controlGroups.controls[group.id];\n\n    // set option value\n    controlGroup.controls[name].setValue(!controlGroup.value[name]);\n\n    // set parent \"dirty\" value\n    controlGroupType.controls['dirty'].setValue(this.isGroupTypeDirty(controlGroupType));\n\n    // set issues \"state\" values\n    this.setGroupIssuesState(name, group, controlGroup);\n  }\n\n  isGroupTypeDirty(controlGroupType: FormGroup) {\n    let controlGroups = <FormGroup> controlGroupType.controls['items'];\n\n    return Object.keys(controlGroups.value).reduce((output: boolean, item: TGroupId) =>\n        output\n          || controlGroups.value[item].hidden\n          || controlGroups.value[item].highlightA\n          || controlGroups.value[item].highlightB\n      , false);\n  }\n\n  setGroupIssuesState(name: string, group: IGroup, controlGroup: FormGroup, toggle: boolean = true) {\n    group.items.forEach((item: TIssueIndex) => {\n      let state = this.issues.data.list[item].state;\n      state[name] = (state[name] || 0) + (!controlGroup.value[name] ? toggle ? -1 : 0 : 1); // a-la counter\n    });\n  }\n\n  getFilterPreferences(groups: IGroup[]) {\n    let filter = this.env.getScopePreferences('filter') || {groups: {}};\n\n    // set default filter column/lane if not defined\n    if (!filter.column || !filter.lane) {\n      filter.column = this.map.types.default.column;\n      filter.lane = this.map.types.default.lane;\n      filter.groups[filter.column] = {open: true};\n      filter.groups[filter.lane] = {open: true};\n    }\n\n    // set filter form\n    this.issues.editForm(this.form, filter);\n\n    // set filter derivative values\n    this.map.types.list.forEach(item => {\n      let controlGroupType = this.form.controls['groups']['controls'][item];\n      let controlGroups = <FormGroup> controlGroupType.controls['items'];\n\n      // set \"dirty\" for all filter groups\n      // (should be recalculated, cause group items could differ from stored)\n      controlGroupType.controls['dirty'].setValue(\n        this.isGroupTypeDirty(controlGroupType),\n        {onlySelf: false, emitEvent: false, emitModelToViewChange: false} // do it silently\n      );\n\n      // set \"state\" for all issues\n      groups[item].forEach((group: IGroup) => {\n        let controlGroup = <FormGroup> controlGroups.controls[group.id];\n        Object.keys(controlGroup.value).forEach((itemName: string) => {\n          this.setGroupIssuesState(itemName, group, controlGroup, false);\n        });\n      });\n    });\n\n    // trigger valueChanges listeners / is there a better way?\n    this.form.controls['lane'].setValue(this.form.value.lane);\n  }\n\n  setFilterPreferences() {\n    let value = this.form.value;\n\n    // drop some filter fields before storing\n    let filter = Object.assign({}, value, {\n      supergroups: [],\n      groups: Object.keys(value.groups).reduce((output, item) => {\n          output[item] = Object.assign({}, value.groups[item], {dirty: undefined});\n          return output;\n        }, {}),\n    });\n\n    this.env.setScopePreferences('filter', filter);\n  }\n}\n","import { Component, OnInit, OnDestroy, Input } from '@angular/core';\nimport { ChangeDetectorRef } from '@angular/core';\nimport { FormGroup, FormArray, FormControl, Validators } from '@angular/forms';\nimport { Observable } from 'rxjs/Observable';\n\nimport { TGroupId, TGroupType, IGroup } from '../interfaces/map.interface';\nimport { TIssueId, TIssueIndex, IIssue } from '../interfaces/issue.interface';\n \nimport config from '../config';\nimport {\n  IssueService,\n  EnvService,\n  MapService,\n} from '../services';\n\n@Component({\n  selector: 'map-grid',\n  template: `\n  <div *ngIf=\"isLoading\" class=\"loader\"></div>\n  <div  class=\"Flipped\" style=\"overflow-y:auto\" >\n    <div *ngIf=\"map.data.laneGroups && map.data.columnGroups && map.data.issues\" class=\"Content\" id=\"map-grid-content\" tabindex=\"-1\">\n      <div class=\"bit-storymap-grid-header\">\n        <ul class=\"list-inline bit-storymap-grid-column my-0\"\n          dnd dnd-sortable-container\n          [dropZones]=\"['storymap-group']\"\n          [sortableData]=\"map.data.columnGroups\"\n          >\n          <li *ngFor=\"let item of map.data.columnGroups; let last = last; let index = index; trackBy: _groupTrackBy\"\n            [class]=\"'list-inline-item bit-storymap-grid-column-item pb-1' + (index % 2 ? ' odd' : ' even') + (form.value.groups[form.value.column].items[item.id].hidden ? ' hidden-sm-up' : '')\"\n            >\n            <div\n              dnd dnd-sortable\n              [sortableIndex]=\"index\"\n              [dragData]=\"{group: item}\"\n              (onDropSuccess)=\"onDropGroup($event, index)\"\n              >\n              <!-- OBSOLETED\n              <map-grid-issue *ngIf=\"item.issueIndex !== undefined && form.value.column == config.map.group.values.EPIC\" [issue]=\"issues.data.list[item.issueIndex]\" [expanded]=\"options.expandedIssue\"></map-grid-issue>\n              -->\n              <map-grid-group [group]=\"item\" [expanded]=\"options.expandedIssue\"></map-grid-group>\n            </div>\n\n            <div *ngIf=\"item.analytics\" [title]=\"'' + (item.analytics.progress * 100).toFixed(0) + '% solved'\" class=\"progress mt-2\">\n              <div class=\"progress-bar progress-bar-striped bg-success\" role=\"progressbar\" [ngStyle]=\"{width: '' + item.analytics.progress * 100 + '%'}\">{{(item.analytics.progress * 100).toFixed(0)}}%</div>\n            </div>\n          </li>\n\n          <li class=\"list-inline-item bit-storymap-grid-column-item bit-storymap-grid-list-item-new\"\n            [ngStyle]=\"{opacity: isDragged ? '1' : '0'}\"\n          >\n            <map-grid-group [group]=\"{name: 'New'}\" [expanded]=\"options.expandedIssue\"></map-grid-group> \n          </li>\n        </ul>\n      </div>\n\n      <div class=\"clearfix\"></div>\n\n      <div class=\"bit-storymap-grid-body\">\n        <ul class=\"list-unstyled bit-storymap-grid-lane\">\n          <li *ngFor=\"let groupLane of map.data.laneGroups; let last = last; let indexLane = index; trackBy: _groupTrackBy\"\n            [class]=\"'bit-storymap-grid-lane-item' + (indexLane % 2 ? ' odd' : ' even')\" \n            >\n\n            <span class=\"bit-storymap-grid-lane-label\">{{groupLane.name | truncate:18}}</span>\n\n            <ul class=\"d-flex list-inline bit-storymap-grid-column\">\n              <li *ngFor=\"let groupColumn of map.data.columnGroups; let indexColumn = index; trackBy: _groupTrackBy\"\n                [class]=\"'d-flex list-inline-item bit-storymap-grid-column-item' + (indexColumn % 2 ? ' odd' : ' even') + (form.value.groups[form.value.column].items[groupColumn.id].hidden ? ' hidden-sm-up' : '')\"\n                >\n\n                <ul class=\"list-unstyled bit-storymap-grid-list\"\n                  dnd dnd-sortable-container\n                  [dropZones]=\"['storymap-column', 'storymap-lane', 'storymap-column-new']\"\n                  [sortableData]=\"map.data.issues[indexLane][indexColumn]\"\n                  [title]=\"groupLane.name\"\n                  >\n                  <li *ngFor=\"let indexItem of map.data.issues[indexLane][indexColumn]; let index = index; _issueIndexTrackBy\"\n                    dnd dnd-sortable\n                    [sortableIndex]=\"index\"\n                    [dragData]=\"{issue: issues.data.list[indexItem], groupLane: groupLane, groupColumn: groupColumn}\"\n                    (onDropSuccess)=\"onDropIssue($event, indexLane, indexColumn)\"\n                    (onDragStart)=\"onDragStart()\"\n                    (onDragEnd)=\"onDragEnd()\"\n                    class=\"text-unselectable bit-storymap-grid-list-item\"\n                    >\n                    <map-grid-issue [issue]=\"issues.data.list[indexItem]\" [expanded]=\"options.expandedIssue\"></map-grid-issue>\n                  </li>\n                </ul>\n                <islast [isLast]=\"last\" (onLastDone)=\"onColumnsRenderingFinished($event)\"></islast>\n              </li>\n\n              <li class=\"d-flex list-inline-item bit-storymap-grid-column-item\"\n                [ngStyle]=\"{opacity: isDragged ? '1' : '0'}\"\n              >\n                <ul class=\"list-unstyled bit-storymap-grid-list\"\n                  dnd dnd-sortable-container\n                  [dropZones]=\"['storymap-column-new']\"\n                  [sortableData]=\"newGroupIssues[indexLane]\"\n                  [title]=\"groupLane.name\"\n                  >\n                  <li *ngFor=\"let indexItem of newGroupIssues[indexLane]; let index = index;\" class=\"text-unselectable bit-storymap-grid-list-item\"\n                    dnd dnd-sortable\n                    [sortableIndex]=\"index\"\n                    (onDropSuccess)=\"onDropIssue($event, indexLane, null)\"\n                  >\n                    <map-grid-issue [issue]=\"issues.data.list[indexItem]\" [expanded]=\"options.expandedIssue\"></map-grid-issue>\n                  </li>\n                </ul>\n\n              </li>\n            </ul>\n            <islast [isLast]=\"last\" (onLastDone)=\"onRenderingFinished($event)\"></islast>\n          </li>\n          \n        </ul>\n      </div>\n    </div>\n\n    <map-grid-issue-properties *ngIf=\"issuePropertiesModal\" [issue]=\"issues.data.view\" [form]=\"issuePropertiesForm\" (submit)=\"onUpdateIssuePropertiesSubmit($event, issuePropertiesForm)\" (cancel)=\"onUpdateIssuePropertiesCancel($event)\"></map-grid-issue-properties>\n    <map-grid-issue-group-atlassian *ngIf=\"issueGroupModal && env.isAtlassian\" [issue]=\"issues.data.view\" [form]=\"issueGroupForm\" (submit)=\"onUpdateIssueGroupSubmit($event)\" (cancel)=\"onUpdateIssueGroupCancel($event)\"></map-grid-issue-group-atlassian>\n    <map-grid-issue-group-microsoft *ngIf=\"issueGroupModal && env.isMicrosoft\" [issue]=\"issues.data.view\" [form]=\"issueGroupForm\" (submit)=\"onUpdateIssueGroupSubmit($event)\" (cancel)=\"onUpdateIssueGroupCancel($event)\"></map-grid-issue-group-microsoft>\n  `,\n})\nexport class MapGridComponent implements OnInit, OnDestroy {\n  @Input() form: FormGroup;\n  @Input() options: Object;\n\n\n  config = config;\n  private formSubscription: any;\n\n  // update: custom properties\n  private issuePropertiesModal: boolean = false;\n  private issuePropertiesForm: FormArray;\n\n  // update: custom group\n  private issueGroupModal: boolean = false;\n  private issueGroupForm: FormGroup;\n\n  private newGroupIssues: any[][] = []; // aka new column\n  private isDragged: boolean = false;\n  \n  private isLoading: boolean = true;\n  private width: number = 0;\n  private height: number = 0;\n  \n\n  constructor(\n    private cdRef: ChangeDetectorRef,\n    private issues: IssueService,\n    private env: EnvService,\n    private map: MapService\n  ) {\n  }\n\n  ngOnInit() {\n    this.formSubscription = this.form.controls['lane'].valueChanges.subscribe(data => {\n      this.newGroupIssues = this.map.data.groups[data].map(() => []);\n    });\n  }\n\n  ngOnDestroy() {\n    this.formSubscription.unsubscribe();\n  }\n\n  onDragStart(issue: IIssue) {\n    this.isDragged = true;\n    // RESERVED / issue.state.dragged = true;\n\n    // to fix onDragEnd\n    window.addEventListener('mouseup', this.onDragEnd.bind(this, issue), <any>{once: true});\n  }\n\n  onDragEnd(issue: IIssue) {\n    this.isDragged = false;\n    // RESERVED / issue.state.dragged = false;\n  }\n\n  onDropGroup(data: any, index: number) {\n    let group =  data['group'];\n\n    let groupBefore = this.map.data.columnGroups[index - 1];\n    let groupAfter = this.map.data.columnGroups[index + 1];\n    if (!groupBefore && !groupAfter) { return; }\n\n    this.map.rank(group, groupBefore, groupAfter);\n  }\n\n  onDropIssue(data: any, indexLane: number, indexColumn: number) {\n    let issue =  data['issue'];\n    let issueIndex = this.issues.findIndex(issue.id);\n    let groupLane = this.map.data.laneGroups[indexLane];\n    let groupColumn = this.map.data.columnGroups[indexColumn];\n\n    // temporal \n    // TODO: inject in dropEnable (deadly slow) or somewhere else to highlight non-droppable areas\n    if (\n      groupLane && !this.issues.isUpdateGroup(issue, groupLane) ||\n      groupColumn && !this.issues.isUpdateGroup(issue, groupColumn)\n    ) { return this.map.regroup(issue.id); }\n\n    groupColumn = groupColumn || {\n      id: config.map.group.extras.NEW,\n      type: this.form.value.column,\n      items: [],\n    };\n\n    // list \"changed\" groups\n    let groups = [[data['groupLane'], groupLane], [data['groupColumn'], groupColumn]].map(item =>\n      item[1].id != item[0].id && // not equal source and target groups (when dropped to the same group)\n      item[1].items.indexOf(issueIndex) == -1 && // not belonging to target group (could be for some group types)\n      item[1] // return target group\n    ).filter(item => !!item);\n\n    // lock map (till all update requests completed)\n    this.map.addLock(groups.length);\n\n    // update issue rank\n    this.onRankIssue(issue, indexLane, indexColumn);\n\n    // update groups\n    groups.map(group => {\n      const isNew = group.id == config.map.group.extras.NEW;\n      const isOthers = group.id == config.map.group.extras.OTHERS;\n\n      if (isNew) {\n        this.onUpdateIssueGroup(issue, group.type);\n\n      } else {\n        switch(group.type) {\n          case config.map.group.values.VERSION_AFFECTED:\n            isOthers ?\n              this.onUpdateIssue(issue, group) :\n              this.onUpdateIssueProperties(issue, group, issue.atlassian.fields.versions);\n            break;\n\n          case config.map.group.values.VERSION_FIXED:\n            isOthers ?\n              this.onUpdateIssue(issue, group) :\n              this.onUpdateIssueProperties(issue, group, issue.atlassian.fields.fixVersions);\n            break;\n\n          case config.map.group.values.COMPONENT:\n            isOthers ?\n              this.onUpdateIssue(issue, group) :\n              this.onUpdateIssueProperties(issue, group, issue.atlassian.fields.components);\n            break;\n\n          default:\n            this.onUpdateIssue(issue, group);\n        }\n      }\n    });\n  }\n\n  onRankIssue(issue: IIssue, indexLane: number, indexColumn: number) {\n    let mapGroup: TIssueIndex[] = (this.map.data.issues[indexLane] || [])[indexColumn];\n    if (!mapGroup) { return; }\n\n    let mapIndex = mapGroup.findIndex(item => this.issues.data.list[item].id == issue.id);\n    let issueBefore = this.issues.data.list[mapGroup[mapIndex - 1]];\n    let issueAfter = this.issues.data.list[mapGroup[mapIndex + 1]];\n    if (!issueBefore && !issueAfter) { return; }\n\n    this.map.addLock();\n\n    this.issues.updateRank(issue, issueBefore, issueAfter).subscribe(() => {\n      this.map.removeLock();\n      this.map.reorder(issue.id, issueBefore, issueAfter);\n      this.map.regroup(issue.id); // trigger map update after unlock // TODO: replace \"regroup\" with \"refresh\"?\n    });\n  }\n\n  onUpdateIssue(issue: IIssue, group: IGroup) {\n    this.issues.updateGroup(issue, group).subscribe(() => {\n      this.map.removeLock();\n      this.map.regroup(issue.id);\n    });\n  }\n\n  onUpdateIssueGroup(issue: IIssue, groupType: TGroupType) {\n    if (groupType == config.map.group.values.PROJECT) {\n      this.issues.atlassian.updateProject(issue);\n      this.map.removeLock();\n    } else {\n      this.issues.view(issue);\n      this.issueGroupForm = this._issueGroupForm(groupType);\n      this.issueGroupModal = true;\n    }\n  }\n\n  onUpdateIssueGroupSubmit(issue: IIssue) {\n    this.issueGroupModal = false;\n\n    this.issues.updateGroup(issue, this.issueGroupForm.value).subscribe(() => {\n      this.map.removeLock();\n      this.map.regroup(issue.id); // TODO: replace \"regroup\" with \"refresh\"?\n      this.newGroupIssues.forEach(item => item.length = 0); // clean up \"new\" column\n    });\n  }\n\n  onUpdateIssueGroupCancel(issue: IIssue) {\n    this.issueGroupModal = false;\n    this.map.removeLock();\n    this.map.regroup(issue.id); // TODO: replace \"regroup\" with \"refresh\"?\n    this.newGroupIssues.forEach(item => item.length = 0); // clean up \"new\" column\n  }\n\n  _issueGroupForm(groupType: TGroupType): FormGroup {\n    return new FormGroup({\n      id: new FormControl(null, Validators.required),\n      type: new FormControl(groupType),\n      name: new FormControl(), // experimental / for \"status\" group only\n    });\n  }\n\n  onUpdateIssueProperties(issue: IIssue, group: IGroup, options: any[]) {\n    if (options.length) {\n      this.issues.view(issue);\n      this.issuePropertiesForm = this._issuePropertiesForm(options, group);\n      this.issuePropertiesModal = true;\n    } else {\n      this.onUpdateIssue(issue, group);\n    }\n  }\n\n  onUpdateIssuePropertiesSubmit(issue: IIssue, form: any) {\n    let group = this.issuePropertiesForm.value[0].group;\n    let addGroups: IGroup[] = [];\n    let removeGroups: IGroup[]  = [];\n\n    this.issuePropertiesModal = false;\n\n    this.issuePropertiesForm.value.map(item => {\n      item && item.oldValue != item.value &&\n        (item.value ? addGroups.push(item.group) : removeGroups.push(item.group));\n    });\n\n    this.issues.updateGroupProperties(issue, group.type, addGroups, removeGroups).subscribe(() => {\n      this.map.removeLock();\n      this.map.regroup(issue.id);\n    });\n  }\n\n  onUpdateIssuePropertiesCancel(issue: IIssue) {\n    this.issuePropertiesModal = false;\n    this.map.removeLock();\n    this.map.regroup(issue.id); // trigger update map to revert changes // TODO: replace \"regroup\" with \"refresh\"?\n  }\n\n  // RESERVED / OBSOLETED\n  // isNewGroupIssues() {\n  //   return this.newGroupIssues.reduce((output, item) => output || !!item.length, false);\n  // }\n\n  _issuePropertiesForm(options: any[], group: IGroup): FormArray {\n    return options.concat({\n        group: new FormControl(Object.assign({}, group)), // hidden service value\n      }).reduce((form, item) => {\n        form.push(new FormGroup({\n          value: new FormControl(!!item['self']), // to detect new item\n          oldValue: new FormControl(!!item['self']),\n          group: new FormControl(Object.assign({}, group, item)), // hidden service value\n        }));\n        return form;\n      }, new FormArray([]));\n  }\n\n  _groupTrackBy(index: number, item): any {\n    return item && item['type'] + item['id'];\n  }\n\n  _issueIndexTrackBy(index: number, item): any {\n    return item;\n  }\n  \n  resize(width, height)\n  {\n    //console.log('!!!resized1:', width, height, this.width, this.height);\n    if(width > this.width || height > this.height)\n      setTimeout(()=>{  \n        width = document.body.scrollWidth;\n        height = document.body.scrollHeight + 20;\n        this.env.atlassian.AP.resize(width + 'px', (height + 20) + 'px',);\n        //console.log('!!!resized:', width, height);\n        this.height = -1;\n        this.width = -1;\n      }, 200);\n  }\n  \n  onColumnsRenderingFinished(event){\n    //console.log('!!!onColumnsRenderingFinished');\n    this.resize(document.body.scrollWidth, document.body.scrollHeight);\n  }\n\n  onRenderingFinished(event){\n    //console.log('!!!onRenderingFinished');\n    this.isLoading = false;\n    this.cdRef.detectChanges();\n    this.resize(document.body.scrollWidth, document.body.scrollHeight);\n    //document.getElementById('map-grid-content').focus();\n    //document.getElementById('map-grid-content').scrollIntoView();\n  }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\n\n//import { TGroupId, IGroup } from '../interfaces/map.interface';\nimport { TIssueId, IIssue } from '../interfaces/issue.interface';\n\nimport config from '../config';\nimport {\n  IssueService,\n} from '../services';\n\n@Component({\n  selector: 'map-grid-issue',\n  template: `\n    <div\n      [class]=\"\n        'card bit-card-issue'\n        + (issue.state?.hidden ? ' hidden-xs-up bit-card-issue-hidden' : '')\n        + (issue.state?.highlightA ? ' bit-card-issue-highlight-a' : '')\n        + (issue.state?.highlightB ? ' bit-card-issue-highlight-b' : '')\n        + (issue.state?.updated ? ' bit-card-issue-flash' : '')\n        \"\n      >\n\n      <div class=\"card-block bit-card-issue-header clearfix\">\n        <div class=\"float-left bit-card-issue-title-wrapper\">\n          <img *ngIf=\"issue.atlassian\" [src]=\"issue.type.iconUrl\" [title]=\"issue.type.name\" class=\"bit-img-icon rounded\" />\n          <i *ngIf=\"issue.microsoft\" [title]=\"issue.type.name\" [class]=\"issue.type.iconClass\" [style]=\"issue.type.iconStyle\" ></i>\n\n          <img *ngIf=\"issue.atlassian\" [src]=\"issue.priority.iconUrl\" [title]=\"issue.priority.name\" class=\"bit-img-icon rounded\" />\n          <span *ngIf=\"issue.microsoft\">{{issue.priority.name}}</span>\n\n          <!--\n          <img [src]=\"issue.status.iconUrl\" [title]=\"issue.status.name\" class=\"bit-img-icon rounded\" />\n          -->\n          <a [target]=\"issue.id\" [href]=\"issues.url(issue)\" class=\"bit-card-issue-title link-colorless\">{{issue.key}}</a>\n        </div>\n\n        <div class=\"float-right\">\n          <a *ngIf=\"expanded\" (click)=\"onEditDescription()\" class=\"link\"><i class=\"bit-icon-pencil\"></i></a>\n\n          <!-- weak approach. not data driven, but vice verse -->\n          <span dropdown (onDropdownHidden)=\"issue.state.actions = false\" class=\"dropdown bit-storymap-card-actions\">\n            <a (click)=\"issue.state.actions = !issue.state.actions\" data-toggle=\"dropdown\" class=\"link dropdown-toggle\"></a>\n            <map-grid-issue-actions *ngIf=\"issue.state.actions\" [issue]=\"issue\" class=\"dropdown-menu dropdown-menu-right\" (showSubissues)=\"onShowIssueSubissues(issue)\"></map-grid-issue-actions>\n          </span>\n        </div>\n      </div>\n\n      <div *ngIf=\"expanded && !issue.state.description\" (click)=\"onEditDescription()\" [title]=\"issue.description\" class=\"card-block bit-card-issue-body bit-card-issue-body-description clearfix\">\n        {{issue.description}}\n      </div>\n\n      <div *ngIf=\"expanded && issue.state.description\" class=\"card-block bit-card-issue-body bit-card-issue-body-description clearfix\">\n        <textarea [formControl]=\"form.controls.description\" rows=\"2\" style=\"width: 100%\"></textarea>\n      </div>\n\n      <div class=\"card-block bit-card-issue-footer\">\n        <div *ngIf=\"expanded && issue.state.description\" class=\"float-left\">\n          <span (click)=\"issue.state.description = false\" class=\"link bit-icon-cancel-circled2\" title=\"Cancel\"></span>\n          <span (click)=\"issue.state.description = false\" (click)=\"onSubmitDescription()\" class=\"link bit-icon-ok-circled2\" title=\"Save\"></span>\n        </div>\n\n        <div class=\"float-right\">\n          <a *ngIf=\"issue.atlassian\" (click)=\"onShowIssueSubissues(issue)\" class=\"link\" title=\"Show subtasks\">{{issue.atlassian.fields.subtasks?.length || ''}}</a>\n          <span [title]=\"'Reporter: ' + issue.reporter.name\"><img class=\"bit-img-icon rounded\" [src]=\"issue.reporter.avatarUrl\" /></span>\n          <span *ngIf=\"issue.assignee\" [title]=\"'Assignee: ' + issue.assignee.name\"><img class=\"bit-img-icon rounded\" [src]=\"issue.assignee.avatarUrl\" /></span>\n          <span [title]=\"issue.points + ' story points'\">{{issue.points}}</span>\n        </div>\n      </div>\n    </div>\n\n    <map-grid-issue-subissues *ngIf=\"issueSubissuesModal\" [issue]=\"issue\" (cancel)=\"onCancelIssueSubissues($event)\"></map-grid-issue-subissues>\n  `,\n})\nexport class MapGridIssueComponent {\n  @Input() issue: IIssue;\n  @Input() expanded: boolean;\n\n  config = config;\n\n  private issueSubissuesModal: boolean = false;\n  \n  form = new FormGroup({\n    description: new FormControl(),\n  });\n\n  constructor(\n    private issues: IssueService\n  ) {\n  }\n\n  onEditDescription() {\n    this.issue.state.description = true;\n    this.issues.editForm(this.form, {\n      description: this.issue.description,\n    });\n  }\n\n  onSubmitDescription() {\n    let issue = this.issue;\n    issue.state.description = false;\n    issue.description = this.form.value.description;\n    this.issues.retrive(issue.id);\n    this.issues.updateDescription(issue, issue.description);\n  }\n\n  onShowIssueSubissues(issue: IIssue) {\n    this.issueSubissuesModal = true;\n  }\n\n  onCancelIssueSubissues(issue: IIssue) { // aka Close\n    this.issueSubissuesModal = false;\n  }\n}\n\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n//import { TGroupId, IGroup } from '../interfaces/map.interface';\nimport { TIssueId, IIssue } from '../interfaces/issue.interface';\n\nimport config from '../config';\nimport {\n  EnvService,\n  IssueService,\n} from '../services';\n\n@Component({\n  selector: 'map-grid-issue-actions',\n  template: `\n    <span *ngIf=\"issue.atlassian\">\n      <a *ngIf=\"issue.atlassian.fields.issuetype.name == config.issue.type.values.EPIC\" (click)=\"issues.atlassian.createDialog({id: issue.id, type: config.map.group.values.EPIC})\" class=\"dropdown-item link\"><span class=\"bit-icon-plus\"></span> Add Story</a>\n      <div *ngIf=\"issue.atlassian.fields.issuetype.name == config.issue.type.values.EPIC\" class=\"dropdown-divider\"></div>\n\n      <a *ngFor=\"let transition of issue.atlassian.transitions\" (click)=\"issues.atlassian.updateStatus(issue, transition.to.name)\" class=\"dropdown-item link\"><img [src]=\"transition.to.iconUrl\" [alt]=\"transition.to.description\" class=\"img-icon\" /> {{transition.name}}</a>\n      <div *ngIf=\"issue.atlassian.transitions?.length\" class=\"dropdown-divider\"></div>\n\n      <a (click)=\"issues.atlassian.editDialog(issue)\" class=\"dropdown-item link\"><span class=\"bit-icon-pencil\"></span> Edit</a>\n      <a (click)=\"issues.atlassian.assignDialog(issue)\" class=\"dropdown-item link\"><span class=\"bit-icon-user\"></span> Assign</a>\n      <a (click)=\"issues.atlassian.commentDialog(issue)\" class=\"dropdown-item link\"><span class=\"bit-icon-comment-empty\"></span> Comment</a>\n      <a *ngIf=\"issue.atlassian.fields.subtasks\" (click)=\"showSubissuesEvent.emit()\" class=\"dropdown-item link\"><span class=\"bit-icon-plus invisible\"></span> Subtasks <span class=\"aui-badge\">{{issue.atlassian.fields.subtasks?.length || 0}}</span></a>\n      <!-- OBSOLETED <a [href]=\"env.url('/secure/GHGoToBoard.jspa?issueId=' + issue.id + '&inline=true')\" class=\"dropdown-item link\" target=\"_issue\"><span class=\"bit-icon-plus invisible\"></span> Agile Board</a> -->\n      <a [href]=\"env.url('/secure/AttachFile!default.jspa?key=' + issue.key)\" class=\"dropdown-item link\" target=\"_issue\"><span class=\"bit-icon-attach\"></span> Attach Files</a>\n      <a [href]=\"env.url('/secure/ViewVoters!default.jspa?key=' + issue.key)\" class=\"dropdown-item link\" target=\"_issue\"><span class=\"bit-icon-plus invisible\"></span> Voters</a>\n\n      <a *ngIf=\"issue.atlassian.fields.watches.isWatching\" (click)=\"issues.atlassian.unwatch(issue)\" class=\"dropdown-item link\"><span class=\"bit-icon-eye\"></span>Stop Watching</a>\n      <a *ngIf=\"!issue.atlassian.fields.watches.isWatching\" (click)=\"issues.atlassian.watch(issue)\" class=\"dropdown-item link\"><span class=\"bit-icon-eye\"></span>Watch Issue</a>\n      <a [href]=\"env.url('/secure/ManageWatchers!default.jspa?key=' + issue.key)\" class=\"dropdown-item link\" target=\"_issue\"><span class=\"bit-icon-attach\"></span> Watchers <span class=\"tag tag-default tag-pill\">{{issue.atlassian.fields.watches.watchCount}}</span></a>\n      <a (click)=\"issues.atlassian.createSubissueDialog(issue)\" class=\"dropdown-item link\"><span class=\"bit-icon-plus\"></span> Create Sub-Task</a>\n      <a [href]=\"env.url('/secure/MoveIssue!default.jspa?key=' + issue.key)\" class=\"dropdown-item link\" target=\"_issue\"><span class=\"bit-icon-plus invisible\"></span> Move</a>\n      <a [href]=\"env.url('/secure/CloneIssueDetails!default.jspa?key=' + issue.key)\" class=\"dropdown-item link\" target=\"_issue\"><span class=\"bit-icon-plus invisible\"></span> Clone</a>\n      <a [href]=\"env.url('/secure/LinkJiraIssue!default.jspa?key=' + issue.key)\" class=\"dropdown-item link\" target=\"_issue\"><span class=\"bit-icon-attach\"></span> Link</a>\n      <a [href]=\"env.url('/secure/EditLabels!default.jspa?key=' + issue.key)\" class=\"dropdown-item link\" target=\"_issue\"><span class=\"bit-icon-tag\"></span> Labels</a>\n    </span>\n\n    <span *ngIf=\"issue.microsoft\">\n      <!-- RESERVED\n      <a [href]=\"issues.url(issue)\" [target]=\"issue.id\" class=\"dropdown-item link\"><span class=\"menu-item-icon bowtie-icon bowtie-arrow-open\"></span> Open</a>\n      -->\n      <a (click)=\"issues.microsoft.editDialog(issue)\" class=\"dropdown-item link\"><span class=\"menu-item-icon bowtie-icon bowtie-edit-outline\"></span> Edit</a>\n\n      <!--\n      <a class=\"disabled dropdown-item link\"><span class=\"menu-item-icon bowtie-icon bowtie-switch\"></span> Change type</a>\n      <a class=\"disabled dropdown-item link\"><span class=\"menu-item-icon bowtie-icon bowtie-work-item-move\"></span> Move to team project</a>\n      <a class=\"disabled dropdown-item link\"><span class=\"menu-item-icon bowtie-icon bowtie-users\"></span> Assign to</a>\n      <a class=\"disabled dropdown-item link\"><span class=\"menu-item-icon bowtie-icon bowtie-edit-delete\"></span> Delete</a>\n      <a class=\"disabled dropdown-item link\"><span class=\"menu-item-icon bowtie-icon bowtie-auto-fill-template\"></span> Templates...</a>\n\n      <div class=\"dropdown-divider\"></div>\n\n      <a class=\"disabled dropdown-item link\"><span class=\"icon menu-item-icon\"></span> Clone work item</a>\n      <a class=\"disabled dropdown-item link\"><span class=\"menu-item-icon bowtie-icon bowtie-edit-copy\"></span> Create copy of work item...</a>\n\n      <div class=\"dropdown-divider\"></div>\n\n      <a class=\"disabled dropdown-item link\"><span class=\"menu-item-icon bowtie-icon bowtie-work-item\"></span> Link to a new work item</a>\n      <a class=\"disabled dropdown-item link\"><span class=\"menu-item-icon bowtie-icon bowtie-math-plus\"></span> Link to an existing work item</a>\n\n      <div class=\"dropdown-divider\"></div>\n\n      <a class=\"disabled dropdown-item link\"><span class=\"menu-item-icon bowtie-icon bowtie-copy-to-clipboard\"></span> Copy as HTML</a>\n      <a class=\"disabled dropdown-item link\"><span class=\"menu-item-icon bowtie-icon bowtie-mail-message\"></span> Email...</a>\n\n      <div class=\"dropdown-divider\"></div>\n\n      <a class=\"disabled dropdown-item link\"><span class=\"menu-item-icon bowtie-icon bowtie-tfvc-branch\"></span> New branch...</a>\n      -->\n    </span>\n  `,\n})\nexport class MapGridIssueActionsComponent {\n  @Input() issue: IIssue;\n  @Output('showSubissues') showSubissuesEvent: EventEmitter<any> = new EventEmitter();\n\n  config = config;\n\n  constructor(\n    private env: EnvService,\n    private issues: IssueService\n  ) {\n  }\n}\n\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { FormArray, FormControl } from '@angular/forms';\n\n//import { TGroupId, IGroup } from '../interfaces/map.interface';\nimport { TIssueId, IIssue } from '../interfaces/issue.interface';\n\nimport {\n  IssueService,\n} from '../services';\n\n@Component({\n  selector: 'map-grid-issue-properties',\n  template: `\n    <div modal (hidden)=\"onCancel()\" class=\"modal fade\" id=\"issueProperiesModal\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n      <div class=\"modal-dialog\" role=\"document\">\n        <div class=\"modal-content\">\n          <div class=\"modal-header\">\n            <h5 class=\"modal-title\">{{issue.key}}</h5>\n            <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n              <span aria-hidden=\"true\">&times;</span>\n            </button>\n          </div>\n\n          <form [formGroup]=\"form\" (ngSubmit)=\"form.valid && onSubmit()\" novalidate>\n            <div class=\"modal-body\">\n              <div *ngFor=\"let item of form.controls\" class=\"form-check\">\n                <div class=\"form-check\">\n                  <label class=\"form-check-label\">\n                    <input [formControl]=\"item.controls['value']\" type=\"checkbox\" class=\"form-check-input\">\n                    {{item.value.group.name}}\n                  </label>\n                </div>\n              </div>\n            </div>\n            <div class=\"modal-footer\">\n              <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Cancel</button>\n              <button type=\"submit\" class=\"btn btn-primary\">Save</button>\n            </div>\n          </form>\n\n        </div>\n      </div>\n    </div>\n  `,\n})\nexport class MapGridIssuePropertiesComponent {\n  @Input() issue: IIssue;\n  @Input() form: FormArray;\n\n  @Output('submit') submitEvent: EventEmitter<any> = new EventEmitter();\n  @Output('cancel') cancelEvent: EventEmitter<any> = new EventEmitter();\n\n  constructor() {\n  }\n\n  onSubmit() {\n    this.submitEvent.emit(this.issue);\n  }\n\n  onCancel() {\n    this.cancelEvent.emit(this.issue);\n  }\n}\n\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { FormArray, FormControl } from '@angular/forms';\n\n//import { TGroupId, IGroup } from '../interfaces/map.interface';\nimport { TIssueId, IIssue } from '../interfaces/issue.interface';\n\nimport {\n  IssueService,\n} from '../services';\n\n@Component({\n  selector: 'map-grid-issue-subissues',\n  template: `\n    <div modal (hidden)=\"onCancel()\" class=\"modal \" id=\"issueProperiesModal\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n      <div class=\"modal-dialog modal-lg\" role=\"document\">\n        <div class=\"modal-content\">\n          <div class=\"modal-header\">\n            <h5 class=\"modal-title\">Subtasks of {{issue.key}}</h5>\n\n            <div class=\"mr-3\" style=\"margin-left: auto;\">\n              <a target=\"_issue\" class=\"link\" (click)=\"issues.atlassian.createSubissueDialog(issue)\"><span class=\"bit-icon-plus\"></span> Create Sub-Task</a>\n            </div>\n\n            <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n              <span aria-hidden=\"true\">&times;</span>\n            </button>\n          </div>\n\n          <table *ngIf=\"issue.atlassian.fields['subtasks'] && issue.atlassian.fields['subtasks'].length\" class=\"table table-hover\">\n            <thead>\n              <tr>\n                <th width=\"20%\">Key</th>\n                <th width=\"40%\">Summary</th>\n                <th width=\"20%\">Progress</th>\n                <th width=\"20%\"></th>\n              </tr>\n            </thead>\n\n            <tbody>\n              <tr *ngFor=\"let item of subissues\">\n                <td>\n                  <a [href]=\"issues.url(item)\" [target]=\"item.key\" class=\"link\">{{item.key}}</a>\n                </td>\n                <td style=\"word-wrap: break-word\">\n                  {{item.description || '-'}}\n                </td>\n                <td *ngIf=\"item.atlassian.fields.progress\">\n                  <div [title]=\"item.atlassian.fields.progress.percent + '% ' + item.atlassian.fields.progress.progress + ' of ' + item.atlassian.fields.progress.total\" class=\"progress\">\n                    <div class=\"progress-bar progress-bar-striped bg-success\" role=\"progressbar\" [ngStyle]=\"{width: '' + (item.atlassian.fields.progress.total ? item.atlassian.fields.progress.progress / item.atlassian.fields.progress.total : 0) * 100 + '%'}\">{{((item.atlassian.fields.progress.total ? item.atlassian.fields.progress.progress / item.atlassian.fields.progress.total : 0) * 100).toFixed(0)}}%</div>\n                  </div>\n                </td>\n                <td *ngIf=\"!item.atlassian.fields.progress\">\n                </td>\n                <td style=\"white-space: nowrap\">\n                  <img [title]=\"item.atlassian.fields.issuetype?.name\" class=\"bit-img-icon\" [src]=\"item.atlassian.fields.issuetype?.iconUrl\" />\n                  <img [title]=\"item.atlassian.fields.status?.name\" class=\"bit-img-icon\" [src]=\"item.atlassian.fields.status?.iconUrl\" />\n                  <img [title]=\"item.atlassian.fields.priority?.name\" class=\"bit-img-icon\" [src]=\"item.atlassian.fields.priority?.iconUrl\" />\n                  <img [title]=\"item.reporter?.name\" class=\"bit-img-icon\" [src]=\"item.reporter?.avatarUrl\" />\n                  <img *ngIf=\"item.assignee?.avatarUrl\" [title]=\"item.assignee?.name\" class=\"bit-img-icon\" [src]=\"item.assignee?.avatarUrl\" />\n                </td>\n              </tr>\n            </tbody>\n          </table>\n\n          <div *ngIf=\"!issue.atlassian.fields['subtasks'] || !issue.atlassian.fields['subtasks'].length\" class=\"modal-body\">\n            No subtasks found\n          </div>\n\n          <div class=\"modal-footer\">\n            <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Cancel</button>\n            <!-- <button type=\"submit\" class=\"btn btn-primary\">Save</button> -->\n          </div>\n        </div>\n      </div>\n    </div>\n  `,\n})\nexport class MapGridIssueSubissuesComponent implements OnInit {\n  @Input() issue: IIssue;\n  // RESERVED / @Input() form: FormArray;\n\n  // RESERVED / @Output('submit') submitEvent: EventEmitter<any> = new EventEmitter();\n  @Output('cancel') cancelEvent: EventEmitter<any> = new EventEmitter();\n\n  subissues: IIssue[];\n\n  constructor(\n    private issues: IssueService\n  ) {\n  }\n\n  ngOnInit() {\n    // init subissues (nested objects have no all the needed fields)\n    this.subissues = this.issue.atlassian.fields['subtasks'].map(item =>\n      this.issues.find(item.id) || item\n    );\n  }\n\n  // RESERVED\n  // onSubmit() {\n  //   this.submitEvent.emit(this.issue);\n  // }\n\n  onCancel() {\n    this.cancelEvent.emit(this.issue);\n  }\n}\n\n","import { Component, OnInit, OnDestroy, Input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\n\n//import { TGroupId, IGroup } from '../interfaces/map.interface';\nimport { TUserId, IUser } from '../interfaces/user.interface';\nimport { TIssueId, IIssue } from '../interfaces/issue.interface';\n\nimport config from '../config';\nimport {\n  EnvService,\n  UserService,\n  IssueService,\n} from '../services';\n\n@Component({\n  selector: 'map-grid-issue-group-atlassian',\n  providers: [\n    UserService,\n    IssueService,\n  ],\n  template: `\n    <div modal (hidden)=\"onCancel()\" class=\"modal fade\" id=\"issueGroupModal\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n      <div class=\"modal-dialog\" role=\"document\">\n        <div class=\"modal-content\">\n          <div class=\"modal-header\">\n            <h5 class=\"modal-title\">{{issue.key}}</h5>\n            <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n              <span aria-hidden=\"true\">&times;</span>\n            </button>\n          </div>\n\n          <form [formGroup]=\"form\" (ngSubmit)=\"form.valid && onSubmit()\" novalidate>\n            <div class=\"modal-body\">\n              <div [formControlValidator]=\"form.controls.id\" class=\"form-group\">\n                <label for=\"id\">{{config.map.group.labels[form.value.type]}}</label>\n\n                <!-- Project -->\n                <select *ngIf=\"form.value.type == config.map.group.values.PROJECT\" formControlName=\"id\" class=\"form-control\" id=\"id\">\n                  <option>- Select -</option>\n                  <option *ngFor=\"let item of env.data.projects\" [value]=\"item.id\">{{item.name}}</option>\n                </select>\n\n                <!-- Epic -->\n                <form-typeahead\n                  *ngIf=\"form.value.type == config.map.group.values.EPIC\"\n                  placeholder=\"Type to search...\"\n                  [control]=\"form.controls.id\"\n                  [options]=\"issues.data.list\"\n                  [optionValue]=\"issueValue\"\n                  [optionLabel]=\"issueLabel\"\n                  [optionLabelInput]=\"issueLabelInput\"\n                  (search)=\"issueSearch($event, true)\"\n                ></form-typeahead>\n\n                <!-- Sprint -->\n                <select *ngIf=\"form.value.type == config.map.group.values.SPRINT\" formControlName=\"id\" class=\"form-control\" id=\"id\">\n                  <option>- Select -</option>\n                  <option *ngFor=\"let item of env.data.sprints\" [value]=\"item.id\">{{item.name}}</option>\n                </select>\n\n                <!-- Story points -->\n                <div *ngIf=\"form.value.type == config.map.group.values.POINTS\"><input formControlName=\"id\" id=\"id\" type=\"text\" class=\"form-control\"></div>\n\n                <!-- Affected & Fixed Versions -->\n                <select *ngIf=\"\n                  form.value.type == config.map.group.values.VERSION_AFFECTED ||\n                  form.value.type == config.map.group.values.VERSION_FIXED\n                \" formControlName=\"id\" class=\"form-control\" id=\"id\">\n                  <option>- Select -</option>\n                  <option *ngFor=\"let item of env.data.versions\" [value]=\"item.id\">{{item.name}}</option>\n                </select>\n\n                <!-- Components -->\n                <select *ngIf=\"form.value.type == config.map.group.values.COMPONENT\" formControlName=\"id\" class=\"form-control\" id=\"id\">\n                  <option>- Select -</option>\n                  <option *ngFor=\"let item of env.data.components\" [value]=\"item.id\">{{item.name}}</option>\n                </select>\n\n                <!-- Status -->\n                <select *ngIf=\"form.value.type == config.map.group.values.STATUS\" formControlName=\"id\" class=\"form-control\" id=\"id\">\n                  <option>- Select -</option>\n                  <!-- Hack: important to pass \"name\", instead of \"id\" as value -->\n                  <option *ngFor=\"let item of issue.atlassian.transitions\" [value]=\"item.to.name\">{{item.to.name}}</option>\n                </select>\n\n                <!-- Priority -->\n                <select *ngIf=\"form.value.type == config.map.group.values.PRIORITY\" formControlName=\"id\" class=\"form-control\" id=\"id\">\n                  <option>- Select -</option>\n                  <option *ngFor=\"let item of env.data.priorities\" [value]=\"item.id\">{{item.name}}</option>\n                </select>\n\n                <!-- Issue type -->\n                <select *ngIf=\"form.value.type == config.map.group.values.TYPE\" formControlName=\"id\" class=\"form-control\" id=\"id\">\n                  <option>- Select -</option>\n                  <option *ngFor=\"let item of env.data.issueTypes\" [value]=\"item.id\">{{item.name}}</option>\n                </select>\n\n                <!-- Assignee -->\n                <form-typeahead\n                  *ngIf=\"form.value.type == config.map.group.values.ASSIGNEE\"\n                  placeholder=\"Type to search...\"\n                  [control]=\"form.controls.id\"\n                  [options]=\"users.data.list\"\n                  [optionValue]=\"userValue\"\n                  [optionLabel]=\"userLabel\"\n                  [optionLabelInput]=\"userLabelInput\"\n                  (search)=\"userSearch($event)\"\n                ></form-typeahead>\n\n                <!-- Reporter -->\n                <form-typeahead\n                  *ngIf=\"form.value.type == config.map.group.values.REPORTER\"\n                  placeholder=\"Type to search...\"\n                  [control]=\"form.controls.id\"\n                  [options]=\"users.data.list\"\n                  [optionValue]=\"userValue\"\n                  [optionLabel]=\"userLabel\"\n                  [optionLabelInput]=\"userLabelInput\"\n                  (search)=\"userSearch($event)\"\n                ></form-typeahead>\n\n                <!-- Duplicates (Out) -->\n                <form-typeahead\n                  *ngIf=\"form.value.type == config.map.group.values.DUPLICATES\"\n                  placeholder=\"Type to search...\"\n                  [control]=\"form.controls.id\"\n                  [options]=\"issues.data.list\"\n                  [optionValue]=\"issueValue\"\n                  [optionLabel]=\"issueLabel\"\n                  [optionLabelInput]=\"issueLabelInput\"\n                  (search)=\"issueSearch($event)\"\n                ></form-typeahead>\n\n                <!-- Is Duplicated By (In) -->\n                <form-typeahead\n                  *ngIf=\"form.value.type == config.map.group.values.DUPLICATED\"\n                  placeholder=\"Type to search...\"\n                  [control]=\"form.controls.id\"\n                  [options]=\"issues.data.list\"\n                  [optionValue]=\"issueValue\"\n                  [optionLabel]=\"issueLabel\"\n                  [optionLabelInput]=\"issueLabelInput\"\n                  (search)=\"issueSearch($event)\"\n                ></form-typeahead>\n\n                <!-- Blocks (Out) -->\n                <form-typeahead\n                  *ngIf=\"form.value.type == config.map.group.values.BLOCKS\"\n                  placeholder=\"Type to search...\"\n                  [control]=\"form.controls.id\"\n                  [options]=\"issues.data.list\"\n                  [optionValue]=\"issueValue\"\n                  [optionLabel]=\"issueLabel\"\n                  [optionLabelInput]=\"issueLabelInput\"\n                  (search)=\"issueSearch($event)\"\n                ></form-typeahead>\n\n                <!-- Is Blocked By (In) -->\n                <form-typeahead\n                  *ngIf=\"form.value.type == config.map.group.values.BLOCKED\"\n                  placeholder=\"Type to search...\"\n                  [control]=\"form.controls.id\"\n                  [options]=\"issues.data.list\"\n                  [optionValue]=\"issueValue\"\n                  [optionLabel]=\"issueLabel\"\n                  [optionLabelInput]=\"issueLabelInput\"\n                  (search)=\"issueSearch($event)\"\n                ></form-typeahead>\n\n              </div>\n\n            </div>\n            <div class=\"modal-footer\">\n              <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Cancel</button>\n              <button type=\"submit\" class=\"btn btn-primary\">Save</button>\n            </div>\n          </form>\n\n        </div>\n      </div>\n    </div>\n  `,\n})\nexport class MapGridIssueGroupAtlassianComponent implements OnInit {\n  @Input() issue: IIssue;\n  @Input() form: FormGroup;\n\n  @Output('submit') submitEvent: EventEmitter<any> = new EventEmitter();\n  @Output('cancel') cancelEvent: EventEmitter<any> = new EventEmitter();\n\n  config = config;\n\n  constructor(\n    private env: EnvService,\n    private users: UserService,\n    private issues: IssueService,\n  ) {\n  }\n\n  ngOnInit() {\n    this.form.value.type == config.map.group.values.PROJECT && this.env.atlassian.retriveProjects();\n    this.form.value.type == config.map.group.values.SPRINT && this.env.atlassian.retriveSprints();\n    this.form.value.type == config.map.group.values.VERSION_AFFECTED && this.env.atlassian.retriveVersions();\n    this.form.value.type == config.map.group.values.VERSION_FIXED && this.env.atlassian.retriveVersions();\n    this.form.value.type == config.map.group.values.COMPONENT && this.env.atlassian.retriveComponents(this.issue.atlassian.fields.project.id);\n    this.form.value.type == config.map.group.values.PRIORITY && this.env.atlassian.retrivePriorities();\n  }\n\n  userValue = (user: IUser) => user.key;\n  userLabel = (user: IUser) => '<img class=\"bit-img-icon rounded\" src=\"' + user.avatarUrl + '\" /> ' + user.name;\n  userLabelInput = (user: IUser) => user.name;\n  userSearch = (value) => value && this.users.list({\n    username: value,\n    maxResults: 10,\n  });\n\n  issueValue = (issue: IIssue) => issue.id;\n  issueLabel = (issue: IIssue) => '<img class=\"bit-img-icon rounded\" src=\"' + issue.atlassian.fields['issuetype'].iconUrl + '\" /> ' + issue.key;\n  issueLabelInput = (issue: IIssue) => issue.key;\n  issueSearch = (value: string, isEpic: boolean = false) => {\n    let matches = value.toLowerCase().match('[a-z]+-[0-9]+');\n\n    return value && this.issues.list({\n      jql: '(summary~\"' + value + '*\" OR description~\"' + value \n        + '*\"' + (matches ? ' OR key=' + matches[0] : '') + ') AND ' // key = \"' + value + '\"' + ' OR ' + '\n        + (isEpic ? 'type=EPIC AND ' : '') + this.env.data.filter['jql'],\n      maxResults: 10,\n    });\n  }\n\n  onSubmit() {\n    this.submitEvent.emit(this.issue);\n  }\n\n  onCancel() {\n    this.cancelEvent.emit(this.issue);\n  }\n\n}\n","import { Component, OnInit, OnDestroy, Input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\n\n//import { TGroupId, IGroup } from '../interfaces/map.interface';\nimport { TUserId, IUser } from '../interfaces/user.interface';\nimport { TIssueId, IIssue } from '../interfaces/issue.interface';\n\nimport config from '../config';\nimport {\n  EnvService,\n  UserService,\n  IssueService,\n} from '../services';\n\n@Component({\n  selector: 'map-grid-issue-group-microsoft',\n  providers: [\n    UserService,\n    IssueService,\n  ],\n  template: `\n    <div modal (hidden)=\"onCancel()\" class=\"modal fade\" id=\"issueGroupModal\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n      <div class=\"modal-dialog\" role=\"document\">\n        <div class=\"modal-content\">\n          <div class=\"modal-header\">\n            <h5 class=\"modal-title\">{{issue.key}}</h5>\n            <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n              <span aria-hidden=\"true\">&times;</span>\n            </button>\n          </div>\n\n          <form [formGroup]=\"form\" (ngSubmit)=\"form.valid && onSubmit()\" novalidate>\n            <div class=\"modal-body\">\n              <div [formControlValidator]=\"form.controls.id\" class=\"form-group\">\n                <label for=\"id\">{{config.map.group.labels[form.value.type]}}</label>\n\n                <!-- TODO -->\n                <!-- Project -->\n                <select *ngIf=\"form.value.type == config.map.group.values.PROJECT\" formControlName=\"id\" class=\"form-control\" id=\"id\">\n                  <option>- Select -</option>\n                  <option *ngFor=\"let item of env.data.projects\" [value]=\"item.id\">{{item.name}}</option>\n                </select>\n\n                <!-- TODO -->\n                <!-- Epic -->\n                <form-typeahead\n                  *ngIf=\"form.value.type == config.map.group.values.EPIC\"\n                  placeholder=\"Type to search...\"\n                  [control]=\"form.controls.id\"\n                  [options]=\"issues.data.list\"\n                  [optionValue]=\"issueValue\"\n                  [optionLabel]=\"issueLabel\"\n                  [optionLabelInput]=\"issueLabelInput\"\n                  (search)=\"issueSearch($event, true)\"\n                ></form-typeahead>\n\n                <!-- TODO -->\n                <!-- Sprint -->\n                <select *ngIf=\"form.value.type == config.map.group.values.SPRINT\" formControlName=\"id\" class=\"form-control\" id=\"id\">\n                  <option>- Select -</option>\n                  <option *ngFor=\"let item of env.data.sprints\" [value]=\"item.id\">{{item.name}}</option>\n                </select>\n\n                <!-- Story points -->\n                <div *ngIf=\"form.value.type == config.map.group.values.POINTS\"><input formControlName=\"id\" id=\"id\" type=\"text\" class=\"form-control\"></div>\n\n                <!-- TODO -->\n                <!-- Affected & Fixed Versions -->\n                <select *ngIf=\"\n                  form.value.type == config.map.group.values.VERSION_AFFECTED ||\n                  form.value.type == config.map.group.values.VERSION_FIXED\n                \" formControlName=\"id\" class=\"form-control\" id=\"id\">\n                  <option>- Select -</option>\n                  <option *ngFor=\"let item of env.data.versions\" [value]=\"item.id\">{{item.name}}</option>\n                </select>\n\n                <!-- TODO -->\n                <!-- Components -->\n                <select *ngIf=\"form.value.type == config.map.group.values.COMPONENT\" formControlName=\"id\" class=\"form-control\" id=\"id\">\n                  <option>- Select -</option>\n                  <option *ngFor=\"let item of env.data.components\" [value]=\"item.id\">{{item.name}}</option>\n                </select>\n\n                <!-- Status -->\n                <select *ngIf=\"form.value.type == config.map.group.values.STATUS\" formControlName=\"id\" class=\"form-control\" id=\"id\">\n                  <option>- Select -</option>\n                  <!-- Hack: important to pass \"name\", instead of \"id\" as value -->\n                  <option *ngFor=\"let item of issue.transitions\" [value]=\"item.to.name\">{{item.to.name}}</option>\n                </select>\n\n                <!-- Priority -->\n                <select *ngIf=\"form.value.type == config.map.group.values.PRIORITY\" formControlName=\"id\" class=\"form-control\" id=\"id\">\n                  <option>- Select -</option>\n                  <option *ngFor=\"let item of env.data.priorities\" [value]=\"item.id\">{{item.name}}</option>\n                </select>\n\n                <!-- Issue type -->\n                <select *ngIf=\"form.value.type == config.map.group.values.TYPE\" formControlName=\"id\" class=\"form-control\" id=\"id\">\n                  <option>- Select -</option>\n                  <option *ngFor=\"let item of env.data.issueTypes\" [value]=\"item.id\">{{item.name}}</option>\n                </select>\n\n                <!-- Assignee -->\n                <form-typeahead\n                  *ngIf=\"form.value.type == config.map.group.values.ASSIGNEE\"\n                  placeholder=\"Type to search...\"\n                  [control]=\"form.controls.id\"\n                  [options]=\"users.data.list\"\n                  [optionValue]=\"userValue\"\n                  [optionLabel]=\"userLabel\"\n                  [optionLabelInput]=\"userLabelInput\"\n                  (search)=\"userSearch($event)\"\n                ></form-typeahead>\n\n                <!-- Reporter -->\n                <form-typeahead\n                  *ngIf=\"form.value.type == config.map.group.values.REPORTER\"\n                  placeholder=\"Type to search...\"\n                  [control]=\"form.controls.id\"\n                  [options]=\"users.data.list\"\n                  [optionValue]=\"userValue\"\n                  [optionLabel]=\"userLabel\"\n                  [optionLabelInput]=\"userLabelInput\"\n                  (search)=\"userSearch($event)\"\n                ></form-typeahead>\n\n                <!-- TODO -->\n                <!-- Duplicates (Out) -->\n                <form-typeahead\n                  *ngIf=\"form.value.type == config.map.group.values.DUPLICATES\"\n                  placeholder=\"Type to search...\"\n                  [control]=\"form.controls.id\"\n                  [options]=\"issues.data.list\"\n                  [optionValue]=\"issueValue\"\n                  [optionLabel]=\"issueLabel\"\n                  [optionLabelInput]=\"issueLabelInput\"\n                  (search)=\"issueSearch($event)\"\n                ></form-typeahead>\n\n                <!-- TODO -->\n                <!-- Is Duplicated By (In) -->\n                <form-typeahead\n                  *ngIf=\"form.value.type == config.map.group.values.DUPLICATED\"\n                  placeholder=\"Type to search...\"\n                  [control]=\"form.controls.id\"\n                  [options]=\"issues.data.list\"\n                  [optionValue]=\"issueValue\"\n                  [optionLabel]=\"issueLabel\"\n                  [optionLabelInput]=\"issueLabelInput\"\n                  (search)=\"issueSearch($event)\"\n                ></form-typeahead>\n\n                <!-- TODO -->\n                <!-- Blocks (Out) -->\n                <form-typeahead\n                  *ngIf=\"form.value.type == config.map.group.values.BLOCKS\"\n                  placeholder=\"Type to search...\"\n                  [control]=\"form.controls.id\"\n                  [options]=\"issues.data.list\"\n                  [optionValue]=\"issueValue\"\n                  [optionLabel]=\"issueLabel\"\n                  [optionLabelInput]=\"issueLabelInput\"\n                  (search)=\"issueSearch($event)\"\n                ></form-typeahead>\n\n                <!-- TODO -->\n                <!-- Is Blocked By (In) -->\n                <form-typeahead\n                  *ngIf=\"form.value.type == config.map.group.values.BLOCKED\"\n                  placeholder=\"Type to search...\"\n                  [control]=\"form.controls.id\"\n                  [options]=\"issues.data.list\"\n                  [optionValue]=\"issueValue\"\n                  [optionLabel]=\"issueLabel\"\n                  [optionLabelInput]=\"issueLabelInput\"\n                  (search)=\"issueSearch($event)\"\n                ></form-typeahead>\n\n              </div>\n\n            </div>\n            <div class=\"modal-footer\">\n              <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Cancel</button>\n              <button type=\"submit\" class=\"btn btn-primary\">Save</button>\n            </div>\n          </form>\n\n        </div>\n      </div>\n    </div>\n  `,\n})\nexport class MapGridIssueGroupMicrosoftComponent implements OnInit {\n  @Input() issue: IIssue;\n  @Input() form: FormGroup;\n\n  @Output('submit') submitEvent: EventEmitter<any> = new EventEmitter();\n  @Output('cancel') cancelEvent: EventEmitter<any> = new EventEmitter();\n\n  config = config;\n\n  constructor(\n    private env: EnvService,\n    private users: UserService,\n    private issues: IssueService,\n  ) {\n  }\n\n  ngOnInit() {\n    // RESERVED / this.form.value.type == config.map.group.values.PROJECT && this.env.atlassian.retriveProjects();\n    this.form.value.type == config.map.group.values.SPRINT && this.env.atlassian.retriveSprints();\n    // RESERVED / this.form.value.type == config.map.group.values.VERSION_AFFECTED && this.env.atlassian.retriveVersions();\n    // RESERVED / this.form.value.type == config.map.group.values.VERSION_FIXED && this.env.atlassian.retriveVersions();\n    // RESERVED / this.form.value.type == config.map.group.values.COMPONENT && this.env.atlassian.retriveComponents(this.issue.atlassian.fields.project.id);\n    this.form.value.type == config.map.group.values.PRIORITY && this.env.atlassian.retrivePriorities();\n  }\n\n  userValue = (user: IUser) => user.key;\n  userLabel = (user: IUser) => '<img class=\"bit-img-icon rounded\" src=\"' + user.avatarUrl + '\" /> ' + user.name;\n  userLabelInput = (user: IUser) => user.name;\n  userSearch = (value) => value && this.users.list({\n    username: value,\n    maxResults: 10,\n  });\n\n  issueValue = (issue: IIssue) => issue.id;\n  issueLabel = (issue: IIssue) => '<img class=\"bit-img-icon rounded\" src=\"' + issue.atlassian.fields['issuetype'].iconUrl + '\" /> ' + issue.key;\n  issueLabelInput = (issue: IIssue) => issue.key;\n  issueSearch = (value: string, isEpic: boolean = false) => value && this.issues.list({\n    jql: '(summary ~ \"' + value + '\") AND ' // key = \"' + value + '\"' + ' OR ' + '\n      + (isEpic ? 'type = EPIC AND ' : '') + this.env.data.filter['jql'],\n    maxResults: 10,\n  });\n\n  onSubmit() {\n    this.submitEvent.emit(this.issue);\n  }\n\n  onCancel() {\n    this.cancelEvent.emit(this.issue);\n  }\n\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\n\nimport { TGroupId, IGroup } from '../interfaces/map.interface';\n//import { TIssueId, IIssue } from '../interfaces/issue.interface';\n\nimport config from '../config';\nimport {\n  EnvService,\n  IssueService,\n} from '../services';\n\n@Component({\n  selector: 'map-grid-group',\n  template: `\n    <!-- Experimental. Microsoft only -->\n    <div *ngIf=\"group.parent && (group.parent.first && group.parent.id != config.map.group.extras.OTHERS)\" class=\"card bit-card-issue\">\n      <div class=\"card-block bit-card-issue-header\">\n        <div *ngIf=\"group.parent.id\" class=\"float-right\">\n          <a *ngIf=\"env.isMicrosoft\" [href]=\"issues.microsoft.createUrl(group.parent)\" target=\"_blank\" class=\"link link-colorless\" title=\"Create\"><span class=\"bit-icon-plus\"></span></a>\n        </div>\n        <div class=\"bit-card-issue-title-wrapper\" [title]=\"group.name\">\n          <span class=\"bit-card-issue-title\">{{group.parent.name}}</span>\n        </div>\n        <div class=\"clearfix\"></div>\n      </div>\n\n      <div class=\"card-block bit-card-issue-body\">\n        <div class=\"clearfix\"></div>\n      </div>\n\n      <div class=\"card-block bit-card-issue-footer\">\n        <div class=\"clearfix\"></div>\n      </div>\n    </div>\n\n    <div *ngIf=\"group.parent && (!group.parent.first || group.parent.id == config.map.group.extras.OTHERS)\" class=\"card bit-card-issue\" style=\"visibility: hidden\">\n      <div class=\"card-block bit-card-issue-header\">\n        <div class=\"bit-card-issue-title-wrapper\">\n          <span class=\"bit-card-issue-title\">&nbsp;</span>\n        </div>\n        <div class=\"clearfix\"></div>\n      </div>\n\n      <div class=\"card-block bit-card-issue-body\">\n        <div class=\"clearfix\"></div>\n      </div>\n\n      <div class=\"card-block bit-card-issue-footer\">\n        <div class=\"clearfix\"></div>\n      </div>\n    </div>\n\n    <div class=\"card bit-card-issue\">\n      <div class=\"card-block bit-card-issue-header\">\n        <div *ngIf=\"group.id && group.type != config.map.group.values.STATUS\" class=\"float-right\">\n          <a *ngIf=\"env.isAtlassian\" (click)=\"issues.atlassian.createDialog(group)\" class=\"link\" title=\"Create\"><span class=\"bit-icon-plus\"></span></a>\n          <a *ngIf=\"env.isMicrosoft\" [href]=\"issues.microsoft.createUrl(group)\" target=\"_blank\" class=\"link link-colorless\" title=\"Create\"><span class=\"bit-icon-plus\"></span></a>\n        </div>\n        <div class=\"bit-card-issue-title-wrapper\" [title]=\"group.name\">\n          <span class=\"bit-card-issue-title\">{{group.name}}</span>\n        </div>\n        <div class=\"clearfix\"></div>\n      </div>\n\n      <div [title]=\"issues.data.list[group.issueIndex]?.description\" class=\"card-block bit-card-issue-body\">\n        {{issues.data.list[group.issueIndex]?.description}}&nbsp;\n      </div>\n\n      <div class=\"card-block bit-card-issue-footer\">\n        <div class=\"float-right\" title=\"Story Points\">&nbsp;{{group.points}}</div>\n        <div class=\"clearfix\"></div>\n      </div>\n    </div>\n  `,\n})\nexport class MapGridGroupComponent {\n  @Input() group: IGroup;\n  @Input() expanded: boolean;\n\n  config = config;\n\n  // OBSOLETED\n  // form = new FormGroup({\n  //   summary: new FormControl(),\n  // });\n\n  constructor(\n    private env: EnvService,\n    private issues: IssueService\n  ) {\n  }\n}\n\n","import { Component, Input } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\n\nimport config from '../config';\nimport {\n  IssueService,\n} from '../services';\n\n@Component({\n  selector: 'map-tree',\n  template: `\n\n  `,\n})\nexport class MapTreeComponent {\n  @Input() form: FormGroup;\n  config = config;\n}\n\n\n","\nexport * from './issue.details.component';\nexport * from './treegrid-page.component';\nexport * from './treegrid.component';\nexport * from './treegrid-toolbar.component';\nexport * from './treegrid-filterbar.component';\nexport * from './treegrid-header.component';\nexport * from './grid.dialog.component';\n\n","\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require(\"@angular/core\");\r\nvar IntegralUIDragDropService = (function () {\r\n    // Initialization ----------------------------------------------------------------\r\n    function IntegralUIDragDropService() {\r\n        this.data = {\r\n            action: 'move',\r\n            clone: null,\r\n            dropPos: -1,\r\n            handle: null,\r\n            source: null,\r\n            sourceCtrl: null,\r\n            sourceData: null,\r\n            sourceIndex: -1,\r\n            target: null,\r\n            targetCtrl: null,\r\n            type: ''\r\n        };\r\n    }\r\n    // Methods -----------------------------------------------------------------------\r\n    IntegralUIDragDropService.prototype.getDropPosHalf = function (pos, bounds, type) {\r\n        var innerBounds = {\r\n            left: bounds.x,\r\n            top: bounds.y,\r\n            right: bounds.x + bounds.width,\r\n            bottom: bounds.y + bounds.height\r\n        };\r\n        switch (type) {\r\n            case 'full':\r\n                if (this.checkHit(pos.x, pos.y, innerBounds))\r\n                    return 0;\r\n                break;\r\n            case 'horizontal':\r\n                innerBounds.right = bounds.x + bounds.width / 2;\r\n                if (this.checkHit(pos.x, pos.y, innerBounds))\r\n                    return 1;\r\n                else {\r\n                    innerBounds.left = innerBounds.right;\r\n                    innerBounds.right = bounds.x + bounds.width;\r\n                    if (this.checkHit(pos.x, pos.y, innerBounds))\r\n                        return 2;\r\n                }\r\n                break;\r\n            default:\r\n                innerBounds.bottom = bounds.y + bounds.height / 2;\r\n                if (this.checkHit(pos.x, pos.y, innerBounds))\r\n                    return 1;\r\n                else {\r\n                    innerBounds.top = innerBounds.bottom;\r\n                    innerBounds.bottom = bounds.y + bounds.height;\r\n                    if (this.checkHit(pos.x, pos.y, innerBounds))\r\n                        return 2;\r\n                }\r\n                break;\r\n        }\r\n        return -1;\r\n    };\r\n    IntegralUIDragDropService.prototype.getDropPosHorizontal = function (pos, bounds) {\r\n        var innerBounds = {\r\n            left: bounds.x + bounds.width / 4,\r\n            top: bounds.y,\r\n            right: bounds.x + 3 * bounds.width / 4,\r\n            bottom: bounds.y + bounds.height\r\n        };\r\n        if (this.checkHit(pos.x, pos.y, innerBounds))\r\n            return 0;\r\n        else {\r\n            innerBounds.right = innerBounds.left;\r\n            innerBounds.left = bounds.x;\r\n            if (this.checkHit(pos.x, pos.y, innerBounds))\r\n                return 1;\r\n            else {\r\n                innerBounds.left = bounds.x + 3 * bounds.width / 4;\r\n                innerBounds.right = bounds.x + bounds.width;\r\n                if (this.checkHit(pos.x, pos.y, innerBounds))\r\n                    return 2;\r\n            }\r\n        }\r\n        return -1;\r\n    };\r\n    IntegralUIDragDropService.prototype.getDropPosVertical = function (pos, bounds) {\r\n        var innerBounds = {\r\n            left: bounds.x,\r\n            top: bounds.y + bounds.height / 4,\r\n            right: bounds.x + bounds.width,\r\n            bottom: bounds.y + 3 * bounds.height / 4\r\n        };\r\n        if (this.checkHit(pos.x, pos.y, innerBounds))\r\n            return 0;\r\n        else {\r\n            innerBounds.bottom = innerBounds.top;\r\n            innerBounds.top = bounds.y;\r\n            if (this.checkHit(pos.x, pos.y, innerBounds))\r\n                return 1;\r\n            else {\r\n                innerBounds.top = bounds.y + 3 * bounds.height / 4;\r\n                innerBounds.bottom = bounds.y + bounds.height;\r\n                if (this.checkHit(pos.x, pos.y, innerBounds))\r\n                    return 2;\r\n            }\r\n        }\r\n        return -1;\r\n    };\r\n    IntegralUIDragDropService.prototype.checkHit = function (x, y, bounds) {\r\n        if (x >= bounds.left &&\r\n            x <= bounds.right &&\r\n            y >= bounds.top &&\r\n            y <= bounds.bottom)\r\n            return true;\r\n        return false;\r\n    };\r\n    IntegralUIDragDropService.prototype.clearData = function () {\r\n        this.data = {\r\n            action: 'move',\r\n            clone: null,\r\n            dropPos: -1,\r\n            handle: null,\r\n            source: null,\r\n            sourceCtrl: null,\r\n            sourceData: null,\r\n            sourceIndex: -1,\r\n            target: null,\r\n            targetCtrl: null,\r\n            type: ''\r\n        };\r\n    };\r\n    IntegralUIDragDropService.prototype.getData = function () {\r\n        return this.data;\r\n    };\r\n    IntegralUIDragDropService.prototype.setData = function (value) {\r\n        if (value) {\r\n            if (value.action)\r\n                this.data.action = value.action;\r\n            if (!isNaN(value.dropPos))\r\n                this.data.dropPos = value.dropPos;\r\n            if (!isNaN(value.sourceIndex))\r\n                this.data.sourceIndex = value.sourceIndex;\r\n            this.data.clone = value.clone != undefined ? value.clone : null;\r\n            this.data.source = value.source != undefined ? value.source : null;\r\n            this.data.handle = value.handle != undefined ? value.handle : null;\r\n            this.data.sourceCtrl = value.sourceCtrl != undefined ? value.sourceCtrl : null;\r\n            this.data.sourceData = value.sourceData != undefined ? value.sourceData : null;\r\n            this.data.target = value.target != undefined ? value.target : null;\r\n            this.data.targetCtrl = value.targetCtrl != undefined ? value.targetCtrl : null;\r\n            this.data.type = value.type != undefined ? value.type : '';\r\n        }\r\n    };\r\n    IntegralUIDragDropService.prototype.hitTest = function (x, y, bounds) {\r\n        return this.checkHit(x, y, bounds);\r\n    };\r\n    IntegralUIDragDropService.prototype.getDropPos = function (pos, bounds, flag, type) {\r\n        if (flag)\r\n            return this.getDropPosHalf(pos, bounds, type);\r\n        else if (type == 'horizontal')\r\n            return this.getDropPosHorizontal(pos, bounds);\r\n        return this.getDropPosVertical(pos, bounds);\r\n    };\r\n    return IntegralUIDragDropService;\r\n}());\r\nIntegralUIDragDropService = __decorate([\r\n    core_1.Injectable(),\r\n    __metadata(\"design:paramtypes\", [])\r\n], IntegralUIDragDropService);\r\nexports.IntegralUIDragDropService = IntegralUIDragDropService;\r\n//# sourceMappingURL=integralui.dragdrop.service.js.map","/*\r\n  filename: integralui.listitem.js\r\n  version : 1.3.0\r\n  Copyright © 2016-2017 Lidor Systems. All rights reserved.\r\n\r\n  This file is part of the \"IntegralUI Web\" Library. \r\n                                                                   \r\n  The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.\r\n  A copy of the License should have been installed in the product's root installation directory or it can be found at\r\n  http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.\r\n                                                            \r\n  This SOFTWARE is provided \"AS IS\", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language \r\n  governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.                           \r\n*/\r\nvar __extends=this&&this.__extends||function(d,a){function c(){this.constructor=d}for(var e in a)a.hasOwnProperty(e)&&(d[e]=a[e]);d.prototype=null===a?Object.create(a):(c.prototype=a.prototype,new c)},__decorate=this&&this.__decorate||function(d,a,c,e){var f=arguments.length,b=3>f?a:null===e?e=Object.getOwnPropertyDescriptor(a,c):e,g;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)b=Reflect.decorate(d,a,c,e);else for(var h=d.length-1;0<=h;h--)if(g=d[h])b=(3>f?g(b):3<f?g(a,c,b):\r\ng(a,c))||b;return 3<f&&b&&Object.defineProperty(a,c,b),b},__metadata=this&&this.__metadata||function(d,a){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(d,a)},core_1=require(\"@angular/core\"),integralui_core_1=require(\"./integralui.core\"),integralui_common_service_1=require(\"../services/integralui.common.service\"),IntegralUIListItem=function(d){function a(c,a,f){var b=d.call(this,c,a)||this;b.elemRef=c;b.commonService=a;b.baseService=f;b.parentCtrl=null;\r\nb.allowSelection=!0;return b}__extends(a,d);a.prototype.ngOnInit=function(){this.parentCtrl=this.baseService.getComponent();this.generalClassName=\"iui-listitem\";this.contentClassName=this.generalClassName+\"-content\";this.initStyle()};a.prototype.itemDragStart=function(a){if(this.isEnabled&&this.parentCtrl){var c=this.parentCtrl.getItemFromComponent(this);this.parentCtrl.processDragStart(a,c)}a.stopPropagation()};a.prototype.itemDragOver=function(a,d){if(this.isEnabled&&this.parentCtrl){var c=this.parentCtrl.getItemFromComponent(this),\r\nb=this.getPageRect(),e=this.getContentSize();this.parentCtrl.processDragOver(a,c,{x:b.left,y:b.top,width:b.right-b.left,height:e.height},d)}a.stopPropagation()};a.prototype.itemDragDrop=function(a){if(this.isEnabled&&this.parentCtrl){var c=this.parentCtrl.getItemFromComponent(this);this.parentCtrl.processDragDrop(a,c)}a.stopPropagation()};a.prototype.onMouseDown=function(a){this.isEnabled&&(this.parentCtrl&&(this.allowSelection=this.parentCtrl.invokeMethod(\"SELECT_ITEM\",{event:a,item:this.parentCtrl.getItemFromComponent(this)})),\r\nthis.mouseDown.emit(a));a.stopPropagation()};a.prototype.onMouseUp=function(a){this.isEnabled&&(this.parentCtrl&&this.allowSelection&&this.parentCtrl.invokeMethod(\"UPDATE_SELECTION\",{event:a,item:this.parentCtrl.getItemFromComponent(this)}),this.mouseUp.emit(a));a.stopPropagation()};a.prototype.selectItem=function(){this.state|=integralui_core_1.IntegralUIObjectState.selected};return a}(integralui_core_1.IntegralUIItem);\r\n__decorate([core_1.ViewChild(\"content\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUIListItem.prototype,\"contentElem\",void 0);__decorate([core_1.ViewChild(\"dragElem\",{read:core_1.ElementRef}),__metadata(\"design:type\",core_1.ElementRef)],IntegralUIListItem.prototype,\"dragElem\",void 0);\r\nIntegralUIListItem=__decorate([core_1.Component({selector:\"iui-listitem\",template:'\\n        <li [ngClass]=\"getControlClass()\" [ngStyle]=\"{ \\'position\\': positionType, \\'top\\': itemPos.top + \\'px\\', \\'left\\': itemPos.left + \\'px\\' }\">\\n            <div [ngClass]=\"getContentClass()\" (click)=\"onClick($event)\" (mousedown)=\"onMouseDown($event)\" (mouseup)=\"onMouseUp($event)\" (mouseenter)=\"onMouseEnter($event)\" (mousemove)=\"onMouseMove($event)\" (mouseleave)=\"onMouseLeave($event)\" draggable=\"true\" (dragstart)=\"itemDragStart($event)\" (dragover)=\"itemDragOver($event, true)\" (drop)=\"itemDragDrop($event)\" #dragElem #content>\\n                <span *ngIf=\"icon\" class=\"iui-item-icon\" [ngClass]=\"icon\" [style.display]=\"getIconStatus()\"></span>\\n                <span *ngIf=\"text\" class=\"iui-item-label\">{{text}}</span>\\n                <ng-content></ng-content>\\n            </div>\\n        </li>\\n    ',inputs:\"controlStyle data enabled icon name state text\".split(\" \"),\r\noutputs:\"click mouseDown mouseEnter mouseLeave mouseMove mouseUp\".split(\" \"),encapsulation:core_1.ViewEncapsulation.None}),__metadata(\"design:paramtypes\",[core_1.ElementRef,integralui_common_service_1.IntegralUICommonService,integralui_core_1.IntegralUIBaseService])],IntegralUIListItem);exports.IntegralUIListItem=IntegralUIListItem;","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IntegralUICoreModule }   from './integralui.core.module';\r\n\r\nimport { IntegralUIComboBox } from './components/integralui.combobox';\r\nimport { IntegralUIDialog } from './components/integralui.dialog';\r\nimport { IntegralUIDropDown, IntegralUIDropDownComponent } from './directives/integralui.dropdown';\r\nimport { IntegralUIFrame } from './directives/integralui.frame';\r\nimport { IntegralUIListItem } from './components/integralui.listitem';\r\nimport { IntegralUIPaginator } from './components/integralui.paginator';\r\nimport { IntegralUIRange } from './directives/integralui.range';\r\nimport { IntegralUIResize } from './directives/integralui.resize';\r\nimport { IntegralUIScrollBar } from './components/integralui.scrollbar';\r\nimport { IntegralUISplitter } from './components/integralui.splitter';\r\nimport { IntegralUITooltip, IntegralUITooltipComponent } from './directives/integralui.tooltip';\r\n\r\n@NgModule({\r\n  \timports: [ CommonModule, FormsModule, IntegralUICoreModule ],\r\n  \tdeclarations: [ \r\n      \tIntegralUIComboBox,\r\n        IntegralUIDialog,\r\n        IntegralUIDropDown,\r\n        IntegralUIDropDownComponent,\r\n      \tIntegralUIFrame,\r\n        IntegralUIListItem,\r\n  \t\t  IntegralUIPaginator, \r\n      \tIntegralUIRange,\r\n        IntegralUIResize,\r\n      \tIntegralUIScrollBar,\r\n      \tIntegralUISplitter,\r\n  \t\t  IntegralUITooltip, \r\n  \t\t  IntegralUITooltipComponent\r\n  \t],\r\n  \texports: [ \r\n      \tIntegralUIComboBox,\r\n        IntegralUIDialog,\r\n        IntegralUIDropDown,\r\n      \tIntegralUIFrame,\r\n        IntegralUIListItem,\r\n  \t\t  IntegralUIPaginator, \r\n      \tIntegralUIRange,\r\n        IntegralUIResize,\r\n        IntegralUIScrollBar,\r\n      \tIntegralUISplitter,\r\n  \t\t  IntegralUITooltip\r\n  \t],\r\n    entryComponents: [ IntegralUIDropDownComponent, IntegralUITooltipComponent ],\r\n})\r\nexport class IntegralUICommonModule { }\r\n","import {Injectable} from '@angular/core';\n\nimport {IIssue} from '../../base/interfaces/issue.interface';\nimport {IAtlassianIssue} from '../../base/interfaces/issue.atlassian.interface';\n\nimport {EnvAtlassianService, IssueService} from '../../base/services/index';\n\nimport {IntegralUICommonService} from '../../assets/integralui/services/integralui.common.service';\n\n@Injectable()\nexport class TreeGridService {\n\n    public epicColumnId: any = 80;\n    public checkBoxColumnId: any = 90;\n    public markerColumnId: any = 91;\n    public handleColumnId: any = 92;\n    public iconsColumnId: any = 21;\n    public lastColumnId: any = 99;\n    public columnList: Array<any> = [];\n    public columnList2: Array<any> = [];\n    private issueIcon: any;\n\n    constructor(\n        protected envAtlassianService: EnvAtlassianService,\n        protected issueService: IssueService,\n        private commonService?: IntegralUICommonService\n    ) {\n    }\n\n    getAllFields() {\n        return this.envAtlassianService.data.fields\n            /* .filter(field => field.orderable) */\n            .filter(field => field.navigable)\n            .map(field => {\n                switch (field.id) {\n                    case 'versions':\n                        field.schema.type = 'array[version]';\n                        break;\n                    case 'fixVersions':\n                        field.schema.type = 'array[version]';\n                        break;\n                    case 'component':\n                        field.schema.type = 'array[component]';\n                        break;\n                    case this.envAtlassianService.getFieldByName('Sprint').id:\n                        field.schema.type = 'array[sprint]';\n                        break;\n                    case this.envAtlassianService.getFieldByName('Epic Link').id:\n                        field.schema.type = 'issue-key';\n                        break;\n                    case this.envAtlassianService.getFieldByName('Parent Link').id:\n                        field.schema.type = 'issue-key';\n                        break;\n                }\n                return field;\n            })\n            .sort((a, b) => a.name.localeCompare(b.name));\n    }\n\n    getFieldsByGroup(group) {\n        switch (group) {\n            case 'portfolioHierarchy':\n                return this.getAllFields().filter(field => field.portfolio);\n            case 'storyMap':\n                return this.getAllFields().filter(field => [this.envAtlassianService.getFieldByName('Epic Link').id].indexOf(field.id) > -1 || field.subtask);\n            case 'estimate':\n                return this.getAllFields().filter(field => [this.envAtlassianService.getFieldByName('Points').id].indexOf(field.id) > -1);\n            case 'kanban':\n                return this.getAllFields().filter(field => ['status'].indexOf(field.id) > -1);\n        }\n        return [];\n    }\n\n    setColumnList(list: Array<any>, flag?: boolean) {\n        flag ? this.columnList2 = list : this.columnList = list;\n    }\n\n    createColumn(data: any): any {\n        let self = this;\n\n        let column: any = {\n            id: data.id,\n            allowResize: {right: false},\n            headerText: data.name,\n            visible: false\n        }\n\n        switch (data.id) {\n            case 'assignee':\n                column.minWidth = 50;\n                column.visible = true;\n                column.width = 150;\n                break;\n\n            case 'components':\n                column.minWidth = 50;\n                column.width = 120;\n                break;\n\n            case 'created':\n                column.allowGrouping = false;\n                column.contentAlignment = 'center';\n                column.headerAlignment = 'center';\n                break;\n\n            case 'fixVersions':\n                column.minWidth = 30;\n                column.width = 150;\n                break;\n\n            case 'issuekey':\n                //column.allowGrouping = false;\n                //column.minWidth = 50;\n                //column.visible = true;\n                //column.width = 70;\n\n                column = null;\n                break;\n\n            case 'issuetype':\n                column.contentAlignment = 'center';\n                column.minWidth = 20;\n                column.minWidth = 30;\n                break;\n\n            case 'priority':\n                column.contentAlignment = 'center';\n                column.minWidth = 30;\n                column.visible = true;\n                column.width = 60;\n                break;\n\n            case 'progress':\n                column.aggregation = {\n                    enabled: true,\n                    callback: function (list: Array<any>, id: any, groupCell: any) {\n                        return self.processProgressAggregation(list, id, groupCell);\n                    }\n                };\n                column.headerAlignment = 'center';\n                column.visible = true;\n                column.minWidth = 30;\n                break;\n\n            case 'project':\n                column.minWidth = 50;\n                break;\n\n            case 'reporter':\n                column.minWidth = 50;\n                break;\n\n            case 'status':\n                column.contentAlignment = 'center';\n                column.headerAlignment = 'center';\n                column.minWidth = 50;\n                column.visible = true;\n                column.width = 120;\n                break;\n\n            case 'summary':\n                //column.allowGrouping = false;\n                //column.allowDrag = false;\n                //column.allowDrop = false;\n                //column.allowResize = { left: false, right: false };\n                //column.minWidth = 150;\n                //column.visible = true;\n                //column.width = 400;\n\n                column = null;\n                break;\n\n            case 'updated':\n                column.allowGrouping = false;\n                column.contentAlignment = 'center';\n                column.headerAlignment = 'center';\n                break;\n\n            case 'versions':\n                column.minWidth = 30;\n                break;\n\n            case 'watches':\n                column.contentAlignment = 'center';\n                column.headerAlignment = 'center';\n                column.width = 60;\n                break;\n\n            default:\n                if (data.schema) {\n                    switch (data.schema.type) {\n                        case 'number':\n                            column.aggregationType = 'PROGRESS';\n                            column.aggregation = this.getAggregation(column.aggregationType);\n                            break;\n                    }\n                }\n                break;\n        }\n\n        if (column && data.schema && data.schema.type != 'number' && data.schema.type != 'progress') {\n            column.aggregation = {\n                enabled: true,\n                callback: function (list: Array<any>, id: any, groupCell: any) {\n                    return self.processGeneralAggregation(list, id, groupCell);\n                }\n            }\n        }\n\n        return column;\n    }\n\n    // Group Aggregation -----------------------------------------------------------------\n\n    getAggregation(type: any) {\n        let self = this;\n\n        return {\n            enabled: true,\n            callback: function (row: any, id: any, groupCell: any) {\n                switch (type) {\n                    case 'SUM':\n                        return self.processSummaryAggregation(row, id, groupCell);\n\n                    case 'AVG':\n                        return self.processAverageAggregation(row, id, groupCell);\n\n                    default:\n                        return self.processPointsAggregation(row, id, groupCell);\n                }\n            }\n        }\n    }\n\n    processGeneralAggregation(row: any, id: any, groupCell: any) {\n        let retValue: any;\n\n        if (groupCell.related && groupCell.related.schemaType == 'issue-key') {\n            let cell = groupCell.related;//this.getCellByColumnId(currentRow.cells, groupID);\n            if (cell) {\n                let relatedIssue = this.issueService.atlassian.findByKey(cell.tag);\n                if (relatedIssue && relatedIssue.atlassian) {\n                    if (id == 20)\n                        retValue = {cid: 20, tag: relatedIssue.atlassian.key, value: relatedIssue.atlassian.key}\n                    else {\n                        let issueFieldID = id == 2 ? 'summary' : id;\n                        retValue = this.createCell(relatedIssue.atlassian, relatedIssue.atlassian.fields[issueFieldID], id);\n                    }\n\n                    retValue.isGroup = true;\n                    retValue.issueID = relatedIssue.id;\n                    retValue.issueKey = cell.tag;\n                }\n            }\n        }\n\n        return retValue;\n    }\n\n    processIconsAggregation(row: any, id: any, groupCell: any) {\n        let retValue: any;\n\n        if (groupCell.related && groupCell.related.schemaType == 'issue-key') {\n            let relatedIssue = this.issueService.atlassian.findByKey(groupCell.related.tag);\n\n            if (relatedIssue) {\n                retValue = this.createIconCell(relatedIssue, id);\n                retValue.isGroup = true;\n                retValue.issueID = relatedIssue.id;\n                retValue.issueKey = groupCell.related.tag;\n            }\n        }\n\n        return retValue;\n    }\n\n    processToolboxAggregation(row: any, id: any, groupCell: any) {\n        let retValue: any;\n\n        if (groupCell.related && groupCell.related.schemaType == 'issue-key') {\n            let cell = groupCell.related;//this.getCellByColumnId(currentRow.cells, groupID);\n            if (cell) {\n                let relatedIssue = this.issueService.atlassian.findByKey(cell.tag);\n                if (relatedIssue && relatedIssue.atlassian) {\n                    let issueFieldID = id;\n\n                    retValue = {cid: this.lastColumnId, isGroup: true, issueID: relatedIssue.id, issueKey: cell.tag}\n                }\n            }\n        }\n\n        return retValue;\n    }\n\n    createCell(issue: IAtlassianIssue, obj: any, fieldID: any, linkColor?: string) {\n        let fieldList = this.getAllFields();\n\n        //let cell: IUITreeGridCell = {\n        let cell: any = {\n            cid: fieldID,\n            displayValue: null,\n            editText: '',\n            fieldName: this.getFieldNameByID(fieldList, fieldID),\n            issueIcon: '',\n            linkColor: linkColor,\n            multiValue: obj,\n            schemaType: this.getSchemaTypeByID(fieldList, fieldID),\n            statusColor: obj && obj.statusCategory && obj.statusCategory.colorName ? obj.statusCategory.colorName : '',\n            tag: obj,\n            text: '',\n            value: obj ? obj : 'Other'\n        }\n\n        cell.text = this.getCellValue(cell.cid, obj);\n        cell.displayValue = cell.text;\n\n        switch (cell.cid) {\n            case 2: // Summary\n                //cell.issueIcon = this.issueIcon;\n                cell.issueIcon = issue.fields.issuetype ? this.getCellValue('issuetype', issue.fields.issuetype) : '';\n                break;\n        }\n\n        if (this.getSchemaTypeByID(fieldList, cell.cid) == 'number') {\n            cell.issue = issue;\n            cell.displayValue = this.getCellAggregationValue(cell);\n        }\n\n        //if (cell.value == 'Other')\n        //cell.tagHide = true;\n\n        return cell;\n    }\n\n    createIconCell(issue: IIssue, fieldID: any, flag?: boolean) {\n        let fieldList = this.getAllFields();\n\n        let cell: any = {\n            cid: fieldID,\n            fieldName: this.getFieldNameByID(fieldList, fieldID),\n            iconSet: []\n        }\n\n        if (issue && issue.atlassian) {\n            for (let i = 1; i <= 6; i++)\n                cell.iconSet.push({id: i, value: this.getIconFromIssueField(issue.atlassian.fields, i)});\n\n            // For SubTasks and Issue Links, if the icon is not present, look for it from its related issue\n            if (flag) {\n                for (let i = 0; i < cell.iconSet.length; i++) {\n                    if (cell.iconSet[i].value == '') {\n                        let relatedIssue = this.issueService.atlassian.find(issue.atlassian.id);\n                        if (relatedIssue && relatedIssue.atlassian)\n                            cell.iconSet[i].value = this.getIconFromIssueField(relatedIssue.atlassian.fields, cell.iconSet[i].id);\n                    }\n                }\n            }\n        }\n\n        return cell;\n    }\n\n    getCellAggregationValue(cell: any) {\n        let retValue: any = {}\n\n        switch (this.getAggregationTypeByID(cell.cid)) {\n            case 'PROGRESS':\n                let numValues: Array<number> = [0, 0, 0];\n\n                if (cell.issue) {\n                    let currentStatusName: string = cell.issue.fields && cell.issue.fields.status ? cell.issue.fields.status.name : '';\n\n                    let index: number = -1;\n                    switch (currentStatusName) {\n                        case 'To Do':\n                            index = 0;\n                            break;\n                        case 'In Progress':\n                            index = 1;\n                            break;\n                        case 'Done':\n                            index = 2;\n                            break;\n                    }\n\n                    if (index >= 0)\n                        numValues[index] = cell.tag != undefined && !isNaN(cell.tag) ? cell.tag : 0;\n                }\n\n                retValue = {\n                    toDo: numValues[0],\n                    inProgress: numValues[1],\n                    done: numValues[2]\n                }\n                break;\n\n            default:\n                retValue = cell.tag != undefined ? cell.tag : 0;\n                break;\n        }\n\n        return retValue;\n    }\n\n    getAggregationTypeByID(id: any, flag?: boolean): any {\n        let list = flag ? this.columnList2 : this.columnList;\n\n        return ((this.getColumnById(list, id) || {}).aggregationType || 'PROGRESS');\n    }\n\n    getCellValue(id: any, fieldObj: any, flag?: boolean) {\n        let retValue: any = null;\n\n        if (fieldObj) {\n            switch (id) {\n                case 'priority': // PRIORITY\n                    retValue = fieldObj.iconUrl;\n                    break;\n\n                case 'status': // STATUS\n                    retValue = fieldObj.name;\n                    break;\n\n                case 'reporter': // REPORTER\n                    retValue = fieldObj.displayName;\n                    break;\n\n                case 'assignee': // ASSIGNEE\n                    retValue = fieldObj.displayName ? fieldObj.displayName : 'Other';\n                    break;\n\n                case 'project': // PROJECT\n                    retValue = fieldObj.name;\n                    break;\n\n                case 'issuetype': // ISSUETYPE\n                    retValue = fieldObj.iconUrl;\n                    break;\n\n                case 'versions': // VERSIONS\n                    retValue = Array.isArray(fieldObj) ? this.convertListToText(fieldObj, flag) : fieldObj.name;\n                    break;\n\n                case 'fixVersions': // FIXVERSIONS\n                    retValue = Array.isArray(fieldObj) ? this.convertListToText(fieldObj, flag) : fieldObj.name;\n                    break;\n\n                case 'components': // COMPONENTS\n                    retValue = Array.isArray(fieldObj) ? this.convertListToText(fieldObj, flag) : fieldObj.name;\n                    break;\n\n                case 'progress': // PROGRESS\n                    retValue = this.getProgressValue(fieldObj);\n                    break;\n\n                case 'watches': // WATCHES\n                    retValue = fieldObj.isWatching == true ? 'True' : 'False';\n                    break;\n\n                case 'created': // CREATED\n                    retValue = this.getDateFormat(fieldObj);\n                    break;\n\n                case 'updated': // UPDATED\n                    retValue = this.getDateFormat(fieldObj);\n                    break;\n\n                case 'sprints': // SPRINTS\n                    retValue = Array.isArray(fieldObj) ? this.convertListToText(fieldObj, flag) : fieldObj.name;\n                    break;\n\n                default:\n                    retValue = fieldObj;\n                    break;\n            }\n        }\n\n        return retValue;\n    }\n\n    getColumnById(list: Array<any>, id: any): any {\n        return list.find(column => column.id == id);\n    }\n\n    getCellByColumnId(list: Array<any>, id: any): any {\n        return list.find(item => item.cid == id);\n    }\n\n    getFieldNameByID(list: Array<any>, id: any): string {\n        return (list.find(element => element.id == id) || {}).name || '';\n    }\n\n    // General ---------------------------------------------------------------------------\n\n    getProgressValue(obj: any) {\n        let retValue: number = 0;\n\n        if (obj && obj.progress != undefined && obj.total != undefined)\n            retValue = obj.total > 0 ? (obj.progress / obj.total) * 100 : 0;\n\n        return retValue;\n    }\n\n    getSchemaTypeByID(list: Array<any>, id: any): string {\n        return ((list.find(element => element.id == id) || {}).schema || {}).type || '';\n    }\n\n    setIssueIcon(icon: any) {\n        this.issueIcon = icon;\n    }\n\n    private processAverageAggregation(row: any, id: any, groupCell: any) {\n        let retValue: number = 0;\n\n        let summary: number = 0;\n        let count: number = 0;\n\n        if (groupCell && groupCell.related && groupCell.related.schemaType == 'issue-key' && groupCell.related.value != 'Other') {\n            let cellRelated = groupCell.related;\n            if (cellRelated) {\n                let relatedIssue = this.issueService.atlassian.findByKey(cellRelated.tag);\n                if (relatedIssue && relatedIssue.atlassian && relatedIssue.atlassian.fields) {\n                    let numValue = relatedIssue.atlassian.fields[id];\n\n                    // If the parent issue don't have field value, get it from its children\n                    if (!numValue) {\n                        summary += this.getAverageFromChildren(row, id, groupCell);\n                        count++;\n                    } else {\n                        summary = numValue != undefined && !isNaN(numValue) ? numValue : 0;\n                        count++;\n                    }\n                }\n            }\n        } else {\n            summary += this.getAverageFromChildren(row, id, groupCell);\n            count++;\n        }\n\n        retValue = count > 0 ? summary / count : 0;\n\n        return retValue;\n    }\n\n    private getAverageFromChildren(row: any, id: any, groupCell: any) {\n        let retValue: number = 0;\n\n        let summary: number = 0;\n        let count: number = 0;\n\n        let list: Array<any> = row.rows;\n        if (list)\n            for (let i = 0; i < list.length; i++) {\n                let currentRow = list[i];\n\n                if (currentRow.type == 'group') {\n                    if (groupCell)\n                        groupCell = this.getCellByColumnId(currentRow.cells, groupCell.cid);\n\n                    summary += this.processAverageAggregation(currentRow, id, groupCell);\n                    count++;\n                } else if (!currentRow.tagHide) {\n                    let cell = this.getCellByColumnId(currentRow.cells, id);\n                    if (cell) {\n                        summary += cell.tag != undefined && !isNaN(cell.tag) ? cell.tag : 0;\n                        count++;\n                    }\n                }\n            }\n\n        retValue = count > 0 ? summary / count : 0;\n\n        return retValue;\n    }\n\n    private processPointsAggregation(row: any, id: any, groupCell: any) {\n        let retValue: any = {\n            toDo: 0,\n            inProgress: 0,\n            done: 0\n        }\n\n        let summary: Array<number> = [0, 0, 0];\n\n        if (groupCell && groupCell.related && groupCell.related.schemaType == 'issue-key' && groupCell.related.value != 'Other') {\n            let cellRelated = groupCell.related;\n            if (cellRelated) {\n                let relatedIssue = this.issueService.atlassian.findByKey(cellRelated.tag);\n                if (relatedIssue && relatedIssue.atlassian && relatedIssue.atlassian.fields) {\n                    let numValue = relatedIssue.atlassian.fields[id];\n\n                    // If the parent issue don't have field value, get it from its children\n                    if (!numValue) {\n                        let subSummary = this.getPointsFromChildren(row, id, groupCell);\n                        summary[0] += subSummary.toDo;\n                        summary[1] += subSummary.inProgress;\n                        summary[2] += subSummary.done;\n                    } else {\n                        let currentStatusName: string = relatedIssue.atlassian.fields && relatedIssue.atlassian.fields.status ? relatedIssue.atlassian.fields.status.name : '';\n\n                        let index: number = -1;\n                        switch (currentStatusName) {\n                            case 'To Do':\n                                index = 0;\n                                break;\n                            case 'In Progress':\n                                index = 1;\n                                break;\n                            case 'Done':\n                                index = 2;\n                                break;\n                        }\n\n                        if (index >= 0)\n                            summary[index] = numValue != undefined && !isNaN(numValue) ? numValue : 0;\n                    }\n                }\n            }\n        } else {\n            let subSummary = this.getPointsFromChildren(row, id, groupCell);\n            summary[0] += subSummary.toDo;\n            summary[1] += subSummary.inProgress;\n            summary[2] += subSummary.done;\n        }\n\n        retValue = {\n            toDo: summary[0],\n            inProgress: summary[1],\n            done: summary[2]\n        }\n\n        return retValue;\n    }\n\n    private getPointsFromChildren(row: any, id: any, groupCell: any) {\n        let retValue: any = {\n            toDo: 0,\n            inProgress: 0,\n            done: 0\n        }\n\n        let summary: Array<number> = [0, 0, 0];\n\n        let list: Array<any> = row.rows;\n        if (list)\n            for (let i = 0; i < list.length; i++) {\n                let currentRow = list[i];\n\n                if (currentRow.type == 'group') {\n                    if (groupCell)\n                        groupCell = this.getCellByColumnId(currentRow.cells, groupCell.cid);\n\n                    let subSummary = this.processPointsAggregation(currentRow, id, groupCell);\n                    summary[0] += subSummary.toDo;\n                    summary[1] += subSummary.inProgress;\n                    summary[2] += subSummary.done;\n                } else if (!currentRow.tagHide) {\n                    let issue = currentRow.issue ? currentRow.issue.atlassian : null;\n\n                    if (issue) {\n                        let currentStatusName: string = issue && issue.fields && issue.fields.status ? issue.fields.status.name : '';\n                        let index: number = -1;\n                        switch (currentStatusName) {\n                            case 'To Do':\n                                index = 0;\n                                break;\n                            case 'In Progress':\n                                index = 1;\n                                break;\n                            case 'Done':\n                                index = 2;\n                                break;\n                        }\n\n                        if (index >= 0) {\n                            let cell = this.getCellByColumnId(currentRow.cells, id);\n                            if (cell)\n                                summary[index] += cell.tag != undefined && !isNaN(cell.tag) ? cell.tag : 0;\n                        }\n                    }\n                }\n            }\n\n        retValue = {\n            toDo: summary[0],\n            inProgress: summary[1],\n            done: summary[2]\n        }\n\n        return retValue;\n    }\n\n    private processProgressAggregation(row: any, id: any, groupCell: any) {\n        let retValue: number = 0;\n\n        let summary: number = 0;\n        let count: number = 0;\n\n        if (groupCell && groupCell.related && groupCell.related.schemaType == 'issue-key' && groupCell.related.value != 'Other') {\n            let cellRelated = groupCell.related;\n            if (cellRelated) {\n                let relatedIssue = this.issueService.atlassian.findByKey(cellRelated.tag);\n                if (relatedIssue && relatedIssue.atlassian && relatedIssue.atlassian.fields) {\n                    let progressValue = this.getProgressValue(relatedIssue.atlassian.fields[id]);\n\n                    // If the parent issue don't have field value, get it from its children\n                    if (!progressValue) {\n                        summary += this.getProgressFromChildren(row, id, groupCell);\n                        count++;\n                    } else {\n                        summary = progressValue != undefined && !isNaN(progressValue) ? progressValue : 0;\n                        count++;\n                    }\n                }\n            }\n        } else {\n            summary += this.getProgressFromChildren(row, id, groupCell);\n            count++;\n        }\n\n        retValue = count > 0 ? summary / count : 0;\n        return retValue;\n    }\n\n    private getProgressFromChildren(row: any, id: any, groupCell: any) {\n        let retValue: number = 0;\n\n        let summary: number = 0;\n        let count: number = 0;\n\n        let list: Array<any> = row.rows;\n        if (list)\n            for (let i = 0; i < list.length; i++) {\n                let currentRow = list[i];\n\n                if (currentRow.type == 'group') {\n                    if (groupCell)\n                        groupCell = this.getCellByColumnId(currentRow.cells, groupCell.cid);\n\n                    summary += this.processProgressAggregation(currentRow, id, groupCell);\n                    count++;\n                } else if (!currentRow.tagHide) {\n                    let cell = this.getCellByColumnId(currentRow.cells, id);\n                    if (cell) {\n                        summary += this.getProgressValue(cell.value);\n                        count++;\n                    }\n                }\n            }\n\n\n        retValue = count > 0 ? summary / count : 0;\n\n        return retValue;\n    }\n\n    private processSummaryAggregation(row: any, id: any, groupCell: any) {\n        let retValue: number = 0;\n\n        if (groupCell && groupCell.related && groupCell.related.schemaType == 'issue-key' && groupCell.related.value != 'Other') {\n            let cellRelated = groupCell.related;\n            if (cellRelated) {\n                let relatedIssue = this.issueService.atlassian.findByKey(cellRelated.tag);\n                if (relatedIssue && relatedIssue.atlassian && relatedIssue.atlassian.fields) {\n                    let numValue = relatedIssue.atlassian.fields[id];\n\n                    // If the parent issue don't have field value, get it from its children\n                    if (!numValue)\n                        retValue += this.getSummaryFromChildren(row, id, groupCell);\n                    else\n                        retValue = numValue != undefined && !isNaN(numValue) ? numValue : 0;\n                }\n            }\n        } else\n            retValue += this.getSummaryFromChildren(row, id, groupCell);\n\n\n        return retValue;\n    }\n\n    private getSummaryFromChildren(row: any, id: any, groupCell: any) {\n        let retValue: number = 0;\n\n        let list: Array<any> = row.rows;\n        if (list)\n            for (let i = 0; i < list.length; i++) {\n                let currentRow = list[i];\n\n                if (currentRow.type == 'group') {\n                    if (groupCell)\n                        groupCell = this.getCellByColumnId(currentRow.cells, groupCell.cid);\n\n                    retValue += this.processSummaryAggregation(currentRow, id, groupCell);\n                } else if (!currentRow.tagHide) {\n                    let cell = this.getCellByColumnId(currentRow.cells, id);\n                    if (cell)\n                        retValue += cell.tag != undefined && !isNaN(cell.tag) ? cell.tag : 0;\n                }\n            }\n\n        return retValue;\n    }\n\n    private convertListToText(list: any, flag?: boolean): string {\n        let retValue: string = '';\n\n        if (Array.isArray(list)) {\n            if (list.length == 0)\n                retValue = !flag ? 'Other' : '';\n            else {\n                for (let i = 0; i < list.length; i++)\n                    retValue += i < list.length - 1 ? list[i].name + ', ' : list[i].name;\n            }\n        }\n\n        return retValue;\n    }\n\n    private getIconFromIssueField(fieldObj: any, id: any) {\n        let icon: string = '';\n\n        if (fieldObj) {\n            switch (id) {\n                case 1:\n                    icon = fieldObj.project && fieldObj.project.avatarUrls ? fieldObj.project.avatarUrls['16x16'] : '';\n                    break;\n                case 2:\n                    icon = fieldObj.issuetype ? fieldObj.issuetype.iconUrl : '';\n                    break;\n                case 3:\n                    icon = fieldObj.priority ? fieldObj.priority.iconUrl : '';\n                    break;\n                case 4:\n                    icon = fieldObj.status ? fieldObj.status.iconUrl : '';\n                    break;\n                case 5:\n                    icon = fieldObj.reporter && fieldObj.reporter.avatarUrls ? fieldObj.reporter.avatarUrls['16x16'] : '';\n                    break;\n                case 6:\n                    icon = fieldObj.assignee && fieldObj.assignee.avatarUrls ? fieldObj.assignee.avatarUrls['16x16'] : '';\n                    break;\n            }\n        }\n\n        return icon;\n    }\n\n    private getDateFormat(value: string) {\n        if (value && this.commonService.isString(value)) {\n            let date: any = new Date(value);\n\n            /*if (date){\n                let monthNames = [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ];\n\n                let day = date.getDate();\n                let month = date.getMonth();\n                let year = date.getFullYear();\n\n                return day + \"/\" + monthNames[month].substring(0, 3) + \"/\" + year;\n            }*/\n\n            let locale = this.envAtlassianService && this.envAtlassianService.options ? this.envAtlassianService.options.loc : 'en-GB';\n            return date.toLocaleDateString(locale);\n        }\n\n        return \"\";\n    }\n}\n","import { Component, Input, Output, OnInit, OnDestroy, EventEmitter } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\n\nimport config from '../../base/config';\nimport {\n  EnvService,\n  IssueService,\n} from '../../base/services';\n\n@Component({\n  selector: 'bit-treegrid-filterbar',\n  template: `\n      \n  <div class=\"row\"  style=\"margin-bottom:5px\">\n    <div class=\"col-8\"></div>\n    <div class=\"btn-toolbar justify-content-end col-4\" role=\"toolbar\">\n      <div class=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n        <button (click)=\"onButtonSelect('pin','pin')\" type=\"button\" class=\"btn btn-link\" title=\"Pin focused item to show only its sub-items and parent items\"><i class=\"fa bit-icon-pin\" aria-hidden=\"true\"></i></button>\n        <button type=\"button\" class=\"btn btn-link\" data-toggle=\"collapse\" data-target=\"#ransformation\" aria-expanded=\"false\" aria-controls=\"ransformation\"><i class=\"fa fa-list-ul\" aria-hidden=\"true\"></i></button>\n        <button type=\"button\" class=\"btn btn-link\" data-toggle=\"collapse\" data-target=\"#filter\" aria-expanded=\"false\" aria-controls=\"filter\"><i class=\"fa fa-filter\" aria-hidden=\"true\"></i></button>\n        <button type=\"button\" class=\"btn btn-link\" data-toggle=\"collapse\" data-target=\"#search\" aria-expanded=\"false\" aria-controls=\"search\"><i class=\"fa fa-search\" aria-hidden=\"true\"></i></button>\n      </div>\n      <span>&#160;&#160;</span>\n      <div class=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n         <div class=\"dropdown\">\n          <button class=\"btn btn-link dropdown-toggle\" type=\"button\" id=\"dropdownMenuButton\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n            <i class=\"fa fa-bars\" aria-hidden=\"true\"></i>&#160;Perspective\n          </button>\n          <div class=\"dropdown-menu dropdown-menu-right\" aria-labelledby=\"dropdownMenuButton\">\n            <div class=\"form-group\">\n              <!--<label for=\"searchView\">Email address</label>-->\n              <input type=\"text\" class=\"form-control\" id=\"searchView\" aria-describedby=\"searchviewHelp\" placeholder=\"Search View\">\n              <!-- <small id=\"searchviewHelp\" class=\"form-text text-muted\">help</small> -->\n            </div>\n            <div class=\"dropdown-divider\"></div>\n            <h6 class=\"dropdown-header\">ASSOCIATED VIEWS</h6>\n              <a (click)=\"onButtonSelect('columnConfiguration',0)\" class=\"dropdown-item clickable\" >Basic view</a>\n              <a (click)=\"onButtonSelect('columnConfiguration',1)\" class=\"dropdown-item clickable\" >Planning</a>\n              <a (click)=\"onButtonSelect('columnConfiguration',2)\" class=\"dropdown-item clickable\" >Tracking</a>\n              <a class=\"dropdown-item disabled\" href=\"#\">Triage</a>\n              <a class=\"dropdown-item disabled\" href=\"#\">Entry</a>\n            <div class=\"dropdown-divider\"></div>\n            <h6 class=\"dropdown-header\">OTHER RECENT VIEWS</h6>\n              <a class=\"dropdown-item disabled\" href=\"#\">Test Runs</a>\n              <a class=\"dropdown-item disabled\" href=\"#\">Compact</a>\n            <div class=\"dropdown-divider\"></div>\n              <a class=\"dropdown-item disabled\" href=\"#\"><i class=\"fa fa-gear\" aria-hidden=\"true\"></i>&#160;Manage Views</a>\n          </div>\n        </div>\n      </div>\n      </div>\n    </div>\n    \n    \n    <div class=\"row\">\n      <div class=\"collapse col-12\" id=\"ransformation\">\n        <div class=\"card card-block\">\n          Transformation\n        </div>\n      </div>\n      <div class=\"collapse col-12\" id=\"filter\">\n        <div class=\"card card-block\">\n          Filter\n        </div>\n      </div>\n      <div class=\"collapse col-12\" id=\"search\">\n        <div class=\"card card-block\">\n          Search\n        </div>\n      </div>\n    </div>\n    \n    \n  \n  \n  `,\n})\nexport class TreeGridFilterBarComponent {\n  @Input() formOptions: FormGroup;\n  @Input() formFilter: FormGroup;\n  @Output('button-select') butonSelect: EventEmitter<any> = new EventEmitter();\n  config = config;\n\n  constructor(\n    private env: EnvService,\n    private issues: IssueService\n  ) {\n  }\n\n    \n  onButtonSelect(key: String, value : any, data?: any) {\n    this.butonSelect.emit({event:event, value:value, key: key, data: data});\n  }\n\n}\n","import {NgModule} from '@angular/core';\n//import { BrowserModule } from '@angular/platform-browser';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {HttpModule} from '@angular/http';\nimport {IntegralUIModule} from '../assets/integralui/integralui.module';\n\nimport {IssueDetailsComponent} from './components/issue.details.component';\nimport {TreeGridComponent} from './components/treegrid.component';\nimport {TreeGridPageComponent} from './components/treegrid-page.component';\nimport {TreeGridHeaderComponent} from './components/treegrid-header.component';\nimport {TreeGridToolbarComponent} from './components/treegrid-toolbar.component';\nimport {GridDialogComponent, GridDialogListComponent} from './components/grid.dialog.component';\nimport {HelpModalComponent} from '../base/components/help-modal.component';\n\n@NgModule({\n\tdeclarations: [\n\t\tIssueDetailsComponent,\n\t\tTreeGridToolbarComponent,\n\t\tTreeGridComponent,\n\t\tTreeGridPageComponent,\n\t\tTreeGridHeaderComponent,\n\t\tGridDialogComponent,\n\t\tGridDialogListComponent,\n\t\tHelpModalComponent\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tHttpModule,\n\t\tFormsModule,\n\t\tIntegralUIModule\n\t],\n\tproviders: []\n\n})\nexport class TreegridModule {\n}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { IntegralUICoreModule } from './integralui.core.module';\r\nimport { IntegralUICommonModule } from './integralui.common.module';\r\n\r\nimport { IntegralUIAccordionModule } from './integralui.accordion.module';\r\nimport { IntegralUIBaseGridModule } from './integralui.basegrid.module';\r\nimport { IntegralUIBaseListModule } from './integralui.baselist.module';\r\nimport { IntegralUIGridModule } from './integralui.grid.module';\r\nimport { IntegralUILayoutModule } from './integralui.layout.module';\r\nimport { IntegralUIListBarModule } from './integralui.listbar.module';\r\nimport { IntegralUIListBoxModule } from './integralui.listbox.module';\r\nimport { IntegralUIListViewModule } from './integralui.listview.module';\r\nimport { IntegralUIMenuModule } from './integralui.menu.module';\r\nimport { IntegralUISlideBarModule } from './integralui.slidebar.module';\r\nimport { IntegralUISplitContainerModule } from './integralui.splitcontainer.module';\r\nimport { IntegralUITabStripModule } from './integralui.tabstrip.module';\r\nimport { IntegralUITreeGridModule } from './integralui.treegrid.module';\r\nimport { IntegralUITreeListModule } from './integralui.treelist.module';\r\nimport { IntegralUITreeViewModule } from './integralui.treeview.module';\r\n\r\n\r\nimport { IntegralUIAccordion } from './components/integralui.accordion';\r\nimport { IntegralUIBaseGrid } from './components/integralui.base.grid';\r\nimport { IntegralUIBaseList } from './components/integralui.base.list';\r\nimport { IntegralUIDraggable, IntegralUIFocus, IntegralUIHeaderItem, IntegralUIItem, IntegralUITemplate, IntegralUITemplateOutlet } from './components/integralui.core';\r\nimport { IntegralUIComboBox } from './components/integralui.combobox';\r\nimport { IntegralUIContextMenu } from './directives/integralui.contextmenu';\r\nimport { IntegralUIDialog } from './components/integralui.dialog';\r\nimport { IntegralUIDropDown } from './directives/integralui.dropdown';\r\nimport { IntegralUIFrame } from './directives/integralui.frame';\r\nimport { IntegralUIGrid } from './components/integralui.grid';\r\nimport { IntegralUIGroupBox, IntegralUIGroupBoxTags } from './components/integralui.groupbox';\r\nimport { IntegralUILayout } from './components/integralui.layout';\r\nimport { IntegralUIListBar } from './components/integralui.listbar';\r\nimport { IntegralUIListBox } from './components/integralui.listbox';\r\nimport { IntegralUIListGroup } from './components/integralui.listgroup';\r\nimport { IntegralUIListItem } from './components/integralui.listitem';\r\nimport { IntegralUIListView } from './components/integralui.listview';\r\nimport { IntegralUIMenu } from './components/integralui.menu';\r\nimport { IntegralUIMenuItem } from './components/integralui.menuitem';\r\nimport { IntegralUIPaginator } from './components/integralui.paginator';\r\nimport { IntegralUIRange } from './directives/integralui.range';\r\nimport { IntegralUIResize } from './directives/integralui.resize';\r\nimport { IntegralUIScrollBar } from './components/integralui.scrollbar';\r\nimport { IntegralUISlideBar, IntegralUISlide } from './components/integralui.slidebar';\r\nimport { IntegralUISplitContainer, IntegralUISplitContainerTags } from './components/integralui.splitcontainer';\r\nimport { IntegralUISplitter } from './components/integralui.splitter';\r\nimport { IntegralUITab } from './components/integralui.tab';\r\nimport { IntegralUITabStrip } from './components/integralui.tabstrip';\r\nimport { IntegralUITooltip } from './directives/integralui.tooltip';\r\nimport { IntegralUITreeGrid } from './components/integralui.treegrid';\r\nimport { IntegralUITreeItem } from './components/integralui.treeitem';\r\nimport { IntegralUITreeList } from './components/integralui.treelist';\r\nimport { IntegralUITreeView } from './components/integralui.treeview';\r\n\r\n\r\n@NgModule({\r\n  \timports: [ \r\n        CommonModule, \r\n        FormsModule,\r\n        IntegralUICoreModule,\r\n        IntegralUICommonModule,\r\n        IntegralUIAccordionModule,\r\n        IntegralUIBaseGridModule,\r\n        IntegralUIBaseListModule,\r\n        IntegralUIGridModule,\r\n        IntegralUILayoutModule,\r\n        IntegralUIListBarModule,\r\n        IntegralUIListBoxModule,\r\n        IntegralUIListViewModule,\r\n        IntegralUIMenuModule,\r\n        IntegralUISlideBarModule,\r\n        IntegralUISplitContainerModule,\r\n        IntegralUITabStripModule,\r\n        IntegralUITreeGridModule,\r\n        IntegralUITreeListModule,\r\n        IntegralUITreeViewModule\r\n    ],\r\n  \texports: [ \r\n      \t\tIntegralUIAccordion,\r\n            IntegralUIBaseGrid,\r\n            IntegralUIBaseList,\r\n            IntegralUIComboBox,\r\n            IntegralUIContextMenu,\r\n        IntegralUIDialog,\r\n            IntegralUIDraggable,\r\n        IntegralUIDropDown,\r\n        IntegralUIFocus, \r\n        IntegralUIFrame,\r\n        IntegralUIGrid,\r\n  \t\t  IntegralUIGroupBox, IntegralUIGroupBoxTags,\r\n        IntegralUIHeaderItem, \r\n        IntegralUIItem, \r\n        IntegralUILayout,\r\n        IntegralUIListBar, \r\n        IntegralUIListBox, \r\n        IntegralUIListGroup, \r\n        IntegralUIListItem, \r\n        IntegralUIListView, \r\n        IntegralUIMenu,\r\n        IntegralUIMenuItem,\r\n  \t\t  IntegralUIPaginator, \r\n        IntegralUIRange,\r\n        IntegralUIResize,\r\n  \t\t  IntegralUISlideBar, \r\n  \t\t  IntegralUISlide, \r\n        IntegralUISplitContainer,\r\n        IntegralUISplitContainerTags,\r\n        IntegralUISplitter,\r\n        IntegralUITab, \r\n        IntegralUITabStrip, \r\n        IntegralUITemplate,\r\n        IntegralUITemplateOutlet,\r\n  \t\t  IntegralUITooltip,\r\n        IntegralUITreeGrid,\r\n        IntegralUITreeItem, \r\n        IntegralUITreeList,\r\n        IntegralUITreeView\r\n  \t]\r\n})\r\nexport class IntegralUIModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IntegralUICoreModule }   from './integralui.core.module';\r\n\r\nimport { IntegralUIAccordion } from './components/integralui.accordion';\r\nimport { IntegralUIGroupBox, IntegralUIGroupBoxTags } from './components/integralui.groupbox';\r\n\r\n@NgModule({\r\n  \timports: [ CommonModule, FormsModule, IntegralUICoreModule ],\r\n  \tdeclarations: [ \r\n  \t\tIntegralUIAccordion, \r\n  \t\tIntegralUIGroupBox,\r\n  \t\tIntegralUIGroupBoxTags\r\n  \t],\r\n  \texports: [ \r\n      \tIntegralUIAccordion, \r\n  \t\tIntegralUIGroupBox,\r\n  \t\tIntegralUIGroupBoxTags\r\n  \t]\r\n})\r\nexport class IntegralUIAccordionModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { IntegralUIBaseGrid } from './components/integralui.base.grid';\r\n\r\n@NgModule({\r\n  \timports: [],\r\n  \tdeclarations: [IntegralUIBaseGrid],\r\n  \texports: [IntegralUIBaseGrid]\r\n})\r\nexport class IntegralUIBaseGridModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { IntegralUIBaseList } from './components/integralui.base.list';\r\n\r\n@NgModule({\r\n  \timports: [],\r\n  \tdeclarations: [IntegralUIBaseList],\r\n  \texports: [IntegralUIBaseList]\r\n})\r\nexport class IntegralUIBaseListModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IntegralUICoreModule }   from './integralui.core.module';\r\nimport { IntegralUICommonModule }   from './integralui.common.module';\r\n\r\nimport { IntegralUIDraggable, IntegralUIFocus, IntegralUITemplate } from './components/integralui.core';\r\nimport { IntegralUIGrid } from './components/integralui.grid';\r\n\r\n@NgModule({\r\n  \timports: [ CommonModule, FormsModule, IntegralUICoreModule, IntegralUICommonModule ],\r\n  \tdeclarations: [ \r\n  \t\tIntegralUIGrid\r\n  \t],\r\n  \texports: [ \r\n\t\tIntegralUIDraggable,\r\n        IntegralUIFocus, \r\n        IntegralUITemplate,\r\n      \tIntegralUIGrid \r\n  \t]\r\n})\r\nexport class IntegralUIGridModule { }\r\n","\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar core_1 = require(\"@angular/core\");\r\nvar common_1 = require(\"@angular/common\");\r\nvar forms_1 = require(\"@angular/forms\");\r\nvar integralui_core_module_1 = require(\"./integralui.core.module\");\r\nvar integralui_layout_1 = require(\"./components/integralui.layout\");\r\nvar IntegralUILayoutModule = (function () {\r\n    function IntegralUILayoutModule() {\r\n    }\r\n    return IntegralUILayoutModule;\r\n}());\r\nIntegralUILayoutModule = __decorate([\r\n    core_1.NgModule({\r\n        imports: [common_1.CommonModule, forms_1.FormsModule, integralui_core_module_1.IntegralUICoreModule],\r\n        declarations: [integralui_layout_1.IntegralUILayout],\r\n        exports: [integralui_layout_1.IntegralUILayout]\r\n    })\r\n], IntegralUILayoutModule);\r\nexports.IntegralUILayoutModule = IntegralUILayoutModule;\r\n//# sourceMappingURL=integralui.layout.module.js.map","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IntegralUICoreModule }   from './integralui.core.module';\r\n\r\nimport { IntegralUIFocus, IntegralUIItem, IntegralUITemplate } from './components/integralui.core';\r\nimport { IntegralUIListBar } from './components/integralui.listbar';\r\nimport { IntegralUIListGroup } from './components/integralui.listgroup';\r\n\r\n@NgModule({\r\n  \timports: [ CommonModule, FormsModule, IntegralUICoreModule ],\r\n  \tdeclarations: [ \r\n  \t\tIntegralUIListBar,\r\n      IntegralUIListGroup\r\n  \t],\r\n  \texports: [ \r\n        IntegralUIFocus, \r\n        IntegralUIItem, \r\n  \t\t  IntegralUIListBar,\r\n  \t\t  IntegralUIListGroup, \r\n        IntegralUITemplate\r\n  \t]\r\n})\r\nexport class IntegralUIListBarModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IntegralUICoreModule }   from './integralui.core.module';\r\nimport { IntegralUICommonModule }   from './integralui.common.module';\r\n\r\nimport { IntegralUIFocus, IntegralUITemplate } from './components/integralui.core';\r\nimport { IntegralUIListBox } from './components/integralui.listbox';\r\nimport { IntegralUIListItem } from './components/integralui.listitem';\r\n\r\n@NgModule({\r\n  \timports: [ CommonModule, FormsModule, IntegralUICoreModule, IntegralUICommonModule ],\r\n  \tdeclarations: [ \r\n  \t\tIntegralUIListBox\r\n  \t],\r\n  \texports: [ \r\n        IntegralUIFocus, \r\n  \t\tIntegralUIListBox,\r\n  \t\tIntegralUIListItem, \r\n        IntegralUITemplate\r\n  \t]\r\n})\r\nexport class IntegralUIListBoxModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IntegralUICoreModule }   from './integralui.core.module';\r\nimport { IntegralUICommonModule }   from './integralui.common.module';\r\n\r\nimport { IntegralUIFocus, IntegralUITemplate } from './components/integralui.core';\r\nimport { IntegralUIListView } from './components/integralui.listview';\r\nimport { IntegralUIListItem } from './components/integralui.listitem';\r\n\r\n@NgModule({\r\n  \timports: [ CommonModule, FormsModule, IntegralUICoreModule, IntegralUICommonModule ],\r\n  \tdeclarations: [ \r\n  \t\tIntegralUIListView\r\n  \t],\r\n  \texports: [ \r\n        IntegralUIFocus, \r\n  \t\t  IntegralUIListView,\r\n  \t\t  IntegralUIListItem, \r\n        IntegralUITemplate\r\n  \t]\r\n})\r\nexport class IntegralUIListViewModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IntegralUICoreModule }   from './integralui.core.module';\r\n\r\nimport { IntegralUIContextMenu, IntegralUIContextMenuComponent } from './directives/integralui.contextmenu';\r\nimport { IntegralUIFocus, IntegralUITemplate } from './components/integralui.core';\r\nimport { IntegralUIMenu } from './components/integralui.menu';\r\nimport { IntegralUIMenuItem } from './components/integralui.menuitem';\r\n\r\n@NgModule({\r\n    imports: [ CommonModule, FormsModule, IntegralUICoreModule ],\r\n    declarations: [ \r\n      \tIntegralUIContextMenu,\r\n      \tIntegralUIContextMenuComponent, \r\n      \tIntegralUIMenu,\r\n      \tIntegralUIMenuItem \r\n    ],\r\n    exports: [ \r\n      \tIntegralUIContextMenu,\r\n        IntegralUIFocus, \r\n        IntegralUITemplate,\r\n      \tIntegralUIMenu,\r\n       \tIntegralUIMenuItem\r\n    ],\r\n    entryComponents: [ IntegralUIContextMenuComponent ],\r\n})\r\nexport class IntegralUIMenuModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IntegralUICoreModule }   from './integralui.core.module';\r\n\r\nimport { IntegralUISlideBar, IntegralUISlide } from './components/integralui.slidebar';\r\n\r\n@NgModule({\r\n    imports: [ CommonModule, FormsModule, IntegralUICoreModule ],\r\n    declarations: [ \r\n        IntegralUISlideBar, \r\n        IntegralUISlide, \r\n    ],\r\n    exports: [ \r\n        IntegralUISlideBar, \r\n        IntegralUISlide, \r\n    ]\r\n})\r\nexport class IntegralUISlideBarModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IntegralUICoreModule }   from './integralui.core.module';\r\n\r\nimport { IntegralUIFocus, IntegralUITemplate } from './components/integralui.core';\r\nimport { IntegralUISplitContainer, IntegralUISplitContainerTags } from './components/integralui.splitcontainer';\r\n\r\n@NgModule({\r\n    imports: [ CommonModule, FormsModule, IntegralUICoreModule ],\r\n    declarations: [ \r\n      \tIntegralUISplitContainer,\r\n       \tIntegralUISplitContainerTags\r\n    ],\r\n    exports: [ \r\n        IntegralUIFocus, \r\n        IntegralUITemplate,\r\n      \tIntegralUISplitContainer,\r\n       \tIntegralUISplitContainerTags\r\n    ]\r\n})\r\nexport class IntegralUISplitContainerModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IntegralUICoreModule }   from './integralui.core.module';\r\n\r\nimport { IntegralUIFocus, IntegralUITemplate } from './components/integralui.core';\r\nimport { IntegralUITab } from './components/integralui.tab';\r\nimport { IntegralUITabStrip } from './components/integralui.tabstrip';\r\n\r\n@NgModule({\r\n    imports: [ CommonModule, FormsModule, IntegralUICoreModule ],\r\n    declarations: [ \r\n        IntegralUITab, \r\n        IntegralUITabStrip \r\n    ],\r\n    exports: [ \r\n        IntegralUIFocus, \r\n        IntegralUITemplate,\r\n        IntegralUITab, \r\n        IntegralUITabStrip\r\n    ]\r\n})\r\nexport class IntegralUITabStripModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IntegralUICoreModule }   from './integralui.core.module';\r\nimport { IntegralUICommonModule }   from './integralui.common.module';\r\n\r\nimport { IntegralUIFocus, IntegralUITemplate } from './components/integralui.core';\r\nimport { IntegralUITreeGrid } from './components/integralui.treegrid';\r\n\r\n@NgModule({\r\n  \timports: [ CommonModule, FormsModule, IntegralUICoreModule, IntegralUICommonModule ],\r\n  \tdeclarations: [ \r\n  \t\tIntegralUITreeGrid \r\n  \t],\r\n  \texports: [ \r\n        IntegralUIFocus, \r\n        IntegralUITemplate,\r\n      \tIntegralUITreeGrid \r\n  \t]\r\n})\r\nexport class IntegralUITreeGridModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IntegralUICoreModule }   from './integralui.core.module';\r\n\r\nimport { IntegralUIFocus, IntegralUITemplate } from './components/integralui.core';\r\nimport { IntegralUITreeList, IntegralUITreeListItem } from './components/integralui.treelist';\r\n\r\n@NgModule({\r\n  \timports: [ CommonModule, FormsModule, IntegralUICoreModule ],\r\n  \tdeclarations: [ \r\n  \t\tIntegralUITreeList, \r\n  \t\tIntegralUITreeListItem \r\n  \t],\r\n  \texports: [ \r\n        IntegralUIFocus, \r\n        IntegralUITemplate,\r\n        IntegralUITreeList\r\n  \t]\r\n})\r\nexport class IntegralUITreeListModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IntegralUICoreModule }   from './integralui.core.module';\r\nimport { IntegralUICommonModule }   from './integralui.common.module';\r\n\r\nimport { IntegralUIFocus, IntegralUITemplate } from './components/integralui.core';\r\nimport { IntegralUITreeItem } from './components/integralui.treeitem';\r\nimport { IntegralUITreeView } from './components/integralui.treeview';\r\n\r\n@NgModule({\r\n  \timports: [ CommonModule, FormsModule, IntegralUICoreModule, IntegralUICommonModule ],\r\n  \tdeclarations: [ \r\n        IntegralUITreeItem, \r\n  \t\t  IntegralUITreeView \r\n  \t],\r\n  \texports: [ \r\n        IntegralUIFocus, \r\n        IntegralUITemplate,\r\n      \tIntegralUITreeItem, \r\n  \t\t  IntegralUITreeView\r\n  \t]\r\n})\r\nexport class IntegralUITreeViewModule { }\r\n","export * from './dnd.directive';\nexport * from './dropdown.directive';\nexport * from './misc.directive';\nexport * from './last.directive';","import { Directive, AfterContentInit, NgZone, ElementRef } from '@angular/core';\n\n// usage example\n// <div dnd ...>...\n\n// customize ng2-dnd directive: prevent dragover calls, ...\n@Directive({\n  selector: '[dnd]',\n})\nexport class DndDirective implements AfterContentInit {\n\n  constructor(\n    private el: ElementRef,\n    private ngZone: NgZone\n  ) {\n  }\n\n  ngAfterContentInit() {\n    let onDragOverCallback = this.el.nativeElement.ondragover;\n\n    this.ngZone.runOutsideAngular(() => {\n      this.el.nativeElement.ondragover = (event) => {\n        // TODO: think about calling native method somehow\n        // and check that ngAfterContentChecked is not called in the meantime\n        return false; // RESERVED / onDragOverCallback(event);\n      }\n    });\n  }\n}\n","import { Directive, OnInit, Output, ElementRef, EventEmitter, NgZone } from '@angular/core';\n\n// usage example\n// <div dropdown (onDropdownShown)=\"...\" (onDropdownHidden)=\"...\">...\n@Directive({\n  selector: '[dropdown]',\n})\nexport class DropdownDirective implements OnInit {\n  @Output() onDropdownShow: EventEmitter<any> = new EventEmitter();\n  @Output() onDropdownShown: EventEmitter<any> = new EventEmitter();\n  @Output() onDropdownHide: EventEmitter<any> = new EventEmitter();\n  @Output() onDropdownHidden: EventEmitter<any> = new EventEmitter();\n\n  constructor(\n    private el: ElementRef,\n    private _ngZone: NgZone\n  ) {\n  }\n\n  ngOnInit() {\n    // have to use jQuery binding, other approaches doesn't work for bootstrap events\n\n    $(this.el.nativeElement).on('show.bs.dropdown', e => {\n      this._ngZone.run(() => {\n        this.onDropdownShow.emit(e);\n      });\n    });\n\n    $(this.el.nativeElement).on('shown.bs.dropdown', e => {\n      this._ngZone.run(() => {\n        this.onDropdownShown.emit(e);\n      });\n    });\n\n    $(this.el.nativeElement).on('hide.bs.dropdown', e => {\n      this._ngZone.run(() => {\n        this.onDropdownHide.emit(e);\n      });\n    });\n\n    $(this.el.nativeElement).on('hidden.bs.dropdown', e => {\n      this._ngZone.run(() => {\n        this.onDropdownHidden.emit(e);\n      });\n    });\n  }\n}\n","import { OnInit } from '@angular/core';\nimport { Directive, ElementRef, Input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n// highlight \"invalid\" fields (using Bootstrap classes)\n@Directive({ selector: '[formControlValidator]' })\nexport class FormControlValidator implements OnInit {\n\n  @Input('formControlValidator') field: FormControl;\n\n  form: any; // experimental / root form control\n\n  constructor(private el: ElementRef) { this.el = el.nativeElement; };\n\n  ngOnInit() {\n    this.form = this._getForm(this.field);\n\n    this._isValid(this.field);\n\n    this.field.statusChanges.subscribe(() => {\n      this._isValid(this.field);\n    });\n\n    this.field.root.statusChanges.subscribe(() => {\n      this._isValid(this.field);\n    });\n  }\n\n  _getForm(control) {\n    // find root control recursively\n    return control == control.root ? control : this._getForm(control.root);\n  }\n\n  _isValid(field): void {\n    let el: JQuery = $(<any>this.el);\n\n    // @todo we disable submit button when not valid form but we can revert it any time /*&& field.root.submitted*/\n\n    if (!field.valid && (!field.pristine || field.root.submitted)) { // experimental\n      el.addClass('has-danger');\n      el.find('.form-control').addClass('form-control-danger');\n    } else {\n      el.removeClass('has-danger');\n      el.find('.form-control').removeClass('form-control-danger');\n    }\n  }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { ChangeDetectorRef } from '@angular/core';\n@Component({\n   selector: 'islast',\n   template: '<span></span>'\n})\nexport class LastDirective {\n   @Input() isLast: boolean;\n   @Output() onLastDone: EventEmitter<any> = new EventEmitter<any>();\n    constructor(\n    private cdRef: ChangeDetectorRef,\n  ) {\n  }\n   ngOnChanges() {\n      if(this.isLast)\n        this.onLastDone.emit({event:event, changeDetectorRef:this.cdRef});\n   }\n}","export * from './misc.pipe';\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({name: 'truncate'})\nexport class TruncatePipe implements PipeTransform {\n\n  /**\n   *\n   * @param value\n   * @param args\n   *  arg[0] - limitTo value\n   *  arg[1] - suffix\n   * @returns {string}\n   */\n  transform(value: string, ...args: string[]): string {\n    // TODO: should we use suffix when we don't truncate?\n    // TODO: should we use 0 value? now 0 value cause default\n    let limitTo = parseInt(args[0]) || 15;\n    let suffix = args[1] || '...';\n\n    value += '';\n    return value.length <= limitTo ? value : value.substring(0, limitTo) + suffix;\n  }\n}\n\n@Pipe({name: 'pluralize'})\nexport class PluralizePipe implements PipeTransform {\n  /**\n   *\n   * @param value\n   * @param label\n   * @param plural\n   * There are 3 variants of usage:\n   *  with label like 'item' -> returns 'item' for 1 and 'items' for other\n   *  with label like 'child' and plural like 'children' -> returns 'child' for 1 and 'children' for other\n   *  with label like complex object { '0': 'No items', '1': 'Just one', 'other': '{} items' }\n   *    -> returns 'No items' for 0\n   *    -> returns 'Just one' for 1 (and you can specify any other specific count)\n   *    -> returns '8 items' for 8 and etc\n   * @returns {any}\n   */\n  transform(value: number, label: string | Object, plural?: string): string {\n    // TODO: some util func for this isObject checking?\n    if (typeof label == 'object') {\n      let pattern = label[value] ? label[value] : label['other'];\n      return (pattern.indexOf('{}') !== -1) ? pattern.replace('{}', value) : pattern;\n    }\n\n    // TODO: is it normal that we use plural for 0 count?\n    return value == 1 ? <string>label : ( plural ? plural : <string>label + 's');\n  }\n}\n\n@Pipe({name: 'safe'})\nexport class SafePipe implements PipeTransform {\n  constructor(private sanitizer: DomSanitizer) {\n    this.sanitizer = sanitizer;\n  }\n\n  transform(value: any) {\n    return this.sanitizer.bypassSecurityTrustStyle(value);\n  }\n}\n","// inspired by: \n// https://github.com/angular/angular/blob/master/modules/%40angular/http/src/backends/xhr_backend.ts\n\nimport { Injectable, NgZone } from '@angular/core';\nimport { Headers, Request, Response } from '@angular/http';\nimport { Connection, ConnectionBackend, XSRFStrategy } from '@angular/http';\nimport { ResponseOptions, ResponseContentType, ResponseType } from '@angular/http';\nimport { ReadyState, RequestMethod } from '@angular/http';\nimport { Observable } from 'rxjs/Observable';\nimport { Observer } from 'rxjs/Observer';\n\nconst XSSI_PREFIX = /^\\)\\]\\}',?\\n/;\nconst isSuccess = (status: number): boolean => (status >= 200 && status < 300);\n\nexport class AtlassianConnection implements Connection {\n  request: Request;\n  response: Observable<Response>;\n  readyState: ReadyState;\n\n  constructor(ngZone: NgZone, req: Request, reqAtlassian: any, baseResponseOptions?: ResponseOptions) {\n    this.request = req;\n\n    this.response = new Observable<Response>((responseObserver: Observer<Response>) => {\n      const _req: any = reqAtlassian;\n\n      // RESERVED / TODO: refactor\n      // if (req.withCredentials != null) {\n      //   _req.withCredentials = req.withCredentials;\n      // }\n\n      // success event handler\n      const onSuccess = (xhrText: string, xhrResult: number, xhr: any) => {\n        // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)\n        let status: number = xhr.status === 1223 ? 204 : xhr.status;\n\n        let body: any = null;\n\n        // HTTP 204 means no content\n        if (status !== 204) {\n          // responseText is the old-school way of retrieving response (supported by IE8 & 9)\n          // response/responseType properties were introduced in ResourceLoader Level2 spec\n          // (supported by IE10)\n          body = xhrText;\n\n          // Implicitly strip a potential XSSI prefix.\n          if (typeof body === 'string') {\n            body = body.replace(XSSI_PREFIX, '');\n          }\n        }\n\n        // fix status code when it is 0 (0 status is undocumented).\n        // Occurs when accessing file resources or on Android 4.1 stock browser\n        // while retrieving files from application cache.\n        if (status === 0) {\n          status = body ? 200 : 0;\n        }\n\n        const headers: Headers = Headers.fromResponseHeaderString(xhr.getAllResponseHeaders());\n        // IE 9 does not provide the way to get URL of response\n        const url = null; // OBSOLETED / angular4+ / getResponseURL(xhr) || req.url;\n        const statusText: string = xhr.statusText || 'OK';\n\n        let responseOptions = new ResponseOptions({body, status, headers, statusText, url});\n        if (baseResponseOptions != null) {\n          responseOptions = baseResponseOptions.merge(responseOptions);\n        }\n\n        const response = new Response(responseOptions);\n        response.ok = isSuccess(status);\n\n        if (response.ok) {\n          ngZone.run(() => {\n            responseObserver.next(response);\n            responseObserver.complete();\n          });\n\n          return;\n        }\n\n        ngZone.run(() => {\n          responseObserver.error(response);\n        });\n      };\n\n      // error event handler\n      const onError = (err: any) => {\n        let responseOptions = new ResponseOptions({\n          body: err['responseText'],\n          type: ResponseType.Error,\n          status: err['status'],\n          statusText: err['statusText'],\n        });\n\n        if (baseResponseOptions != null) {\n          responseOptions = baseResponseOptions.merge(responseOptions);\n        }\n\n        responseObserver.error(new Response(responseOptions));\n      };\n\n      this.setDetectedContentType(req, _req);\n\n      if (req.headers == null) {\n        req.headers = new Headers();\n      }\n\n      if (!req.headers.get('Accept')) {\n        req.headers.append('Accept', 'application/json, text/plain, */*');\n      }\n\n      _req({\n        url: req.url,\n        data: req.getBody(),\n        type: RequestMethod[req.method].toUpperCase(),\n        contentType: req.headers.get('Content-Type'),\n        headers: req.headers.keys().reduce((output, key) => {\n          output[key] = req.headers.get(key);\n          return output;\n        }, {}),\n        success: onSuccess,\n        error: onError,\n      });\n\n      return () => {\n        // RESERVED / TODO: refactor\n        //_req.abort();\n      };\n    });\n  }\n\n  setDetectedContentType(req: any /** Angular Request */, _req: any /** Atlassian Request */) {\n    // Skip if a custom Content-Type header is provided\n    if (req.headers != null && req.headers.get('Content-Type') != null) {\n      _req.contentType = req.headers.get('Content-Type');\n      return;\n    }\n\n    // Set the detected content type\n    switch (req.contentType) {\n      case 'NONE': // Content.NONE\n        break;\n      case 'JSON': // Content.JSON\n        _req.contentType = 'application/json';\n        break;\n      case 'FORM': // Content.FORM\n        _req.contentType = 'application/x-www-form-urlencoded;charset=UTF-8';\n        break;\n      case 'TEXT': // Content.TEXT\n        _req.contentType = 'text/plain';\n        break;\n      case 'BLOB': // Content.BLOB\n        const blob = req.blob();\n        if (blob.type) {\n          _req.contentType = blob.type;\n        }\n        break;\n    }\n  }\n}\n\n@Injectable()\nexport class AtlassianBackend implements ConnectionBackend {\n  private _req: any;\n\n  constructor(\n    private _baseResponseOptions: ResponseOptions,\n    // RESERVED / private _xsrfStrategy: XSRFStrategy\n    private _ngZone: NgZone\n  ) {\n    if (!window['AP']) {\n      throw new Error('Atlassian API is not detected');\n    }\n\n    this._req = window['AP'].request;\n\n    // OBSOLETED / legacy all.js version\n    // window['AP'].require('request', request => {\n    //   this._req = request;\n    // });\n  }\n\n  createConnection(request: Request): AtlassianConnection {\n    // RESERVED / this._xsrfStrategy.configureRequest(request);\n    request.headers.set('Content-Type', 'application/json; charset=UTF-8');\n\n    return new AtlassianConnection(this._ngZone, request, this._req, this._baseResponseOptions);\n  }\n}\n","// inspired by: \n// https://github.com/angular/angular/blob/master/modules/%40angular/http/src/backends/xhr_backend.ts\n\nimport { Injectable } from '@angular/core';\nimport { Headers, Request, Response, RequestMethod } from '@angular/http';\nimport { Connection, ConnectionBackend, XSRFStrategy } from '@angular/http';\nimport { ResponseOptions, BrowserXhr, XHRConnection } from '@angular/http';\nimport { URLSearchParams } from '@angular/http';\n\n// import { ResponseOptions, ResponseContentType, ResponseType } from '@angular/http';\n// import { ReadyState, RequestMethod } from '@angular/http';\n// import { Observable } from 'rxjs/Observable';\n// import { Observer } from 'rxjs/Observer';\n\n// const XSSI_PREFIX = /^\\)\\]\\}',?\\n/;\n// const isSuccess = (status: number): boolean => (status >= 200 && status < 300);\n\n// export class MicrosoftConnection implements Connection {\n//   request: Request;\n//   response: Observable<Response>;\n//   readyState: ReadyState;\n\n//   constructor(req: Request, reqMicrosoft: any, baseResponseOptions?: ResponseOptions) {\n//     this.request = req;\n\n//     this.response = new Observable<Response>((responseObserver: Observer<Response>) => {\n//       const _req: any = reqMicrosoft;\n\n//       // RESERVED / TODO: refactor\n//       // if (req.withCredentials != null) {\n//       //   _req.withCredentials = req.withCredentials;\n//       // }\n\n//       // success event handler\n//       const onSuccess = (xhrText: string, xhrResult: number, xhr: any) => {\n//         // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)\n//         let status: number = xhr.status === 1223 ? 204 : xhr.status;\n\n//         let body: any = null;\n\n//         // HTTP 204 means no content\n//         if (status !== 204) {\n//           // responseText is the old-school way of retrieving response (supported by IE8 & 9)\n//           // response/responseType properties were introduced in ResourceLoader Level2 spec\n//           // (supported by IE10)\n//           body = xhrText;\n\n//           // Implicitly strip a potential XSSI prefix.\n//           if (typeof body === 'string') {\n//             body = body.replace(XSSI_PREFIX, '');\n//           }\n//         }\n\n//         // fix status code when it is 0 (0 status is undocumented).\n//         // Occurs when accessing file resources or on Android 4.1 stock browser\n//         // while retrieving files from application cache.\n//         if (status === 0) {\n//           status = body ? 200 : 0;\n//         }\n\n//         const headers: Headers = Headers.fromResponseHeaderString(xhr.getAllResponseHeaders());\n//         // IE 9 does not provide the way to get URL of response\n//         const url = null; // OBSOLETED / angular4+ / getResponseURL(xhr) || req.url;\n//         const statusText: string = xhr.statusText || 'OK';\n\n//         let responseOptions = new ResponseOptions({body, status, headers, statusText, url});\n//         if (baseResponseOptions != null) {\n//           responseOptions = baseResponseOptions.merge(responseOptions);\n//         }\n\n//         const response = new Response(responseOptions);\n//         response.ok = isSuccess(status);\n\n//         if (response.ok) {\n//           responseObserver.next(response);\n//           responseObserver.complete();\n//           return;\n//         }\n\n//         responseObserver.error(response);\n//       };\n\n//       // error event handler\n//       const onError = (err: any) => {\n//         let responseOptions = new ResponseOptions({\n//           body: err['responseText'],\n//           type: ResponseType.Error,\n//           status: err['status'],\n//           statusText: err['statusText'],\n//         });\n\n//         if (baseResponseOptions != null) {\n//           responseOptions = baseResponseOptions.merge(responseOptions);\n//         }\n\n//         responseObserver.error(new Response(responseOptions));\n//       };\n\n//       this.setDetectedContentType(req, _req);\n\n//       if (req.headers == null) {\n//         req.headers = new Headers();\n//       }\n\n//       if (!req.headers.get('Accept')) {\n//         req.headers.append('Accept', 'application/json, text/plain, */*');\n//       }\n\n//       _req({\n//         url: req.url,\n//         data: req.getBody(),\n//         type: RequestMethod[req.method].toUpperCase(),\n//         contentType: req.headers.get('Content-Type'),\n//         headers: req.headers.keys().reduce((output, key) => {\n//           output[key] = req.headers.get(key);\n//           return output;\n//         }, {}),\n//         success: onSuccess,\n//         error: onError,\n//       });\n\n//       return () => {\n//         // RESERVED / TODO: refactor\n//         //_req.abort();\n//       };\n//     });\n//   }\n\n//   setDetectedContentType(req: any /** Angular Request */, _req: any /** Microsoft Request */) {\n//     // Skip if a custom Content-Type header is provided\n//     if (req.headers != null && req.headers.get('Content-Type') != null) {\n//       _req.contentType = req.headers.get('Content-Type');\n//       return;\n//     }\n\n//     // Set the detected content type\n//     switch (req.contentType) {\n//       case 'NONE': // Content.NONE\n//         break;\n//       case 'JSON': // Content.JSON\n//         _req.contentType = 'application/json';\n//         break;\n//       case 'FORM': // Content.FORM\n//         _req.contentType = 'application/x-www-form-urlencoded;charset=UTF-8';\n//         break;\n//       case 'TEXT': // Content.TEXT\n//         _req.contentType = 'text/plain';\n//         break;\n//       case 'BLOB': // Content.BLOB\n//         const blob = req.blob();\n//         if (blob.type) {\n//           _req.contentType = blob.type;\n//         }\n//         break;\n//     }\n//   }\n// }\n\n@Injectable()\nexport class MicrosoftBackend implements ConnectionBackend {\n  private _token: any;\n  private _tokenHeader: string;\n\n  constructor(\n    private _browserXHR: BrowserXhr,\n    private _baseResponseOptions: ResponseOptions,\n    private _xsrfStrategy: XSRFStrategy\n  ) {\n    if (!window['VSS']) {\n      throw new Error('Microsoft API is not detected');\n    }\n  }\n\n  // experimental\n  resolveConnection(request: Request): Promise<any> {\n\n    let promise = new Promise(resolve => {\n      if (this._token && this._token.validTo > new Date()) {\n        resolve(this._token);\n\n      } else {\n        window['VSS'].require(['VSS/Authentication/Services'], VSS_Auth_Service => {\n          window['VSS'].getAccessToken().then(token => {\n            this._token = token;\n            this._tokenHeader = VSS_Auth_Service.authTokenManager.getAuthorizationHeader(token);\n            resolve(this._token);\n          });\n        });\n      }\n    });\n\n    return promise;\n  }\n\n  createConnection(request: Request): XHRConnection {\n    let url = new URL(request.url);\n    let urlSeachParams = new URLSearchParams(url.search.slice(1)); // remove '?' mark first\n    urlSeachParams.set('api-version', urlSeachParams.get('api-version') || '1.0');\n    url.search = urlSeachParams.toString();\n\n    request.url = url.toString();\n    request.headers.set('Authorization', this._tokenHeader);\n    \n    if (request.method == RequestMethod.Patch) {\n      request.headers.set('Content-Type', 'application/json-patch+json; charset=UTF-8');\n    } else {\n      request.headers.set('Content-Type', 'application/json; charset=UTF-8');\n    }\n\n    this._xsrfStrategy.configureRequest(request);\n    return new XHRConnection(request, this._browserXHR, this._baseResponseOptions);\n  }\n}\n","import { Component } from '@angular/core';\n\nimport config from './base/config';\nimport {\n  EnvService,\n  UserAtlassianService,\n  UserMicrosoftService,\n  UserService,\n  BoardService,\n  FilterService,\n} from './base/services';\n\n@Component({\n  selector: '[app]',\n  providers: [\n    UserService,\n    UserAtlassianService,\n    UserMicrosoftService,\n    BoardService,\n    FilterService,\n  ],\n  template: `\n    <!-- div [class]=\"refresh()\"></div -->\n    <router-outlet></router-outlet>\n    <!-- <notification-list></notification-list> -->\n  `,\n  styleUrls: [ ],\n})\nexport class AppComponent {\n\n  constructor(\n    private envService: EnvService,\n  ) {\n  }\n\n  // OBSOLETED\n  // refresh() {\n  //   // temporal\n  //   console.log('!!!REFRESH fix it', Date.now());\n  //   return '';\n  // }\n}\n"],"sourceRoot":""}