@plotdb/sheet 0.6.8 → 0.6.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Change Logs
2
2
 
3
+ ## v0.6.9
4
+
5
+ - fix bug: keydown cause exception if selection is out of viewport after scrolled.
6
+
7
+
3
8
  ## v0.6.8
4
9
 
5
10
  - call `focus` with `preventScroll: true` in render-selection to prevent scrolling from non-interaction update.
package/index.js CHANGED
@@ -1137,6 +1137,9 @@
1137
1137
  return;
1138
1138
  }
1139
1139
  idx = this.index(node);
1140
+ if (!idx || idx.col < 0 || idx.row < 0) {
1141
+ return;
1142
+ }
1140
1143
  if (this._ccfg && this._ccfg({
1141
1144
  row: idx.row,
1142
1145
  col: idx.col,
@@ -1144,9 +1147,6 @@
1144
1147
  })) {
1145
1148
  return;
1146
1149
  }
1147
- if (!idx || idx.col < 0 || idx.row < 0) {
1148
- return;
1149
- }
1150
1150
  ref$ = this.editing;
1151
1151
  ref$.node = node;
1152
1152
  ref$.quick = quick;
package/index.min.js CHANGED
@@ -1 +1 @@
1
- !function(){var f,m,l,t;function o(t,e){var i,o={}.hasOwnProperty;for(i in e)o.call(e,i)&&(t[i]=e[i]);return t}f=function(t){return"undefined"!=typeof Papa&&null!==Papa?Papa.parse(t).data:[[t]]},m=function(t,e,i){for(var o=t;t&&t!==i;)t=t.parentNode;if(t!==i)return null;if(!e)return t;for(t=o;t&&t!==i&&(!t.matches||t.matches&&!t.matches(e));)t=t.parentNode;return t!==i||i.matches&&i.matches(e)?t:null},l=function(t){for(var e=Math.floor(Math.log(25*(t+1)+1)/Math.log(26))-1,i=t-((Math.pow(26,1+e)-1)/25-1),o="",s=0;s<=e;++s)o="ABCDEFGHIJKLMNOPQRSTUVWXYZ".charAt(i%26)+o,i=(i-i%26)/26;return o},(t=function(t){var e,i=this;return this.opt=t=null==t?{}:t,this.root="string"==typeof t.root?document.querySelector(t.root):t.root,this.evtHandler={},this._ccfg=t.cellcfg,this._data=t.data||[],this._size={row:(e=o({row:[],col:[]},t.size)).row,col:e.col},this.cls={row:(e=o({row:[],col:[]},t.class)).row,col:e.col},this._editing=null==t.editing||!!t.editing,this.dim={col:(t.dim||(t.dim={})).col||30,row:(t.dim||(t.dim={})).row||30},this.frozen={col:(e=o({col:0,row:0},t.frozen||{})).col,row:e.row},this.idx={col:(e=o({row:!0,col:!0},t.idx||{})).col,row:e.row},this.fixed={col:(e=o({col:0,row:0},t.fixed||{})).col,row:e.row},this.xif={row:[this.idx.row?1:0,0,0],col:[this.idx.col?1:0,0,0]},["row","col"].map(function(t){return i.xif[t][1]=i.xif[t][0]+i.fixed[t],i.xif[t][2]=i.xif[t][1]+i.frozen[t]}),this.fix={row:this.xif.row[2],col:this.xif.col[2]},this.pos={col:0,row:0},this.scrollPos={x:0,y:0},this.sel={cut:{}},this.les={},this.editing={},this.dom=Object.fromEntries(["sheet","inner","caret","range","edit","layout","range-cut","slide-y","slide-x"].map(function(t){var e;e=document.createElement("div");return e.classList.add(t),[t,e]})),this.dom.sheet.setAttribute("tabindex",-1),this.dom.textarea=document.createElement("textarea"),this.root.appendChild(this.dom.sheet),["inner","caret","range","edit","layout","range-cut","slide-y","slide-x"].map(function(t){return i.dom.sheet.appendChild(i.dom[t])}),this.opt.slider||(this.dom["slide-x"].style.display=this.dom["slide-y"].style.display="none"),this.dom.edit.appendChild(this.dom.textarea),this._init(),this}).prototype=o(Object.create(Object.prototype),{on:function(t,e){var i;return((i=this.evtHandler)[t]||(i[t]=[])).push(e)},fire:function(t){for(var e,i,o,s,r=[],n=[],l=1,h=arguments.length;l<h;++l)n.push(arguments[l]);for(e=n,l=0,o=(i=this.evtHandler[t]||[]).length;l<o;++l)s=i[l],r.push(s.apply(this,e));return r},_init:function(){for(var t,e,i,o,d,s,a,r,n,l,u=this,h=0,c=this.dim.row;h<c;++h)for(t=h,e=0,i=this.dim.col;e<i;++e)o=e,this.addCell(o,t);return this.regrid(),this.dom.textarea.addEventListener("mousedown",function(t){return t.stopPropagation()}),this.dom.sheet.addEventListener("contextmenu",function(t){if(u.fire("menu.on",{evt:t,node:t.target}),!u._menuOff)return u._menuOff=function(t){if("keydown"!==t.type||27===t.keyCode)return document.body.removeEventListener("click",u._menuOff),document.body.removeEventListener("keydown",u._menuOff),u._menuOff=null,u.fire("menu.off",{evt:t,node:t.target})},document.body.addEventListener("click",u._menuOff),document.body.addEventListener("keydown",u._menuOff)}),(d=this.dom.sheet).addEventListener("mousedown",function(t){var e,i,o;if(!(1<t.button)&&(u.edited(),e=m(t.target,".cell",d))){if(!((o={row:(i=u.index(e)).row,col:i.col}).col<0||o.row<0))return t.shiftKey&&u.les.start?u.les.end=o:(u.les.start=u.les.end=o,u.les.node=e),u.renderSelection();u.les.node=u.cell(u.les.start),t.shiftKey&&u.les.start||(u.les.start={col:0<(i=o.col)?i:0,row:0<(i=o.row)?i:0},u.les.node=u.cell(u.les.start)),u.les.end={col:0<=o.col?o.col:void 0,row:0<=o.row?o.row:void 0},u.renderSelection()}}),d.addEventListener("mousemove",function(t){var e;if(!u._slider.y.on&&!u._slider.x.on&&!u.editing.on&&t.buttons&&(e=m(t.target,".cell",d)))return e={row:(t=u.index(e)).row,col:t.col},u.les.end={col:0<=e.col?e.col:void 0,row:0<=e.row?e.row:void 0},u.renderSelection()}),d.addEventListener("dblclick",function(t){if(t=m(t.target,".cell",d))return u.edit({node:t,quick:!1})}),s=new DOMParser,a=function(t){return s.parseFromString(t,"text/html")},document.body.addEventListener("paste",function(t){var e,i,o,s,r,n,l,h,c;if(m(document.activeElement,".sheet",d)&&u.les.start&&(s=function(t,e){var i=-1,o=e.length>>>0;for(;++i<o;)if(t===e[i])return 1;return}("text/html",t.clipboardData.types||[])?(s=a(t.clipboardData.getData("text/html")),Array.from(s.querySelectorAll("tr")).map(function(t){return Array.from(t.querySelectorAll("th,td")).map(function(t){return t.textContent})})):(e=t.clipboardData.getData("text"),f(e)),u.set({row:u.les.start.row,col:u.les.start.col,data:s,range:!0,src:"user"}),u.sel.cut)){if(u._toText({sel:u.sel.cut})===e){for(i=(t=u._bound({sel:u.sel.cut})).sc,o=t.ec,s=t.sr,r=t.er,n=s;n<=r;++n)for(l=n,h=i;h<=o;++h)c=h,u.set({row:l,col:c,data:"",src:"user"});navigator.clipboard.writeText("")}return u.sel.cut=null,u.dom["range-cut"].classList.toggle("show",!1)}}),this.dom.textarea.addEventListener("keypress",function(t){var e;return(31!==(e=t.keyCode)&&61!==e&&67!==e&&88!==e||!t.metaKey&&!t.ctrlKey)&&u.les.node&&!u.editing.on&&(u.edit({node:u.les.node,quick:13!==t.keyCode}),13===t.keyCode)?t.preventDefault():void 0}),this.dom.textarea.addEventListener("keydown",function(t){var e,i,o,s,r,n,l,h,c,d,a=t.keyCode;if(86!==t.keyCode||!t.metaKey&&!t.ctrlKey){if(!u.editing.on){if(67===t.keyCode&&(t.metaKey||t.ctrlKey))return u.copy();if(88===t.keyCode&&(t.metaKey||t.ctrlKey))return u.copy({cut:!0})}if(u.eventInScope(t)){if(8===a){if(!u.les.node)return;for(i=(e=u._bound()).sc,o=e.ec,d=e.sr,s=e.er,r=[],n=d;n<=s;++n){for(l=[],h=i;h<=o;++h)l.push("");r.push(l)}c=r,u.set({row:d,col:i,data:c,range:!0,src:"user"})}if(189===a&&(t.metaKey||t.ctrlKey)&&u.slice(),187===a&&(t.metaKey||t.ctrlKey)&&u.insert(),d=function(){switch(a){case 37:return{y:0,x:-1};case 38:return{y:-1,x:0};case 39:return{y:0,x:1};case 40:return{y:1,x:0};case 9:return{y:0,x:1};default:return null}}()){if(u.editing.on&&!u.editing.quick)return;u.move((d.select=t.shiftKey,d)),t.stopPropagation(),t.preventDefault(),u.dom.textarea.focus()}if(u.les.node&&!u.editing.on)return 37!==(e=t.keyCode)&&38!==e&&39!==e&&40!==e&&9!==e&&16!==e&&18!==e&&91!==e&&27!==e&&(31!==(e=t.keyCode)&&61!==e&&67!==e&&88!==e||!t.metaKey&&!t.ctrlKey)?(u.edit({node:u.les.node,quick:13!==t.keyCode}),void(13===t.keyCode&&t.preventDefault())):void 0;if(u.editing.on){if(27===t.keyCode)u.edited({cancel:!0});else{if(13!==t.keyCode||t.altKey||t.metaKey)return 13===t.keyCode&&(t.altKey||t.metaKey)?(u.dom.textarea.value+="\n",u.dom.layout.textContent=u.dom.textarea.value+" ",c=u.dom.layout.getBoundingClientRect(),d=u.editing.node.getBoundingClientRect(),(e=u.dom.textarea.style).width=Math.max(c.width,d.width+1)+"px",e.height=Math.max(c.height,d.height+1)+"px",e):void 0;u.move({y:1,x:0})}t.stopPropagation(),t.preventDefault(),u.dom.textarea.focus()}}}}),(r=this)._slider={hc:function(t){var e=t.target.getBoundingClientRect(),e=e[this.t[3]]+e[this.t[4]]/2,t=this.dir*Math.sign(t[this.t[2]]-e);return r[t<0?this.t[1]:this.t[0]](1),r.renderSelection()},hd:function(t){var e=this;return this.on=!0,this.p=t[this.t[2]],document.addEventListener("mouseup",function(t){return e.hu(t)}),document.addEventListener("mousemove",function(t){return e.hm(t)})},hu:function(t){return this.on=!1,document.removeEventListener("mouseup",this.hu),document.removeEventListener("mousemove",this.hm)},hm:function(t){var e;if(this.on)return t=this.p-t[this.t[2]],(e=500<(e=Math.abs(t))?10:300<e?5:150<e?2:100<e?1:.3)<1&&(e=Math.random()<e?1:0),0<(t=Math.sign(t)*this.dir*e)&&r[this.t[1]](t),t<0&&r[this.t[0]](t),r.renderSelection()}},this._slider.y=((n={n:"slide-y",on:!1,p:0,t:["_mu","_md","clientY","y","height"],dir:-1}).hd=(l=this._slider).hd,n.hu=l.hu,n.hm=l.hm,n.hc=l.hc,n),this._slider.x=((l={n:"slide-x",on:!1,p:0,t:["_mr","_ml","clientX","x","width"],dir:1}).hd=(n=this._slider).hd,l.hu=n.hu,l.hm=n.hm,l.hc=n.hc,l),["x","y"].map(function(e){return u.dom[u._slider[e].n].addEventListener("mousedown",function(t){return u._slider[e].hd(t)}),u.dom[u._slider[e].n].addEventListener("click",function(t){return u._slider[e].hc(t)})}),document.addEventListener("wheel",function(t){var e,i,o,s,r=u.eventInScope(t);if(null==u.opt.enableScrolling||u.opt.enableScrolling)return(null==u.opt.scrollLock||u.opt.scrollLock)&&Math.abs(t.deltaX)>Math.abs(t.deltaY)&&(!r&&t.target!==document.body||t.preventDefault()),!!r&&(r=u.scrollPos,e=(s=[t.deltaX,t.deltaY])[0],i=s[1],e=(s=Math.abs(e)>Math.abs(i)?[e,0]:[0,i])[0],i=s[1],o=(s=[r.x,r.y])[0],s=s[1],r.x+=e/30,r.y+=i/30,e=Math.round(r.x)-Math.round(o),0<(i=Math.round(r.y)-Math.round(s))?u._md(i):i<0?u._mu(i):0<e?u._mr(e):e<0&&u._ml(e),u.renderSelection(),t.preventDefault())},{passive:!1})},select:function(t){var e,i;if(!arguments.length)return this.les.start?((e={}).col=this.les.start.col,e.row=this.les.start.row,this.les.end?(null==this.les.end.col?delete e.col:e.colspan=this.les.end.col-e.col+1,null==this.les.end.row?delete e.row:e.rowspan=this.les.end.row-e.row+1):(e.colspan=1,e.rowspan=1),e):null;this.les={},t&&(this.les={start:{col:0,row:0},end:{}},null!=t.row&&(this.les.start.row=t.row,this.les.end.row=t.row+((i=t.rowspan)&&1<i?i:1)-1),null!=t.col)&&(this.les.start.col=t.col,this.les.end.col=t.col+((i=t.colspan)&&1<i?i:1)-1),this.renderSelection()},_bound:function(t){var e,i,o,s,r=(e=[(e=(t=null==t?{}:t).sel||this.les).start,e.end])[1];return(s=e[0])&&r?(i=(e=s.col<r.col||null==r.col?[s.col,r.col]:[r.col,s.col])[0],o=e[1],r=(e=s.row<r.row||null==r.row?[s.row,r.row]:[r.row,s.row])[0],s=e[1],null!=t.defined&&!t.defined||(null==o&&(o=Math.max.apply(Math,this._data.map(function(t){return t.length}))),null!=s)||(s=this._data.length),{sc:i,ec:o,sr:r,er:s}):{sc:0,ec:0,sr:0,er:0}},_toText:function(t){var e,i,o,s,r,n,l,h,c,d,t=t.sel;if(!t||!t.start)return"";for(e=[],o=(i=this._bound({sel:t})).sc,s=i.ec,t=i.sr,r=i.er,n=t;n<=r;++n){for(l=n,h=[],c=o;c<=s;++c)d=c,"object"!=typeof(d=null==(d=((i=this._data)[l]||(i[l]=[]))[d])?"":d)&&h.push('"'+(""+d||"").replace(/"/g,'""')+'"');e.push(h.join("\t"))}return e.join("\n")},copy:function(t){var e;if(null==t&&(t={}),this.les.start)return e=this._toText({sel:this.les}),navigator.clipboard.writeText(e),t.cut?(this.sel.cut={start:this.les.start,end:this.les.end},this.renderSelection(this.sel.cut,{cut:!0})):void 0},eventInScope:function(t){return m(t.target,".sheet",this.dom.sheet)===this.dom.sheet},size:function(t){return null==t?this._size:(this._size={row:(t=o({row:[],col:[]},t)).row,col:t.col},this.regrid())},regrid:function(){var e=this;return this.dom.inner.style.gridTemplateColumns="repeat("+this.xif.col[1]+", max-content) "+function(){for(var t=[],e=0,i=this.frozen.col;e<i;++e)t.push(e);return t}.call(this).map(function(t){return e._size.col[t]||"max-content"}).join(" ")+" "+function(){for(var t=[],e=this.xif.col[2],i=this.dim.col;e<i;++e)t.push(e);return t}.call(this).map(function(t){return e._size.col[t+e.pos.col-e.xif.col[1]]||"max-content"}).join(" "),this.dom.inner.style.gridTemplateRows="repeat("+this.xif.row[1]+", max-content) "+function(){for(var t=[],e=0,i=this.frozen.row;e<i;++e)t.push(e);return t}.call(this).map(function(t){return e._size.row[t]||"max-content"}).join(" ")+" "+function(){for(var t=[],e=this.xif.row[2],i=this.dim.row;e<i;++e)t.push(e);return t}.call(this).map(function(t){return e._size.row[t+e.pos.row-e.xif.row[1]]||"max-content"}).join(" ")},addCell:function(t,e){var i=document.createElement("div");return this.dom.inner.insertBefore(i,this.dom.inner.childNodes[e*this.dim.col+t]),this._content({x:t,y:e,n:i})},set:function(t){var e,i,o,s,r,n,l,h,c,d=t.row,a=t.col,u=t.data,f=t.range,m=t.src;if(f)for(e=!1,o=0,s=(u=JSON.parse(JSON.stringify(u))).length;o<s;++o)for(n=0,l=u[r=o].length;n<l;++n)h=n,m&&this._ccfg&&this._ccfg({row:d+r,col:a+h,type:"readonly"})?u[r][h]=((i=this._data)[c=r+d]||(i[c]=[]))[h+a]:(e=!0,((i=this._data)[c=r+d]||(i[c]=[]))[h+a]=u[r][h],this._content({y:r+d-this.pos.row+this.xif.row[1],x:h+a-this.pos.col+this.xif.col[1]}));else{if(m&&this._ccfg&&this._ccfg({row:d,col:a,type:"readonly"}))return;e=!0,((i=this._data)[d]||(i[d]=[]))[a]=u,this._content({y:d-this.pos.row+this.xif.row[1],x:a-this.pos.col+this.xif.col[1]})}if(e)return this.fire("change",{row:d,col:a,data:u,range:!!f})},_content:function(t){var e,i,o,s,r=t.x,n=t.y,t=t.n;if(t||(t=this.dom.inner.childNodes[r+n*this.dim.col]))return e=(i=r<this.xif.col[0]&&n<this.xif.col[0]?["","cell idx"]:r<this.xif.col[0]?[n<this.xif.row[1]?" ":n<this.xif.row[2]?n-this.xif.row[1]+1:n-this.xif.row[1]+this.pos.row+1,"cell idx"]:n<this.xif.row[0]?[r<this.xif.col[1]?" ":r<this.xif.col[2]?l(r-this.xif.col[1]):l(r-this.xif.col[1]+this.pos.col),"cell idx"]:r<this.xif.col[1]||n<this.xif.row[1]?[null,"cell fixed"]:r<this.xif.col[2]&&n<this.xif.row[2]?[((i=this._data)[e=n-this.xif.row[1]]||(i[e]=[]))[r-this.xif.col[1]],"cell frozen fixed"]:r<this.xif.col[2]?[((i=this._data)[e=this.pos.row+n-this.xif.row[1]]||(i[e]=[]))[r-this.xif.col[1]],"cell frozen"]:n<this.xif.row[2]?[((i=this._data)[e=n-this.xif.row[1]]||(i[e]=[]))[this.pos.col+r-this.xif.col[1]],"cell frozen"]:[((i=this._data)[e=this.pos.row+n-this.xif.row[1]]||(i[e]=[]))[this.pos.col+r-this.xif.col[1]],"cell"])[0],i=i[1],null==e&&(e=""),o=/frozen/.exec(i),s=r>=this.xif.col[0]&&n>=this.xif.row[0]?(this.cls.col[(o?0:this.pos.col)+r-this.xif.col[1]]||"")+" "+(this.cls.row[(o?0:this.pos.row)+n-this.xif.row[1]]||""):"",r=this._ccfg&&this._ccfg({type:"class",col:(o?0:this.pos.col)+r-this.xif.col[1],row:(o?0:this.pos.row)+n-this.xif.row[1]})||"",t.className=[i,s,r].filter(function(t){return t.trim()}).join(" ").trim(),null!==e?"object"!=typeof e?t.textContent=e:"dom"===e.type?(t.textContent="",t.appendChild(e.node)):void 0:void 0},_md:function(t){var e,i,o,s,r,n,l,h,c;for(null==t&&(t=1),e=this.dom.inner,o=i=0<(i=(t=Math.round(Math.abs(t)))-(this.dim.row-this.fix.row))?i:0;o<t;++o)for(s=o,r=0,n=this.dim.col;r<n&&(l=r,h=this.dim.col*this.fix.row,e.childNodes[h]);++r)e.removeChild(e.childNodes[h]);for(o=i;o<t;++o)for(s=o,r=0,n=this.dim.col;r<n;++r)l=r,c=document.createElement("div"),this._content({x:l,y:this.dim.row+s,n:c}),e.appendChild(c);return this.pos.row+=t},_mu:function(t){var e,i,o,s,r,n,l,h,c,d,a=[];if(null==t&&(t=1),e=this.dom.inner,!(this.pos.row<=0)){for(s=i=0<(o=(t=(t=Math.round(Math.abs(t)))>=this.pos.row?this.pos.row:t)-(this.dim.row-this.xif.row[2]))?o:0;s<t;++s)for(r=s,n=0,l=this.dim.col;n<l&&(h=n,e.childNodes.length);++n)e.removeChild(e.childNodes[e.childNodes.length-1]);for(this.pos.row-=t,s=i;s<t;++s){for(r=s,c=[],n=0,l=this.dim.col;n<l;++n)h=n,d=document.createElement("div"),this._content({x:h,y:r+this.xif.row[2],n:d}),c.push(e.insertBefore(d,e.childNodes[h+(r-i)*this.dim.col+this.dim.col*this.xif.row[2]]));a.push(c)}return a}},_mr:function(t){var e,i,o,s,r,n,l,h;for(null==t&&(t=1),e=this.dom.inner,o=0<(i=(t=Math.round(Math.abs(t)))-(this.dim.col-this.fix.col))?i:0;o<t;++o)for(s=o,r=0,n=this.dim.row;r<n;++r)l=r,e.removeChild(e.childNodes[l*this.dim.col+this.fix.col]),h=document.createElement("div"),this._content({x:this.dim.col+s,y:l,n:h}),e.insertBefore(h,e.childNodes[(l+1)*this.dim.col-1]);return this.pos.col+=t,this.regrid()},_ml:function(t){var e,i,o,s,r,n,l,h,c;if(null==t&&(t=1),e=this.dom.inner,(t=Math.round(Math.abs(t)))>=this.pos.col&&(t=this.pos.col),!(this.pos.col<=0||t<=0)){for(i=0<(o=t-(this.dim.col-this.xif.col[2]))?o:0,this.pos.col-=t,s=i;s<t;++s)for(r=s,n=0,l=this.dim.row;n<l;++n)h=n,e.removeChild(e.childNodes[(h+1)*this.dim.col-1]),c=document.createElement("div"),this._content({x:r+this.xif.col[2],y:h,n:c}),e.insertBefore(c,e.childNodes[h*this.dim.col+this.xif.col[2]+r-i]);return this.regrid()}},goto:function(t){return o(this.pos,t=null==t?{row:0,col:0}:t),this.render()},render:function(){for(var t,e,i,o,s=0,r=this.dim.row;s<r;++s)for(t=s,e=0,i=this.dim.col;e<i;++e)o=e,this._content({x:o,y:t});return this.renderSelection()},move:function(t){var e,i,o,s,r;if(null==t&&(t={}),this.editing.on&&this.edited(),(t.node=this.les.node)&&(e=this.cell(t))){if(i=this.index(e),r=e.getBoundingClientRect(),o=this.dom.sheet.getBoundingClientRect(),r.x+r.width>o.x+o.width&&this._mr(1),r.y+r.height>o.y+o.height&&this._md(1),0===i.x){if(0===this.pos.col)return;this._ml(1)}if(0===i.y){if(0===this.pos.row)return;this._mu(1)}if((e=this.cell(t))||(e=this.cell({col:i.col,row:i.row})))return this.les.node=e,t.select?(r={col:(s=this.index(e)).col,row:s.row},this.les.end===this.les.start&&(this.les.end=JSON.parse(JSON.stringify(this.les.start))),r.col<this.les.start.col&&(r.col<this.les.end.col||null==this.les.end.col)&&((this.les.start.col>this.les.end.col?this.les.end:this.les.start).col=r.col),r.row<this.les.start.row&&(r.row<this.les.end.row||null==this.les.end.row)&&((this.les.start.row>this.les.end.row?this.les.end:this.les.start).row=r.row),r.col>this.les.start.col&&r.col>this.les.end.col&&((this.les.start.col<this.les.end.col?this.les.end:this.les.start).col=r.col),r.row>this.les.start.row&&r.row>this.les.end.row&&((this.les.start.row<this.les.end.row?this.les.end:this.les.start).row=r.row)):this.les.start=this.les.end={col:(s=this.index(e)).col,row:s.row},this.renderSelection()}},edit:function(t){var e,i,o,s,r,n,l=t.node,t=t.quick;if(this._editing&&(e=this.index(l),!(this._ccfg&&this._ccfg({row:e.row,col:e.col,type:"readonly"})||!e||e.col<0||e.row<0)))return(e=this.editing).node=l,e.quick=t,e.on=!0,this.dom.layout.textContent=l.textContent,i=this.dom.layout.getBoundingClientRect(),o=l.getBoundingClientRect(),s=this.dom.sheet.getBoundingClientRect(),n=(e=[this.dom.sheet.scrollLeft,this.dom.sheet.scrollTop])[0],r=e[1],(e=this.dom.edit.style).left=o.x-s.x+n-2+"px",e.top=o.y-s.y+r-2+"px",e.width="fit-content",e.height="fit-content",this.dom.edit.classList.toggle("show",!0),(e=this.dom.textarea.style).width=Math.max(i.width,o.width+1)+"px",e.height=Math.max(i.height,o.height+1)+"px",this.dom.textarea.value=n=!t&&l.textContent||"",this.dom.textarea.focus(),this.dom.textarea.setSelectionRange(n.length,n.length)},edited:function(t){if(null==t&&(t={}),this.editing.on)return t.cancel||this.set({row:this.les.start.row,col:this.les.start.col,data:this.dom.textarea.value||""}),this.dom.edit.classList.toggle("show",!1),(t=this.editing).node=null,t.on=!1,t},index:function(t){var e,t=Array.from(this.dom.inner.childNodes).indexOf(t);return t<0?null:{x:e=t%this.dim.col,y:t=(t-e)/this.dim.col,col:e<this.xif.col[1]?-1:e<this.xif.col[2]?e-this.xif.col[1]:e-this.xif.col[1]+this.pos.col,row:t<this.xif.row[1]?-1:t<this.xif.row[2]?t-this.xif.row[1]:t-this.xif.row[1]+this.pos.row}},cell:function(t){var e,i,o=(t=null==t?{}:t).roughly;if(null!=t.col||null!=t.row){if(t.col<this.frozen.col)e=t.col;else if(t.col-this.pos.col<this.frozen.col){if(!o)return null;e=this.frozen.col}else e=t.col-this.pos.col;if(t.row<this.frozen.row)i=t.row;else if(t.row-this.pos.row<this.frozen.row){if(!o)return null;i=this.frozen.row}else i=t.row-this.pos.row;return i=(o=[e+this.xif.col[1],i+this.xif.row[1]])[1],(e=o[0])<0||i<0||e>=this.dim.col||i>=this.dim.row?null:this.dom.inner.childNodes[i*this.dim.col+e]}if(o=t.node?this.index(t.node):{y:0,x:0})return i=o.y+(t.y||0),e=o.x+(t.x||0),this.dom.inner.childNodes[i*this.dim.col+e]},editing:function(t){return null==t?this._editing:this._editing=!!t},renderSelection:function(t,e){var i,o,s,r,n,l,h,c,d,a,u,f,m,w=this;if(null==e&&(e={}),(t=t||this.les).start)return n=(i=this._bound({defined:!1,sel:t})).sc,o=i.ec,h=i.sr,s=i.er,r=this.dom.inner.getBoundingClientRect(),m=(i=[this.cell({col:this.pos.col+this.frozen.col,row:this.pos.row+this.frozen.row}),this.cell({col:n,row:h,roughly:!0}),this.cell({col:n,row:s,roughly:!0}),this.cell({col:o,row:h,roughly:!0}),this.cell({col:o,row:s,roughly:!0}),this.cell({col:this.pos.col+this.dim.col-2,row:this.pos.row+this.dim.row-2})].map(function(t){return t?t.getBoundingClientRect():null}))[0],l=i[1],a=i[2],d=i[3],u=i[4],f=i[5],m.width=0,m.height=0,n=(l||a||(n>this.pos.col?f:m)).x-r.x,l=(l||d||(h>this.pos.row?f:m)).y-r.y,h=o-this.pos.col<0,c=s-this.pos.row<0,d=(d||u||f||m).x+(h?0:(d||u||f||m).width)-r.x-n+1,a=(a||u||f||m).y+(c?0:(a||u||f||m).height)-r.y-l+1,null==o&&(d=this.root.getBoundingClientRect().width),null==s&&(a=this.root.getBoundingClientRect().height),f=(u=this.les.node)?u.getBoundingClientRect():null,(i=(m=e.cut?this.dom["range-cut"]:this.dom.range).style).left=n+"px",i.top=l+"px",i.width=d+"px",i.height=a+"px",m.classList.toggle("show",!0),e.cut||(f&&((i=this.dom.caret.style).left=f.x-r.x-1+"px",i.top=f.y-r.y-1+"px",i.width=(h?0:f.width)+2+"px",i.height=(c?0:f.height)+2+"px",i.zIndex=t.start.row+this.xif.row[1]<this.xif.row[2]&&t.start.col+this.xif.col[1]<this.xif.col[2]?101:t.start.row+this.xif.row[1]<this.xif.row[2]||t.start.col+this.xif.col[1]<this.xif.col[2]?20:15),this.dom.caret.classList.toggle("show",!!f)),setTimeout(function(){return w.dom.textarea.focus({preventScroll:!0})},0);this.dom.caret.classList.toggle("show",!1),this.dom.range.classList.toggle("show",!1)},data:function(t){return null==t?this._data:(this._data=t,this.render())},sort:function(i){var o,t,s=this;return null==i&&(i={}),t=this._bound({defined:!1}),o=t.sc,t.ec,t.sr,t.er,(t=this._data.map(function(t,e){return{d:t,i:e}})).sort(function(t,e){return t.i<s.frozen.row&&e.i>=s.frozen.row?-1:e.i<s.frozen.row&&t.i>=s.frozen.row?1:(t=isNaN(+t.d[o])?t.d[o]:+t.d[o],e=isNaN(+e.d[o])?e.d[o]:+e.d[o],("asc"===i.dir?1:-1)*(e<t?1:t<e?-1:0))}),this._data=t.map(function(t){return t.d}),this.fire("change",{row:0,col:0,data:this._data,range:!0}),this.renderSelection(),this.render()},insert:function(){var t,e=this._bound({defined:!1}),i=e.sc,o=e.ec,s=e.sr,e=e.er;null==o&&(t=this._data.splice(s,0,[])),null==e&&(t=this._data.map(function(t){return t.splice(i,0,"")})),this.fire("change",{row:s,col:i,data:t,range:!0}),this.les.end=this.les.start,this.renderSelection(),this.render()},slice:function(){var t,e=this._bound({defined:!1}),i=e.sc,o=e.ec,s=e.sr,e=e.er;null==o&&(t=this._data.splice(s,e-s+1)),null==e&&(t=this._data.map(function(t){return t.splice(i,o-i+1)})),this.fire("change",{row:s,col:i,data:t,range:!0}),this.les.end=this.les.start,this.renderSelection(),this.render()}}),"undefined"!=typeof module&&null!==module?module.exports=t:"undefined"!=typeof window&&null!==window&&(window.sheet=t)}.call(this);
1
+ !function(){var f,m,l,t;function o(t,e){var i,o={}.hasOwnProperty;for(i in e)o.call(e,i)&&(t[i]=e[i]);return t}f=function(t){return"undefined"!=typeof Papa&&null!==Papa?Papa.parse(t).data:[[t]]},m=function(t,e,i){for(var o=t;t&&t!==i;)t=t.parentNode;if(t!==i)return null;if(!e)return t;for(t=o;t&&t!==i&&(!t.matches||t.matches&&!t.matches(e));)t=t.parentNode;return t!==i||i.matches&&i.matches(e)?t:null},l=function(t){for(var e=Math.floor(Math.log(25*(t+1)+1)/Math.log(26))-1,i=t-((Math.pow(26,1+e)-1)/25-1),o="",s=0;s<=e;++s)o="ABCDEFGHIJKLMNOPQRSTUVWXYZ".charAt(i%26)+o,i=(i-i%26)/26;return o},(t=function(t){var e,i=this;return this.opt=t=null==t?{}:t,this.root="string"==typeof t.root?document.querySelector(t.root):t.root,this.evtHandler={},this._ccfg=t.cellcfg,this._data=t.data||[],this._size={row:(e=o({row:[],col:[]},t.size)).row,col:e.col},this.cls={row:(e=o({row:[],col:[]},t.class)).row,col:e.col},this._editing=null==t.editing||!!t.editing,this.dim={col:(t.dim||(t.dim={})).col||30,row:(t.dim||(t.dim={})).row||30},this.frozen={col:(e=o({col:0,row:0},t.frozen||{})).col,row:e.row},this.idx={col:(e=o({row:!0,col:!0},t.idx||{})).col,row:e.row},this.fixed={col:(e=o({col:0,row:0},t.fixed||{})).col,row:e.row},this.xif={row:[this.idx.row?1:0,0,0],col:[this.idx.col?1:0,0,0]},["row","col"].map(function(t){return i.xif[t][1]=i.xif[t][0]+i.fixed[t],i.xif[t][2]=i.xif[t][1]+i.frozen[t]}),this.fix={row:this.xif.row[2],col:this.xif.col[2]},this.pos={col:0,row:0},this.scrollPos={x:0,y:0},this.sel={cut:{}},this.les={},this.editing={},this.dom=Object.fromEntries(["sheet","inner","caret","range","edit","layout","range-cut","slide-y","slide-x"].map(function(t){var e;e=document.createElement("div");return e.classList.add(t),[t,e]})),this.dom.sheet.setAttribute("tabindex",-1),this.dom.textarea=document.createElement("textarea"),this.root.appendChild(this.dom.sheet),["inner","caret","range","edit","layout","range-cut","slide-y","slide-x"].map(function(t){return i.dom.sheet.appendChild(i.dom[t])}),this.opt.slider||(this.dom["slide-x"].style.display=this.dom["slide-y"].style.display="none"),this.dom.edit.appendChild(this.dom.textarea),this._init(),this}).prototype=o(Object.create(Object.prototype),{on:function(t,e){var i;return((i=this.evtHandler)[t]||(i[t]=[])).push(e)},fire:function(t){for(var e,i,o,s,r=[],n=[],l=1,h=arguments.length;l<h;++l)n.push(arguments[l]);for(e=n,l=0,o=(i=this.evtHandler[t]||[]).length;l<o;++l)s=i[l],r.push(s.apply(this,e));return r},_init:function(){for(var t,e,i,o,d,s,a,r,n,l,u=this,h=0,c=this.dim.row;h<c;++h)for(t=h,e=0,i=this.dim.col;e<i;++e)o=e,this.addCell(o,t);return this.regrid(),this.dom.textarea.addEventListener("mousedown",function(t){return t.stopPropagation()}),this.dom.sheet.addEventListener("contextmenu",function(t){if(u.fire("menu.on",{evt:t,node:t.target}),!u._menuOff)return u._menuOff=function(t){if("keydown"!==t.type||27===t.keyCode)return document.body.removeEventListener("click",u._menuOff),document.body.removeEventListener("keydown",u._menuOff),u._menuOff=null,u.fire("menu.off",{evt:t,node:t.target})},document.body.addEventListener("click",u._menuOff),document.body.addEventListener("keydown",u._menuOff)}),(d=this.dom.sheet).addEventListener("mousedown",function(t){var e,i,o;if(!(1<t.button)&&(u.edited(),e=m(t.target,".cell",d))){if(!((o={row:(i=u.index(e)).row,col:i.col}).col<0||o.row<0))return t.shiftKey&&u.les.start?u.les.end=o:(u.les.start=u.les.end=o,u.les.node=e),u.renderSelection();u.les.node=u.cell(u.les.start),t.shiftKey&&u.les.start||(u.les.start={col:0<(i=o.col)?i:0,row:0<(i=o.row)?i:0},u.les.node=u.cell(u.les.start)),u.les.end={col:0<=o.col?o.col:void 0,row:0<=o.row?o.row:void 0},u.renderSelection()}}),d.addEventListener("mousemove",function(t){var e;if(!u._slider.y.on&&!u._slider.x.on&&!u.editing.on&&t.buttons&&(e=m(t.target,".cell",d)))return e={row:(t=u.index(e)).row,col:t.col},u.les.end={col:0<=e.col?e.col:void 0,row:0<=e.row?e.row:void 0},u.renderSelection()}),d.addEventListener("dblclick",function(t){if(t=m(t.target,".cell",d))return u.edit({node:t,quick:!1})}),s=new DOMParser,a=function(t){return s.parseFromString(t,"text/html")},document.body.addEventListener("paste",function(t){var e,i,o,s,r,n,l,h,c;if(m(document.activeElement,".sheet",d)&&u.les.start&&(s=function(t,e){var i=-1,o=e.length>>>0;for(;++i<o;)if(t===e[i])return 1;return}("text/html",t.clipboardData.types||[])?(s=a(t.clipboardData.getData("text/html")),Array.from(s.querySelectorAll("tr")).map(function(t){return Array.from(t.querySelectorAll("th,td")).map(function(t){return t.textContent})})):(e=t.clipboardData.getData("text"),f(e)),u.set({row:u.les.start.row,col:u.les.start.col,data:s,range:!0,src:"user"}),u.sel.cut)){if(u._toText({sel:u.sel.cut})===e){for(i=(t=u._bound({sel:u.sel.cut})).sc,o=t.ec,s=t.sr,r=t.er,n=s;n<=r;++n)for(l=n,h=i;h<=o;++h)c=h,u.set({row:l,col:c,data:"",src:"user"});navigator.clipboard.writeText("")}return u.sel.cut=null,u.dom["range-cut"].classList.toggle("show",!1)}}),this.dom.textarea.addEventListener("keypress",function(t){var e;return(31!==(e=t.keyCode)&&61!==e&&67!==e&&88!==e||!t.metaKey&&!t.ctrlKey)&&u.les.node&&!u.editing.on&&(u.edit({node:u.les.node,quick:13!==t.keyCode}),13===t.keyCode)?t.preventDefault():void 0}),this.dom.textarea.addEventListener("keydown",function(t){var e,i,o,s,r,n,l,h,c,d,a=t.keyCode;if(86!==t.keyCode||!t.metaKey&&!t.ctrlKey){if(!u.editing.on){if(67===t.keyCode&&(t.metaKey||t.ctrlKey))return u.copy();if(88===t.keyCode&&(t.metaKey||t.ctrlKey))return u.copy({cut:!0})}if(u.eventInScope(t)){if(8===a){if(!u.les.node)return;for(i=(e=u._bound()).sc,o=e.ec,d=e.sr,s=e.er,r=[],n=d;n<=s;++n){for(l=[],h=i;h<=o;++h)l.push("");r.push(l)}c=r,u.set({row:d,col:i,data:c,range:!0,src:"user"})}if(189===a&&(t.metaKey||t.ctrlKey)&&u.slice(),187===a&&(t.metaKey||t.ctrlKey)&&u.insert(),d=function(){switch(a){case 37:return{y:0,x:-1};case 38:return{y:-1,x:0};case 39:return{y:0,x:1};case 40:return{y:1,x:0};case 9:return{y:0,x:1};default:return null}}()){if(u.editing.on&&!u.editing.quick)return;u.move((d.select=t.shiftKey,d)),t.stopPropagation(),t.preventDefault(),u.dom.textarea.focus()}if(u.les.node&&!u.editing.on)return 37!==(e=t.keyCode)&&38!==e&&39!==e&&40!==e&&9!==e&&16!==e&&18!==e&&91!==e&&27!==e&&(31!==(e=t.keyCode)&&61!==e&&67!==e&&88!==e||!t.metaKey&&!t.ctrlKey)?(u.edit({node:u.les.node,quick:13!==t.keyCode}),void(13===t.keyCode&&t.preventDefault())):void 0;if(u.editing.on){if(27===t.keyCode)u.edited({cancel:!0});else{if(13!==t.keyCode||t.altKey||t.metaKey)return 13===t.keyCode&&(t.altKey||t.metaKey)?(u.dom.textarea.value+="\n",u.dom.layout.textContent=u.dom.textarea.value+" ",c=u.dom.layout.getBoundingClientRect(),d=u.editing.node.getBoundingClientRect(),(e=u.dom.textarea.style).width=Math.max(c.width,d.width+1)+"px",e.height=Math.max(c.height,d.height+1)+"px",e):void 0;u.move({y:1,x:0})}t.stopPropagation(),t.preventDefault(),u.dom.textarea.focus()}}}}),(r=this)._slider={hc:function(t){var e=t.target.getBoundingClientRect(),e=e[this.t[3]]+e[this.t[4]]/2,t=this.dir*Math.sign(t[this.t[2]]-e);return r[t<0?this.t[1]:this.t[0]](1),r.renderSelection()},hd:function(t){var e=this;return this.on=!0,this.p=t[this.t[2]],document.addEventListener("mouseup",function(t){return e.hu(t)}),document.addEventListener("mousemove",function(t){return e.hm(t)})},hu:function(t){return this.on=!1,document.removeEventListener("mouseup",this.hu),document.removeEventListener("mousemove",this.hm)},hm:function(t){var e;if(this.on)return t=this.p-t[this.t[2]],(e=500<(e=Math.abs(t))?10:300<e?5:150<e?2:100<e?1:.3)<1&&(e=Math.random()<e?1:0),0<(t=Math.sign(t)*this.dir*e)&&r[this.t[1]](t),t<0&&r[this.t[0]](t),r.renderSelection()}},this._slider.y=((n={n:"slide-y",on:!1,p:0,t:["_mu","_md","clientY","y","height"],dir:-1}).hd=(l=this._slider).hd,n.hu=l.hu,n.hm=l.hm,n.hc=l.hc,n),this._slider.x=((l={n:"slide-x",on:!1,p:0,t:["_mr","_ml","clientX","x","width"],dir:1}).hd=(n=this._slider).hd,l.hu=n.hu,l.hm=n.hm,l.hc=n.hc,l),["x","y"].map(function(e){return u.dom[u._slider[e].n].addEventListener("mousedown",function(t){return u._slider[e].hd(t)}),u.dom[u._slider[e].n].addEventListener("click",function(t){return u._slider[e].hc(t)})}),document.addEventListener("wheel",function(t){var e,i,o,s,r=u.eventInScope(t);if(null==u.opt.enableScrolling||u.opt.enableScrolling)return(null==u.opt.scrollLock||u.opt.scrollLock)&&Math.abs(t.deltaX)>Math.abs(t.deltaY)&&(!r&&t.target!==document.body||t.preventDefault()),!!r&&(r=u.scrollPos,e=(s=[t.deltaX,t.deltaY])[0],i=s[1],e=(s=Math.abs(e)>Math.abs(i)?[e,0]:[0,i])[0],i=s[1],o=(s=[r.x,r.y])[0],s=s[1],r.x+=e/30,r.y+=i/30,e=Math.round(r.x)-Math.round(o),0<(i=Math.round(r.y)-Math.round(s))?u._md(i):i<0?u._mu(i):0<e?u._mr(e):e<0&&u._ml(e),u.renderSelection(),t.preventDefault())},{passive:!1})},select:function(t){var e,i;if(!arguments.length)return this.les.start?((e={}).col=this.les.start.col,e.row=this.les.start.row,this.les.end?(null==this.les.end.col?delete e.col:e.colspan=this.les.end.col-e.col+1,null==this.les.end.row?delete e.row:e.rowspan=this.les.end.row-e.row+1):(e.colspan=1,e.rowspan=1),e):null;this.les={},t&&(this.les={start:{col:0,row:0},end:{}},null!=t.row&&(this.les.start.row=t.row,this.les.end.row=t.row+((i=t.rowspan)&&1<i?i:1)-1),null!=t.col)&&(this.les.start.col=t.col,this.les.end.col=t.col+((i=t.colspan)&&1<i?i:1)-1),this.renderSelection()},_bound:function(t){var e,i,o,s,r=(e=[(e=(t=null==t?{}:t).sel||this.les).start,e.end])[1];return(s=e[0])&&r?(i=(e=s.col<r.col||null==r.col?[s.col,r.col]:[r.col,s.col])[0],o=e[1],r=(e=s.row<r.row||null==r.row?[s.row,r.row]:[r.row,s.row])[0],s=e[1],null!=t.defined&&!t.defined||(null==o&&(o=Math.max.apply(Math,this._data.map(function(t){return t.length}))),null!=s)||(s=this._data.length),{sc:i,ec:o,sr:r,er:s}):{sc:0,ec:0,sr:0,er:0}},_toText:function(t){var e,i,o,s,r,n,l,h,c,d,t=t.sel;if(!t||!t.start)return"";for(e=[],o=(i=this._bound({sel:t})).sc,s=i.ec,t=i.sr,r=i.er,n=t;n<=r;++n){for(l=n,h=[],c=o;c<=s;++c)d=c,"object"!=typeof(d=null==(d=((i=this._data)[l]||(i[l]=[]))[d])?"":d)&&h.push('"'+(""+d||"").replace(/"/g,'""')+'"');e.push(h.join("\t"))}return e.join("\n")},copy:function(t){var e;if(null==t&&(t={}),this.les.start)return e=this._toText({sel:this.les}),navigator.clipboard.writeText(e),t.cut?(this.sel.cut={start:this.les.start,end:this.les.end},this.renderSelection(this.sel.cut,{cut:!0})):void 0},eventInScope:function(t){return m(t.target,".sheet",this.dom.sheet)===this.dom.sheet},size:function(t){return null==t?this._size:(this._size={row:(t=o({row:[],col:[]},t)).row,col:t.col},this.regrid())},regrid:function(){var e=this;return this.dom.inner.style.gridTemplateColumns="repeat("+this.xif.col[1]+", max-content) "+function(){for(var t=[],e=0,i=this.frozen.col;e<i;++e)t.push(e);return t}.call(this).map(function(t){return e._size.col[t]||"max-content"}).join(" ")+" "+function(){for(var t=[],e=this.xif.col[2],i=this.dim.col;e<i;++e)t.push(e);return t}.call(this).map(function(t){return e._size.col[t+e.pos.col-e.xif.col[1]]||"max-content"}).join(" "),this.dom.inner.style.gridTemplateRows="repeat("+this.xif.row[1]+", max-content) "+function(){for(var t=[],e=0,i=this.frozen.row;e<i;++e)t.push(e);return t}.call(this).map(function(t){return e._size.row[t]||"max-content"}).join(" ")+" "+function(){for(var t=[],e=this.xif.row[2],i=this.dim.row;e<i;++e)t.push(e);return t}.call(this).map(function(t){return e._size.row[t+e.pos.row-e.xif.row[1]]||"max-content"}).join(" ")},addCell:function(t,e){var i=document.createElement("div");return this.dom.inner.insertBefore(i,this.dom.inner.childNodes[e*this.dim.col+t]),this._content({x:t,y:e,n:i})},set:function(t){var e,i,o,s,r,n,l,h,c,d=t.row,a=t.col,u=t.data,f=t.range,m=t.src;if(f)for(e=!1,o=0,s=(u=JSON.parse(JSON.stringify(u))).length;o<s;++o)for(n=0,l=u[r=o].length;n<l;++n)h=n,m&&this._ccfg&&this._ccfg({row:d+r,col:a+h,type:"readonly"})?u[r][h]=((i=this._data)[c=r+d]||(i[c]=[]))[h+a]:(e=!0,((i=this._data)[c=r+d]||(i[c]=[]))[h+a]=u[r][h],this._content({y:r+d-this.pos.row+this.xif.row[1],x:h+a-this.pos.col+this.xif.col[1]}));else{if(m&&this._ccfg&&this._ccfg({row:d,col:a,type:"readonly"}))return;e=!0,((i=this._data)[d]||(i[d]=[]))[a]=u,this._content({y:d-this.pos.row+this.xif.row[1],x:a-this.pos.col+this.xif.col[1]})}if(e)return this.fire("change",{row:d,col:a,data:u,range:!!f})},_content:function(t){var e,i,o,s,r=t.x,n=t.y,t=t.n;if(t||(t=this.dom.inner.childNodes[r+n*this.dim.col]))return e=(i=r<this.xif.col[0]&&n<this.xif.col[0]?["","cell idx"]:r<this.xif.col[0]?[n<this.xif.row[1]?" ":n<this.xif.row[2]?n-this.xif.row[1]+1:n-this.xif.row[1]+this.pos.row+1,"cell idx"]:n<this.xif.row[0]?[r<this.xif.col[1]?" ":r<this.xif.col[2]?l(r-this.xif.col[1]):l(r-this.xif.col[1]+this.pos.col),"cell idx"]:r<this.xif.col[1]||n<this.xif.row[1]?[null,"cell fixed"]:r<this.xif.col[2]&&n<this.xif.row[2]?[((i=this._data)[e=n-this.xif.row[1]]||(i[e]=[]))[r-this.xif.col[1]],"cell frozen fixed"]:r<this.xif.col[2]?[((i=this._data)[e=this.pos.row+n-this.xif.row[1]]||(i[e]=[]))[r-this.xif.col[1]],"cell frozen"]:n<this.xif.row[2]?[((i=this._data)[e=n-this.xif.row[1]]||(i[e]=[]))[this.pos.col+r-this.xif.col[1]],"cell frozen"]:[((i=this._data)[e=this.pos.row+n-this.xif.row[1]]||(i[e]=[]))[this.pos.col+r-this.xif.col[1]],"cell"])[0],i=i[1],null==e&&(e=""),o=/frozen/.exec(i),s=r>=this.xif.col[0]&&n>=this.xif.row[0]?(this.cls.col[(o?0:this.pos.col)+r-this.xif.col[1]]||"")+" "+(this.cls.row[(o?0:this.pos.row)+n-this.xif.row[1]]||""):"",r=this._ccfg&&this._ccfg({type:"class",col:(o?0:this.pos.col)+r-this.xif.col[1],row:(o?0:this.pos.row)+n-this.xif.row[1]})||"",t.className=[i,s,r].filter(function(t){return t.trim()}).join(" ").trim(),null!==e?"object"!=typeof e?t.textContent=e:"dom"===e.type?(t.textContent="",t.appendChild(e.node)):void 0:void 0},_md:function(t){var e,i,o,s,r,n,l,h,c;for(null==t&&(t=1),e=this.dom.inner,o=i=0<(i=(t=Math.round(Math.abs(t)))-(this.dim.row-this.fix.row))?i:0;o<t;++o)for(s=o,r=0,n=this.dim.col;r<n&&(l=r,h=this.dim.col*this.fix.row,e.childNodes[h]);++r)e.removeChild(e.childNodes[h]);for(o=i;o<t;++o)for(s=o,r=0,n=this.dim.col;r<n;++r)l=r,c=document.createElement("div"),this._content({x:l,y:this.dim.row+s,n:c}),e.appendChild(c);return this.pos.row+=t},_mu:function(t){var e,i,o,s,r,n,l,h,c,d,a=[];if(null==t&&(t=1),e=this.dom.inner,!(this.pos.row<=0)){for(s=i=0<(o=(t=(t=Math.round(Math.abs(t)))>=this.pos.row?this.pos.row:t)-(this.dim.row-this.xif.row[2]))?o:0;s<t;++s)for(r=s,n=0,l=this.dim.col;n<l&&(h=n,e.childNodes.length);++n)e.removeChild(e.childNodes[e.childNodes.length-1]);for(this.pos.row-=t,s=i;s<t;++s){for(r=s,c=[],n=0,l=this.dim.col;n<l;++n)h=n,d=document.createElement("div"),this._content({x:h,y:r+this.xif.row[2],n:d}),c.push(e.insertBefore(d,e.childNodes[h+(r-i)*this.dim.col+this.dim.col*this.xif.row[2]]));a.push(c)}return a}},_mr:function(t){var e,i,o,s,r,n,l,h;for(null==t&&(t=1),e=this.dom.inner,o=0<(i=(t=Math.round(Math.abs(t)))-(this.dim.col-this.fix.col))?i:0;o<t;++o)for(s=o,r=0,n=this.dim.row;r<n;++r)l=r,e.removeChild(e.childNodes[l*this.dim.col+this.fix.col]),h=document.createElement("div"),this._content({x:this.dim.col+s,y:l,n:h}),e.insertBefore(h,e.childNodes[(l+1)*this.dim.col-1]);return this.pos.col+=t,this.regrid()},_ml:function(t){var e,i,o,s,r,n,l,h,c;if(null==t&&(t=1),e=this.dom.inner,(t=Math.round(Math.abs(t)))>=this.pos.col&&(t=this.pos.col),!(this.pos.col<=0||t<=0)){for(i=0<(o=t-(this.dim.col-this.xif.col[2]))?o:0,this.pos.col-=t,s=i;s<t;++s)for(r=s,n=0,l=this.dim.row;n<l;++n)h=n,e.removeChild(e.childNodes[(h+1)*this.dim.col-1]),c=document.createElement("div"),this._content({x:r+this.xif.col[2],y:h,n:c}),e.insertBefore(c,e.childNodes[h*this.dim.col+this.xif.col[2]+r-i]);return this.regrid()}},goto:function(t){return o(this.pos,t=null==t?{row:0,col:0}:t),this.render()},render:function(){for(var t,e,i,o,s=0,r=this.dim.row;s<r;++s)for(t=s,e=0,i=this.dim.col;e<i;++e)o=e,this._content({x:o,y:t});return this.renderSelection()},move:function(t){var e,i,o,s,r;if(null==t&&(t={}),this.editing.on&&this.edited(),(t.node=this.les.node)&&(e=this.cell(t))){if(i=this.index(e),r=e.getBoundingClientRect(),o=this.dom.sheet.getBoundingClientRect(),r.x+r.width>o.x+o.width&&this._mr(1),r.y+r.height>o.y+o.height&&this._md(1),0===i.x){if(0===this.pos.col)return;this._ml(1)}if(0===i.y){if(0===this.pos.row)return;this._mu(1)}if((e=this.cell(t))||(e=this.cell({col:i.col,row:i.row})))return this.les.node=e,t.select?(r={col:(s=this.index(e)).col,row:s.row},this.les.end===this.les.start&&(this.les.end=JSON.parse(JSON.stringify(this.les.start))),r.col<this.les.start.col&&(r.col<this.les.end.col||null==this.les.end.col)&&((this.les.start.col>this.les.end.col?this.les.end:this.les.start).col=r.col),r.row<this.les.start.row&&(r.row<this.les.end.row||null==this.les.end.row)&&((this.les.start.row>this.les.end.row?this.les.end:this.les.start).row=r.row),r.col>this.les.start.col&&r.col>this.les.end.col&&((this.les.start.col<this.les.end.col?this.les.end:this.les.start).col=r.col),r.row>this.les.start.row&&r.row>this.les.end.row&&((this.les.start.row<this.les.end.row?this.les.end:this.les.start).row=r.row)):this.les.start=this.les.end={col:(s=this.index(e)).col,row:s.row},this.renderSelection()}},edit:function(t){var e,i,o,s,r,n,l=t.node,t=t.quick;if(this._editing&&!(!(e=this.index(l))||e.col<0||e.row<0||this._ccfg&&this._ccfg({row:e.row,col:e.col,type:"readonly"})))return(e=this.editing).node=l,e.quick=t,e.on=!0,this.dom.layout.textContent=l.textContent,i=this.dom.layout.getBoundingClientRect(),o=l.getBoundingClientRect(),s=this.dom.sheet.getBoundingClientRect(),n=(e=[this.dom.sheet.scrollLeft,this.dom.sheet.scrollTop])[0],r=e[1],(e=this.dom.edit.style).left=o.x-s.x+n-2+"px",e.top=o.y-s.y+r-2+"px",e.width="fit-content",e.height="fit-content",this.dom.edit.classList.toggle("show",!0),(e=this.dom.textarea.style).width=Math.max(i.width,o.width+1)+"px",e.height=Math.max(i.height,o.height+1)+"px",this.dom.textarea.value=n=!t&&l.textContent||"",this.dom.textarea.focus(),this.dom.textarea.setSelectionRange(n.length,n.length)},edited:function(t){if(null==t&&(t={}),this.editing.on)return t.cancel||this.set({row:this.les.start.row,col:this.les.start.col,data:this.dom.textarea.value||""}),this.dom.edit.classList.toggle("show",!1),(t=this.editing).node=null,t.on=!1,t},index:function(t){var e,t=Array.from(this.dom.inner.childNodes).indexOf(t);return t<0?null:{x:e=t%this.dim.col,y:t=(t-e)/this.dim.col,col:e<this.xif.col[1]?-1:e<this.xif.col[2]?e-this.xif.col[1]:e-this.xif.col[1]+this.pos.col,row:t<this.xif.row[1]?-1:t<this.xif.row[2]?t-this.xif.row[1]:t-this.xif.row[1]+this.pos.row}},cell:function(t){var e,i,o=(t=null==t?{}:t).roughly;if(null!=t.col||null!=t.row){if(t.col<this.frozen.col)e=t.col;else if(t.col-this.pos.col<this.frozen.col){if(!o)return null;e=this.frozen.col}else e=t.col-this.pos.col;if(t.row<this.frozen.row)i=t.row;else if(t.row-this.pos.row<this.frozen.row){if(!o)return null;i=this.frozen.row}else i=t.row-this.pos.row;return i=(o=[e+this.xif.col[1],i+this.xif.row[1]])[1],(e=o[0])<0||i<0||e>=this.dim.col||i>=this.dim.row?null:this.dom.inner.childNodes[i*this.dim.col+e]}if(o=t.node?this.index(t.node):{y:0,x:0})return i=o.y+(t.y||0),e=o.x+(t.x||0),this.dom.inner.childNodes[i*this.dim.col+e]},editing:function(t){return null==t?this._editing:this._editing=!!t},renderSelection:function(t,e){var i,o,s,r,n,l,h,c,d,a,u,f,m,w=this;if(null==e&&(e={}),(t=t||this.les).start)return n=(i=this._bound({defined:!1,sel:t})).sc,o=i.ec,h=i.sr,s=i.er,r=this.dom.inner.getBoundingClientRect(),m=(i=[this.cell({col:this.pos.col+this.frozen.col,row:this.pos.row+this.frozen.row}),this.cell({col:n,row:h,roughly:!0}),this.cell({col:n,row:s,roughly:!0}),this.cell({col:o,row:h,roughly:!0}),this.cell({col:o,row:s,roughly:!0}),this.cell({col:this.pos.col+this.dim.col-2,row:this.pos.row+this.dim.row-2})].map(function(t){return t?t.getBoundingClientRect():null}))[0],l=i[1],a=i[2],d=i[3],u=i[4],f=i[5],m.width=0,m.height=0,n=(l||a||(n>this.pos.col?f:m)).x-r.x,l=(l||d||(h>this.pos.row?f:m)).y-r.y,h=o-this.pos.col<0,c=s-this.pos.row<0,d=(d||u||f||m).x+(h?0:(d||u||f||m).width)-r.x-n+1,a=(a||u||f||m).y+(c?0:(a||u||f||m).height)-r.y-l+1,null==o&&(d=this.root.getBoundingClientRect().width),null==s&&(a=this.root.getBoundingClientRect().height),f=(u=this.les.node)?u.getBoundingClientRect():null,(i=(m=e.cut?this.dom["range-cut"]:this.dom.range).style).left=n+"px",i.top=l+"px",i.width=d+"px",i.height=a+"px",m.classList.toggle("show",!0),e.cut||(f&&((i=this.dom.caret.style).left=f.x-r.x-1+"px",i.top=f.y-r.y-1+"px",i.width=(h?0:f.width)+2+"px",i.height=(c?0:f.height)+2+"px",i.zIndex=t.start.row+this.xif.row[1]<this.xif.row[2]&&t.start.col+this.xif.col[1]<this.xif.col[2]?101:t.start.row+this.xif.row[1]<this.xif.row[2]||t.start.col+this.xif.col[1]<this.xif.col[2]?20:15),this.dom.caret.classList.toggle("show",!!f)),setTimeout(function(){return w.dom.textarea.focus({preventScroll:!0})},0);this.dom.caret.classList.toggle("show",!1),this.dom.range.classList.toggle("show",!1)},data:function(t){return null==t?this._data:(this._data=t,this.render())},sort:function(i){var o,t,s=this;return null==i&&(i={}),t=this._bound({defined:!1}),o=t.sc,t.ec,t.sr,t.er,(t=this._data.map(function(t,e){return{d:t,i:e}})).sort(function(t,e){return t.i<s.frozen.row&&e.i>=s.frozen.row?-1:e.i<s.frozen.row&&t.i>=s.frozen.row?1:(t=isNaN(+t.d[o])?t.d[o]:+t.d[o],e=isNaN(+e.d[o])?e.d[o]:+e.d[o],("asc"===i.dir?1:-1)*(e<t?1:t<e?-1:0))}),this._data=t.map(function(t){return t.d}),this.fire("change",{row:0,col:0,data:this._data,range:!0}),this.renderSelection(),this.render()},insert:function(){var t,e=this._bound({defined:!1}),i=e.sc,o=e.ec,s=e.sr,e=e.er;null==o&&(t=this._data.splice(s,0,[])),null==e&&(t=this._data.map(function(t){return t.splice(i,0,"")})),this.fire("change",{row:s,col:i,data:t,range:!0}),this.les.end=this.les.start,this.renderSelection(),this.render()},slice:function(){var t,e=this._bound({defined:!1}),i=e.sc,o=e.ec,s=e.sr,e=e.er;null==o&&(t=this._data.splice(s,e-s+1)),null==e&&(t=this._data.map(function(t){return t.splice(i,o-i+1)})),this.fire("change",{row:s,col:i,data:t,range:!0}),this.les.end=this.les.start,this.renderSelection(),this.render()}}),"undefined"!=typeof module&&null!==module?module.exports=t:"undefined"!=typeof window&&null!==window&&(window.sheet=t)}.call(this);
package/package.json CHANGED
@@ -1 +1 @@
1
- {"author":"zbryikt","name":"@plotdb/sheet","license":"MIT","description":"spreadsheet","version":"0.6.8","style":"index.min.css","browser":"index.min.js","main":"index.min.js","homepage":"https://github.com/plotdb/sheet","repository":{"type":"git","url":"https://github.com/plotdb/sheet"},"engines":{"node":">=10.14.1","npm":">=6.4.1"},"scripts":{"start":"npx server -r web -o true","deploy":"npx deploy web/static"},"devDependencies":{"@loadingio/bootstrap.ext":"^0.0.11","@loadingio/debounce.js":"1.0.1","@loadingio/ldquery":"^3.0.5","@plotdb/csscope":"^5.0.3","@plotdb/datadom":"^0.2.0","@plotdb/json0":"^0.0.5","@plotdb/rescope":"^5.0.11","@zbryikt/template":"^2.3.45","body-parser":"^1.19.0","bootstrap":"^4.5.2","bootstrap.native":"^3.0.13","dompurify":"^2.2.6","fedep":"^1.1.11","jsoneditor":"^9.1.1","ldcover":"^3.5.3","ldiconfont":"^0.2.6","ldview":"^1.4.0","livescript":"^1.6.0","papaparse":"^5.4.1","proxise":"^1.0.1","sharedb-wrapper":"^1.0.0","stylus":"^0.55.0","uglify-js":"^3.13.1","uglifycss":"^0.0.29"},"frontendDependencies":{"root":"web/static/assets/lib","modules":["bootstrap","@loadingio/bootstrap.ext","bootstrap.native","@loadingio/ldquery","@loadingio/debounce.js","dompurify","ldview","ldcover","jsoneditor","ldiconfont","proxise","papaparse","@plotdb/datadom","@plotdb/csscope","@plotdb/rescope","sharedb-wrapper","@plotdb/json0"]}}
1
+ {"author":"zbryikt","name":"@plotdb/sheet","license":"MIT","description":"spreadsheet","version":"0.6.9","style":"index.min.css","browser":"index.min.js","main":"index.min.js","homepage":"https://github.com/plotdb/sheet","repository":{"type":"git","url":"https://github.com/plotdb/sheet"},"engines":{"node":">=10.14.1","npm":">=6.4.1"},"scripts":{"start":"npx server -r web -o true","deploy":"npx deploy web/static"},"devDependencies":{"@loadingio/bootstrap.ext":"^0.0.11","@loadingio/debounce.js":"1.0.1","@loadingio/ldquery":"^3.0.5","@plotdb/csscope":"^5.0.3","@plotdb/datadom":"^0.2.0","@plotdb/json0":"^0.0.5","@plotdb/rescope":"^5.0.11","@zbryikt/template":"^2.3.45","body-parser":"^1.19.0","bootstrap":"^4.5.2","bootstrap.native":"^3.0.13","dompurify":"^2.2.6","fedep":"^1.1.11","jsoneditor":"^9.1.1","ldcover":"^3.5.3","ldiconfont":"^0.2.6","ldview":"^1.4.0","livescript":"^1.6.0","papaparse":"^5.4.1","proxise":"^1.0.1","sharedb-wrapper":"^1.0.0","stylus":"^0.55.0","uglify-js":"^3.13.1","uglifycss":"^0.0.29"},"frontendDependencies":{"root":"web/static/assets/lib","modules":["bootstrap","@loadingio/bootstrap.ext","bootstrap.native","@loadingio/ldquery","@loadingio/debounce.js","dompurify","ldview","ldcover","jsoneditor","ldiconfont","proxise","papaparse","@plotdb/datadom","@plotdb/csscope","@plotdb/rescope","sharedb-wrapper","@plotdb/json0"]}}