slickgrid
Version:
A lightning fast JavaScript grid/spreadsheet
9 lines • 65.7 kB
JavaScript
/**
* SlickGrid v3.0.2
* (c) 2009-present Michael Leibman
* homepage: http://github.com/mleibman/slickgrid
* license: MIT
* date: 2022-11-14
* file: ./slick.grid - Copy.js
*/
if("undefined"==typeof jQuery)throw new Error("SlickGrid requires jquery module to be loaded");if(!jQuery.fn.drag)throw new Error("SlickGrid requires jquery.event.drag module to be loaded");if("undefined"==typeof Slick)throw new Error("slick.core.js not loaded");!function($){var scrollbarDimensions,maxSupportedCssHeight;function SlickGrid(container,data,columns,options){var defaults={alwaysShowVerticalScroll:!1,explicitInitialization:!1,rowHeight:25,defaultColumnWidth:80,enableAddRow:!1,leaveSpaceForNewRows:!1,editable:!1,autoEdit:!0,suppressActiveCellChangeOnEdit:!1,enableCellNavigation:!0,enableColumnReorder:!0,asyncEditorLoading:!1,asyncEditorLoadDelay:100,forceFitColumns:!1,enableAsyncPostRender:!1,asyncPostRenderDelay:50,enableAsyncPostRenderCleanup:!1,asyncPostRenderCleanupDelay:40,autoHeight:!1,editorLock:Slick.GlobalEditorLock,showHeaderRow:!1,headerRowHeight:25,createFooterRow:!1,showFooterRow:!1,footerRowHeight:25,createPreHeaderPanel:!1,showPreHeaderPanel:!1,preHeaderPanelHeight:25,showTopPanel:!1,topPanelHeight:25,formatterFactory:null,editorFactory:null,cellFlashingCssClass:"flashing",selectedCellCssClass:"selected",multiSelect:!0,enableTextSelectionOnCells:!1,dataItemColumnValueExtractor:null,fullWidthRows:!1,multiColumnSort:!1,numberedMultiColumnSort:!1,tristateMultiColumnSort:!1,sortColNumberInSeparateSpan:!1,defaultFormatter:defaultFormatter,forceSyncScrolling:!1,addNewRowCssClass:"new-row",preserveCopiedSelectionOnPaste:!1,showCellSelection:!0,viewportClass:null,minRowBuffer:3,emulatePagingWhenScrolling:!0,editorCellNavOnLRKeys:!1},columnDefaults={name:"",resizable:!0,sortable:!1,minWidth:30,rerenderOnResize:!1,headerCssClass:null,defaultSortAsc:!0,focusable:!0,selectable:!0},th,h,ph,n,cj,page=0,offset=0,vScrollDir=1,initialized=!1,$container,uid="slickgrid_"+Math.round(1e6*Math.random()),self=this,$focusSink,$focusSink2,$headerScroller,$headers,$headerRow,$headerRowScroller,$headerRowSpacer,$footerRow,$footerRowScroller,$footerRowSpacer,$preHeaderPanel,$preHeaderPanelScroller,$preHeaderPanelSpacer,$topPanelScroller,$topPanel,$viewport,$canvas,$style,$boundAncestors,stylesheet,columnCssRulesL,columnCssRulesR,viewportH,viewportW,canvasWidth,viewportHasHScroll,viewportHasVScroll,headerColumnWidthDiff=0,headerColumnHeightDiff=0,cellWidthDiff=0,cellHeightDiff=0,jQueryNewWidthBehaviour=!1,absoluteColumnMinWidth,tabbingDirection=1,activePosX,activeRow,activeCell,activeCellNode=null,currentEditor=null,serializedEditorValue,editController,rowsCache={},renderedRows=0,numVisibleRows,prevScrollTop=0,scrollTop=0,lastRenderedScrollTop=0,lastRenderedScrollLeft=0,prevScrollLeft=0,scrollLeft=0,selectionModel,selectedRows=[],plugins=[],cellCssClasses={},columnsById={},sortColumns=[],columnPosLeft=[],columnPosRight=[],pagingActive=!1,pagingIsLastPage=!1,scrollThrottle=ActionThrottle(render,50),h_editorLoader=null,h_render=null,h_postrender=null,h_postrenderCleanup=null,postProcessedRows={},postProcessToRow=null,postProcessFromRow=null,postProcessedCleanupQueue=[],postProcessgroupId=0,counter_rows_rendered=0,counter_rows_removed=0,rowNodeFromLastMouseWheelEvent,zombieRowNodeFromLastMouseWheelEvent,zombieRowCacheFromLastMouseWheelEvent,zombieRowPostProcessedFromLastMouseWheelEvent,cssShow={position:"absolute",visibility:"hidden",display:"block"},$hiddenParents,oldProps=[],columnResizeDragging=!1;function init(){if(($container=container instanceof jQuery?container:$(container)).length<1)throw new Error("SlickGrid requires a valid container, "+container+" does not exist in the DOM.");cacheCssForHiddenInit(),maxSupportedCssHeight=maxSupportedCssHeight||getMaxSupportedCssHeight(),options=$.extend({},defaults,options),validateAndEnforceOptions(),columnDefaults.width=options.defaultColumnWidth,columnsById={};for(var e=0;e<columns.length;e++){var o=columns[e]=$.extend({},columnDefaults,columns[e]);columnsById[o.id]=e,o.minWidth&&o.width<o.minWidth&&(o.width=o.minWidth),o.maxWidth&&o.width>o.maxWidth&&(o.width=o.maxWidth)}if(options.enableColumnReorder&&!$.fn.sortable)throw new Error("SlickGrid's 'enableColumnReorder = true' option requires jquery-ui.sortable module to be loaded");editController={commitCurrentEdit:commitCurrentEdit,cancelCurrentEdit:cancelCurrentEdit},$container.empty().css("overflow","hidden").css("outline",0).addClass(uid).addClass("ui-widget"),/relative|absolute|fixed/.test($container.css("position"))||$container.css("position","relative"),$focusSink=$("<div tabIndex='0' hideFocus style='position:fixed;width:0;height:0;top:0;left:0;outline:0;'></div>").appendTo($container),options.createPreHeaderPanel&&($preHeaderPanelScroller=$("<div class='slick-preheader-panel ui-state-default' style='overflow:hidden;position:relative;' />").appendTo($container),$preHeaderPanel=$("<div />").appendTo($preHeaderPanelScroller),$preHeaderPanelSpacer=$("<div style='display:block;height:1px;position:absolute;top:0;left:0;'></div>").appendTo($preHeaderPanelScroller),options.showPreHeaderPanel||$preHeaderPanelScroller.hide()),$headerScroller=$("<div class='slick-header ui-state-default' />").appendTo($container),$headers=$("<div class='slick-header-columns' style='left:-1000px' />").appendTo($headerScroller),$headerRowScroller=$("<div class='slick-headerrow ui-state-default' />").appendTo($container),$headerRow=$("<div class='slick-headerrow-columns' />").appendTo($headerRowScroller),$headerRowSpacer=$("<div style='display:block;height:1px;position:absolute;top:0;left:0;'></div>").appendTo($headerRowScroller),$topPanelScroller=$("<div class='slick-top-panel-scroller ui-state-default' />").appendTo($container),$topPanel=$("<div class='slick-top-panel' style='width:10000px' />").appendTo($topPanelScroller),options.showTopPanel||$topPanelScroller.hide(),options.showHeaderRow||$headerRowScroller.hide(),($viewport=$("<div class='slick-viewport' style='width:100%;overflow:auto;outline:0;position:relative;;'>").appendTo($container)).css("overflow-y",options.alwaysShowVerticalScroll?"scroll":options.autoHeight?"hidden":"auto"),$viewport.css("overflow-x",options.forceFitColumns?"hidden":"auto"),options.viewportClass&&$viewport.toggleClass(options.viewportClass,!0),$canvas=$("<div class='grid-canvas' />").appendTo($viewport),scrollbarDimensions=scrollbarDimensions||measureScrollbar(),$preHeaderPanelSpacer&&$preHeaderPanelSpacer.css("width",getCanvasWidth()+scrollbarDimensions.width+"px"),$headers.width(getHeadersWidth()),$headerRowSpacer.css("width",getCanvasWidth()+scrollbarDimensions.width+"px"),options.createFooterRow&&($footerRowScroller=$("<div class='slick-footerrow ui-state-default' />").appendTo($container),$footerRow=$("<div class='slick-footerrow-columns' />").appendTo($footerRowScroller),$footerRowSpacer=$("<div style='display:block;height:1px;position:absolute;top:0;left:0;'></div>").css("width",getCanvasWidth()+scrollbarDimensions.width+"px").appendTo($footerRowScroller),options.showFooterRow||$footerRowScroller.hide()),$focusSink2=$focusSink.clone().appendTo($container),options.explicitInitialization||finishInitialization()}function finishInitialization(){initialized||(initialized=!0,viewportW=parseFloat($.css($container[0],"width",!0)),measureCellPaddingAndBorder(),disableSelection($headers),options.enableTextSelectionOnCells||$viewport.on("selectstart.ui",function(e){return $(e.target).is("input,textarea")}),updateColumnCaches(),createColumnHeaders(),setupColumnSort(),createCssRules(),resizeCanvas(),bindAncestorScrollEvents(),$container.on("resize.slickgrid",resizeCanvas),$viewport.on("scroll",handleScroll),$headerScroller.on("contextmenu",handleHeaderContextMenu).on("click",handleHeaderClick).on("mouseenter",".slick-header-column",handleHeaderMouseEnter).on("mouseleave",".slick-header-column",handleHeaderMouseLeave),$headerRowScroller.on("scroll",handleHeaderRowScroll),options.createFooterRow&&$footerRowScroller.on("scroll",handleFooterRowScroll),options.createPreHeaderPanel&&$preHeaderPanelScroller.on("scroll",handlePreHeaderPanelScroll),$focusSink.add($focusSink2).on("keydown",handleKeyDown),$canvas.on("keydown",handleKeyDown).on("click",handleClick).on("dblclick",handleDblClick).on("contextmenu",handleContextMenu).on("draginit",handleDragInit).on("dragstart",{distance:3},handleDragStart).on("drag",handleDrag).on("dragend",handleDragEnd).on("mouseenter",".slick-cell",handleMouseEnter).on("mouseleave",".slick-cell",handleMouseLeave),navigator.userAgent.toLowerCase().match(/webkit/)&&navigator.userAgent.toLowerCase().match(/macintosh/)&&$canvas.on("mousewheel",handleMouseWheel),restoreCssFromHiddenInit())}function cacheCssForHiddenInit(){($hiddenParents=$container.parents().addBack().not(":visible")).each(function(){var e,o={};for(e in cssShow)o[e]=this.style[e],this.style[e]=cssShow[e];oldProps.push(o)})}function restoreCssFromHiddenInit(){$hiddenParents.each(function(e){var o,t=oldProps[e];for(o in cssShow)this.style[o]=t[o]})}function registerPlugin(e){plugins.unshift(e),e.init(self)}function unregisterPlugin(e){for(var o=plugins.length;0<=o;o--)if(plugins[o]===e){plugins[o].destroy&&plugins[o].destroy(),plugins.splice(o,1);break}}function setSelectionModel(e){selectionModel&&(selectionModel.onSelectedRangesChanged.unsubscribe(handleSelectedRangesChanged),selectionModel.destroy&&selectionModel.destroy()),(selectionModel=e)&&(selectionModel.init(self),selectionModel.onSelectedRangesChanged.subscribe(handleSelectedRangesChanged))}function getSelectionModel(){return selectionModel}function getCanvasNode(){return $canvas[0]}function measureScrollbar(){var e=$('<div class="'+$viewport.className+'" style="position:absolute; top:-10000px; left:-10000px; overflow:auto; width:100px; height:100px;"></div>').appendTo($viewport),o=$('<div style="width:200px; height:200px; overflow:auto;"></div>').appendTo(e),t={width:e[0].offsetWidth-e[0].clientWidth,height:e[0].offsetHeight-e[0].clientHeight};return o.remove(),e.remove(),t}function getColumnTotalWidth(e){for(var o=0,t=0,l=columns.length;t<l;t++)o+=columns[t].width;return e&&(o+=scrollbarDimensions.width),o}function getHeadersWidth(){var e=getColumnTotalWidth(!options.autoHeight);return Math.max(e,viewportW)+1e3}function getCanvasWidth(){for(var e=viewportHasVScroll?viewportW-scrollbarDimensions.width:viewportW,o=0,t=columns.length;t--;)o+=columns[t].width;return options.fullWidthRows?Math.max(o,e):o}function updateCanvasWidth(e){var o=canvasWidth,t=((canvasWidth=getCanvasWidth())!=o&&($canvas.width(canvasWidth),$headerRow.width(canvasWidth),options.createFooterRow&&$footerRow.width(canvasWidth),options.createPreHeaderPanel&&$preHeaderPanel.width(canvasWidth),$headers.width(getHeadersWidth()),viewportHasHScroll=canvasWidth>viewportW-scrollbarDimensions.width),canvasWidth+(viewportHasVScroll?scrollbarDimensions.width:0));$headerRowSpacer.width(t),options.createFooterRow&&$footerRowSpacer.width(t),options.createPreHeaderPanel&&$preHeaderPanelSpacer.width(t),canvasWidth==o&&!e||applyColumnWidths()}function disableSelection(e){e&&e.jquery&&e.attr("unselectable","on").css("MozUserSelect","none").on("selectstart.ui",function(){return!1})}function getMaxSupportedCssHeight(){for(var e=1e6,o=navigator.userAgent.toLowerCase().match(/firefox/)?6e6:1e9,t=$("<div style='display:none' />").appendTo(document.body);;){var l=2*e;if(t.css("height",l),o<l||t.height()!==l)break;e=l}return t.remove(),e}function getUID(){return uid}function getHeaderColumnWidthDiff(){return headerColumnWidthDiff}function getScrollbarDimensions(){return scrollbarDimensions}function bindAncestorScrollEvents(){for(var e,o=$canvas[0];(o=o.parentNode)!=document.body&&null!=o;)o!=$viewport[0]&&o.scrollWidth==o.clientWidth&&o.scrollHeight==o.clientHeight||(e=$(o),$boundAncestors=$boundAncestors?$boundAncestors.add(e):e,e.on("scroll."+uid,handleActiveCellPositionChange))}function unbindAncestorScrollEvents(){$boundAncestors&&($boundAncestors.off("scroll."+uid),$boundAncestors=null)}function updateColumnHeader(e,o,t){var l,n;!initialized||null!=(e=getColumnIndex(e))&&(l=columns[e],(n=$headers.children().eq(e))&&(void 0!==o&&(columns[e].name=o),void 0!==t&&(columns[e].toolTip=t),trigger(self.onBeforeHeaderCellDestroy,{node:n[0],column:l,grid:self}),n.attr("title",t||"").children().eq(0).html(o),trigger(self.onHeaderCellRendered,{node:n[0],column:l,grid:self})))}function getHeader(){return $headers[0]}function getHeaderColumn(e){e="number"==typeof e?e:getColumnIndex(e),e=$headers.children().eq(e);return e&&e[0]}function getHeaderRow(){return $headerRow[0]}function getFooterRow(){return $footerRow[0]}function getPreHeaderPanel(){return $preHeaderPanel[0]}function getHeaderRowColumn(e){e="number"==typeof e?e:getColumnIndex(e),e=$headerRow.children().eq(e);return e&&e[0]}function getFooterRowColumn(e){e="number"==typeof e?e:getColumnIndex(e),e=$footerRow.children().eq(e);return e&&e[0]}function createColumnHeaders(){function e(){$(this).addClass("ui-state-hover")}function o(){$(this).removeClass("ui-state-hover")}$headers.find(".slick-header-column").each(function(){var e=$(this).data("column");e&&trigger(self.onBeforeHeaderCellDestroy,{node:this,column:e,grid:self})}),$headers.empty(),$headers.width(getHeadersWidth()),$headerRow.find(".slick-headerrow-column").each(function(){var e=$(this).data("column");e&&trigger(self.onBeforeHeaderRowCellDestroy,{node:this,column:e,grid:self})}),$headerRow.empty(),options.createFooterRow&&($footerRow.find(".slick-footerrow-column").each(function(){var e=$(this).data("column");e&&trigger(self.onBeforeFooterRowCellDestroy,{node:this,column:e})}),$footerRow.empty());for(var t=0;t<columns.length;t++){var l=columns[t],n=$("<div class='ui-state-default slick-header-column' />").html("<span class='slick-column-name'>"+l.name+"</span>").width(l.width-headerColumnWidthDiff).attr("id",""+uid+l.id).attr("title",l.toolTip||"").data("column",l).addClass(l.headerCssClass||"").appendTo($headers);(options.enableColumnReorder||l.sortable)&&n.on("mouseenter",e).on("mouseleave",o),l.sortable&&(n.addClass("slick-header-sortable"),n.append("<span class='slick-sort-indicator"+(options.numberedMultiColumnSort&&!options.sortColNumberInSeparateSpan?" slick-sort-indicator-numbered":"")+"' />"),options.numberedMultiColumnSort&&options.sortColNumberInSeparateSpan&&n.append("<span class='slick-sort-indicator-numbered' />")),trigger(self.onHeaderCellRendered,{node:n[0],column:l,grid:self}),options.showHeaderRow&&(n=$("<div class='ui-state-default slick-headerrow-column l"+t+" r"+t+"'></div>").data("column",l).appendTo($headerRow),trigger(self.onHeaderRowCellRendered,{node:n[0],column:l,grid:self})),options.createFooterRow&&options.showFooterRow&&(n=$("<div class='ui-state-default slick-footerrow-column l"+t+" r"+t+"'></div>").data("column",l).appendTo($footerRow),trigger(self.onFooterRowCellRendered,{node:n[0],column:l}))}setSortColumns(sortColumns),setupColumnResize(),options.enableColumnReorder&&("function"==typeof options.enableColumnReorder?options.enableColumnReorder(self,$headers,headerColumnWidthDiff,setColumns,setupColumnResize,columns,getColumnIndex,uid,trigger):setupColumnReorder())}function setupColumnSort(){$headers.click(function(e){if(!columnResizeDragging&&(e.metaKey=e.metaKey||e.ctrlKey,!$(e.target).hasClass("slick-resizable-handle"))){var o=$(e.target).closest(".slick-header-column");if(o.length){var t=o.data("column");if(t.sortable&&getEditorLock().commitCurrentEdit()){for(var l=null,n=0;n<sortColumns.length;n++)if(sortColumns[n].columnId==t.id){(l=sortColumns[n]).sortAsc=!l.sortAsc;break}o=!!l;options.tristateMultiColumnSort?(l=l||{columnId:t.id,sortAsc:t.defaultSortAsc},o&&l.sortAsc&&(sortColumns.splice(n,1),l=null),options.multiColumnSort||(sortColumns=[]),!l||o&&options.multiColumnSort||sortColumns.push(l)):e.metaKey&&options.multiColumnSort?l&&sortColumns.splice(n,1):((e.shiftKey||e.metaKey)&&options.multiColumnSort||(sortColumns=[]),l?0==sortColumns.length&&sortColumns.push(l):(l={columnId:t.id,sortAsc:t.defaultSortAsc},sortColumns.push(l))),setSortColumns(sortColumns),options.multiColumnSort?trigger(self.onSort,{multiColumnSort:!0,sortCols:$.map(sortColumns,function(e){return{sortCol:columns[getColumnIndex(e.columnId)],sortAsc:e.sortAsc}})},e):trigger(self.onSort,{multiColumnSort:!1,sortCol:0<sortColumns.length?t:null,sortAsc:!(0<sortColumns.length)||sortColumns[0].sortAsc},e)}}}})}function setupColumnReorder(){$headers.filter(":ui-sortable").sortable("destroy"),$headers.sortable({containment:"parent",distance:3,axis:"x",cursor:"default",tolerance:"intersection",helper:"clone",placeholder:"slick-sortable-placeholder ui-state-default slick-header-column",start:function(e,o){o.placeholder.width(o.helper.outerWidth()-headerColumnWidthDiff),$(o.helper).addClass("slick-header-column-active")},beforeStop:function(e,o){$(o.helper).removeClass("slick-header-column-active")},stop:function(e){if(getEditorLock().commitCurrentEdit()){for(var o=$headers.sortable("toArray"),t=[],l=0;l<o.length;l++)t.push(columns[getColumnIndex(o[l].replace(uid,""))]);setColumns(t),trigger(self.onColumnsReordered,{}),e.stopPropagation(),setupColumnResize()}else $(this).sortable("cancel")}})}function setupColumnResize(){var s,a,c,d,u,t,l,h=$headers.children();h.find(".slick-resizable-handle").remove(),h.each(function(e,o){e>=columns.length||columns[e].resizable&&(void 0===t&&(t=e),l=e)}),void 0!==t&&h.each(function(i,e){i>=columns.length||i<t||options.forceFitColumns&&l<=i||($(e),$("<div class='slick-resizable-handle' />").appendTo(e).on("dragstart",function(e,o){if(!getEditorLock().commitCurrentEdit())return!1;c=e.pageX,$(this).parent().addClass("slick-header-column-active");var t=null,l=null;if(h.each(function(e,o){e>=columns.length||(columns[e].previousWidth=$(o).outerWidth())}),options.forceFitColumns)for(l=t=0,s=i+1;s<columns.length;s++)(a=columns[s]).resizable&&(null!==l&&(a.maxWidth?l+=a.maxWidth-a.previousWidth:l=null),t+=a.previousWidth-Math.max(a.minWidth||0,absoluteColumnMinWidth));var n=0,r=0;for(s=0;s<=i;s++)(a=columns[s]).resizable&&(null!==r&&(a.maxWidth?r+=a.maxWidth-a.previousWidth:r=null),n+=a.previousWidth-Math.max(a.minWidth||0,absoluteColumnMinWidth));null===t&&(t=1e5),null===n&&(n=1e5),null===l&&(l=1e5),null===r&&(r=1e5),u=c+Math.min(t,r),d=c-Math.min(n,l)}).on("drag",function(e,o){columnResizeDragging=!0;var t,l,e=Math.min(u,Math.max(d,e.pageX))-c;if(e<0){for(l=e,s=i;0<=s;s--)(a=columns[s]).resizable&&(t=Math.max(a.minWidth||0,absoluteColumnMinWidth),l&&a.previousWidth+l<t?(l+=a.previousWidth-t,a.width=t):(a.width=a.previousWidth+l,l=0));if(options.forceFitColumns)for(l=-e,s=i+1;s<columns.length;s++)(a=columns[s]).resizable&&(l&&a.maxWidth&&a.maxWidth-a.previousWidth<l?(l-=a.maxWidth-a.previousWidth,a.width=a.maxWidth):(a.width=a.previousWidth+l,l=0))}else{for(l=e,s=i;0<=s;s--)(a=columns[s]).resizable&&(l&&a.maxWidth&&a.maxWidth-a.previousWidth<l?(l-=a.maxWidth-a.previousWidth,a.width=a.maxWidth):(a.width=a.previousWidth+l,l=0));if(options.forceFitColumns)for(l=-e,s=i+1;s<columns.length;s++)(a=columns[s]).resizable&&(t=Math.max(a.minWidth||0,absoluteColumnMinWidth),l&&a.previousWidth+l<t?(l+=a.previousWidth-t,a.width=t):(a.width=a.previousWidth+l,l=0))}applyColumnHeaderWidths(),options.syncColumnCellResize&&applyColumnWidths()}).on("dragend",function(e,o){var t;for($(this).parent().removeClass("slick-header-column-active"),s=0;s<columns.length;s++)a=columns[s],t=$(h[s]).outerWidth(),a.previousWidth!==t&&a.rerenderOnResize&&invalidateAllRows();updateCanvasWidth(!0),render(),trigger(self.onColumnsResized,{}),setTimeout(function(){columnResizeDragging=!1},300)}))})}function getVBoxDelta(t){var l=0;return $.each(["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],function(e,o){l+=parseFloat(t.css(o))||0}),l}function measureCellPaddingAndBorder(){var e=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],t=$.fn.jquery.split("."),t=(jQueryNewWidthBehaviour=1==t[0]&&8<=t[1]||2<=t[0],l=$("<div class='ui-state-default slick-header-column' style='visibility:hidden'>-</div>").appendTo($headers),headerColumnWidthDiff=headerColumnHeightDiff=0,"border-box"!=l.css("box-sizing")&&"border-box"!=l.css("-moz-box-sizing")&&"border-box"!=l.css("-webkit-box-sizing")&&($.each(e,function(e,o){headerColumnWidthDiff+=parseFloat(l.css(o))||0}),$.each(o,function(e,o){headerColumnHeightDiff+=parseFloat(l.css(o))||0})),l.remove(),$("<div class='slick-row' />").appendTo($canvas)),l=$("<div class='slick-cell' id='' style='visibility:hidden'>-</div>").appendTo(t);cellWidthDiff=cellHeightDiff=0,"border-box"!=l.css("box-sizing")&&"border-box"!=l.css("-moz-box-sizing")&&"border-box"!=l.css("-webkit-box-sizing")&&($.each(e,function(e,o){cellWidthDiff+=parseFloat(l.css(o))||0}),$.each(o,function(e,o){cellHeightDiff+=parseFloat(l.css(o))||0})),t.remove(),absoluteColumnMinWidth=Math.max(headerColumnWidthDiff,cellWidthDiff)}function createCssRules(){$style=$("<style type='text/css' rel='stylesheet' />").appendTo($("head"));for(var e=options.rowHeight-cellHeightDiff,o=["."+uid+" .slick-header-column { left: 1000px; }","."+uid+" .slick-top-panel { height:"+options.topPanelHeight+"px; }","."+uid+" .slick-preheader-panel { height:"+options.preHeaderPanelHeight+"px; }","."+uid+" .slick-headerrow-columns { height:"+options.headerRowHeight+"px; }","."+uid+" .slick-footerrow-columns { height:"+options.footerRowHeight+"px; }","."+uid+" .slick-cell { height:"+e+"px; }","."+uid+" .slick-row { height:"+options.rowHeight+"px; }"],t=0;t<columns.length;t++)o.push("."+uid+" .l"+t+" { }"),o.push("."+uid+" .r"+t+" { }");$style[0].styleSheet?$style[0].styleSheet.cssText=o.join(" "):$style[0].appendChild(document.createTextNode(o.join(" ")))}function getColumnCssRules(e){if(!stylesheet){for(var o=document.styleSheets,t=0;t<o.length;t++)if((o[t].ownerNode||o[t].owningElement)==$style[0]){stylesheet=o[t];break}if(!stylesheet)throw new Error("Cannot find stylesheet.");columnCssRulesL=[],columnCssRulesR=[];var l,n,r=stylesheet.cssRules||stylesheet.rules;for(t=0;t<r.length;t++){var i=r[t].selectorText;(l=/\.l\d+/.exec(i))?(n=parseInt(l[0].substr(2,l[0].length-2),10),columnCssRulesL[n]=r[t]):(l=/\.r\d+/.exec(i))&&(n=parseInt(l[0].substr(2,l[0].length-2),10),columnCssRulesR[n]=r[t])}}return{left:columnCssRulesL[e],right:columnCssRulesR[e]}}function removeCssRules(){$style.remove(),stylesheet=null}function destroy(){getEditorLock().cancelCurrentEdit(),trigger(self.onBeforeDestroy,{});for(var e=plugins.length;e--;)unregisterPlugin(plugins[e]);options.enableColumnReorder&&$headers.filter(":ui-sortable").sortable("destroy"),unbindAncestorScrollEvents(),$container.off(".slickgrid"),removeCssRules(),$canvas.off("draginit dragstart dragend drag"),$container.empty().removeClass(uid)}function trigger(e,o,t){return t=t||new Slick.EventData,(o=o||{}).grid=self,e.notify(o,t,self)}function getEditorLock(){return options.editorLock}function getEditController(){return editController}function getColumnIndex(e){return columnsById[e]}function autosizeColumns(){var e,o=[],t=0,l=0,n=viewportHasVScroll?viewportW-scrollbarDimensions.width:viewportW;for(i=0;i<columns.length;i++)c=columns[i],o.push(c.width),l+=c.width,c.resizable&&(t+=c.width-Math.max(c.minWidth,absoluteColumnMinWidth));for(e=l;n<l&&t;){for(var r=(l-n)/t,i=0;i<columns.length&&n<l;i++){var s,a,c=columns[i],d=o[i];!c.resizable||d<=c.minWidth||d<=absoluteColumnMinWidth||(s=Math.max(c.minWidth,absoluteColumnMinWidth),a=Math.floor(r*(d-s))||1,l-=a=Math.min(a,d-s),t-=a,o[i]-=a)}if(e<=l)break;e=l}for(e=l;l<n;){var u=n/l;for(i=0;i<columns.length&&l<n;i++){c=columns[i];var h=o[i],h=!c.resizable||c.maxWidth<=h?0:Math.min(Math.floor(u*h)-h,c.maxWidth-h||1e6)||1;l+=h,o[i]+=l<=n?h:0}if(l<=e)break;e=l}var p=!1;for(i=0;i<columns.length;i++)columns[i].rerenderOnResize&&columns[i].width!=o[i]&&(p=!0),columns[i].width=o[i];applyColumnHeaderWidths(),updateCanvasWidth(!0),trigger(self.onAutosizeColumns,{columns:columns}),p&&(invalidateAllRows(),render())}function applyColumnHeaderWidths(){if(initialized){for(var e,o=0,t=$headers.children(),l=columns.length;o<l;o++)e=$(t[o]),jQueryNewWidthBehaviour?e.outerWidth()!==columns[o].width&&e.outerWidth(columns[o].width):e.width()!==columns[o].width-headerColumnWidthDiff&&e.width(columns[o].width-headerColumnWidthDiff);updateColumnCaches()}}function applyColumnWidths(){for(var e,o,t=0,l=0;l<columns.length;l++)e=columns[l].width,(o=getColumnCssRules(l)).left.style.left=t+"px",o.right.style.right=canvasWidth-t-e+"px",t+=columns[l].width}function setSortColumn(e,o){setSortColumns([{columnId:e,sortAsc:o}])}function setSortColumns(e){sortColumns=e;var l=options.numberedMultiColumnSort&&1<sortColumns.length,n=$headers.children();n.removeClass("slick-header-column-sorted").find(".slick-sort-indicator").removeClass("slick-sort-indicator-asc slick-sort-indicator-desc"),n.find(".slick-sort-indicator-numbered").text(""),$.each(sortColumns,function(e,o){null==o.sortAsc&&(o.sortAsc=!0);var t=getColumnIndex(o.columnId);null!=t&&(n.eq(t).addClass("slick-header-column-sorted").find(".slick-sort-indicator").addClass(o.sortAsc?"slick-sort-indicator-asc":"slick-sort-indicator-desc"),l&&n.eq(t).find(".slick-sort-indicator-numbered").text(e+1))})}function getSortColumns(){return sortColumns}function handleSelectedRangesChanged(e,o){selectedRows=[];for(var t={},l=0;l<o.length;l++)for(var n=o[l].fromRow;n<=o[l].toRow;n++){t[n]||(selectedRows.push(n),t[n]={});for(var r=o[l].fromCell;r<=o[l].toCell;r++)canCellBeSelected(n,r)&&(t[n][columns[r].id]=options.selectedCellCssClass)}setCellCssStyles(options.selectedCellCssClass,t),trigger(self.onSelectedRowsChanged,{rows:getSelectedRows()},e)}function getColumns(){return columns}function updateColumnCaches(){columnPosLeft=[],columnPosRight=[];for(var e=0,o=0,t=columns.length;o<t;o++)columnPosLeft[o]=e,columnPosRight[o]=e+columns[o].width,e+=columns[o].width}function setColumns(e){columns=e,columnsById={};for(var o=0;o<columns.length;o++){var t=columns[o]=$.extend({},columnDefaults,columns[o]);columnsById[t.id]=o,t.minWidth&&t.width<t.minWidth&&(t.width=t.minWidth),t.maxWidth&&t.width>t.maxWidth&&(t.width=t.maxWidth)}updateColumnCaches(),initialized&&(invalidateAllRows(),createColumnHeaders(),removeCssRules(),createCssRules(),resizeCanvas(),applyColumnWidths(),handleScroll())}function getOptions(){return options}function setOptions(e,o){getEditorLock().commitCurrentEdit()&&(makeActiveCellNormal(),options.enableAddRow!==e.enableAddRow&&invalidateRow(getDataLength()),options=$.extend(options,e),validateAndEnforceOptions(),$viewport.css("overflow-y",options.autoHeight?"hidden":"auto"),o||render())}function validateAndEnforceOptions(){options.autoHeight&&(options.leaveSpaceForNewRows=!1)}function setData(e,o){data=e,invalidateAllRows(),updateRowCount(),o&&scrollTo(0)}function getData(){return data}function getDataLength(){return data.getLength?data.getLength():data.length}function getDataLengthIncludingAddNew(){return getDataLength()+(options.enableAddRow&&(!pagingActive||pagingIsLastPage)?1:0)}function getDataItem(e){return data.getItem?data.getItem(e):data[e]}function getTopPanel(){return $topPanel[0]}function setTopPanelVisibility(e){options.showTopPanel!=e&&((options.showTopPanel=e)?$topPanelScroller.slideDown("fast",resizeCanvas):$topPanelScroller.slideUp("fast",resizeCanvas))}function setHeaderRowVisibility(e){options.showHeaderRow!=e&&((options.showHeaderRow=e)?$headerRowScroller.slideDown("fast",resizeCanvas):$headerRowScroller.slideUp("fast",resizeCanvas))}function setFooterRowVisibility(e){options.showFooterRow!=e&&((options.showFooterRow=e)?$footerRowScroller.slideDown("fast",resizeCanvas):$footerRowScroller.slideUp("fast",resizeCanvas))}function setPreHeaderPanelVisibility(e){options.showPreHeaderPanel!=e&&((options.showPreHeaderPanel=e)?$preHeaderPanelScroller.slideDown("fast",resizeCanvas):$preHeaderPanelScroller.slideUp("fast",resizeCanvas))}function getContainerNode(){return $container.get(0)}function getRowTop(e){return options.rowHeight*e-offset}function getRowFromPosition(e){return Math.floor((e+offset)/options.rowHeight)}function scrollTo(e){e=Math.max(e,0),e=Math.min(e,th-viewportH+(viewportHasHScroll?scrollbarDimensions.height:0));var o=offset,e=(page=Math.min(n-1,Math.floor(e/ph)),e-(offset=Math.round(page*cj)));offset!=o&&(cleanupRows(getVisibleRange(e)),updateRowPositions()),prevScrollTop!=e&&(vScrollDir=prevScrollTop+o<e+offset?1:-1,$viewport[0].scrollTop=lastRenderedScrollTop=scrollTop=prevScrollTop=e,trigger(self.onViewportChanged,{}))}function defaultFormatter(e,o,t,l,n,r){return null==t?"":(t+"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function getFormatter(e,o){var e=data.getItemMetadata&&data.getItemMetadata(e),t=e&&e.columns&&(e.columns[o.id]||e.columns[getColumnIndex(o.id)]);return t&&t.formatter||e&&e.formatter||o.formatter||options.formatterFactory&&options.formatterFactory.getFormatter(o)||options.defaultFormatter}function getEditor(e,o){var t=columns[o],e=data.getItemMetadata&&data.getItemMetadata(e),e=e&&e.columns;return e&&e[t.id]&&void 0!==e[t.id].editor?e[t.id].editor:e&&e[o]&&void 0!==e[o].editor?e[o].editor:t.editor||options.editorFactory&&options.editorFactory.getEditor(t)}function getDataItemValueForColumn(e,o){return options.dataItemColumnValueExtractor?options.dataItemColumnValueExtractor(e,o):e[o.field]}function appendRowHtml(e,o,t,l){var n=getDataItem(o),l="slick-row"+(o<l&&!n?" loading":"")+(o===activeRow&&options.showCellSelection?" active":"")+(o%2==1?" odd":" even"),r=(n||(l+=" "+options.addNewRowCssClass),data.getItemMetadata&&data.getItemMetadata(o));r&&r.cssClasses&&(l+=" "+r.cssClasses),e.push("<div class='ui-widget-content "+l+"' style='top:"+getRowTop(o)+"px'>");for(var i=0,s=columns.length;i<s;i++){var a,c=columns[i];if(a=1,r&&r.columns&&("*"===(a=(c=r.columns[c.id]||r.columns[i])&&c.colspan||1)&&(a=s-i)),columnPosRight[Math.min(s-1,i+a-1)]>t.leftPx){if(columnPosLeft[i]>t.rightPx)break;appendCellHtml(e,o,i,a,n)}1<a&&(i+=a-1)}e.push("</div>")}function appendCellHtml(e,o,t,l,n){var r,i=columns[t],s="slick-cell l"+t+" r"+Math.min(columns.length-1,t+l-1)+(i.cssClass?" "+i.cssClass:"");for(r in o===activeRow&&t===activeCell&&options.showCellSelection&&(s+=" active"),cellCssClasses)cellCssClasses[r][o]&&cellCssClasses[r][o][i.id]&&(s+=" "+cellCssClasses[r][o][i.id]);var a=null,c="",a=(n&&(a=getDataItemValueForColumn(n,i),null==(c=getFormatter(o,i)(o,t,a,i,n,self))&&(c="")),trigger(self.onBeforeAppendCell,{row:o,cell:t,value:a,dataContext:n})||"");a+=c&&c.addClasses?(a?" ":"")+c.addClasses:"",e.push("<div class='"+s+(a?" "+a:"")+"'>"),n&&e.push("[object Object]"!==Object.prototype.toString.call(c)?c:c.text),e.push("</div>"),rowsCache[o].cellRenderQueue.push(t),rowsCache[o].cellColSpans[t]=l}function cleanupRows(e){for(var o in rowsCache)(o=parseInt(o,10))!==activeRow&&(o<e.top||o>e.bottom)&&removeRowFromCache(o);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()}function invalidate(){updateRowCount(),invalidateAllRows(),render()}function invalidateAllRows(){for(var e in currentEditor&&makeActiveCellNormal(),rowsCache)removeRowFromCache(e);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()}function queuePostProcessedRowForCleanup(e,o,t){for(var l in postProcessgroupId++,o)o.hasOwnProperty(l)&&postProcessedCleanupQueue.push({actionType:"C",groupId:postProcessgroupId,node:e.cellNodesByColumnIdx[0|l],columnIdx:0|l,rowIdx:t});postProcessedCleanupQueue.push({actionType:"R",groupId:postProcessgroupId,node:e.rowNode}),$(e.rowNode).detach()}function queuePostProcessedCellForCleanup(e,o,t){postProcessedCleanupQueue.push({actionType:"C",groupId:postProcessgroupId,node:e,columnIdx:o,rowIdx:t}),$(e).detach()}function removeRowFromCache(e){var o=rowsCache[e];o&&(o.rowNode&&(rowNodeFromLastMouseWheelEvent===o.rowNode?(o.rowNode.style.display="none",zombieRowNodeFromLastMouseWheelEvent=rowNodeFromLastMouseWheelEvent,zombieRowCacheFromLastMouseWheelEvent=o,zombieRowPostProcessedFromLastMouseWheelEvent=postProcessedRows[e]):options.enableAsyncPostRenderCleanup&&postProcessedRows[e]?queuePostProcessedRowForCleanup(o,postProcessedRows[e],e):$canvas[0].removeChild(o.rowNode)),delete rowsCache[e],delete postProcessedRows[e],renderedRows--,counter_rows_removed++)}function invalidateRows(e){var o,t;if(e&&e.length){for(vScrollDir=0,t=e.length,o=0;o<t;o++)currentEditor&&activeRow===e[o]&&makeActiveCellNormal(),rowsCache[e[o]]&&removeRowFromCache(e[o]);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()}}function invalidateRow(e){!e&&0!==e||invalidateRows([e])}function applyFormatResultToCellNode(e,o,t){null==e&&(e=""),"[object Object]"!==Object.prototype.toString.call(e)?o.innerHTML=e:(o.innerHTML=e.text,e.removeClasses&&!t&&$(o).removeClass(e.removeClasses),e.addClasses&&$(o).addClass(e.addClasses))}function updateCell(e,o){var t,l,n=getCellNode(e,o);n&&(t=columns[o],l=getDataItem(e),currentEditor&&activeRow===e&&activeCell===o?currentEditor.loadValue(l):(applyFormatResultToCellNode(l?getFormatter(e,t)(e,o,getDataItemValueForColumn(l,t),t,l,self):"",n),invalidatePostProcessingResults(e)))}function updateRow(e){var o=rowsCache[e];if(o){ensureCellNodesInRowsCache(e);var t,l,n,r=getDataItem(e);for(t in o.cellNodesByColumnIdx)o.cellNodesByColumnIdx.hasOwnProperty(t)&&(l=columns[t|=0],n=o.cellNodesByColumnIdx[t],e===activeRow&&t===activeCell&¤tEditor?currentEditor.loadValue(r):r?applyFormatResultToCellNode(getFormatter(e,l)(e,t,getDataItemValueForColumn(r,l),l,r,self),n):n.innerHTML="");invalidatePostProcessingResults(e)}}function getViewportHeight(){return parseFloat($.css($container[0],"height",!0))-parseFloat($.css($container[0],"paddingTop",!0))-parseFloat($.css($container[0],"paddingBottom",!0))-parseFloat($.css($headerScroller[0],"height"))-getVBoxDelta($headerScroller)-(options.showTopPanel?options.topPanelHeight+getVBoxDelta($topPanelScroller):0)-(options.showHeaderRow?options.headerRowHeight+getVBoxDelta($headerRowScroller):0)-(options.createFooterRow&&options.showFooterRow?options.footerRowHeight+getVBoxDelta($footerRowScroller):0)-(options.createPreHeaderPanel&&options.showPreHeaderPanel?options.preHeaderPanelHeight+getVBoxDelta($preHeaderPanelScroller):0)}function resizeCanvas(){initialized&&(viewportH=options.autoHeight?options.rowHeight*getDataLengthIncludingAddNew():getViewportHeight(),numVisibleRows=Math.ceil(viewportH/options.rowHeight),viewportW=parseFloat($.css($container[0],"width",!0)),options.autoHeight||$viewport.height(viewportH),scrollbarDimensions&&scrollbarDimensions.width||(scrollbarDimensions=measureScrollbar()),options.forceFitColumns&&autosizeColumns(),updateRowCount(),handleScroll(),lastRenderedScrollLeft=-1,render())}function updatePagingStatusFromView(e){pagingActive=0!==e.pageSize,pagingIsLastPage=e.pageNum==e.totalPages-1}function updateRowCount(){if(initialized){var e,o=getDataLength(),t=getDataLengthIncludingAddNew()+(options.leaveSpaceForNewRows?numVisibleRows-1:0),l=viewportHasVScroll,r=(viewportHasVScroll=options.alwaysShowVerticalScroll||!options.autoHeight&&t*options.rowHeight>viewportH,viewportHasHScroll=canvasWidth>viewportW-scrollbarDimensions.width,makeActiveCellNormal(),o-1);for(e in rowsCache)r<e&&removeRowFromCache(e);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup(),activeCellNode&&r<activeRow&&resetActiveCell();o=h,t=(th=Math.max(options.rowHeight*t,viewportH-scrollbarDimensions.height),cj=th<maxSupportedCssHeight?(h=ph=th,n=1,0):(ph=(h=maxSupportedCssHeight)/100,n=Math.floor(th/ph),(th-h)/(n-1)),h!==o&&($canvas.css("height",h),scrollTop=$viewport[0].scrollTop),scrollTop+offset<=th-viewportH);0==th||0==scrollTop?page=offset=0:scrollTo(t?scrollTop+offset:th-viewportH),h!=o&&options.autoHeight&&resizeCanvas(),options.forceFitColumns&&l!=viewportHasVScroll&&autosizeColumns(),updateCanvasWidth(!1)}}function getVisibleRange(e,o){return null==o&&(o=scrollLeft),{top:getRowFromPosition(e=null==e?scrollTop:e),bottom:getRowFromPosition(e+viewportH)+1,leftPx:o,rightPx:o+viewportW}}function getRenderedRange(e,o){var e=getVisibleRange(e,o),o=Math.round(viewportH/options.rowHeight),t=options.minRowBuffer;return-1==vScrollDir?(e.top-=o,e.bottom+=t):1==vScrollDir?(e.top-=t,e.bottom+=o):(e.top-=t,e.bottom+=t),e.top=Math.max(0,e.top),e.bottom=Math.min(getDataLengthIncludingAddNew()-1,e.bottom),e.leftPx-=viewportW,e.rightPx+=viewportW,e.leftPx=Math.max(0,e.leftPx),e.rightPx=Math.min(canvasWidth,e.rightPx),e}function ensureCellNodesInRowsCache(e){var o=rowsCache[e];if(o&&o.cellRenderQueue.length)for(var t=o.rowNode.lastChild;o.cellRenderQueue.length;)var l=o.cellRenderQueue.pop(),t=(o.cellNodesByColumnIdx[l]=t).previousSibling}function cleanUpCells(e,o){var t,l,n,r,i=rowsCache[o],s=[];for(t in i.cellNodesByColumnIdx)i.cellNodesByColumnIdx.hasOwnProperty(t)&&(t|=0,l=i.cellColSpans[t],!(columnPosLeft[t]>e.rightPx||columnPosRight[Math.min(columns.length-1,t+l-1)]<e.leftPx)||o==activeRow&&t==activeCell||s.push(t));for(postProcessgroupId++;null!=(n=s.pop());)r=i.cellNodesByColumnIdx[n],options.enableAsyncPostRenderCleanup&&postProcessedRows[o]&&postProcessedRows[o][n]?queuePostProcessedCellForCleanup(r,n,o):i.rowNode.removeChild(r),delete i.cellColSpans[n],delete i.cellNodesByColumnIdx[n],postProcessedRows[o]&&delete postProcessedRows[o][n],0}function cleanUpAndRenderCells(e){for(var o=[],t=[],l=e.top,n=e.bottom;l<=n;l++)if(C=rowsCache[l]){ensureCellNodesInRowsCache(l),cleanUpCells(e,l);for(var r,i,s=0,a=(a=data.getItemMetadata&&data.getItemMetadata(l))&&a.columns,c=getDataItem(l),d=0,u=columns.length;d<u&&!(columnPosLeft[d]>e.rightPx);d++)null==(i=C.cellColSpans[d])&&(i=1,a&&"*"===(i=(r=a[columns[d].id]||a[d])&&r.colspan||1)&&(i=u-d),columnPosRight[Math.min(u-1,d+i-1)]>e.leftPx&&(appendCellHtml(o,l,d,i,c),s++)),d+=1<i?i-1:0;s&&t.push(l)}if(o.length){var h,p,g=document.createElement("div");for(g.innerHTML=o.join("");null!=(h=t.pop());)for(var m,C=rowsCache[h];null!=(m=C.cellRenderQueue.pop());)p=g.lastChild,C.rowNode.appendChild(p),C.cellNodesByColumnIdx[m]=p}}function renderRows(e){for(var o=$canvas[0],t=[],l=[],n=!1,r=getDataLength(),i=e.top,s=e.bottom;i<=s;i++)rowsCache[i]||(renderedRows++,l.push(i),rowsCache[i]={rowNode:null,cellColSpans:[],cellNodesByColumnIdx:[],cellRenderQueue:[]},appendRowHtml(t,i,e,r),activeCellNode&&activeRow===i&&(n=!0),counter_rows_rendered++);if(l.length){var a=document.createElement("div");a.innerHTML=t.join("");for(i=0,s=l.length;i<s;i++)rowsCache[l[i]].rowNode=o.appendChild(a.firstChild);n&&(activeCellNode=getCellNode(activeRow,activeCell))}}function startPostProcessing(){options.enableAsyncPostRender&&(clearTimeout(h_postrender),h_postrender=setTimeout(asyncPostProcessRows,options.asyncPostRenderDelay))}function startPostProcessingCleanup(){options.enableAsyncPostRenderCleanup&&(clearTimeout(h_postrenderCleanup),h_postrenderCleanup=setTimeout(asyncPostProcessCleanupRows,options.asyncPostRenderCleanupDelay))}function invalidatePostProcessingResults(e){for(var o in postProcessedRows[e])postProcessedRows[e].hasOwnProperty(o)&&(postProcessedRows[e][o]="C");postProcessFromRow=Math.min(postProcessFromRow,e),postProcessToRow=Math.max(postProcessToRow,e),startPostProcessing()}function updateRowPositions(){for(var e in rowsCache)rowsCache[e].rowNode.style.top=getRowTop(e)+"px"}function render(){var e,o;initialized&&(scrollThrottle.dequeue(),e=getVisibleRange(),cleanupRows(o=getRenderedRange()),lastRenderedScrollLeft!=scrollLeft&&cleanUpAndRenderCells(o),renderRows(o),postProcessFromRow=e.top,postProcessToRow=Math.min(getDataLengthIncludingAddNew()-1,e.bottom),startPostProcessing(),lastRenderedScrollTop=scrollTop,lastRenderedScrollLeft=scrollLeft,h_render=null)}function handleHeaderScroll(){handleElementScroll($headerScroller[0])}function handleHeaderRowScroll(){handleElementScroll($headerRowScroller[0])}function handleFooterRowScroll(){handleElementScroll($footerRowScroller[0])}function handlePreHeaderPanelScroll(){handleElementScroll($preHeaderPanelScroller[0])}function handleElementScroll(e){e=e.scrollLeft;e!=$viewport[0].scrollLeft&&($viewport[0].scrollLeft=e)}function handleScroll(){scrollTop=$viewport[0].scrollTop,scrollLeft=$viewport[0].scrollLeft;var e,o=Math.abs(scrollTop-prevScrollTop),t=Math.abs(scrollLeft-prevScrollLeft);t&&(prevScrollLeft=scrollLeft,$headerScroller[0].scrollLeft=scrollLeft,$topPanelScroller[0].scrollLeft=scrollLeft,$headerRowScroller[0].scrollLeft=scrollLeft,options.createFooterRow&&($footerRowScroller[0].scrollLeft=scrollLeft),options.createPreHeaderPanel&&($preHeaderPanelScroller[0].scrollLeft=scrollLeft)),o&&(vScrollDir=prevScrollTop<scrollTop?1:-1,prevScrollTop=scrollTop,o<viewportH?scrollTo(scrollTop+offset):(e=offset,page=h==viewportH?0:Math.min(n-1,Math.floor(scrollTop*((th-viewportH)/(h-viewportH))*(1/ph))),e!=(offset=Math.round(page*cj))&&invalidateAllRows())),(t||o)&&(e=Math.abs(lastRenderedScrollLeft-scrollLeft),t=Math.abs(lastRenderedScrollTop-scrollTop),(20<e||20<t)&&(options.forceSyncScrolling||t<viewportH&&e<viewportW?render():scrollThrottle.enqueue(),trigger(self.onViewportChanged,{}))),trigger(self.onScroll,{scrollLeft:scrollLeft,scrollTop:scrollTop})}function ActionThrottle(e,o){var t=!1,l=!1;function n(){l=!1}function r(){t=!0,setTimeout(i,o),e()}function i(){l?(n(),r()):t=!1}return{enqueue:function(){t?l=!0:r()},dequeue:n}}function asyncPostProcessRows(){for(var e=getDataLength();postProcessFromRow<=postProcessToRow;){var o,t,l,n=0<=vScrollDir?postProcessFromRow++:postProcessToRow--,r=rowsCache[n];if(r&&!(e<=n)){for(var i in postProcessedRows[n]||(postProcessedRows[n]={}),ensureCellNodesInRowsCache(n),r.cellNodesByColumnIdx)r.cellNodesByColumnIdx.hasOwnProperty(i)&&(o=columns[i|=0],t=postProcessedRows[n][i],o.asyncPostRender&&"R"!==t&&((l=r.cellNodesByColumnIdx[i])&&o.asyncPostRender(l,n,getDataItem(n),o,"C"===t),postProcessedRows[n][i]="R"));return void(h_postrender=setTimeout(asyncPostProcessRows,options.asyncPostRenderDelay))}}}function asyncPostProcessCleanupRows(){if(0<postProcessedCleanupQueue.length){for(var e=postProcessedCleanupQueue[0].groupId;0<postProcessedCleanupQueue.length&&postProcessedCleanupQueue[0].groupId==e;){var o,t=postProcessedCleanupQueue.shift();"R"==t.actionType&&$(t.node).remove(),"C"!=t.actionType||(o=columns[t.columnIdx]).asyncPostRenderCleanup&&t.node&&o.asyncPostRenderCleanup(t.node,t.rowIdx,o)}h_postrenderCleanup=setTimeout(asyncPostProcessCleanupRows,options.asyncPostRenderCleanupDelay)}}function updateCellCssStylesOnRenderedRows(e,o){var t,l,n,r,i;for(i in rowsCache){if(r=o&&o[i],n=e&&e[i],r)for(l in r)n&&r[l]==n[l]||(t=getCellNode(i,getColumnIndex(l)))&&$(t).removeClass(r[l]);if(n)for(l in n)r&&r[l]==n[l]||(t=getCellNode(i,getColumnIndex(l)))&&$(t).addClass(n[l])}}function addCellCssStyles(e,o){if(cellCssClasses[e])throw new Error("addCellCssStyles: cell CSS hash with key '"+e+"' already exists.");updateCellCssStylesOnRenderedRows(cellCssClasses[e]=o,null),trigger(self.onCellCssStylesChanged,{key:e,hash:o,grid:self})}function removeCellCssStyles(e){cellCssClasses[e]&&(updateCellCssStylesOnRenderedRows(null,cellCssClasses[e]),delete cellCssClasses[e],trigger(self.onCellCssStylesChanged,{key:e,hash:null,grid:self}))}function setCellCssStyles(e,o){var t=cellCssClasses[e];updateCellCssStylesOnRenderedRows(cellCssClasses[e]=o,t),trigger(self.onCellCssStylesChanged,{key:e,hash:o,grid:self})}function getCellCssStyles(e){return cellCssClasses[e]}function flashCell(e,o,t){var l;t=t||100,rowsCache[e]&&(l=$(getCellNode(e,o)),function e(o){o&&setTimeout(function(){l.queue(function(){l.toggleClass(options.cellFlashingCssClass).dequeue(),e(o-1)})},t)}(4))}function handleMouseWheel(e){e=$(e.target).closest(".slick-row")[0];e!=rowNodeFromLastMouseWheelEvent&&(zombieRowNodeFromLastMouseWheelEvent&&zombieRowNodeFromLastMouseWheelEvent!=e&&(options.enableAsyncPostRenderCleanup&&zombieRowPostProcessedFromLastMouseWheelEvent?queuePostProcessedRowForCleanup(zombieRowCacheFromLastMouseWheelEvent,zombieRowPostProcessedFromLastMouseWheelEvent):$canvas[0].removeChild(zombieRowNodeFromLastMouseWheelEvent),zombieRowPostProcessedFromLastMouseWheelEvent=zombieRowCacheFromLastMouseWheelEvent=zombieRowNodeFromLastMouseWheelEvent=null,options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()),rowNodeFromLastMouseWheelEvent=e)}function handleDragInit(e,o){var t=getCellFromEvent(e);return!(!t||!cellExists(t.row,t.cell))&&(t=trigger(self.onDragInit,o,e),!!e.isImmediatePropagationStopped()&&t)}function handleDragStart(e,o){var t=getCellFromEvent(e);return!(!t||!cellExists(t.row,t.cell))&&(t=trigger(self.onDragStart,o,e),!!e.isImmediatePropagationStopped()&&t)}function handleDrag(e,o){return trigger(self.onDrag,o,e)}function handleDragEnd(e,o){trigger(self.onDragEnd,o,e)}function handleKeyDown(e){trigger(self.onKeyDown,{row:activeRow,cell:activeCell},e);var o=e.isImmediatePropagationStopped(),t=Slick.keyCode;if(!o&&!e.shiftKey&&!e.altKey){if(options.editable&¤tEditor&¤tEditor.keyCaptureList&&-1<currentEditor.keyCaptureList.indexOf(e.which))return;e.which==t.HOME?o=(e.ctrlKey?navigateTop:navigateRowStart)():e.which==t.END&&(o=(e.ctrlKey?navigateBottom:navigateRowEnd)())}if(!o)if(e.shiftKey||e.altKey||e.ctrlKey)e.which!=t.TAB||!e.shiftKey||e.ctrlKey||e.altKey||(o=navigatePrev());else{if(options.editable&¤tEditor&¤tEditor.keyCaptureList&&-1<currentEditor.keyCaptureList.indexOf(e.which))return;if(e.which==t.ESCAPE){if(!getEditorLock().isActive())return;cancelEditAndSetFocus()}else e.which==t.PAGE_DOWN?(navigatePageDown(),o=!0):e.which==t.PAGE_UP?(navigatePageUp(),o=!0):e.which==t.LEFT?o=navigateLeft():e.which==t.RIGHT?o=navigateRight():e.which==t.UP?o=navigateUp():e.which==t.DOWN?o=navigateDown():e.which==t.TAB?o=navigateNext():e.which==t.ENTER&&(options.editable&&(currentEditor?(activeRow===getDataLength()?navigateDown:commitEditAndSetFocus)():getEditorLock().commitCurrentEdit()&&makeActiveCellEditable()),o=!0)}if(o){e.stopPropagation(),e.preventDefault();try{e.originalEvent.keyCode=0}catch(e){}}}function handleClick(e){currentEditor||e.target==document.activeElement&&!$(e.target).hasClass("slick-cell")||setFocus();var o,t=getCellFromEvent(e);!t||null!==currentEditor&&activeRow==t.row&&activeCell==t.cell||(trigger(self.onClick,{row:t.row,cell:t.cell},e),e.isImmediatePropagationStopped()||!canCellBeActive(t.row,t.cell)||getEditorLock().isActive()&&!getEditorLock().commitCurrentEdit()||(scrollRowIntoView(t.row,!1),e=e.target&&e.target.className===Slick.preClickClassName,o=columns[t.cell],o=!!(options.editable&&o&&o.editor&&options.suppressActiveCellChangeOnEdit),setActiveCellInternal(getCellNode(t.row,t.cell),null,e,o)))}function handleContextMenu(e){var o=$(e.target).closest(".slick-cell",$canvas);0===o.length||activeCellNode===o[0]&&null!==currentEditor||trigger(self.onContextMenu,{},e)}function handleDblClick(e){var o=getCellFromEvent(e);!o||null!==currentEditor&&activeRow==o.row&&activeCell==o.cell||(trigger(self.onDblClick,{row:o.row,cell:o.cell},e),e.isImmediatePropagationStopped()||options.editable&&gotoCell(o.row,o.cell,!0))}function handleHeaderMouseEnter(e){trigger(self.onHeaderMouseEnter,{column:$(this).data("column"),grid:self},e)}function handleHeaderMouseLeave(e){trigger(self.onHeaderMouseLeave,{column:$(this).data("column"),grid:self},e)}function handleHeaderContextMenu(e){var o=$(e.target).closest(".slick-header-column",".slick-header-columns"),o=o&&o.data("column");trigger(self.onHeaderContextMenu,{column:o},e)}function handleHeaderClick(e){var o;columnResizeDragging||(o=(o=$(e.target).closest(".slick-header-column",".slick-header-columns"))&&o.data("column"))&&trigger(self.onHeaderClick,{column:o},e)}function handleMouseEnter(e){trigger(self.onMouseEnter,{},e)}function handleMouseLeave(e){trigger(self.onMouseLeave,{},e)}function cellExists(e,o){return!(e<0||e>=getDataLength()||o<0||o>=columns.length)}function getCellFromPoint(e,o){for(var o=getRowFromPosition(o),t=0,l=0,n=0;n<columns.length&&l<e;n++)l+=columns[n].width,t++;return{row:o,cell:(t=t<0?0:t)-1}}function getCellFromNode(e){var o=/l\d+/.exec(e.className);if(o)return parseInt(o[0].substr(1,o[0].length-1),10);throw new Error("getCellFromNode: cannot get cell - "+e.className)}function getRowFromNode(e){for(var o in rowsCache)if(rowsCache[o].rowNode===e)return 0|o;return null}function getCellFromEvent(e){var o,e=$(e.target).closest(".slick-cell",$canvas);return!e.length||(o=getRowFromNode(e[0].parentNode),e=getCellFromNode(e[0]),null==o||null==e)?null:{row:o,cell:e}}function getCellNodeBox(e,o){if(!cellExists(e,o))return null;for(var e=getRowTop(e),t=e+options.rowHeight-1,l=0,n=0;n<o;n++)l+=columns[n].width;return{top:e,left:l,bottom:t,right:l+columns[o].width}}function resetActiveCell(){setActiveCellInternal(null,!1)}function setFocus(){(-1==tabbingDirection?$focusSink:$focusSink2)[0].focus()}function scrollCellIntoView(e,o,t){scrollRowIntoView(e,t);t=getColspan(e,o);internalScrollColumnIntoView(columnPosLeft[o],columnPosRight[o+(1<t?t-1:0)])}function internalScrollColumnIntoView(e,o){var t=scrollLeft+viewportW;e<scrollLeft?($viewport.scrollLeft(e),handleScroll(),render()):t<o&&($viewport.scrollLeft(Math.min(e,o-$viewport[0].clientWidth)),handleScroll(),render())}function scrollColumnIntoView(e){internalScrollColumnIntoView(columnPosLeft[e],columnPosRight[e])}function setActiveCellInternal(e,o,t,l){null!==activeCellNode&&(makeActiveCellNormal(),$(activeCellNode).removeClass("active"),rowsCache[activeRow]&&$(rowsCache[activeRow].rowNode).removeClass("active"));null!=(activeCellNode=e)?(activeRow=getRowFromNode(activeCellNode.parentNode),activeCell=activePosX=getCellFromNode(activeCellNode),null==o&&(o=activeRow==getDataLength()||options.autoEdit),options.showCellSelection&&($(activeCellNode).addClass("active"),$(rowsCache[activeRow].rowNode).addClass("active")),options.editable&&o&&isCellPotentiallyEditable(activeRow,activeCell)&&(clearTimeout(h_editorLoader),options.asyncEditorLoading?h_editorLoader=setTimeout(function(){makeActiveCellEditable(void 0,t)},options.asyncEditorLoadDelay):makeActiveCellEditable(void 0,t))):activeRow=activeCell=null,l||trigger(self.onActiveCellChanged,getActiveCell())}function clearTextSelection(){var e;if(document.selection&&document.selection.empty)try{document.selection.empty()}catch(e){}else!window.getSelection||(e=window.getSelection())&&e.removeAllRanges&&e.removeAllRanges()}function isCellPotentiallyEditable(e,o){var t=getDataLength();return(!(e<t)||getDataItem(e))&&(!(columns[o].cannotTriggerInsert&&t<=e)&&!!getEditor(e,o))}function makeActiveCellNormal(){var e,o;currentEditor&&(trigger(self.onBeforeCellEditorDestroy,{editor:currentEditor}),currentEditor.destroy(),currentEditor=null,activeCellNode&&(e=getDataItem(activeRow),$(activeCellNode).removeClass("editable invalid"),e&&(o=columns[activeCell],applyFormatResultToCellNode(getFormatter(activeRow,o)(activeRow,activeCell,getDataItemValueForColumn(e,o),o,e,self),activeCellNode),invalidatePostProcessingResults(activeRow))),navigator.userAgent.toLowerCase().match(/msie/)&&clearTextSelection(),getEditorLock().deactivate(editController))}function makeActiveCellEditable(e,o){if(activeCellNode){if(!options.editable)throw new Error("Grid : makeActiveCellEditable : should never get called when options.editable is false");var t,l,n;clearTimeout(h_editorLoader),isCellPotentiallyEditable(activeRow,activeCell)&&(t=columns[activeCell],l=getDataItem(activeRow),!1===trigger(self.onBeforeEditCell,{row:activeRow,cell:activeCell,item:l,column:t})?setFocus():(getEditorLock().activate(editController),$(activeCellNode).addClass("editable"),n=e||getEditor(activeRow,activeCell),e||n.suppressClearOnEdit||(activeCellNode.innerHTML=""),currentEditor=new n({grid:self,gridPosition:absBox($container[0]),position:absBox(activeCellNode),container:activeCellNode,column:t,item:l||{},commitChanges:commitEditAndSetFocus,cancelChanges:cancelEditAndSetFocus}),l&&(currentEditor.loadValue(l),o&¤tEditor.preClick&¤tEditor.preClick()),serializedEditorValue=currentEditor.serializeValue(),currentEditor.position&&handleActiveCellPositionChange()))}}function commitEditAndSetFocus(){getEditorLock().commitCurrentEdit()&&(setFocus(),options.autoEdit&&navigateDown())}function cancelEditAndSetFocus(){getEditorLock().cancelCurrentEdit()&&setFocus()}function absBox(e){for(var o={top:e.offsetTop,left:e.offsetLeft,bottom:0,right:0,width:$(e).outerWidth(),height:$(e).outerHeight(),visible:!0},t=(o.bottom=o.top+o.height,o.right=o.left+o.width,e.offsetParent);(e=e.parentNode)!=document.body&&null!=e;)o.visible&&e.scrollHeight!=e.offsetHeight&&"visible"!=$(e).css("overflowY")&&(o.visible=o.bottom>e.scrollTop&&o.top<e.scrollTop+e.clientHeight),o.visible&&e.scrollWidth!=e.offsetWidth&&"visible"!=$(e).css("overflowX")&&(o.visible=o.right>e.scrollLeft&&o.left<e.scrollLeft+e.clientWidth),o.left-=e.scrollLeft,o.top-=e.scrollTop,e===t&&(o.left+=e.offsetLeft,o.top+=e.offsetTop,t=e.offsetParent),o.bottom=o.top+o.height,o.right=o.left+o.width;return o}function getActiveCellPosition(){return absBox(activeCellNode)}function getGridPosition(){return absBox($container[0])}function handleActiveCellPositionChange(){var e;activeCellNode&&(trigger(self.onActiveCellPositionChanged,{}),currentEditor&&(e=getActiveCellPosition(),currentEditor.show&¤tEditor.hide&&(e.visible?currentEditor.show():currentEditor.hide()),currentEditor.position&¤tEditor.position(e)))}function getCellEditor(){return currentEditor}function getActiveCell(){return activeCellNode?{row:activeRow,cell:activeCell}:null}function getActiveCellNode(){return activeCellNode}function scrollRowIntoView(e,o){var t=e*options.rowHeight,l=(e+1)*options.rowHeight-viewportH+(viewportHasHScroll?scrollbarDimensions.height:0);(e+1)*options.rowHeight>scrollTop+viewportH+offset?(scrollTo(o?t:l),render()):e*options.rowHeight<scrollTop+offset&&(scrollTo(o?l:t),render())}function scrollRowToTop(e){scrollTo(e*options.rowHeight),render()}function scrollPage(e){e*=numVisibleRows;if(scrollTo((getRowFromPosition(scrollTop)+e)*options.rowHeight),render(),options.enableCellNavigation&&null!=activeRow){for(var o=activeRow+e,e=getDataLengthIncludingAddNew(),t=((o=e<=o?e-1:o)<0&&(o=0),0),l=null,e=activePosX;t<=activePosX;)canCellBeActive(o,t)&&(l=t),t+=getColspan(o,t);null!==l?(setActiveCellInternal(getCellNode(o,l)),activePosX=e):resetActiveCell()}}function navigatePageDown(){scrollPage(1)}function navigatePageUp(){scrollPage(-1)}function navigateTop(){navigateToRow(0)}function navigateBottom(){navigateToRow(getDataLength()-1)}function navigateToRow(e){var o=getDataLength();if(o&&(e<0?e=0:o<=e&&(e=o-1),scrollCellIntoView(e,0,!0),options.enableCellNavigation&&null!=activeRow)){for(var t=0,l=null,o=activePosX;t<=activePosX;)canCellBeActive(e,t)&&(l=t),t+=getColspan(e,t);null!==l?(setActiveCellInternal(getCellNode(e,l)),activePosX=o):resetActiveCell()}}function getColspan(e,o){var e=data.getItemMetadata&&data.getItemMetadata(e);return e&&e.columns?"*"===(e=(e=e.columns[columns[o].id]||e.columns[o])&&e.colspan)?columns.length-o:e||1:1}function findFirstFocusableCell(e){for(var o=0;o<columns.length;){if(canCellBeActive(e,o))return o;o+=getColspan(e,o)}return null}function findLastFocusableCell(e){for(var o=0,t=null;o<columns.length;)canCellBeActive(e,o)&&(t=o),o+=getColspan(e,o);return t}function gotoRight(e,o,t){if(o>=columns.length)return null;for(;(o+=getColspan(e,o))<columns.length&&!canCellBeActive(e,o););return o<columns.length?{row:e,cell:o,posX:o}:null}function gotoLeft(e,o,t){if(o<=0)return null;var l=findFirstFocusableCell(e);if(null===l||o<=l)return null;for(var n,r={row:e,cell:l,posX:l};;){if(!(n=gotoRight(r.row,r.cell,r.posX)))return null;if(n.cell>=o)return r;r=n}}function gotoDown(e,o,t){for(var l,n=getDataLengthIncludingAddNew();;){if(++e>=n)return null;for(l=o=0;o<=t;)o+=getColspan(e,l=o);if(canCellBeActive(e,l))return{row:e,cell:l,posX:t}}}function gotoUp(e,o,t){for(var l;;){if(--e<0)return null;for(l=o=0;o<=t;)o+=getColspan(e,l=o);if(canCellBeActive(e,l))return{row:e,cell:l,posX:t}}}function gotoNext(e,o,t){if(null==e&&null==o&&canCellBeActive(e=o=t=0,o))return{row:e,cell:o,posX:o};o=gotoRight(e,o,t);if(o)return o;var l,n=getDataLengthIncludingAddNew();for(e===n-1&&e--;++e<n;)if(null!==(l=findFirstFocusableCell(e)))return{row:e,cell:l,posX:l};return null}function gotoPrev(e,o,t){if(null==e&&null==o&&canCellBeActive(e=getDataLengthIncludingAddNew()-1,o=t=columns.length-1))return{row:e,cell:o,posX:o};for(var l,n;!l&&!(l=gotoLeft(e,o,t));){if(--e<0)return null;o=0,null!==(n=findLastFocusableCell(e))&&(l={row:e,cell:n,posX:n})}return l}function gotoRowStart(e,o,t){var l=findFirstFocusableCell(e);return null===l?null:{row:e,cell:l,posX:l}}function gotoRowEnd(e,o,t){var l=findLastFocusableCell(e);return null===l?null:{row:e,cell:l,posX:l}}function navigateRight(){return navigate("right")}function navigateLeft(){return navigate("left")}function navigateDown(){return navigate("down")}function navigateUp(){return navigate("up")}function navigateNext(){return navigate("next")}function navigatePrev(){return navigate("prev")}function navigateRowStart(){return navigate("home")}function navigateRowEnd(){return navigate("end")}function navigate(e){if(!options.enableCellNavigation)return!1;if(!activeCellNode&&"prev"!=e&&"next"!=e)return!1;if(!getEditorLock().commitCurrentEdit())return!0;setFocus();tabbingDirection={up:-1,down:1,left:-1,right:1,prev:-1,next:1,home:-1,end:1}[e];var o,e=(0,{up:gotoUp,down:gotoDown,left:gotoLeft,right:gotoRight,prev:gotoPrev,next:gotoNext,home:gotoRowStart,end:gotoRowEnd}[e])(activeRow,activeCell,activePosX);return e?(o=e.row==getDataLength(),scrollCellIntoView(e.row,e.cell,!o&&options.emulatePagingWhenScrolling),setActiveCellInternal(getCellNode(e.row,e.cell)),activePosX=e.posX,!0):(setActiveCellInternal(getCellNode(activeRow,activeCell)),!1)}function getCellNode(e,o){return rowsCache[e]?(ensureCellNodesInRowsCache(e),rowsCache[e].cellNodesByColumnIdx[o]):null}function setActiveCell(e,o,t,l,n){!initialized||e>getDataLength()||e<0||o>=columns.length||o<0||options.enableCellNavigation&&(scrollCellIntoView(e,o,!1),setActiveCellInternal(getCellNode(e,o),t,l,n))}function canCellBeActive(e,o){return!(!options.enableCellNavigation||e>=getDataLengthIncludingAddNew()||e<0||o>=columns.length||o<0)&&((e=data.getItemMetadata&&data.getItemMetadata(e))&&void 0!==e.focusable?!!e.focusable:(e=e&&e.columns)&&e[columns[o].id]&&void 0!==e[columns[o].id].focusable?!!e[columns[o].id].focusable:e&&e[o]&&void 0!==e[o].focusable?!!e[o].focusable:!!columns[o].focusable)}function canCellBeSelected(e,o){return!(e>=getDataLength()||e<0||o>=columns.length||o<0)&&((e=data.getItemMetadata&&data.getItemMetadata(e))&&void 0!==e.selectable?!!e.selectable:(e=e&&e.columns&&(e.columns[columns[o].id]||e.columns[o]))&&void 0!==e.selectable?!!e.selectable:!!columns[o].selectable)}function gotoCell(e,o,t){initialized&&canCellBeActive(e,o)&&getEditorLock().commitCurrentEdit()&&(scrollCellIntoView(e,o,!1),setActiveCellInternal(getCellNode(e,o),t||e===getDataLength()||options.autoEdit,null,options.editable),currentEditor||setFocus())}function commitCurrentEdit(){var e,o,t=getDataItem(activeRow),l=columns[activeCell];if(currentEditor){if(currentEditor.isValueChanged())return(e=currentEditor.validate()).valid?(activeRow<getDataLength()?(o={row:activeRow,cell:activeCell,editor:currentEditor,serializedValue:currentEditor.serializeValue(),prevSerializedValue:serializedEditorValue,execute:function(){this.editor.applyValue(t,this.serializedValue),updateRow(this.row),trigger(self.onCellChange,{row:this.row,cell:this.cell,item:t})},undo:function(){this.editor.applyValue(t,this.prevSerializedValue),updateRow(this.row),trigger(self.onCellChange,{row:this.row,cell:this.cell,item:t})}},options.editCommandHandler?(makeActiveCellNormal(),options.editCommandHandler(t,l,o)):(o.execute(),makeActiveCellNormal())):(currentEditor.applyValue(o={},currentEditor.serializeValue()),makeActiveCellNormal(),trigger(self.onAddNewRow,{item:o,column:l})),!getEditorLock().isActive()):($(activeCellNode).removeClass("invalid"),$(activeCellNode).width(),$(activeCellNode).addClass("invalid"),trigger(self.onValidationError,{editor:currentEditor,cellNode:activeCellNode,validationResults:e,row:activeRow,cell:activeCell,column:l}),currentEditor.focus(),!1);makeActiveCellNormal()}return!0}function cancelCurrentEdit(){return makeActiveCellNormal(),!0}function rowsToRanges(e){for(var o=[],t=columns.length-1,l=0;l<e.length;l++)o.push(new Slick.Range(e[l],0,e[l],t));return o}function getSelectedRows(){if(selectionModel)return selectedRows;throw new Error("Selection model is not set")}function setSelectedRows(e){if(!selectionModel)throw new Error("Selection model is not set");grid.getEditorLock().isActive()||selectionModel.setSelectedRanges(rowsToRanges(e))}this.debug=function(){var e="",e=(e=(e=(e=(e+="\ncounter_rows_rendered: "+counter_rows_rendered)+("\ncounter_rows_removed: "+counter_rows_removed)+("\nrenderedRows: "+renderedRows))+("\nnumVisibleRows: "+numVisibleRows)+("\nmaxSupportedCssHeight: "+maxSupportedCssHeight))+("\nn(umber of pages): "+n)+("\n(current) page: "+page))+("\npage height (ph): "+ph)+("\nvScrollDir: "+vScrollDir);alert(e)},this.eval=function(expr){return eval(expr)},$.extend(this,{slickGridVersion:"2.3.21",onScroll:new Slick.Event,onSort:new Slick.Event,onHeaderMouseEnter:new Slick.Event,onHeaderMouseLeave:new Slick.Event,onHeaderContextMenu:new Slick.Event,onHeaderClick:new Slick.Event,onHeaderCellRendered:new Slick.Event,onBeforeHeaderCellDestroy:new Slick.Event,onHeaderRowCellRendered:new Slick.Event,onFooterRowCellRendered:new Slick.Event,onBeforeHeaderRowCellDestroy:new Slick.Event,onBeforeFooterRowCellDestroy:new Slick.Event,onMouseEnter:new Slick.Event,onMouseLeave:new Slick.Event,onClick:new Slick.Event,onDblClick:new Slick.Event,onContextMenu:new Slick.Event,onKeyDown:new Slick.Event,onAddNewRow:new Slick.Event,onBeforeAppendCell:new Slick.Event,onValidationError:new Slick.Event,onViewportChanged:new Slick.Event,onColumnsReordered:new Slick.Event,onColumnsResized:new Slick.Event,onCellChange:new Slick.Event,onBeforeEditCell:new Slick.Event,onBeforeCellEditorDestroy:new Slick.Event,onBeforeDestroy:new Slick.Event,onActiveCellChanged:new Slick.Event,onActiveCellPositionChanged:new Slick.Event,onDragInit:new Slick.Event,onDragStart:new Slick.Event,onDrag:new Slick.Event,onDragEnd:new Slick.Event,onSelectedRowsChanged:new Slick.Event,onCellCssStylesChanged:new Slick.Event,onAutosizeColumns:new Slick.Event,registerPlugin:registerPlugin,unregisterPlugin:unregisterPlugin,getColumns:getColumns,setColumns:setColumns,getColumnIndex:getColumnIndex,updateColumnHeader:updateColumnHeader,setSortColumn:setSortColumn,setSortColumns:setSortColumns,getSortColumns:getSortColumns,autosizeColumns:autosizeColumns,getOptions:getOptions,setOptions:setOptions,getData:getData,getDataLength:getDataLength,getDataItem:getDataItem,setData:setData,getSelectionModel:getSelectionModel,setSelectionModel:setSelectionModel,getSelectedRows:getSelectedRows,setSelectedRows:setSelectedRows,getContainerNode:getContainerNode,updatePagingStatusFromView:updatePagingStatusFromView,render:render,invalidate:invalidate,invalidateRow:invalidateRow,invalidateRows:invalidateRows,invalidateAllRows:invalidateAllRows,updateCell:updateCell,updateRow:updateRow,getViewport:getVisibleRange,getRenderedRange:getRenderedRange,resizeCanvas:resizeCanvas,updateRowCount:updateRowCount,scrollRowIntoView:scrollRowIntoView,scrollRowToTop:scrollRowToTop,scrollCellIntoView:scrollCellIntoView,scrollColumnIntoView:scrollColumnIntoView,getCanvasNode:getCanvasNode,getUID:getUID,getHeaderColumnWidthDiff:getHeaderColumnWidthDiff,getScrollbarDimensions:getScrollbarDimensions,getHeadersWidth:getHeadersWidth,getCanvasWidth:getCanvasWidth,focus:setFocus,scrollTo:scrollTo,getCellFromPoint:getCellFromPoint,getCellFromEvent:getCellFromEvent,getActiveCell:getActiveCell,setActiveCell:setActiveCell,getActiveCellNode:getActiveCellNode,getActiveCellPosition:getActiveCellPosition,resetActiveCell:resetActiveCell,editActiveCell:makeActiveCellEditable,getCellEditor:getCellEditor,getCellNode:getCellNode,getCellNodeBox:getCellNodeBox,canCellBeSelected:canCellBeSelected,canCellBeActive:canCellBeActive,navigatePrev:navigatePrev,navigateNext:navigateNext,navigateUp:navigateUp,navigateDown:navigateDown,navigateLeft:navigateLeft,navigateRight:navigateRight,navigatePageUp:navigatePageUp,navigatePageDown:navigatePageDown,navigateTop:navigateTop,navigateBottom:navigateBottom,navigateRowStart:navigateRowStart,navigateRowEnd:navigateRowEnd,gotoCell:gotoCell,getTopPanel:getTopPanel,setTopPanelVisibility:setTopPanelVisibility,getPreHeaderPanel:getPreHeaderPanel,setPreHeaderPanelVisibility:setPreHeaderPanelVisibility,getHeader:getHeader,getHeaderColumn:getHeaderColumn,setHeaderRowVisibility:setHeaderRowVisibility,getHeaderRow:getHeaderRow,getHeaderRowColumn:getHeaderRowColumn,setFooterRowVisibility:setFooterRowVisibility,getFooterRow:getFooterRow,getFooterRowColumn:getFooterRowColumn,getGridPosition:getGridPosition,flashCell:flashCell,addCellCssStyles:addCellCssStyles,setCellCssStyles:setCellCssStyles,removeCellCssStyles:removeCellCssStyles,getCellCssStyles:getCellCssStyles,init:finishInitialization,destroy:destroy,getEditorLock:getEditorLock,getEditController:getEditController}),init()}$.extend(!0,window,{Slick:{Grid:SlickGrid}})}(jQuery);