quill-table-up 3.2.0 → 3.2.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/README.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  Enhancement of quill table module
4
4
 
5
- [demo](https://zzxming.github.io/quill-table-up/)
5
+ [demo](https://quill-modules.github.io/quill-table-up/)
6
6
 
7
- [quill@1.3.7 table module](https://github.com/zzxming/quill-table)
7
+ [quill@1.3.7 table module](https://github.com/quill-modules/quill-table)
8
8
 
9
9
  - [x] complete UI operation process
10
10
  - [x] insert/delete row/column/table; merge/split cells
@@ -22,7 +22,7 @@ Enhancement of quill table module
22
22
  npm install quill-table-up
23
23
  ```
24
24
 
25
- > the registe module name is used internal. so if you want to change it, place use the function [`updateTableConstants`](https://github.com/zzxming/quill-table-up?tab=readme-ov-file#change-internal-constants-variable)
25
+ > the registe module name is used internal. so if you want to change it, place use the function [`updateTableConstants`](https://github.com/quill-modules/quill-table-up?tab=readme-ov-file#change-internal-constants-variable)
26
26
 
27
27
  ```js
28
28
  import Quill from 'quill';
@@ -63,7 +63,7 @@ const quill = new Quill('#editor', {
63
63
 
64
64
  ## Options
65
65
 
66
- **Full options usage see [demo](https://github.com/zzxming/quill-table-up/blob/master/docs/index.js#L38)**
66
+ **Full options usage see [demo](https://github.com/quill-modules/quill-table-up/blob/master/docs/index.js#L38)**
67
67
 
68
68
  | Attribute | Description | Type | Default |
69
69
  | ------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------ |
@@ -76,7 +76,7 @@ const quill = new Quill('#editor', {
76
76
  | autoMergeCell | empty row or column will auto merge to one | `boolean` | `true` |
77
77
  | modules | the module plugin to help user control about table operate. see [`Export Internal Module`](#export-internal-module) | `[]` | `{ module: Contstructor, options: any }[]` |
78
78
 
79
- > I'm not suggest to use `TableVirtualScrollbar` and `TableResizeLine` at same time, because it have a little conflict when user hover on it. Just like the first editor in [demo](https://zzxming.github.io/quill-table-up/)
79
+ > I'm not suggest to use `TableVirtualScrollbar` and `TableResizeLine` at same time, because it have a little conflict when user hover on it. Just like the first editor in [demo](https://quill-modules.github.io/quill-table-up/)
80
80
 
81
81
  > If you doesn't use `TableVirtualScrollbar`, you may need to set css `.ql-editor .ql-table-wrapper { scrollbar-width: auto; }` to display the browser origin scrollbar.
82
82
 
@@ -359,7 +359,7 @@ If you need to rewrite extends from quill `Block` or `Scroll` blot. you need to
359
359
 
360
360
  `Header`, `List'`, `Blockquote` and `CodeBlock` have been overrides. If you need to rewrite them, you need to rewrite them before `TableUp` registed.
361
361
 
362
- Please read [source code](https://github.com/zzxming/quill-table-up/tree/master/src/formats/overrides) to know those change.
362
+ Please read [source code](https://github.com/quill-modules/quill-table-up/tree/master/src/formats/overrides) to know those change.
363
363
 
364
364
  ```ts
365
365
  import { BlockOverride, ScrollOverride, } from 'quill-table-up';
@@ -385,8 +385,8 @@ You can change internal constants variable by importing `updateTableConstants` f
385
385
 
386
386
  It helps to migrate from other table modules with the same data structure.
387
387
 
388
- - [full variable demo](https://github.com/zzxming/quill-table-up/blob/master/docs/update-constants.js)
389
- - [change blot name that in delta demo](https://github.com/zzxming/quill-table-up/blob/master/docs/update-formats-value.js)
388
+ - [full variable demo](https://github.com/quill-modules/quill-table-up/blob/master/docs/update-constants.js)
389
+ - [change blot name that in delta demo](https://github.com/quill-modules/quill-table-up/blob/master/docs/update-formats-value.js)
390
390
 
391
391
  If you change the `TableWrapperFormat` blot name, you also need to add new css style to make toolbar icon have correct style.
392
392
 
package/dist/index.js CHANGED
@@ -142,5 +142,5 @@ import e from"quill";const t={container:`table-up-container`,tableCaption:`table
142
142
  </tr>
143
143
  </tbody>
144
144
  </table>
145
- `,t=document.createElement(`div`);t.className=J.className,t.innerHTML=e,t.style.position=`absolute`,t.style.left=`-9999px`,t.style.top=`-9999px`,t.style.visibility=`hidden`,this.quill.root.appendChild(t);let n=window.getComputedStyle(t.querySelector(`td`)),r=Number.parseFloat(n.borderWidth)||0;return this.quill.root.removeChild(t),r}fixUnusuaDeletelTable(e){let t=e.getColIds();if(t.length===0){e.remove();return}let n=e.getBodys(),r=e.tableId;for(let e of n){let n=e.getRows();if(n.length===0){e.remove();continue}let i=Array(n.length).fill(0).map(()=>Array(t.length).fill(!1));for(let[e,a]of n.entries()){let o=0,s=0,c=i[e],l=a.descendants(W);for(;s<t.length;){if(c[s]){s+=1;continue}let u=l[o];if(!u||u.colId!==t[s])a.insertBefore(qr(this.quill.scroll,{tableId:r,colId:t[s],rowId:a.rowId}),u);else{e+u.rowspan-1>=n.length&&(u.getCellInner().rowspan=n.length-e);let{colspan:t,rowspan:r}=u;if(t>1)for(let e=1;e<t;e++)c[s+e]=!0;if(r>1)for(let n=e+1;n<e+r;n++)for(let e=0;e<t;e++)i[n][s+e]=!0;o+=1}s+=1}if(o<l.length)for(let e=o;e<l.length;e++)l[e].remove()}}}balanceTables(){for(let e of this.quill.scroll.descendants(K))e.checkEmptyCol(this.options.autoMergeCell),e.checkEmptyRow(this.options.autoMergeCell),this.fixUnusuaDeletelTable(e)}listenBalanceCells(){this.quill.on(e.events.SCROLL_OPTIMIZE,t=>{t.some(e=>[`TD`,`TR`,`TBODY`,`TABLE`].includes(e.target.tagName)?(this.fixTableByLisenter(),!0):!1);for(let n of t){let t=n.target;if(t.tagName===`TABLE`){let n=e.find(t);if(n){n.sortMergeChildren();break}}}})}deleteTable(e){e.length!==0&&u(e[0],t.tableMain)?.remove()}appendRow(e,n){if(e.length<=0)return;let r=e[n?e.length-1:0],[i,a]=d(r,[t.tableMain,t.tableRow]),o=i.getRows().indexOf(a)+(n?r.rowspan:0);i.insertRow(o)}appendCol(e,n){if(e.length<=0)return;let[r]=e.reduce((e,t)=>{let r=t.getColumnIndex();return(!n&&r<=e[1]||n&&r>=e[1])&&(e=[t,r]),e},[e[0],e[0].getColumnIndex()]),i=r.getColumnIndex()+(n?r.colspan:0),a=u(r,t.tableMain),o=a.tableId,s=R(),[c]=a.descendants(q);c&&c.insertColByIndex(i,{tableId:o,colId:s,width:a.full?6:160,full:a.full});let l=a.getRows(),d=[],f=0;for(let e of Object.values(l)){let t=d.shift()||0;if(f>0){--f;continue}let n=e.insertCell(i-t,{tableId:o,rowId:e.rowId,colId:s,rowspan:1,colspan:1});n.skipRowNum&&(f+=n.skipRowNum);for(let[e,t]of n.entries())d[e]=(d[e]||0)+t}}fixTableByRemove(e){if(!this.options.autoMergeCell)return;let t=e.getRows(),n=e.getCols(),r=n.reduce((e,t)=>(e[t.colId]=0,e),{}),i=t.toReversed(),a=[];for(let[e,n]of i.entries()){let i=t.length-e-1;n.children.length<=0?a.push(i):n.foreachCellInner(e=>{let t=a.reduce((t,n)=>e.rowspan+i>n?t+1:t,0);e.rowspan-=t,r[e.colId]+=1})}let o=0;for(let e of Object.values(r))if(e===0){let e=[],n=0;for(let r of Object.values(t)){let t=e.shift()||0,i=[];n>0?(i=r.getCellByColumIndex(o-t)[2],--n):(i=r.removeCell(o-t),i.skipRowNum&&(n+=i.skipRowNum));for(let[t,n]of i.entries())e[t]=(e[t]||0)+n}}else o+=1;for(let e of n)r[e.colId]===0&&(e.prev?e.prev.width+=e.width:e.next&&(e.next.width+=e.width),e.remove())}removeRow(e){if(e.length<=0)return;let n=e[0],r=u(n,t.tableMain),i=r.getRows(),a=i.length,o=-1;for(let n of e){let e=u(n,t.tableRow),r=i.indexOf(e);r<a&&(a=r),r+n.rowspan>o&&(o=r+n.rowspan)}let s={};for(let e=a;e<Math.min(i.length,o);e++){let t=i[e];t.foreachCellInner(t=>{t.rowspan+e>o&&(s[t.colId]={rowspan:t.rowspan+e-o,colspan:t.colspan,colIndex:t.getColumnIndex()}),t.parent.remove()}),t.length()===0&&t.remove()}if(i[o]){let e=i[o],t=r.tableId;for(let[n,{colIndex:r,colspan:i,rowspan:a}]of Object.entries(s))e.insertCell(r,{tableId:t,rowId:e.rowId,colId:n,colspan:i,rowspan:a})}this.fixTableByRemove(r)}removeCol(e){if(e.length<=0)return;let n=e[0],r=u(n,t.tableMain),i={};for(let t of e)i[t.rowId]||(i[t.rowId]=0),i[t.rowId]+=t.colspan;let a=Math.max(...Object.values(i)),o=n.getColumnIndex(),s=r.descendants(U);for(let e=0;e<a;e++){let e=[],t=0;for(let n of Object.values(s)){let r=e.shift()||0;if(t>0){--t;continue}let i=n.removeCell(o-r);i.skipRowNum&&(t+=i.skipRowNum);for(let[t,n]of i.entries())e[t]=(e[t]||0)+n}}let[c]=r.descendants(q);if(c)for(let e=0;e<a;e++)c.removeColByIndex(o);this.fixTableByRemove(r)}mergeCells(n){if(n.length<=1)return;let r=n[0],i=r.getTableBody(),a=r.getTableRow();if(!i||!a)return;for(let e=1;e<n.length;e++){let t=n[e],r=t.getTableBody();if(r&&r!==i){let e=t.getTableRow();e&&(a.parent.insertBefore(e,a.next),a=e)}}i.convertBody(r.wrapTag);let o=n.reduce((e,t,n)=>{let r=t.colId;e[0][r]||(e[0][r]=0),e[0][r]+=t.rowspan;let i=t.rowId;return e[1][i]||(e[1][i]=0),e[1][i]+=t.colspan,n!==0&&(t.moveChildren(e[2]),t.parent.remove()),e},[{},{},r]),s=Math.max(...Object.values(o[0])),c=Math.max(...Object.values(o[1])),l=o[2];l.colspan=c,l.rowspan=s;let d=this.quill.getIndex(l);this.quill.setSelection({index:d,length:0},e.sources.SILENT);let f=u(l,t.tableMain);this.fixTableByRemove(f)}splitCell(e){if(e.length!==1)return;let n=e[0];if(n.colspan===1&&n.rowspan===1)return;let[r,i]=d(n,[t.tableMain,t.tableRow]),a=r.getRows(),o=r.tableId,s=n.getColumnIndex(),c=r.getColIds().slice(s,s+n.colspan).toReversed(),{emptyRow:l,...u}=n.formats()[t.tableCellInner],f=a.indexOf(i);if(f===-1)return;let p=a[f],m=n.rowspan;for(n.colspan=1,n.rowspan=1;p&&m>0;){for(let e of c)p===i&&e===n.colId||p.insertCell(s+(p===i?1:0),{...u,tableId:o,rowId:p.rowId,colId:e,rowspan:1,colspan:1});--m,f+=1,p=a[f]}}convertTableBodyByCells(e,t,n){let r,i,a=e.getRows();for(let e of t){let t=e.getTableRow();if(!t)continue;let n=a.indexOf(t);ae(r)&&(r=n),ae(i)&&(i=n),n<r?(i=r,r=n):n>i&&(i=n)}if(ae(r)||ae(i)){console.warn(`TableRow not found`);return}let o=a[r],s=a[i];e.split(s.offset(e)+s.length());let c=e.split(o.offset(e)),l=c.getRows(),[u]=c.getBodys(),d=u.clone();c.appendChild(d);for(let e of l)e.length()>0&&d.appendChild(e);d.convertBody(n),u.remove()}},Qr=Zr;export{En as BlockEmbedOverride,wn as BlockOverride,z as ContainerFormat,Mn as ScrollOverride,zr as Scrollbar,Un as TableAlign,V as TableBodyFormat,Ln as TableCaptionFormat,W as TableCellFormat,H as TableCellInnerFormat,or as TableClipboard,G as TableColFormat,q as TableColgroupFormat,Hn as TableDomSelector,zn as TableFootFormat,Bn as TableHeadFormat,K as TableMainFormat,Er as TableMenuCommon,Dr as TableMenuContextmenu,Or as TableMenuSelect,Ir as TableResizeBox,Nr as TableResizeCommon,Mr as TableResizeCommonHelper,Lr as TableResizeLine,Rr as TableResizeScale,U as TableRowFormat,Vr as TableSelection,Zr as TableUp,Br as TableVirtualScrollbar,J as TableWrapperFormat,er as applyCellUpdates,t as blotName,le as createColorPicker,w as createSelectBox,Qt as createTooltip,Qr as default,Yr as defaultCustomSelect,u as findParentBlot,d as findParentBlots,Xn as getCellPositions,Ar as getColRect,Jn as getCountByPosition,Kn as getTableCellStructure,Y as getTableMainRect,Zn as groupCellByRow,jr as isCellsSpan,kr as isTableAlignRight,qn as parsePasteDelta,Gn as pasteCells,Qn as pasteWithLoop,Yn as pasteWithStructure,$n as prepareCellUpdate,R as randomId,tr as removeOverlappingCells,X as tableMenuTools,r as tableUpEvent,i as tableUpInternal,n as tableUpSize,Jr as updateTableConstants};
145
+ `,t=document.createElement(`div`);t.className=J.className,t.innerHTML=e,t.style.position=`absolute`,t.style.left=`-9999px`,t.style.top=`-9999px`,t.style.visibility=`hidden`,this.quill.root.appendChild(t);let n=window.getComputedStyle(t.querySelector(`td`)),r=Number.parseFloat(n.borderWidth)||0;return this.quill.root.removeChild(t),r}fixUnusuaDeletelTable(e){let t=e.getColIds();if(t.length===0){e.remove();return}let n=e.getBodys(),r=e.tableId;for(let e of n){let n=e.getRows();if(n.length===0){e.remove();continue}let i=Array(n.length).fill(0).map(()=>Array(t.length).fill(!1));for(let[e,a]of n.entries()){let o=0,s=0,c=i[e],l=a.descendants(W);for(;s<t.length;){if(c[s]){s+=1;continue}let u=l[o];if(!u||u.colId!==t[s])a.insertBefore(qr(this.quill.scroll,{tableId:r,colId:t[s],rowId:a.rowId}),u);else{e+u.rowspan-1>=n.length&&(u.getCellInner().rowspan=n.length-e);let{colspan:t,rowspan:r}=u;if(t>1)for(let e=1;e<t;e++)c[s+e]=!0;if(r>1)for(let n=e+1;n<e+r;n++)for(let e=0;e<t;e++)i[n][s+e]=!0;o+=1}s+=1}if(o<l.length)for(let e=o;e<l.length;e++)l[e].remove()}}}balanceTables(){for(let e of this.quill.scroll.descendants(K))e.checkEmptyCol(this.options.autoMergeCell),e.checkEmptyRow(this.options.autoMergeCell),this.fixUnusuaDeletelTable(e)}listenBalanceCells(){this.quill.on(e.events.SCROLL_OPTIMIZE,t=>{t.some(e=>[`TD`,`TR`,`TBODY`,`TABLE`].includes(e.target.tagName)?(this.fixTableByLisenter(),!0):!1);for(let n of t){let t=n.target;if(t.tagName===`TABLE`){let n=e.find(t);if(n){n.sortMergeChildren();break}}}})}deleteTable(e){e.length!==0&&u(e[0],t.tableMain)?.remove()}appendRow(e,n){if(e.length<=0)return;let r=e[n?e.length-1:0],[i,a]=d(r,[t.tableMain,t.tableRow]),o=i.getRows().indexOf(a)+(n?r.rowspan:0);i.insertRow(o)}appendCol(e,n){if(e.length<=0)return;let[r]=e.reduce((e,t)=>{let r=t.getColumnIndex();return(!n&&r<=e[1]||n&&r>=e[1])&&(e=[t,r]),e},[e[0],e[0].getColumnIndex()]),i=r.getColumnIndex()+(n?r.colspan:0),a=u(r,t.tableMain),o=a.tableId,s=R(),[c]=a.descendants(q);c&&c.insertColByIndex(i,{tableId:o,colId:s,width:a.full?6:160,full:a.full});let l=a.getRows(),d=[],f=0;for(let e of Object.values(l)){let t=d.shift()||0;if(f>0){--f;continue}let n=e.insertCell(i-t,{tableId:o,rowId:e.rowId,colId:s,rowspan:1,colspan:1});n.skipRowNum&&(f+=n.skipRowNum);for(let[e,t]of n.entries())d[e]=(d[e]||0)+t}}fixTableByRemove(e){if(!this.options.autoMergeCell)return;let t=e.getRows(),n=e.getCols(),r=n.reduce((e,t)=>(e[t.colId]=0,e),{}),i=t.toReversed(),a=[];for(let[e,n]of i.entries()){let i=t.length-e-1;n.children.length<=0?a.push(i):n.foreachCellInner(e=>{let t=a.reduce((t,n)=>e.rowspan+i>n?t+1:t,0);e.rowspan-=t,r[e.colId]+=1})}let o=0;for(let e of Object.values(r))if(e===0){let e=[],n=0;for(let r of Object.values(t)){let t=e.shift()||0,i=[];n>0?(i=r.getCellByColumIndex(o-t)[2],--n):(i=r.removeCell(o-t),i.skipRowNum&&(n+=i.skipRowNum));for(let[t,n]of i.entries())e[t]=(e[t]||0)+n}}else o+=1;for(let e of n)r[e.colId]===0&&(e.prev?e.prev.width+=e.width:e.next&&(e.next.width+=e.width),e.remove())}removeRow(e){if(e.length<=0)return;let n=e[0],r=u(n,t.tableMain),i=r.getRows(),a=i.length,o=-1;for(let n of e){let e=u(n,t.tableRow),r=i.indexOf(e);r<a&&(a=r),r+n.rowspan>o&&(o=r+n.rowspan)}let s={};for(let e=a;e<Math.min(i.length,o);e++){let t=i[e];t.foreachCellInner(t=>{t.rowspan+e>o&&(s[t.colId]={rowspan:t.rowspan+e-o,colspan:t.colspan,colIndex:t.getColumnIndex()}),t.parent.remove()}),t.length()===0&&t.remove()}if(i[o]){let e=i[o],t=r.tableId;for(let[n,{colIndex:r,colspan:i,rowspan:a}]of Object.entries(s))e.insertCell(r,{tableId:t,rowId:e.rowId,colId:n,colspan:i,rowspan:a})}this.fixTableByRemove(r)}removeCol(e){if(e.length<=0)return;let n=e[0],r=u(n,t.tableMain),i={};for(let t of e)i[t.rowId]||(i[t.rowId]=0),i[t.rowId]+=t.colspan;let a=Math.max(...Object.values(i)),o=n.getColumnIndex(),s=r.descendants(U);for(let e=0;e<a;e++){let e=[],t=0;for(let n of Object.values(s)){let r=e.shift()||0;if(t>0){--t;continue}let i=n.removeCell(o-r);i.skipRowNum&&(t+=i.skipRowNum);for(let[t,n]of i.entries())e[t]=(e[t]||0)+n}}let[c]=r.descendants(q);if(c)for(let e=0;e<a;e++)c.removeColByIndex(o);this.fixTableByRemove(r)}mergeCells(n){if(n.length<=1)return;let r=n[0],i=r.getTableBody(),a=r.getTableRow();if(!i||!a)return;for(let e=1;e<n.length;e++){let t=n[e],r=t.getTableBody();if(r&&r!==i){let e=t.getTableRow();e&&(a.parent.insertBefore(e,a.next),a=e)}}i.convertBody(r.wrapTag);let o=n.reduce((e,t,n)=>{let r=t.colId;e[0][r]||(e[0][r]=0),e[0][r]+=t.rowspan;let i=t.rowId;return e[1][i]||(e[1][i]=0),e[1][i]+=t.colspan,n!==0&&(t.length()>1&&t.moveChildren(e[2]),t.parent.remove()),e},[{},{},r]),s=Math.max(...Object.values(o[0])),c=Math.max(...Object.values(o[1])),l=o[2];l.colspan=c,l.rowspan=s;let d=this.quill.getIndex(l);this.quill.setSelection({index:d,length:0},e.sources.SILENT);let f=u(l,t.tableMain);this.fixTableByRemove(f)}splitCell(e){if(e.length!==1)return;let n=e[0];if(n.colspan===1&&n.rowspan===1)return;let[r,i]=d(n,[t.tableMain,t.tableRow]),a=r.getRows(),o=r.tableId,s=n.getColumnIndex(),c=r.getColIds().slice(s,s+n.colspan).toReversed(),{emptyRow:l,...u}=n.formats()[t.tableCellInner],f=a.indexOf(i);if(f===-1)return;let p=a[f],m=n.rowspan;for(n.colspan=1,n.rowspan=1;p&&m>0;){for(let e of c)p===i&&e===n.colId||p.insertCell(s+(p===i?1:0),{...u,tableId:o,rowId:p.rowId,colId:e,rowspan:1,colspan:1});--m,f+=1,p=a[f]}}convertTableBodyByCells(e,t,n){let r,i,a=e.getRows();for(let e of t){let t=e.getTableRow();if(!t)continue;let n=a.indexOf(t);ae(r)&&(r=n),ae(i)&&(i=n),n<r?(i=r,r=n):n>i&&(i=n)}if(ae(r)||ae(i)){console.warn(`TableRow not found`);return}let o=a[r],s=a[i];e.split(s.offset(e)+s.length());let c=e.split(o.offset(e)),l=c.getRows(),[u]=c.getBodys(),d=u.clone();c.appendChild(d);for(let e of l)e.length()>0&&d.appendChild(e);d.convertBody(n),u.remove()}},Qr=Zr;export{En as BlockEmbedOverride,wn as BlockOverride,z as ContainerFormat,Mn as ScrollOverride,zr as Scrollbar,Un as TableAlign,V as TableBodyFormat,Ln as TableCaptionFormat,W as TableCellFormat,H as TableCellInnerFormat,or as TableClipboard,G as TableColFormat,q as TableColgroupFormat,Hn as TableDomSelector,zn as TableFootFormat,Bn as TableHeadFormat,K as TableMainFormat,Er as TableMenuCommon,Dr as TableMenuContextmenu,Or as TableMenuSelect,Ir as TableResizeBox,Nr as TableResizeCommon,Mr as TableResizeCommonHelper,Lr as TableResizeLine,Rr as TableResizeScale,U as TableRowFormat,Vr as TableSelection,Zr as TableUp,Br as TableVirtualScrollbar,J as TableWrapperFormat,er as applyCellUpdates,t as blotName,le as createColorPicker,w as createSelectBox,Qt as createTooltip,Qr as default,Yr as defaultCustomSelect,u as findParentBlot,d as findParentBlots,Xn as getCellPositions,Ar as getColRect,Jn as getCountByPosition,Kn as getTableCellStructure,Y as getTableMainRect,Zn as groupCellByRow,jr as isCellsSpan,kr as isTableAlignRight,qn as parsePasteDelta,Gn as pasteCells,Qn as pasteWithLoop,Yn as pasteWithStructure,$n as prepareCellUpdate,R as randomId,tr as removeOverlappingCells,X as tableMenuTools,r as tableUpEvent,i as tableUpInternal,n as tableUpSize,Jr as updateTableConstants};
146
146
  //# sourceMappingURL=index.js.map