@plotdb/sheet 0.4.4 → 0.5.1
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 +12 -0
- package/README.md +10 -0
- package/index.js +73 -22
- package/index.min.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Change Logs
|
|
2
2
|
|
|
3
|
+
## v0.5.1
|
|
4
|
+
|
|
5
|
+
- upgrade dev modules and fix vulnerabilities
|
|
6
|
+
- add `slice` api
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
## v0.5.0
|
|
10
|
+
|
|
11
|
+
- add `select` api for set / get selection status
|
|
12
|
+
- add test code for selection in demo page
|
|
13
|
+
|
|
14
|
+
|
|
3
15
|
## v0.4.4
|
|
4
16
|
|
|
5
17
|
- fix bug: selection should also be rendered when `render` is called.
|
package/README.md
CHANGED
|
@@ -62,6 +62,16 @@ initialize:
|
|
|
62
62
|
- return current data if `d` is omitted.
|
|
63
63
|
- `d` is in the same format with the constructor `data` option
|
|
64
64
|
- `size({row, col})`: update grid size.
|
|
65
|
+
- `select(opt)`: set / get selection range
|
|
66
|
+
- if opt is omitted, return current selection status, which is:
|
|
67
|
+
- null, if no selection available.
|
|
68
|
+
- the selection object with fields as below:
|
|
69
|
+
- `col`: index of column. omitted for selecting everything on a row.
|
|
70
|
+
- `colspan`: span of column. will be 1 if omitted
|
|
71
|
+
- `row`: index of row. omitted for selecting everything on a column.
|
|
72
|
+
- `rowspan`: span of row. will be 1 if omitted
|
|
73
|
+
- `{}` = the whole table selected, based on the definition of the selection object.
|
|
74
|
+
- otherwise, set selection based on the `opt` selection range object described as above.
|
|
65
75
|
|
|
66
76
|
|
|
67
77
|
## Event
|
package/index.js
CHANGED
|
@@ -277,7 +277,7 @@
|
|
|
277
277
|
}
|
|
278
278
|
});
|
|
279
279
|
dom.addEventListener('keydown', function(e){
|
|
280
|
-
var code, ref$, sc, ec, sr, er, data, res$, i$, row, lresult$, j$, col,
|
|
280
|
+
var code, ref$, sc, ec, sr, er, data, res$, i$, row, lresult$, j$, col, opt;
|
|
281
281
|
code = e.keyCode;
|
|
282
282
|
if (e.keyCode === 67 && (e.metaKey || e.ctrlKey)) {
|
|
283
283
|
return this$.copy();
|
|
@@ -314,27 +314,7 @@
|
|
|
314
314
|
});
|
|
315
315
|
}
|
|
316
316
|
if (code === 189 && (e.metaKey || e.ctrlKey)) {
|
|
317
|
-
|
|
318
|
-
defined: false
|
|
319
|
-
}), sc = ref$.sc, ec = ref$.ec, sr = ref$.sr, er = ref$.er;
|
|
320
|
-
if (ec == null) {
|
|
321
|
-
d = this$._data.splice(sr, er - sr + 1);
|
|
322
|
-
}
|
|
323
|
-
if (er == null) {
|
|
324
|
-
d = this$._data.map(function(it){
|
|
325
|
-
return it.splice(sc, ec - sc + 1);
|
|
326
|
-
});
|
|
327
|
-
}
|
|
328
|
-
this$.fire('change', {
|
|
329
|
-
row: sr,
|
|
330
|
-
col: sc,
|
|
331
|
-
data: d,
|
|
332
|
-
range: true
|
|
333
|
-
});
|
|
334
|
-
this$.les.end = this$.les.start;
|
|
335
|
-
this$.renderSelection();
|
|
336
|
-
this$.render();
|
|
337
|
-
return;
|
|
317
|
+
this$.slice();
|
|
338
318
|
}
|
|
339
319
|
opt = (function(){
|
|
340
320
|
switch (code) {
|
|
@@ -451,6 +431,52 @@
|
|
|
451
431
|
passive: false
|
|
452
432
|
});
|
|
453
433
|
},
|
|
434
|
+
select: function(o){
|
|
435
|
+
var ret, that;
|
|
436
|
+
if (!arguments.length) {
|
|
437
|
+
ret = {};
|
|
438
|
+
if (!this.les.start) {
|
|
439
|
+
return null;
|
|
440
|
+
}
|
|
441
|
+
ret.col = this.les.start.col;
|
|
442
|
+
ret.row = this.les.start.row;
|
|
443
|
+
if (!this.les.end) {
|
|
444
|
+
ret.colspan = 1;
|
|
445
|
+
ret.rowspan = 1;
|
|
446
|
+
return ret;
|
|
447
|
+
}
|
|
448
|
+
if (this.les.end.col == null) {
|
|
449
|
+
delete ret.col;
|
|
450
|
+
} else {
|
|
451
|
+
ret.colspan = this.les.end.col - ret.col + 1;
|
|
452
|
+
}
|
|
453
|
+
if (this.les.end.row == null) {
|
|
454
|
+
delete ret.row;
|
|
455
|
+
} else {
|
|
456
|
+
ret.rowspan = this.les.end.row - ret.row + 1;
|
|
457
|
+
}
|
|
458
|
+
return ret;
|
|
459
|
+
}
|
|
460
|
+
this.les = {};
|
|
461
|
+
if (o) {
|
|
462
|
+
this.les = {
|
|
463
|
+
start: {
|
|
464
|
+
col: 0,
|
|
465
|
+
row: 0
|
|
466
|
+
},
|
|
467
|
+
end: {}
|
|
468
|
+
};
|
|
469
|
+
if (o.row != null) {
|
|
470
|
+
this.les.start.row = o.row;
|
|
471
|
+
this.les.end.row = o.row + ((that = o.rowspan) ? that > 1 ? that : 1 : 1) - 1;
|
|
472
|
+
}
|
|
473
|
+
if (o.col != null) {
|
|
474
|
+
this.les.start.col = o.col;
|
|
475
|
+
this.les.end.col = o.col + ((that = o.colspan) ? that > 1 ? that : 1 : 1) - 1;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
this.renderSelection();
|
|
479
|
+
},
|
|
454
480
|
_bound: function(o){
|
|
455
481
|
var sel, ref$, p1, p2, sc, ec, sr, er;
|
|
456
482
|
o == null && (o = {});
|
|
@@ -996,6 +1022,8 @@
|
|
|
996
1022
|
sel = this.les;
|
|
997
1023
|
}
|
|
998
1024
|
if (!sel.start) {
|
|
1025
|
+
this.dom.caret.classList.toggle('show', false);
|
|
1026
|
+
this.dom.range.classList.toggle('show', false);
|
|
999
1027
|
return;
|
|
1000
1028
|
}
|
|
1001
1029
|
ref$ = this._bound({
|
|
@@ -1091,6 +1119,29 @@
|
|
|
1091
1119
|
}
|
|
1092
1120
|
this._data = it;
|
|
1093
1121
|
return this.render();
|
|
1122
|
+
},
|
|
1123
|
+
slice: function(){
|
|
1124
|
+
var ref$, sc, ec, sr, er, d;
|
|
1125
|
+
ref$ = this._bound({
|
|
1126
|
+
defined: false
|
|
1127
|
+
}), sc = ref$.sc, ec = ref$.ec, sr = ref$.sr, er = ref$.er;
|
|
1128
|
+
if (ec == null) {
|
|
1129
|
+
d = this._data.splice(sr, er - sr + 1);
|
|
1130
|
+
}
|
|
1131
|
+
if (er == null) {
|
|
1132
|
+
d = this._data.map(function(it){
|
|
1133
|
+
return it.splice(sc, ec - sc + 1);
|
|
1134
|
+
});
|
|
1135
|
+
}
|
|
1136
|
+
this.fire('change', {
|
|
1137
|
+
row: sr,
|
|
1138
|
+
col: sc,
|
|
1139
|
+
data: d,
|
|
1140
|
+
range: true
|
|
1141
|
+
});
|
|
1142
|
+
this.les.end = this.les.start;
|
|
1143
|
+
this.renderSelection();
|
|
1144
|
+
this.render();
|
|
1094
1145
|
}
|
|
1095
1146
|
});
|
|
1096
1147
|
if (typeof module != 'undefined' && module !== null) {
|
package/index.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){var a,u,n,t;function o(t,e){var i,o={}.hasOwnProperty;for(i in e)o.call(e,i)&&(t[i]=e[i]);return t}a=function(t){return Papa.parse(t).data},u=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},n=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="",r=0;r<=e;++r)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._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"].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"].map(function(t){return i.dom.sheet.appendChild(i.dom[t])}),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,r,n=[],s=[],l=1,h=arguments.length;l<h;++l)s.push(arguments[l]);for(e=s,l=0,o=(i=this.evtHandler[t]||[]).length;l<o;++l)r=i[l],n.push(r.apply(this,e));return n},_init:function(){for(var t,e,i,o,d,f=this,r=0,n=this.dim.row;r<n;++r)for(t=r,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()}),(d=this.dom.sheet).addEventListener("mousedown",function(t){var e,i,o;if(f.edited(),e=u(t.target,".cell",d))return(o={row:(i=f.index(e)).row,col:i.col}).col<0||o.row<0?(t.shiftKey&&f.les.start||(f.les.node=f.cell(f.les.start),f.les.start={col:0<(i=o.col)?i:0,row:0<(i=o.row)?i:0}),f.les.end={col:0<=o.col?o.col:void 0,row:0<=o.row?o.row:void 0},void f.renderSelection()):(t.shiftKey&&f.les.start?f.les.end=o:(f.les.start=f.les.end=o,f.les.node=e),f.renderSelection())}),d.addEventListener("mousemove",function(t){var e;if(!f.editing.on&&t.buttons&&(e=u(t.target,".cell",d)))return e={row:(e=f.index(e)).row,col:e.col},f.les.end={col:0<=e.col?e.col:void 0,row:0<=e.row?e.row:void 0},f.renderSelection()}),d.addEventListener("dblclick",function(t){if(t=u(t.target,".cell",d))return f.edit({node:t,quick:!1})}),document.body.addEventListener("paste",function(t){var e,i,o,r,n,s,l,h,c;if(u(document.activeElement,".sheet",d)&&f.les.start&&(r=t.clipboardData.getData("text"),e=a(r),f.set({row:f.les.start.row,col:f.les.start.col,data:e,range:!0}),f.sel.cut)){if(f._toText({sel:f.sel.cut})===r){for(i=(e=f._bound({sel:f.sel.cut})).sc,o=e.ec,r=e.sr,n=e.er,s=r;s<=n;++s)for(l=s,h=i;h<=o;++h)c=h,f.set({row:l,col:c,data:""});navigator.clipboard.writeText("")}return f.sel.cut=null,f.dom["range-cut"].classList.toggle("show",!1)}}),d.addEventListener("keydown",function(t){var e,i,o,r,n,s,l,h,c,d,a,u=t.keyCode;if(67===t.keyCode&&(t.metaKey||t.ctrlKey))return f.copy();if(88===t.keyCode&&(t.metaKey||t.ctrlKey))return f.copy({cut:!0});if(f.eventInScope(t)){if(8===u){if(!f.les.node)return;for(e=f._bound(),i=e.sc,o=e.ec,r=e.sr,n=e.er,l=[],h=r;h<=n;++h){for(c=[],d=i;d<=o;++d)c.push("");l.push(c)}s=l,f.set({row:r,col:i,data:s,range:!0})}return 189===u&&(t.metaKey||t.ctrlKey)?(e=f._bound({defined:!1}),i=e.sc,o=e.ec,r=e.sr,n=e.er,null==o&&(a=f._data.splice(r,n-r+1)),null==n&&(a=f._data.map(function(t){return t.splice(i,o-i+1)})),f.fire("change",{row:r,col:i,data:a,range:!0}),f.les.end=f.les.start,f.renderSelection(),void f.render()):!(a=function(){switch(u){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};default:return null}}())||f.editing.on&&!f.editing.quick?void 0:(f.move(a),t.stopPropagation(),t.preventDefault(),f.dom.sheet.focus())}}),d.addEventListener("keypress",function(t){if(31!==t.keyCode||!t.metaKey&&!t.ctrlKey)return f.les.node&&!f.editing.on?f.edit({node:f.les.node,quick:13!==t.keyCode}):void 0}),this.dom.textarea.addEventListener("keydown",function(t){var e,i,o;return 27===t.keyCode?(f.edited({cancel:!0}),t.stopPropagation(),t.preventDefault(),void f.dom.sheet.focus()):13!==t.keyCode||t.altKey||t.metaKey?13===t.keyCode&&(t.altKey||t.metaKey)?(f.dom.textarea.value+="\n",f.dom.layout.textContent=f.dom.textarea.value+" ",e=f.dom.layout.getBoundingClientRect(),i=f.editing.node.getBoundingClientRect(),(o=f.dom.textarea.style).width=Math.max(e.width,i.width+1)+"px",o.height=Math.max(e.height,i.height+1)+"px",o):void 0:(f.move({y:1,x:0}),t.stopPropagation(),t.preventDefault(),void f.dom.sheet.focus())}),document.addEventListener("wheel",function(t){var e,i,o,r,n=f.eventInScope(t);return(null==f.opt.scrollLock||f.opt.scrollLock)&&Math.abs(t.deltaX)>Math.abs(t.deltaY)&&(!n&&t.target!==document.body||t.preventDefault()),!!n&&(e=f.scrollPos,i=(r=[t.deltaX,t.deltaY])[0],o=r[1],i=(r=Math.abs(i)>Math.abs(o)?[i,0]:[0,o])[0],o=r[1],n=(r=[e.x,e.y])[0],r=r[1],e.x+=i/30,e.y+=o/30,i=Math.round(e.x)-Math.round(n),0<(o=Math.round(e.y)-Math.round(r))?f._md(o):o<0?f._mu(o):0<i?f._mr(i):i<0&&f._ml(i),f.renderSelection(),t.preventDefault())},{passive:!1})},_bound:function(t){var e,i=(n=(r=(n=[(o=(t=null==t?{}:t).sel||this.les).start,o.end])[0]).col<(e=n[1]).col||null==e.col?[r.col,e.col]:[e.col,r.col])[0],o=n[1],r=(n=r.row<e.row||null==e.row?[r.row,e.row]:[e.row,r.row])[0],n=n[1];return null!=t.defined&&!t.defined||(null==o&&(o=Math.max.apply(Math,this._data.map(function(t){return t.length}))),null==n&&(n=this._data.length)),{sc:i,ec:o,sr:r,er:n}},_toText:function(t){var e,i,o,r,n,s,l,h,c,d,t=t.sel;if(!t||!t.start)return"";for(e=[],o=(i=this._bound({sel:t})).sc,r=i.ec,t=i.sr,n=i.er,s=t;s<=n;++s){for(l=s,h=[],c=o;c<=r;++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 u(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,r,n,s,l,h,c=t.row,d=t.col,a=t.data,t=t.range;if(t)for(i=0,o=a.length;i<o;++i)for(n=0,s=a[r=i].length;n<s;++n)l=n,((e=this._data)[h=r+c]||(e[h]=[]))[l+d]=a[r][l],this._content({y:r+c-this.pos.row+this.xif.row[1],x:l+d-this.pos.col+this.xif.col[1]});else((e=this._data)[c]||(e[c]=[]))[d]=a,this._content({y:c-this.pos.row+this.xif.row[1],x:d-this.pos.col+this.xif.col[1]});return this.fire("change",{row:c,col:d,data:a,range:!!t})},_content:function(t){var e,i,o=t.x,r=t.y,t=t.n;if(t=t||this.dom.inner.childNodes[o+r*this.dim.col])return e=(i=o<this.xif.col[0]&&r<this.xif.col[0]?["","cell idx"]:o<this.xif.col[0]?[r<this.xif.row[1]?" ":r<this.xif.row[2]?r-this.xif.row[1]+1:r-this.xif.row[1]+this.pos.row+1,"cell idx"]:r<this.xif.row[0]?[o<this.xif.col[1]?" ":o<this.xif.col[2]?n(o-this.xif.col[1]):n(o-this.xif.col[1]+this.pos.col),"cell idx"]:o<this.xif.col[1]||r<this.xif.row[1]?[null,"cell fixed"]:o<this.xif.col[2]&&r<this.xif.row[2]?[((i=this._data)[e=r-this.xif.row[1]]||(i[e]=[]))[o-this.xif.col[1]],"cell frozen fixed"]:o<this.xif.col[2]?[((i=this._data)[e=this.pos.row+r-this.xif.row[1]]||(i[e]=[]))[o-this.xif.col[1]],"cell frozen"]:r<this.xif.row[2]?[((i=this._data)[e=r-this.xif.row[1]]||(i[e]=[]))[this.pos.col+o-this.xif.col[1]],"cell frozen"]:[((i=this._data)[e=this.pos.row+r-this.xif.row[1]]||(i[e]=[]))[this.pos.col+o-this.xif.col[1]],"cell"])[0],i=i[1],null==e&&(e=""),r=o>=this.xif.col[0]&&r>=this.xif.row[0]?(this.cls.col[this.pos.col+o-this.xif.col[1]]||"")+" "+(this.cls.row[this.pos.row+r-this.xif.row[1]]||""):"",t.className=i+" "+r,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,r,n,s,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(r=o,n=0,s=this.dim.col;n<s&&(l=n,h=this.dim.col*this.fix.row,e.childNodes[h]);++n)e.removeChild(e.childNodes[h]);for(o=i;o<t;++o)for(r=o,n=0,s=this.dim.col;n<s;++n)l=n,c=document.createElement("div"),this._content({x:l,y:this.dim.row+r,n:c}),e.appendChild(c);return this.pos.row+=t},_mu:function(t){var e,i,o,r,n,s,l,h,c,d,a=[];if(null==t&&(t=1),e=this.dom.inner,!(this.pos.row<=0)){for(r=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;r<t;++r)for(n=r,s=0,l=this.dim.col;s<l&&(h=s,e.childNodes.length);++s)e.removeChild(e.childNodes[e.childNodes.length-1]);for(this.pos.row-=t,r=i;r<t;++r){for(n=r,c=[],s=0,l=this.dim.col;s<l;++s)h=s,d=document.createElement("div"),this._content({x:h,y:n+this.xif.row[2],n:d}),c.push(e.insertBefore(d,e.childNodes[h+(n-i)*this.dim.col+this.dim.col*this.xif.row[2]]));a.push(c)}return a}},_mr:function(t){var e,i,o,r,n,s,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(r=o,n=0,s=this.dim.row;n<s;++n)l=n,e.removeChild(e.childNodes[l*this.dim.col+this.fix.col]),h=document.createElement("div"),this._content({x:this.dim.col+r,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,r,n,s,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,r=i;r<t;++r)for(n=r,s=0,l=this.dim.row;s<l;++s)h=s,e.removeChild(e.childNodes[(h+1)*this.dim.col-1]),c=document.createElement("div"),this._content({x:n+this.xif.col[2],y:h,n:c}),e.insertBefore(c,e.childNodes[h*this.dim.col+this.xif.col[2]+n-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,r=0,n=this.dim.row;r<n;++r)for(t=r,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,r;if(null==t&&(t={}),this.editing.on&&this.edited(),(t.node=this.les.node)&&(r=this.cell(t))){if(e=this.index(r),i=r.getBoundingClientRect(),o=this.dom.sheet.getBoundingClientRect(),i.x+i.width>o.x+o.width&&this._mr(1),i.y+i.height>o.y+o.height&&this._md(1),0===e.x){if(0===this.pos.col)return;this._ml(1)}if(0===e.y){if(0===this.pos.row)return;this._mu(1)}if(r=this.cell(t))return this.les.node=r,this.les.start=this.les.end={col:(r=this.index(r)).col,row:r.row},this.renderSelection()}},edit:function(t){var e,i,o,r,n,s=t.node,l=t.quick;if(this._editing&&!(!(n=this.index(s))||n.col<0||n.row<0))return(e=this.editing).node=s,e.quick=l,e.on=!0,this.dom.layout.textContent=s.textContent,i=this.dom.layout.getBoundingClientRect(),o=s.getBoundingClientRect(),r=this.dom.sheet.getBoundingClientRect(),t=(e=[this.dom.sheet.scrollLeft,this.dom.sheet.scrollTop])[0],n=e[1],(e=this.dom.edit.style).left=o.x-r.x+t-2+"px",e.top=o.y-r.y+n-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=s=!l&&s.textContent||"",this.dom.textarea.focus(),this.dom.textarea.setSelectionRange(s.length,s.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=Array.from(this.dom.inner.childNodes).indexOf(t);return e<0?null:{x:t=e%this.dim.col,y:e=(e-t)/this.dim.col,col:t<this.xif.col[1]?-1:t<this.xif.col[2]?t-this.xif.col[1]:t-this.xif.col[1]+this.pos.col,row:e<this.xif.row[1]?-1:e<this.xif.row[2]?e-this.xif.row[1]:e-this.xif.row[1]+this.pos.row}},cell:function(t){var e,i,o,r=(t=null==t?{}:t).roughly;if(null!=t.col){if(t.col<this.frozen.col)e=t.col;else if(t.col-this.pos.col<this.frozen.col){if(!r)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(!r)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}))throw new Error("node not found in sheet");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,r,n,s,l,h,c,d,a,u,f;if(null==e&&(e={}),(t=t||this.les).start)return l=(i=this._bound({defined:!1,sel:t})).sc,f=i.ec,h=i.sr,u=i.er,o=this.dom.inner.getBoundingClientRect(),a=(i=[this.cell({col:this.pos.col+this.frozen.col,row:this.pos.row+this.frozen.row}),this.cell({col:l,row:h,roughly:!0}),this.cell({col:l,row:u,roughly:!0}),this.cell({col:f,row:h,roughly:!0}),this.cell({col:f,row:u,roughly:!0})].map(function(t){return t?t.getBoundingClientRect():null}))[0],c=i[1],r=i[2],d=i[3],n=i[4],a.width=0,a.height=0,s=(c||r||a).x-o.x,l=(c||d||a).y-o.y,h=f-this.pos.col<0,c=u-this.pos.row<0,d=(d||n||a).x+(h?0:(d||n||a).width)-o.x-s+1,a=(r||n||a).y+(c?0:(r||n||a).height)-o.y-l+1,null==f&&(d=this.root.getBoundingClientRect().width),null==u&&(a=this.root.getBoundingClientRect().height),u=(f=this.cell(t.start))?f.getBoundingClientRect():null,(i=(f=e.cut?this.dom["range-cut"]:this.dom.range).style).left=s+"px",i.top=l+"px",i.width=d+"px",i.height=a+"px",f.classList.toggle("show",!0),e.cut?void 0:(u&&((i=this.dom.caret.style).left=u.x-o.x-1+"px",i.top=u.y-o.y-1+"px",i.width=(h?0:u.width)+2+"px",i.height=(c?0:u.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",!!u))},data:function(t){return null==t?this._data:(this._data=t,this.render())}}),"undefined"!=typeof module&&null!==module?module.exports=t:"undefined"!=typeof window&&null!==window&&(window.sheet=t)}.call(this);
|
|
1
|
+
!function(){var u,f,r,t;function o(t,e){var i,o={}.hasOwnProperty;for(i in e)o.call(e,i)&&(t[i]=e[i]);return t}u=function(t){return Papa.parse(t).data},f=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},r=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._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"].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"].map(function(t){return i.dom.sheet.appendChild(i.dom[t])}),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,a=this,s=0,r=this.dim.row;s<r;++s)for(t=s,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()}),(d=this.dom.sheet).addEventListener("mousedown",function(t){var e,i,o;if(a.edited(),e=f(t.target,".cell",d))return(o={row:(i=a.index(e)).row,col:i.col}).col<0||o.row<0?(t.shiftKey&&a.les.start||(a.les.node=a.cell(a.les.start),a.les.start={col:0<(i=o.col)?i:0,row:0<(i=o.row)?i:0}),a.les.end={col:0<=o.col?o.col:void 0,row:0<=o.row?o.row:void 0},void a.renderSelection()):(t.shiftKey&&a.les.start?a.les.end=o:(a.les.start=a.les.end=o,a.les.node=e),a.renderSelection())}),d.addEventListener("mousemove",function(t){var e;if(!a.editing.on&&t.buttons&&(e=f(t.target,".cell",d)))return e={row:(e=a.index(e)).row,col:e.col},a.les.end={col:0<=e.col?e.col:void 0,row:0<=e.row?e.row:void 0},a.renderSelection()}),d.addEventListener("dblclick",function(t){if(t=f(t.target,".cell",d))return a.edit({node:t,quick:!1})}),document.body.addEventListener("paste",function(t){var e,i,o,s,r,n,l,h,c;if(f(document.activeElement,".sheet",d)&&a.les.start&&(s=t.clipboardData.getData("text"),e=u(s),a.set({row:a.les.start.row,col:a.les.start.col,data:e,range:!0}),a.sel.cut)){if(a._toText({sel:a.sel.cut})===s){for(i=(e=a._bound({sel:a.sel.cut})).sc,o=e.ec,s=e.sr,r=e.er,n=s;n<=r;++n)for(l=n,h=i;h<=o;++h)c=h,a.set({row:l,col:c,data:""});navigator.clipboard.writeText("")}return a.sel.cut=null,a.dom["range-cut"].classList.toggle("show",!1)}}),d.addEventListener("keydown",function(t){var e,i,o,s,r,n,l,h,c,d=t.keyCode;if(67===t.keyCode&&(t.metaKey||t.ctrlKey))return a.copy();if(88===t.keyCode&&(t.metaKey||t.ctrlKey))return a.copy({cut:!0});if(a.eventInScope(t)){if(8===d){if(!a.les.node)return;for(e=(c=a._bound()).sc,i=c.ec,o=c.sr,s=c.er,r=[],n=o;n<=s;++n){for(l=[],h=e;h<=i;++h)l.push("");r.push(l)}c=r,a.set({row:o,col:e,data:c,range:!0})}if(189===d&&(t.metaKey||t.ctrlKey)&&a.slice(),(c=function(){switch(d){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};default:return null}}())&&(!a.editing.on||a.editing.quick))return a.move(c),t.stopPropagation(),t.preventDefault(),a.dom.sheet.focus()}}),d.addEventListener("keypress",function(t){if(31!==t.keyCode||!t.metaKey&&!t.ctrlKey)return a.les.node&&!a.editing.on?a.edit({node:a.les.node,quick:13!==t.keyCode}):void 0}),this.dom.textarea.addEventListener("keydown",function(t){var e,i,o;return 27===t.keyCode?(a.edited({cancel:!0}),t.stopPropagation(),t.preventDefault(),void a.dom.sheet.focus()):13!==t.keyCode||t.altKey||t.metaKey?13===t.keyCode&&(t.altKey||t.metaKey)?(a.dom.textarea.value+="\n",a.dom.layout.textContent=a.dom.textarea.value+" ",e=a.dom.layout.getBoundingClientRect(),i=a.editing.node.getBoundingClientRect(),(o=a.dom.textarea.style).width=Math.max(e.width,i.width+1)+"px",o.height=Math.max(e.height,i.height+1)+"px",o):void 0:(a.move({y:1,x:0}),t.stopPropagation(),t.preventDefault(),void a.dom.sheet.focus())}),document.addEventListener("wheel",function(t){var e,i,o,s,r=a.eventInScope(t);return(null==a.opt.scrollLock||a.opt.scrollLock)&&Math.abs(t.deltaX)>Math.abs(t.deltaY)&&(!r&&t.target!==document.body||t.preventDefault()),!!r&&(e=a.scrollPos,i=(s=[t.deltaX,t.deltaY])[0],o=s[1],i=(s=Math.abs(i)>Math.abs(o)?[i,0]:[0,o])[0],o=s[1],r=(s=[e.x,e.y])[0],s=s[1],e.x+=i/30,e.y+=o/30,i=Math.round(e.x)-Math.round(r),0<(o=Math.round(e.y)-Math.round(s))?a._md(o):o<0?a._mu(o):0<i?a._mr(i):i<0&&a._ml(i),a.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=(r=(s=(r=[(o=(t=null==t?{}:t).sel||this.les).start,o.end])[0]).col<(e=r[1]).col||null==e.col?[s.col,e.col]:[e.col,s.col])[0],o=r[1],s=(r=s.row<e.row||null==e.row?[s.row,e.row]:[e.row,s.row])[0],r=r[1];return null!=t.defined&&!t.defined||(null==o&&(o=Math.max.apply(Math,this._data.map(function(t){return t.length}))),null==r&&(r=this._data.length)),{sc:i,ec:o,sr:s,er:r}},_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 f(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=t.row,d=t.col,a=t.data,t=t.range;if(t)for(i=0,o=a.length;i<o;++i)for(r=0,n=a[s=i].length;r<n;++r)l=r,((e=this._data)[h=s+c]||(e[h]=[]))[l+d]=a[s][l],this._content({y:s+c-this.pos.row+this.xif.row[1],x:l+d-this.pos.col+this.xif.col[1]});else((e=this._data)[c]||(e[c]=[]))[d]=a,this._content({y:c-this.pos.row+this.xif.row[1],x:d-this.pos.col+this.xif.col[1]});return this.fire("change",{row:c,col:d,data:a,range:!!t})},_content:function(t){var e,i,o=t.x,s=t.y,t=t.n;if(t=t||this.dom.inner.childNodes[o+s*this.dim.col])return e=(i=o<this.xif.col[0]&&s<this.xif.col[0]?["","cell idx"]:o<this.xif.col[0]?[s<this.xif.row[1]?" ":s<this.xif.row[2]?s-this.xif.row[1]+1:s-this.xif.row[1]+this.pos.row+1,"cell idx"]:s<this.xif.row[0]?[o<this.xif.col[1]?" ":o<this.xif.col[2]?r(o-this.xif.col[1]):r(o-this.xif.col[1]+this.pos.col),"cell idx"]:o<this.xif.col[1]||s<this.xif.row[1]?[null,"cell fixed"]:o<this.xif.col[2]&&s<this.xif.row[2]?[((i=this._data)[e=s-this.xif.row[1]]||(i[e]=[]))[o-this.xif.col[1]],"cell frozen fixed"]:o<this.xif.col[2]?[((i=this._data)[e=this.pos.row+s-this.xif.row[1]]||(i[e]=[]))[o-this.xif.col[1]],"cell frozen"]:s<this.xif.row[2]?[((i=this._data)[e=s-this.xif.row[1]]||(i[e]=[]))[this.pos.col+o-this.xif.col[1]],"cell frozen"]:[((i=this._data)[e=this.pos.row+s-this.xif.row[1]]||(i[e]=[]))[this.pos.col+o-this.xif.col[1]],"cell"])[0],i=i[1],null==e&&(e=""),s=o>=this.xif.col[0]&&s>=this.xif.row[0]?(this.cls.col[this.pos.col+o-this.xif.col[1]]||"")+" "+(this.cls.row[this.pos.row+s-this.xif.row[1]]||""):"",t.className=i+" "+s,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;if(null==t&&(t={}),this.editing.on&&this.edited(),(t.node=this.les.node)&&(s=this.cell(t))){if(e=this.index(s),i=s.getBoundingClientRect(),o=this.dom.sheet.getBoundingClientRect(),i.x+i.width>o.x+o.width&&this._mr(1),i.y+i.height>o.y+o.height&&this._md(1),0===e.x){if(0===this.pos.col)return;this._ml(1)}if(0===e.y){if(0===this.pos.row)return;this._mu(1)}if(s=this.cell(t))return this.les.node=s,this.les.start=this.les.end={col:(s=this.index(s)).col,row:s.row},this.renderSelection()}},edit:function(t){var e,i,o,s,r,n=t.node,l=t.quick;if(this._editing&&!(!(r=this.index(n))||r.col<0||r.row<0))return(e=this.editing).node=n,e.quick=l,e.on=!0,this.dom.layout.textContent=n.textContent,i=this.dom.layout.getBoundingClientRect(),o=n.getBoundingClientRect(),s=this.dom.sheet.getBoundingClientRect(),t=(e=[this.dom.sheet.scrollLeft,this.dom.sheet.scrollTop])[0],r=e[1],(e=this.dom.edit.style).left=o.x-s.x+t-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=!l&&n.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=Array.from(this.dom.inner.childNodes).indexOf(t);return e<0?null:{x:t=e%this.dim.col,y:e=(e-t)/this.dim.col,col:t<this.xif.col[1]?-1:t<this.xif.col[2]?t-this.xif.col[1]:t-this.xif.col[1]+this.pos.col,row:e<this.xif.row[1]?-1:e<this.xif.row[2]?e-this.xif.row[1]:e-this.xif.row[1]+this.pos.row}},cell:function(t){var e,i,o,s=(t=null==t?{}:t).roughly;if(null!=t.col){if(t.col<this.frozen.col)e=t.col;else if(t.col-this.pos.col<this.frozen.col){if(!s)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(!s)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}))throw new Error("node not found in sheet");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;return null==e&&(e={}),(t=t||this.les).start?(l=(i=this._bound({defined:!1,sel:t})).sc,f=i.ec,h=i.sr,u=i.er,o=this.dom.inner.getBoundingClientRect(),a=(i=[this.cell({col:this.pos.col+this.frozen.col,row:this.pos.row+this.frozen.row}),this.cell({col:l,row:h,roughly:!0}),this.cell({col:l,row:u,roughly:!0}),this.cell({col:f,row:h,roughly:!0}),this.cell({col:f,row:u,roughly:!0})].map(function(t){return t?t.getBoundingClientRect():null}))[0],c=i[1],s=i[2],d=i[3],r=i[4],a.width=0,a.height=0,n=(c||s||a).x-o.x,l=(c||d||a).y-o.y,h=f-this.pos.col<0,c=u-this.pos.row<0,d=(d||r||a).x+(h?0:(d||r||a).width)-o.x-n+1,a=(s||r||a).y+(c?0:(s||r||a).height)-o.y-l+1,null==f&&(d=this.root.getBoundingClientRect().width),null==u&&(a=this.root.getBoundingClientRect().height),u=(f=this.cell(t.start))?f.getBoundingClientRect():null,(i=(f=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",f.classList.toggle("show",!0),e.cut?void 0:(u&&((i=this.dom.caret.style).left=u.x-o.x-1+"px",i.top=u.y-o.y-1+"px",i.width=(h?0:u.width)+2+"px",i.height=(c?0:u.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",!!u))):(this.dom.caret.classList.toggle("show",!1),void this.dom.range.classList.toggle("show",!1))},data:function(t){return null==t?this._data:(this._data=t,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.
|
|
1
|
+
{"author":"zbryikt","name":"@plotdb/sheet","license":"MIT","description":"spreadsheet","version":"0.5.1","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/debounce.js":"1.0.1","@loadingio/ldquery":"^3.0.4","@plotdb/csscope":"^5.0.2","@plotdb/datadom":"^0.2.0","@plotdb/json0":"^0.0.5","@plotdb/rescope":"^5.0.3","body-parser":"^1.19.0","bootstrap":"^4.5.2","@loadingio/bootstrap.ext":"^0.0.9","bootstrap.native":"^3.0.13","dompurify":"^2.2.6","fedep":"^1.1.7","jsoneditor":"^9.1.1","ldcover":"^3.3.0","ldiconfont":"^0.2.3","ldview":"^1.3.2","livescript":"^1.6.0","proxise":"^1.0.1","sharedb-wrapper":"^1.0.0","stylus":"^0.55.0","@zbryikt/template":"^2.3.45","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","@plotdb/datadom","@plotdb/csscope","@plotdb/rescope","sharedb-wrapper","@plotdb/json0"]}}
|