//>>built define("dojox/grid/enhanced/plugins/Selector",["dojo/_base/kernel","dojo/_base/lang","dojo/_base/declare","dojo/_base/array","dojo/_base/event","dojo/keys","dojo/query","dojo/_base/html","dojo/_base/window","dijit/focus","../../_RowSelector","../_Plugin","../../EnhancedGrid","../../cells/_base","./AutoScroll"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,_c,_d){ var _e=0,_f=1,_10=2,_11={col:"row",row:"col"},_12=function(_13,_14,_15,end,_16){ if(_13!=="cell"){ _14=_14[_13]; _15=_15[_13]; end=end[_13]; if(typeof _14!=="number"||typeof _15!=="number"||typeof end!=="number"){ return false; } return _16?((_14>=_15&&_14end&&_14<=_15)):((_14>=_15&&_14<=end)||(_14>=end&&_14<=_15)); }else{ return _12("col",_14,_15,end,_16)&&_12("row",_14,_15,end,_16); } },_17=function(_18,v1,v2){ try{ if(v1&&v2){ switch(_18){ case "col": case "row": return v1[_18]==v2[_18]&&typeof v1[_18]=="number"&&!(_11[_18] in v1)&&!(_11[_18] in v2); case "cell": return v1.col==v2.col&&v1.row==v2.row&&typeof v1.col=="number"&&typeof v1.row=="number"; } } } catch(e){ } return false; },_19=function(evt){ try{ if(evt&&evt.preventDefault){ _5.stop(evt); } } catch(e){ } },_1a=function(_1b,_1c,_1d){ switch(_1b){ case "col": return {"col":typeof _1d=="undefined"?_1c:_1d,"except":[]}; case "row": return {"row":_1c,"except":[]}; case "cell": return {"row":_1c,"col":_1d}; } return null; }; var _1e=_3("dojox.grid.enhanced.plugins.Selector",_c,{name:"selector",constructor:function(_1f,_20){ this.grid=_1f; this._config={row:_10,col:_10,cell:_10}; this.noClear=_20&&_20.noClear; this.setupConfig(_20); if(_1f.selectionMode==="single"){ this._config.row=_f; } this._enabled=true; this._selecting={}; this._selected={"col":[],"row":[],"cell":[]}; this._startPoint={}; this._currentPoint={}; this._lastAnchorPoint={}; this._lastEndPoint={}; this._lastSelectedAnchorPoint={}; this._lastSelectedEndPoint={}; this._keyboardSelect={}; this._lastType=null; this._selectedRowModified={}; this._hacks(); this._initEvents(); this._initAreas(); this._mixinGrid(); },destroy:function(){ this.inherited(arguments); },setupConfig:function(_21){ if(!_21||!_2.isObject(_21)){ return; } var _22=["row","col","cell"]; for(var _23 in _21){ if(_4.indexOf(_22,_23)>=0){ if(!_21[_23]||_21[_23]=="disabled"){ this._config[_23]=_e; }else{ if(_21[_23]=="single"){ this._config[_23]=_f; }else{ this._config[_23]=_10; } } } } var _24=["none","single","extended"][this._config.row]; this.grid.selection.setMode(_24); },isSelected:function(_25,_26,_27){ return this._isSelected(_25,_1a(_25,_26,_27)); },toggleSelect:function(_28,_29,_2a){ this._startSelect(_28,_1a(_28,_29,_2a),this._config[_28]===_10,false,false,!this.isSelected(_28,_29,_2a)); this._endSelect(_28); },select:function(_2b,_2c,_2d){ if(!this.isSelected(_2b,_2c,_2d)){ this.toggleSelect(_2b,_2c,_2d); } },deselect:function(_2e,_2f,_30){ if(this.isSelected(_2e,_2f,_30)){ this.toggleSelect(_2e,_2f,_30); } },selectRange:function(_31,_32,end,_33){ this.grid._selectingRange=true; var _34=_31=="cell"?_1a(_31,_32.row,_32.col):_1a(_31,_32),_35=_31=="cell"?_1a(_31,end.row,end.col):_1a(_31,end); this._startSelect(_31,_34,false,false,false,_33); this._highlight(_31,_35,_33===undefined?true:_33); this._endSelect(_31); this.grid._selectingRange=false; },clear:function(_36){ this._clearSelection(_36||"all"); },isSelecting:function(_37){ if(typeof _37=="undefined"){ return this._selecting.col||this._selecting.row||this._selecting.cell; } return this._selecting[_37]; },selectEnabled:function(_38){ if(typeof _38!="undefined"&&!this.isSelecting()){ this._enabled=!!_38; } return this._enabled; },getSelected:function(_39,_3a){ switch(_39){ case "cell": return _4.map(this._selected[_39],function(_3b){ return _3b; }); case "col": case "row": return _4.map(_3a?this._selected[_39]:_4.filter(this._selected[_39],function(_3c){ return _3c.except.length===0; }),function(_3d){ return _3a?_3d:_3d[_39]; }); } return []; },getSelectedCount:function(_3e,_3f){ switch(_3e){ case "cell": return this._selected[_3e].length; case "col": case "row": return (_3f?this._selected[_3e]:_4.filter(this._selected[_3e],function(_40){ return _40.except.length===0; })).length; } return 0; },getSelectedType:function(){ var s=this._selected; return ["","cell","row","row|cell","col","col|cell","col|row","col|row|cell"][(!!s.cell.length)|(!!s.row.length<<1)|(!!s.col.length<<2)]; },getLastSelectedRange:function(_41){ return this._lastAnchorPoint[_41]?{"start":this._lastAnchorPoint[_41],"end":this._lastEndPoint[_41]}:null; },_hacks:function(){ var g=this.grid; var _42=function(e){ if(e.cellNode){ g.onMouseUp(e); } g.onMouseUpRow(e); }; var _43=_2.hitch(g,"onMouseUp"); var _44=_2.hitch(g,"onMouseDown"); var _45=function(e){ e.cellNode.style.border="solid 1px"; }; _4.forEach(g.views.views,function(_46){ _46.content.domouseup=_42; _46.header.domouseup=_43; if(_46.declaredClass=="dojox.grid._RowSelector"){ _46.domousedown=_44; _46.domouseup=_43; _46.dofocus=_45; } }); g.selection.clickSelect=function(){ }; this._oldDeselectAll=g.selection.deselectAll; var _47=this; g.selection.selectRange=function(_48,to){ _47.selectRange("row",_48,to,true); if(g.selection.preserver){ g.selection.preserver._updateMapping(true,true,false,_48,to); } g.selection.onChanged(); }; g.selection.deselectRange=function(_49,to){ _47.selectRange("row",_49,to,false); if(g.selection.preserver){ g.selection.preserver._updateMapping(true,false,false,_49,to); } g.selection.onChanged(); }; g.selection.deselectAll=function(){ g._selectingRange=true; _47._oldDeselectAll.apply(g.selection,arguments); _47._clearSelection("all"); g._selectingRange=false; if(g.selection.preserver){ g.selection.preserver._updateMapping(true,false,true); } g.selection.onChanged(); }; var _4a=g.views.views[0]; if(_4a instanceof _b){ _4a.doStyleRowNode=function(_4b,_4c){ _8.removeClass(_4c,"dojoxGridRow"); _8.addClass(_4c,"dojoxGridRowbar"); _8.addClass(_4c,"dojoxGridNonNormalizedCell"); _8.toggleClass(_4c,"dojoxGridRowbarOver",g.rows.isOver(_4b)); _8.toggleClass(_4c,"dojoxGridRowbarSelected",!!g.selection.isSelected(_4b)); }; } this.connect(g,"updateRow",function(_4d){ _4.forEach(g.layout.cells,function(_4e){ if(this.isSelected("cell",_4d,_4e.index)){ this._highlightNode(_4e.getNode(_4d),true); } },this); }); },_mixinGrid:function(){ var g=this.grid; g.setupSelectorConfig=_2.hitch(this,this.setupConfig); g.onStartSelect=function(){ }; g.onEndSelect=function(){ }; g.onStartDeselect=function(){ }; g.onEndDeselect=function(){ }; g.onSelectCleared=function(){ }; },_initEvents:function(){ var g=this.grid,_4f=this,dp=_2.partial,_50=function(_51,e){ if(_51==="row"){ _4f._isUsingRowSelector=true; } if(_4f.selectEnabled()&&_4f._config[_51]&&e.button!=2){ if(_4f._keyboardSelect.col||_4f._keyboardSelect.row||_4f._keyboardSelect.cell){ _4f._endSelect("all"); _4f._keyboardSelect.col=_4f._keyboardSelect.row=_4f._keyboardSelect.cell=0; } if(_4f._usingKeyboard){ _4f._usingKeyboard=false; } var _52=_1a(_51,e.rowIndex,e.cell&&e.cell.index); _4f._startSelect(_51,_52,e.ctrlKey,e.shiftKey); } },_53=_2.hitch(this,"_endSelect"); this.connect(g,"onHeaderCellMouseDown",dp(_50,"col")); this.connect(g,"onHeaderCellMouseUp",dp(_53,"col")); this.connect(g,"onRowSelectorMouseDown",dp(_50,"row")); this.connect(g,"onRowSelectorMouseUp",dp(_53,"row")); this.connect(g,"onCellMouseDown",function(e){ if(e.cell&&e.cell.isRowSelector){ return; } if(g.singleClickEdit){ _4f._singleClickEdit=true; g.singleClickEdit=false; } _50(_4f._config["cell"]==_e?"row":"cell",e); }); this.connect(g,"onCellMouseUp",function(e){ if(_4f._singleClickEdit){ delete _4f._singleClickEdit; g.singleClickEdit=true; } _53("all",e); }); this.connect(g,"onCellMouseOver",function(e){ if(_4f._curType!="row"&&_4f._selecting[_4f._curType]&&_4f._config[_4f._curType]==_10){ _4f._highlight("col",_1a("col",e.cell.index),_4f._toSelect); if(!_4f._keyboardSelect.cell){ _4f._highlight("cell",_1a("cell",e.rowIndex,e.cell.index),_4f._toSelect); } } }); this.connect(g,"onHeaderCellMouseOver",function(e){ if(_4f._selecting.col&&_4f._config.col==_10){ _4f._highlight("col",_1a("col",e.cell.index),_4f._toSelect); } }); this.connect(g,"onRowMouseOver",function(e){ if(_4f._selecting.row&&_4f._config.row==_10){ _4f._highlight("row",_1a("row",e.rowIndex),_4f._toSelect); } }); this.connect(g,"onSelectedById","_onSelectedById"); this.connect(g,"_onFetchComplete",function(){ if(!g._notRefreshSelection){ this._refreshSelected(true); } }); this.connect(g.scroller,"buildPage",function(){ if(!g._notRefreshSelection){ this._refreshSelected(true); } }); this.connect(_9.doc,"onmouseup",dp(_53,"all")); this.connect(g,"onEndAutoScroll",function(_54,_55,_56,_57){ var _58=_4f._selecting.cell,_59,_5a,dir=_55?1:-1; if(_54&&(_58||_4f._selecting.row)){ _59=_58?"cell":"row"; _5a=_4f._currentPoint[_59]; _4f._highlight(_59,_1a(_59,_5a.row+dir,_5a.col),_4f._toSelect); }else{ if(!_54&&(_58||_4f._selecting.col)){ _59=_58?"cell":"col"; _5a=_4f._currentPoint[_59]; _4f._highlight(_59,_1a(_59,_5a.row,_57),_4f._toSelect); } } }); this.subscribe("dojox/grid/rearrange/move/"+g.id,"_onInternalRearrange"); this.subscribe("dojox/grid/rearrange/copy/"+g.id,"_onInternalRearrange"); this.subscribe("dojox/grid/rearrange/change/"+g.id,"_onExternalChange"); this.subscribe("dojox/grid/rearrange/insert/"+g.id,"_onExternalChange"); this.subscribe("dojox/grid/rearrange/remove/"+g.id,"clear"); this.connect(g,"onSelected",function(_5b){ if(this._selectedRowModified&&this._isUsingRowSelector){ delete this._selectedRowModified; }else{ if(!this.grid._selectingRange){ this.select("row",_5b); } } }); this.connect(g,"onDeselected",function(_5c){ if(this._selectedRowModified&&this._isUsingRowSelector){ delete this._selectedRowModified; }else{ if(!this.grid._selectingRange){ this.deselect("row",_5c); } } }); },_onSelectedById:function(id,_5d,_5e){ if(this.grid._noInternalMapping){ return; } var _5f=[this._lastAnchorPoint.row,this._lastEndPoint.row,this._lastSelectedAnchorPoint.row,this._lastSelectedEndPoint.row]; _5f=_5f.concat(this._selected.row); var _60=false; _4.forEach(_5f,function(_61){ if(_61){ if(_61.id===id){ _60=true; _61.row=_5d; }else{ if(_61.row===_5d&&_61.id){ _61.row=-1; } } } }); if(!_60&&_5e){ _4.some(this._selected.row,function(_62){ if(_62&&!_62.id&&!_62.except.length){ _62.id=id; _62.row=_5d; return true; } return false; }); } _60=false; _5f=[this._lastAnchorPoint.cell,this._lastEndPoint.cell,this._lastSelectedAnchorPoint.cell,this._lastSelectedEndPoint.cell]; _5f=_5f.concat(this._selected.cell); _4.forEach(_5f,function(_63){ if(_63){ if(_63.id===id){ _60=true; _63.row=_5d; }else{ if(_63.row===_5d&&_63.id){ _63.row=-1; } } } }); },onSetStore:function(){ this._clearSelection("all"); },_onInternalRearrange:function(_64,_65){ try{ this._refresh("col",false); _4.forEach(this._selected.row,function(_66){ _4.forEach(this.grid.layout.cells,function(_67){ this._highlightNode(_67.getNode(_66.row),false); },this); },this); _7(".dojoxGridRowSelectorSelected").forEach(function(_68){ _8.removeClass(_68,"dojoxGridRowSelectorSelected"); _8.removeClass(_68,"dojoxGridRowSelectorSelectedUp"); _8.removeClass(_68,"dojoxGridRowSelectorSelectedDown"); }); var _69=function(_6a){ if(_6a){ delete _6a.converted; } },_6b=[this._lastAnchorPoint[_64],this._lastEndPoint[_64],this._lastSelectedAnchorPoint[_64],this._lastSelectedEndPoint[_64]]; if(_64==="cell"){ this.selectRange("cell",_65.to.min,_65.to.max); var _6c=this.grid.layout.cells; _4.forEach(_6b,function(_6d){ if(_6d.converted){ return; } for(var r=_65.from.min.row,tr=_65.to.min.row;r<=_65.from.max.row;++r,++tr){ for(var c=_65.from.min.col,tc=_65.to.min.col;c<=_65.from.max.col;++c,++tc){ while(_6c[c].hidden){ ++c; } while(_6c[tc].hidden){ ++tc; } if(_6d.row==r&&_6d.col==c){ _6d.row=tr; _6d.col=tc; _6d.converted=true; return; } } } }); }else{ _6b=this._selected.cell.concat(this._selected[_64]).concat(_6b).concat([this._lastAnchorPoint.cell,this._lastEndPoint.cell,this._lastSelectedAnchorPoint.cell,this._lastSelectedEndPoint.cell]); _4.forEach(_6b,function(_6e){ if(_6e&&!_6e.converted){ var _6f=_6e[_64]; if(_6f in _65){ _6e[_64]=_65[_6f]; } _6e.converted=true; } }); _4.forEach(this._selected[_11[_64]],function(_70){ for(var i=0,len=_70.except.length;i=0){ _78._lastFocusedRowBarIdx=evt.rowIndex; }else{ if(!_78._lastFocusedRowBarIdx){ _78._lastFocusedRowBarIdx=0; } } } _8b=_8a.getCellNode(_78._lastFocusedRowBarIdx,0); if(_8b){ _a.focus(_8b); _8.toggleClass(_8b,f.focusClass,true); } f.rowIndex=_78._lastFocusedRowBarIdx; _19(evt); return true; } return false; },onBlur:function(evt,_8c){ var _8d=g.views.views[0]; if(_8d instanceof _b){ var _8e=_8d.getCellNode(_78._lastFocusedRowBarIdx,0); if(_8e){ _8.toggleClass(_8e,f.focusClass,false); } _19(evt); } return true; },onMove:function(_8f,_90,evt){ var _91=g.views.views[0]; if(_8f&&_91 instanceof _b){ var _92=_78._lastFocusedRowBarIdx+_8f; if(_92>=0&&_92_94){ g.setScrollTop(g.scrollTop+sc.findScrollTop(row)-sc.findScrollTop(_78._lastFocusedRowBarIdx)); } _93=_91.getCellNode(_92,0); _a.focus(_93); _8.toggleClass(_93,f.focusClass,true); _78._lastFocusedRowBarIdx=_92; f.cell=_93; f.cell.view=_91; f.cell.getNode=function(_95){ return f.cell; }; f.rowIndex=_78._lastFocusedRowBarIdx; f.scrollIntoView(); f.cell=null; } } }}); f.placeArea("rowHeader","before","content"); } f.addArea({name:"cellselect",onMove:_2.partial(_7b,"cell",function(_96,_97,_98,evt){ var _99=_78._currentPoint[_96]; return _1a("cell",_99.row+_97,_99.col+_98); }),onKeyDown:_2.partial(_82,"cell",function(){ return _1a("cell",f.rowIndex,f.cell.index); }),onKeyUp:_2.partial(_86,"cell")}); f.placeArea("cellselect","below","content"); f.addArea({name:"colselect",onMove:_2.partial(_7b,"col",function(_9a,_9b,_9c,evt){ var _9d=_78._currentPoint[_9a]; return _1a("col",_9d.col+_9c); }),onKeyDown:_2.partial(_82,"col",function(){ return _1a("col",f.getHeaderIndex()); }),onKeyUp:_2.partial(_86,"col")}); f.placeArea("colselect","below","header"); f.addArea({name:"rowselect",onMove:_2.partial(_7b,"row",function(_9e,_9f,_a0,evt){ return _1a("row",f.rowIndex); }),onKeyDown:_2.partial(_82,"row",function(){ return _1a("row",f.rowIndex); }),onKeyUp:_2.partial(_86,"row")}); f.placeArea("rowselect","below","rowHeader"); },_clearSelection:function(_a1,_a2){ if(_a1=="all"){ this._clearSelection("cell",_a2); this._clearSelection("col",_a2); this._clearSelection("row",_a2); return; } this._isUsingRowSelector=true; _4.forEach(this._selected[_a1],function(_a3){ if(!_17(_a1,_a2,_a3)){ this._highlightSingle(_a1,false,_a3); } },this); this._blurPoint(_a1,this._currentPoint); this._selecting[_a1]=false; this._startPoint[_a1]=this._currentPoint[_a1]=null; this._selected[_a1]=[]; if(_a1=="row"&&!this.grid._selectingRange){ this._oldDeselectAll.call(this.grid.selection); this.grid.selection._selectedById={}; } this.grid.onEndDeselect(_a1,null,null,this._selected); this.grid.onSelectCleared(_a1); },_startSelect:function(_a4,_a5,_a6,_a7,_a8,_a9){ if(!this._isValid(_a4,_a5)){ return; } var _aa=this._isSelected(_a4,this._lastEndPoint[_a4]),_ab=this._isSelected(_a4,_a5); if(this.noClear&&!_a6){ this._toSelect=_a9===undefined?true:_a9; }else{ this._toSelect=_a8?_ab:!_ab; } if(!_a6||(!_ab&&this._config[_a4]==_f)){ this._clearSelection("col",_a5); this._clearSelection("cell",_a5); if(!this.noClear||(_a4==="row"&&this._config[_a4]==_f)){ this._clearSelection("row",_a5); } this._toSelect=_a9===undefined?true:_a9; } this._selecting[_a4]=true; this._currentPoint[_a4]=null; if(_a7&&this._lastType==_a4&&_aa==this._toSelect&&this._config[_a4]==_10){ if(_a4==="row"){ this._isUsingRowSelector=true; } this._startPoint[_a4]=this._lastEndPoint[_a4]; this._highlight(_a4,this._startPoint[_a4]); this._isUsingRowSelector=false; }else{ this._startPoint[_a4]=_a5; } this._curType=_a4; this._fireEvent("start",_a4); this._isStartFocus=true; this._isUsingRowSelector=true; this._highlight(_a4,_a5,this._toSelect); this._isStartFocus=false; },_endSelect:function(_ac){ if(_ac==="row"){ delete this._isUsingRowSelector; } if(_ac=="all"){ this._endSelect("col"); this._endSelect("row"); this._endSelect("cell"); }else{ if(this._selecting[_ac]){ this._addToSelected(_ac); this._lastAnchorPoint[_ac]=this._startPoint[_ac]; this._lastEndPoint[_ac]=this._currentPoint[_ac]; if(this._toSelect){ this._lastSelectedAnchorPoint[_ac]=this._lastAnchorPoint[_ac]; this._lastSelectedEndPoint[_ac]=this._lastEndPoint[_ac]; } this._startPoint[_ac]=this._currentPoint[_ac]=null; this._selecting[_ac]=false; this._lastType=_ac; this._fireEvent("end",_ac); } } },_fireEvent:function(_ad,_ae){ switch(_ad){ case "start": this.grid[this._toSelect?"onStartSelect":"onStartDeselect"](_ae,this._startPoint[_ae],this._selected); break; case "end": this.grid[this._toSelect?"onEndSelect":"onEndDeselect"](_ae,this._lastAnchorPoint[_ae],this._lastEndPoint[_ae],this._selected); break; } },_calcToHighlight:function(_af,_b0,_b1,_b2){ if(_b2!==undefined){ var _b3; if(this._usingKeyboard&&!_b1){ var _b4=this._isInLastRange(this._lastType,_b0); if(_b4){ _b3=this._isSelected(_af,_b0); if(_b2&&_b3){ return false; } if(!_b2&&!_b3&&this._isInLastRange(this._lastType,_b0,true)){ return true; } } } return _b1?_b2:(_b3||this._isSelected(_af,_b0)); } return _b1; },_highlightNode:function(_b5,_b6){ if(_b5){ var _b7="dojoxGridRowSelected"; var _b8="dojoxGridCellSelected"; _8.toggleClass(_b5,_b7,_b6); _8.toggleClass(_b5,_b8,_b6); } },_highlightHeader:function(_b9,_ba){ var _bb=this.grid.layout.cells; var _bc=_bb[_b9].getHeaderNode(); var _bd="dojoxGridHeaderSelected"; _8.toggleClass(_bc,_bd,_ba); },_highlightRowSelector:function(_be,_bf){ var _c0=this.grid.views.views[0]; if(_c0 instanceof _b){ var _c1=_c0.getRowNode(_be); if(_c1){ var _c2="dojoxGridRowSelectorSelected"; _8.toggleClass(_c1,_c2,_bf); } } },_highlightSingle:function(_c3,_c4,_c5,_c6,_c7){ var _c8=this,_c9,g=_c8.grid,_ca=g.layout.cells; switch(_c3){ case "cell": _c9=this._calcToHighlight(_c3,_c5,_c4,_c6); var c=_ca[_c5.col]; if(!c.hidden&&!c.notselectable){ this._highlightNode(_c5.node||c.getNode(_c5.row),_c9); } break; case "col": _c9=this._calcToHighlight(_c3,_c5,_c4,_c6); this._highlightHeader(_c5.col,_c9); _7("td[idx='"+_c5.col+"']",g.domNode).forEach(function(_cb){ var _cc=_ca[_c5.col].view.content.findRowTarget(_cb); if(_cc){ var _cd=_cc[dojox.grid.util.rowIndexTag]; _c8._highlightSingle("cell",_c9,{"row":_cd,"col":_c5.col,"node":_cb}); } }); break; case "row": _c9=this._calcToHighlight(_c3,_c5,_c4,_c6); this._highlightRowSelector(_c5.row,_c9); if(this._config.cell){ _4.forEach(_ca,function(_ce){ _c8._highlightSingle("cell",_c9,{"row":_c5.row,"col":_ce.index,"node":_ce.getNode(_c5.row)}); }); } this._selectedRowModified=true; if(!_c7){ g.selection.setSelected(_c5.row,_c9); } } },_highlight:function(_cf,_d0,_d1){ if(this._selecting[_cf]&&_d0!==null){ var _d2=this._startPoint[_cf],_d3=this._currentPoint[_cf],_d4=this,_d5=function(_d6,to,_d7){ _d4._forEach(_cf,_d6,to,function(_d8){ _d4._highlightSingle(_cf,_d7,_d8,_d1); },true); }; switch(_cf){ case "col": case "row": if(_d3!==null){ if(_12(_cf,_d0,_d2,_d3,true)){ _d5(_d3,_d0,false); }else{ if(_12(_cf,_d2,_d0,_d3,true)){ _d5(_d3,_d2,false); _d3=_d2; } _d5(_d0,_d3,true); } }else{ this._highlightSingle(_cf,true,_d0,_d1); } break; case "cell": if(_d3!==null){ if(_12("row",_d0,_d2,_d3,true)||_12("col",_d0,_d2,_d3,true)||_12("row",_d2,_d0,_d3,true)||_12("col",_d2,_d0,_d3,true)){ _d5(_d2,_d3,false); } } _d5(_d2,_d0,true); } this._currentPoint[_cf]=_d0; this._focusPoint(_cf,this._currentPoint); } },_focusPoint:function(_d9,_da){ if(!this._isStartFocus){ var _db=_da[_d9],f=this.grid.focus; if(_d9=="col"){ f._colHeadFocusIdx=_db.col; f.focusArea("header"); }else{ if(_d9=="row"){ f.focusArea("rowHeader",{"rowIndex":_db.row}); }else{ if(_d9=="cell"){ f.setFocusIndex(_db.row,_db.col); } } } } },_blurPoint:function(_dc,_dd){ var f=this.grid.focus; if(_dc=="col"){ f._blurHeader(); }else{ if(_dc=="cell"){ f._blurContent(); } } },_addToSelected:function(_de){ var _df=this._toSelect,_e0=this,_e1=[],_e2=[],_e3=this._startPoint[_de],end=this._currentPoint[_de]; if(this._usingKeyboard){ this._forEach(_de,this._lastAnchorPoint[_de],this._lastEndPoint[_de],function(_e4){ if(!_12(_de,_e4,_e3,end)){ (_df?_e2:_e1).push(_e4); } }); } this._forEach(_de,_e3,end,function(_e5){ var _e6=_e0._isSelected(_de,_e5); if(_df&&!_e6){ _e1.push(_e5); }else{ if(!_df){ _e2.push(_e5); } } }); this._add(_de,_e1); this._remove(_de,_e2); _4.forEach(this._selected.row,function(_e7){ if(_e7.except.length>0){ this._selectedRowModified=true; this.grid.selection.setSelected(_e7.row,false); } },this); },_forEach:function(_e8,_e9,end,_ea,_eb){ if(!this._isValid(_e8,_e9,true)||!this._isValid(_e8,end,true)){ return; } switch(_e8){ case "col": case "row": _e9=_e9[_e8]; end=end[_e8]; var dir=end>_e9?1:-1; if(!_eb){ end+=dir; } for(;_e9!=end;_e9+=dir){ _ea(_1a(_e8,_e9)); } break; case "cell": var _ec=end.col>_e9.col?1:-1,_ed=end.row>_e9.row?1:-1; for(var i=_e9.row,p=end.row+_ed;i!=p;i+=_ed){ for(var j=_e9.col,q=end.col+_ec;j!=q;j+=_ec){ _ea(_1a(_e8,i,j)); } } } },_makeupForExceptions:function(_ee,_ef){ var _f0=[]; _4.forEach(this._selected[_ee],function(v1){ _4.forEach(_ef,function(v2){ if(v1[_ee]==v2[_ee]){ var pos=_4.indexOf(v1.except,v2[_11[_ee]]); if(pos>=0){ v1.except.splice(pos,1); } _f0.push(v2); } }); }); return _f0; },_makeupForCells:function(_f1,_f2){ var _f3=[]; _4.forEach(this._selected.cell,function(v1){ _4.some(_f2,function(v2){ if(v1[_f1]==v2[_f1]){ _f3.push(v1); return true; } return false; }); }); this._remove("cell",_f3); _4.forEach(this._selected[_11[_f1]],function(v1){ _4.forEach(_f2,function(v2){ var pos=_4.indexOf(v1.except,v2[_f1]); if(pos>=0){ v1.except.splice(pos,1); } }); }); },_addException:function(_f4,_f5){ _4.forEach(this._selected[_f4],function(v1){ _4.forEach(_f5,function(v2){ v1.except.push(v2[_11[_f4]]); }); }); },_addCellException:function(_f6,_f7){ _4.forEach(this._selected[_f6],function(v1){ _4.forEach(_f7,function(v2){ if(v1[_f6]==v2[_f6]){ v1.except.push(v2[_11[_f6]]); } }); }); },_add:function(_f8,_f9){ var _fa=this.grid.layout.cells; if(_f8=="cell"){ var _fb=this._makeupForExceptions("col",_f9); var _fc=this._makeupForExceptions("row",_f9); _f9=_4.filter(_f9,function(_fd){ return _4.indexOf(_fb,_fd)<0&&_4.indexOf(_fc,_fd)<0&&!_fa[_fd.col].hidden&&!_fa[_fd.col].notselectable; }); }else{ if(_f8=="col"){ _f9=_4.filter(_f9,function(_fe){ return !_fa[_fe.col].hidden&&!_fa[_fe.col].notselectable; }); } this._makeupForCells(_f8,_f9); this._selected[_f8]=_4.filter(this._selected[_f8],function(v){ return _4.every(_f9,function(_ff){ return v[_f8]!==_ff[_f8]; }); }); } if(_f8!="col"&&this.grid._hasIdentity){ _4.forEach(_f9,function(item){ var _100=this.grid._by_idx[item.row]; if(_100){ item.id=_100.idty; } },this); } this._selected[_f8]=this._selected[_f8].concat(_f9); },_remove:function(type,_101){ var comp=_2.partial(_17,type); this._selected[type]=_4.filter(this._selected[type],function(v1){ return !_4.some(_101,function(v2){ return comp(v1,v2); }); }); if(type=="cell"){ this._addCellException("col",_101); this._addCellException("row",_101); }else{ if(this._config.cell){ this._addException(_11[type],_101); } } },_isCellNotInExcept:function(type,item){ var attr=item[type],_102=item[_11[type]]; return _4.some(this._selected[type],function(v){ return v[type]==attr&&_4.indexOf(v.except,_102)<0; }); },_isSelected:function(type,item){ if(!item){ return false; } var res=_4.some(this._selected[type],function(v){ var ret=_17(type,item,v); if(ret&&type!=="cell"){ return v.except.length===0; } return ret; }); if(!res&&type==="cell"){ res=(this._isCellNotInExcept("col",item)||this._isCellNotInExcept("row",item)); if(type==="cell"){ res=res&&!this.grid.layout.cells[item.col].notselectable; } } return res; },_isInLastRange:function(type,item,_103){ var _104=this[_103?"_lastSelectedAnchorPoint":"_lastAnchorPoint"][type],end=this[_103?"_lastSelectedEndPoint":"_lastEndPoint"][type]; if(!item||!_104||!end){ return false; } return _12(type,item,_104,end); },_isValid:function(type,item,_105){ if(!item){ return false; } try{ var g=this.grid,_106=item[type]; switch(type){ case "col": return _106>=0&&_106=0&&_106=0&&item.col=0&&item.row