@serenity-is/sleekgrid
Version:
A modern Data Grid / Spreadsheet component
4 lines (3 loc) • 3.37 kB
JavaScript
var Slick=Slick||{};Slick._=(()=>{var c=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var m=(n,e)=>{for(var t in e)c(n,t,{get:e[t],enumerable:!0})},C=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let l of v(e))!R.call(n,l)&&l!==t&&c(n,l,{get:()=>e[l],enumerable:!(i=f(e,l))||i.enumerable});return n};var b=n=>C(c({},"__esModule",{value:!0}),n);var S={};m(S,{RowSelectionModel:()=>d});var{EventEmitter:u,EventSubscriber:w,CellRange:g}=Slick;function y(n,e){let t,i=[];for(t=n;t<=e;t++)i.push(t);for(t=e;t<n;t++)i.push(t);return i}function p(n){let e=[];for(let t=0;t<n.length;t++)for(let i=n[t].fromRow;i<=n[t].toRow;i++)e.push(i);return e}var a=class a{constructor(e){this.handler=new w;this.onSelectedRangesChanged=new u;this.options=Object.assign({},a.defaults,e)}init(e){this.grid=e,this.handler.subscribe(e.onActiveCellChanged,this.wrapHandler(this.handleActiveCellChange)),this.handler.subscribe(e.onKeyDown,this.wrapHandler(this.handleKeyDown)),this.handler.subscribe(e.onClick,this.wrapHandler(this.handleClick))}destroy(){var e;(e=this.handler)==null||e.unsubscribeAll()}wrapHandler(e){return function(){this.inHandler||(this.inHandler=!0,e.apply(this,arguments),this.inHandler=!1)}.bind(this)}rowsToRanges(e){let t=[],i=this.grid.getColumns().length-1;for(let l=0;l<e.length;l++)t.push(new g(e[l],0,e[l],i));return t}getSelectedRows(){return p(this.ranges)}setSelectedRows(e){this.setSelectedRanges(this.rowsToRanges(e))}setSelectedRanges(e){(!this.ranges||this.ranges.length===0)&&(!e||e.length===0)||(this.ranges=e,this.onSelectedRangesChanged.notify(this.ranges))}getSelectedRanges(){return this.ranges}handleActiveCellChange(e,t){this.options.selectActiveRow&&t.row!=null&&this.setSelectedRanges([new g(t.row,0,t.row,this.grid.getColumns().length-1)])}handleKeyDown(e){let t=this.grid.getActiveCell();if(!(t&&e.shiftKey&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&(e.which==38||e.which==40)))return;let i=this.getSelectedRows();i.sort(function(h,o){return h-o}),i.length||(i=[t.row]);let l=i[0],s=i[i.length-1],r;e.which==40?r=t.row<s||l==s?++s:++l:r=t.row<s?--s:--l,r>=0&&r<this.grid.getDataLength()&&(this.grid.scrollRowIntoView(r),this.ranges=this.rowsToRanges(y(l,s)),this.setSelectedRanges(this.ranges)),e.preventDefault(),e.stopPropagation()}handleClick(e){let t=this.grid.getCellFromEvent(e);if(!t||!this.grid.canCellBeActive(t.row,t.cell)||!this.grid.getOptions().multiSelect||!e.ctrlKey&&!e.shiftKey&&!e.metaKey)return!1;let i=p(this.ranges),l=i.indexOf(t.row);if(l===-1&&(e.ctrlKey||e.metaKey))i.push(t.row),this.grid.setActiveCell(t.row,t.cell);else if(l!==-1&&(e.ctrlKey||e.metaKey))i=i.filter(s=>s!==t.row),this.grid.setActiveCell(t.row,t.cell);else if(i.length&&e.shiftKey){let s=i.pop(),r=Math.min(t.row,s),h=Math.max(t.row,s);i=[];for(let o=r;o<=h;o++)o!==s&&i.push(o);i.push(s),this.grid.setActiveCell(t.row,t.cell)}return this.ranges=this.rowsToRanges(i),this.setSelectedRanges(this.ranges),e.stopImmediatePropagation(),!0}};a.defaults={selectActiveRow:!0};var d=a;return b(S);})();
["Data", "Editors", "Formatters", "Plugins"].forEach(ns => Slick._[ns] && (Slick[ns] = Object.assign(Slick[ns] || {}, Slick._[ns])) && delete Slick._[ns]); Object.assign(Slick, Slick._); delete Slick._;
//# sourceMappingURL=slick.rowselectionmodel.min.js.map