@univerjs/sheets-table 0.20.1 → 0.21.0
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/lib/cjs/facade.js +207 -1
- package/lib/cjs/index.js +3944 -1
- package/lib/es/facade.js +208 -1
- package/lib/es/index.js +3893 -1
- package/lib/facade.js +208 -1
- package/lib/index.js +3893 -1
- package/lib/umd/index.js +1 -1
- package/package.json +6 -6
package/lib/cjs/index.js
CHANGED
|
@@ -1 +1,3944 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@univerjs/core`),t=require(`@univerjs/engine-formula`),n=require(`@univerjs/sheets`),r=require(`rxjs`),i=function(e){return e.Insert=`insert`,e.Delete=`delete`,e}({}),a=function(e){return e.Row=`row`,e.Col=`column`,e}({}),o=function(e){return e.None=`none`,e.String=`string`,e.Number=`number`,e.Date=`date`,e.Bool=`bool`,e.Checkbox=`checkbox`,e.List=`list`,e}({}),s=function(e){return e.manual=`manual`,e.condition=`condition`,e}({}),c=function(e){return e.Date=`date`,e.Number=`number`,e.String=`string`,e.Logic=`logic`,e}({}),l=function(e){return e.Equal=`equal`,e.NotEqual=`notEqual`,e.GreaterThan=`greaterThan`,e.GreaterThanOrEqual=`greaterThanOrEqual`,e.LessThan=`lessThan`,e.LessThanOrEqual=`lessThanOrEqual`,e.Between=`between`,e.NotBetween=`notBetween`,e.Above=`above`,e.Below=`below`,e.TopN=`topN`,e}({}),u=function(e){return e.Equal=`equal`,e.NotEqual=`notEqual`,e.Contains=`contains`,e.NotContains=`notContains`,e.StartsWith=`startsWith`,e.EndsWith=`endsWith`,e}({}),d=function(e){return e.Equal=`equal`,e.NotEqual=`notEqual`,e.After=`after`,e.AfterOrEqual=`afterOrEqual`,e.Before=`before`,e.BeforeOrEqual=`beforeOrEqual`,e.Between=`between`,e.NotBetween=`notBetween`,e.Today=`today`,e.Yesterday=`yesterday`,e.Tomorrow=`tomorrow`,e.ThisWeek=`thisWeek`,e.LastWeek=`lastWeek`,e.NextWeek=`nextWeek`,e.ThisMonth=`thisMonth`,e.LastMonth=`lastMonth`,e.NextMonth=`nextMonth`,e.ThisQuarter=`thisQuarter`,e.LastQuarter=`lastQuarter`,e.NextQuarter=`nextQuarter`,e.ThisYear=`thisYear`,e.LastYear=`lastYear`,e.NextYear=`nextYear`,e.YearToDate=`yearToDate`,e.Quarter=`quarter`,e.Month=`month`,e.M1=`m1`,e.M2=`m2`,e.M3=`m3`,e.M4=`m4`,e.M5=`m5`,e.M6=`m6`,e.M7=`m7`,e.M8=`m8`,e.M9=`m9`,e.M10=`m10`,e.M11=`m11`,e.M12=`m12`,e.Q1=`q1`,e.Q2=`q2`,e.Q3=`q3`,e.Q4=`q4`,e}({}),f=function(e){return e[e.FilteredSortNone=1]=`FilteredSortNone`,e[e.FilteredSortAsc=2]=`FilteredSortAsc`,e[e.FilteredSortDesc=3]=`FilteredSortDesc`,e[e.FilterNoneSortNone=4]=`FilterNoneSortNone`,e[e.FilterNoneSortAsc=5]=`FilterNoneSortAsc`,e[e.FilterNoneSortDesc=6]=`FilterNoneSortDesc`,e}({}),p=function(e){return e.Asc=`asc`,e.Desc=`desc`,e.None=`none`,e}({});function m(e,t){return`${t} ${e}`}const h=`TRUE`,g=`FALSE`,_=e=>{var t;return((t=e.body)==null?void 0:t.dataStream.replace(/\r\n$/,``))||``};function v(t){if(t){let{v:n,t:r,p:i}=t;return i?_(i):(r===e.CellValueType.FORCE_STRING||r===e.CellValueType.STRING)&&n!=null?String(n):r===e.CellValueType.BOOLEAN?n?h:g:r===e.CellValueType.NUMBER?String(n):typeof n==`boolean`?n?h:g:n==null?``:String(n)}return``}function y(e,t){if(e!=null)switch(t){case p.Asc:return f.FilteredSortAsc;case p.Desc:return f.FilteredSortDesc;default:return f.FilteredSortNone}else switch(t){case p.Asc:return f.FilterNoneSortAsc;case p.Desc:return f.FilterNoneSortDesc;default:return f.FilterNoneSortNone}}function b(e){return e?e.filterType===s.condition:!1}function ee(e){return e?e.filterType===s.manual:!1}function x(t,n){let{univerInstanceService:r,tableManager:i,definedNamesService:a}=n,o=new Set,s=r==null?void 0:r.getUnit(t,e.UniverInstanceType.UNIVER_SHEET);s&&s.getSheets().forEach(e=>{o.add(e.getName().toLowerCase())});let c=i==null?void 0:i.getTableList(t);c&&c.length>0&&c.forEach(e=>{o.add(e.name.toLowerCase())});let l=a==null?void 0:a.getDefinedNameMap(t);return l&&Object.values(l).forEach(e=>{o.add(e.name.toLowerCase())}),o}const S={s:e.BorderStyleTypes.THIN,cl:{rgb:`rgb(95, 101, 116)`}},te=`sheets-table.config`;Symbol(te);const C={},ne={headerRowStyle:{bd:{t:S}},headerColumnStyle:{bd:{l:S}},lastColumnStyle:{bd:{r:S}},lastRowStyle:{bd:{b:S}}},re=(e,t)=>{if(e===`headerRowStyle`){if(!t.bd)return{...t,bd:{t:S}}}else if(e===`lastRowStyle`){if(!t.bd)return{...t,bd:{b:S}}}else if(e===`lastColumnStyle`){if(!t.bd)return{...t,bd:{r:S}}}else if(e===`headerColumnStyle`&&!t.bd)return{...t,bd:{l:S}};return t},w=[[[`#6280F9`,`#FFFFFF`,`#BAC6F8`,`#D2DAFA`],[`#fff`]],[[`#16BDCA`,`#FFFFFF`,`#EDFAFA`,`#AFECEF`],[`#000`]],[[`#31C48D`,`#FFFFFF`,`#F3FAF7`,`#BCF0DA`],[`#fff`]],[[`#AC94FA`,`#FFFFFF`,`#F6F5FF`,`#EDEBFE`],[`#fff`]],[[`#F17EBB`,`#FFFFFF`,`#FDF2F8`,`#FCE8F3`],[`#fff`]],[[`#F98080`,`#FFFFFF`,`#FDF2F2`,`#FDE8E8`],[`#fff`]]].map((e,t)=>{let[n,r]=e,[i,a,o,s]=n,[c]=r;return{name:`table-default-${t}`,style:{headerRowStyle:{bg:{rgb:i},cl:{rgb:c},bd:{t:S}},headerColumnStyle:{bd:{l:S}},firstRowStyle:{bg:{rgb:a}},secondRowStyle:{bg:{rgb:o}},lastRowStyle:{bg:{rgb:s},bd:{b:S}},lastColumnStyle:{bd:{r:S}}}}});function T(e){"@babel/helpers - typeof";return T=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},T(e)}function ie(e,t){if(T(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(T(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ae(e){var t=ie(e,`string`);return T(t)==`symbol`?t:t+``}function E(e,t,n){return(t=ae(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var D=class{constructor(e,t){E(this,`dataType`,void 0),E(this,`id`,void 0),E(this,`displayName`,void 0),E(this,`formula`,void 0),E(this,`meta`,void 0),E(this,`style`,void 0),this.id=e,this.displayName=t,this.dataType=o.String,this.formula=``,this.meta={},this.style={}}getMeta(){return this.meta}setMeta(e){this.meta=e}getDisplayName(){return this.displayName}toJSON(){return{id:this.id,displayName:this.displayName,dataType:this.dataType,formula:this.formula,meta:this.meta,style:this.style}}fromJSON(e){this.id=e.id,this.displayName=e.displayName,this.dataType=e.dataType,this.formula=e.formula,this.meta=e.meta,this.style=e.style}};const oe=e=>e.getMonth()<=2,se=e=>{let t=e.getMonth();return t>2&&t<=5},ce=e=>{let t=e.getMonth();return t>5&&t<=8},le=e=>{let t=e.getMonth();return t>8&&t<=11},ue=e=>e.getMonth()===0,de=e=>e.getMonth()===1,fe=e=>e.getMonth()===2,pe=e=>e.getMonth()===3,me=e=>e.getMonth()===4,he=e=>e.getMonth()===5,ge=e=>e.getMonth()===6,_e=e=>e.getMonth()===7,ve=e=>e.getMonth()===8,ye=e=>e.getMonth()===9,be=e=>e.getMonth()===10,xe=e=>e.getMonth()===11,Se=(e,t=new Date)=>e.toDateString()===t.toDateString(),Ce=(e,t=new Date)=>{let n=new Date(t);return n.setDate(n.getDate()+1),e.toDateString()===n.toDateString()},we=(e,t=new Date)=>{let n=new Date(t);return n.setDate(n.getDate()-1),e.toDateString()===n.toDateString()},O=e=>{let t=e.getDay(),n=e.getDate()-t+(t===0?-6:1),r=new Date(e);return r.setDate(n),r},k=10080*60*1e3,Te=(e,t=new Date)=>{let n=O(e),r=O(t);return n.toDateString()===r.toDateString()},Ee=(e,t=new Date)=>{let n=O(e),r=new Date(O(t).getTime()+k);return n.toDateString()===r.toDateString()},De=(e,t=new Date)=>{let n=O(e),r=new Date(O(t).getTime()-k);return n.toDateString()===r.toDateString()},Oe=(e,t=new Date)=>e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth(),ke=e=>{let t=new Date(e);return t.setHours(0,0,0,0),t.setDate(1),t},Ae=(e,t=new Date)=>{let n=new Date(t);n.setHours(0,0,0,0),n.setMonth(n.getMonth()+1,1);let r=new Date(n);r.setMonth(r.getMonth()+1,0);let i=e.getTime();return i>=n.getTime()&&i<r.getTime()},je=(e,t=new Date)=>{let n=ke(t),r=new Date(n);r.setMonth(r.getMonth()+1,0);let i=e.getTime();return i>=n.getTime()&&i<r.getTime()},A=e=>{let t=new Date(e);t.setHours(0,0,0,0),t.setDate(1);let n=t.getMonth();return t.setMonth(n-n%3),t},Me=(e,t=new Date)=>{let n=A(t),r=new Date(n);r.setMonth(r.getMonth()+3);let i=e.getTime();return i>=n.getTime()&&i<r.getTime()},Ne=(e,t=new Date)=>{let n=A(t),r=new Date(n);r.setMonth(r.getMonth()+3);let i=new Date(r);i.setMonth(i.getMonth()+3,0);let a=e.getTime();return a>=r.getTime()&&a<i.getTime()},Pe=(e,t=new Date)=>{let n=A(t),r=new Date(n);r.setMonth(r.getMonth()-3);let i=new Date(n);i.setDate(0);let a=e.getTime();return a>=r.getTime()&&a<i.getTime()},Fe=(e,t=new Date)=>e.getFullYear()===t.getFullYear(),Ie=(e,t=new Date)=>e.getFullYear()===t.getFullYear()+1,Le=(e,t=new Date)=>e.getFullYear()===t.getFullYear()-1,Re=(e,t=new Date)=>{let n=new Date(t);n.setHours(0,0,0,0),n.setMonth(0,1);let r=e.getTime();return r>=n.getTime()&&r<t.getTime()};function ze(e){switch(e.compareType){case d.Equal:{let t=new Date(e.expectedValue);return e=>e.getTime()===t.getTime()}case d.NotEqual:{let t=new Date(e.expectedValue);return e=>e.getTime()!==t.getTime()}case d.After:{let t=new Date(e.expectedValue);return e=>e.getTime()>t.getTime()}case d.Before:{let t=new Date(e.expectedValue);return e=>e.getTime()<t.getTime()}case d.AfterOrEqual:{let t=new Date(e.expectedValue);return e=>e.getTime()>=t.getTime()}case d.BeforeOrEqual:{let t=new Date(e.expectedValue);return e=>e.getTime()<=t.getTime()}case d.Between:return t=>{let[n,r]=e.expectedValue;return t.getTime()>=new Date(n).getTime()&&t.getTime()<=new Date(r).getTime()};case d.NotBetween:return t=>{let[n,r]=e.expectedValue;return t.getTime()<new Date(n).getTime()||t.getTime()>new Date(r).getTime()};case d.Today:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Se(e,t)}case d.Yesterday:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>we(e,t)}case d.Tomorrow:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Ce(e,t)}case d.ThisWeek:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Te(e,t)}case d.LastWeek:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>De(e,t)}case d.NextWeek:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Ee(e,t)}case d.ThisMonth:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Oe(e,t)}case d.LastMonth:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>je(e,t)}case d.NextMonth:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Ae(e,t)}case d.ThisQuarter:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Me(e,t)}case d.LastQuarter:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Pe(e,t)}case d.NextQuarter:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Ne(e,t)}case d.ThisYear:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Fe(e,t)}case d.LastYear:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Le(e,t)}case d.NextYear:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Ie(e,t)}case d.YearToDate:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Re(e,t)}case d.M1:return ue;case d.M2:return de;case d.M3:return fe;case d.M4:return pe;case d.M5:return me;case d.M6:return he;case d.M7:return ge;case d.M8:return _e;case d.M9:return ve;case d.M10:return ye;case d.M11:return be;case d.M12:return xe;case d.Q1:return oe;case d.Q2:return se;case d.Q3:return ce;case d.Q4:return le;default:throw Error(`Unsupported compare type`)}}var Be=class{constructor(){E(this,`heap`,void 0),this.heap=[]}swap(e,t){let n=this.heap[e];this.heap[e]=this.heap[t],this.heap[t]=n}getParentIndex(e){return Math.floor((e-1)/2)}getLeftIndex(e){return e*2+1}getRightIndex(e){return e*2+2}size(){return this.heap.length}peek(){return this.heap[0]}include(e){return this.heap.includes(e)}},Ve=class extends Be{constructor(){super()}shiftUp(e){if(e===0)return;let t=this.getParentIndex(e);this.heap[t]>this.heap[e]&&(this.swap(t,e),this.shiftUp(t))}shiftDown(e){let t=this.getLeftIndex(e),n=this.getRightIndex(e);this.heap[t]<this.heap[e]&&(this.swap(t,e),this.shiftDown(t)),this.heap[n]<this.heap[e]&&(this.swap(n,e),this.shiftDown(n))}insert(e){this.heap.push(e),this.shiftUp(this.heap.length-1)}pop(){this.heap[0]=this.heap.pop(),this.shiftDown(0)}};const He=(e,t)=>{let n=new Ve;for(let r of e)n.insert(r),n.size()>t&&n.pop();return n.heap},Ue=(e,t)=>e>t,We=(e,t)=>e<t,Ge=(e,t,n)=>He(e,t).includes(n);function Ke(e,t){switch(e.compareType){case l.Equal:{let t=Number(e.expectedValue);return e=>e===t}case l.NotEqual:{let t=Number(e.expectedValue);return e=>e!==t}case l.GreaterThan:{let t=Number(e.expectedValue);return e=>e>t}case l.GreaterThanOrEqual:{let t=Number(e.expectedValue);return e=>e>=t}case l.LessThan:{let t=Number(e.expectedValue);return e=>e<t}case l.LessThanOrEqual:{let t=Number(e.expectedValue);return e=>e<=t}case l.Between:{let[t,n]=e.expectedValue,r=Number(t),i=Number(n);return r>i?e=>e>=i&&e<=r:e=>e>=r&&e<=i}case l.NotBetween:{let[t,n]=e.expectedValue,r=Number(t),i=Number(n);return r>i?e=>e<i||e>r:e=>e<r||e>i}case l.Above:{let e=t.average;return t=>Ue(t,e)}case l.Below:{let e=t.average;return t=>We(t,e)}case l.TopN:{let n=t.list,r=Number(e.expectedValue);return e=>Ge(n,r,e)}}}const qe=(t,n)=>(0,e.createREGEXFromWildChar)(n).test(t),Je=(t,n)=>!(0,e.createREGEXFromWildChar)(n).test(t),Ye=(t,n)=>(0,e.createREGEXFromWildChar)(`*${n}*`).test(t),Xe=(t,n)=>!(0,e.createREGEXFromWildChar)(`*${n}*`).test(t),Ze=(t,n)=>(0,e.createREGEXFromWildChar)(`${n}*`).test(t),Qe=(t,n)=>(0,e.createREGEXFromWildChar)(`*${n}`).test(t);function $e(e){switch(e.compareType){case u.Equal:return t=>qe(t,e.expectedValue);case u.NotEqual:return t=>Je(t,e.expectedValue);case u.Contains:return t=>Ye(t,e.expectedValue);case u.NotContains:return t=>Xe(t,e.expectedValue);case u.StartsWith:return t=>Ze(t,e.expectedValue);case u.EndsWith:return t=>Qe(t,e.expectedValue);default:return console.error(`Unknown filter operator: ${e.compareType}`),e=>!0}}const et=new Set([l.Above,l.Below,l.TopN]);new Set([d.Today,d.Yesterday,d.Tomorrow,d.ThisWeek,d.LastWeek,d.NextWeek,d.ThisMonth,d.LastMonth,d.NextMonth,d.ThisQuarter,d.LastQuarter,d.NextQuarter,d.NextYear,d.ThisYear,d.LastYear,d.YearToDate]);function j(e){return et.has(e)}function tt(e,t){if(j(e.filterInfo.compareType))return e=>!0;switch(e.filterInfo.conditionType){case c.Date:return ze(e.filterInfo);case c.Number:return Ke(e.filterInfo,t);case c.String:return $e(e.filterInfo);case c.Logic:default:return e=>!0}}function M(e,t,n,r){switch(r){case c.Date:{let r=N(e,t,n);return r?it(r):null}case c.Number:return N(e,t,n);case c.String:default:return rt(e,t,n)}}const nt=e=>{var t;return((t=e.body)==null?void 0:t.dataStream.replace(/\r\n$/,``))||``};function rt(t,n,r){let i=t.getCell(n,r);if(!i)return null;let{v:a,t:o,p:s}=i;if(s)return nt(s);if(typeof a==`string`)return o===e.CellValueType.BOOLEAN?a.toUpperCase():a;if(typeof a==`number`)return o===e.CellValueType.BOOLEAN?a?`TRUE`:`FALSE`:a;if(typeof a==`boolean`)return a?`TRUE`:`FALSE`;if(a!==void 0)return String(a)}function N(t,n,r){let i=t.getCell(n,r);if(!i)return null;let{v:a,t:o,p:s}=i;return s?null:typeof a==`string`&&o===e.CellValueType.NUMBER?Number(t.getCellRaw(n,r).v):Number(a)}function it(e){let t=new Date(Date.UTC(1900,0,1,0,0,0)),n=new Date(Date.UTC(1900,1,28,0,0,0)),r=e-1;return r>(n.getTime()-t.getTime())/(1e3*3600*24)&&--r,r<0&&(r=e),new Date(t.getTime()+1e3*3600*24*r)}var P=class{constructor(){E(this,`_tableColumnFilterList`,void 0),E(this,`_tableSortInfo`,void 0),E(this,`_filterOutRows`,void 0),this._tableColumnFilterList=[]}setColumnFilter(e,t){t?this._tableColumnFilterList[e]=t:this._tableColumnFilterList[e]=void 0}setSortState(e,t){this._tableSortInfo={columnIndex:e,sortState:t}}getColumnFilter(e){return this._tableColumnFilterList[e]}getFilterState(e){var t;let n=((t=this._tableSortInfo)==null?void 0:t.columnIndex)===e?this._tableSortInfo.sortState:p.None;return y(this._tableColumnFilterList[e],n)}getSortState(){var e;return(e=this._tableSortInfo)==null?{}:e}getFilterStates(e){let t=[],{startColumn:n,endColumn:r}=e;for(let e=n;e<=r;e++)t.push(this.getFilterState(e-n));return t}getFilterOutRows(){return this._filterOutRows}doFilter(e,t){let n=new Set,r=this._tableColumnFilterList;for(let i=0;i<r.length;i++)r[i]&&this.doColumnFilter(e,t,i,n);return this._filterOutRows=n,n}doColumnFilter(e,t,n,r){let i=this._tableColumnFilterList[n];if(i&&e){let{startRow:a,endRow:o,startColumn:s}=t,l=s+n,u=this.getExecuteFunc(e,t,n,i);for(let t=a;t<=o;t++){let n=b(i)?i.filterInfo.conditionType:c.String;M(e,t,l,n)===null?r.add(t):u(M(e,t,l,n))||r.add(t)}}}_getNumberCalculatedOptions(e,t,n){let{startRow:r,endRow:i,startColumn:a}=t,o=a+n,s=[],l=0,u=0;for(let t=r;t<=i;t++){let n=M(e,t,o,c.Number);n!==null&&(s.push(n),l++,u+=n)}return{list:s,average:l>0?u/l:0}}getExecuteFunc(e,t,n,r){if(r.filterType===s.manual){let e=new Set(r.values);return t=>e.has(t)}else if(r.filterType===s.condition)return tt(r,j(r.filterInfo.compareType)?this._getNumberCalculatedOptions(e,t,n):void 0);else return e=>!0}toJSON(){return{tableColumnFilterList:this._tableColumnFilterList,tableSortInfo:this._tableSortInfo}}fromJSON(e){var t;this._tableColumnFilterList=(t=e.tableColumnFilterList)==null?[]:t,e.tableSortInfo&&(this._tableSortInfo=e.tableSortInfo)}dispose(){this._tableColumnFilterList=[]}},F=class{constructor(e,t,n,r,i={}){E(this,`_id`,void 0),E(this,`_name`,void 0),E(this,`_tableStyleId`,void 0),E(this,`_showHeader`,void 0),E(this,`_showFooter`,void 0),E(this,`_range`,void 0),E(this,`_columns`,new Map),E(this,`_columnOrder`,[]),E(this,`tableMeta`,void 0),E(this,`_tableFilters`,void 0),E(this,`_subUnitId`,void 0),this._id=e,this._range=n,this._name=t,this._tableFilters=new P,this._init(r,i)}_init(t,n){var r;this._tableStyleId=n==null?void 0:n.tableStyleId,this._showHeader=(r=n==null?void 0:n.showHeader)==null?!0:r,this._showFooter=!1;let i=this.getRange(),a=i.startColumn,o=i.endColumn;for(let r=a;r<=o;r++){var s;let i=r-a,o,c;(s=n.columns)!=null&&s[i]?(o=n.columns[i].id,c=n.columns[i].displayName):(o=(0,e.generateRandomId)(),c=t[r-a]);let l=new D(o,c);this._columns.set(o,l),this._columnOrder.push(o)}n.filters&&n.filters.forEach((e,t)=>{e&&this._tableFilters.setColumnFilter(t,e)})}setTableFilterColumn(e,t){this._tableFilters.setColumnFilter(e,t)}getTableFilterColumn(e){return this._tableFilters.getColumnFilter(e)}getTableFilters(){return this._tableFilters}getTableFilterRange(){let e=this.getRange(),t=this.isShowHeader(),n=this.isShowFooter(),{startRow:r,startColumn:i,endRow:a,endColumn:o}=e;return{startRow:t?r+1:r,startColumn:i,endRow:n?a-1:a,endColumn:o}}setColumns(e){this._columns.clear(),this._columnOrder=[],e.forEach(e=>{let t=new D(e.id,e.displayName);t.fromJSON(e),this._columns.set(e.id,t),this._columnOrder.push(e.id)})}getColumnsCount(){return this._columnOrder.length}insertColumn(e,t){let n=t.id;this._columns.set(n,t),this._columnOrder.splice(e,0,n)}removeColumn(e){let t=this._columnOrder[e];this._columns.delete(t),this._columnOrder.splice(e,1)}setTableMeta(e){this.tableMeta=e}getTableMeta(){return this.tableMeta}getColumn(e){return this._columns.get(e)}getTableColumnByIndex(e){let t=this._columnOrder[e];return this.getColumn(t)}getColumnNameByIndex(e){var t;let n=this._columnOrder[e];return((t=this.getColumn(n))==null?void 0:t.getDisplayName())||``}getId(){return this._id}getRangeInfo(){return{...this._range}}getRange(){return{...this._range}}setRange(e){this._range=e}setDisplayName(e){this._name=e}getDisplayName(){return this._name}getSubunitId(){return this._subUnitId}setSubunitId(e){this._subUnitId=e}getTableStyleId(){var e;return(e=this._tableStyleId)==null?w[0].name:e}setTableStyleId(e){this._tableStyleId=e}isShowHeader(){var e;return(e=this._showHeader)==null?!0:e}setShowHeader(e){this._showHeader=e}isShowFooter(){var e;return(e=this._showFooter)==null?!1:e}getTableInfo(){return{id:this._id,subUnitId:this._subUnitId,name:this._name,range:this.getRangeInfo(),meta:this.tableMeta,showHeader:this._showHeader,columns:this._columnOrder.map(e=>this._columns.get(e).toJSON())}}getTableConfig(){return{name:this.getDisplayName(),range:this.getRangeInfo(),options:{showHeader:this._showHeader,showFooter:this._showFooter},tableStyleId:this._tableStyleId}}getFilterStates(e){return this._tableFilters.getFilterStates(e)}toJSON(){let e=[];return this._columns.forEach(t=>{e.push(t.toJSON())}),{id:this._id,name:this._name,range:this.getRangeInfo(),options:{showHeader:this._showHeader,showFooter:this._showFooter,tableStyleId:this._tableStyleId},filters:this._tableFilters.toJSON(),columns:e,meta:this.tableMeta}}fromJSON(e){var t,n;this._id=e.id,this._name=e.name,this._range=e.range,this.tableMeta=e.meta,this._tableStyleId=e.options.tableStyleId||``,this._showHeader=(t=e.options.showHeader)==null?!0:t,this._showFooter=(n=e.options.showFooter)==null?!0:n,e.columns.forEach(e=>{let t=new D(e.id,e.displayName);t.fromJSON(e),this._columns.set(e.id,t),this._columnOrder.push(e.id)}),this._tableFilters=new P,this._tableFilters.fromJSON(e.filters)}dispose(){this._id=``,this._name=``,this._tableStyleId=``,this._showHeader=!0,this._showFooter=!0,delete this._range,this._columns.clear(),this._columnOrder=[]}};function I(e,t){return function(n,r){t(n,r,e)}}function L(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let R=class extends e.Disposable{constructor(e,t){super(),this._univerInstanceService=e,this._localeService=t,E(this,`_tableMap`,void 0),E(this,`_tableAdd$`,new r.Subject),E(this,`tableAdd$`,this._tableAdd$.asObservable()),E(this,`_tableDelete$`,new r.Subject),E(this,`tableDelete$`,this._tableDelete$.asObservable()),E(this,`_tableNameChanged$`,new r.Subject),E(this,`tableNameChanged$`,this._tableNameChanged$.asObservable()),E(this,`_tableRangeChanged$`,new r.Subject),E(this,`tableRangeChanged$`,this._tableRangeChanged$.asObservable()),E(this,`_tableThemeChanged$`,new r.Subject),E(this,`tableThemeChanged$`,this._tableThemeChanged$.asObservable()),E(this,`_tableFilterChanged$`,new r.Subject),E(this,`tableFilterChanged$`,this._tableFilterChanged$.asObservable()),E(this,`_tableInitStatus`,new r.BehaviorSubject(!1)),E(this,`tableInitStatus$`,this._tableInitStatus.asObservable()),this._tableMap=new Map}_ensureUnit(e){return this._tableMap.has(e)||this._tableMap.set(e,new Map),this._tableMap.get(e)}getColumnHeader(e,t,n,r){var i;let a=(i=this._univerInstanceService.getUnit(e))==null?void 0:i.getSheetBySheetId(t),{startRow:o,startColumn:s,endColumn:c}=n,l=[],u=r==null?`Column`:r;for(let e=s;e<=c;e++)l.push(v(a==null?void 0:a.getCell(o,e))||m(e-s+1,u));return l}addTable(t,n,r,i,a,o,s){let c=o==null?(0,e.generateRandomId)():o,l=new F(c,r,i,a||this.getColumnHeader(t,n,i),s);if(l.setSubunitId(n),this._ensureUnit(t).set(c,l),this._tableAdd$.next({unitId:t,subUnitId:n,range:i,tableName:r,tableId:c,tableStyleId:s==null?void 0:s.tableStyleId}),s!=null&&s.filters){var u;let e=(u=this._univerInstanceService.getUnit(t))==null?void 0:u.getSheetBySheetId(n);l.getTableFilters().doFilter(e,i),this._tableFilterChanged$.next({unitId:t,subUnitId:n,tableId:c})}return c}addFilter(e,t,n,r){let i=this.getTable(e,t);if(i){i.getTableFilters().setColumnFilter(n,r);let a=i.getSubunitId();this._tableFilterChanged$.next({unitId:e,subUnitId:a,tableId:t})}}getFilterRanges(e,t){let n=this._tableMap.get(e);if(!n)return[];let r=[];return n.forEach(e=>{e.getSubunitId()===t&&e.isShowHeader()&&r.push(e.getRange())}),r}getSheetFilterRangeWithState(e,t){let n=this._tableMap.get(e);if(!n)return[];let r=[];return n.forEach(e=>{e.getSubunitId()===t&&e.isShowHeader()&&r.push({tableId:e.getId(),range:e.getRange(),states:e.getFilterStates(e.getRange())})}),r}getTable(e,t){let n=this._tableMap.get(e);if(n)return n.get(t)}getUniqueTableName(e,t){let n=this._tableMap.get(e);if(!n)return t;let r=new Set(Array.from(n.values()).map(e=>e.getDisplayName())),i=t,a=1;for(;r.has(i);)i=`${t}-${a}`,a++;return i}getTableById(e,t){return this.getTable(e,t)}getTableList(e){let t=this._tableMap.get(e);return t?Array.from(t.values()).map(t=>({...t.getTableInfo(),unitId:e})):[]}getTablesBySubunitId(e,t){let n=this._tableMap.get(e);return n?Array.from(n.values()).filter(e=>e.getSubunitId()===t):[]}getTablesInfoBySubunitId(e,t){return this.getTablesBySubunitId(e,t).map(e=>({id:e.getId(),name:e.getDisplayName(),range:e.getRange()}))}deleteTable(e,t){let n=this._tableMap.get(e),r=n==null?void 0:n.get(t);if(r){let i=r.getTableInfo(),a=r.getTableStyleId();n==null||n.delete(t);let{subUnitId:o,range:s,name:c}=i;this._tableDelete$.next({unitId:e,subUnitId:o,tableId:t,range:s,tableName:c,tableStyleId:a})}}operationTableRowCol(t,n,r){let a=this.getTableById(t,n);if(!a)return;let{operationType:o,rowColType:s,index:c,count:l,columnsJson:u}=r,d=a.getRange(),f={...d};if(o===i.Insert){if(s===`row`)f.endRow+=l;else if(s===`column`){f.endColumn+=l;for(let t=0;t<l;t++){let n=this._localeService.t(`sheets-table.columnPrefix`),r=new D((0,e.generateRandomId)(),m(a.getColumnsCount()+1+t,n));u!=null&&u[t]&&r.fromJSON(u[t]);let i=c+t-d.startColumn;a.insertColumn(i,r)}}}else if(s===`row`)f.endRow-=l;else if(s===`column`){f.endColumn-=l;for(let e=l-1;e>=0;e--){let t=c+e-d.startColumn;a.removeColumn(t)}}a.setRange(f),this._tableRangeChanged$.next({unitId:t,subUnitId:a.getSubunitId(),tableId:n,range:f,oldRange:d})}updateTableRange(t,n,r){let i=this.getTableById(t,n);if(!i)return;let a=i.getRange(),o=r.newRange;if(o.startColumn<a.startColumn){let t=a.startColumn-o.startColumn,n=this._localeService.t(`sheets-table.columnPrefix`);for(let r=0;r<t;r++)i.insertColumn(a.startColumn,new D((0,e.generateRandomId)(),m(i.getColumnsCount()+1,n)))}else if(o.startColumn>a.startColumn){let e=o.startColumn-a.startColumn;for(let t=e-1;t>=0;t--){let e=o.startColumn+t-a.startColumn;i.removeColumn(e)}}if(o.endColumn<a.endColumn){let e=a.endColumn-o.endColumn;for(let t=e-1;t>=0;t--){let e=o.endColumn+t-a.startColumn;i.removeColumn(e)}}else if(o.endColumn>a.endColumn){let t=o.endColumn-a.endColumn;for(let n=0;n<t;n++)i.insertColumn(a.endColumn,new D((0,e.generateRandomId)(),m(i.getColumnsCount()+1,`Column`)))}i.setRange(o),this._tableRangeChanged$.next({unitId:t,subUnitId:i.getSubunitId(),tableId:n,range:o,oldRange:a})}setTableByConfig(e,t,n){let r=this._tableMap.get(e),i=r==null?void 0:r.get(t);if(!i)return;let a=i.getSubunitId(),{name:o,updateRange:s,rowColOperation:c,theme:l,options:u}=n;if(o){let n=i.getDisplayName();i.setDisplayName(o),this._tableNameChanged$.next({unitId:e,subUnitId:a,tableId:t,tableName:o,oldTableName:n})}if(c&&this.operationTableRowCol(e,t,c),s&&this.updateTableRange(e,t,s),l){var d;let n=(d=i.getTableStyleId())==null?`default`:d;i.setTableStyleId(l),this._tableThemeChanged$.next({unitId:e,subUnitId:a,tableId:t,theme:l,oldTheme:n})}u&&u.showHeader!==void 0&&i.setShowHeader(u.showHeader)}toJSON(e){let t={},n=this._tableMap.get(e);return n&&n.forEach(n=>{let r=n.getSubunitId();if(!t[r]){let n=new Set;this.getTablesBySubunitId(e,r).forEach(e=>{let t=e.getTableFilters().getFilterOutRows();if(t)for(let e of t)n.add(e)}),t[r]={tables:[],tableFilteredOutRows:Array.from(n)}}t[r].tables.push(n.toJSON())}),t}fromJSON(e,t){let r=this._ensureUnit(e);Object.keys(t).forEach(i=>{let a=(0,n.getSheetCommandTarget)(this._univerInstanceService,{unitId:e,subUnitId:i});if(!a)return;let o=a.worksheet,s;t[i].tables?s=t[i].tables:Array.isArray(t[i])&&(s=t[i]),s&&s.forEach(t=>{let n=this.getColumnHeader(e,i,t.range),a=new F(t.id,t.name,t.range,n,t.options);if(a.setTableMeta(t.meta),t.columns.length&&a.setColumns(t.columns),t.filters){let e=a.getTableFilters();e.fromJSON(t.filters),e.doFilter(o,a.getTableFilterRange())}a.setSubunitId(i),r.set(t.id,a),this._tableAdd$.next({unitId:e,subUnitId:i,range:t.range,tableName:t.name,tableId:t.id})})}),this._tableInitStatus.next(!0)}deleteUnitId(e){let t=this._tableMap.get(e);t&&t.forEach(e=>e.dispose()),this._tableMap.delete(e)}dispose(){super.dispose(),this._tableAdd$.complete(),this._tableDelete$.complete(),this._tableNameChanged$.complete(),this._tableRangeChanged$.complete(),this._tableThemeChanged$.complete(),this._tableFilterChanged$.complete(),this._tableInitStatus.complete(),this._tableMap.forEach(e=>{e.forEach(e=>e.dispose()),e.clear()}),this._tableMap.clear()}};R=L([I(0,e.IUniverInstanceService),I(1,(0,e.Inject)(e.LocaleService))],R);let z=class extends e.Disposable{constructor(e){super(),this._tableManager=e}getTableInfo(e,t){let n=this._tableManager.getTable(e,t);if(n)return{unitId:e,...n.getTableInfo()}}getTableList(e){return this._tableManager.getTableList(e)}addTable(e,t,n,r,i,a,o){return this._tableManager.addTable(e,t,n,r,i,a,o)}deleteTable(e,t,n){this._tableManager.deleteTable(e,n)}getTableMeta(e,t){var n;return(n=this._tableManager.getTable(e,t))==null?void 0:n.getTableMeta()}setTableMeta(e,t,n){var r;(r=this._tableManager.getTable(e,t))==null||r.setTableMeta(n)}getTableColumnMeta(e,t,n){var r;return(r=this._tableManager.getTable(e,t))==null||(r=r.getTableColumnByIndex(n))==null?void 0:r.getMeta()}selTableColumnMeta(e,t,n,r){var i;(i=this._tableManager.getTable(e,t))==null||(i=i.getTableColumnByIndex(n))==null||i.setMeta(r)}addFilter(e,t,n,r){this._tableManager.addFilter(e,t,n,r)}getCellValueWithConditionType(e,t,n,r=c.String){return M(e,t,n,r)}};z=L([I(0,(0,e.Inject)(R))],z);const B={id:`sheet.mutation.add-table`,type:e.CommandType.MUTATION,handler:(e,t)=>{let{tableId:n,unitId:r,subUnitId:i,name:a,range:o,header:s,options:c}=t;return e.get(z).addTable(r,i,a,o,s,n,c),!0}},V={id:`sheet.mutation.delete-table`,type:e.CommandType.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r,tableId:i}=t;return e.get(z).deleteTable(n,r,i),!0}},at={id:`sheet.command.add-table`,type:e.CommandType.COMMAND,handler:(n,r)=>{var i;if(!r)return!1;let a=n.get(e.IUndoRedoService),o=n.get(e.ICommandService),s=n.get(e.LocaleService),c=n.get(R),l=(i=r.id)==null?(0,e.generateRandomId)():i,u=x(r.unitId,{univerInstanceService:n.get(e.IUniverInstanceService),tableManager:c,definedNamesService:n.get(t.IDefinedNamesService)}),d=r.name;if(!d||!(0,e.customNameCharacterCheck)(d.toLowerCase(),u)){let e=s.t(`sheets-table.tablePrefix`),t=c.getTableList(r.unitId).length+1;for(let n of u)if(n.startsWith(e.toLowerCase())){let r=Number(n.slice(e.length));Number.isInteger(r)&&r>=t&&(t=r+1)}d=`${e}${t}`}let f=[],p=[],{unitId:m,subUnitId:h,range:g}=r,_=c.getColumnHeader(m,h,g,s.t(`sheets-table.columnPrefix`));return f.push({id:B.id,params:{...r,tableId:l,name:d,header:_}}),p.push({id:V.id,params:{tableId:l,unitId:r.unitId}}),(0,e.sequenceExecute)(f,o)&&a.pushUndoRedo({unitID:r.unitId,undoMutations:p,redoMutations:f}),!0}},H={id:`sheet.mutation.set-sheet-table`,type:e.CommandType.MUTATION,handler:(e,t)=>{if(!t)return!1;let{unitId:n,tableId:r,config:i}=t;return e.get(R).setTableByConfig(n,r,i),!0}},ot={id:`sheet.command.add-table-theme`,type:e.CommandType.COMMAND,handler:(t,r)=>{if(!r)return!1;let i=t.get(R),{unitId:a,tableId:o,themeStyle:s}=r,c=[],l=[],u=i.getTableById(a,o);if(!u)return!1;let d=u.getSubunitId();return c.push({id:n.AddRangeThemeMutation.id,params:{unitId:a,subUnitId:d,styleJSON:s.toJson()}}),c.push({id:H.id,params:{unitId:a,subUnitId:d,tableId:o,config:{theme:s.getName()}}}),l.push({id:H.id,params:{unitId:a,subUnitId:d,tableId:o,config:{themeStyle:u.getTableStyleId()}}}),l.push({id:n.RemoveRangeThemeMutation.id,params:{unitId:a,subUnitId:d,styleName:s.getName()}}),(0,e.sequenceExecute)(c,t.get(e.ICommandService))&&t.get(e.IUndoRedoService).pushUndoRedo({unitID:a,undoMutations:l,redoMutations:c}),!0}},st={id:`sheet.command.delete-table`,type:e.CommandType.COMMAND,handler:(t,n)=>{if(!n)return!1;let r=t.get(e.IUndoRedoService),i=t.get(e.ICommandService),a=t.get(R),o=t.get(e.ILogService),s=[],c=[],l=a.getTable(n.unitId,n.tableId),u=l==null?void 0:l.toJSON();return u?(s.push({id:V.id,params:{...n}}),c.push({id:B.id,params:{unitId:n.unitId,subUnitId:n.subUnitId,tableId:n.tableId,name:u.name,range:u.range,options:u.options}}),(0,e.sequenceExecute)(s,i)&&r.pushUndoRedo({unitID:n.unitId,undoMutations:c,redoMutations:s}),!0):(o.error(`[TableManager]: Table not found`),!1)}},ct=`SHEET_TABLE_PLUGIN`,U=`SHEET_TABLE`,lt=`table-custom`,ut={id:`sheet.command.remove-table-theme`,type:e.CommandType.COMMAND,handler:(t,r)=>{if(!r)return!1;let{unitId:i,tableId:a,themeName:o}=r,s=t.get(R),c=t.get(n.SheetRangeThemeModel),l=s.getTableById(i,a);if(!l)return!1;let u=l.getSubunitId(),d=[],f=[],p=c.getRegisteredRangeThemes().filter(e=>e==null?void 0:e.startsWith(`table-default`)),m=c.getRegisteredRangeThemes().filter(e=>e==null?void 0:e.startsWith(lt)).find(e=>e!==o);m||(m=p[0]),d.push({id:H.id,params:{unitId:i,subUnitId:u,tableId:a,config:{theme:m}}}),d.push({id:n.RemoveRangeThemeMutation.id,params:{unitId:i,subUnitId:u,styleName:o}});let h=c.getDefaultRangeThemeStyle(o);return h&&(f.push({id:n.AddRangeThemeMutation.id,params:{unitId:i,subUnitId:u,styleJSON:h.toJson()}}),f.push({id:H.id,params:{unitId:i,subUnitId:u,tableId:a,config:{theme:o}}})),(0,e.sequenceExecute)(d,t.get(e.ICommandService))&&t.get(e.IUndoRedoService).pushUndoRedo({unitID:i,redoMutations:d,undoMutations:f}),!0}},W={id:`sheet.command.set-table-config`,type:e.CommandType.COMMAND,handler:(n,r)=>{if(!r)return!1;let{unitId:a,tableId:o,name:s,updateRange:c,rowColOperation:l,theme:u}=r,d=n.get(R),f=d.getTableById(a,o);if(!f)return!1;let p={},m={},h=n.get(e.LocaleService),g=x(a,{univerInstanceService:n.get(e.IUniverInstanceService),tableManager:d,definedNamesService:n.get(t.IDefinedNamesService)});if(s){if(!(0,e.customNameCharacterCheck)(s.toLowerCase(),g))return n.get(e.ILogService).warn(h.t(`sheets-table.tableNameError`)),!1;p.name=f.getDisplayName(),m.name=s}l&&(p.rowColOperation={operationType:l.operationType===i.Insert?i.Delete:i.Insert,rowColType:l.rowColType,index:l.index,count:l.count},m.rowColOperation=l),c&&(p.updateRange={newRange:f.getRange()},m.updateRange=c),u&&(p.theme=f.getTableStyleId(),m.theme=u);let _={unitId:a,subUnitId:f.getSubunitId(),tableId:o,config:m};return n.get(e.ICommandService).executeCommand(H.id,_),n.get(e.IUndoRedoService).pushUndoRedo({unitID:a,undoMutations:[{id:H.id,params:{unitId:a,subUnitId:f.getSubunitId(),tableId:o,config:p}}],redoMutations:[{id:H.id,params:_}]}),!0}},G={id:`sheet.mutation.set-table-filter`,type:e.CommandType.MUTATION,handler:(e,t)=>{let{tableId:n,unitId:r,column:i,tableFilter:a}=t;return e.get(R).addFilter(r,n,i,a),!0}},dt={id:`sheet.command.set-table-filter`,type:e.CommandType.COMMAND,handler:(t,n)=>{if(!n)return!1;let r=t.get(e.IUndoRedoService),i=t.get(e.ICommandService),a=n.tableId||(0,e.generateRandomId)(),o=[],s=[];return o.push({id:G.id,params:{...n,tableId:a}}),s.push({id:G.id,params:{...n,tableId:a,tableFilter:void 0}}),(0,e.sequenceExecute)(o,i)&&r.pushUndoRedo({unitID:n.unitId,undoMutations:s,redoMutations:o}),!0}};let K=class extends e.Disposable{constructor(e,t,n,r){super(),this._univerInstanceService=e,this._sheetInterceptorService=t,this._tableManager=n,this._resourceManagerService=r,E(this,`_tableRangeRTree`,new Map),this._initSnapshot(),this._initSheetChange(),this.registerTableChangeEvent(),this.registerTableHeaderInterceptor()}getContainerTableWithRange(t,n,r){let i=this._ensureTableRangeRTree(t),a=Array.from(i.bulkSearch([{unitId:t,sheetId:n,range:r}])).find(n=>{let i=this._tableManager.getTable(t,String(n));return i?e.Rectangle.contains(i.getRange(),r):!1});if(a)return this._tableManager.getTable(t,String(a))}_ensureTableRangeRTree(t){return this._tableRangeRTree.has(t)||this._tableRangeRTree.set(t,new e.RTree),this._tableRangeRTree.get(t)}registerTableChangeEvent(){this.disposeWithMe(this._tableManager.tableAdd$.subscribe(e=>{let{range:t,tableId:n,unitId:r,subUnitId:i}=e;this._ensureTableRangeRTree(r).insert({unitId:r,sheetId:i,id:n,range:{...t}})})),this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe(e=>{let{range:t,tableId:n,unitId:r,subUnitId:i,oldRange:a}=e,o=this._ensureTableRangeRTree(r);o.remove({unitId:r,sheetId:i,id:n,range:{...a}}),o.insert({unitId:r,sheetId:i,id:n,range:{...t}})})),this.disposeWithMe(this._tableManager.tableDelete$.subscribe(e=>{let{tableId:t,unitId:n,subUnitId:r,range:i}=e;this._ensureTableRangeRTree(n).remove({unitId:n,sheetId:r,id:t,range:{...i}})}))}registerTableHeaderInterceptor(){this.disposeWithMe(this._sheetInterceptorService.intercept(n.INTERCEPTOR_POINT.CELL_CONTENT,{effect:e.InterceptorEffectEnum.Value,handler:(e,t,n)=>{let{row:r,col:i,unitId:a,subUnitId:o}=t,s=this._ensureTableRangeRTree(a);if((e==null?void 0:e.v)===void 0&&s){let c=Array.from(s.bulkSearch([{unitId:a,sheetId:o,range:{startColumn:i,endColumn:i,startRow:r,endRow:r}}]));if(c.length>0){let o=this._tableManager.getTable(a,c[0]);if(o){let a=o.getRange(),s=i-a.startColumn;if(a.startRow===r){let r=o.getColumnNameByIndex(s);return(!e||e===t.rawData)&&(e={...t.rawData}),e.v=r,n(e)}}}}return n(e)}}))}_toJson(e){return this._tableManager.toJSON(e)}_fromJSON(e,t){return this._tableManager.fromJSON(e,t)}_deleteUnitId(e){this._tableManager.deleteUnitId(e)}_initSnapshot(){this.disposeWithMe(this._resourceManagerService.registerPluginResource({toJson:e=>JSON.stringify(this._toJson(e)),parseJson:e=>{if(!e)return{};try{return JSON.parse(e)}catch{return{}}},businesses:[e.UniverInstanceType.UNIVER_SHEET],pluginName:ct,onLoad:(e,t)=>{this._fromJSON(e,t)},onUnLoad:e=>{this._deleteUnitId(e)}}))}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:t=>{if(t.id===n.RemoveSheetCommand.id){var r;let n=t.params,i=n.unitId||this._univerInstanceService.getCurrentUnitOfType(e.UniverInstanceType.UNIVER_SHEET).getUnitId(),a=n.subUnitId||((r=this._univerInstanceService.getCurrentUnitOfType(e.UniverInstanceType.UNIVER_SHEET).getActiveSheet())==null?void 0:r.getSheetId());if(!i||!a)return{redos:[],undos:[]};let o=this._tableManager.getTablesBySubunitId(i,a);if(o.length===0)return{redos:[],undos:[]};let s=[],c=[];return o.forEach(e=>{let t=e.toJSON();s.push({id:V.id,params:{unitId:i,subUnitId:a,tableId:t.id}}),c.push({id:B.id,params:{unitId:i,subUnitId:a,name:t.name,range:t.range,tableId:t.id,options:{...t.options,columns:t.columns,filters:t.filters.tableColumnFilterList}}})}),{redos:s,undos:c}}else if(t.id===n.CopySheetCommand.id){let{unitId:n,subUnitId:r,targetSubUnitId:i}=t.params;if(!n||!r||!i)return{redos:[],undos:[]};let a=this._tableManager.getTablesBySubunitId(n,r);if(a.length===0)return{redos:[],undos:[]};let o=[],s=[];return a.forEach(t=>{let r=t.toJSON(),a=(0,e.generateRandomId)();o.push({id:B.id,params:{unitId:n,subUnitId:i,name:r.name,range:{...r.range,sheetId:i},tableId:a,options:{...r.options,columns:r.columns,filters:r.filters.tableColumnFilterList}}}),s.push({id:V.id,params:{unitId:n,subUnitId:i,tableId:a}})}),{redos:o,undos:s}}return{redos:[],undos:[]}}}))}dispose(){super.dispose(),this._tableRangeRTree.clear()}};K=L([I(0,(0,e.Inject)(e.IUniverInstanceService)),I(1,(0,e.Inject)(n.SheetInterceptorService)),I(2,(0,e.Inject)(R)),I(3,(0,e.Inject)(e.IResourceManagerService))],K);const ft={id:`sheet.command.table-insert-row`,type:e.CommandType.COMMAND,handler:t=>{let r=(0,n.getSheetCommandTarget)(t.get(e.IUniverInstanceService));if(!r)return!1;let{workbook:i,worksheet:a,unitId:o,subUnitId:s}=r,c=t.get(n.SheetsSelectionsService).getCurrentSelections();if(!c.length||c.length>1)return!1;t.get(R);let l=c[0].range,u=t.get(K).getContainerTableWithRange(o,s,l);if(!u)return!1;let d=l.endRow-l.startRow+1,f=a.getRowCount()-1,p=a.getCellMatrix().getDataRange().endRow,m=[],h=[];if(f-p<d)m.push({id:n.InsertRowMutation.id,params:{unitId:o,subUnitId:s,range:{...l}}}),m.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:u.getId(),config:{updateRange:{newRange:{...u.getRange(),endRow:u.getRange().endRow+d}}}}}),h.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:u.getId(),config:{updateRange:{newRange:u.getRange()}}}}),h.push({id:n.RemoveRowMutation.id,params:{unitId:o,subUnitId:s,range:{...l}}});else{let e={...u.getRange()};m.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:u.getId(),config:{updateRange:{newRange:{...e,endRow:e.endRow+d}}}}}),h.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:u.getId(),config:{updateRange:{newRange:{...e}}}}});let r=(0,n.getMoveRangeUndoRedoMutations)(t,{unitId:o,subUnitId:s,range:{startRow:l.startRow,endRow:p,startColumn:e.startColumn,endColumn:e.endColumn}},{unitId:o,subUnitId:s,range:{startRow:l.startRow+d,endRow:p+d,startColumn:e.startColumn,endColumn:e.endColumn}});r&&(m.push(...r.redos),h.push(...r.undos))}return(0,e.sequenceExecute)(m,t.get(e.ICommandService))&&t.get(e.IUndoRedoService).pushUndoRedo({unitID:o,undoMutations:h,redoMutations:m}),!0}},pt={id:`sheet.command.table-insert-col`,type:e.CommandType.COMMAND,handler:t=>{let r=(0,n.getSheetCommandTarget)(t.get(e.IUniverInstanceService));if(!r)return!1;let{worksheet:o,unitId:s,subUnitId:c}=r,l=t.get(n.SheetsSelectionsService).getCurrentSelections();if(!l.length||l.length>1)return!1;let u=l[0].range,d=t.get(K).getContainerTableWithRange(s,c,u);if(!d)return!1;let f=u.endColumn-u.startColumn+1,p=o.getColumnCount()-1,m=o.getCellMatrix().getDataRange().endColumn,h=[],g=[];if(p-m<f)h.push({id:n.InsertColMutation.id,params:{unitId:s,subUnitId:c,range:{...u}}}),h.push({id:H.id,params:{unitId:s,subUnitId:c,tableId:d.getId(),config:{rowColOperation:{operationType:i.Insert,rowColType:a.Col,index:u.startColumn,count:f}}}}),g.push({id:H.id,params:{unitId:s,subUnitId:c,tableId:d.getId(),config:{rowColOperation:{operationType:i.Delete,rowColType:a.Col,index:u.startColumn,count:f}}}}),g.push({id:n.RemoveColMutation.id,params:{unitId:s,subUnitId:c,range:{...u}}});else{let e=d.getRange();h.push({id:H.id,params:{unitId:s,subUnitId:c,tableId:d.getId(),config:{rowColOperation:{operationType:i.Insert,rowColType:a.Col,index:u.startColumn,count:f}}}}),g.push({id:H.id,params:{unitId:s,subUnitId:c,tableId:d.getId(),config:{rowColOperation:{operationType:i.Delete,rowColType:a.Col,index:u.startColumn,count:f}}}});let r=(0,n.getMoveRangeUndoRedoMutations)(t,{unitId:s,subUnitId:c,range:{startRow:e.startRow,endRow:e.endRow,startColumn:u.startColumn,endColumn:m}},{unitId:s,subUnitId:c,range:{startRow:e.startRow,endRow:e.endRow,startColumn:u.startColumn+f,endColumn:m+f}});r&&(h.push(...r.redos),g.push(...r.undos))}return(0,e.sequenceExecute)(h,t.get(e.ICommandService))&&t.get(e.IUndoRedoService).pushUndoRedo({unitID:s,undoMutations:g,redoMutations:h}),!0}},mt={id:`sheet.command.table-remove-row`,type:e.CommandType.COMMAND,handler:(t,r)=>{if(!r)return!1;let i=(0,n.getSheetCommandTarget)(t.get(e.IUniverInstanceService),r);if(!i)return!1;let{unitId:a,subUnitId:o}=i,s=t.get(n.SheetsSelectionsService).getCurrentSelections();if(!s.length||s.length>1)return!1;let c=s[0].range,l=t.get(K).getContainerTableWithRange(a,o,c);if(!l)return!1;let u=c.endRow-c.startRow+1,d=[],f=[],p=l.getRange();d.push({id:H.id,params:{unitId:a,subUnitId:o,tableId:l.getId(),config:{updateRange:{newRange:{...p,endRow:p.endRow-u}}}}}),f.push({id:H.id,params:{unitId:a,subUnitId:o,tableId:l.getId(),config:{updateRange:{newRange:{...p}}}}});let m=i.worksheet.getCellMatrix().getDataRange().endRow,h=(0,n.getMoveRangeUndoRedoMutations)(t,{unitId:a,subUnitId:o,range:{startRow:c.endRow+1,endRow:m,startColumn:p.startColumn,endColumn:p.endColumn}},{unitId:a,subUnitId:o,range:{startRow:c.startRow,endRow:m-u,startColumn:p.startColumn,endColumn:p.endColumn}});return h&&(d.push(...h.redos),f.push(...h.undos)),(0,e.sequenceExecute)(d,t.get(e.ICommandService))&&t.get(e.IUndoRedoService).pushUndoRedo({unitID:a,undoMutations:f,redoMutations:d}),!0}},q={id:`sheet.command.table-remove-col`,type:e.CommandType.COMMAND,handler:(t,r)=>{if(!r)return!1;let o=(0,n.getSheetCommandTarget)(t.get(e.IUniverInstanceService),r);if(!o)return!1;let{workbook:s,unitId:c,subUnitId:l}=o;t.get(R);let u=t.get(n.SheetsSelectionsService).getCurrentSelections();if(!u.length||u.length>1)return!1;let d=u[0].range,f=t.get(K).getContainerTableWithRange(c,l,d);if(!f)return!1;let p=d.endColumn-d.startColumn+1,m=[],h=[],g=f.getRange();m.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:f.getId(),config:{rowColOperation:{operationType:i.Delete,rowColType:a.Col,index:d.startColumn,count:p}}}});let _=[],v=d.startColumn-g.startColumn;for(let e=0;e<p;e++){let t=f.getTableInfo().columns[v+e];t&&_.push(t)}h.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:f.getId(),config:{rowColOperation:{operationType:i.Insert,rowColType:a.Col,index:d.startColumn,count:p,columnsJson:_}}}});let y=o.worksheet.getCellMatrix().getDataRange().endColumn,b=(0,n.getMoveRangeUndoRedoMutations)(t,{unitId:c,subUnitId:l,range:{startRow:g.startRow,endRow:g.endRow,startColumn:d.endColumn+1,endColumn:y}},{unitId:c,subUnitId:l,range:{startRow:g.startRow,endRow:g.endRow,startColumn:d.startColumn,endColumn:y-p}});return b&&(m.push(...b.redos),h.push(...b.undos)),(0,e.sequenceExecute)(m,t.get(e.ICommandService))&&t.get(e.IUndoRedoService).pushUndoRedo({unitID:c,undoMutations:h,redoMutations:m}),!0}};var ht=`@univerjs/sheets-table`,gt=`0.20.1`;let J=class extends e.Disposable{constructor(e,t){super(),this._tableManager=e,this._commandService=t,this._initRangeListener()}_initRangeListener(){this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe(e=>{let{tableId:t,unitId:n}=e,r=this._tableManager.getTableById(n,t);r&&this._updateSuperTable(n,r)})),this.disposeWithMe(this._tableManager.tableAdd$.subscribe(e=>{let{tableId:t,unitId:n}=e,r=this._tableManager.getTableById(n,t);r&&this._updateSuperTable(n,r)})),this.disposeWithMe(this._tableManager.tableDelete$.subscribe(e=>{let{unitId:n,tableName:r}=e;this._commandService.executeCommand(t.RemoveSuperTableMutation.id,{unitId:n,tableName:r})})),this.disposeWithMe(this._tableManager.tableNameChanged$.subscribe(e=>{let{tableId:n,unitId:r,oldTableName:i}=e;this._commandService.executeCommand(t.RemoveSuperTableMutation.id,{unitId:r,tableName:i});let a=this._tableManager.getTableById(r,n);a&&this._updateSuperTable(r,a)}))}_updateSuperTable(e,n){let r=n.getTableInfo(),i=r.name,a=r.columns,o=new Map;a.forEach((e,t)=>{o.set(e.displayName,t)}),this._commandService.executeCommand(t.SetSuperTableMutation.id,{unitId:e,tableName:i,reference:{range:r.range,sheetId:r.subUnitId,titleMap:o}})}};J=L([I(0,(0,e.Inject)(R)),I(1,e.ICommandService)],J);let Y=class extends e.Disposable{constructor(e,t){super(),this._tableManager=e,this._exclusiveRangeService=t,this._initRangeListener()}_initRangeListener(){this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe(e=>{let{range:t,tableId:n,unitId:r,subUnitId:i}=e;this._exclusiveRangeService.clearExclusiveRangesByGroupId(r,i,U,n),this._exclusiveRangeService.addExclusiveRange(r,i,U,[{range:{...t},groupId:n}])})),this.disposeWithMe(this._tableManager.tableAdd$.subscribe(e=>{let{tableId:t,unitId:n,subUnitId:r,range:i}=e;this._exclusiveRangeService.addExclusiveRange(n,r,U,[{range:{...i},groupId:t}])})),this.disposeWithMe(this._tableManager.tableDelete$.subscribe(e=>{let{tableId:t,unitId:n,subUnitId:r}=e;this._exclusiveRangeService.clearExclusiveRangesByGroupId(n,r,U,t)}))}};Y=L([I(0,(0,e.Inject)(R)),I(1,(0,e.Inject)(n.IExclusiveRangeService))],Y);let X=class extends e.Disposable{constructor(e,t,n,r,i,a,o){super(),this._commandService=e,this._refRangeService=t,this._univerInstanceService=n,this._injector=r,this._sheetInterceptorService=i,this._tableManager=a,this._localeService=o,this._initCommandInterceptor(),this._initCommandListener()}_initCommandInterceptor(){let e=this;this._sheetInterceptorService.interceptCommand({getMutations(t){let r={redos:[],undos:[]},{id:i,params:a}=t;switch(i){case n.InsertRowCommand.id:return e._generateTableMutationWithInsertRow(a);case n.InsertColCommand.id:return e._generateTableMutationWithInsertCol(a);case n.RemoveRowCommand.id:return e._generateTableMutationWithRemoveRow(a);case n.RemoveColCommand.id:return e._generateTableMutationWithRemoveCol(a)}return r}})}_generateTableMutationWithInsertRow(e){let t=[],r=[],i=(0,n.getSheetCommandTarget)(this._univerInstanceService,e);if(!i)return{undos:t,redos:r};let{unitId:a,subUnitId:o}=i,s=this._tableManager.getTablesBySubunitId(a,o);if(!s.length)return{undos:t,redos:r};let{range:c}=e;return s.forEach(e=>{let n=e.getRange();if(c.startRow>n.startRow&&c.startRow<=n.endRow){let i=c.endRow-c.startRow+1;r.push({id:H.id,params:{unitId:a,subUnitId:o,tableId:e.getId(),config:{updateRange:{newRange:{...n,endRow:n.endRow+i}}}}}),t.push({id:H.id,params:{unitId:a,subUnitId:o,tableId:e.getId(),config:{updateRange:{newRange:{...n}}}}})}}),{undos:t,redos:r}}_generateTableMutationWithInsertCol(e){let t=[],r=[],o=(0,n.getSheetCommandTarget)(this._univerInstanceService,e);if(!o)return{undos:t,redos:r};let{unitId:s,subUnitId:c}=o,l=this._tableManager.getTablesBySubunitId(s,c);if(!l.length)return{undos:t,redos:r};let{range:u}=e;return l.forEach(e=>{let n=e.getRange();if(u.startColumn>n.startColumn&&u.startColumn<=n.endColumn){let n=u.endColumn-u.startColumn+1;r.push({id:H.id,params:{unitId:s,subUnitId:c,tableId:e.getId(),config:{rowColOperation:{operationType:i.Insert,rowColType:a.Col,index:u.startColumn,count:n}}}}),t.push({id:H.id,params:{unitId:s,subUnitId:c,tableId:e.getId(),config:{rowColOperation:{operationType:i.Delete,rowColType:a.Col,index:u.startColumn,count:n}}}})}}),{undos:t,redos:r}}_generateTableMutationWithRemoveRow(t){let r=[],i=[],a=[],o=[],s=(0,n.getSheetCommandTarget)(this._univerInstanceService);if(!s)return{undos:r,redos:i,preRedos:a,preUndos:o};let{unitId:c,subUnitId:l}=s,u=this._tableManager.getTablesBySubunitId(c,l);if(!u.length)return{undos:r,redos:i,preRedos:a,preUndos:o};let{range:d}=t,f=d.endRow-d.startRow+1;return u.forEach(t=>{let n=t.getRange();if(e.Rectangle.intersects(n,d))if(d.startRow<=n.startRow&&d.endRow>=n.startRow){a.push({id:V.id,params:{unitId:c,subUnitId:l,tableId:t.getId()}});let e=t.toJSON();r.push({id:B.id,params:{unitId:c,subUnitId:l,tableId:e.id,name:e.name,range:e.range,options:e.options}})}else d.startRow>n.startRow&&d.startRow<=n.endRow?(i.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:t.getId(),config:{updateRange:{newRange:{...n,endRow:n.endRow-f}}}}}),r.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:t.getId(),config:{updateRange:{newRange:{...n}}}}})):d.startRow<n.endRow&&d.endRow>=n.endRow&&(i.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:t.getId(),config:{updateRange:{newRange:{...n,endRow:d.startRow-1}}}}}),r.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:t.getId(),config:{updateRange:{newRange:{...n}}}}}))}),{undos:r,redos:i,preRedos:a,preUndos:o}}_generateTableMutationWithRemoveCol(t){let r=[],o=[],s=[],c=[],l=(0,n.getSheetCommandTarget)(this._univerInstanceService);if(!l)return{undos:r,redos:o,preRedos:s,preUndos:c};let{unitId:u,subUnitId:d}=l,f=this._tableManager.getTablesBySubunitId(u,d);if(!f.length)return{undos:r,redos:o,preRedos:s,preUndos:c};let{range:p}=t,h=p.endColumn-p.startColumn+1;return f.forEach(t=>{let n=t.getRange();if(e.Rectangle.intersects(n,p)){if(p.startColumn<=n.startColumn&&p.endColumn>=n.endColumn){s.push({id:V.id,params:{unitId:u,subUnitId:d,tableId:t.getId()}});let e=t.toJSON(),{startRow:n,startColumn:i,endColumn:a}=e.range,l=this._univerInstanceService.getUnit(u),f=l==null?void 0:l.getSheetBySheetId(d);if(!f)return{undos:r,redos:o,preRedos:s,preUndos:c};let p=[];for(let e=i;e<=a;e++)p.push(v(f==null?void 0:f.getCell(n,e))||m(e-i+1,this._localeService.t(`sheets-table.columnPrefix`)));r.push({id:B.id,params:{unitId:u,subUnitId:d,tableId:e.id,name:e.name,header:p,range:e.range,options:e.options}})}else if(p.startColumn<=n.startColumn&&p.endColumn>=n.startColumn){let e=p.endColumn-n.startColumn+1;o.push({id:H.id,params:{unitId:u,subUnitId:d,tableId:t.getId(),config:{rowColOperation:{operationType:i.Delete,rowColType:a.Col,index:n.startColumn,count:e}}}});let s=[];for(let n=0;n<e;n++){let e=t.getTableColumnByIndex(n);e&&s.push(e.toJSON())}r.push({id:H.id,params:{unitId:u,subUnitId:d,tableId:t.getId(),config:{rowColOperation:{operationType:i.Insert,rowColType:a.Col,index:n.startColumn,count:e,columnsJson:s}}}})}else if(p.startColumn>n.startColumn&&p.endColumn>n.endColumn){let e=n.endColumn-p.startColumn+1;o.push({id:H.id,params:{unitId:u,subUnitId:d,tableId:t.getId(),config:{rowColOperation:{operationType:i.Delete,rowColType:a.Col,index:p.startColumn,count:e}}}});let s=[],c=p.startColumn-n.startColumn;for(let n=0;n<e;n++){let e=t.getTableColumnByIndex(n+c);e&&s.push(e.toJSON())}r.push({id:H.id,params:{unitId:u,subUnitId:d,tableId:t.getId(),config:{rowColOperation:{operationType:i.Insert,rowColType:a.Col,index:p.startColumn,count:h,columnsJson:s}}}})}else if(p.startColumn>n.startColumn&&p.endColumn<=n.endColumn){o.push({id:H.id,params:{unitId:u,subUnitId:d,tableId:t.getId(),config:{rowColOperation:{operationType:i.Delete,rowColType:a.Col,index:p.startColumn,count:h}}}});let e=[],s=p.startColumn-n.startColumn;for(let n=0;n<h;n++){let r=t.getTableColumnByIndex(n+s);r&&e.push(r.toJSON())}r.push({id:H.id,params:{unitId:u,subUnitId:d,tableId:t.getId(),config:{rowColOperation:{operationType:i.Insert,rowColType:a.Col,index:p.startColumn,count:h,columnsJson:e}}}})}}}),{undos:r,redos:o,preRedos:s,preUndos:c}}_initCommandListener(){this._commandService.onCommandExecuted(e=>{if(e.id===n.InsertRowMutation.id){let{unitId:t,subUnitId:n,range:r}=e.params,i=r.endRow-r.startRow+1;this._tableManager.getTablesBySubunitId(t,n).forEach(e=>{let n=e.getRange();r.startRow<=n.startRow&&this._tableManager.updateTableRange(t,e.getId(),{newRange:{...n,startRow:n.startRow+i,endRow:n.endRow+i}})})}else if(e.id===n.InsertColMutation.id){let{unitId:t,subUnitId:n,range:r}=e.params,i=r.endColumn-r.startColumn+1;this._tableManager.getTablesBySubunitId(t,n).forEach(e=>{let n=e.getRange();r.startColumn<=n.startColumn&&this._tableManager.updateTableRange(t,e.getId(),{newRange:{...n,startColumn:n.startColumn+i,endColumn:n.endColumn+i}})})}else if(e.id===n.RemoveRowMutation.id){let{unitId:t,subUnitId:n,range:r}=e.params,i=r.endRow-r.startRow+1;this._tableManager.getTablesBySubunitId(t,n).forEach(e=>{let n=e.getRange();r.startRow<n.startRow&&this._tableManager.updateTableRange(t,e.getId(),{newRange:{...n,startRow:n.startRow-i,endRow:n.endRow-i}})})}else if(e.id===n.RemoveColMutation.id){let{unitId:t,subUnitId:n,range:r}=e.params,i=r.endColumn-r.startColumn+1;this._tableManager.getTablesBySubunitId(t,n).forEach(e=>{let n=e.getRange();r.startColumn<n.startColumn&&this._tableManager.updateTableRange(t,e.getId(),{newRange:{...n,startColumn:n.startColumn-i,endColumn:n.endColumn-i}})})}})}};X=L([I(0,(0,e.Inject)(e.ICommandService)),I(1,(0,e.Inject)(n.RefRangeService)),I(2,(0,e.Inject)(e.IUniverInstanceService)),I(3,(0,e.Inject)(e.Injector)),I(4,(0,e.Inject)(n.SheetInterceptorService)),I(5,(0,e.Inject)(R)),I(6,(0,e.Inject)(e.LocaleService))],X);let Z=class extends e.Disposable{constructor(e,t,n,r){super(),this._tableManager=e,this._sheetRangeThemeService=t,this._sheetRangeThemeModel=n,this._configService=r,E(this,`_defaultThemeIndex`,0),E(this,`_allThemes`,[]),this._initUserTableTheme(),this.registerTableChangeEvent(),this._initDefaultTableTheme()}registerTableChangeEvent(){this.disposeWithMe(this._tableManager.tableAdd$.subscribe(e=>{let{range:t,tableId:n,unitId:r,subUnitId:i,tableStyleId:a}=e,o=this._tableManager.getTable(r,n),s=a||this._allThemes[this._defaultThemeIndex].name;o.setTableStyleId(s),this._sheetRangeThemeService.registerRangeThemeStyle(s,{unitId:r,subUnitId:i,range:{...t}})})),this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe(e=>{let{range:t,oldRange:n,tableId:r,unitId:i,subUnitId:a}=e,o=this._tableManager.getTable(i,r),s=o.getTableStyleId();s||(s=this._allThemes[this._defaultThemeIndex].name,o.setTableStyleId(s)),this._sheetRangeThemeService.removeRangeThemeRule(s,{unitId:i,subUnitId:a,range:{...n}}),this._sheetRangeThemeService.registerRangeThemeStyle(s,{unitId:i,subUnitId:a,range:{...t}})})),this.disposeWithMe(this._tableManager.tableThemeChanged$.subscribe(e=>{let{theme:t,oldTheme:n,tableId:r,unitId:i,subUnitId:a}=e,o=this._tableManager.getTable(i,r).getRange();this._sheetRangeThemeService.removeRangeThemeRule(n,{unitId:i,subUnitId:a,range:{...o}}),this._sheetRangeThemeService.registerRangeThemeStyle(t,{unitId:i,subUnitId:a,range:{...o}})})),this.disposeWithMe(this._tableManager.tableDelete$.subscribe(e=>{let{range:t,unitId:n,subUnitId:r,tableStyleId:i=this._allThemes[this._defaultThemeIndex].name}=e;this._sheetRangeThemeService.removeRangeThemeRule(i,{unitId:n,subUnitId:r,range:{...t}})}))}_initUserTableTheme(){let e=this._configService.getConfig(`sheets-table.config`)||{},t=e.defaultThemeIndex||0,n=e.userThemes||[];this._defaultThemeIndex=t,this._allThemes=n.concat(w)}_initDefaultTableTheme(){for(let e=0;e<this._allThemes.length;e++){let{name:t,style:r}=this._allThemes[e],i=new n.RangeThemeStyle(t,r);this._sheetRangeThemeModel.registerDefaultRangeTheme(i)}}dispose(){super.dispose(),this._allThemes=[],this._defaultThemeIndex=0}};Z=L([I(0,(0,e.Inject)(R)),I(1,(0,e.Inject)(n.SheetRangeThemeService)),I(2,(0,e.Inject)(n.SheetRangeThemeModel)),I(3,e.IConfigService)],Z);let Q=class extends e.Disposable{constructor(e,t,n,i){super(),this._tableManager=e,this._sheetInterceptorService=t,this._univerInstanceService=n,this._zebraCrossingCacheController=i,E(this,`_tableFilteredOutRows$`,new r.BehaviorSubject(new Set)),E(this,`tableFilteredOutRows$`,this._tableFilteredOutRows$.asObservable()),E(this,`_subscription`,null),this.registerFilterChangeEvent(),this.initTableHiddenRowIntercept(),this._initFilteredOutRows()}get tableFilteredOutRows(){return this._tableFilteredOutRows$.value}set tableFilteredOutRows(e){this._tableFilteredOutRows$.next(e)}initTableHiddenRowIntercept(){this.disposeWithMe(this._sheetInterceptorService.intercept(n.INTERCEPTOR_POINT.ROW_FILTERED,{priority:100,handler:(e,t,n)=>{if(e)return!0;let r=this.tableFilteredOutRows.has(t.row);return r?!0:n(r)}}))}_initFilteredOutRows(){this._tableManager.tableInitStatus$.pipe((0,r.filter)(e=>e),(0,r.switchMap)(()=>this._univerInstanceService.getCurrentTypeOfUnit$(e.UniverInstanceType.UNIVER_SHEET)),(0,r.filter)(e=>e!=null),(0,r.switchMap)(e=>e.activeSheet$),(0,r.filter)(e=>e!=null)).subscribe(()=>{let e=(0,n.getSheetCommandTarget)(this._univerInstanceService);if(!e)return;let{unitId:t,subUnitId:r}=e;this.tableFilteredOutRows.clear(),this._tableManager.getTablesBySubunitId(t,r).forEach(e=>{let t=e.getTableFilters().getFilterOutRows();if(t)for(let e of t)this.tableFilteredOutRows.add(e)})})}registerFilterChangeEvent(){this.disposeWithMe(this._tableManager.tableFilterChanged$.subscribe(e=>{var t;let{unitId:n,subUnitId:r,tableId:i}=e,a=(t=this._univerInstanceService.getUnit(n))==null?void 0:t.getSheetBySheetId(r),o=this._tableManager.getTable(n,i);!a||!o||(this.tableFilteredOutRows.clear(),o.getTableFilters().doFilter(a,o.getTableFilterRange()),this._tableManager.getTablesBySubunitId(n,r).forEach(e=>{let t=e.getTableFilters().getFilterOutRows();if(t)for(let e of t)this.tableFilteredOutRows.add(e)}),this._zebraCrossingCacheController.updateZebraCrossingCache(n,r))}))}dispose(){var e;super.dispose(),(e=this._subscription)==null||e.unsubscribe()}};Q=L([I(0,(0,e.Inject)(R)),I(1,(0,e.Inject)(n.SheetInterceptorService)),I(2,(0,e.Inject)(e.IUniverInstanceService)),I(3,(0,e.Inject)(n.ZebraCrossingCacheController))],Q);let $=class extends e.Plugin{constructor(t=C,n,r,i){super(),this._config=t,this._injector=n,this._configService=r,this._commandService=i;let{...a}=(0,e.merge)({},C,this._config);this._configService.setConfig(te,a),this._initRegisterCommand()}onStarting(){(0,e.registerDependencies)(this._injector,[[R],[Z],[K],[z],[Q],[Y],[X],[J]])}onReady(){(0,e.touchDependencies)(this._injector,[[J],[Y],[X],[Z],[K],[z],[Q]]),(0,e.touchDependencies)(this._injector,[[R]])}_initRegisterCommand(){[at,B,st,V,G,dt,W,H,ot,ut,ft,pt,mt,q].forEach(e=>this._commandService.registerCommand(e))}};E($,`pluginName`,ct),E($,`packageName`,ht),E($,`version`,gt),E($,`type`,e.UniverInstanceType.UNIVER_SHEET),$=L([I(1,(0,e.Inject)(e.Injector)),I(2,e.IConfigService),I(3,(0,e.Inject)(e.ICommandService))],$),exports.AddSheetTableCommand=at,exports.AddSheetTableMutation=B,exports.AddTableThemeCommand=ot,exports.DeleteSheetTableCommand=st,exports.DeleteSheetTableMutation=V,exports.RemoveTableThemeCommand=ut,exports.SHEET_TABLE_CUSTOM_THEME_PREFIX=lt,exports.SetSheetTableCommand=W,exports.SetSheetTableFilterCommand=dt,exports.SetSheetTableFilterMutation=G,exports.SetSheetTableMutation=H,exports.SheetTableInsertColCommand=pt,exports.SheetTableInsertRowCommand=ft,exports.SheetTableRemoveColCommand=q,exports.SheetTableRemoveRowCommand=mt,Object.defineProperty(exports,`SheetTableService`,{enumerable:!0,get:function(){return z}}),exports.SheetsTableButtonStateEnum=f,Object.defineProperty(exports,`SheetsTableController`,{enumerable:!0,get:function(){return K}}),exports.SheetsTableSortStateEnum=p,exports.TableColumnDataTypeEnum=o,exports.TableColumnFilterTypeEnum=s,exports.TableConditionTypeEnum=c,exports.TableDateCompareTypeEnum=d,Object.defineProperty(exports,`TableManager`,{enumerable:!0,get:function(){return R}}),exports.TableNumberCompareTypeEnum=l,exports.TableStringCompareTypeEnum=u,Object.defineProperty(exports,`UniverSheetsTablePlugin`,{enumerable:!0,get:function(){return $}}),exports.customEmptyThemeWithBorderStyle=ne,exports.isConditionFilter=b,exports.isManualTableFilter=ee,exports.processStyleWithBorderStyle=re;
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
let _univerjs_core = require("@univerjs/core");
|
|
3
|
+
let _univerjs_engine_formula = require("@univerjs/engine-formula");
|
|
4
|
+
let _univerjs_sheets = require("@univerjs/sheets");
|
|
5
|
+
let rxjs = require("rxjs");
|
|
6
|
+
|
|
7
|
+
//#region src/types/type.ts
|
|
8
|
+
let IRangeOperationTypeEnum = /* @__PURE__ */ function(IRangeOperationTypeEnum) {
|
|
9
|
+
IRangeOperationTypeEnum["Insert"] = "insert";
|
|
10
|
+
IRangeOperationTypeEnum["Delete"] = "delete";
|
|
11
|
+
return IRangeOperationTypeEnum;
|
|
12
|
+
}({});
|
|
13
|
+
let IRowColTypeEnum = /* @__PURE__ */ function(IRowColTypeEnum) {
|
|
14
|
+
IRowColTypeEnum["Row"] = "row";
|
|
15
|
+
IRowColTypeEnum["Col"] = "column";
|
|
16
|
+
return IRowColTypeEnum;
|
|
17
|
+
}({});
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region src/types/enum.ts
|
|
21
|
+
/**
|
|
22
|
+
* Copyright 2023-present DreamNum Co., Ltd.
|
|
23
|
+
*
|
|
24
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
25
|
+
* you may not use this file except in compliance with the License.
|
|
26
|
+
* You may obtain a copy of the License at
|
|
27
|
+
*
|
|
28
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
29
|
+
*
|
|
30
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
31
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
32
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
33
|
+
* See the License for the specific language governing permissions and
|
|
34
|
+
* limitations under the License.
|
|
35
|
+
*/
|
|
36
|
+
let TableColumnDataTypeEnum = /* @__PURE__ */ function(TableColumnDataTypeEnum) {
|
|
37
|
+
TableColumnDataTypeEnum["None"] = "none";
|
|
38
|
+
TableColumnDataTypeEnum["String"] = "string";
|
|
39
|
+
TableColumnDataTypeEnum["Number"] = "number";
|
|
40
|
+
TableColumnDataTypeEnum["Date"] = "date";
|
|
41
|
+
TableColumnDataTypeEnum["Bool"] = "bool";
|
|
42
|
+
TableColumnDataTypeEnum["Checkbox"] = "checkbox";
|
|
43
|
+
TableColumnDataTypeEnum["List"] = "list";
|
|
44
|
+
return TableColumnDataTypeEnum;
|
|
45
|
+
}({});
|
|
46
|
+
let TableColumnFilterTypeEnum = /* @__PURE__ */ function(TableColumnFilterTypeEnum) {
|
|
47
|
+
TableColumnFilterTypeEnum["manual"] = "manual";
|
|
48
|
+
TableColumnFilterTypeEnum["condition"] = "condition";
|
|
49
|
+
return TableColumnFilterTypeEnum;
|
|
50
|
+
}({});
|
|
51
|
+
let TableConditionTypeEnum = /* @__PURE__ */ function(TableConditionTypeEnum) {
|
|
52
|
+
TableConditionTypeEnum["Date"] = "date";
|
|
53
|
+
TableConditionTypeEnum["Number"] = "number";
|
|
54
|
+
TableConditionTypeEnum["String"] = "string";
|
|
55
|
+
TableConditionTypeEnum["Logic"] = "logic";
|
|
56
|
+
return TableConditionTypeEnum;
|
|
57
|
+
}({});
|
|
58
|
+
let TableNumberCompareTypeEnum = /* @__PURE__ */ function(TableNumberCompareTypeEnum) {
|
|
59
|
+
TableNumberCompareTypeEnum["Equal"] = "equal";
|
|
60
|
+
TableNumberCompareTypeEnum["NotEqual"] = "notEqual";
|
|
61
|
+
TableNumberCompareTypeEnum["GreaterThan"] = "greaterThan";
|
|
62
|
+
TableNumberCompareTypeEnum["GreaterThanOrEqual"] = "greaterThanOrEqual";
|
|
63
|
+
TableNumberCompareTypeEnum["LessThan"] = "lessThan";
|
|
64
|
+
TableNumberCompareTypeEnum["LessThanOrEqual"] = "lessThanOrEqual";
|
|
65
|
+
TableNumberCompareTypeEnum["Between"] = "between";
|
|
66
|
+
TableNumberCompareTypeEnum["NotBetween"] = "notBetween";
|
|
67
|
+
TableNumberCompareTypeEnum["Above"] = "above";
|
|
68
|
+
TableNumberCompareTypeEnum["Below"] = "below";
|
|
69
|
+
TableNumberCompareTypeEnum["TopN"] = "topN";
|
|
70
|
+
return TableNumberCompareTypeEnum;
|
|
71
|
+
}({});
|
|
72
|
+
let TableStringCompareTypeEnum = /* @__PURE__ */ function(TableStringCompareTypeEnum) {
|
|
73
|
+
TableStringCompareTypeEnum["Equal"] = "equal";
|
|
74
|
+
TableStringCompareTypeEnum["NotEqual"] = "notEqual";
|
|
75
|
+
TableStringCompareTypeEnum["Contains"] = "contains";
|
|
76
|
+
TableStringCompareTypeEnum["NotContains"] = "notContains";
|
|
77
|
+
TableStringCompareTypeEnum["StartsWith"] = "startsWith";
|
|
78
|
+
TableStringCompareTypeEnum["EndsWith"] = "endsWith";
|
|
79
|
+
return TableStringCompareTypeEnum;
|
|
80
|
+
}({});
|
|
81
|
+
let TableDateCompareTypeEnum = /* @__PURE__ */ function(TableDateCompareTypeEnum) {
|
|
82
|
+
TableDateCompareTypeEnum["Equal"] = "equal";
|
|
83
|
+
TableDateCompareTypeEnum["NotEqual"] = "notEqual";
|
|
84
|
+
TableDateCompareTypeEnum["After"] = "after";
|
|
85
|
+
TableDateCompareTypeEnum["AfterOrEqual"] = "afterOrEqual";
|
|
86
|
+
TableDateCompareTypeEnum["Before"] = "before";
|
|
87
|
+
TableDateCompareTypeEnum["BeforeOrEqual"] = "beforeOrEqual";
|
|
88
|
+
TableDateCompareTypeEnum["Between"] = "between";
|
|
89
|
+
TableDateCompareTypeEnum["NotBetween"] = "notBetween";
|
|
90
|
+
TableDateCompareTypeEnum["Today"] = "today";
|
|
91
|
+
TableDateCompareTypeEnum["Yesterday"] = "yesterday";
|
|
92
|
+
TableDateCompareTypeEnum["Tomorrow"] = "tomorrow";
|
|
93
|
+
TableDateCompareTypeEnum["ThisWeek"] = "thisWeek";
|
|
94
|
+
TableDateCompareTypeEnum["LastWeek"] = "lastWeek";
|
|
95
|
+
TableDateCompareTypeEnum["NextWeek"] = "nextWeek";
|
|
96
|
+
TableDateCompareTypeEnum["ThisMonth"] = "thisMonth";
|
|
97
|
+
TableDateCompareTypeEnum["LastMonth"] = "lastMonth";
|
|
98
|
+
TableDateCompareTypeEnum["NextMonth"] = "nextMonth";
|
|
99
|
+
TableDateCompareTypeEnum["ThisQuarter"] = "thisQuarter";
|
|
100
|
+
TableDateCompareTypeEnum["LastQuarter"] = "lastQuarter";
|
|
101
|
+
TableDateCompareTypeEnum["NextQuarter"] = "nextQuarter";
|
|
102
|
+
TableDateCompareTypeEnum["ThisYear"] = "thisYear";
|
|
103
|
+
TableDateCompareTypeEnum["LastYear"] = "lastYear";
|
|
104
|
+
TableDateCompareTypeEnum["NextYear"] = "nextYear";
|
|
105
|
+
TableDateCompareTypeEnum["YearToDate"] = "yearToDate";
|
|
106
|
+
TableDateCompareTypeEnum["Quarter"] = "quarter";
|
|
107
|
+
TableDateCompareTypeEnum["Month"] = "month";
|
|
108
|
+
TableDateCompareTypeEnum["M1"] = "m1";
|
|
109
|
+
TableDateCompareTypeEnum["M2"] = "m2";
|
|
110
|
+
TableDateCompareTypeEnum["M3"] = "m3";
|
|
111
|
+
TableDateCompareTypeEnum["M4"] = "m4";
|
|
112
|
+
TableDateCompareTypeEnum["M5"] = "m5";
|
|
113
|
+
TableDateCompareTypeEnum["M6"] = "m6";
|
|
114
|
+
TableDateCompareTypeEnum["M7"] = "m7";
|
|
115
|
+
TableDateCompareTypeEnum["M8"] = "m8";
|
|
116
|
+
TableDateCompareTypeEnum["M9"] = "m9";
|
|
117
|
+
TableDateCompareTypeEnum["M10"] = "m10";
|
|
118
|
+
TableDateCompareTypeEnum["M11"] = "m11";
|
|
119
|
+
TableDateCompareTypeEnum["M12"] = "m12";
|
|
120
|
+
TableDateCompareTypeEnum["Q1"] = "q1";
|
|
121
|
+
TableDateCompareTypeEnum["Q2"] = "q2";
|
|
122
|
+
TableDateCompareTypeEnum["Q3"] = "q3";
|
|
123
|
+
TableDateCompareTypeEnum["Q4"] = "q4";
|
|
124
|
+
return TableDateCompareTypeEnum;
|
|
125
|
+
}({});
|
|
126
|
+
/**
|
|
127
|
+
* Represents the pivot cell style type enum
|
|
128
|
+
*/
|
|
129
|
+
let SheetsTableButtonStateEnum = /* @__PURE__ */ function(SheetsTableButtonStateEnum) {
|
|
130
|
+
SheetsTableButtonStateEnum[SheetsTableButtonStateEnum["FilteredSortNone"] = 1] = "FilteredSortNone";
|
|
131
|
+
SheetsTableButtonStateEnum[SheetsTableButtonStateEnum["FilteredSortAsc"] = 2] = "FilteredSortAsc";
|
|
132
|
+
SheetsTableButtonStateEnum[SheetsTableButtonStateEnum["FilteredSortDesc"] = 3] = "FilteredSortDesc";
|
|
133
|
+
SheetsTableButtonStateEnum[SheetsTableButtonStateEnum["FilterNoneSortNone"] = 4] = "FilterNoneSortNone";
|
|
134
|
+
SheetsTableButtonStateEnum[SheetsTableButtonStateEnum["FilterNoneSortAsc"] = 5] = "FilterNoneSortAsc";
|
|
135
|
+
SheetsTableButtonStateEnum[SheetsTableButtonStateEnum["FilterNoneSortDesc"] = 6] = "FilterNoneSortDesc";
|
|
136
|
+
return SheetsTableButtonStateEnum;
|
|
137
|
+
}({});
|
|
138
|
+
let SheetsTableSortStateEnum = /* @__PURE__ */ function(SheetsTableSortStateEnum) {
|
|
139
|
+
SheetsTableSortStateEnum["Asc"] = "asc";
|
|
140
|
+
SheetsTableSortStateEnum["Desc"] = "desc";
|
|
141
|
+
SheetsTableSortStateEnum["None"] = "none";
|
|
142
|
+
return SheetsTableSortStateEnum;
|
|
143
|
+
}({});
|
|
144
|
+
|
|
145
|
+
//#endregion
|
|
146
|
+
//#region src/util.ts
|
|
147
|
+
function getColumnName(columnIndex, columnText) {
|
|
148
|
+
return `${columnText} ${columnIndex}`;
|
|
149
|
+
}
|
|
150
|
+
const BooleanTrue = "TRUE";
|
|
151
|
+
const BooleanFalse = "FALSE";
|
|
152
|
+
const getStringFromDataStream$1 = (data) => {
|
|
153
|
+
var _data$body;
|
|
154
|
+
return ((_data$body = data.body) === null || _data$body === void 0 ? void 0 : _data$body.dataStream.replace(/\r\n$/, "")) || "";
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* transform cell data to dimension name
|
|
158
|
+
* @param cellData the sheet cell data
|
|
159
|
+
* @param styles workBook styles collection
|
|
160
|
+
* @param patternInfoRecord The cache record for pattern info
|
|
161
|
+
* @returns {string} The dimension name
|
|
162
|
+
*/
|
|
163
|
+
function convertCellDataToString(cellData) {
|
|
164
|
+
if (cellData) {
|
|
165
|
+
const { v, t, p } = cellData;
|
|
166
|
+
if (p) return getStringFromDataStream$1(p);
|
|
167
|
+
if ((t === _univerjs_core.CellValueType.FORCE_STRING || t === _univerjs_core.CellValueType.STRING) && v !== void 0 && v !== null) return String(v);
|
|
168
|
+
else if (t === _univerjs_core.CellValueType.BOOLEAN) return v ? BooleanTrue : BooleanFalse;
|
|
169
|
+
else if (t === _univerjs_core.CellValueType.NUMBER) return String(v);
|
|
170
|
+
else {
|
|
171
|
+
if (typeof v === "boolean") return v ? BooleanTrue : BooleanFalse;
|
|
172
|
+
return v === void 0 || v === null ? "" : String(v);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return "";
|
|
176
|
+
}
|
|
177
|
+
function getTableFilterState(tableFilter, sortState) {
|
|
178
|
+
if (tableFilter !== void 0 && tableFilter !== null) switch (sortState) {
|
|
179
|
+
case SheetsTableSortStateEnum.Asc: return SheetsTableButtonStateEnum.FilteredSortAsc;
|
|
180
|
+
case SheetsTableSortStateEnum.Desc: return SheetsTableButtonStateEnum.FilteredSortDesc;
|
|
181
|
+
default: return SheetsTableButtonStateEnum.FilteredSortNone;
|
|
182
|
+
}
|
|
183
|
+
else switch (sortState) {
|
|
184
|
+
case SheetsTableSortStateEnum.Asc: return SheetsTableButtonStateEnum.FilterNoneSortAsc;
|
|
185
|
+
case SheetsTableSortStateEnum.Desc: return SheetsTableButtonStateEnum.FilterNoneSortDesc;
|
|
186
|
+
default: return SheetsTableButtonStateEnum.FilterNoneSortNone;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
function isConditionFilter(filter) {
|
|
190
|
+
if (!filter) return false;
|
|
191
|
+
return filter.filterType === TableColumnFilterTypeEnum.condition;
|
|
192
|
+
}
|
|
193
|
+
function isManualTableFilter(filter) {
|
|
194
|
+
if (!filter) return false;
|
|
195
|
+
return filter.filterType === TableColumnFilterTypeEnum.manual;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Get existing names including sheet names, table names and defined names to check for duplicates table name.
|
|
199
|
+
*/
|
|
200
|
+
function getExistingNamesSet(unitId, options) {
|
|
201
|
+
const { univerInstanceService, tableManager, definedNamesService } = options;
|
|
202
|
+
const existingNamesSet = /* @__PURE__ */ new Set();
|
|
203
|
+
const workbook = univerInstanceService === null || univerInstanceService === void 0 ? void 0 : univerInstanceService.getUnit(unitId, _univerjs_core.UniverInstanceType.UNIVER_SHEET);
|
|
204
|
+
if (workbook) workbook.getSheets().forEach((sheet) => {
|
|
205
|
+
existingNamesSet.add(sheet.getName().toLowerCase());
|
|
206
|
+
});
|
|
207
|
+
const tableList = tableManager === null || tableManager === void 0 ? void 0 : tableManager.getTableList(unitId);
|
|
208
|
+
if (tableList && tableList.length > 0) tableList.forEach((tableItem) => {
|
|
209
|
+
existingNamesSet.add(tableItem.name.toLowerCase());
|
|
210
|
+
});
|
|
211
|
+
const definedNames = definedNamesService === null || definedNamesService === void 0 ? void 0 : definedNamesService.getDefinedNameMap(unitId);
|
|
212
|
+
if (definedNames) Object.values(definedNames).forEach((definedName) => {
|
|
213
|
+
existingNamesSet.add(definedName.name.toLowerCase());
|
|
214
|
+
});
|
|
215
|
+
return existingNamesSet;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
//#endregion
|
|
219
|
+
//#region src/config/config.ts
|
|
220
|
+
const tableDefaultBorderStyle = {
|
|
221
|
+
s: _univerjs_core.BorderStyleTypes.THIN,
|
|
222
|
+
cl: { rgb: "rgb(95, 101, 116)" }
|
|
223
|
+
};
|
|
224
|
+
const SHEETS_TABLE_PLUGIN_CONFIG_KEY = "sheets-table.config";
|
|
225
|
+
const configSymbol = Symbol(SHEETS_TABLE_PLUGIN_CONFIG_KEY);
|
|
226
|
+
const defaultPluginConfig = {};
|
|
227
|
+
|
|
228
|
+
//#endregion
|
|
229
|
+
//#region src/controllers/table-theme.factory.ts
|
|
230
|
+
const customEmptyThemeWithBorderStyle = {
|
|
231
|
+
headerRowStyle: { bd: { t: tableDefaultBorderStyle } },
|
|
232
|
+
headerColumnStyle: { bd: { l: tableDefaultBorderStyle } },
|
|
233
|
+
lastColumnStyle: { bd: { r: tableDefaultBorderStyle } },
|
|
234
|
+
lastRowStyle: { bd: { b: tableDefaultBorderStyle } }
|
|
235
|
+
};
|
|
236
|
+
const processStyleWithBorderStyle = (key, style) => {
|
|
237
|
+
if (key === "headerRowStyle") {
|
|
238
|
+
if (!style.bd) return {
|
|
239
|
+
...style,
|
|
240
|
+
bd: { t: tableDefaultBorderStyle }
|
|
241
|
+
};
|
|
242
|
+
} else if (key === "lastRowStyle") {
|
|
243
|
+
if (!style.bd) return {
|
|
244
|
+
...style,
|
|
245
|
+
bd: { b: tableDefaultBorderStyle }
|
|
246
|
+
};
|
|
247
|
+
} else if (key === "lastColumnStyle") {
|
|
248
|
+
if (!style.bd) return {
|
|
249
|
+
...style,
|
|
250
|
+
bd: { r: tableDefaultBorderStyle }
|
|
251
|
+
};
|
|
252
|
+
} else if (key === "headerColumnStyle") {
|
|
253
|
+
if (!style.bd) return {
|
|
254
|
+
...style,
|
|
255
|
+
bd: { l: tableDefaultBorderStyle }
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
return style;
|
|
259
|
+
};
|
|
260
|
+
const tableDefaultThemeStyleArr = [
|
|
261
|
+
[[
|
|
262
|
+
"#6280F9",
|
|
263
|
+
"#FFFFFF",
|
|
264
|
+
"#BAC6F8",
|
|
265
|
+
"#D2DAFA"
|
|
266
|
+
], ["#fff"]],
|
|
267
|
+
[[
|
|
268
|
+
"#16BDCA",
|
|
269
|
+
"#FFFFFF",
|
|
270
|
+
"#EDFAFA",
|
|
271
|
+
"#AFECEF"
|
|
272
|
+
], ["#000"]],
|
|
273
|
+
[[
|
|
274
|
+
"#31C48D",
|
|
275
|
+
"#FFFFFF",
|
|
276
|
+
"#F3FAF7",
|
|
277
|
+
"#BCF0DA"
|
|
278
|
+
], ["#fff"]],
|
|
279
|
+
[[
|
|
280
|
+
"#AC94FA",
|
|
281
|
+
"#FFFFFF",
|
|
282
|
+
"#F6F5FF",
|
|
283
|
+
"#EDEBFE"
|
|
284
|
+
], ["#fff"]],
|
|
285
|
+
[[
|
|
286
|
+
"#F17EBB",
|
|
287
|
+
"#FFFFFF",
|
|
288
|
+
"#FDF2F8",
|
|
289
|
+
"#FCE8F3"
|
|
290
|
+
], ["#fff"]],
|
|
291
|
+
[[
|
|
292
|
+
"#F98080",
|
|
293
|
+
"#FFFFFF",
|
|
294
|
+
"#FDF2F2",
|
|
295
|
+
"#FDE8E8"
|
|
296
|
+
], ["#fff"]]
|
|
297
|
+
];
|
|
298
|
+
const tableThemeConfig = tableDefaultThemeStyleArr.map((item, index) => {
|
|
299
|
+
const [backgroundArr, colorArr] = item;
|
|
300
|
+
const [headerRowBg, firstRowBg, secondRowBg, lastRowBg] = backgroundArr;
|
|
301
|
+
const [headerCl] = colorArr;
|
|
302
|
+
return {
|
|
303
|
+
name: `table-default-${index}`,
|
|
304
|
+
style: {
|
|
305
|
+
headerRowStyle: {
|
|
306
|
+
bg: { rgb: headerRowBg },
|
|
307
|
+
cl: { rgb: headerCl },
|
|
308
|
+
bd: { t: tableDefaultBorderStyle }
|
|
309
|
+
},
|
|
310
|
+
headerColumnStyle: { bd: { l: tableDefaultBorderStyle } },
|
|
311
|
+
firstRowStyle: { bg: { rgb: firstRowBg } },
|
|
312
|
+
secondRowStyle: { bg: { rgb: secondRowBg } },
|
|
313
|
+
lastRowStyle: {
|
|
314
|
+
bg: { rgb: lastRowBg },
|
|
315
|
+
bd: { b: tableDefaultBorderStyle }
|
|
316
|
+
},
|
|
317
|
+
lastColumnStyle: { bd: { r: tableDefaultBorderStyle } }
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
//#endregion
|
|
323
|
+
//#region \0@oxc-project+runtime@0.124.0/helpers/typeof.js
|
|
324
|
+
function _typeof(o) {
|
|
325
|
+
"@babel/helpers - typeof";
|
|
326
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
327
|
+
return typeof o;
|
|
328
|
+
} : function(o) {
|
|
329
|
+
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
|
|
330
|
+
}, _typeof(o);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
//#endregion
|
|
334
|
+
//#region \0@oxc-project+runtime@0.124.0/helpers/toPrimitive.js
|
|
335
|
+
function toPrimitive(t, r) {
|
|
336
|
+
if ("object" != _typeof(t) || !t) return t;
|
|
337
|
+
var e = t[Symbol.toPrimitive];
|
|
338
|
+
if (void 0 !== e) {
|
|
339
|
+
var i = e.call(t, r || "default");
|
|
340
|
+
if ("object" != _typeof(i)) return i;
|
|
341
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
342
|
+
}
|
|
343
|
+
return ("string" === r ? String : Number)(t);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
//#endregion
|
|
347
|
+
//#region \0@oxc-project+runtime@0.124.0/helpers/toPropertyKey.js
|
|
348
|
+
function toPropertyKey(t) {
|
|
349
|
+
var i = toPrimitive(t, "string");
|
|
350
|
+
return "symbol" == _typeof(i) ? i : i + "";
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
//#endregion
|
|
354
|
+
//#region \0@oxc-project+runtime@0.124.0/helpers/defineProperty.js
|
|
355
|
+
function _defineProperty(e, r, t) {
|
|
356
|
+
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
357
|
+
value: t,
|
|
358
|
+
enumerable: !0,
|
|
359
|
+
configurable: !0,
|
|
360
|
+
writable: !0
|
|
361
|
+
}) : e[r] = t, e;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
//#endregion
|
|
365
|
+
//#region src/model/table-column.ts
|
|
366
|
+
var TableColumn = class {
|
|
367
|
+
constructor(id, name) {
|
|
368
|
+
_defineProperty(this, "dataType", void 0);
|
|
369
|
+
_defineProperty(this, "id", void 0);
|
|
370
|
+
_defineProperty(this, "displayName", void 0);
|
|
371
|
+
_defineProperty(this, "formula", void 0);
|
|
372
|
+
_defineProperty(this, "meta", void 0);
|
|
373
|
+
_defineProperty(this, "style", void 0);
|
|
374
|
+
this.id = id;
|
|
375
|
+
this.displayName = name;
|
|
376
|
+
this.dataType = TableColumnDataTypeEnum.String;
|
|
377
|
+
this.formula = "";
|
|
378
|
+
this.meta = {};
|
|
379
|
+
this.style = {};
|
|
380
|
+
}
|
|
381
|
+
getMeta() {
|
|
382
|
+
return this.meta;
|
|
383
|
+
}
|
|
384
|
+
setMeta(meta) {
|
|
385
|
+
this.meta = meta;
|
|
386
|
+
}
|
|
387
|
+
getDisplayName() {
|
|
388
|
+
return this.displayName;
|
|
389
|
+
}
|
|
390
|
+
toJSON() {
|
|
391
|
+
return {
|
|
392
|
+
id: this.id,
|
|
393
|
+
displayName: this.displayName,
|
|
394
|
+
dataType: this.dataType,
|
|
395
|
+
formula: this.formula,
|
|
396
|
+
meta: this.meta,
|
|
397
|
+
style: this.style
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
fromJSON(json) {
|
|
401
|
+
this.id = json.id;
|
|
402
|
+
this.displayName = json.displayName;
|
|
403
|
+
this.dataType = json.dataType;
|
|
404
|
+
this.formula = json.formula;
|
|
405
|
+
this.meta = json.meta;
|
|
406
|
+
this.style = json.style;
|
|
407
|
+
}
|
|
408
|
+
};
|
|
409
|
+
|
|
410
|
+
//#endregion
|
|
411
|
+
//#region src/model/filter-util/date-filter-util.ts
|
|
412
|
+
/**
|
|
413
|
+
* The provided date is a date in Q1 of the year.
|
|
414
|
+
* @param {Date} date - The date to compare.
|
|
415
|
+
* @returns {boolean} return the date is match
|
|
416
|
+
*/
|
|
417
|
+
const dateQ1 = (date) => {
|
|
418
|
+
return date.getMonth() <= 2;
|
|
419
|
+
};
|
|
420
|
+
/**
|
|
421
|
+
* The provided date is a date in Q2 of the year.
|
|
422
|
+
* @param {Date} date - The date to compare.
|
|
423
|
+
* @returns {boolean} return the date is match
|
|
424
|
+
*/
|
|
425
|
+
const dateQ2 = (date) => {
|
|
426
|
+
const month = date.getMonth();
|
|
427
|
+
return month > 2 && month <= 5;
|
|
428
|
+
};
|
|
429
|
+
/**
|
|
430
|
+
* The provided date is a date in Q3 of the year.
|
|
431
|
+
* @param {Date} date - The date to compare.
|
|
432
|
+
* @returns {boolean} return the date is match
|
|
433
|
+
*/
|
|
434
|
+
const dateQ3 = (date) => {
|
|
435
|
+
const month = date.getMonth();
|
|
436
|
+
return month > 5 && month <= 8;
|
|
437
|
+
};
|
|
438
|
+
/**
|
|
439
|
+
* The provided date is a date in Q4 of the year.
|
|
440
|
+
* @param {Date} date - The date to compare.
|
|
441
|
+
* @returns {boolean} return the date is match
|
|
442
|
+
*/
|
|
443
|
+
const dateQ4 = (date) => {
|
|
444
|
+
const month = date.getMonth();
|
|
445
|
+
return month > 8 && month <= 11;
|
|
446
|
+
};
|
|
447
|
+
/**
|
|
448
|
+
* The provided date is a date in January.
|
|
449
|
+
* @param {Date} date - The date to compare.
|
|
450
|
+
* @returns {boolean} return the date is match
|
|
451
|
+
*/
|
|
452
|
+
const dateM1 = (date) => {
|
|
453
|
+
return date.getMonth() === 0;
|
|
454
|
+
};
|
|
455
|
+
/**
|
|
456
|
+
* The provided date is a date in February.
|
|
457
|
+
* @param {Date} date - The date to compare.
|
|
458
|
+
* @returns {boolean} return the date is match
|
|
459
|
+
*/
|
|
460
|
+
const dateM2 = (date) => {
|
|
461
|
+
return date.getMonth() === 1;
|
|
462
|
+
};
|
|
463
|
+
/**
|
|
464
|
+
* The provided date is a date in March.
|
|
465
|
+
* @param {Date} date - The date to compare.
|
|
466
|
+
* @returns {boolean} return the date is match
|
|
467
|
+
*/
|
|
468
|
+
const dateM3 = (date) => {
|
|
469
|
+
return date.getMonth() === 2;
|
|
470
|
+
};
|
|
471
|
+
/**
|
|
472
|
+
* The provided date is a date in April.
|
|
473
|
+
* @param {Date} date - The date to compare.
|
|
474
|
+
* @returns {boolean} return the date is match
|
|
475
|
+
*/
|
|
476
|
+
const dateM4 = (date) => {
|
|
477
|
+
return date.getMonth() === 3;
|
|
478
|
+
};
|
|
479
|
+
/**
|
|
480
|
+
* The provided date is a date in May.
|
|
481
|
+
* @param {Date} date - The date to compare.
|
|
482
|
+
* @returns {boolean} return the date is match
|
|
483
|
+
*/
|
|
484
|
+
const dateM5 = (date) => {
|
|
485
|
+
return date.getMonth() === 4;
|
|
486
|
+
};
|
|
487
|
+
/**
|
|
488
|
+
* The provided date is a date in June.
|
|
489
|
+
* @param {Date} date - The date to compare.
|
|
490
|
+
* @returns {boolean} return the date is match
|
|
491
|
+
*/
|
|
492
|
+
const dateM6 = (date) => {
|
|
493
|
+
return date.getMonth() === 5;
|
|
494
|
+
};
|
|
495
|
+
/**
|
|
496
|
+
* The provided date is a date in July.
|
|
497
|
+
* @param {Date} date - The date to compare.
|
|
498
|
+
* @returns {boolean} return the date is match
|
|
499
|
+
*/
|
|
500
|
+
const dateM7 = (date) => {
|
|
501
|
+
return date.getMonth() === 6;
|
|
502
|
+
};
|
|
503
|
+
/**
|
|
504
|
+
* The provided date is a date in August.
|
|
505
|
+
* @param {Date} date - The date to compare.
|
|
506
|
+
* @returns {boolean} return the date is match
|
|
507
|
+
*/
|
|
508
|
+
const dateM8 = (date) => {
|
|
509
|
+
return date.getMonth() === 7;
|
|
510
|
+
};
|
|
511
|
+
/**
|
|
512
|
+
* The provided date is a date in September.
|
|
513
|
+
* @param {Date} date - The date to compare.
|
|
514
|
+
* @returns {boolean} return the date is match
|
|
515
|
+
*/
|
|
516
|
+
const dateM9 = (date) => {
|
|
517
|
+
return date.getMonth() === 8;
|
|
518
|
+
};
|
|
519
|
+
/**
|
|
520
|
+
* The provided date is a date in October.
|
|
521
|
+
* @param {Date} date - The date to compare.
|
|
522
|
+
* @returns {boolean} return the date is match
|
|
523
|
+
*/
|
|
524
|
+
const dateM10 = (date) => {
|
|
525
|
+
return date.getMonth() === 9;
|
|
526
|
+
};
|
|
527
|
+
/**
|
|
528
|
+
* The provided date is a date in November.
|
|
529
|
+
* @param {Date} date - The date to compare.
|
|
530
|
+
* @returns {boolean} return the date is match
|
|
531
|
+
*/
|
|
532
|
+
const dateM11 = (date) => {
|
|
533
|
+
return date.getMonth() === 10;
|
|
534
|
+
};
|
|
535
|
+
/**
|
|
536
|
+
* The provided date is a date in December.
|
|
537
|
+
* @param {Date} date - The date to compare.
|
|
538
|
+
* @returns {boolean} return the date is match
|
|
539
|
+
*/
|
|
540
|
+
const dateM12 = (date) => {
|
|
541
|
+
return date.getMonth() === 11;
|
|
542
|
+
};
|
|
543
|
+
/**
|
|
544
|
+
* The provided date is today.
|
|
545
|
+
* @param {Date} expectedDate - The date to compare.
|
|
546
|
+
* @param {Date} [anchorTime] - The reference date.
|
|
547
|
+
* @returns {boolean} return the date is match
|
|
548
|
+
*/
|
|
549
|
+
const today = (expectedDate, anchorTime = /* @__PURE__ */ new Date()) => {
|
|
550
|
+
return expectedDate.toDateString() === anchorTime.toDateString();
|
|
551
|
+
};
|
|
552
|
+
/**
|
|
553
|
+
* The provided date is tomorrow.
|
|
554
|
+
* @param {Date} date - The date to compare.
|
|
555
|
+
* @param {Date} [anchorTime] - The reference date.
|
|
556
|
+
* @returns {boolean} return the date is match
|
|
557
|
+
*/
|
|
558
|
+
const tomorrow = (date, anchorTime = /* @__PURE__ */ new Date()) => {
|
|
559
|
+
const tomorrow = new Date(anchorTime);
|
|
560
|
+
tomorrow.setDate(tomorrow.getDate() + 1);
|
|
561
|
+
return date.toDateString() === tomorrow.toDateString();
|
|
562
|
+
};
|
|
563
|
+
/**
|
|
564
|
+
* The provided date is yesterday.
|
|
565
|
+
* @param {Date} date - The date to compare.
|
|
566
|
+
* @param {Date} [anchorTime] - The reference date.
|
|
567
|
+
* @returns {boolean} return the date is match
|
|
568
|
+
*/
|
|
569
|
+
const yesterday = (date, anchorTime = /* @__PURE__ */ new Date()) => {
|
|
570
|
+
const yesterday = new Date(anchorTime);
|
|
571
|
+
yesterday.setDate(yesterday.getDate() - 1);
|
|
572
|
+
return date.toDateString() === yesterday.toDateString();
|
|
573
|
+
};
|
|
574
|
+
/**
|
|
575
|
+
* Get the start date of the week for the provided date.
|
|
576
|
+
* @param {Date} date - The date to get the week start.
|
|
577
|
+
* @returns {Date} The start date of the week.
|
|
578
|
+
*/
|
|
579
|
+
const getWeekStart = (date) => {
|
|
580
|
+
const day = date.getDay();
|
|
581
|
+
const diff = date.getDate() - day + (day === 0 ? -6 : 1);
|
|
582
|
+
const weekStart = new Date(date);
|
|
583
|
+
weekStart.setDate(diff);
|
|
584
|
+
return weekStart;
|
|
585
|
+
};
|
|
586
|
+
const perWeek = 10080 * 60 * 1e3;
|
|
587
|
+
/**
|
|
588
|
+
* The provided date is in the current week.
|
|
589
|
+
* @param {Date} date - The date to compare.
|
|
590
|
+
* @param {Date} [anchorTime] - The reference date.
|
|
591
|
+
* @returns {boolean} return the date is match
|
|
592
|
+
*/
|
|
593
|
+
const thisWeek = (date, anchorTime = /* @__PURE__ */ new Date()) => {
|
|
594
|
+
const weekStart = getWeekStart(date);
|
|
595
|
+
const anchorTimeWeekStart = getWeekStart(anchorTime);
|
|
596
|
+
return weekStart.toDateString() === anchorTimeWeekStart.toDateString();
|
|
597
|
+
};
|
|
598
|
+
/**
|
|
599
|
+
* The provided date is in the next week.
|
|
600
|
+
* @param {Date} date - The date to compare.
|
|
601
|
+
* @param {Date} [anchorTime] - The reference date.
|
|
602
|
+
* @returns {boolean} return the date is match
|
|
603
|
+
*/
|
|
604
|
+
const nextWeek = (date, anchorTime = /* @__PURE__ */ new Date()) => {
|
|
605
|
+
const weekStart = getWeekStart(date);
|
|
606
|
+
const anchorTimeNextWeekStart = new Date(getWeekStart(anchorTime).getTime() + perWeek);
|
|
607
|
+
return weekStart.toDateString() === anchorTimeNextWeekStart.toDateString();
|
|
608
|
+
};
|
|
609
|
+
/**
|
|
610
|
+
* The provided date is in the last week.
|
|
611
|
+
* @param {Date} date - The date to compare.
|
|
612
|
+
* @param {Date} [anchorTime] - The reference date.
|
|
613
|
+
* @returns {boolean} return the date is match
|
|
614
|
+
*/
|
|
615
|
+
const lastWeek = (date, anchorTime = /* @__PURE__ */ new Date()) => {
|
|
616
|
+
const weekStart = getWeekStart(date);
|
|
617
|
+
const anchorTimeLastWeekStart = new Date(getWeekStart(anchorTime).getTime() - perWeek);
|
|
618
|
+
return weekStart.toDateString() === anchorTimeLastWeekStart.toDateString();
|
|
619
|
+
};
|
|
620
|
+
/**
|
|
621
|
+
* The provided date is in the current month.
|
|
622
|
+
* @param {Date} date - The date to compare.
|
|
623
|
+
* @param {Date} [anchorTime] - The reference date.
|
|
624
|
+
* @returns {boolean} return the date is match
|
|
625
|
+
*/
|
|
626
|
+
const thisMonth = (date, anchorTime = /* @__PURE__ */ new Date()) => {
|
|
627
|
+
return date.getFullYear() === anchorTime.getFullYear() && date.getMonth() === anchorTime.getMonth();
|
|
628
|
+
};
|
|
629
|
+
/**
|
|
630
|
+
* Get the start date of the month for the provided date.
|
|
631
|
+
* @param {Date} date - The date to get the month start.
|
|
632
|
+
* @returns {Date} The start date of the month.
|
|
633
|
+
*/
|
|
634
|
+
const getMonthStart = (date) => {
|
|
635
|
+
const monthStart = new Date(date);
|
|
636
|
+
monthStart.setHours(0, 0, 0, 0);
|
|
637
|
+
monthStart.setDate(1);
|
|
638
|
+
return monthStart;
|
|
639
|
+
};
|
|
640
|
+
/**
|
|
641
|
+
* The provided date is in the next month.
|
|
642
|
+
* @param {Date} date - The date to compare.
|
|
643
|
+
* @param {Date} [anchorTime] - The reference date.
|
|
644
|
+
* @returns {boolean} return the date is match
|
|
645
|
+
*/
|
|
646
|
+
const nextMonth = (date, anchorTime = /* @__PURE__ */ new Date()) => {
|
|
647
|
+
const nextMonthStart = new Date(anchorTime);
|
|
648
|
+
nextMonthStart.setHours(0, 0, 0, 0);
|
|
649
|
+
nextMonthStart.setMonth(nextMonthStart.getMonth() + 1, 1);
|
|
650
|
+
const monthEnd = new Date(nextMonthStart);
|
|
651
|
+
monthEnd.setMonth(monthEnd.getMonth() + 1, 0);
|
|
652
|
+
const dateTime = date.getTime();
|
|
653
|
+
return dateTime >= nextMonthStart.getTime() && dateTime < monthEnd.getTime();
|
|
654
|
+
};
|
|
655
|
+
/**
|
|
656
|
+
* The provided date is in the last month.
|
|
657
|
+
* @param {Date} date - The date to compare.
|
|
658
|
+
* @param {Date} [anchorTime] - The reference date.
|
|
659
|
+
* @returns {boolean} return the date is match
|
|
660
|
+
*/
|
|
661
|
+
const lastMonth = (date, anchorTime = /* @__PURE__ */ new Date()) => {
|
|
662
|
+
const lastMonthStart = getMonthStart(anchorTime);
|
|
663
|
+
const monthEnd = new Date(lastMonthStart);
|
|
664
|
+
monthEnd.setMonth(monthEnd.getMonth() + 1, 0);
|
|
665
|
+
const dateTime = date.getTime();
|
|
666
|
+
return dateTime >= lastMonthStart.getTime() && dateTime < monthEnd.getTime();
|
|
667
|
+
};
|
|
668
|
+
/**
|
|
669
|
+
* Get the start date of the quarter for the provided date.
|
|
670
|
+
* @param {Date} date - The date to get the quarter start.
|
|
671
|
+
* @returns {Date} The start date of the quarter.
|
|
672
|
+
*/
|
|
673
|
+
const getQuarterStart = (date) => {
|
|
674
|
+
const quarterStart = new Date(date);
|
|
675
|
+
quarterStart.setHours(0, 0, 0, 0);
|
|
676
|
+
quarterStart.setDate(1);
|
|
677
|
+
const month = quarterStart.getMonth();
|
|
678
|
+
quarterStart.setMonth(month - month % 3);
|
|
679
|
+
return quarterStart;
|
|
680
|
+
};
|
|
681
|
+
/**
|
|
682
|
+
* The provided date is in the current quarter.
|
|
683
|
+
* @param {Date} date - The date to compare.
|
|
684
|
+
* @param {Date} [anchorTime] - The reference date.
|
|
685
|
+
* @returns {boolean} return the date is match
|
|
686
|
+
*/
|
|
687
|
+
const thisQuarter = (date, anchorTime = /* @__PURE__ */ new Date()) => {
|
|
688
|
+
const quarterStart = getQuarterStart(anchorTime);
|
|
689
|
+
const nextQuarterStart = new Date(quarterStart);
|
|
690
|
+
nextQuarterStart.setMonth(nextQuarterStart.getMonth() + 3);
|
|
691
|
+
const dateTime = date.getTime();
|
|
692
|
+
return dateTime >= quarterStart.getTime() && dateTime < nextQuarterStart.getTime();
|
|
693
|
+
};
|
|
694
|
+
/**
|
|
695
|
+
* The provided date is in the next quarter.
|
|
696
|
+
* @param {Date} date - The date to compare.
|
|
697
|
+
* @param {Date} [anchorTime] - The reference date.
|
|
698
|
+
* @returns {boolean} return the date is match
|
|
699
|
+
*/
|
|
700
|
+
const nextQuarter = (date, anchorTime = /* @__PURE__ */ new Date()) => {
|
|
701
|
+
const quarterStart = getQuarterStart(anchorTime);
|
|
702
|
+
const nextQuarterStart = new Date(quarterStart);
|
|
703
|
+
nextQuarterStart.setMonth(nextQuarterStart.getMonth() + 3);
|
|
704
|
+
const nextQuarterEnd = new Date(nextQuarterStart);
|
|
705
|
+
nextQuarterEnd.setMonth(nextQuarterEnd.getMonth() + 3, 0);
|
|
706
|
+
const dateTime = date.getTime();
|
|
707
|
+
return dateTime >= nextQuarterStart.getTime() && dateTime < nextQuarterEnd.getTime();
|
|
708
|
+
};
|
|
709
|
+
/**
|
|
710
|
+
* The provided date is in the last quarter.
|
|
711
|
+
* @param {Date} date - The date to compare.
|
|
712
|
+
* @param {Date} [anchorTime] - The reference date.
|
|
713
|
+
* @returns {boolean} return the date is match
|
|
714
|
+
*/
|
|
715
|
+
const lastQuarter = (date, anchorTime = /* @__PURE__ */ new Date()) => {
|
|
716
|
+
const quarterStart = getQuarterStart(anchorTime);
|
|
717
|
+
const lastQuarterStart = new Date(quarterStart);
|
|
718
|
+
lastQuarterStart.setMonth(lastQuarterStart.getMonth() - 3);
|
|
719
|
+
const lastQuarterEnd = new Date(quarterStart);
|
|
720
|
+
lastQuarterEnd.setDate(0);
|
|
721
|
+
const dateTime = date.getTime();
|
|
722
|
+
return dateTime >= lastQuarterStart.getTime() && dateTime < lastQuarterEnd.getTime();
|
|
723
|
+
};
|
|
724
|
+
/**
|
|
725
|
+
* The provided date is in the current year.
|
|
726
|
+
* @param {Date} date - The date to compare.
|
|
727
|
+
* @param {Date} [anchorTime] - The reference date.
|
|
728
|
+
* @returns {boolean} return the date is match
|
|
729
|
+
*/
|
|
730
|
+
const thisYear = (date, anchorTime = /* @__PURE__ */ new Date()) => {
|
|
731
|
+
return date.getFullYear() === anchorTime.getFullYear();
|
|
732
|
+
};
|
|
733
|
+
/**
|
|
734
|
+
* The provided date is in the next year.
|
|
735
|
+
* @param {Date} date - The date to compare.
|
|
736
|
+
* @param {Date} [anchorTime] - The reference date.
|
|
737
|
+
* @returns {boolean} return the date is match
|
|
738
|
+
*/
|
|
739
|
+
const nextYear = (date, anchorTime = /* @__PURE__ */ new Date()) => {
|
|
740
|
+
return date.getFullYear() === anchorTime.getFullYear() + 1;
|
|
741
|
+
};
|
|
742
|
+
/**
|
|
743
|
+
* The provided date is in the last year.
|
|
744
|
+
* @param {Date} date - The date to compare.
|
|
745
|
+
* @param {Date} [anchorTime] - The reference date.
|
|
746
|
+
* @returns {boolean} return the date is match
|
|
747
|
+
*/
|
|
748
|
+
const lastYear = (date, anchorTime = /* @__PURE__ */ new Date()) => {
|
|
749
|
+
return date.getFullYear() === anchorTime.getFullYear() - 1;
|
|
750
|
+
};
|
|
751
|
+
/**
|
|
752
|
+
* The provided date is in the year to date.
|
|
753
|
+
* @param {Date} date - The date to compare.
|
|
754
|
+
* @param {Date} [anchorTime] - The reference date.
|
|
755
|
+
* @returns {boolean} return the date is match
|
|
756
|
+
*/
|
|
757
|
+
const yearToDate = (date, anchorTime = /* @__PURE__ */ new Date()) => {
|
|
758
|
+
const yearStart = new Date(anchorTime);
|
|
759
|
+
yearStart.setHours(0, 0, 0, 0);
|
|
760
|
+
yearStart.setMonth(0, 1);
|
|
761
|
+
const dateTime = date.getTime();
|
|
762
|
+
return dateTime >= yearStart.getTime() && dateTime < anchorTime.getTime();
|
|
763
|
+
};
|
|
764
|
+
function getDateFilterExecuteFunc(filterInfo) {
|
|
765
|
+
switch (filterInfo.compareType) {
|
|
766
|
+
case TableDateCompareTypeEnum.Equal: {
|
|
767
|
+
const expected = new Date(filterInfo.expectedValue);
|
|
768
|
+
return (date) => date.getTime() === expected.getTime();
|
|
769
|
+
}
|
|
770
|
+
case TableDateCompareTypeEnum.NotEqual: {
|
|
771
|
+
const expected = new Date(filterInfo.expectedValue);
|
|
772
|
+
return (date) => date.getTime() !== expected.getTime();
|
|
773
|
+
}
|
|
774
|
+
case TableDateCompareTypeEnum.After: {
|
|
775
|
+
const expected = new Date(filterInfo.expectedValue);
|
|
776
|
+
return (date) => date.getTime() > expected.getTime();
|
|
777
|
+
}
|
|
778
|
+
case TableDateCompareTypeEnum.Before: {
|
|
779
|
+
const expected = new Date(filterInfo.expectedValue);
|
|
780
|
+
return (date) => date.getTime() < expected.getTime();
|
|
781
|
+
}
|
|
782
|
+
case TableDateCompareTypeEnum.AfterOrEqual: {
|
|
783
|
+
const expected = new Date(filterInfo.expectedValue);
|
|
784
|
+
return (date) => date.getTime() >= expected.getTime();
|
|
785
|
+
}
|
|
786
|
+
case TableDateCompareTypeEnum.BeforeOrEqual: {
|
|
787
|
+
const expected = new Date(filterInfo.expectedValue);
|
|
788
|
+
return (date) => date.getTime() <= expected.getTime();
|
|
789
|
+
}
|
|
790
|
+
case TableDateCompareTypeEnum.Between: return (date) => {
|
|
791
|
+
const [start, end] = filterInfo.expectedValue;
|
|
792
|
+
return date.getTime() >= new Date(start).getTime() && date.getTime() <= new Date(end).getTime();
|
|
793
|
+
};
|
|
794
|
+
case TableDateCompareTypeEnum.NotBetween: return (date) => {
|
|
795
|
+
const [start, end] = filterInfo.expectedValue;
|
|
796
|
+
return date.getTime() < new Date(start).getTime() || date.getTime() > new Date(end).getTime();
|
|
797
|
+
};
|
|
798
|
+
case TableDateCompareTypeEnum.Today: {
|
|
799
|
+
const anchorTime = filterInfo.anchorTime ? new Date(filterInfo.anchorTime) : /* @__PURE__ */ new Date();
|
|
800
|
+
return (date) => today(date, anchorTime);
|
|
801
|
+
}
|
|
802
|
+
case TableDateCompareTypeEnum.Yesterday: {
|
|
803
|
+
const anchorTime = filterInfo.anchorTime ? new Date(filterInfo.anchorTime) : /* @__PURE__ */ new Date();
|
|
804
|
+
return (date) => yesterday(date, anchorTime);
|
|
805
|
+
}
|
|
806
|
+
case TableDateCompareTypeEnum.Tomorrow: {
|
|
807
|
+
const anchorTime = filterInfo.anchorTime ? new Date(filterInfo.anchorTime) : /* @__PURE__ */ new Date();
|
|
808
|
+
return (date) => tomorrow(date, anchorTime);
|
|
809
|
+
}
|
|
810
|
+
case TableDateCompareTypeEnum.ThisWeek: {
|
|
811
|
+
const anchorTime = filterInfo.anchorTime ? new Date(filterInfo.anchorTime) : /* @__PURE__ */ new Date();
|
|
812
|
+
return (date) => thisWeek(date, anchorTime);
|
|
813
|
+
}
|
|
814
|
+
case TableDateCompareTypeEnum.LastWeek: {
|
|
815
|
+
const anchorTime = filterInfo.anchorTime ? new Date(filterInfo.anchorTime) : /* @__PURE__ */ new Date();
|
|
816
|
+
return (date) => lastWeek(date, anchorTime);
|
|
817
|
+
}
|
|
818
|
+
case TableDateCompareTypeEnum.NextWeek: {
|
|
819
|
+
const anchorTime = filterInfo.anchorTime ? new Date(filterInfo.anchorTime) : /* @__PURE__ */ new Date();
|
|
820
|
+
return (date) => nextWeek(date, anchorTime);
|
|
821
|
+
}
|
|
822
|
+
case TableDateCompareTypeEnum.ThisMonth: {
|
|
823
|
+
const anchorTime = filterInfo.anchorTime ? new Date(filterInfo.anchorTime) : /* @__PURE__ */ new Date();
|
|
824
|
+
return (date) => thisMonth(date, anchorTime);
|
|
825
|
+
}
|
|
826
|
+
case TableDateCompareTypeEnum.LastMonth: {
|
|
827
|
+
const anchorTime = filterInfo.anchorTime ? new Date(filterInfo.anchorTime) : /* @__PURE__ */ new Date();
|
|
828
|
+
return (date) => lastMonth(date, anchorTime);
|
|
829
|
+
}
|
|
830
|
+
case TableDateCompareTypeEnum.NextMonth: {
|
|
831
|
+
const anchorTime = filterInfo.anchorTime ? new Date(filterInfo.anchorTime) : /* @__PURE__ */ new Date();
|
|
832
|
+
return (date) => nextMonth(date, anchorTime);
|
|
833
|
+
}
|
|
834
|
+
case TableDateCompareTypeEnum.ThisQuarter: {
|
|
835
|
+
const anchorTime = filterInfo.anchorTime ? new Date(filterInfo.anchorTime) : /* @__PURE__ */ new Date();
|
|
836
|
+
return (date) => thisQuarter(date, anchorTime);
|
|
837
|
+
}
|
|
838
|
+
case TableDateCompareTypeEnum.LastQuarter: {
|
|
839
|
+
const anchorTime = filterInfo.anchorTime ? new Date(filterInfo.anchorTime) : /* @__PURE__ */ new Date();
|
|
840
|
+
return (date) => lastQuarter(date, anchorTime);
|
|
841
|
+
}
|
|
842
|
+
case TableDateCompareTypeEnum.NextQuarter: {
|
|
843
|
+
const anchorTime = filterInfo.anchorTime ? new Date(filterInfo.anchorTime) : /* @__PURE__ */ new Date();
|
|
844
|
+
return (date) => nextQuarter(date, anchorTime);
|
|
845
|
+
}
|
|
846
|
+
case TableDateCompareTypeEnum.ThisYear: {
|
|
847
|
+
const anchorTime = filterInfo.anchorTime ? new Date(filterInfo.anchorTime) : /* @__PURE__ */ new Date();
|
|
848
|
+
return (date) => thisYear(date, anchorTime);
|
|
849
|
+
}
|
|
850
|
+
case TableDateCompareTypeEnum.LastYear: {
|
|
851
|
+
const anchorTime = filterInfo.anchorTime ? new Date(filterInfo.anchorTime) : /* @__PURE__ */ new Date();
|
|
852
|
+
return (date) => lastYear(date, anchorTime);
|
|
853
|
+
}
|
|
854
|
+
case TableDateCompareTypeEnum.NextYear: {
|
|
855
|
+
const anchorTime = filterInfo.anchorTime ? new Date(filterInfo.anchorTime) : /* @__PURE__ */ new Date();
|
|
856
|
+
return (date) => nextYear(date, anchorTime);
|
|
857
|
+
}
|
|
858
|
+
case TableDateCompareTypeEnum.YearToDate: {
|
|
859
|
+
const anchorTime = filterInfo.anchorTime ? new Date(filterInfo.anchorTime) : /* @__PURE__ */ new Date();
|
|
860
|
+
return (date) => yearToDate(date, anchorTime);
|
|
861
|
+
}
|
|
862
|
+
case TableDateCompareTypeEnum.M1: return dateM1;
|
|
863
|
+
case TableDateCompareTypeEnum.M2: return dateM2;
|
|
864
|
+
case TableDateCompareTypeEnum.M3: return dateM3;
|
|
865
|
+
case TableDateCompareTypeEnum.M4: return dateM4;
|
|
866
|
+
case TableDateCompareTypeEnum.M5: return dateM5;
|
|
867
|
+
case TableDateCompareTypeEnum.M6: return dateM6;
|
|
868
|
+
case TableDateCompareTypeEnum.M7: return dateM7;
|
|
869
|
+
case TableDateCompareTypeEnum.M8: return dateM8;
|
|
870
|
+
case TableDateCompareTypeEnum.M9: return dateM9;
|
|
871
|
+
case TableDateCompareTypeEnum.M10: return dateM10;
|
|
872
|
+
case TableDateCompareTypeEnum.M11: return dateM11;
|
|
873
|
+
case TableDateCompareTypeEnum.M12: return dateM12;
|
|
874
|
+
case TableDateCompareTypeEnum.Q1: return dateQ1;
|
|
875
|
+
case TableDateCompareTypeEnum.Q2: return dateQ2;
|
|
876
|
+
case TableDateCompareTypeEnum.Q3: return dateQ3;
|
|
877
|
+
case TableDateCompareTypeEnum.Q4: return dateQ4;
|
|
878
|
+
default: throw new Error("Unsupported compare type");
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
//#endregion
|
|
883
|
+
//#region src/model/filter-util/top-n.ts
|
|
884
|
+
/**
|
|
885
|
+
* Copyright 2023-present DreamNum Co., Ltd.
|
|
886
|
+
*
|
|
887
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
888
|
+
* you may not use this file except in compliance with the License.
|
|
889
|
+
* You may obtain a copy of the License at
|
|
890
|
+
*
|
|
891
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
892
|
+
*
|
|
893
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
894
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
895
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
896
|
+
* See the License for the specific language governing permissions and
|
|
897
|
+
* limitations under the License.
|
|
898
|
+
*/
|
|
899
|
+
/**
|
|
900
|
+
* @description Represents a heap data structure.
|
|
901
|
+
* A heap is a complete binary tree that satisfies the heap property.
|
|
902
|
+
* The heap property states that the parent node is always smaller or bigger than its children.
|
|
903
|
+
* The root node is the smallest or biggest element in the heap.
|
|
904
|
+
* The heap is used to find the kth largest or smallest element in a list.
|
|
905
|
+
* A array can be used to represent a heap.
|
|
906
|
+
* The root node is at index 0, and the left child of a node at index i is at index 2i + 1.
|
|
907
|
+
* The right child of a node at index i is at index 2i + 2.
|
|
908
|
+
* The parent node of a node at index i is at index (i - 1) / 2.
|
|
909
|
+
* @example
|
|
910
|
+
* const maxHeap = [5, 3, 4, 1, 2];
|
|
911
|
+
* // const minHeap = [6, 8, 7, 10, 9];
|
|
912
|
+
* // the root node in maxHeap is 5
|
|
913
|
+
* // the root child is 3, 4, then the child of 3 is 1, 2
|
|
914
|
+
*/
|
|
915
|
+
var Heap = class {
|
|
916
|
+
/**
|
|
917
|
+
* Initializes a new instance of the Heap class.
|
|
918
|
+
*/
|
|
919
|
+
constructor() {
|
|
920
|
+
_defineProperty(this, "heap", void 0);
|
|
921
|
+
this.heap = [];
|
|
922
|
+
}
|
|
923
|
+
/**
|
|
924
|
+
* Swaps the elements at the given indices in the heap.
|
|
925
|
+
* @param index1 The index of the first element.
|
|
926
|
+
* @param index2 The index of the second element.
|
|
927
|
+
*/
|
|
928
|
+
swap(index1, index2) {
|
|
929
|
+
const temp = this.heap[index1];
|
|
930
|
+
this.heap[index1] = this.heap[index2];
|
|
931
|
+
this.heap[index2] = temp;
|
|
932
|
+
}
|
|
933
|
+
/**
|
|
934
|
+
* Returns the index of the parent node for the given index.
|
|
935
|
+
* @param index The index of the node.
|
|
936
|
+
* @returns The index of the parent node.
|
|
937
|
+
*/
|
|
938
|
+
getParentIndex(index) {
|
|
939
|
+
return Math.floor((index - 1) / 2);
|
|
940
|
+
}
|
|
941
|
+
/**
|
|
942
|
+
* Returns the index of the left child node for the given index.
|
|
943
|
+
* @param index The index of the node.
|
|
944
|
+
* @returns The index of the left child node.
|
|
945
|
+
*/
|
|
946
|
+
getLeftIndex(index) {
|
|
947
|
+
return index * 2 + 1;
|
|
948
|
+
}
|
|
949
|
+
/**
|
|
950
|
+
* Returns the index of the right child node for the given index.
|
|
951
|
+
* @param index The index of the node.
|
|
952
|
+
* @returns The index of the right child node.
|
|
953
|
+
*/
|
|
954
|
+
getRightIndex(index) {
|
|
955
|
+
return index * 2 + 2;
|
|
956
|
+
}
|
|
957
|
+
/**
|
|
958
|
+
* Returns the number of elements in the heap.
|
|
959
|
+
* @returns The number of elements in the heap.
|
|
960
|
+
*/
|
|
961
|
+
size() {
|
|
962
|
+
return this.heap.length;
|
|
963
|
+
}
|
|
964
|
+
/**
|
|
965
|
+
* Returns the minimum value in the heap without removing it.
|
|
966
|
+
* @returns The minimum value in the heap.
|
|
967
|
+
*/
|
|
968
|
+
peek() {
|
|
969
|
+
return this.heap[0];
|
|
970
|
+
}
|
|
971
|
+
/**
|
|
972
|
+
* @description Returns whether the heap includes the given value.
|
|
973
|
+
* @param {number} value The value to be checked.
|
|
974
|
+
* @returns {boolean} return true if the heap includes the given value
|
|
975
|
+
*/
|
|
976
|
+
include(value) {
|
|
977
|
+
return this.heap.includes(value);
|
|
978
|
+
}
|
|
979
|
+
};
|
|
980
|
+
/**
|
|
981
|
+
* @description Represents a min heap data structure.
|
|
982
|
+
* in MinHeap, the parent node is always smaller than its children.
|
|
983
|
+
* The root node is the smallest element in the heap.
|
|
984
|
+
* The min heap is used to find the kth largest element in a list.
|
|
985
|
+
*/
|
|
986
|
+
var MinHeap = class extends Heap {
|
|
987
|
+
/**
|
|
988
|
+
* Initializes a new instance of the MinHeap class.
|
|
989
|
+
*/
|
|
990
|
+
constructor() {
|
|
991
|
+
super();
|
|
992
|
+
}
|
|
993
|
+
/**
|
|
994
|
+
* Moves the element at the given index up the heap until it satisfies the min heap property.
|
|
995
|
+
* @param index The index of the element to be shifted up.
|
|
996
|
+
*/
|
|
997
|
+
shiftUp(index) {
|
|
998
|
+
if (index === 0) return;
|
|
999
|
+
const parentIndex = this.getParentIndex(index);
|
|
1000
|
+
if (this.heap[parentIndex] > this.heap[index]) {
|
|
1001
|
+
this.swap(parentIndex, index);
|
|
1002
|
+
this.shiftUp(parentIndex);
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
1005
|
+
/**
|
|
1006
|
+
* Moves the element at the given index down the heap until it satisfies the min heap property.
|
|
1007
|
+
* @param index The index of the element to be shifted down.
|
|
1008
|
+
*/
|
|
1009
|
+
shiftDown(index) {
|
|
1010
|
+
const leftIndex = this.getLeftIndex(index);
|
|
1011
|
+
const rightIndex = this.getRightIndex(index);
|
|
1012
|
+
if (this.heap[leftIndex] < this.heap[index]) {
|
|
1013
|
+
this.swap(leftIndex, index);
|
|
1014
|
+
this.shiftDown(leftIndex);
|
|
1015
|
+
}
|
|
1016
|
+
if (this.heap[rightIndex] < this.heap[index]) {
|
|
1017
|
+
this.swap(rightIndex, index);
|
|
1018
|
+
this.shiftDown(rightIndex);
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
/**
|
|
1022
|
+
* Inserts a new value into the min heap.
|
|
1023
|
+
* @param value The value to be inserted.
|
|
1024
|
+
*/
|
|
1025
|
+
insert(value) {
|
|
1026
|
+
this.heap.push(value);
|
|
1027
|
+
this.shiftUp(this.heap.length - 1);
|
|
1028
|
+
}
|
|
1029
|
+
/**
|
|
1030
|
+
* Removes and returns the minimum value from the min heap.
|
|
1031
|
+
*/
|
|
1032
|
+
pop() {
|
|
1033
|
+
this.heap[0] = this.heap.pop();
|
|
1034
|
+
this.shiftDown(0);
|
|
1035
|
+
}
|
|
1036
|
+
};
|
|
1037
|
+
/**
|
|
1038
|
+
* Returns the kth largest element from the given list using a min heap.
|
|
1039
|
+
* @param {number[]} list The list of numbers.
|
|
1040
|
+
* @param {number} k The value of k.
|
|
1041
|
+
* @returns The kth largest element.
|
|
1042
|
+
*/
|
|
1043
|
+
const getLargestK = (list, k) => {
|
|
1044
|
+
const minHeap = new MinHeap();
|
|
1045
|
+
for (const item of list) {
|
|
1046
|
+
minHeap.insert(item);
|
|
1047
|
+
if (minHeap.size() > k) minHeap.pop();
|
|
1048
|
+
}
|
|
1049
|
+
return minHeap.heap;
|
|
1050
|
+
};
|
|
1051
|
+
|
|
1052
|
+
//#endregion
|
|
1053
|
+
//#region src/model/filter-util/number-filter-util.ts
|
|
1054
|
+
/**
|
|
1055
|
+
* @description Checks if a value is above the average.
|
|
1056
|
+
* @param {number} value - The value to check.
|
|
1057
|
+
* @param {number} average - The average value.
|
|
1058
|
+
* @returns {boolean} A boolean value indicating whether the value is above the average.
|
|
1059
|
+
*/
|
|
1060
|
+
const above = (value, average) => {
|
|
1061
|
+
return value > average;
|
|
1062
|
+
};
|
|
1063
|
+
/**
|
|
1064
|
+
* @description Checks if a value is below the average.
|
|
1065
|
+
* @param {number} value - The value to check.
|
|
1066
|
+
* @param {number} average - The average value.
|
|
1067
|
+
* @returns {boolean} A boolean value indicating whether the value is below the average.
|
|
1068
|
+
*/
|
|
1069
|
+
const below = (value, average) => {
|
|
1070
|
+
return value < average;
|
|
1071
|
+
};
|
|
1072
|
+
/**
|
|
1073
|
+
* @description Gets the largest N values from a list and checks if the expected value is included.
|
|
1074
|
+
* @param {number[]} list - The list of numbers.
|
|
1075
|
+
* @param {number} top - The number of top values to retrieve.
|
|
1076
|
+
* @param {number} expectedValue - The expected value to check for inclusion.
|
|
1077
|
+
* @returns {boolean} A boolean value indicating whether the expected value is included in the top N values.
|
|
1078
|
+
*/
|
|
1079
|
+
const getTopN = (list, top, expectedValue) => {
|
|
1080
|
+
return getLargestK(list, top).includes(expectedValue);
|
|
1081
|
+
};
|
|
1082
|
+
function getNumberFilterExecuteFunc(filter, calculatedOptions) {
|
|
1083
|
+
switch (filter.compareType) {
|
|
1084
|
+
case TableNumberCompareTypeEnum.Equal: {
|
|
1085
|
+
const expectedValue = Number(filter.expectedValue);
|
|
1086
|
+
return (value) => value === expectedValue;
|
|
1087
|
+
}
|
|
1088
|
+
case TableNumberCompareTypeEnum.NotEqual: {
|
|
1089
|
+
const expectedValue = Number(filter.expectedValue);
|
|
1090
|
+
return (value) => value !== expectedValue;
|
|
1091
|
+
}
|
|
1092
|
+
case TableNumberCompareTypeEnum.GreaterThan: {
|
|
1093
|
+
const expectedValue = Number(filter.expectedValue);
|
|
1094
|
+
return (value) => value > expectedValue;
|
|
1095
|
+
}
|
|
1096
|
+
case TableNumberCompareTypeEnum.GreaterThanOrEqual: {
|
|
1097
|
+
const expectedValue = Number(filter.expectedValue);
|
|
1098
|
+
return (value) => value >= expectedValue;
|
|
1099
|
+
}
|
|
1100
|
+
case TableNumberCompareTypeEnum.LessThan: {
|
|
1101
|
+
const expectedValue = Number(filter.expectedValue);
|
|
1102
|
+
return (value) => value < expectedValue;
|
|
1103
|
+
}
|
|
1104
|
+
case TableNumberCompareTypeEnum.LessThanOrEqual: {
|
|
1105
|
+
const expectedValue = Number(filter.expectedValue);
|
|
1106
|
+
return (value) => value <= expectedValue;
|
|
1107
|
+
}
|
|
1108
|
+
case TableNumberCompareTypeEnum.Between: {
|
|
1109
|
+
const [min, max] = filter.expectedValue;
|
|
1110
|
+
const minValue = Number(min);
|
|
1111
|
+
const maxValue = Number(max);
|
|
1112
|
+
if (minValue > maxValue) return (value) => value >= maxValue && value <= minValue;
|
|
1113
|
+
return (value) => value >= minValue && value <= maxValue;
|
|
1114
|
+
}
|
|
1115
|
+
case TableNumberCompareTypeEnum.NotBetween: {
|
|
1116
|
+
const [min, max] = filter.expectedValue;
|
|
1117
|
+
const minValue = Number(min);
|
|
1118
|
+
const maxValue = Number(max);
|
|
1119
|
+
if (minValue > maxValue) return (value) => value < maxValue || value > minValue;
|
|
1120
|
+
return (value) => value < minValue || value > maxValue;
|
|
1121
|
+
}
|
|
1122
|
+
case TableNumberCompareTypeEnum.Above: {
|
|
1123
|
+
const average = calculatedOptions.average;
|
|
1124
|
+
return (value) => above(value, average);
|
|
1125
|
+
}
|
|
1126
|
+
case TableNumberCompareTypeEnum.Below: {
|
|
1127
|
+
const average = calculatedOptions.average;
|
|
1128
|
+
return (value) => below(value, average);
|
|
1129
|
+
}
|
|
1130
|
+
case TableNumberCompareTypeEnum.TopN: {
|
|
1131
|
+
const list = calculatedOptions.list;
|
|
1132
|
+
const top = Number(filter.expectedValue);
|
|
1133
|
+
return (value) => getTopN(list, top, value);
|
|
1134
|
+
}
|
|
1135
|
+
}
|
|
1136
|
+
}
|
|
1137
|
+
|
|
1138
|
+
//#endregion
|
|
1139
|
+
//#region src/model/filter-util/text-filter-util.ts
|
|
1140
|
+
const textEqual = (compareValue, expectedValue) => {
|
|
1141
|
+
return (0, _univerjs_core.createREGEXFromWildChar)(expectedValue).test(compareValue);
|
|
1142
|
+
};
|
|
1143
|
+
const textNotEqual = (compareValue, expectedValue) => {
|
|
1144
|
+
return !(0, _univerjs_core.createREGEXFromWildChar)(expectedValue).test(compareValue);
|
|
1145
|
+
};
|
|
1146
|
+
const textContain = (compareValue, expectedValue) => {
|
|
1147
|
+
return (0, _univerjs_core.createREGEXFromWildChar)(`*${expectedValue}*`).test(compareValue);
|
|
1148
|
+
};
|
|
1149
|
+
const textNotContain = (compareValue, expectedValue) => {
|
|
1150
|
+
return !(0, _univerjs_core.createREGEXFromWildChar)(`*${expectedValue}*`).test(compareValue);
|
|
1151
|
+
};
|
|
1152
|
+
const textStartWith = (compareValue, expectedValue) => {
|
|
1153
|
+
return (0, _univerjs_core.createREGEXFromWildChar)(`${expectedValue}*`).test(compareValue);
|
|
1154
|
+
};
|
|
1155
|
+
const textEndWith = (compareValue, expectedValue) => {
|
|
1156
|
+
return (0, _univerjs_core.createREGEXFromWildChar)(`*${expectedValue}`).test(compareValue);
|
|
1157
|
+
};
|
|
1158
|
+
function getTextFilterExecuteFunc(filter) {
|
|
1159
|
+
switch (filter.compareType) {
|
|
1160
|
+
case TableStringCompareTypeEnum.Equal: return (value) => textEqual(value, filter.expectedValue);
|
|
1161
|
+
case TableStringCompareTypeEnum.NotEqual: return (value) => textNotEqual(value, filter.expectedValue);
|
|
1162
|
+
case TableStringCompareTypeEnum.Contains: return (value) => textContain(value, filter.expectedValue);
|
|
1163
|
+
case TableStringCompareTypeEnum.NotContains: return (value) => textNotContain(value, filter.expectedValue);
|
|
1164
|
+
case TableStringCompareTypeEnum.StartsWith: return (value) => textStartWith(value, filter.expectedValue);
|
|
1165
|
+
case TableStringCompareTypeEnum.EndsWith: return (value) => textEndWith(value, filter.expectedValue);
|
|
1166
|
+
default:
|
|
1167
|
+
console.error(`Unknown filter operator: ${filter.compareType}`);
|
|
1168
|
+
return (value) => true;
|
|
1169
|
+
}
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1172
|
+
//#endregion
|
|
1173
|
+
//#region src/model/filter-util/condition.ts
|
|
1174
|
+
const NumberDynamicFilterCompareTypeSet = new Set([
|
|
1175
|
+
TableNumberCompareTypeEnum.Above,
|
|
1176
|
+
TableNumberCompareTypeEnum.Below,
|
|
1177
|
+
TableNumberCompareTypeEnum.TopN
|
|
1178
|
+
]);
|
|
1179
|
+
const DateDynamicFilterCompareTypeSet = new Set([
|
|
1180
|
+
TableDateCompareTypeEnum.Today,
|
|
1181
|
+
TableDateCompareTypeEnum.Yesterday,
|
|
1182
|
+
TableDateCompareTypeEnum.Tomorrow,
|
|
1183
|
+
TableDateCompareTypeEnum.ThisWeek,
|
|
1184
|
+
TableDateCompareTypeEnum.LastWeek,
|
|
1185
|
+
TableDateCompareTypeEnum.NextWeek,
|
|
1186
|
+
TableDateCompareTypeEnum.ThisMonth,
|
|
1187
|
+
TableDateCompareTypeEnum.LastMonth,
|
|
1188
|
+
TableDateCompareTypeEnum.NextMonth,
|
|
1189
|
+
TableDateCompareTypeEnum.ThisQuarter,
|
|
1190
|
+
TableDateCompareTypeEnum.LastQuarter,
|
|
1191
|
+
TableDateCompareTypeEnum.NextQuarter,
|
|
1192
|
+
TableDateCompareTypeEnum.NextYear,
|
|
1193
|
+
TableDateCompareTypeEnum.ThisYear,
|
|
1194
|
+
TableDateCompareTypeEnum.LastYear,
|
|
1195
|
+
TableDateCompareTypeEnum.YearToDate
|
|
1196
|
+
]);
|
|
1197
|
+
function isNumberDynamicFilter(compareType) {
|
|
1198
|
+
return NumberDynamicFilterCompareTypeSet.has(compareType);
|
|
1199
|
+
}
|
|
1200
|
+
function getConditionExecuteFunc(filter, calculatedOptions) {
|
|
1201
|
+
if (isNumberDynamicFilter(filter.filterInfo.compareType)) return (value) => true;
|
|
1202
|
+
else switch (filter.filterInfo.conditionType) {
|
|
1203
|
+
case TableConditionTypeEnum.Date: return getDateFilterExecuteFunc(filter.filterInfo);
|
|
1204
|
+
case TableConditionTypeEnum.Number: return getNumberFilterExecuteFunc(filter.filterInfo, calculatedOptions);
|
|
1205
|
+
case TableConditionTypeEnum.String: return getTextFilterExecuteFunc(filter.filterInfo);
|
|
1206
|
+
case TableConditionTypeEnum.Logic:
|
|
1207
|
+
default: return (value) => true;
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1210
|
+
function getCellValueWithConditionType(sheet, row, col, conditionType) {
|
|
1211
|
+
switch (conditionType) {
|
|
1212
|
+
case TableConditionTypeEnum.Date: {
|
|
1213
|
+
const dateNumber = getNumberCellValue(sheet, row, col);
|
|
1214
|
+
return dateNumber ? excelSerialToDateTime(dateNumber) : null;
|
|
1215
|
+
}
|
|
1216
|
+
case TableConditionTypeEnum.Number: return getNumberCellValue(sheet, row, col);
|
|
1217
|
+
case TableConditionTypeEnum.String:
|
|
1218
|
+
default: return getStringCellValue(sheet, row, col);
|
|
1219
|
+
}
|
|
1220
|
+
}
|
|
1221
|
+
const getStringFromDataStream = (data) => {
|
|
1222
|
+
var _data$body;
|
|
1223
|
+
return ((_data$body = data.body) === null || _data$body === void 0 ? void 0 : _data$body.dataStream.replace(/\r\n$/, "")) || "";
|
|
1224
|
+
};
|
|
1225
|
+
function getStringCellValue(sheet, row, col) {
|
|
1226
|
+
const cellData = sheet.getCell(row, col);
|
|
1227
|
+
if (!cellData) return null;
|
|
1228
|
+
const { v, t, p } = cellData;
|
|
1229
|
+
if (p) return getStringFromDataStream(p);
|
|
1230
|
+
if (typeof v === "string") {
|
|
1231
|
+
if (t === _univerjs_core.CellValueType.BOOLEAN) return v.toUpperCase();
|
|
1232
|
+
return v;
|
|
1233
|
+
}
|
|
1234
|
+
if (typeof v === "number") {
|
|
1235
|
+
if (t === _univerjs_core.CellValueType.BOOLEAN) return v ? "TRUE" : "FALSE";
|
|
1236
|
+
return v;
|
|
1237
|
+
}
|
|
1238
|
+
if (typeof v === "boolean") return v ? "TRUE" : "FALSE";
|
|
1239
|
+
if (v === void 0) return;
|
|
1240
|
+
return String(v);
|
|
1241
|
+
}
|
|
1242
|
+
function getNumberCellValue(sheet, row, col) {
|
|
1243
|
+
const cellData = sheet.getCell(row, col);
|
|
1244
|
+
if (!cellData) return null;
|
|
1245
|
+
const { v, t, p } = cellData;
|
|
1246
|
+
if (p) return null;
|
|
1247
|
+
if (typeof v === "string" && t === _univerjs_core.CellValueType.NUMBER) return Number(sheet.getCellRaw(row, col).v);
|
|
1248
|
+
return Number(v);
|
|
1249
|
+
}
|
|
1250
|
+
function excelSerialToDateTime(serial) {
|
|
1251
|
+
const baseDate = new Date(Date.UTC(1900, 0, 1, 0, 0, 0));
|
|
1252
|
+
const leapDayDate = new Date(Date.UTC(1900, 1, 28, 0, 0, 0));
|
|
1253
|
+
let dayDifference = serial - 1;
|
|
1254
|
+
if (dayDifference > (leapDayDate.getTime() - baseDate.getTime()) / (1e3 * 3600 * 24)) dayDifference -= 1;
|
|
1255
|
+
if (dayDifference < 0) dayDifference = serial;
|
|
1256
|
+
return new Date(baseDate.getTime() + dayDifference * (1e3 * 3600 * 24));
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1259
|
+
//#endregion
|
|
1260
|
+
//#region src/model/table-filter.ts
|
|
1261
|
+
var TableFilters = class {
|
|
1262
|
+
constructor() {
|
|
1263
|
+
_defineProperty(this, "_tableColumnFilterList", void 0);
|
|
1264
|
+
_defineProperty(this, "_tableSortInfo", void 0);
|
|
1265
|
+
_defineProperty(this, "_filterOutRows", void 0);
|
|
1266
|
+
this._tableColumnFilterList = [];
|
|
1267
|
+
}
|
|
1268
|
+
setColumnFilter(columnIndex, filter) {
|
|
1269
|
+
if (!filter) this._tableColumnFilterList[columnIndex] = void 0;
|
|
1270
|
+
else this._tableColumnFilterList[columnIndex] = filter;
|
|
1271
|
+
}
|
|
1272
|
+
setSortState(columnIndex, sortState) {
|
|
1273
|
+
this._tableSortInfo = {
|
|
1274
|
+
columnIndex,
|
|
1275
|
+
sortState
|
|
1276
|
+
};
|
|
1277
|
+
}
|
|
1278
|
+
getColumnFilter(columnIndex) {
|
|
1279
|
+
return this._tableColumnFilterList[columnIndex];
|
|
1280
|
+
}
|
|
1281
|
+
getFilterState(columnIndex) {
|
|
1282
|
+
var _this$_tableSortInfo;
|
|
1283
|
+
const sortState = ((_this$_tableSortInfo = this._tableSortInfo) === null || _this$_tableSortInfo === void 0 ? void 0 : _this$_tableSortInfo.columnIndex) === columnIndex ? this._tableSortInfo.sortState : SheetsTableSortStateEnum.None;
|
|
1284
|
+
return getTableFilterState(this._tableColumnFilterList[columnIndex], sortState);
|
|
1285
|
+
}
|
|
1286
|
+
getSortState() {
|
|
1287
|
+
var _this$_tableSortInfo2;
|
|
1288
|
+
return (_this$_tableSortInfo2 = this._tableSortInfo) !== null && _this$_tableSortInfo2 !== void 0 ? _this$_tableSortInfo2 : {};
|
|
1289
|
+
}
|
|
1290
|
+
getFilterStates(range) {
|
|
1291
|
+
const states = [];
|
|
1292
|
+
const { startColumn, endColumn } = range;
|
|
1293
|
+
for (let i = startColumn; i <= endColumn; i++) states.push(this.getFilterState(i - startColumn));
|
|
1294
|
+
return states;
|
|
1295
|
+
}
|
|
1296
|
+
getFilterOutRows() {
|
|
1297
|
+
return this._filterOutRows;
|
|
1298
|
+
}
|
|
1299
|
+
doFilter(sheet, range) {
|
|
1300
|
+
const filterOutRows = /* @__PURE__ */ new Set();
|
|
1301
|
+
const tableColumnFilterList = this._tableColumnFilterList;
|
|
1302
|
+
for (let i = 0; i < tableColumnFilterList.length; i++) if (tableColumnFilterList[i]) this.doColumnFilter(sheet, range, i, filterOutRows);
|
|
1303
|
+
this._filterOutRows = filterOutRows;
|
|
1304
|
+
return filterOutRows;
|
|
1305
|
+
}
|
|
1306
|
+
doColumnFilter(sheet, range, columnIndex, filterOutRows) {
|
|
1307
|
+
const filter = this._tableColumnFilterList[columnIndex];
|
|
1308
|
+
if (filter && sheet) {
|
|
1309
|
+
const { startRow, endRow, startColumn } = range;
|
|
1310
|
+
const column = startColumn + columnIndex;
|
|
1311
|
+
const executeFunc = this.getExecuteFunc(sheet, range, columnIndex, filter);
|
|
1312
|
+
for (let row = startRow; row <= endRow; row++) {
|
|
1313
|
+
const conditionType = isConditionFilter(filter) ? filter.filterInfo.conditionType : TableConditionTypeEnum.String;
|
|
1314
|
+
if (getCellValueWithConditionType(sheet, row, column, conditionType) === null) filterOutRows.add(row);
|
|
1315
|
+
else if (!executeFunc(getCellValueWithConditionType(sheet, row, column, conditionType))) filterOutRows.add(row);
|
|
1316
|
+
}
|
|
1317
|
+
}
|
|
1318
|
+
}
|
|
1319
|
+
_getNumberCalculatedOptions(sheet, range, columnIndex) {
|
|
1320
|
+
const { startRow, endRow, startColumn } = range;
|
|
1321
|
+
const column = startColumn + columnIndex;
|
|
1322
|
+
const list = [];
|
|
1323
|
+
let count = 0;
|
|
1324
|
+
let sum = 0;
|
|
1325
|
+
for (let row = startRow; row <= endRow; row++) {
|
|
1326
|
+
const val = getCellValueWithConditionType(sheet, row, column, TableConditionTypeEnum.Number);
|
|
1327
|
+
if (val !== null) {
|
|
1328
|
+
list.push(val);
|
|
1329
|
+
count++;
|
|
1330
|
+
sum += val;
|
|
1331
|
+
}
|
|
1332
|
+
}
|
|
1333
|
+
return {
|
|
1334
|
+
list,
|
|
1335
|
+
average: count > 0 ? sum / count : 0
|
|
1336
|
+
};
|
|
1337
|
+
}
|
|
1338
|
+
getExecuteFunc(sheet, range, columnIndex, filter) {
|
|
1339
|
+
if (filter.filterType === TableColumnFilterTypeEnum.manual) {
|
|
1340
|
+
const valuesSet = new Set(filter.values);
|
|
1341
|
+
return (value) => {
|
|
1342
|
+
return valuesSet.has(value);
|
|
1343
|
+
};
|
|
1344
|
+
} else if (filter.filterType === TableColumnFilterTypeEnum.condition) return getConditionExecuteFunc(filter, isNumberDynamicFilter(filter.filterInfo.compareType) ? this._getNumberCalculatedOptions(sheet, range, columnIndex) : void 0);
|
|
1345
|
+
else return (value) => {
|
|
1346
|
+
return true;
|
|
1347
|
+
};
|
|
1348
|
+
}
|
|
1349
|
+
toJSON() {
|
|
1350
|
+
return {
|
|
1351
|
+
tableColumnFilterList: this._tableColumnFilterList,
|
|
1352
|
+
tableSortInfo: this._tableSortInfo
|
|
1353
|
+
};
|
|
1354
|
+
}
|
|
1355
|
+
fromJSON(json) {
|
|
1356
|
+
var _json$tableColumnFilt;
|
|
1357
|
+
this._tableColumnFilterList = (_json$tableColumnFilt = json.tableColumnFilterList) !== null && _json$tableColumnFilt !== void 0 ? _json$tableColumnFilt : [];
|
|
1358
|
+
if (json.tableSortInfo) this._tableSortInfo = json.tableSortInfo;
|
|
1359
|
+
}
|
|
1360
|
+
dispose() {
|
|
1361
|
+
this._tableColumnFilterList = [];
|
|
1362
|
+
}
|
|
1363
|
+
};
|
|
1364
|
+
|
|
1365
|
+
//#endregion
|
|
1366
|
+
//#region src/model/table.ts
|
|
1367
|
+
var Table = class {
|
|
1368
|
+
constructor(id, name, range, header, options = {}) {
|
|
1369
|
+
_defineProperty(this, "_id", void 0);
|
|
1370
|
+
_defineProperty(this, "_name", void 0);
|
|
1371
|
+
_defineProperty(this, "_tableStyleId", void 0);
|
|
1372
|
+
_defineProperty(this, "_showHeader", void 0);
|
|
1373
|
+
_defineProperty(this, "_showFooter", void 0);
|
|
1374
|
+
_defineProperty(this, "_range", void 0);
|
|
1375
|
+
_defineProperty(this, "_columns", /* @__PURE__ */ new Map());
|
|
1376
|
+
_defineProperty(this, "_columnOrder", []);
|
|
1377
|
+
_defineProperty(this, "tableMeta", void 0);
|
|
1378
|
+
_defineProperty(this, "_tableFilters", void 0);
|
|
1379
|
+
_defineProperty(this, "_subUnitId", void 0);
|
|
1380
|
+
this._id = id;
|
|
1381
|
+
this._range = range;
|
|
1382
|
+
this._name = name;
|
|
1383
|
+
this._tableFilters = new TableFilters();
|
|
1384
|
+
this._init(header, options);
|
|
1385
|
+
}
|
|
1386
|
+
_init(header, options) {
|
|
1387
|
+
var _options$showHeader;
|
|
1388
|
+
this._tableStyleId = options === null || options === void 0 ? void 0 : options.tableStyleId;
|
|
1389
|
+
this._showHeader = (_options$showHeader = options === null || options === void 0 ? void 0 : options.showHeader) !== null && _options$showHeader !== void 0 ? _options$showHeader : true;
|
|
1390
|
+
this._showFooter = false;
|
|
1391
|
+
const range = this.getRange();
|
|
1392
|
+
const startColumn = range.startColumn;
|
|
1393
|
+
const endColumn = range.endColumn;
|
|
1394
|
+
for (let i = startColumn; i <= endColumn; i++) {
|
|
1395
|
+
var _options$columns;
|
|
1396
|
+
const index = i - startColumn;
|
|
1397
|
+
let id;
|
|
1398
|
+
let columnName;
|
|
1399
|
+
if ((_options$columns = options.columns) === null || _options$columns === void 0 ? void 0 : _options$columns[index]) {
|
|
1400
|
+
id = options.columns[index].id;
|
|
1401
|
+
columnName = options.columns[index].displayName;
|
|
1402
|
+
} else {
|
|
1403
|
+
id = (0, _univerjs_core.generateRandomId)();
|
|
1404
|
+
columnName = header[i - startColumn];
|
|
1405
|
+
}
|
|
1406
|
+
const column = new TableColumn(id, columnName);
|
|
1407
|
+
this._columns.set(id, column);
|
|
1408
|
+
this._columnOrder.push(id);
|
|
1409
|
+
}
|
|
1410
|
+
if (options.filters) options.filters.forEach((filter, index) => {
|
|
1411
|
+
if (filter) this._tableFilters.setColumnFilter(index, filter);
|
|
1412
|
+
});
|
|
1413
|
+
}
|
|
1414
|
+
setTableFilterColumn(columnIndex, filter) {
|
|
1415
|
+
this._tableFilters.setColumnFilter(columnIndex, filter);
|
|
1416
|
+
}
|
|
1417
|
+
getTableFilterColumn(columnIndex) {
|
|
1418
|
+
return this._tableFilters.getColumnFilter(columnIndex);
|
|
1419
|
+
}
|
|
1420
|
+
getTableFilters() {
|
|
1421
|
+
return this._tableFilters;
|
|
1422
|
+
}
|
|
1423
|
+
getTableFilterRange() {
|
|
1424
|
+
const tableRange = this.getRange();
|
|
1425
|
+
const showHeader = this.isShowHeader();
|
|
1426
|
+
const isShowFooter = this.isShowFooter();
|
|
1427
|
+
const { startRow, startColumn, endRow, endColumn } = tableRange;
|
|
1428
|
+
return {
|
|
1429
|
+
startRow: showHeader ? startRow + 1 : startRow,
|
|
1430
|
+
startColumn,
|
|
1431
|
+
endRow: isShowFooter ? endRow - 1 : endRow,
|
|
1432
|
+
endColumn
|
|
1433
|
+
};
|
|
1434
|
+
}
|
|
1435
|
+
setColumns(columns) {
|
|
1436
|
+
this._columns.clear();
|
|
1437
|
+
this._columnOrder = [];
|
|
1438
|
+
columns.forEach((columnJson) => {
|
|
1439
|
+
const column = new TableColumn(columnJson.id, columnJson.displayName);
|
|
1440
|
+
column.fromJSON(columnJson);
|
|
1441
|
+
this._columns.set(columnJson.id, column);
|
|
1442
|
+
this._columnOrder.push(columnJson.id);
|
|
1443
|
+
});
|
|
1444
|
+
}
|
|
1445
|
+
getColumnsCount() {
|
|
1446
|
+
return this._columnOrder.length;
|
|
1447
|
+
}
|
|
1448
|
+
insertColumn(index, column) {
|
|
1449
|
+
const columnId = column.id;
|
|
1450
|
+
this._columns.set(columnId, column);
|
|
1451
|
+
this._columnOrder.splice(index, 0, columnId);
|
|
1452
|
+
}
|
|
1453
|
+
removeColumn(index) {
|
|
1454
|
+
const columnId = this._columnOrder[index];
|
|
1455
|
+
this._columns.delete(columnId);
|
|
1456
|
+
this._columnOrder.splice(index, 1);
|
|
1457
|
+
}
|
|
1458
|
+
setTableMeta(meta) {
|
|
1459
|
+
this.tableMeta = meta;
|
|
1460
|
+
}
|
|
1461
|
+
getTableMeta() {
|
|
1462
|
+
return this.tableMeta;
|
|
1463
|
+
}
|
|
1464
|
+
getColumn(columnId) {
|
|
1465
|
+
return this._columns.get(columnId);
|
|
1466
|
+
}
|
|
1467
|
+
getTableColumnByIndex(index) {
|
|
1468
|
+
const id = this._columnOrder[index];
|
|
1469
|
+
return this.getColumn(id);
|
|
1470
|
+
}
|
|
1471
|
+
getColumnNameByIndex(index) {
|
|
1472
|
+
var _this$getColumn;
|
|
1473
|
+
const id = this._columnOrder[index];
|
|
1474
|
+
return ((_this$getColumn = this.getColumn(id)) === null || _this$getColumn === void 0 ? void 0 : _this$getColumn.getDisplayName()) || "";
|
|
1475
|
+
}
|
|
1476
|
+
getId() {
|
|
1477
|
+
return this._id;
|
|
1478
|
+
}
|
|
1479
|
+
getRangeInfo() {
|
|
1480
|
+
return { ...this._range };
|
|
1481
|
+
}
|
|
1482
|
+
getRange() {
|
|
1483
|
+
return { ...this._range };
|
|
1484
|
+
}
|
|
1485
|
+
setRange(range) {
|
|
1486
|
+
this._range = range;
|
|
1487
|
+
}
|
|
1488
|
+
setDisplayName(name) {
|
|
1489
|
+
this._name = name;
|
|
1490
|
+
}
|
|
1491
|
+
getDisplayName() {
|
|
1492
|
+
return this._name;
|
|
1493
|
+
}
|
|
1494
|
+
getSubunitId() {
|
|
1495
|
+
return this._subUnitId;
|
|
1496
|
+
}
|
|
1497
|
+
setSubunitId(subUnitId) {
|
|
1498
|
+
this._subUnitId = subUnitId;
|
|
1499
|
+
}
|
|
1500
|
+
getTableStyleId() {
|
|
1501
|
+
var _this$_tableStyleId;
|
|
1502
|
+
return (_this$_tableStyleId = this._tableStyleId) !== null && _this$_tableStyleId !== void 0 ? _this$_tableStyleId : tableThemeConfig[0].name;
|
|
1503
|
+
}
|
|
1504
|
+
setTableStyleId(tableStyleId) {
|
|
1505
|
+
this._tableStyleId = tableStyleId;
|
|
1506
|
+
}
|
|
1507
|
+
isShowHeader() {
|
|
1508
|
+
var _this$_showHeader;
|
|
1509
|
+
return (_this$_showHeader = this._showHeader) !== null && _this$_showHeader !== void 0 ? _this$_showHeader : true;
|
|
1510
|
+
}
|
|
1511
|
+
setShowHeader(showHeader) {
|
|
1512
|
+
this._showHeader = showHeader;
|
|
1513
|
+
}
|
|
1514
|
+
isShowFooter() {
|
|
1515
|
+
var _this$_showFooter;
|
|
1516
|
+
return (_this$_showFooter = this._showFooter) !== null && _this$_showFooter !== void 0 ? _this$_showFooter : false;
|
|
1517
|
+
}
|
|
1518
|
+
getTableInfo() {
|
|
1519
|
+
return {
|
|
1520
|
+
id: this._id,
|
|
1521
|
+
subUnitId: this._subUnitId,
|
|
1522
|
+
name: this._name,
|
|
1523
|
+
range: this.getRangeInfo(),
|
|
1524
|
+
meta: this.tableMeta,
|
|
1525
|
+
showHeader: this._showHeader,
|
|
1526
|
+
columns: this._columnOrder.map((columnId) => this._columns.get(columnId).toJSON())
|
|
1527
|
+
};
|
|
1528
|
+
}
|
|
1529
|
+
getTableConfig() {
|
|
1530
|
+
return {
|
|
1531
|
+
name: this.getDisplayName(),
|
|
1532
|
+
range: this.getRangeInfo(),
|
|
1533
|
+
options: {
|
|
1534
|
+
showHeader: this._showHeader,
|
|
1535
|
+
showFooter: this._showFooter
|
|
1536
|
+
},
|
|
1537
|
+
tableStyleId: this._tableStyleId
|
|
1538
|
+
};
|
|
1539
|
+
}
|
|
1540
|
+
getFilterStates(range) {
|
|
1541
|
+
return this._tableFilters.getFilterStates(range);
|
|
1542
|
+
}
|
|
1543
|
+
toJSON() {
|
|
1544
|
+
const columns = [];
|
|
1545
|
+
this._columns.forEach((column) => {
|
|
1546
|
+
columns.push(column.toJSON());
|
|
1547
|
+
});
|
|
1548
|
+
return {
|
|
1549
|
+
id: this._id,
|
|
1550
|
+
name: this._name,
|
|
1551
|
+
range: this.getRangeInfo(),
|
|
1552
|
+
options: {
|
|
1553
|
+
showHeader: this._showHeader,
|
|
1554
|
+
showFooter: this._showFooter,
|
|
1555
|
+
tableStyleId: this._tableStyleId
|
|
1556
|
+
},
|
|
1557
|
+
filters: this._tableFilters.toJSON(),
|
|
1558
|
+
columns,
|
|
1559
|
+
meta: this.tableMeta
|
|
1560
|
+
};
|
|
1561
|
+
}
|
|
1562
|
+
fromJSON(json) {
|
|
1563
|
+
var _json$options$showHea, _json$options$showFoo;
|
|
1564
|
+
this._id = json.id;
|
|
1565
|
+
this._name = json.name;
|
|
1566
|
+
this._range = json.range;
|
|
1567
|
+
this.tableMeta = json.meta;
|
|
1568
|
+
this._tableStyleId = json.options.tableStyleId || "";
|
|
1569
|
+
this._showHeader = (_json$options$showHea = json.options.showHeader) !== null && _json$options$showHea !== void 0 ? _json$options$showHea : true;
|
|
1570
|
+
this._showFooter = (_json$options$showFoo = json.options.showFooter) !== null && _json$options$showFoo !== void 0 ? _json$options$showFoo : true;
|
|
1571
|
+
json.columns.forEach((column) => {
|
|
1572
|
+
const tableColumn = new TableColumn(column.id, column.displayName);
|
|
1573
|
+
tableColumn.fromJSON(column);
|
|
1574
|
+
this._columns.set(column.id, tableColumn);
|
|
1575
|
+
this._columnOrder.push(column.id);
|
|
1576
|
+
});
|
|
1577
|
+
this._tableFilters = new TableFilters();
|
|
1578
|
+
this._tableFilters.fromJSON(json.filters);
|
|
1579
|
+
}
|
|
1580
|
+
dispose() {
|
|
1581
|
+
this._id = "";
|
|
1582
|
+
this._name = "";
|
|
1583
|
+
this._tableStyleId = "";
|
|
1584
|
+
this._showHeader = true;
|
|
1585
|
+
this._showFooter = true;
|
|
1586
|
+
delete this._range;
|
|
1587
|
+
this._columns.clear();
|
|
1588
|
+
this._columnOrder = [];
|
|
1589
|
+
}
|
|
1590
|
+
};
|
|
1591
|
+
|
|
1592
|
+
//#endregion
|
|
1593
|
+
//#region \0@oxc-project+runtime@0.124.0/helpers/decorateParam.js
|
|
1594
|
+
function __decorateParam(paramIndex, decorator) {
|
|
1595
|
+
return function(target, key) {
|
|
1596
|
+
decorator(target, key, paramIndex);
|
|
1597
|
+
};
|
|
1598
|
+
}
|
|
1599
|
+
|
|
1600
|
+
//#endregion
|
|
1601
|
+
//#region \0@oxc-project+runtime@0.124.0/helpers/decorate.js
|
|
1602
|
+
function __decorate(decorators, target, key, desc) {
|
|
1603
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1604
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1605
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1606
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1607
|
+
}
|
|
1608
|
+
|
|
1609
|
+
//#endregion
|
|
1610
|
+
//#region src/model/table-manager.ts
|
|
1611
|
+
let TableManager = class TableManager extends _univerjs_core.Disposable {
|
|
1612
|
+
constructor(_univerInstanceService, _localeService) {
|
|
1613
|
+
super();
|
|
1614
|
+
this._univerInstanceService = _univerInstanceService;
|
|
1615
|
+
this._localeService = _localeService;
|
|
1616
|
+
_defineProperty(this, "_tableMap", void 0);
|
|
1617
|
+
_defineProperty(this, "_tableAdd$", new rxjs.Subject());
|
|
1618
|
+
_defineProperty(this, "tableAdd$", this._tableAdd$.asObservable());
|
|
1619
|
+
_defineProperty(this, "_tableDelete$", new rxjs.Subject());
|
|
1620
|
+
_defineProperty(this, "tableDelete$", this._tableDelete$.asObservable());
|
|
1621
|
+
_defineProperty(this, "_tableNameChanged$", new rxjs.Subject());
|
|
1622
|
+
_defineProperty(this, "tableNameChanged$", this._tableNameChanged$.asObservable());
|
|
1623
|
+
_defineProperty(this, "_tableRangeChanged$", new rxjs.Subject());
|
|
1624
|
+
_defineProperty(this, "tableRangeChanged$", this._tableRangeChanged$.asObservable());
|
|
1625
|
+
_defineProperty(this, "_tableThemeChanged$", new rxjs.Subject());
|
|
1626
|
+
_defineProperty(this, "tableThemeChanged$", this._tableThemeChanged$.asObservable());
|
|
1627
|
+
_defineProperty(this, "_tableFilterChanged$", new rxjs.Subject());
|
|
1628
|
+
_defineProperty(this, "tableFilterChanged$", this._tableFilterChanged$.asObservable());
|
|
1629
|
+
_defineProperty(this, "_tableInitStatus", new rxjs.BehaviorSubject(false));
|
|
1630
|
+
_defineProperty(this, "tableInitStatus$", this._tableInitStatus.asObservable());
|
|
1631
|
+
this._tableMap = /* @__PURE__ */ new Map();
|
|
1632
|
+
}
|
|
1633
|
+
_ensureUnit(unitId) {
|
|
1634
|
+
if (!this._tableMap.has(unitId)) this._tableMap.set(unitId, /* @__PURE__ */ new Map());
|
|
1635
|
+
return this._tableMap.get(unitId);
|
|
1636
|
+
}
|
|
1637
|
+
getColumnHeader(unitId, subUnitId, range, prefixText) {
|
|
1638
|
+
var _this$_univerInstance;
|
|
1639
|
+
const worksheet = (_this$_univerInstance = this._univerInstanceService.getUnit(unitId)) === null || _this$_univerInstance === void 0 ? void 0 : _this$_univerInstance.getSheetBySheetId(subUnitId);
|
|
1640
|
+
const { startRow, startColumn, endColumn } = range;
|
|
1641
|
+
const header = [];
|
|
1642
|
+
const columnText = prefixText !== null && prefixText !== void 0 ? prefixText : "Column";
|
|
1643
|
+
for (let i = startColumn; i <= endColumn; i++) header.push(convertCellDataToString(worksheet === null || worksheet === void 0 ? void 0 : worksheet.getCell(startRow, i)) || getColumnName(i - startColumn + 1, columnText));
|
|
1644
|
+
return header;
|
|
1645
|
+
}
|
|
1646
|
+
/**
|
|
1647
|
+
* Add a table to univer.
|
|
1648
|
+
* @param {string} unitId The unit id of the table.
|
|
1649
|
+
* @param {string} subUnitId The subunit id of the table.
|
|
1650
|
+
* @param {string} name The table name, it should be unique in the unit or it will be appended with a number.
|
|
1651
|
+
* @param {ITableRange} range The range of the table, it contains the unit id and subunit id.
|
|
1652
|
+
* @param {string[]} [header] The header of the table, if not provided, it will be generated based on the range.
|
|
1653
|
+
* @param {string} [initId] The initial id of the table, if not provided, a random id will be generated.
|
|
1654
|
+
* @param {ITableOptions} [options] Other options of the table.
|
|
1655
|
+
* @returns {string} The table id.
|
|
1656
|
+
*/
|
|
1657
|
+
addTable(unitId, subUnitId, name, range, header, initId, options) {
|
|
1658
|
+
const id = initId !== null && initId !== void 0 ? initId : (0, _univerjs_core.generateRandomId)();
|
|
1659
|
+
const table = new Table(id, name, range, header || this.getColumnHeader(unitId, subUnitId, range), options);
|
|
1660
|
+
table.setSubunitId(subUnitId);
|
|
1661
|
+
this._ensureUnit(unitId).set(id, table);
|
|
1662
|
+
this._tableAdd$.next({
|
|
1663
|
+
unitId,
|
|
1664
|
+
subUnitId,
|
|
1665
|
+
range,
|
|
1666
|
+
tableName: name,
|
|
1667
|
+
tableId: id,
|
|
1668
|
+
tableStyleId: options === null || options === void 0 ? void 0 : options.tableStyleId
|
|
1669
|
+
});
|
|
1670
|
+
if (options === null || options === void 0 ? void 0 : options.filters) {
|
|
1671
|
+
var _this$_univerInstance2;
|
|
1672
|
+
const worksheet = (_this$_univerInstance2 = this._univerInstanceService.getUnit(unitId)) === null || _this$_univerInstance2 === void 0 ? void 0 : _this$_univerInstance2.getSheetBySheetId(subUnitId);
|
|
1673
|
+
table.getTableFilters().doFilter(worksheet, range);
|
|
1674
|
+
this._tableFilterChanged$.next({
|
|
1675
|
+
unitId,
|
|
1676
|
+
subUnitId,
|
|
1677
|
+
tableId: id
|
|
1678
|
+
});
|
|
1679
|
+
}
|
|
1680
|
+
return id;
|
|
1681
|
+
}
|
|
1682
|
+
addFilter(unitId, tableId, column, filter) {
|
|
1683
|
+
const table = this.getTable(unitId, tableId);
|
|
1684
|
+
if (table) {
|
|
1685
|
+
table.getTableFilters().setColumnFilter(column, filter);
|
|
1686
|
+
const subUnitId = table.getSubunitId();
|
|
1687
|
+
this._tableFilterChanged$.next({
|
|
1688
|
+
unitId,
|
|
1689
|
+
subUnitId,
|
|
1690
|
+
tableId
|
|
1691
|
+
});
|
|
1692
|
+
}
|
|
1693
|
+
}
|
|
1694
|
+
getFilterRanges(unitId, subUnitId) {
|
|
1695
|
+
const unitMap = this._tableMap.get(unitId);
|
|
1696
|
+
if (!unitMap) return [];
|
|
1697
|
+
const filterRanges = [];
|
|
1698
|
+
unitMap.forEach((table) => {
|
|
1699
|
+
if (table.getSubunitId() === subUnitId && table.isShowHeader()) filterRanges.push(table.getRange());
|
|
1700
|
+
});
|
|
1701
|
+
return filterRanges;
|
|
1702
|
+
}
|
|
1703
|
+
getSheetFilterRangeWithState(unitId, subUnitId) {
|
|
1704
|
+
const unitMap = this._tableMap.get(unitId);
|
|
1705
|
+
if (!unitMap) return [];
|
|
1706
|
+
const filterRanges = [];
|
|
1707
|
+
unitMap.forEach((table) => {
|
|
1708
|
+
if (table.getSubunitId() === subUnitId && table.isShowHeader()) filterRanges.push({
|
|
1709
|
+
tableId: table.getId(),
|
|
1710
|
+
range: table.getRange(),
|
|
1711
|
+
states: table.getFilterStates(table.getRange())
|
|
1712
|
+
});
|
|
1713
|
+
});
|
|
1714
|
+
return filterRanges;
|
|
1715
|
+
}
|
|
1716
|
+
getTable(unitId, tableId) {
|
|
1717
|
+
const unitMap = this._tableMap.get(unitId);
|
|
1718
|
+
if (!unitMap) return;
|
|
1719
|
+
return unitMap.get(tableId);
|
|
1720
|
+
}
|
|
1721
|
+
/**
|
|
1722
|
+
* Get the unique table name, in excel, the table name should be unique because it is used as a reference.
|
|
1723
|
+
* @param {string} unitId The unit id of the table.
|
|
1724
|
+
* @param {string} baseName The base name of the table.
|
|
1725
|
+
* @returns {string} The unique table name
|
|
1726
|
+
*/
|
|
1727
|
+
getUniqueTableName(unitId, baseName) {
|
|
1728
|
+
const unitMap = this._tableMap.get(unitId);
|
|
1729
|
+
if (!unitMap) return baseName;
|
|
1730
|
+
const tableNamesSet = new Set(Array.from(unitMap.values()).map((table) => table.getDisplayName()));
|
|
1731
|
+
let newName = baseName;
|
|
1732
|
+
let count = 1;
|
|
1733
|
+
while (tableNamesSet.has(newName)) {
|
|
1734
|
+
newName = `${baseName}-${count}`;
|
|
1735
|
+
count++;
|
|
1736
|
+
}
|
|
1737
|
+
return newName;
|
|
1738
|
+
}
|
|
1739
|
+
/**
|
|
1740
|
+
* Get table by unit id and table id.
|
|
1741
|
+
* @param {string} unitId The unit id of the table.
|
|
1742
|
+
* @param {string} tableId The table id.
|
|
1743
|
+
* @returns {Table} The table.
|
|
1744
|
+
*/
|
|
1745
|
+
getTableById(unitId, tableId) {
|
|
1746
|
+
return this.getTable(unitId, tableId);
|
|
1747
|
+
}
|
|
1748
|
+
getTableList(unitId) {
|
|
1749
|
+
const unitMap = this._tableMap.get(unitId);
|
|
1750
|
+
if (!unitMap) return [];
|
|
1751
|
+
return Array.from(unitMap.values()).map((table) => {
|
|
1752
|
+
return {
|
|
1753
|
+
...table.getTableInfo(),
|
|
1754
|
+
unitId
|
|
1755
|
+
};
|
|
1756
|
+
});
|
|
1757
|
+
}
|
|
1758
|
+
/**
|
|
1759
|
+
* Get the table list by unit id and subunit id.
|
|
1760
|
+
* @param {string} unitId The unit id of the table.
|
|
1761
|
+
* @param {string} subUnitId The subunit id of the table.
|
|
1762
|
+
* @returns {Table[]} The table list.
|
|
1763
|
+
*/
|
|
1764
|
+
getTablesBySubunitId(unitId, subUnitId) {
|
|
1765
|
+
const unitMap = this._tableMap.get(unitId);
|
|
1766
|
+
if (!unitMap) return [];
|
|
1767
|
+
return Array.from(unitMap.values()).filter((table) => table.getSubunitId() === subUnitId);
|
|
1768
|
+
}
|
|
1769
|
+
getTablesInfoBySubunitId(unitId, subUnitId) {
|
|
1770
|
+
return this.getTablesBySubunitId(unitId, subUnitId).map((table) => {
|
|
1771
|
+
return {
|
|
1772
|
+
id: table.getId(),
|
|
1773
|
+
name: table.getDisplayName(),
|
|
1774
|
+
range: table.getRange()
|
|
1775
|
+
};
|
|
1776
|
+
});
|
|
1777
|
+
}
|
|
1778
|
+
deleteTable(unitId, tableId) {
|
|
1779
|
+
const unitMap = this._tableMap.get(unitId);
|
|
1780
|
+
const table = unitMap === null || unitMap === void 0 ? void 0 : unitMap.get(tableId);
|
|
1781
|
+
if (table) {
|
|
1782
|
+
const tableInfo = table.getTableInfo();
|
|
1783
|
+
const tableStyleId = table.getTableStyleId();
|
|
1784
|
+
unitMap === null || unitMap === void 0 || unitMap.delete(tableId);
|
|
1785
|
+
const { subUnitId, range, name } = tableInfo;
|
|
1786
|
+
this._tableDelete$.next({
|
|
1787
|
+
unitId,
|
|
1788
|
+
subUnitId,
|
|
1789
|
+
tableId,
|
|
1790
|
+
range,
|
|
1791
|
+
tableName: name,
|
|
1792
|
+
tableStyleId
|
|
1793
|
+
});
|
|
1794
|
+
}
|
|
1795
|
+
}
|
|
1796
|
+
operationTableRowCol(unitId, tableId, config) {
|
|
1797
|
+
const table = this.getTableById(unitId, tableId);
|
|
1798
|
+
if (!table) return;
|
|
1799
|
+
const { operationType, rowColType, index, count, columnsJson } = config;
|
|
1800
|
+
const oldRange = table.getRange();
|
|
1801
|
+
const newRange = { ...oldRange };
|
|
1802
|
+
if (operationType === IRangeOperationTypeEnum.Insert) {
|
|
1803
|
+
if (rowColType === "row") newRange.endRow += count;
|
|
1804
|
+
else if (rowColType === "column") {
|
|
1805
|
+
newRange.endColumn += count;
|
|
1806
|
+
for (let i = 0; i < count; i++) {
|
|
1807
|
+
const columnPrefix = this._localeService.t("sheets-table.columnPrefix");
|
|
1808
|
+
const column = new TableColumn((0, _univerjs_core.generateRandomId)(), getColumnName(table.getColumnsCount() + 1 + i, columnPrefix));
|
|
1809
|
+
if (columnsJson === null || columnsJson === void 0 ? void 0 : columnsJson[i]) column.fromJSON(columnsJson[i]);
|
|
1810
|
+
const columnIndex = index + i - oldRange.startColumn;
|
|
1811
|
+
table.insertColumn(columnIndex, column);
|
|
1812
|
+
}
|
|
1813
|
+
}
|
|
1814
|
+
} else if (rowColType === "row") newRange.endRow -= count;
|
|
1815
|
+
else if (rowColType === "column") {
|
|
1816
|
+
newRange.endColumn -= count;
|
|
1817
|
+
for (let i = count - 1; i >= 0; i--) {
|
|
1818
|
+
const columnIndex = index + i - oldRange.startColumn;
|
|
1819
|
+
table.removeColumn(columnIndex);
|
|
1820
|
+
}
|
|
1821
|
+
}
|
|
1822
|
+
table.setRange(newRange);
|
|
1823
|
+
this._tableRangeChanged$.next({
|
|
1824
|
+
unitId,
|
|
1825
|
+
subUnitId: table.getSubunitId(),
|
|
1826
|
+
tableId,
|
|
1827
|
+
range: newRange,
|
|
1828
|
+
oldRange
|
|
1829
|
+
});
|
|
1830
|
+
}
|
|
1831
|
+
updateTableRange(unitId, tableId, config) {
|
|
1832
|
+
const table = this.getTableById(unitId, tableId);
|
|
1833
|
+
if (!table) return;
|
|
1834
|
+
const oldRange = table.getRange();
|
|
1835
|
+
const newRange = config.newRange;
|
|
1836
|
+
if (newRange.startColumn < oldRange.startColumn) {
|
|
1837
|
+
const diff = oldRange.startColumn - newRange.startColumn;
|
|
1838
|
+
const columnPrefix = this._localeService.t("sheets-table.columnPrefix");
|
|
1839
|
+
for (let i = 0; i < diff; i++) table.insertColumn(oldRange.startColumn, new TableColumn((0, _univerjs_core.generateRandomId)(), getColumnName(table.getColumnsCount() + 1, columnPrefix)));
|
|
1840
|
+
} else if (newRange.startColumn > oldRange.startColumn) {
|
|
1841
|
+
const diff = newRange.startColumn - oldRange.startColumn;
|
|
1842
|
+
for (let i = diff - 1; i >= 0; i--) {
|
|
1843
|
+
const columnIndex = newRange.startColumn + i - oldRange.startColumn;
|
|
1844
|
+
table.removeColumn(columnIndex);
|
|
1845
|
+
}
|
|
1846
|
+
}
|
|
1847
|
+
if (newRange.endColumn < oldRange.endColumn) {
|
|
1848
|
+
const diff = oldRange.endColumn - newRange.endColumn;
|
|
1849
|
+
for (let i = diff - 1; i >= 0; i--) {
|
|
1850
|
+
const columnIndex = newRange.endColumn + i - oldRange.startColumn;
|
|
1851
|
+
table.removeColumn(columnIndex);
|
|
1852
|
+
}
|
|
1853
|
+
} else if (newRange.endColumn > oldRange.endColumn) {
|
|
1854
|
+
const diff = newRange.endColumn - oldRange.endColumn;
|
|
1855
|
+
for (let i = 0; i < diff; i++) table.insertColumn(oldRange.endColumn, new TableColumn((0, _univerjs_core.generateRandomId)(), getColumnName(table.getColumnsCount() + 1, "Column")));
|
|
1856
|
+
}
|
|
1857
|
+
table.setRange(newRange);
|
|
1858
|
+
this._tableRangeChanged$.next({
|
|
1859
|
+
unitId,
|
|
1860
|
+
subUnitId: table.getSubunitId(),
|
|
1861
|
+
tableId,
|
|
1862
|
+
range: newRange,
|
|
1863
|
+
oldRange
|
|
1864
|
+
});
|
|
1865
|
+
}
|
|
1866
|
+
setTableByConfig(unitId, tableId, config) {
|
|
1867
|
+
const unitMap = this._tableMap.get(unitId);
|
|
1868
|
+
const table = unitMap === null || unitMap === void 0 ? void 0 : unitMap.get(tableId);
|
|
1869
|
+
if (!table) return;
|
|
1870
|
+
const subUnitId = table.getSubunitId();
|
|
1871
|
+
const { name, updateRange, rowColOperation, theme, options } = config;
|
|
1872
|
+
if (name) {
|
|
1873
|
+
const oldTableName = table.getDisplayName();
|
|
1874
|
+
table.setDisplayName(name);
|
|
1875
|
+
this._tableNameChanged$.next({
|
|
1876
|
+
unitId,
|
|
1877
|
+
subUnitId,
|
|
1878
|
+
tableId,
|
|
1879
|
+
tableName: name,
|
|
1880
|
+
oldTableName
|
|
1881
|
+
});
|
|
1882
|
+
}
|
|
1883
|
+
if (rowColOperation) this.operationTableRowCol(unitId, tableId, rowColOperation);
|
|
1884
|
+
if (updateRange) this.updateTableRange(unitId, tableId, updateRange);
|
|
1885
|
+
if (theme) {
|
|
1886
|
+
var _table$getTableStyleI;
|
|
1887
|
+
const oldTheme = (_table$getTableStyleI = table.getTableStyleId()) !== null && _table$getTableStyleI !== void 0 ? _table$getTableStyleI : "default";
|
|
1888
|
+
table.setTableStyleId(theme);
|
|
1889
|
+
this._tableThemeChanged$.next({
|
|
1890
|
+
unitId,
|
|
1891
|
+
subUnitId,
|
|
1892
|
+
tableId,
|
|
1893
|
+
theme,
|
|
1894
|
+
oldTheme
|
|
1895
|
+
});
|
|
1896
|
+
}
|
|
1897
|
+
if (options) {
|
|
1898
|
+
if (options.showHeader !== void 0) table.setShowHeader(options.showHeader);
|
|
1899
|
+
}
|
|
1900
|
+
}
|
|
1901
|
+
toJSON(unitId) {
|
|
1902
|
+
const result = {};
|
|
1903
|
+
const unitMap = this._tableMap.get(unitId);
|
|
1904
|
+
if (unitMap) unitMap.forEach((table) => {
|
|
1905
|
+
const subUnitId = table.getSubunitId();
|
|
1906
|
+
if (!result[subUnitId]) {
|
|
1907
|
+
const tableFilteredOutRows = /* @__PURE__ */ new Set();
|
|
1908
|
+
this.getTablesBySubunitId(unitId, subUnitId).forEach((table) => {
|
|
1909
|
+
const tableFilteredRows = table.getTableFilters().getFilterOutRows();
|
|
1910
|
+
if (!tableFilteredRows) return;
|
|
1911
|
+
for (const row of tableFilteredRows) tableFilteredOutRows.add(row);
|
|
1912
|
+
});
|
|
1913
|
+
result[subUnitId] = {
|
|
1914
|
+
tables: [],
|
|
1915
|
+
tableFilteredOutRows: Array.from(tableFilteredOutRows)
|
|
1916
|
+
};
|
|
1917
|
+
}
|
|
1918
|
+
result[subUnitId].tables.push(table.toJSON());
|
|
1919
|
+
});
|
|
1920
|
+
return result;
|
|
1921
|
+
}
|
|
1922
|
+
fromJSON(unitId, data) {
|
|
1923
|
+
const unitMap = this._ensureUnit(unitId);
|
|
1924
|
+
Object.keys(data).forEach((subUnitId) => {
|
|
1925
|
+
const target = (0, _univerjs_sheets.getSheetCommandTarget)(this._univerInstanceService, {
|
|
1926
|
+
unitId,
|
|
1927
|
+
subUnitId
|
|
1928
|
+
});
|
|
1929
|
+
if (!target) return;
|
|
1930
|
+
const sheet = target.worksheet;
|
|
1931
|
+
let tables;
|
|
1932
|
+
if (data[subUnitId].tables) tables = data[subUnitId].tables;
|
|
1933
|
+
else if (Array.isArray(data[subUnitId])) tables = data[subUnitId];
|
|
1934
|
+
if (!tables) return;
|
|
1935
|
+
tables.forEach((table) => {
|
|
1936
|
+
const header = this.getColumnHeader(unitId, subUnitId, table.range);
|
|
1937
|
+
const tableInstance = new Table(table.id, table.name, table.range, header, table.options);
|
|
1938
|
+
tableInstance.setTableMeta(table.meta);
|
|
1939
|
+
if (table.columns.length) tableInstance.setColumns(table.columns);
|
|
1940
|
+
if (table.filters) {
|
|
1941
|
+
const tableFilter = tableInstance.getTableFilters();
|
|
1942
|
+
tableFilter.fromJSON(table.filters);
|
|
1943
|
+
tableFilter.doFilter(sheet, tableInstance.getTableFilterRange());
|
|
1944
|
+
}
|
|
1945
|
+
tableInstance.setSubunitId(subUnitId);
|
|
1946
|
+
unitMap.set(table.id, tableInstance);
|
|
1947
|
+
this._tableAdd$.next({
|
|
1948
|
+
unitId,
|
|
1949
|
+
subUnitId,
|
|
1950
|
+
range: table.range,
|
|
1951
|
+
tableName: table.name,
|
|
1952
|
+
tableId: table.id
|
|
1953
|
+
});
|
|
1954
|
+
});
|
|
1955
|
+
});
|
|
1956
|
+
this._tableInitStatus.next(true);
|
|
1957
|
+
}
|
|
1958
|
+
deleteUnitId(unitId) {
|
|
1959
|
+
const unitMap = this._tableMap.get(unitId);
|
|
1960
|
+
if (unitMap) unitMap.forEach((table) => table.dispose());
|
|
1961
|
+
this._tableMap.delete(unitId);
|
|
1962
|
+
}
|
|
1963
|
+
dispose() {
|
|
1964
|
+
super.dispose();
|
|
1965
|
+
this._tableAdd$.complete();
|
|
1966
|
+
this._tableDelete$.complete();
|
|
1967
|
+
this._tableNameChanged$.complete();
|
|
1968
|
+
this._tableRangeChanged$.complete();
|
|
1969
|
+
this._tableThemeChanged$.complete();
|
|
1970
|
+
this._tableFilterChanged$.complete();
|
|
1971
|
+
this._tableInitStatus.complete();
|
|
1972
|
+
this._tableMap.forEach((unitMap) => {
|
|
1973
|
+
unitMap.forEach((table) => table.dispose());
|
|
1974
|
+
unitMap.clear();
|
|
1975
|
+
});
|
|
1976
|
+
this._tableMap.clear();
|
|
1977
|
+
}
|
|
1978
|
+
};
|
|
1979
|
+
TableManager = __decorate([__decorateParam(0, _univerjs_core.IUniverInstanceService), __decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_core.LocaleService))], TableManager);
|
|
1980
|
+
|
|
1981
|
+
//#endregion
|
|
1982
|
+
//#region src/services/table-service.ts
|
|
1983
|
+
let SheetTableService = class SheetTableService extends _univerjs_core.Disposable {
|
|
1984
|
+
constructor(_tableManager) {
|
|
1985
|
+
super();
|
|
1986
|
+
this._tableManager = _tableManager;
|
|
1987
|
+
}
|
|
1988
|
+
getTableInfo(unitId, tableId) {
|
|
1989
|
+
const table = this._tableManager.getTable(unitId, tableId);
|
|
1990
|
+
if (!table) return;
|
|
1991
|
+
return {
|
|
1992
|
+
unitId,
|
|
1993
|
+
...table.getTableInfo()
|
|
1994
|
+
};
|
|
1995
|
+
}
|
|
1996
|
+
getTableList(unitId) {
|
|
1997
|
+
return this._tableManager.getTableList(unitId);
|
|
1998
|
+
}
|
|
1999
|
+
addTable(unitId, subUnitId, tableName, rangeInfo, tableHeader, tableId, options) {
|
|
2000
|
+
return this._tableManager.addTable(unitId, subUnitId, tableName, rangeInfo, tableHeader, tableId, options);
|
|
2001
|
+
}
|
|
2002
|
+
deleteTable(unitId, subUnitId, tableId) {
|
|
2003
|
+
this._tableManager.deleteTable(unitId, tableId);
|
|
2004
|
+
}
|
|
2005
|
+
getTableMeta(unitId, tableId) {
|
|
2006
|
+
var _this$_tableManager$g;
|
|
2007
|
+
return (_this$_tableManager$g = this._tableManager.getTable(unitId, tableId)) === null || _this$_tableManager$g === void 0 ? void 0 : _this$_tableManager$g.getTableMeta();
|
|
2008
|
+
}
|
|
2009
|
+
setTableMeta(unitId, tableId, meta) {
|
|
2010
|
+
var _this$_tableManager$g2;
|
|
2011
|
+
(_this$_tableManager$g2 = this._tableManager.getTable(unitId, tableId)) === null || _this$_tableManager$g2 === void 0 || _this$_tableManager$g2.setTableMeta(meta);
|
|
2012
|
+
}
|
|
2013
|
+
getTableColumnMeta(unitId, tableId, index) {
|
|
2014
|
+
var _this$_tableManager$g3;
|
|
2015
|
+
return (_this$_tableManager$g3 = this._tableManager.getTable(unitId, tableId)) === null || _this$_tableManager$g3 === void 0 || (_this$_tableManager$g3 = _this$_tableManager$g3.getTableColumnByIndex(index)) === null || _this$_tableManager$g3 === void 0 ? void 0 : _this$_tableManager$g3.getMeta();
|
|
2016
|
+
}
|
|
2017
|
+
selTableColumnMeta(unitId, tableId, index, meta) {
|
|
2018
|
+
var _this$_tableManager$g4;
|
|
2019
|
+
(_this$_tableManager$g4 = this._tableManager.getTable(unitId, tableId)) === null || _this$_tableManager$g4 === void 0 || (_this$_tableManager$g4 = _this$_tableManager$g4.getTableColumnByIndex(index)) === null || _this$_tableManager$g4 === void 0 || _this$_tableManager$g4.setMeta(meta);
|
|
2020
|
+
}
|
|
2021
|
+
addFilter(unitId, tableId, column, filter) {
|
|
2022
|
+
this._tableManager.addFilter(unitId, tableId, column, filter);
|
|
2023
|
+
}
|
|
2024
|
+
getCellValueWithConditionType(sheet, row, col, conditionType = TableConditionTypeEnum.String) {
|
|
2025
|
+
return getCellValueWithConditionType(sheet, row, col, conditionType);
|
|
2026
|
+
}
|
|
2027
|
+
};
|
|
2028
|
+
SheetTableService = __decorate([__decorateParam(0, (0, _univerjs_core.Inject)(TableManager))], SheetTableService);
|
|
2029
|
+
|
|
2030
|
+
//#endregion
|
|
2031
|
+
//#region src/commands/mutations/add-sheet-table.mutation.ts
|
|
2032
|
+
const AddSheetTableMutation = {
|
|
2033
|
+
id: "sheet.mutation.add-table",
|
|
2034
|
+
type: _univerjs_core.CommandType.MUTATION,
|
|
2035
|
+
handler: (accessor, params) => {
|
|
2036
|
+
const { tableId, unitId, subUnitId, name, range, header, options } = params;
|
|
2037
|
+
accessor.get(SheetTableService).addTable(unitId, subUnitId, name, range, header, tableId, options);
|
|
2038
|
+
return true;
|
|
2039
|
+
}
|
|
2040
|
+
};
|
|
2041
|
+
|
|
2042
|
+
//#endregion
|
|
2043
|
+
//#region src/commands/mutations/delete-sheet-table.mutation.ts
|
|
2044
|
+
const DeleteSheetTableMutation = {
|
|
2045
|
+
id: "sheet.mutation.delete-table",
|
|
2046
|
+
type: _univerjs_core.CommandType.MUTATION,
|
|
2047
|
+
handler: (accessor, params) => {
|
|
2048
|
+
const { unitId, subUnitId, tableId } = params;
|
|
2049
|
+
accessor.get(SheetTableService).deleteTable(unitId, subUnitId, tableId);
|
|
2050
|
+
return true;
|
|
2051
|
+
}
|
|
2052
|
+
};
|
|
2053
|
+
|
|
2054
|
+
//#endregion
|
|
2055
|
+
//#region src/commands/commands/add-sheet-table.command.ts
|
|
2056
|
+
const AddSheetTableCommand = {
|
|
2057
|
+
id: "sheet.command.add-table",
|
|
2058
|
+
type: _univerjs_core.CommandType.COMMAND,
|
|
2059
|
+
handler: (accessor, params) => {
|
|
2060
|
+
var _params$id;
|
|
2061
|
+
if (!params) return false;
|
|
2062
|
+
const undoRedoService = accessor.get(_univerjs_core.IUndoRedoService);
|
|
2063
|
+
const commandService = accessor.get(_univerjs_core.ICommandService);
|
|
2064
|
+
const localeService = accessor.get(_univerjs_core.LocaleService);
|
|
2065
|
+
const tableManager = accessor.get(TableManager);
|
|
2066
|
+
const tableId = (_params$id = params.id) !== null && _params$id !== void 0 ? _params$id : (0, _univerjs_core.generateRandomId)();
|
|
2067
|
+
const existingNamesSet = getExistingNamesSet(params.unitId, {
|
|
2068
|
+
univerInstanceService: accessor.get(_univerjs_core.IUniverInstanceService),
|
|
2069
|
+
tableManager,
|
|
2070
|
+
definedNamesService: accessor.get(_univerjs_engine_formula.IDefinedNamesService)
|
|
2071
|
+
});
|
|
2072
|
+
let tableName = params.name;
|
|
2073
|
+
if (!tableName || !(0, _univerjs_core.customNameCharacterCheck)(tableName.toLowerCase(), existingNamesSet)) {
|
|
2074
|
+
const prefix = localeService.t("sheets-table.tablePrefix");
|
|
2075
|
+
let index = tableManager.getTableList(params.unitId).length + 1;
|
|
2076
|
+
for (const name of existingNamesSet) if (name.startsWith(prefix.toLowerCase())) {
|
|
2077
|
+
const n = Number(name.slice(prefix.length));
|
|
2078
|
+
if (Number.isInteger(n) && n >= index) index = n + 1;
|
|
2079
|
+
}
|
|
2080
|
+
tableName = `${prefix}${index}`;
|
|
2081
|
+
}
|
|
2082
|
+
const redos = [];
|
|
2083
|
+
const undos = [];
|
|
2084
|
+
const { unitId, subUnitId, range } = params;
|
|
2085
|
+
const header = tableManager.getColumnHeader(unitId, subUnitId, range, localeService.t("sheets-table.columnPrefix"));
|
|
2086
|
+
redos.push({
|
|
2087
|
+
id: AddSheetTableMutation.id,
|
|
2088
|
+
params: {
|
|
2089
|
+
...params,
|
|
2090
|
+
tableId,
|
|
2091
|
+
name: tableName,
|
|
2092
|
+
header
|
|
2093
|
+
}
|
|
2094
|
+
});
|
|
2095
|
+
undos.push({
|
|
2096
|
+
id: DeleteSheetTableMutation.id,
|
|
2097
|
+
params: {
|
|
2098
|
+
tableId,
|
|
2099
|
+
unitId: params.unitId
|
|
2100
|
+
}
|
|
2101
|
+
});
|
|
2102
|
+
if ((0, _univerjs_core.sequenceExecute)(redos, commandService)) undoRedoService.pushUndoRedo({
|
|
2103
|
+
unitID: params.unitId,
|
|
2104
|
+
undoMutations: undos,
|
|
2105
|
+
redoMutations: redos
|
|
2106
|
+
});
|
|
2107
|
+
return true;
|
|
2108
|
+
}
|
|
2109
|
+
};
|
|
2110
|
+
|
|
2111
|
+
//#endregion
|
|
2112
|
+
//#region src/commands/mutations/set-sheet-table.mutation.ts
|
|
2113
|
+
const SetSheetTableMutation = {
|
|
2114
|
+
id: "sheet.mutation.set-sheet-table",
|
|
2115
|
+
type: _univerjs_core.CommandType.MUTATION,
|
|
2116
|
+
handler: (accessor, params) => {
|
|
2117
|
+
if (!params) return false;
|
|
2118
|
+
const { unitId, tableId, config } = params;
|
|
2119
|
+
accessor.get(TableManager).setTableByConfig(unitId, tableId, config);
|
|
2120
|
+
return true;
|
|
2121
|
+
}
|
|
2122
|
+
};
|
|
2123
|
+
|
|
2124
|
+
//#endregion
|
|
2125
|
+
//#region src/commands/commands/add-table-theme.command.ts
|
|
2126
|
+
const AddTableThemeCommand = {
|
|
2127
|
+
id: "sheet.command.add-table-theme",
|
|
2128
|
+
type: _univerjs_core.CommandType.COMMAND,
|
|
2129
|
+
handler: (accessor, params) => {
|
|
2130
|
+
if (!params) return false;
|
|
2131
|
+
const tableManager = accessor.get(TableManager);
|
|
2132
|
+
const { unitId, tableId, themeStyle } = params;
|
|
2133
|
+
const redos = [];
|
|
2134
|
+
const undos = [];
|
|
2135
|
+
const table = tableManager.getTableById(unitId, tableId);
|
|
2136
|
+
if (!table) return false;
|
|
2137
|
+
const subUnitId = table.getSubunitId();
|
|
2138
|
+
redos.push({
|
|
2139
|
+
id: _univerjs_sheets.AddRangeThemeMutation.id,
|
|
2140
|
+
params: {
|
|
2141
|
+
unitId,
|
|
2142
|
+
subUnitId,
|
|
2143
|
+
styleJSON: themeStyle.toJson()
|
|
2144
|
+
}
|
|
2145
|
+
});
|
|
2146
|
+
redos.push({
|
|
2147
|
+
id: SetSheetTableMutation.id,
|
|
2148
|
+
params: {
|
|
2149
|
+
unitId,
|
|
2150
|
+
subUnitId,
|
|
2151
|
+
tableId,
|
|
2152
|
+
config: { theme: themeStyle.getName() }
|
|
2153
|
+
}
|
|
2154
|
+
});
|
|
2155
|
+
undos.push({
|
|
2156
|
+
id: SetSheetTableMutation.id,
|
|
2157
|
+
params: {
|
|
2158
|
+
unitId,
|
|
2159
|
+
subUnitId,
|
|
2160
|
+
tableId,
|
|
2161
|
+
config: { themeStyle: table.getTableStyleId() }
|
|
2162
|
+
}
|
|
2163
|
+
});
|
|
2164
|
+
undos.push({
|
|
2165
|
+
id: _univerjs_sheets.RemoveRangeThemeMutation.id,
|
|
2166
|
+
params: {
|
|
2167
|
+
unitId,
|
|
2168
|
+
subUnitId,
|
|
2169
|
+
styleName: themeStyle.getName()
|
|
2170
|
+
}
|
|
2171
|
+
});
|
|
2172
|
+
if ((0, _univerjs_core.sequenceExecute)(redos, accessor.get(_univerjs_core.ICommandService))) accessor.get(_univerjs_core.IUndoRedoService).pushUndoRedo({
|
|
2173
|
+
unitID: unitId,
|
|
2174
|
+
undoMutations: undos,
|
|
2175
|
+
redoMutations: redos
|
|
2176
|
+
});
|
|
2177
|
+
return true;
|
|
2178
|
+
}
|
|
2179
|
+
};
|
|
2180
|
+
|
|
2181
|
+
//#endregion
|
|
2182
|
+
//#region src/commands/commands/delete-sheet-table.command.ts
|
|
2183
|
+
const DeleteSheetTableCommand = {
|
|
2184
|
+
id: "sheet.command.delete-table",
|
|
2185
|
+
type: _univerjs_core.CommandType.COMMAND,
|
|
2186
|
+
handler: (accessor, params) => {
|
|
2187
|
+
if (!params) return false;
|
|
2188
|
+
const undoRedoService = accessor.get(_univerjs_core.IUndoRedoService);
|
|
2189
|
+
const commandService = accessor.get(_univerjs_core.ICommandService);
|
|
2190
|
+
const sheetTableManager = accessor.get(TableManager);
|
|
2191
|
+
const logService = accessor.get(_univerjs_core.ILogService);
|
|
2192
|
+
const redos = [];
|
|
2193
|
+
const undos = [];
|
|
2194
|
+
const tableInstance = sheetTableManager.getTable(params.unitId, params.tableId);
|
|
2195
|
+
const tableConfig = tableInstance === null || tableInstance === void 0 ? void 0 : tableInstance.toJSON();
|
|
2196
|
+
if (!tableConfig) {
|
|
2197
|
+
logService.error("[TableManager]: Table not found");
|
|
2198
|
+
return false;
|
|
2199
|
+
}
|
|
2200
|
+
redos.push({
|
|
2201
|
+
id: DeleteSheetTableMutation.id,
|
|
2202
|
+
params: { ...params }
|
|
2203
|
+
});
|
|
2204
|
+
undos.push({
|
|
2205
|
+
id: AddSheetTableMutation.id,
|
|
2206
|
+
params: {
|
|
2207
|
+
unitId: params.unitId,
|
|
2208
|
+
subUnitId: params.subUnitId,
|
|
2209
|
+
tableId: params.tableId,
|
|
2210
|
+
name: tableConfig.name,
|
|
2211
|
+
range: tableConfig.range,
|
|
2212
|
+
options: tableConfig.options
|
|
2213
|
+
}
|
|
2214
|
+
});
|
|
2215
|
+
if ((0, _univerjs_core.sequenceExecute)(redos, commandService)) undoRedoService.pushUndoRedo({
|
|
2216
|
+
unitID: params.unitId,
|
|
2217
|
+
undoMutations: undos,
|
|
2218
|
+
redoMutations: redos
|
|
2219
|
+
});
|
|
2220
|
+
return true;
|
|
2221
|
+
}
|
|
2222
|
+
};
|
|
2223
|
+
|
|
2224
|
+
//#endregion
|
|
2225
|
+
//#region src/const.ts
|
|
2226
|
+
/**
|
|
2227
|
+
* Copyright 2023-present DreamNum Co., Ltd.
|
|
2228
|
+
*
|
|
2229
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
2230
|
+
* you may not use this file except in compliance with the License.
|
|
2231
|
+
* You may obtain a copy of the License at
|
|
2232
|
+
*
|
|
2233
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
2234
|
+
*
|
|
2235
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2236
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
2237
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2238
|
+
* See the License for the specific language governing permissions and
|
|
2239
|
+
* limitations under the License.
|
|
2240
|
+
*/
|
|
2241
|
+
const PLUGIN_NAME = "SHEET_TABLE_PLUGIN";
|
|
2242
|
+
const FEATURE_TABLE_ID = "SHEET_TABLE";
|
|
2243
|
+
const SHEET_TABLE_CUSTOM_THEME_PREFIX = "table-custom";
|
|
2244
|
+
|
|
2245
|
+
//#endregion
|
|
2246
|
+
//#region src/commands/commands/remove-table-theme.command.ts
|
|
2247
|
+
const RemoveTableThemeCommand = {
|
|
2248
|
+
id: "sheet.command.remove-table-theme",
|
|
2249
|
+
type: _univerjs_core.CommandType.COMMAND,
|
|
2250
|
+
handler: (accessor, params) => {
|
|
2251
|
+
if (!params) return false;
|
|
2252
|
+
const { unitId, tableId, themeName } = params;
|
|
2253
|
+
const tableManager = accessor.get(TableManager);
|
|
2254
|
+
const rangeThemeModel = accessor.get(_univerjs_sheets.SheetRangeThemeModel);
|
|
2255
|
+
const table = tableManager.getTableById(unitId, tableId);
|
|
2256
|
+
if (!table) return false;
|
|
2257
|
+
const subUnitId = table.getSubunitId();
|
|
2258
|
+
const redos = [];
|
|
2259
|
+
const undos = [];
|
|
2260
|
+
const defaultRangeThemes = rangeThemeModel.getRegisteredRangeThemes().filter((item) => item === null || item === void 0 ? void 0 : item.startsWith("table-default"));
|
|
2261
|
+
let shouldBeSelectedTheme = rangeThemeModel.getRegisteredRangeThemes().filter((item) => item === null || item === void 0 ? void 0 : item.startsWith(SHEET_TABLE_CUSTOM_THEME_PREFIX)).find((item) => item !== themeName);
|
|
2262
|
+
if (!shouldBeSelectedTheme) shouldBeSelectedTheme = defaultRangeThemes[0];
|
|
2263
|
+
redos.push({
|
|
2264
|
+
id: SetSheetTableMutation.id,
|
|
2265
|
+
params: {
|
|
2266
|
+
unitId,
|
|
2267
|
+
subUnitId,
|
|
2268
|
+
tableId,
|
|
2269
|
+
config: { theme: shouldBeSelectedTheme }
|
|
2270
|
+
}
|
|
2271
|
+
});
|
|
2272
|
+
redos.push({
|
|
2273
|
+
id: _univerjs_sheets.RemoveRangeThemeMutation.id,
|
|
2274
|
+
params: {
|
|
2275
|
+
unitId,
|
|
2276
|
+
subUnitId,
|
|
2277
|
+
styleName: themeName
|
|
2278
|
+
}
|
|
2279
|
+
});
|
|
2280
|
+
const themeStyle = rangeThemeModel.getDefaultRangeThemeStyle(themeName);
|
|
2281
|
+
if (themeStyle) {
|
|
2282
|
+
undos.push({
|
|
2283
|
+
id: _univerjs_sheets.AddRangeThemeMutation.id,
|
|
2284
|
+
params: {
|
|
2285
|
+
unitId,
|
|
2286
|
+
subUnitId,
|
|
2287
|
+
styleJSON: themeStyle.toJson()
|
|
2288
|
+
}
|
|
2289
|
+
});
|
|
2290
|
+
undos.push({
|
|
2291
|
+
id: SetSheetTableMutation.id,
|
|
2292
|
+
params: {
|
|
2293
|
+
unitId,
|
|
2294
|
+
subUnitId,
|
|
2295
|
+
tableId,
|
|
2296
|
+
config: { theme: themeName }
|
|
2297
|
+
}
|
|
2298
|
+
});
|
|
2299
|
+
}
|
|
2300
|
+
if ((0, _univerjs_core.sequenceExecute)(redos, accessor.get(_univerjs_core.ICommandService))) accessor.get(_univerjs_core.IUndoRedoService).pushUndoRedo({
|
|
2301
|
+
unitID: unitId,
|
|
2302
|
+
redoMutations: redos,
|
|
2303
|
+
undoMutations: undos
|
|
2304
|
+
});
|
|
2305
|
+
return true;
|
|
2306
|
+
}
|
|
2307
|
+
};
|
|
2308
|
+
|
|
2309
|
+
//#endregion
|
|
2310
|
+
//#region src/commands/commands/set-sheet-table.command.ts
|
|
2311
|
+
const SetSheetTableCommand = {
|
|
2312
|
+
id: "sheet.command.set-table-config",
|
|
2313
|
+
type: _univerjs_core.CommandType.COMMAND,
|
|
2314
|
+
handler: (accessor, params) => {
|
|
2315
|
+
if (!params) return false;
|
|
2316
|
+
const { unitId, tableId, name, updateRange, rowColOperation, theme } = params;
|
|
2317
|
+
const tableManager = accessor.get(TableManager);
|
|
2318
|
+
const table = tableManager.getTableById(unitId, tableId);
|
|
2319
|
+
if (!table) return false;
|
|
2320
|
+
const oldTableConfig = {};
|
|
2321
|
+
const newTableConfig = {};
|
|
2322
|
+
const localeService = accessor.get(_univerjs_core.LocaleService);
|
|
2323
|
+
const existingNamesSet = getExistingNamesSet(unitId, {
|
|
2324
|
+
univerInstanceService: accessor.get(_univerjs_core.IUniverInstanceService),
|
|
2325
|
+
tableManager,
|
|
2326
|
+
definedNamesService: accessor.get(_univerjs_engine_formula.IDefinedNamesService)
|
|
2327
|
+
});
|
|
2328
|
+
if (name) {
|
|
2329
|
+
if (!(0, _univerjs_core.customNameCharacterCheck)(name.toLowerCase(), existingNamesSet)) {
|
|
2330
|
+
accessor.get(_univerjs_core.ILogService).warn(localeService.t("sheets-table.tableNameError"));
|
|
2331
|
+
return false;
|
|
2332
|
+
}
|
|
2333
|
+
oldTableConfig.name = table.getDisplayName();
|
|
2334
|
+
newTableConfig.name = name;
|
|
2335
|
+
}
|
|
2336
|
+
if (rowColOperation) {
|
|
2337
|
+
oldTableConfig.rowColOperation = {
|
|
2338
|
+
operationType: rowColOperation.operationType === IRangeOperationTypeEnum.Insert ? IRangeOperationTypeEnum.Delete : IRangeOperationTypeEnum.Insert,
|
|
2339
|
+
rowColType: rowColOperation.rowColType,
|
|
2340
|
+
index: rowColOperation.index,
|
|
2341
|
+
count: rowColOperation.count
|
|
2342
|
+
};
|
|
2343
|
+
newTableConfig.rowColOperation = rowColOperation;
|
|
2344
|
+
}
|
|
2345
|
+
if (updateRange) {
|
|
2346
|
+
oldTableConfig.updateRange = { newRange: table.getRange() };
|
|
2347
|
+
newTableConfig.updateRange = updateRange;
|
|
2348
|
+
}
|
|
2349
|
+
if (theme) {
|
|
2350
|
+
oldTableConfig.theme = table.getTableStyleId();
|
|
2351
|
+
newTableConfig.theme = theme;
|
|
2352
|
+
}
|
|
2353
|
+
const redoParams = {
|
|
2354
|
+
unitId,
|
|
2355
|
+
subUnitId: table.getSubunitId(),
|
|
2356
|
+
tableId,
|
|
2357
|
+
config: newTableConfig
|
|
2358
|
+
};
|
|
2359
|
+
accessor.get(_univerjs_core.ICommandService).executeCommand(SetSheetTableMutation.id, redoParams);
|
|
2360
|
+
accessor.get(_univerjs_core.IUndoRedoService).pushUndoRedo({
|
|
2361
|
+
unitID: unitId,
|
|
2362
|
+
undoMutations: [{
|
|
2363
|
+
id: SetSheetTableMutation.id,
|
|
2364
|
+
params: {
|
|
2365
|
+
unitId,
|
|
2366
|
+
subUnitId: table.getSubunitId(),
|
|
2367
|
+
tableId,
|
|
2368
|
+
config: oldTableConfig
|
|
2369
|
+
}
|
|
2370
|
+
}],
|
|
2371
|
+
redoMutations: [{
|
|
2372
|
+
id: SetSheetTableMutation.id,
|
|
2373
|
+
params: redoParams
|
|
2374
|
+
}]
|
|
2375
|
+
});
|
|
2376
|
+
return true;
|
|
2377
|
+
}
|
|
2378
|
+
};
|
|
2379
|
+
|
|
2380
|
+
//#endregion
|
|
2381
|
+
//#region src/commands/mutations/set-table-filter.mutation.ts
|
|
2382
|
+
const SetSheetTableFilterMutation = {
|
|
2383
|
+
id: "sheet.mutation.set-table-filter",
|
|
2384
|
+
type: _univerjs_core.CommandType.MUTATION,
|
|
2385
|
+
handler: (accessor, params) => {
|
|
2386
|
+
const { tableId, unitId, column, tableFilter } = params;
|
|
2387
|
+
accessor.get(TableManager).addFilter(unitId, tableId, column, tableFilter);
|
|
2388
|
+
return true;
|
|
2389
|
+
}
|
|
2390
|
+
};
|
|
2391
|
+
|
|
2392
|
+
//#endregion
|
|
2393
|
+
//#region src/commands/commands/set-table-filter.command.ts
|
|
2394
|
+
const SetSheetTableFilterCommand = {
|
|
2395
|
+
id: "sheet.command.set-table-filter",
|
|
2396
|
+
type: _univerjs_core.CommandType.COMMAND,
|
|
2397
|
+
handler: (accessor, params) => {
|
|
2398
|
+
if (!params) return false;
|
|
2399
|
+
const undoRedoService = accessor.get(_univerjs_core.IUndoRedoService);
|
|
2400
|
+
const commandService = accessor.get(_univerjs_core.ICommandService);
|
|
2401
|
+
const tableId = params.tableId || (0, _univerjs_core.generateRandomId)();
|
|
2402
|
+
const redos = [];
|
|
2403
|
+
const undos = [];
|
|
2404
|
+
redos.push({
|
|
2405
|
+
id: SetSheetTableFilterMutation.id,
|
|
2406
|
+
params: {
|
|
2407
|
+
...params,
|
|
2408
|
+
tableId
|
|
2409
|
+
}
|
|
2410
|
+
});
|
|
2411
|
+
undos.push({
|
|
2412
|
+
id: SetSheetTableFilterMutation.id,
|
|
2413
|
+
params: {
|
|
2414
|
+
...params,
|
|
2415
|
+
tableId,
|
|
2416
|
+
tableFilter: void 0
|
|
2417
|
+
}
|
|
2418
|
+
});
|
|
2419
|
+
if ((0, _univerjs_core.sequenceExecute)(redos, commandService)) undoRedoService.pushUndoRedo({
|
|
2420
|
+
unitID: params.unitId,
|
|
2421
|
+
undoMutations: undos,
|
|
2422
|
+
redoMutations: redos
|
|
2423
|
+
});
|
|
2424
|
+
return true;
|
|
2425
|
+
}
|
|
2426
|
+
};
|
|
2427
|
+
|
|
2428
|
+
//#endregion
|
|
2429
|
+
//#region src/controllers/sheets-table.controller.ts
|
|
2430
|
+
let SheetsTableController = class SheetsTableController extends _univerjs_core.Disposable {
|
|
2431
|
+
constructor(_univerInstanceService, _sheetInterceptorService, _tableManager, _resourceManagerService) {
|
|
2432
|
+
super();
|
|
2433
|
+
this._univerInstanceService = _univerInstanceService;
|
|
2434
|
+
this._sheetInterceptorService = _sheetInterceptorService;
|
|
2435
|
+
this._tableManager = _tableManager;
|
|
2436
|
+
this._resourceManagerService = _resourceManagerService;
|
|
2437
|
+
_defineProperty(this, "_tableRangeRTree", /* @__PURE__ */ new Map());
|
|
2438
|
+
this._initSnapshot();
|
|
2439
|
+
this._initSheetChange();
|
|
2440
|
+
this.registerTableChangeEvent();
|
|
2441
|
+
this.registerTableHeaderInterceptor();
|
|
2442
|
+
}
|
|
2443
|
+
getContainerTableWithRange(unitId, subUnitId, range) {
|
|
2444
|
+
const rTree = this._ensureTableRangeRTree(unitId);
|
|
2445
|
+
const wrapperTableId = Array.from(rTree.bulkSearch([{
|
|
2446
|
+
unitId,
|
|
2447
|
+
sheetId: subUnitId,
|
|
2448
|
+
range
|
|
2449
|
+
}])).find((id) => {
|
|
2450
|
+
const table = this._tableManager.getTable(unitId, String(id));
|
|
2451
|
+
if (table) return _univerjs_core.Rectangle.contains(table.getRange(), range);
|
|
2452
|
+
return false;
|
|
2453
|
+
});
|
|
2454
|
+
if (wrapperTableId) return this._tableManager.getTable(unitId, String(wrapperTableId));
|
|
2455
|
+
}
|
|
2456
|
+
_ensureTableRangeRTree(unitId) {
|
|
2457
|
+
if (!this._tableRangeRTree.has(unitId)) this._tableRangeRTree.set(unitId, new _univerjs_core.RTree());
|
|
2458
|
+
return this._tableRangeRTree.get(unitId);
|
|
2459
|
+
}
|
|
2460
|
+
registerTableChangeEvent() {
|
|
2461
|
+
this.disposeWithMe(this._tableManager.tableAdd$.subscribe((event) => {
|
|
2462
|
+
const { range, tableId, unitId, subUnitId } = event;
|
|
2463
|
+
this._ensureTableRangeRTree(unitId).insert({
|
|
2464
|
+
unitId,
|
|
2465
|
+
sheetId: subUnitId,
|
|
2466
|
+
id: tableId,
|
|
2467
|
+
range: { ...range }
|
|
2468
|
+
});
|
|
2469
|
+
}));
|
|
2470
|
+
this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe((event) => {
|
|
2471
|
+
const { range, tableId, unitId, subUnitId, oldRange } = event;
|
|
2472
|
+
const rTree = this._ensureTableRangeRTree(unitId);
|
|
2473
|
+
rTree.remove({
|
|
2474
|
+
unitId,
|
|
2475
|
+
sheetId: subUnitId,
|
|
2476
|
+
id: tableId,
|
|
2477
|
+
range: { ...oldRange }
|
|
2478
|
+
});
|
|
2479
|
+
rTree.insert({
|
|
2480
|
+
unitId,
|
|
2481
|
+
sheetId: subUnitId,
|
|
2482
|
+
id: tableId,
|
|
2483
|
+
range: { ...range }
|
|
2484
|
+
});
|
|
2485
|
+
}));
|
|
2486
|
+
this.disposeWithMe(this._tableManager.tableDelete$.subscribe((event) => {
|
|
2487
|
+
const { tableId, unitId, subUnitId, range } = event;
|
|
2488
|
+
this._ensureTableRangeRTree(unitId).remove({
|
|
2489
|
+
unitId,
|
|
2490
|
+
sheetId: subUnitId,
|
|
2491
|
+
id: tableId,
|
|
2492
|
+
range: { ...range }
|
|
2493
|
+
});
|
|
2494
|
+
}));
|
|
2495
|
+
}
|
|
2496
|
+
registerTableHeaderInterceptor() {
|
|
2497
|
+
this.disposeWithMe(this._sheetInterceptorService.intercept(_univerjs_sheets.INTERCEPTOR_POINT.CELL_CONTENT, {
|
|
2498
|
+
effect: _univerjs_core.InterceptorEffectEnum.Value,
|
|
2499
|
+
handler: (cell, context, next) => {
|
|
2500
|
+
const { row, col, unitId, subUnitId } = context;
|
|
2501
|
+
const rTree = this._ensureTableRangeRTree(unitId);
|
|
2502
|
+
if ((cell === null || cell === void 0 ? void 0 : cell.v) === void 0 && rTree) {
|
|
2503
|
+
const ids = Array.from(rTree.bulkSearch([{
|
|
2504
|
+
unitId,
|
|
2505
|
+
sheetId: subUnitId,
|
|
2506
|
+
range: {
|
|
2507
|
+
startColumn: col,
|
|
2508
|
+
endColumn: col,
|
|
2509
|
+
startRow: row,
|
|
2510
|
+
endRow: row
|
|
2511
|
+
}
|
|
2512
|
+
}]));
|
|
2513
|
+
if (ids.length > 0) {
|
|
2514
|
+
const table = this._tableManager.getTable(unitId, ids[0]);
|
|
2515
|
+
if (table) {
|
|
2516
|
+
const tableRange = table.getRange();
|
|
2517
|
+
const index = col - tableRange.startColumn;
|
|
2518
|
+
if (tableRange.startRow === row) {
|
|
2519
|
+
const columnName = table.getColumnNameByIndex(index);
|
|
2520
|
+
if (!cell || cell === context.rawData) cell = { ...context.rawData };
|
|
2521
|
+
cell.v = columnName;
|
|
2522
|
+
return next(cell);
|
|
2523
|
+
}
|
|
2524
|
+
}
|
|
2525
|
+
}
|
|
2526
|
+
}
|
|
2527
|
+
return next(cell);
|
|
2528
|
+
}
|
|
2529
|
+
}));
|
|
2530
|
+
}
|
|
2531
|
+
_toJson(unitId) {
|
|
2532
|
+
return this._tableManager.toJSON(unitId);
|
|
2533
|
+
}
|
|
2534
|
+
_fromJSON(unitId, resources) {
|
|
2535
|
+
return this._tableManager.fromJSON(unitId, resources);
|
|
2536
|
+
}
|
|
2537
|
+
_deleteUnitId(unitId) {
|
|
2538
|
+
this._tableManager.deleteUnitId(unitId);
|
|
2539
|
+
}
|
|
2540
|
+
_initSnapshot() {
|
|
2541
|
+
this.disposeWithMe(this._resourceManagerService.registerPluginResource({
|
|
2542
|
+
toJson: (unitId) => {
|
|
2543
|
+
return JSON.stringify(this._toJson(unitId));
|
|
2544
|
+
},
|
|
2545
|
+
parseJson: (json) => {
|
|
2546
|
+
if (!json) return {};
|
|
2547
|
+
try {
|
|
2548
|
+
return JSON.parse(json);
|
|
2549
|
+
} catch (error) {
|
|
2550
|
+
return {};
|
|
2551
|
+
}
|
|
2552
|
+
},
|
|
2553
|
+
businesses: [_univerjs_core.UniverInstanceType.UNIVER_SHEET],
|
|
2554
|
+
pluginName: PLUGIN_NAME,
|
|
2555
|
+
onLoad: (unitId, resources) => {
|
|
2556
|
+
this._fromJSON(unitId, resources);
|
|
2557
|
+
},
|
|
2558
|
+
onUnLoad: (unitId) => {
|
|
2559
|
+
this._deleteUnitId(unitId);
|
|
2560
|
+
}
|
|
2561
|
+
}));
|
|
2562
|
+
}
|
|
2563
|
+
_initSheetChange() {
|
|
2564
|
+
this.disposeWithMe(this._sheetInterceptorService.interceptCommand({ getMutations: (commandInfo) => {
|
|
2565
|
+
if (commandInfo.id === _univerjs_sheets.RemoveSheetCommand.id) {
|
|
2566
|
+
var _getActiveSheet;
|
|
2567
|
+
const params = commandInfo.params;
|
|
2568
|
+
const unitId = params.unitId || this._univerInstanceService.getCurrentUnitOfType(_univerjs_core.UniverInstanceType.UNIVER_SHEET).getUnitId();
|
|
2569
|
+
const subUnitId = params.subUnitId || ((_getActiveSheet = this._univerInstanceService.getCurrentUnitOfType(_univerjs_core.UniverInstanceType.UNIVER_SHEET).getActiveSheet()) === null || _getActiveSheet === void 0 ? void 0 : _getActiveSheet.getSheetId());
|
|
2570
|
+
if (!unitId || !subUnitId) return {
|
|
2571
|
+
redos: [],
|
|
2572
|
+
undos: []
|
|
2573
|
+
};
|
|
2574
|
+
const tables = this._tableManager.getTablesBySubunitId(unitId, subUnitId);
|
|
2575
|
+
if (tables.length === 0) return {
|
|
2576
|
+
redos: [],
|
|
2577
|
+
undos: []
|
|
2578
|
+
};
|
|
2579
|
+
const redos = [];
|
|
2580
|
+
const undos = [];
|
|
2581
|
+
tables.forEach((table) => {
|
|
2582
|
+
const tableJson = table.toJSON();
|
|
2583
|
+
redos.push({
|
|
2584
|
+
id: DeleteSheetTableMutation.id,
|
|
2585
|
+
params: {
|
|
2586
|
+
unitId,
|
|
2587
|
+
subUnitId,
|
|
2588
|
+
tableId: tableJson.id
|
|
2589
|
+
}
|
|
2590
|
+
});
|
|
2591
|
+
undos.push({
|
|
2592
|
+
id: AddSheetTableMutation.id,
|
|
2593
|
+
params: {
|
|
2594
|
+
unitId,
|
|
2595
|
+
subUnitId,
|
|
2596
|
+
name: tableJson.name,
|
|
2597
|
+
range: tableJson.range,
|
|
2598
|
+
tableId: tableJson.id,
|
|
2599
|
+
options: {
|
|
2600
|
+
...tableJson.options,
|
|
2601
|
+
columns: tableJson.columns,
|
|
2602
|
+
filters: tableJson.filters.tableColumnFilterList
|
|
2603
|
+
}
|
|
2604
|
+
}
|
|
2605
|
+
});
|
|
2606
|
+
});
|
|
2607
|
+
return {
|
|
2608
|
+
redos,
|
|
2609
|
+
undos
|
|
2610
|
+
};
|
|
2611
|
+
} else if (commandInfo.id === _univerjs_sheets.CopySheetCommand.id) {
|
|
2612
|
+
const { unitId, subUnitId, targetSubUnitId } = commandInfo.params;
|
|
2613
|
+
if (!unitId || !subUnitId || !targetSubUnitId) return {
|
|
2614
|
+
redos: [],
|
|
2615
|
+
undos: []
|
|
2616
|
+
};
|
|
2617
|
+
const tables = this._tableManager.getTablesBySubunitId(unitId, subUnitId);
|
|
2618
|
+
if (tables.length === 0) return {
|
|
2619
|
+
redos: [],
|
|
2620
|
+
undos: []
|
|
2621
|
+
};
|
|
2622
|
+
const redos = [];
|
|
2623
|
+
const undos = [];
|
|
2624
|
+
tables.forEach((table) => {
|
|
2625
|
+
const tableJson = table.toJSON();
|
|
2626
|
+
const tableId = (0, _univerjs_core.generateRandomId)();
|
|
2627
|
+
redos.push({
|
|
2628
|
+
id: AddSheetTableMutation.id,
|
|
2629
|
+
params: {
|
|
2630
|
+
unitId,
|
|
2631
|
+
subUnitId: targetSubUnitId,
|
|
2632
|
+
name: tableJson.name,
|
|
2633
|
+
range: {
|
|
2634
|
+
...tableJson.range,
|
|
2635
|
+
sheetId: targetSubUnitId
|
|
2636
|
+
},
|
|
2637
|
+
tableId,
|
|
2638
|
+
options: {
|
|
2639
|
+
...tableJson.options,
|
|
2640
|
+
columns: tableJson.columns,
|
|
2641
|
+
filters: tableJson.filters.tableColumnFilterList
|
|
2642
|
+
}
|
|
2643
|
+
}
|
|
2644
|
+
});
|
|
2645
|
+
undos.push({
|
|
2646
|
+
id: DeleteSheetTableMutation.id,
|
|
2647
|
+
params: {
|
|
2648
|
+
unitId,
|
|
2649
|
+
subUnitId: targetSubUnitId,
|
|
2650
|
+
tableId
|
|
2651
|
+
}
|
|
2652
|
+
});
|
|
2653
|
+
});
|
|
2654
|
+
return {
|
|
2655
|
+
redos,
|
|
2656
|
+
undos
|
|
2657
|
+
};
|
|
2658
|
+
}
|
|
2659
|
+
return {
|
|
2660
|
+
redos: [],
|
|
2661
|
+
undos: []
|
|
2662
|
+
};
|
|
2663
|
+
} }));
|
|
2664
|
+
}
|
|
2665
|
+
dispose() {
|
|
2666
|
+
super.dispose();
|
|
2667
|
+
this._tableRangeRTree.clear();
|
|
2668
|
+
}
|
|
2669
|
+
};
|
|
2670
|
+
SheetsTableController = __decorate([
|
|
2671
|
+
__decorateParam(0, (0, _univerjs_core.Inject)(_univerjs_core.IUniverInstanceService)),
|
|
2672
|
+
__decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_sheets.SheetInterceptorService)),
|
|
2673
|
+
__decorateParam(2, (0, _univerjs_core.Inject)(TableManager)),
|
|
2674
|
+
__decorateParam(3, (0, _univerjs_core.Inject)(_univerjs_core.IResourceManagerService))
|
|
2675
|
+
], SheetsTableController);
|
|
2676
|
+
|
|
2677
|
+
//#endregion
|
|
2678
|
+
//#region src/commands/commands/sheet-table-row-col.command.ts
|
|
2679
|
+
const SheetTableInsertRowCommand = {
|
|
2680
|
+
id: "sheet.command.table-insert-row",
|
|
2681
|
+
type: _univerjs_core.CommandType.COMMAND,
|
|
2682
|
+
handler: (accessor) => {
|
|
2683
|
+
const target = (0, _univerjs_sheets.getSheetCommandTarget)(accessor.get(_univerjs_core.IUniverInstanceService));
|
|
2684
|
+
if (!target) return false;
|
|
2685
|
+
const { workbook, worksheet, unitId, subUnitId } = target;
|
|
2686
|
+
const selections = accessor.get(_univerjs_sheets.SheetsSelectionsService).getCurrentSelections();
|
|
2687
|
+
if (!selections.length || selections.length > 1) return false;
|
|
2688
|
+
accessor.get(TableManager);
|
|
2689
|
+
const range = selections[0].range;
|
|
2690
|
+
const table = accessor.get(SheetsTableController).getContainerTableWithRange(unitId, subUnitId, range);
|
|
2691
|
+
if (!table) return false;
|
|
2692
|
+
const insertRowCount = range.endRow - range.startRow + 1;
|
|
2693
|
+
const worksheetLastRowIndex = worksheet.getRowCount() - 1;
|
|
2694
|
+
const rowContentIndex = worksheet.getCellMatrix().getDataRange().endRow;
|
|
2695
|
+
const redos = [];
|
|
2696
|
+
const undos = [];
|
|
2697
|
+
if (worksheetLastRowIndex - rowContentIndex < insertRowCount) {
|
|
2698
|
+
redos.push({
|
|
2699
|
+
id: _univerjs_sheets.InsertRowMutation.id,
|
|
2700
|
+
params: {
|
|
2701
|
+
unitId,
|
|
2702
|
+
subUnitId,
|
|
2703
|
+
range: { ...range }
|
|
2704
|
+
}
|
|
2705
|
+
});
|
|
2706
|
+
redos.push({
|
|
2707
|
+
id: SetSheetTableMutation.id,
|
|
2708
|
+
params: {
|
|
2709
|
+
unitId,
|
|
2710
|
+
subUnitId,
|
|
2711
|
+
tableId: table.getId(),
|
|
2712
|
+
config: { updateRange: { newRange: {
|
|
2713
|
+
...table.getRange(),
|
|
2714
|
+
endRow: table.getRange().endRow + insertRowCount
|
|
2715
|
+
} } }
|
|
2716
|
+
}
|
|
2717
|
+
});
|
|
2718
|
+
undos.push({
|
|
2719
|
+
id: SetSheetTableMutation.id,
|
|
2720
|
+
params: {
|
|
2721
|
+
unitId,
|
|
2722
|
+
subUnitId,
|
|
2723
|
+
tableId: table.getId(),
|
|
2724
|
+
config: { updateRange: { newRange: table.getRange() } }
|
|
2725
|
+
}
|
|
2726
|
+
});
|
|
2727
|
+
undos.push({
|
|
2728
|
+
id: _univerjs_sheets.RemoveRowMutation.id,
|
|
2729
|
+
params: {
|
|
2730
|
+
unitId,
|
|
2731
|
+
subUnitId,
|
|
2732
|
+
range: { ...range }
|
|
2733
|
+
}
|
|
2734
|
+
});
|
|
2735
|
+
} else {
|
|
2736
|
+
const oldRange = { ...table.getRange() };
|
|
2737
|
+
redos.push({
|
|
2738
|
+
id: SetSheetTableMutation.id,
|
|
2739
|
+
params: {
|
|
2740
|
+
unitId,
|
|
2741
|
+
subUnitId,
|
|
2742
|
+
tableId: table.getId(),
|
|
2743
|
+
config: { updateRange: { newRange: {
|
|
2744
|
+
...oldRange,
|
|
2745
|
+
endRow: oldRange.endRow + insertRowCount
|
|
2746
|
+
} } }
|
|
2747
|
+
}
|
|
2748
|
+
});
|
|
2749
|
+
undos.push({
|
|
2750
|
+
id: SetSheetTableMutation.id,
|
|
2751
|
+
params: {
|
|
2752
|
+
unitId,
|
|
2753
|
+
subUnitId,
|
|
2754
|
+
tableId: table.getId(),
|
|
2755
|
+
config: { updateRange: { newRange: { ...oldRange } } }
|
|
2756
|
+
}
|
|
2757
|
+
});
|
|
2758
|
+
const moveRangeMutations = (0, _univerjs_sheets.getMoveRangeUndoRedoMutations)(accessor, {
|
|
2759
|
+
unitId,
|
|
2760
|
+
subUnitId,
|
|
2761
|
+
range: {
|
|
2762
|
+
startRow: range.startRow,
|
|
2763
|
+
endRow: rowContentIndex,
|
|
2764
|
+
startColumn: oldRange.startColumn,
|
|
2765
|
+
endColumn: oldRange.endColumn
|
|
2766
|
+
}
|
|
2767
|
+
}, {
|
|
2768
|
+
unitId,
|
|
2769
|
+
subUnitId,
|
|
2770
|
+
range: {
|
|
2771
|
+
startRow: range.startRow + insertRowCount,
|
|
2772
|
+
endRow: rowContentIndex + insertRowCount,
|
|
2773
|
+
startColumn: oldRange.startColumn,
|
|
2774
|
+
endColumn: oldRange.endColumn
|
|
2775
|
+
}
|
|
2776
|
+
});
|
|
2777
|
+
if (moveRangeMutations) {
|
|
2778
|
+
redos.push(...moveRangeMutations.redos);
|
|
2779
|
+
undos.push(...moveRangeMutations.undos);
|
|
2780
|
+
}
|
|
2781
|
+
}
|
|
2782
|
+
if ((0, _univerjs_core.sequenceExecute)(redos, accessor.get(_univerjs_core.ICommandService))) accessor.get(_univerjs_core.IUndoRedoService).pushUndoRedo({
|
|
2783
|
+
unitID: unitId,
|
|
2784
|
+
undoMutations: undos,
|
|
2785
|
+
redoMutations: redos
|
|
2786
|
+
});
|
|
2787
|
+
return true;
|
|
2788
|
+
}
|
|
2789
|
+
};
|
|
2790
|
+
const SheetTableInsertColCommand = {
|
|
2791
|
+
id: "sheet.command.table-insert-col",
|
|
2792
|
+
type: _univerjs_core.CommandType.COMMAND,
|
|
2793
|
+
handler: (accessor) => {
|
|
2794
|
+
const target = (0, _univerjs_sheets.getSheetCommandTarget)(accessor.get(_univerjs_core.IUniverInstanceService));
|
|
2795
|
+
if (!target) return false;
|
|
2796
|
+
const { worksheet, unitId, subUnitId } = target;
|
|
2797
|
+
const selections = accessor.get(_univerjs_sheets.SheetsSelectionsService).getCurrentSelections();
|
|
2798
|
+
if (!selections.length || selections.length > 1) return false;
|
|
2799
|
+
const range = selections[0].range;
|
|
2800
|
+
const table = accessor.get(SheetsTableController).getContainerTableWithRange(unitId, subUnitId, range);
|
|
2801
|
+
if (!table) return false;
|
|
2802
|
+
const insertColCount = range.endColumn - range.startColumn + 1;
|
|
2803
|
+
const worksheetLastColIndex = worksheet.getColumnCount() - 1;
|
|
2804
|
+
const colContentIndex = worksheet.getCellMatrix().getDataRange().endColumn;
|
|
2805
|
+
const redos = [];
|
|
2806
|
+
const undos = [];
|
|
2807
|
+
if (worksheetLastColIndex - colContentIndex < insertColCount) {
|
|
2808
|
+
redos.push({
|
|
2809
|
+
id: _univerjs_sheets.InsertColMutation.id,
|
|
2810
|
+
params: {
|
|
2811
|
+
unitId,
|
|
2812
|
+
subUnitId,
|
|
2813
|
+
range: { ...range }
|
|
2814
|
+
}
|
|
2815
|
+
});
|
|
2816
|
+
redos.push({
|
|
2817
|
+
id: SetSheetTableMutation.id,
|
|
2818
|
+
params: {
|
|
2819
|
+
unitId,
|
|
2820
|
+
subUnitId,
|
|
2821
|
+
tableId: table.getId(),
|
|
2822
|
+
config: { rowColOperation: {
|
|
2823
|
+
operationType: IRangeOperationTypeEnum.Insert,
|
|
2824
|
+
rowColType: IRowColTypeEnum.Col,
|
|
2825
|
+
index: range.startColumn,
|
|
2826
|
+
count: insertColCount
|
|
2827
|
+
} }
|
|
2828
|
+
}
|
|
2829
|
+
});
|
|
2830
|
+
undos.push({
|
|
2831
|
+
id: SetSheetTableMutation.id,
|
|
2832
|
+
params: {
|
|
2833
|
+
unitId,
|
|
2834
|
+
subUnitId,
|
|
2835
|
+
tableId: table.getId(),
|
|
2836
|
+
config: { rowColOperation: {
|
|
2837
|
+
operationType: IRangeOperationTypeEnum.Delete,
|
|
2838
|
+
rowColType: IRowColTypeEnum.Col,
|
|
2839
|
+
index: range.startColumn,
|
|
2840
|
+
count: insertColCount
|
|
2841
|
+
} }
|
|
2842
|
+
}
|
|
2843
|
+
});
|
|
2844
|
+
undos.push({
|
|
2845
|
+
id: _univerjs_sheets.RemoveColMutation.id,
|
|
2846
|
+
params: {
|
|
2847
|
+
unitId,
|
|
2848
|
+
subUnitId,
|
|
2849
|
+
range: { ...range }
|
|
2850
|
+
}
|
|
2851
|
+
});
|
|
2852
|
+
} else {
|
|
2853
|
+
const oldRange = table.getRange();
|
|
2854
|
+
redos.push({
|
|
2855
|
+
id: SetSheetTableMutation.id,
|
|
2856
|
+
params: {
|
|
2857
|
+
unitId,
|
|
2858
|
+
subUnitId,
|
|
2859
|
+
tableId: table.getId(),
|
|
2860
|
+
config: { rowColOperation: {
|
|
2861
|
+
operationType: IRangeOperationTypeEnum.Insert,
|
|
2862
|
+
rowColType: IRowColTypeEnum.Col,
|
|
2863
|
+
index: range.startColumn,
|
|
2864
|
+
count: insertColCount
|
|
2865
|
+
} }
|
|
2866
|
+
}
|
|
2867
|
+
});
|
|
2868
|
+
undos.push({
|
|
2869
|
+
id: SetSheetTableMutation.id,
|
|
2870
|
+
params: {
|
|
2871
|
+
unitId,
|
|
2872
|
+
subUnitId,
|
|
2873
|
+
tableId: table.getId(),
|
|
2874
|
+
config: { rowColOperation: {
|
|
2875
|
+
operationType: IRangeOperationTypeEnum.Delete,
|
|
2876
|
+
rowColType: IRowColTypeEnum.Col,
|
|
2877
|
+
index: range.startColumn,
|
|
2878
|
+
count: insertColCount
|
|
2879
|
+
} }
|
|
2880
|
+
}
|
|
2881
|
+
});
|
|
2882
|
+
const moveRangeMutations = (0, _univerjs_sheets.getMoveRangeUndoRedoMutations)(accessor, {
|
|
2883
|
+
unitId,
|
|
2884
|
+
subUnitId,
|
|
2885
|
+
range: {
|
|
2886
|
+
startRow: oldRange.startRow,
|
|
2887
|
+
endRow: oldRange.endRow,
|
|
2888
|
+
startColumn: range.startColumn,
|
|
2889
|
+
endColumn: colContentIndex
|
|
2890
|
+
}
|
|
2891
|
+
}, {
|
|
2892
|
+
unitId,
|
|
2893
|
+
subUnitId,
|
|
2894
|
+
range: {
|
|
2895
|
+
startRow: oldRange.startRow,
|
|
2896
|
+
endRow: oldRange.endRow,
|
|
2897
|
+
startColumn: range.startColumn + insertColCount,
|
|
2898
|
+
endColumn: colContentIndex + insertColCount
|
|
2899
|
+
}
|
|
2900
|
+
});
|
|
2901
|
+
if (moveRangeMutations) {
|
|
2902
|
+
redos.push(...moveRangeMutations.redos);
|
|
2903
|
+
undos.push(...moveRangeMutations.undos);
|
|
2904
|
+
}
|
|
2905
|
+
}
|
|
2906
|
+
if ((0, _univerjs_core.sequenceExecute)(redos, accessor.get(_univerjs_core.ICommandService))) accessor.get(_univerjs_core.IUndoRedoService).pushUndoRedo({
|
|
2907
|
+
unitID: unitId,
|
|
2908
|
+
undoMutations: undos,
|
|
2909
|
+
redoMutations: redos
|
|
2910
|
+
});
|
|
2911
|
+
return true;
|
|
2912
|
+
}
|
|
2913
|
+
};
|
|
2914
|
+
const SheetTableRemoveRowCommand = {
|
|
2915
|
+
id: "sheet.command.table-remove-row",
|
|
2916
|
+
type: _univerjs_core.CommandType.COMMAND,
|
|
2917
|
+
handler: (accessor, params) => {
|
|
2918
|
+
if (!params) return false;
|
|
2919
|
+
const target = (0, _univerjs_sheets.getSheetCommandTarget)(accessor.get(_univerjs_core.IUniverInstanceService), params);
|
|
2920
|
+
if (!target) return false;
|
|
2921
|
+
const { unitId, subUnitId } = target;
|
|
2922
|
+
const selections = accessor.get(_univerjs_sheets.SheetsSelectionsService).getCurrentSelections();
|
|
2923
|
+
if (!selections.length || selections.length > 1) return false;
|
|
2924
|
+
const range = selections[0].range;
|
|
2925
|
+
const table = accessor.get(SheetsTableController).getContainerTableWithRange(unitId, subUnitId, range);
|
|
2926
|
+
if (!table) return false;
|
|
2927
|
+
const removeRowCount = range.endRow - range.startRow + 1;
|
|
2928
|
+
const redos = [];
|
|
2929
|
+
const undos = [];
|
|
2930
|
+
const oldRange = table.getRange();
|
|
2931
|
+
redos.push({
|
|
2932
|
+
id: SetSheetTableMutation.id,
|
|
2933
|
+
params: {
|
|
2934
|
+
unitId,
|
|
2935
|
+
subUnitId,
|
|
2936
|
+
tableId: table.getId(),
|
|
2937
|
+
config: { updateRange: { newRange: {
|
|
2938
|
+
...oldRange,
|
|
2939
|
+
endRow: oldRange.endRow - removeRowCount
|
|
2940
|
+
} } }
|
|
2941
|
+
}
|
|
2942
|
+
});
|
|
2943
|
+
undos.push({
|
|
2944
|
+
id: SetSheetTableMutation.id,
|
|
2945
|
+
params: {
|
|
2946
|
+
unitId,
|
|
2947
|
+
subUnitId,
|
|
2948
|
+
tableId: table.getId(),
|
|
2949
|
+
config: { updateRange: { newRange: { ...oldRange } } }
|
|
2950
|
+
}
|
|
2951
|
+
});
|
|
2952
|
+
const rowContentIndex = target.worksheet.getCellMatrix().getDataRange().endRow;
|
|
2953
|
+
const moveRangeMutations = (0, _univerjs_sheets.getMoveRangeUndoRedoMutations)(accessor, {
|
|
2954
|
+
unitId,
|
|
2955
|
+
subUnitId,
|
|
2956
|
+
range: {
|
|
2957
|
+
startRow: range.endRow + 1,
|
|
2958
|
+
endRow: rowContentIndex,
|
|
2959
|
+
startColumn: oldRange.startColumn,
|
|
2960
|
+
endColumn: oldRange.endColumn
|
|
2961
|
+
}
|
|
2962
|
+
}, {
|
|
2963
|
+
unitId,
|
|
2964
|
+
subUnitId,
|
|
2965
|
+
range: {
|
|
2966
|
+
startRow: range.startRow,
|
|
2967
|
+
endRow: rowContentIndex - removeRowCount,
|
|
2968
|
+
startColumn: oldRange.startColumn,
|
|
2969
|
+
endColumn: oldRange.endColumn
|
|
2970
|
+
}
|
|
2971
|
+
});
|
|
2972
|
+
if (moveRangeMutations) {
|
|
2973
|
+
redos.push(...moveRangeMutations.redos);
|
|
2974
|
+
undos.push(...moveRangeMutations.undos);
|
|
2975
|
+
}
|
|
2976
|
+
if ((0, _univerjs_core.sequenceExecute)(redos, accessor.get(_univerjs_core.ICommandService))) accessor.get(_univerjs_core.IUndoRedoService).pushUndoRedo({
|
|
2977
|
+
unitID: unitId,
|
|
2978
|
+
undoMutations: undos,
|
|
2979
|
+
redoMutations: redos
|
|
2980
|
+
});
|
|
2981
|
+
return true;
|
|
2982
|
+
}
|
|
2983
|
+
};
|
|
2984
|
+
const SheetTableRemoveColCommand = {
|
|
2985
|
+
id: "sheet.command.table-remove-col",
|
|
2986
|
+
type: _univerjs_core.CommandType.COMMAND,
|
|
2987
|
+
handler: (accessor, params) => {
|
|
2988
|
+
if (!params) return false;
|
|
2989
|
+
const target = (0, _univerjs_sheets.getSheetCommandTarget)(accessor.get(_univerjs_core.IUniverInstanceService), params);
|
|
2990
|
+
if (!target) return false;
|
|
2991
|
+
const { workbook, unitId, subUnitId } = target;
|
|
2992
|
+
accessor.get(TableManager);
|
|
2993
|
+
const selections = accessor.get(_univerjs_sheets.SheetsSelectionsService).getCurrentSelections();
|
|
2994
|
+
if (!selections.length || selections.length > 1) return false;
|
|
2995
|
+
const range = selections[0].range;
|
|
2996
|
+
const table = accessor.get(SheetsTableController).getContainerTableWithRange(unitId, subUnitId, range);
|
|
2997
|
+
if (!table) return false;
|
|
2998
|
+
const removeColCount = range.endColumn - range.startColumn + 1;
|
|
2999
|
+
const redos = [];
|
|
3000
|
+
const undos = [];
|
|
3001
|
+
const oldRange = table.getRange();
|
|
3002
|
+
redos.push({
|
|
3003
|
+
id: SetSheetTableMutation.id,
|
|
3004
|
+
params: {
|
|
3005
|
+
unitId,
|
|
3006
|
+
subUnitId,
|
|
3007
|
+
tableId: table.getId(),
|
|
3008
|
+
config: { rowColOperation: {
|
|
3009
|
+
operationType: IRangeOperationTypeEnum.Delete,
|
|
3010
|
+
rowColType: IRowColTypeEnum.Col,
|
|
3011
|
+
index: range.startColumn,
|
|
3012
|
+
count: removeColCount
|
|
3013
|
+
} }
|
|
3014
|
+
}
|
|
3015
|
+
});
|
|
3016
|
+
const columns = [];
|
|
3017
|
+
const gap = range.startColumn - oldRange.startColumn;
|
|
3018
|
+
for (let i = 0; i < removeColCount; i++) {
|
|
3019
|
+
const column = table.getTableInfo().columns[gap + i];
|
|
3020
|
+
if (column) columns.push(column);
|
|
3021
|
+
}
|
|
3022
|
+
undos.push({
|
|
3023
|
+
id: SetSheetTableMutation.id,
|
|
3024
|
+
params: {
|
|
3025
|
+
unitId,
|
|
3026
|
+
subUnitId,
|
|
3027
|
+
tableId: table.getId(),
|
|
3028
|
+
config: { rowColOperation: {
|
|
3029
|
+
operationType: IRangeOperationTypeEnum.Insert,
|
|
3030
|
+
rowColType: IRowColTypeEnum.Col,
|
|
3031
|
+
index: range.startColumn,
|
|
3032
|
+
count: removeColCount,
|
|
3033
|
+
columnsJson: columns
|
|
3034
|
+
} }
|
|
3035
|
+
}
|
|
3036
|
+
});
|
|
3037
|
+
const colContentIndex = target.worksheet.getCellMatrix().getDataRange().endColumn;
|
|
3038
|
+
const moveRangeMutations = (0, _univerjs_sheets.getMoveRangeUndoRedoMutations)(accessor, {
|
|
3039
|
+
unitId,
|
|
3040
|
+
subUnitId,
|
|
3041
|
+
range: {
|
|
3042
|
+
startRow: oldRange.startRow,
|
|
3043
|
+
endRow: oldRange.endRow,
|
|
3044
|
+
startColumn: range.endColumn + 1,
|
|
3045
|
+
endColumn: colContentIndex
|
|
3046
|
+
}
|
|
3047
|
+
}, {
|
|
3048
|
+
unitId,
|
|
3049
|
+
subUnitId,
|
|
3050
|
+
range: {
|
|
3051
|
+
startRow: oldRange.startRow,
|
|
3052
|
+
endRow: oldRange.endRow,
|
|
3053
|
+
startColumn: range.startColumn,
|
|
3054
|
+
endColumn: colContentIndex - removeColCount
|
|
3055
|
+
}
|
|
3056
|
+
});
|
|
3057
|
+
if (moveRangeMutations) {
|
|
3058
|
+
redos.push(...moveRangeMutations.redos);
|
|
3059
|
+
undos.push(...moveRangeMutations.undos);
|
|
3060
|
+
}
|
|
3061
|
+
if ((0, _univerjs_core.sequenceExecute)(redos, accessor.get(_univerjs_core.ICommandService))) accessor.get(_univerjs_core.IUndoRedoService).pushUndoRedo({
|
|
3062
|
+
unitID: unitId,
|
|
3063
|
+
undoMutations: undos,
|
|
3064
|
+
redoMutations: redos
|
|
3065
|
+
});
|
|
3066
|
+
return true;
|
|
3067
|
+
}
|
|
3068
|
+
};
|
|
3069
|
+
|
|
3070
|
+
//#endregion
|
|
3071
|
+
//#region package.json
|
|
3072
|
+
var name = "@univerjs/sheets-table";
|
|
3073
|
+
var version = "0.21.0";
|
|
3074
|
+
|
|
3075
|
+
//#endregion
|
|
3076
|
+
//#region src/controllers/sheet-table-formula.controller.ts
|
|
3077
|
+
let SheetTableFormulaController = class SheetTableFormulaController extends _univerjs_core.Disposable {
|
|
3078
|
+
constructor(_tableManager, _commandService) {
|
|
3079
|
+
super();
|
|
3080
|
+
this._tableManager = _tableManager;
|
|
3081
|
+
this._commandService = _commandService;
|
|
3082
|
+
this._initRangeListener();
|
|
3083
|
+
}
|
|
3084
|
+
_initRangeListener() {
|
|
3085
|
+
this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe((event) => {
|
|
3086
|
+
const { tableId, unitId } = event;
|
|
3087
|
+
const table = this._tableManager.getTableById(unitId, tableId);
|
|
3088
|
+
if (!table) return;
|
|
3089
|
+
this._updateSuperTable(unitId, table);
|
|
3090
|
+
}));
|
|
3091
|
+
this.disposeWithMe(this._tableManager.tableAdd$.subscribe((event) => {
|
|
3092
|
+
const { tableId, unitId } = event;
|
|
3093
|
+
const table = this._tableManager.getTableById(unitId, tableId);
|
|
3094
|
+
if (!table) return;
|
|
3095
|
+
this._updateSuperTable(unitId, table);
|
|
3096
|
+
}));
|
|
3097
|
+
this.disposeWithMe(this._tableManager.tableDelete$.subscribe((event) => {
|
|
3098
|
+
const { unitId, tableName } = event;
|
|
3099
|
+
this._commandService.executeCommand(_univerjs_engine_formula.RemoveSuperTableMutation.id, {
|
|
3100
|
+
unitId,
|
|
3101
|
+
tableName
|
|
3102
|
+
});
|
|
3103
|
+
}));
|
|
3104
|
+
this.disposeWithMe(this._tableManager.tableNameChanged$.subscribe((event) => {
|
|
3105
|
+
const { tableId, unitId, oldTableName } = event;
|
|
3106
|
+
this._commandService.executeCommand(_univerjs_engine_formula.RemoveSuperTableMutation.id, {
|
|
3107
|
+
unitId,
|
|
3108
|
+
tableName: oldTableName
|
|
3109
|
+
});
|
|
3110
|
+
const table = this._tableManager.getTableById(unitId, tableId);
|
|
3111
|
+
if (!table) return;
|
|
3112
|
+
this._updateSuperTable(unitId, table);
|
|
3113
|
+
}));
|
|
3114
|
+
}
|
|
3115
|
+
_updateSuperTable(unitId, table) {
|
|
3116
|
+
const tableInfo = table.getTableInfo();
|
|
3117
|
+
const name = tableInfo.name;
|
|
3118
|
+
const columns = tableInfo.columns;
|
|
3119
|
+
const titleMap = /* @__PURE__ */ new Map();
|
|
3120
|
+
columns.forEach((column, index) => {
|
|
3121
|
+
titleMap.set(column.displayName, index);
|
|
3122
|
+
});
|
|
3123
|
+
this._commandService.executeCommand(_univerjs_engine_formula.SetSuperTableMutation.id, {
|
|
3124
|
+
unitId,
|
|
3125
|
+
tableName: name,
|
|
3126
|
+
reference: {
|
|
3127
|
+
range: tableInfo.range,
|
|
3128
|
+
sheetId: tableInfo.subUnitId,
|
|
3129
|
+
titleMap
|
|
3130
|
+
}
|
|
3131
|
+
});
|
|
3132
|
+
}
|
|
3133
|
+
};
|
|
3134
|
+
SheetTableFormulaController = __decorate([__decorateParam(0, (0, _univerjs_core.Inject)(TableManager)), __decorateParam(1, _univerjs_core.ICommandService)], SheetTableFormulaController);
|
|
3135
|
+
|
|
3136
|
+
//#endregion
|
|
3137
|
+
//#region src/controllers/sheet-table-range.controller.ts
|
|
3138
|
+
/**
|
|
3139
|
+
* Copyright 2023-present DreamNum Co., Ltd.
|
|
3140
|
+
*
|
|
3141
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3142
|
+
* you may not use this file except in compliance with the License.
|
|
3143
|
+
* You may obtain a copy of the License at
|
|
3144
|
+
*
|
|
3145
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
3146
|
+
*
|
|
3147
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
3148
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
3149
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3150
|
+
* See the License for the specific language governing permissions and
|
|
3151
|
+
* limitations under the License.
|
|
3152
|
+
*/
|
|
3153
|
+
let SheetTableRangeController = class SheetTableRangeController extends _univerjs_core.Disposable {
|
|
3154
|
+
constructor(_tableManager, _exclusiveRangeService) {
|
|
3155
|
+
super();
|
|
3156
|
+
this._tableManager = _tableManager;
|
|
3157
|
+
this._exclusiveRangeService = _exclusiveRangeService;
|
|
3158
|
+
this._initRangeListener();
|
|
3159
|
+
}
|
|
3160
|
+
_initRangeListener() {
|
|
3161
|
+
this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe((event) => {
|
|
3162
|
+
const { range, tableId, unitId, subUnitId } = event;
|
|
3163
|
+
this._exclusiveRangeService.clearExclusiveRangesByGroupId(unitId, subUnitId, FEATURE_TABLE_ID, tableId);
|
|
3164
|
+
this._exclusiveRangeService.addExclusiveRange(unitId, subUnitId, FEATURE_TABLE_ID, [{
|
|
3165
|
+
range: { ...range },
|
|
3166
|
+
groupId: tableId
|
|
3167
|
+
}]);
|
|
3168
|
+
}));
|
|
3169
|
+
this.disposeWithMe(this._tableManager.tableAdd$.subscribe((event) => {
|
|
3170
|
+
const { tableId, unitId, subUnitId, range } = event;
|
|
3171
|
+
this._exclusiveRangeService.addExclusiveRange(unitId, subUnitId, FEATURE_TABLE_ID, [{
|
|
3172
|
+
range: { ...range },
|
|
3173
|
+
groupId: tableId
|
|
3174
|
+
}]);
|
|
3175
|
+
}));
|
|
3176
|
+
this.disposeWithMe(this._tableManager.tableDelete$.subscribe((event) => {
|
|
3177
|
+
const { tableId, unitId, subUnitId } = event;
|
|
3178
|
+
this._exclusiveRangeService.clearExclusiveRangesByGroupId(unitId, subUnitId, FEATURE_TABLE_ID, tableId);
|
|
3179
|
+
}));
|
|
3180
|
+
}
|
|
3181
|
+
};
|
|
3182
|
+
SheetTableRangeController = __decorate([__decorateParam(0, (0, _univerjs_core.Inject)(TableManager)), __decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_sheets.IExclusiveRangeService))], SheetTableRangeController);
|
|
3183
|
+
|
|
3184
|
+
//#endregion
|
|
3185
|
+
//#region src/controllers/sheet-table-ref-range.controller.ts
|
|
3186
|
+
let SheetTableRefRangeController = class SheetTableRefRangeController extends _univerjs_core.Disposable {
|
|
3187
|
+
constructor(_commandService, _refRangeService, _univerInstanceService, _injector, _sheetInterceptorService, _tableManager, _localeService) {
|
|
3188
|
+
super();
|
|
3189
|
+
this._commandService = _commandService;
|
|
3190
|
+
this._refRangeService = _refRangeService;
|
|
3191
|
+
this._univerInstanceService = _univerInstanceService;
|
|
3192
|
+
this._injector = _injector;
|
|
3193
|
+
this._sheetInterceptorService = _sheetInterceptorService;
|
|
3194
|
+
this._tableManager = _tableManager;
|
|
3195
|
+
this._localeService = _localeService;
|
|
3196
|
+
this._initCommandInterceptor();
|
|
3197
|
+
this._initCommandListener();
|
|
3198
|
+
}
|
|
3199
|
+
_initCommandInterceptor() {
|
|
3200
|
+
const self = this;
|
|
3201
|
+
this._sheetInterceptorService.interceptCommand({ getMutations(commandInfo) {
|
|
3202
|
+
const defaultReturn = {
|
|
3203
|
+
redos: [],
|
|
3204
|
+
undos: []
|
|
3205
|
+
};
|
|
3206
|
+
const { id, params } = commandInfo;
|
|
3207
|
+
switch (id) {
|
|
3208
|
+
case _univerjs_sheets.InsertRowCommand.id: return self._generateTableMutationWithInsertRow(params);
|
|
3209
|
+
case _univerjs_sheets.InsertColCommand.id: return self._generateTableMutationWithInsertCol(params);
|
|
3210
|
+
case _univerjs_sheets.RemoveRowCommand.id: return self._generateTableMutationWithRemoveRow(params);
|
|
3211
|
+
case _univerjs_sheets.RemoveColCommand.id: return self._generateTableMutationWithRemoveCol(params);
|
|
3212
|
+
}
|
|
3213
|
+
return defaultReturn;
|
|
3214
|
+
} });
|
|
3215
|
+
}
|
|
3216
|
+
_generateTableMutationWithInsertRow(insertParams) {
|
|
3217
|
+
const undos = [];
|
|
3218
|
+
const redos = [];
|
|
3219
|
+
const target = (0, _univerjs_sheets.getSheetCommandTarget)(this._univerInstanceService, insertParams);
|
|
3220
|
+
if (!target) return {
|
|
3221
|
+
undos,
|
|
3222
|
+
redos
|
|
3223
|
+
};
|
|
3224
|
+
const { unitId, subUnitId } = target;
|
|
3225
|
+
const allSubUnitTables = this._tableManager.getTablesBySubunitId(unitId, subUnitId);
|
|
3226
|
+
if (!allSubUnitTables.length) return {
|
|
3227
|
+
undos,
|
|
3228
|
+
redos
|
|
3229
|
+
};
|
|
3230
|
+
const { range } = insertParams;
|
|
3231
|
+
allSubUnitTables.forEach((table) => {
|
|
3232
|
+
const tableRange = table.getRange();
|
|
3233
|
+
if (range.startRow > tableRange.startRow && range.startRow <= tableRange.endRow) {
|
|
3234
|
+
const insertRowCount = range.endRow - range.startRow + 1;
|
|
3235
|
+
redos.push({
|
|
3236
|
+
id: SetSheetTableMutation.id,
|
|
3237
|
+
params: {
|
|
3238
|
+
unitId,
|
|
3239
|
+
subUnitId,
|
|
3240
|
+
tableId: table.getId(),
|
|
3241
|
+
config: { updateRange: { newRange: {
|
|
3242
|
+
...tableRange,
|
|
3243
|
+
endRow: tableRange.endRow + insertRowCount
|
|
3244
|
+
} } }
|
|
3245
|
+
}
|
|
3246
|
+
});
|
|
3247
|
+
undos.push({
|
|
3248
|
+
id: SetSheetTableMutation.id,
|
|
3249
|
+
params: {
|
|
3250
|
+
unitId,
|
|
3251
|
+
subUnitId,
|
|
3252
|
+
tableId: table.getId(),
|
|
3253
|
+
config: { updateRange: { newRange: { ...tableRange } } }
|
|
3254
|
+
}
|
|
3255
|
+
});
|
|
3256
|
+
}
|
|
3257
|
+
});
|
|
3258
|
+
return {
|
|
3259
|
+
undos,
|
|
3260
|
+
redos
|
|
3261
|
+
};
|
|
3262
|
+
}
|
|
3263
|
+
_generateTableMutationWithInsertCol(insertParams) {
|
|
3264
|
+
const undos = [];
|
|
3265
|
+
const redos = [];
|
|
3266
|
+
const target = (0, _univerjs_sheets.getSheetCommandTarget)(this._univerInstanceService, insertParams);
|
|
3267
|
+
if (!target) return {
|
|
3268
|
+
undos,
|
|
3269
|
+
redos
|
|
3270
|
+
};
|
|
3271
|
+
const { unitId, subUnitId } = target;
|
|
3272
|
+
const allSubUnitTables = this._tableManager.getTablesBySubunitId(unitId, subUnitId);
|
|
3273
|
+
if (!allSubUnitTables.length) return {
|
|
3274
|
+
undos,
|
|
3275
|
+
redos
|
|
3276
|
+
};
|
|
3277
|
+
const { range } = insertParams;
|
|
3278
|
+
allSubUnitTables.forEach((table) => {
|
|
3279
|
+
const tableRange = table.getRange();
|
|
3280
|
+
if (range.startColumn > tableRange.startColumn && range.startColumn <= tableRange.endColumn) {
|
|
3281
|
+
const insertColCount = range.endColumn - range.startColumn + 1;
|
|
3282
|
+
redos.push({
|
|
3283
|
+
id: SetSheetTableMutation.id,
|
|
3284
|
+
params: {
|
|
3285
|
+
unitId,
|
|
3286
|
+
subUnitId,
|
|
3287
|
+
tableId: table.getId(),
|
|
3288
|
+
config: { rowColOperation: {
|
|
3289
|
+
operationType: IRangeOperationTypeEnum.Insert,
|
|
3290
|
+
rowColType: IRowColTypeEnum.Col,
|
|
3291
|
+
index: range.startColumn,
|
|
3292
|
+
count: insertColCount
|
|
3293
|
+
} }
|
|
3294
|
+
}
|
|
3295
|
+
});
|
|
3296
|
+
undos.push({
|
|
3297
|
+
id: SetSheetTableMutation.id,
|
|
3298
|
+
params: {
|
|
3299
|
+
unitId,
|
|
3300
|
+
subUnitId,
|
|
3301
|
+
tableId: table.getId(),
|
|
3302
|
+
config: { rowColOperation: {
|
|
3303
|
+
operationType: IRangeOperationTypeEnum.Delete,
|
|
3304
|
+
rowColType: IRowColTypeEnum.Col,
|
|
3305
|
+
index: range.startColumn,
|
|
3306
|
+
count: insertColCount
|
|
3307
|
+
} }
|
|
3308
|
+
}
|
|
3309
|
+
});
|
|
3310
|
+
}
|
|
3311
|
+
});
|
|
3312
|
+
return {
|
|
3313
|
+
undos,
|
|
3314
|
+
redos
|
|
3315
|
+
};
|
|
3316
|
+
}
|
|
3317
|
+
_generateTableMutationWithRemoveRow(removeParams) {
|
|
3318
|
+
const undos = [];
|
|
3319
|
+
const redos = [];
|
|
3320
|
+
const preRedos = [];
|
|
3321
|
+
const preUndos = [];
|
|
3322
|
+
const target = (0, _univerjs_sheets.getSheetCommandTarget)(this._univerInstanceService);
|
|
3323
|
+
if (!target) return {
|
|
3324
|
+
undos,
|
|
3325
|
+
redos,
|
|
3326
|
+
preRedos,
|
|
3327
|
+
preUndos
|
|
3328
|
+
};
|
|
3329
|
+
const { unitId, subUnitId } = target;
|
|
3330
|
+
const allSubUnitTables = this._tableManager.getTablesBySubunitId(unitId, subUnitId);
|
|
3331
|
+
if (!allSubUnitTables.length) return {
|
|
3332
|
+
undos,
|
|
3333
|
+
redos,
|
|
3334
|
+
preRedos,
|
|
3335
|
+
preUndos
|
|
3336
|
+
};
|
|
3337
|
+
const { range } = removeParams;
|
|
3338
|
+
const removeRowCount = range.endRow - range.startRow + 1;
|
|
3339
|
+
allSubUnitTables.forEach((table) => {
|
|
3340
|
+
const tableRange = table.getRange();
|
|
3341
|
+
if (_univerjs_core.Rectangle.intersects(tableRange, range)) {
|
|
3342
|
+
if (range.startRow <= tableRange.startRow && range.endRow >= tableRange.startRow) {
|
|
3343
|
+
preRedos.push({
|
|
3344
|
+
id: DeleteSheetTableMutation.id,
|
|
3345
|
+
params: {
|
|
3346
|
+
unitId,
|
|
3347
|
+
subUnitId,
|
|
3348
|
+
tableId: table.getId()
|
|
3349
|
+
}
|
|
3350
|
+
});
|
|
3351
|
+
const tableJson = table.toJSON();
|
|
3352
|
+
undos.push({
|
|
3353
|
+
id: AddSheetTableMutation.id,
|
|
3354
|
+
params: {
|
|
3355
|
+
unitId,
|
|
3356
|
+
subUnitId,
|
|
3357
|
+
tableId: tableJson.id,
|
|
3358
|
+
name: tableJson.name,
|
|
3359
|
+
range: tableJson.range,
|
|
3360
|
+
options: tableJson.options
|
|
3361
|
+
}
|
|
3362
|
+
});
|
|
3363
|
+
} else if (range.startRow > tableRange.startRow && range.startRow <= tableRange.endRow) {
|
|
3364
|
+
redos.push({
|
|
3365
|
+
id: SetSheetTableMutation.id,
|
|
3366
|
+
params: {
|
|
3367
|
+
unitId,
|
|
3368
|
+
subUnitId,
|
|
3369
|
+
tableId: table.getId(),
|
|
3370
|
+
config: { updateRange: { newRange: {
|
|
3371
|
+
...tableRange,
|
|
3372
|
+
endRow: tableRange.endRow - removeRowCount
|
|
3373
|
+
} } }
|
|
3374
|
+
}
|
|
3375
|
+
});
|
|
3376
|
+
undos.push({
|
|
3377
|
+
id: SetSheetTableMutation.id,
|
|
3378
|
+
params: {
|
|
3379
|
+
unitId,
|
|
3380
|
+
subUnitId,
|
|
3381
|
+
tableId: table.getId(),
|
|
3382
|
+
config: { updateRange: { newRange: { ...tableRange } } }
|
|
3383
|
+
}
|
|
3384
|
+
});
|
|
3385
|
+
} else if (range.startRow < tableRange.endRow && range.endRow >= tableRange.endRow) {
|
|
3386
|
+
redos.push({
|
|
3387
|
+
id: SetSheetTableMutation.id,
|
|
3388
|
+
params: {
|
|
3389
|
+
unitId,
|
|
3390
|
+
subUnitId,
|
|
3391
|
+
tableId: table.getId(),
|
|
3392
|
+
config: { updateRange: { newRange: {
|
|
3393
|
+
...tableRange,
|
|
3394
|
+
endRow: range.startRow - 1
|
|
3395
|
+
} } }
|
|
3396
|
+
}
|
|
3397
|
+
});
|
|
3398
|
+
undos.push({
|
|
3399
|
+
id: SetSheetTableMutation.id,
|
|
3400
|
+
params: {
|
|
3401
|
+
unitId,
|
|
3402
|
+
subUnitId,
|
|
3403
|
+
tableId: table.getId(),
|
|
3404
|
+
config: { updateRange: { newRange: { ...tableRange } } }
|
|
3405
|
+
}
|
|
3406
|
+
});
|
|
3407
|
+
}
|
|
3408
|
+
}
|
|
3409
|
+
});
|
|
3410
|
+
return {
|
|
3411
|
+
undos,
|
|
3412
|
+
redos,
|
|
3413
|
+
preRedos,
|
|
3414
|
+
preUndos
|
|
3415
|
+
};
|
|
3416
|
+
}
|
|
3417
|
+
_generateTableMutationWithRemoveCol(removeParams) {
|
|
3418
|
+
const undos = [];
|
|
3419
|
+
const redos = [];
|
|
3420
|
+
const preRedos = [];
|
|
3421
|
+
const preUndos = [];
|
|
3422
|
+
const target = (0, _univerjs_sheets.getSheetCommandTarget)(this._univerInstanceService);
|
|
3423
|
+
if (!target) return {
|
|
3424
|
+
undos,
|
|
3425
|
+
redos,
|
|
3426
|
+
preRedos,
|
|
3427
|
+
preUndos
|
|
3428
|
+
};
|
|
3429
|
+
const { unitId, subUnitId } = target;
|
|
3430
|
+
const allSubUnitTables = this._tableManager.getTablesBySubunitId(unitId, subUnitId);
|
|
3431
|
+
if (!allSubUnitTables.length) return {
|
|
3432
|
+
undos,
|
|
3433
|
+
redos,
|
|
3434
|
+
preRedos,
|
|
3435
|
+
preUndos
|
|
3436
|
+
};
|
|
3437
|
+
const { range } = removeParams;
|
|
3438
|
+
const removeColCount = range.endColumn - range.startColumn + 1;
|
|
3439
|
+
allSubUnitTables.forEach((table) => {
|
|
3440
|
+
const tableRange = table.getRange();
|
|
3441
|
+
if (_univerjs_core.Rectangle.intersects(tableRange, range)) {
|
|
3442
|
+
if (range.startColumn <= tableRange.startColumn && range.endColumn >= tableRange.endColumn) {
|
|
3443
|
+
preRedos.push({
|
|
3444
|
+
id: DeleteSheetTableMutation.id,
|
|
3445
|
+
params: {
|
|
3446
|
+
unitId,
|
|
3447
|
+
subUnitId,
|
|
3448
|
+
tableId: table.getId()
|
|
3449
|
+
}
|
|
3450
|
+
});
|
|
3451
|
+
const tableJson = table.toJSON();
|
|
3452
|
+
const { startRow, startColumn, endColumn } = tableJson.range;
|
|
3453
|
+
const workbook = this._univerInstanceService.getUnit(unitId);
|
|
3454
|
+
const worksheet = workbook === null || workbook === void 0 ? void 0 : workbook.getSheetBySheetId(subUnitId);
|
|
3455
|
+
if (!worksheet) return {
|
|
3456
|
+
undos,
|
|
3457
|
+
redos,
|
|
3458
|
+
preRedos,
|
|
3459
|
+
preUndos
|
|
3460
|
+
};
|
|
3461
|
+
const header = [];
|
|
3462
|
+
for (let i = startColumn; i <= endColumn; i++) header.push(convertCellDataToString(worksheet === null || worksheet === void 0 ? void 0 : worksheet.getCell(startRow, i)) || getColumnName(i - startColumn + 1, this._localeService.t("sheets-table.columnPrefix")));
|
|
3463
|
+
undos.push({
|
|
3464
|
+
id: AddSheetTableMutation.id,
|
|
3465
|
+
params: {
|
|
3466
|
+
unitId,
|
|
3467
|
+
subUnitId,
|
|
3468
|
+
tableId: tableJson.id,
|
|
3469
|
+
name: tableJson.name,
|
|
3470
|
+
header,
|
|
3471
|
+
range: tableJson.range,
|
|
3472
|
+
options: tableJson.options
|
|
3473
|
+
}
|
|
3474
|
+
});
|
|
3475
|
+
} else if (range.startColumn <= tableRange.startColumn && range.endColumn >= tableRange.startColumn) {
|
|
3476
|
+
const removeColumnCount = range.endColumn - tableRange.startColumn + 1;
|
|
3477
|
+
redos.push({
|
|
3478
|
+
id: SetSheetTableMutation.id,
|
|
3479
|
+
params: {
|
|
3480
|
+
unitId,
|
|
3481
|
+
subUnitId,
|
|
3482
|
+
tableId: table.getId(),
|
|
3483
|
+
config: { rowColOperation: {
|
|
3484
|
+
operationType: IRangeOperationTypeEnum.Delete,
|
|
3485
|
+
rowColType: IRowColTypeEnum.Col,
|
|
3486
|
+
index: tableRange.startColumn,
|
|
3487
|
+
count: removeColumnCount
|
|
3488
|
+
} }
|
|
3489
|
+
}
|
|
3490
|
+
});
|
|
3491
|
+
const columns = [];
|
|
3492
|
+
for (let i = 0; i < removeColumnCount; i++) {
|
|
3493
|
+
const column = table.getTableColumnByIndex(i);
|
|
3494
|
+
if (column) columns.push(column.toJSON());
|
|
3495
|
+
}
|
|
3496
|
+
undos.push({
|
|
3497
|
+
id: SetSheetTableMutation.id,
|
|
3498
|
+
params: {
|
|
3499
|
+
unitId,
|
|
3500
|
+
subUnitId,
|
|
3501
|
+
tableId: table.getId(),
|
|
3502
|
+
config: { rowColOperation: {
|
|
3503
|
+
operationType: IRangeOperationTypeEnum.Insert,
|
|
3504
|
+
rowColType: IRowColTypeEnum.Col,
|
|
3505
|
+
index: tableRange.startColumn,
|
|
3506
|
+
count: removeColumnCount,
|
|
3507
|
+
columnsJson: columns
|
|
3508
|
+
} }
|
|
3509
|
+
}
|
|
3510
|
+
});
|
|
3511
|
+
} else if (range.startColumn > tableRange.startColumn && range.endColumn > tableRange.endColumn) {
|
|
3512
|
+
const removeColumnCount = tableRange.endColumn - range.startColumn + 1;
|
|
3513
|
+
redos.push({
|
|
3514
|
+
id: SetSheetTableMutation.id,
|
|
3515
|
+
params: {
|
|
3516
|
+
unitId,
|
|
3517
|
+
subUnitId,
|
|
3518
|
+
tableId: table.getId(),
|
|
3519
|
+
config: { rowColOperation: {
|
|
3520
|
+
operationType: IRangeOperationTypeEnum.Delete,
|
|
3521
|
+
rowColType: IRowColTypeEnum.Col,
|
|
3522
|
+
index: range.startColumn,
|
|
3523
|
+
count: removeColumnCount
|
|
3524
|
+
} }
|
|
3525
|
+
}
|
|
3526
|
+
});
|
|
3527
|
+
const columns = [];
|
|
3528
|
+
const gap = range.startColumn - tableRange.startColumn;
|
|
3529
|
+
for (let i = 0; i < removeColumnCount; i++) {
|
|
3530
|
+
const column = table.getTableColumnByIndex(i + gap);
|
|
3531
|
+
if (column) columns.push(column.toJSON());
|
|
3532
|
+
}
|
|
3533
|
+
undos.push({
|
|
3534
|
+
id: SetSheetTableMutation.id,
|
|
3535
|
+
params: {
|
|
3536
|
+
unitId,
|
|
3537
|
+
subUnitId,
|
|
3538
|
+
tableId: table.getId(),
|
|
3539
|
+
config: { rowColOperation: {
|
|
3540
|
+
operationType: IRangeOperationTypeEnum.Insert,
|
|
3541
|
+
rowColType: IRowColTypeEnum.Col,
|
|
3542
|
+
index: range.startColumn,
|
|
3543
|
+
count: removeColCount,
|
|
3544
|
+
columnsJson: columns
|
|
3545
|
+
} }
|
|
3546
|
+
}
|
|
3547
|
+
});
|
|
3548
|
+
} else if (range.startColumn > tableRange.startColumn && range.endColumn <= tableRange.endColumn) {
|
|
3549
|
+
redos.push({
|
|
3550
|
+
id: SetSheetTableMutation.id,
|
|
3551
|
+
params: {
|
|
3552
|
+
unitId,
|
|
3553
|
+
subUnitId,
|
|
3554
|
+
tableId: table.getId(),
|
|
3555
|
+
config: { rowColOperation: {
|
|
3556
|
+
operationType: IRangeOperationTypeEnum.Delete,
|
|
3557
|
+
rowColType: IRowColTypeEnum.Col,
|
|
3558
|
+
index: range.startColumn,
|
|
3559
|
+
count: removeColCount
|
|
3560
|
+
} }
|
|
3561
|
+
}
|
|
3562
|
+
});
|
|
3563
|
+
const columns = [];
|
|
3564
|
+
const gap = range.startColumn - tableRange.startColumn;
|
|
3565
|
+
for (let i = 0; i < removeColCount; i++) {
|
|
3566
|
+
const column = table.getTableColumnByIndex(i + gap);
|
|
3567
|
+
if (column) columns.push(column.toJSON());
|
|
3568
|
+
}
|
|
3569
|
+
undos.push({
|
|
3570
|
+
id: SetSheetTableMutation.id,
|
|
3571
|
+
params: {
|
|
3572
|
+
unitId,
|
|
3573
|
+
subUnitId,
|
|
3574
|
+
tableId: table.getId(),
|
|
3575
|
+
config: { rowColOperation: {
|
|
3576
|
+
operationType: IRangeOperationTypeEnum.Insert,
|
|
3577
|
+
rowColType: IRowColTypeEnum.Col,
|
|
3578
|
+
index: range.startColumn,
|
|
3579
|
+
count: removeColCount,
|
|
3580
|
+
columnsJson: columns
|
|
3581
|
+
} }
|
|
3582
|
+
}
|
|
3583
|
+
});
|
|
3584
|
+
}
|
|
3585
|
+
}
|
|
3586
|
+
});
|
|
3587
|
+
return {
|
|
3588
|
+
undos,
|
|
3589
|
+
redos,
|
|
3590
|
+
preRedos,
|
|
3591
|
+
preUndos
|
|
3592
|
+
};
|
|
3593
|
+
}
|
|
3594
|
+
_initCommandListener() {
|
|
3595
|
+
this._commandService.onCommandExecuted((commandInfo) => {
|
|
3596
|
+
if (commandInfo.id === _univerjs_sheets.InsertRowMutation.id) {
|
|
3597
|
+
const { unitId, subUnitId, range } = commandInfo.params;
|
|
3598
|
+
const insertCount = range.endRow - range.startRow + 1;
|
|
3599
|
+
this._tableManager.getTablesBySubunitId(unitId, subUnitId).forEach((table) => {
|
|
3600
|
+
const tableRange = table.getRange();
|
|
3601
|
+
if (range.startRow <= tableRange.startRow) this._tableManager.updateTableRange(unitId, table.getId(), { newRange: {
|
|
3602
|
+
...tableRange,
|
|
3603
|
+
startRow: tableRange.startRow + insertCount,
|
|
3604
|
+
endRow: tableRange.endRow + insertCount
|
|
3605
|
+
} });
|
|
3606
|
+
});
|
|
3607
|
+
} else if (commandInfo.id === _univerjs_sheets.InsertColMutation.id) {
|
|
3608
|
+
const { unitId, subUnitId, range } = commandInfo.params;
|
|
3609
|
+
const insertCount = range.endColumn - range.startColumn + 1;
|
|
3610
|
+
this._tableManager.getTablesBySubunitId(unitId, subUnitId).forEach((table) => {
|
|
3611
|
+
const tableRange = table.getRange();
|
|
3612
|
+
if (range.startColumn <= tableRange.startColumn) this._tableManager.updateTableRange(unitId, table.getId(), { newRange: {
|
|
3613
|
+
...tableRange,
|
|
3614
|
+
startColumn: tableRange.startColumn + insertCount,
|
|
3615
|
+
endColumn: tableRange.endColumn + insertCount
|
|
3616
|
+
} });
|
|
3617
|
+
});
|
|
3618
|
+
} else if (commandInfo.id === _univerjs_sheets.RemoveRowMutation.id) {
|
|
3619
|
+
const { unitId, subUnitId, range } = commandInfo.params;
|
|
3620
|
+
const removeCount = range.endRow - range.startRow + 1;
|
|
3621
|
+
this._tableManager.getTablesBySubunitId(unitId, subUnitId).forEach((table) => {
|
|
3622
|
+
const tableRange = table.getRange();
|
|
3623
|
+
if (range.startRow < tableRange.startRow) this._tableManager.updateTableRange(unitId, table.getId(), { newRange: {
|
|
3624
|
+
...tableRange,
|
|
3625
|
+
startRow: tableRange.startRow - removeCount,
|
|
3626
|
+
endRow: tableRange.endRow - removeCount
|
|
3627
|
+
} });
|
|
3628
|
+
});
|
|
3629
|
+
} else if (commandInfo.id === _univerjs_sheets.RemoveColMutation.id) {
|
|
3630
|
+
const { unitId, subUnitId, range } = commandInfo.params;
|
|
3631
|
+
const removeCount = range.endColumn - range.startColumn + 1;
|
|
3632
|
+
this._tableManager.getTablesBySubunitId(unitId, subUnitId).forEach((table) => {
|
|
3633
|
+
const tableRange = table.getRange();
|
|
3634
|
+
if (range.startColumn < tableRange.startColumn) this._tableManager.updateTableRange(unitId, table.getId(), { newRange: {
|
|
3635
|
+
...tableRange,
|
|
3636
|
+
startColumn: tableRange.startColumn - removeCount,
|
|
3637
|
+
endColumn: tableRange.endColumn - removeCount
|
|
3638
|
+
} });
|
|
3639
|
+
});
|
|
3640
|
+
}
|
|
3641
|
+
});
|
|
3642
|
+
}
|
|
3643
|
+
};
|
|
3644
|
+
SheetTableRefRangeController = __decorate([
|
|
3645
|
+
__decorateParam(0, (0, _univerjs_core.Inject)(_univerjs_core.ICommandService)),
|
|
3646
|
+
__decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_sheets.RefRangeService)),
|
|
3647
|
+
__decorateParam(2, (0, _univerjs_core.Inject)(_univerjs_core.IUniverInstanceService)),
|
|
3648
|
+
__decorateParam(3, (0, _univerjs_core.Inject)(_univerjs_core.Injector)),
|
|
3649
|
+
__decorateParam(4, (0, _univerjs_core.Inject)(_univerjs_sheets.SheetInterceptorService)),
|
|
3650
|
+
__decorateParam(5, (0, _univerjs_core.Inject)(TableManager)),
|
|
3651
|
+
__decorateParam(6, (0, _univerjs_core.Inject)(_univerjs_core.LocaleService))
|
|
3652
|
+
], SheetTableRefRangeController);
|
|
3653
|
+
|
|
3654
|
+
//#endregion
|
|
3655
|
+
//#region src/controllers/sheet-table-theme.controller.ts
|
|
3656
|
+
let SheetsTableThemeController = class SheetsTableThemeController extends _univerjs_core.Disposable {
|
|
3657
|
+
constructor(_tableManager, _sheetRangeThemeService, _sheetRangeThemeModel, _configService) {
|
|
3658
|
+
super();
|
|
3659
|
+
this._tableManager = _tableManager;
|
|
3660
|
+
this._sheetRangeThemeService = _sheetRangeThemeService;
|
|
3661
|
+
this._sheetRangeThemeModel = _sheetRangeThemeModel;
|
|
3662
|
+
this._configService = _configService;
|
|
3663
|
+
_defineProperty(this, "_defaultThemeIndex", 0);
|
|
3664
|
+
_defineProperty(this, "_allThemes", []);
|
|
3665
|
+
this._initUserTableTheme();
|
|
3666
|
+
this.registerTableChangeEvent();
|
|
3667
|
+
this._initDefaultTableTheme();
|
|
3668
|
+
}
|
|
3669
|
+
registerTableChangeEvent() {
|
|
3670
|
+
this.disposeWithMe(this._tableManager.tableAdd$.subscribe((event) => {
|
|
3671
|
+
const { range, tableId, unitId, subUnitId, tableStyleId } = event;
|
|
3672
|
+
const table = this._tableManager.getTable(unitId, tableId);
|
|
3673
|
+
const _tableStyleId = tableStyleId || this._allThemes[this._defaultThemeIndex].name;
|
|
3674
|
+
table.setTableStyleId(_tableStyleId);
|
|
3675
|
+
this._sheetRangeThemeService.registerRangeThemeStyle(_tableStyleId, {
|
|
3676
|
+
unitId,
|
|
3677
|
+
subUnitId,
|
|
3678
|
+
range: { ...range }
|
|
3679
|
+
});
|
|
3680
|
+
}));
|
|
3681
|
+
this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe((event) => {
|
|
3682
|
+
const { range, oldRange, tableId, unitId, subUnitId } = event;
|
|
3683
|
+
const table = this._tableManager.getTable(unitId, tableId);
|
|
3684
|
+
let tableStyleId = table.getTableStyleId();
|
|
3685
|
+
if (!tableStyleId) {
|
|
3686
|
+
tableStyleId = this._allThemes[this._defaultThemeIndex].name;
|
|
3687
|
+
table.setTableStyleId(tableStyleId);
|
|
3688
|
+
}
|
|
3689
|
+
this._sheetRangeThemeService.removeRangeThemeRule(tableStyleId, {
|
|
3690
|
+
unitId,
|
|
3691
|
+
subUnitId,
|
|
3692
|
+
range: { ...oldRange }
|
|
3693
|
+
});
|
|
3694
|
+
this._sheetRangeThemeService.registerRangeThemeStyle(tableStyleId, {
|
|
3695
|
+
unitId,
|
|
3696
|
+
subUnitId,
|
|
3697
|
+
range: { ...range }
|
|
3698
|
+
});
|
|
3699
|
+
}));
|
|
3700
|
+
this.disposeWithMe(this._tableManager.tableThemeChanged$.subscribe((event) => {
|
|
3701
|
+
const { theme, oldTheme, tableId, unitId, subUnitId } = event;
|
|
3702
|
+
const range = this._tableManager.getTable(unitId, tableId).getRange();
|
|
3703
|
+
this._sheetRangeThemeService.removeRangeThemeRule(oldTheme, {
|
|
3704
|
+
unitId,
|
|
3705
|
+
subUnitId,
|
|
3706
|
+
range: { ...range }
|
|
3707
|
+
});
|
|
3708
|
+
this._sheetRangeThemeService.registerRangeThemeStyle(theme, {
|
|
3709
|
+
unitId,
|
|
3710
|
+
subUnitId,
|
|
3711
|
+
range: { ...range }
|
|
3712
|
+
});
|
|
3713
|
+
}));
|
|
3714
|
+
this.disposeWithMe(this._tableManager.tableDelete$.subscribe((event) => {
|
|
3715
|
+
const { range, unitId, subUnitId, tableStyleId = this._allThemes[this._defaultThemeIndex].name } = event;
|
|
3716
|
+
this._sheetRangeThemeService.removeRangeThemeRule(tableStyleId, {
|
|
3717
|
+
unitId,
|
|
3718
|
+
subUnitId,
|
|
3719
|
+
range: { ...range }
|
|
3720
|
+
});
|
|
3721
|
+
}));
|
|
3722
|
+
}
|
|
3723
|
+
_initUserTableTheme() {
|
|
3724
|
+
const tableConfig = this._configService.getConfig("sheets-table.config") || {};
|
|
3725
|
+
const defaultThemeIndex = tableConfig.defaultThemeIndex || 0;
|
|
3726
|
+
const userThemes = tableConfig.userThemes || [];
|
|
3727
|
+
this._defaultThemeIndex = defaultThemeIndex;
|
|
3728
|
+
this._allThemes = userThemes.concat(tableThemeConfig);
|
|
3729
|
+
}
|
|
3730
|
+
_initDefaultTableTheme() {
|
|
3731
|
+
for (let i = 0; i < this._allThemes.length; i++) {
|
|
3732
|
+
const { name, style } = this._allThemes[i];
|
|
3733
|
+
const rangeThemeStyle = new _univerjs_sheets.RangeThemeStyle(name, style);
|
|
3734
|
+
this._sheetRangeThemeModel.registerDefaultRangeTheme(rangeThemeStyle);
|
|
3735
|
+
}
|
|
3736
|
+
}
|
|
3737
|
+
dispose() {
|
|
3738
|
+
super.dispose();
|
|
3739
|
+
this._allThemes = [];
|
|
3740
|
+
this._defaultThemeIndex = 0;
|
|
3741
|
+
}
|
|
3742
|
+
};
|
|
3743
|
+
SheetsTableThemeController = __decorate([
|
|
3744
|
+
__decorateParam(0, (0, _univerjs_core.Inject)(TableManager)),
|
|
3745
|
+
__decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_sheets.SheetRangeThemeService)),
|
|
3746
|
+
__decorateParam(2, (0, _univerjs_core.Inject)(_univerjs_sheets.SheetRangeThemeModel)),
|
|
3747
|
+
__decorateParam(3, _univerjs_core.IConfigService)
|
|
3748
|
+
], SheetsTableThemeController);
|
|
3749
|
+
|
|
3750
|
+
//#endregion
|
|
3751
|
+
//#region src/controllers/table-filter.controller.ts
|
|
3752
|
+
let TableFilterController = class TableFilterController extends _univerjs_core.Disposable {
|
|
3753
|
+
constructor(_tableManager, _sheetInterceptorService, _univerInstanceService, _zebraCrossingCacheController) {
|
|
3754
|
+
super();
|
|
3755
|
+
this._tableManager = _tableManager;
|
|
3756
|
+
this._sheetInterceptorService = _sheetInterceptorService;
|
|
3757
|
+
this._univerInstanceService = _univerInstanceService;
|
|
3758
|
+
this._zebraCrossingCacheController = _zebraCrossingCacheController;
|
|
3759
|
+
_defineProperty(this, "_tableFilteredOutRows$", new rxjs.BehaviorSubject(/* @__PURE__ */ new Set()));
|
|
3760
|
+
_defineProperty(this, "tableFilteredOutRows$", this._tableFilteredOutRows$.asObservable());
|
|
3761
|
+
_defineProperty(this, "_subscription", null);
|
|
3762
|
+
this.registerFilterChangeEvent();
|
|
3763
|
+
this.initTableHiddenRowIntercept();
|
|
3764
|
+
this._initFilteredOutRows();
|
|
3765
|
+
}
|
|
3766
|
+
get tableFilteredOutRows() {
|
|
3767
|
+
return this._tableFilteredOutRows$.value;
|
|
3768
|
+
}
|
|
3769
|
+
set tableFilteredOutRows(value) {
|
|
3770
|
+
this._tableFilteredOutRows$.next(value);
|
|
3771
|
+
}
|
|
3772
|
+
initTableHiddenRowIntercept() {
|
|
3773
|
+
this.disposeWithMe(this._sheetInterceptorService.intercept(_univerjs_sheets.INTERCEPTOR_POINT.ROW_FILTERED, {
|
|
3774
|
+
priority: 100,
|
|
3775
|
+
handler: (filtered, rowLocation, next) => {
|
|
3776
|
+
if (filtered) return true;
|
|
3777
|
+
const isTableFiltered = this.tableFilteredOutRows.has(rowLocation.row);
|
|
3778
|
+
return isTableFiltered ? true : next(isTableFiltered);
|
|
3779
|
+
}
|
|
3780
|
+
}));
|
|
3781
|
+
}
|
|
3782
|
+
_initFilteredOutRows() {
|
|
3783
|
+
this._tableManager.tableInitStatus$.pipe((0, rxjs.filter)((initialized) => initialized), (0, rxjs.switchMap)(() => {
|
|
3784
|
+
return this._univerInstanceService.getCurrentTypeOfUnit$(_univerjs_core.UniverInstanceType.UNIVER_SHEET);
|
|
3785
|
+
}), (0, rxjs.filter)((workbook) => workbook !== null && workbook !== void 0), (0, rxjs.switchMap)((workbook) => workbook.activeSheet$), (0, rxjs.filter)((sheet) => sheet !== null && sheet !== void 0)).subscribe(() => {
|
|
3786
|
+
const target = (0, _univerjs_sheets.getSheetCommandTarget)(this._univerInstanceService);
|
|
3787
|
+
if (!target) return;
|
|
3788
|
+
const { unitId, subUnitId } = target;
|
|
3789
|
+
this.tableFilteredOutRows.clear();
|
|
3790
|
+
this._tableManager.getTablesBySubunitId(unitId, subUnitId).forEach((table) => {
|
|
3791
|
+
const tableFilteredRows = table.getTableFilters().getFilterOutRows();
|
|
3792
|
+
if (!tableFilteredRows) return;
|
|
3793
|
+
for (const row of tableFilteredRows) this.tableFilteredOutRows.add(row);
|
|
3794
|
+
});
|
|
3795
|
+
});
|
|
3796
|
+
}
|
|
3797
|
+
registerFilterChangeEvent() {
|
|
3798
|
+
this.disposeWithMe(this._tableManager.tableFilterChanged$.subscribe((event) => {
|
|
3799
|
+
var _this$_univerInstance;
|
|
3800
|
+
const { unitId, subUnitId, tableId } = event;
|
|
3801
|
+
const worksheet = (_this$_univerInstance = this._univerInstanceService.getUnit(unitId)) === null || _this$_univerInstance === void 0 ? void 0 : _this$_univerInstance.getSheetBySheetId(subUnitId);
|
|
3802
|
+
const table = this._tableManager.getTable(unitId, tableId);
|
|
3803
|
+
if (!worksheet || !table) return;
|
|
3804
|
+
this.tableFilteredOutRows.clear();
|
|
3805
|
+
table.getTableFilters().doFilter(worksheet, table.getTableFilterRange());
|
|
3806
|
+
this._tableManager.getTablesBySubunitId(unitId, subUnitId).forEach((table) => {
|
|
3807
|
+
const tableFilteredRows = table.getTableFilters().getFilterOutRows();
|
|
3808
|
+
if (!tableFilteredRows) return;
|
|
3809
|
+
for (const row of tableFilteredRows) this.tableFilteredOutRows.add(row);
|
|
3810
|
+
});
|
|
3811
|
+
this._zebraCrossingCacheController.updateZebraCrossingCache(unitId, subUnitId);
|
|
3812
|
+
}));
|
|
3813
|
+
}
|
|
3814
|
+
dispose() {
|
|
3815
|
+
var _this$_subscription;
|
|
3816
|
+
super.dispose();
|
|
3817
|
+
(_this$_subscription = this._subscription) === null || _this$_subscription === void 0 || _this$_subscription.unsubscribe();
|
|
3818
|
+
}
|
|
3819
|
+
};
|
|
3820
|
+
TableFilterController = __decorate([
|
|
3821
|
+
__decorateParam(0, (0, _univerjs_core.Inject)(TableManager)),
|
|
3822
|
+
__decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_sheets.SheetInterceptorService)),
|
|
3823
|
+
__decorateParam(2, (0, _univerjs_core.Inject)(_univerjs_core.IUniverInstanceService)),
|
|
3824
|
+
__decorateParam(3, (0, _univerjs_core.Inject)(_univerjs_sheets.ZebraCrossingCacheController))
|
|
3825
|
+
], TableFilterController);
|
|
3826
|
+
|
|
3827
|
+
//#endregion
|
|
3828
|
+
//#region src/plugin.ts
|
|
3829
|
+
let UniverSheetsTablePlugin = class UniverSheetsTablePlugin extends _univerjs_core.Plugin {
|
|
3830
|
+
constructor(_config = defaultPluginConfig, _injector, _configService, _commandService) {
|
|
3831
|
+
super();
|
|
3832
|
+
this._config = _config;
|
|
3833
|
+
this._injector = _injector;
|
|
3834
|
+
this._configService = _configService;
|
|
3835
|
+
this._commandService = _commandService;
|
|
3836
|
+
const { ...rest } = (0, _univerjs_core.merge)({}, defaultPluginConfig, this._config);
|
|
3837
|
+
this._configService.setConfig(SHEETS_TABLE_PLUGIN_CONFIG_KEY, rest);
|
|
3838
|
+
this._initRegisterCommand();
|
|
3839
|
+
}
|
|
3840
|
+
onStarting() {
|
|
3841
|
+
(0, _univerjs_core.registerDependencies)(this._injector, [
|
|
3842
|
+
[TableManager],
|
|
3843
|
+
[SheetsTableThemeController],
|
|
3844
|
+
[SheetsTableController],
|
|
3845
|
+
[SheetTableService],
|
|
3846
|
+
[TableFilterController],
|
|
3847
|
+
[SheetTableRangeController],
|
|
3848
|
+
[SheetTableRefRangeController],
|
|
3849
|
+
[SheetTableFormulaController]
|
|
3850
|
+
]);
|
|
3851
|
+
}
|
|
3852
|
+
onReady() {
|
|
3853
|
+
(0, _univerjs_core.touchDependencies)(this._injector, [
|
|
3854
|
+
[SheetTableFormulaController],
|
|
3855
|
+
[SheetTableRangeController],
|
|
3856
|
+
[SheetTableRefRangeController],
|
|
3857
|
+
[SheetsTableThemeController],
|
|
3858
|
+
[SheetsTableController],
|
|
3859
|
+
[SheetTableService],
|
|
3860
|
+
[TableFilterController]
|
|
3861
|
+
]);
|
|
3862
|
+
(0, _univerjs_core.touchDependencies)(this._injector, [[TableManager]]);
|
|
3863
|
+
}
|
|
3864
|
+
_initRegisterCommand() {
|
|
3865
|
+
[
|
|
3866
|
+
AddSheetTableCommand,
|
|
3867
|
+
AddSheetTableMutation,
|
|
3868
|
+
DeleteSheetTableCommand,
|
|
3869
|
+
DeleteSheetTableMutation,
|
|
3870
|
+
SetSheetTableFilterMutation,
|
|
3871
|
+
SetSheetTableFilterCommand,
|
|
3872
|
+
SetSheetTableCommand,
|
|
3873
|
+
SetSheetTableMutation,
|
|
3874
|
+
AddTableThemeCommand,
|
|
3875
|
+
RemoveTableThemeCommand,
|
|
3876
|
+
SheetTableInsertRowCommand,
|
|
3877
|
+
SheetTableInsertColCommand,
|
|
3878
|
+
SheetTableRemoveRowCommand,
|
|
3879
|
+
SheetTableRemoveColCommand
|
|
3880
|
+
].forEach((m) => this._commandService.registerCommand(m));
|
|
3881
|
+
}
|
|
3882
|
+
};
|
|
3883
|
+
_defineProperty(UniverSheetsTablePlugin, "pluginName", PLUGIN_NAME);
|
|
3884
|
+
_defineProperty(UniverSheetsTablePlugin, "packageName", name);
|
|
3885
|
+
_defineProperty(UniverSheetsTablePlugin, "version", version);
|
|
3886
|
+
_defineProperty(UniverSheetsTablePlugin, "type", _univerjs_core.UniverInstanceType.UNIVER_SHEET);
|
|
3887
|
+
UniverSheetsTablePlugin = __decorate([
|
|
3888
|
+
__decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_core.Injector)),
|
|
3889
|
+
__decorateParam(2, _univerjs_core.IConfigService),
|
|
3890
|
+
__decorateParam(3, (0, _univerjs_core.Inject)(_univerjs_core.ICommandService))
|
|
3891
|
+
], UniverSheetsTablePlugin);
|
|
3892
|
+
|
|
3893
|
+
//#endregion
|
|
3894
|
+
exports.AddSheetTableCommand = AddSheetTableCommand;
|
|
3895
|
+
exports.AddSheetTableMutation = AddSheetTableMutation;
|
|
3896
|
+
exports.AddTableThemeCommand = AddTableThemeCommand;
|
|
3897
|
+
exports.DeleteSheetTableCommand = DeleteSheetTableCommand;
|
|
3898
|
+
exports.DeleteSheetTableMutation = DeleteSheetTableMutation;
|
|
3899
|
+
exports.RemoveTableThemeCommand = RemoveTableThemeCommand;
|
|
3900
|
+
exports.SHEET_TABLE_CUSTOM_THEME_PREFIX = SHEET_TABLE_CUSTOM_THEME_PREFIX;
|
|
3901
|
+
exports.SetSheetTableCommand = SetSheetTableCommand;
|
|
3902
|
+
exports.SetSheetTableFilterCommand = SetSheetTableFilterCommand;
|
|
3903
|
+
exports.SetSheetTableFilterMutation = SetSheetTableFilterMutation;
|
|
3904
|
+
exports.SetSheetTableMutation = SetSheetTableMutation;
|
|
3905
|
+
exports.SheetTableInsertColCommand = SheetTableInsertColCommand;
|
|
3906
|
+
exports.SheetTableInsertRowCommand = SheetTableInsertRowCommand;
|
|
3907
|
+
exports.SheetTableRemoveColCommand = SheetTableRemoveColCommand;
|
|
3908
|
+
exports.SheetTableRemoveRowCommand = SheetTableRemoveRowCommand;
|
|
3909
|
+
Object.defineProperty(exports, 'SheetTableService', {
|
|
3910
|
+
enumerable: true,
|
|
3911
|
+
get: function () {
|
|
3912
|
+
return SheetTableService;
|
|
3913
|
+
}
|
|
3914
|
+
});
|
|
3915
|
+
exports.SheetsTableButtonStateEnum = SheetsTableButtonStateEnum;
|
|
3916
|
+
Object.defineProperty(exports, 'SheetsTableController', {
|
|
3917
|
+
enumerable: true,
|
|
3918
|
+
get: function () {
|
|
3919
|
+
return SheetsTableController;
|
|
3920
|
+
}
|
|
3921
|
+
});
|
|
3922
|
+
exports.SheetsTableSortStateEnum = SheetsTableSortStateEnum;
|
|
3923
|
+
exports.TableColumnDataTypeEnum = TableColumnDataTypeEnum;
|
|
3924
|
+
exports.TableColumnFilterTypeEnum = TableColumnFilterTypeEnum;
|
|
3925
|
+
exports.TableConditionTypeEnum = TableConditionTypeEnum;
|
|
3926
|
+
exports.TableDateCompareTypeEnum = TableDateCompareTypeEnum;
|
|
3927
|
+
Object.defineProperty(exports, 'TableManager', {
|
|
3928
|
+
enumerable: true,
|
|
3929
|
+
get: function () {
|
|
3930
|
+
return TableManager;
|
|
3931
|
+
}
|
|
3932
|
+
});
|
|
3933
|
+
exports.TableNumberCompareTypeEnum = TableNumberCompareTypeEnum;
|
|
3934
|
+
exports.TableStringCompareTypeEnum = TableStringCompareTypeEnum;
|
|
3935
|
+
Object.defineProperty(exports, 'UniverSheetsTablePlugin', {
|
|
3936
|
+
enumerable: true,
|
|
3937
|
+
get: function () {
|
|
3938
|
+
return UniverSheetsTablePlugin;
|
|
3939
|
+
}
|
|
3940
|
+
});
|
|
3941
|
+
exports.customEmptyThemeWithBorderStyle = customEmptyThemeWithBorderStyle;
|
|
3942
|
+
exports.isConditionFilter = isConditionFilter;
|
|
3943
|
+
exports.isManualTableFilter = isManualTableFilter;
|
|
3944
|
+
exports.processStyleWithBorderStyle = processStyleWithBorderStyle;
|