@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/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;