UNPKG

slickgrid

Version:

A lightning fast JavaScript grid/spreadsheet

9 lines 5.61 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.cellexternalcopymanager-old.js */ !function(I){I.extend(!0,window,{Slick:{CellExternalCopyManager:function(e){var g,p,y=this,w=e||{},i=w.copiedCellStyleLayerKey||"copy-manager",r=w.copiedCellStyle||"copied",s=0,v=w.bodyElement||document.body,S=w.onCopyInit||null,D=w.onCopySuccess||null,R={C:67,V:86,ESC:27,INSERT:45};function x(e,t,o){if(w.dataItemColumnValueSetter)return w.dataItemColumnValueSetter(e,t,o);var l;t.editor?(l={container:I("body"),column:t,position:{top:0,left:0},grid:g},(l=new t.editor(l)).loadValue(e),l.applyValue(e,o),l.destroy()):e[t.field]=o}function E(e){var t=document.createElement("textarea");return t.style.position="absolute",t.style.left="-1000px",t.style.top=document.body.scrollTop+"px",t.value=e,v.appendChild(t),t.select(),t}function t(e,t){var o;if(!g.getEditorLock().isActive()||g.getOptions().autoEdit){if(e.which==R.ESC&&p&&(e.preventDefault(),b(),y.onCopyCancelled.notify({ranges:p}),p=null),(e.which===R.C||e.which===R.INSERT)&&(e.ctrlKey||e.metaKey)&&!e.shiftKey&&(S&&S.call(),0!==(o=g.getSelectionModel().getSelectedRanges()).length)){V(p=o),y.onCopyCells.notify({ranges:o});for(var l,f,n,a=g.getColumns(),i="",r=0;r<o.length;r++){for(var s=o[r],c=[],u=s.fromRow;u<s.toRow+1;u++){var d=[],h=g.getDataItem(u);if(""===c&&w.includeHeaderWhenCopying){for(var C=[],m=s.fromCell;m<s.toCell+1;m++)0<a[m].name.length&&C.push(a[m].name);c.push(C.join("\t"))}for(m=s.fromCell;m<s.toCell+1;m++)d.push(function(e,t){if(w.dataItemColumnValueExtractor){var o=w.dataItemColumnValueExtractor(e,t);if(o)return o}var l,o="";return t.editor?(l={container:I("<p>"),column:t,position:{top:0,left:0},grid:g},(l=new t.editor(l)).loadValue(e),o=l.serializeValue(),l.destroy()):o=e[t.field],o}(h,a[m]));c.push(d.join("\t"))}i+=c.join("\r\n")+"\r\n"}return window.clipboardData?(window.clipboardData.setData("Text",i),!0):(l=document.activeElement,(f=E(i)).focus(),setTimeout(function(){v.removeChild(f),l?l.focus():console.log("Not element to restore focus to after copy?")},100),D&&(n=0,n=1===o.length?o[0].toRow+1-o[0].fromRow:o.length,D.call(this,n)),!1)}if(!w.readOnlyMode&&(e.which===R.V&&(e.ctrlKey||e.metaKey)&&!e.shiftKey||e.which===R.INSERT&&e.shiftKey&&!e.ctrlKey))return f=E(""),setTimeout(function(){var r=g,e=f,s=r.getColumns(),t=e.value.split(/[\n\f\r]/),i=(""===t[t.length-1]&&t.pop(),[]),o=0;v.removeChild(e);for(var l=0;l<t.length;l++)""!==t[l]?i[o++]=t[l].split("\t"):i[l]=[""];var e=r.getActiveCell(),n=(n=r.getSelectionModel().getSelectedRanges())&&n.length?n[0]:null,c=null,u=null;if(n)c=n.fromRow,u=n.fromCell;else{if(!e)return;c=e.row,u=e.cell}var d=!1,a=i.length,e=i.length?i[0].length:0,h=(1==i.length&&1==i[0].length&&n&&(d=!0,a=n.toRow-n.fromRow+1,e=n.toCell-n.fromCell+1),r.getData().length-c),C=0;if(h<a&&w.newRowCreator){for(var m=r.getData(),C=1;C<=a-h;C++)m.push({});r.setData(m),r.render()}n=c+a>r.getDataLength(),w.newRowCreator&&n&&(n=c+a-r.getDataLength(),w.newRowCreator(n)),n={isClipboardCommand:!0,clippedRange:i,oldValues:[],cellExternalCopyManager:y,_options:w,setDataItemValueForColumn:x,markCopySelection:V,oneCellToMultiple:d,activeRow:c,activeCell:u,destH:a,destW:e,maxDestY:r.getDataLength(),maxDestX:r.getColumns().length,h:0,w:0,execute:function(){for(var e=this.h=0;e<this.destH;e++){this.oldValues[e]=[],this.w=0,this.h++;for(var t=0;t<this.destW;t++){this.w++;var o,l=c+e,n=u+t;l<this.maxDestY&&n<this.maxDestX&&(r.getCellNode(l,n),o=r.getDataItem(l),this.oldValues[e][t]=o[s[n].field],d?this.setDataItemValueForColumn(o,s[n],i[0][0]):this.setDataItemValueForColumn(o,s[n],i[e]?i[e][t]:""),r.updateCell(l,n),r.onCellChange.notify({row:l,cell:n,item:o,grid:r}))}}var a={fromCell:u,fromRow:c,toCell:u+this.w-1,toRow:c+this.h-1};this.markCopySelection([a]),r.getSelectionModel().setSelectedRanges([a]),this.cellExternalCopyManager.onPasteCells.notify({ranges:[a]})},undo:function(){for(var e=0;e<this.destH;e++)for(var t=0;t<this.destW;t++){var o,l=c+e,n=u+t;l<this.maxDestY&&n<this.maxDestX&&(r.getCellNode(l,n),o=r.getDataItem(l),d?this.setDataItemValueForColumn(o,s[n],this.oldValues[0][0]):this.setDataItemValueForColumn(o,s[n],this.oldValues[e][t]),r.updateCell(l,n),r.onCellChange.notify({row:l,cell:n,item:o,grid:r}))}var a={fromCell:u,fromRow:c,toCell:u+this.w-1,toRow:c+this.h-1};if(this.markCopySelection([a]),r.getSelectionModel().setSelectedRanges([a]),this.cellExternalCopyManager.onPasteCells.notify({ranges:[a]}),1<C){for(var i=r.getData();1<C;C--)i.splice(i.length-1,1);r.setData(i),r.render()}}},w.clipboardCommandHandler?w.clipboardCommandHandler(n):n.execute()},100),!1}}function V(e){b();for(var t=g.getColumns(),o={},l=0;l<e.length;l++)for(var n=e[l].fromRow;n<=e[l].toRow;n++){o[n]={};for(var a=e[l].fromCell;a<=e[l].toCell&&a<t.length;a++)o[n][t[a].id]=r}g.setCellCssStyles(i,o),clearTimeout(s),s=setTimeout(function(){y.clearCopySelection()},2e3)}function b(){g.removeCellCssStyles(i)}I.extend(this,{init:function(e){if((g=e).onKeyDown.subscribe(t),!(e=e.getSelectionModel()))throw new Error("Selection model is mandatory for this plugin. Please set a selection model on the grid before adding this plugin: grid.setSelectionModel(new Slick.CellSelectionModel())");e.onSelectedRangesChanged.subscribe(function(e,t){g.focus()})},destroy:function(){g.onKeyDown.unsubscribe(t)},pluginName:"CellExternalCopyManager",clearCopySelection:b,handleKeyDown:t,onCopyCells:new Slick.Event,onCopyCancelled:new Slick.Event,onPasteCells:new Slick.Event})}}})}(jQuery);