UNPKG

slickgrid

Version:

A lightning fast JavaScript grid/spreadsheet

9 lines 2.68 kB
/** * SlickGrid v3.0.2 * (c) 2009-present Michael Leibman * homepage: http://github.com/mleibman/slickgrid * license: MIT * date: 2022-11-14 * file: ./plugins/slick.cellselectionmodel.js */ !function(h){h.extend(!0,window,{Slick:{CellSelectionModel:function(l){var a,n,o,s=[],t=this;n=void 0===l||void 0===l.cellRangeSelector?new Slick.CellRangeSelector({selectionCss:{border:"2px solid black"}}):l.cellRangeSelector;var c={selectActiveCell:!0};function g(e){for(var l=[],n=0;n<e.length;n++){var o=e[n];a.canCellBeSelected(o.fromRow,o.fromCell)&&a.canCellBeSelected(o.toRow,o.toCell)&&l.push(o)}return l}function u(e,l){var n;(s&&0!==s.length||e&&0!==e.length)&&(n=!function(e,l){var n=e.length!==l.length;if(!n)for(var o=0;o<e.length;o++)if(e[o].fromCell!==l[o].fromCell||e[o].fromRow!==l[o].fromRow||e[o].toCell!==l[o].toCell||e[o].toRow!==l[o].toRow){n=!0;break}return!n}(s,e),s=g(e),n&&(e=new Slick.EventData,Object.defineProperty(e,"detail",{writable:!0,configurable:!0,value:{caller:l||"SlickCellSelectionModel.setSelectedRanges"}}),t.onSelectedRangesChanged.notify(s,e)))}function e(){return s}function i(e,l){if(a.getEditorLock().isActive())return e.stopPropagation(),!1}function r(e,l){a.setActiveCell(l.range.fromRow,l.range.fromCell,!1,!1,!0),u([l.range])}function w(e,l){o.selectActiveCell&&null!=l.row&&null!=l.cell?u([new Slick.Range(l.row,l.cell)]):o.selectActiveCell||u([])}function f(e){var l,n,o,t,c,i=a.getActiveCell(),r=e.ctrlKey||e.metaKey;!i||!e.shiftKey||r||e.altKey||37!=e.which&&39!=e.which&&38!=e.which&&40!=e.which||((r=s.slice()).length||r.push(new Slick.Range(i.row,i.cell)),t=(l=(l=r.pop()).contains(i.row,i.cell)?l:new Slick.Range(i.row,i.cell)).toRow-l.fromRow,c=l.toCell-l.fromCell,n=i.row==l.fromRow?1:-1,o=i.cell==l.fromCell?1:-1,37==e.which?c-=o:39==e.which?c+=o:38==e.which?t-=n:40==e.which&&(t+=n),g([t=new Slick.Range(i.row,i.cell,i.row+n*t,i.cell+o*c)]).length?(r.push(t),i=0<n?t.toRow:t.fromRow,c=0<o?t.toCell:t.fromCell,a.scrollRowIntoView(i),a.scrollCellIntoView(i,c)):r.push(l),u(r),e.preventDefault(),e.stopPropagation())}h.extend(this,{getSelectedRanges:e,setSelectedRanges:u,refreshSelections:function(){u(s)},init:function(e){o=h.extend(!0,{},c,l),(a=e).getCanvasNode(),a.onActiveCellChanged.subscribe(w),a.onKeyDown.subscribe(f),e.registerPlugin(n),n.onCellRangeSelected.subscribe(r),n.onBeforeCellRangeSelected.subscribe(i)},destroy:function(){a.onActiveCellChanged.unsubscribe(w),a.onKeyDown.unsubscribe(f),n.onCellRangeSelected.unsubscribe(r),n.onBeforeCellRangeSelected.unsubscribe(i),a.unregisterPlugin(n),n&&n.destroy&&n.destroy()},pluginName:"CellSelectionModel",onSelectedRangesChanged:new Slick.Event})}}})}(jQuery);