@univerjs/sheets-table 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/cjs/index.js CHANGED
@@ -3925,7 +3925,7 @@ SheetsTableThemeController = __decorate([
3925
3925
  //#endregion
3926
3926
  //#region package.json
3927
3927
  var name = "@univerjs/sheets-table";
3928
- var version = "1.0.0";
3928
+ var version = "1.0.1";
3929
3929
 
3930
3930
  //#endregion
3931
3931
  //#region src/controllers/sheet-table-formula.controller.ts
package/lib/es/index.js CHANGED
@@ -3924,7 +3924,7 @@ SheetsTableThemeController = __decorate([
3924
3924
  //#endregion
3925
3925
  //#region package.json
3926
3926
  var name = "@univerjs/sheets-table";
3927
- var version = "1.0.0";
3927
+ var version = "1.0.1";
3928
3928
 
3929
3929
  //#endregion
3930
3930
  //#region src/controllers/sheet-table-formula.controller.ts
package/lib/index.js CHANGED
@@ -3924,7 +3924,7 @@ SheetsTableThemeController = __decorate([
3924
3924
  //#endregion
3925
3925
  //#region package.json
3926
3926
  var name = "@univerjs/sheets-table";
3927
- var version = "1.0.0";
3927
+ var version = "1.0.1";
3928
3928
 
3929
3929
  //#endregion
3930
3930
  //#region src/controllers/sheet-table-formula.controller.ts
package/lib/umd/index.js CHANGED
@@ -1 +1 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/engine-formula"),require("@univerjs/sheets"),require("rxjs")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/engine-formula`,`@univerjs/sheets`,`rxjs`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverSheetsTable={},e.UniverCore,e.UniverEngineFormula,e.UniverSheets,e.rxjs))})(this,function(e,t,n,r,i){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let a=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}({}),o=function(e){return e.manual=`manual`,e.condition=`condition`,e.color=`color`,e.record=`record`,e}({}),s=function(e){return e.Date=`date`,e.Number=`number`,e.String=`string`,e.Logic=`logic`,e}({}),c=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}({}),l=function(e){return e.Equal=`equal`,e.NotEqual=`notEqual`,e.Contains=`contains`,e.NotContains=`notContains`,e.StartsWith=`startsWith`,e.EndsWith=`endsWith`,e}({}),u=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}({}),d=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}({}),f=function(e){return e.Asc=`asc`,e.Desc=`desc`,e.None=`none`,e}({});function p(e,t){return`${t} ${e}`}let m=`TRUE`,h=`FALSE`,g=e=>{var t;return((t=e.body)==null?void 0:t.dataStream.replace(/\r\n$/,``))||``};function _(e){if(e){let{v:n,t:r,p:i}=e;return i?g(i):(r===t.CellValueType.FORCE_STRING||r===t.CellValueType.STRING)&&n!=null?String(n):r===t.CellValueType.BOOLEAN?n?m:h:r===t.CellValueType.NUMBER?String(n):typeof n==`boolean`?n?m:h:n==null?``:String(n)}return``}function v(e,t){if(e!=null)switch(t){case`asc`:return 2;case`desc`:return 3;default:return 1}else switch(t){case`asc`:return 5;case`desc`:return 6;default:return 4}}function y(e){return e?e.filterType===`condition`:!1}function b(e){return e?e.filterType===`manual`:!1}function x(e){return e?e.filterType===`color`:!1}function S(e){return e?e.filterType===`record`:!1}function C(e,n){let{univerInstanceService:r,tableManager:i,definedNamesService:a}=n,o=new Set,s=r==null?void 0:r.getUnit(e,t.UniverInstanceType.UNIVER_SHEET);s&&s.getSheets().forEach(e=>{o.add(e.getName().toLowerCase())});let c=i==null?void 0:i.getTableList(e);c&&c.length>0&&c.forEach(e=>{o.add(e.name.toLowerCase())});let l=a==null?void 0:a.getDefinedNameMap(e);return l&&Object.values(l).forEach(e=>{o.add(e.name.toLowerCase())}),o}let w={s:t.BorderStyleTypes.THIN,cl:{rgb:`rgb(95, 101, 116)`}},T={},ee={headerRowStyle:{bd:{t:w}},headerColumnStyle:{bd:{l:w}},lastColumnStyle:{bd:{r:w}},lastRowStyle:{bd:{b:w}}},te=(e,t)=>{if(e===`headerRowStyle`){if(!t.bd)return{...t,bd:{t:w}}}else if(e===`lastRowStyle`){if(!t.bd)return{...t,bd:{b:w}}}else if(e===`lastColumnStyle`){if(!t.bd)return{...t,bd:{r:w}}}else if(e===`headerColumnStyle`&&!t.bd)return{...t,bd:{l:w}};return t},ne=[[[`#6280F9`,`#FFFFFF`,`#EEF2FF`,`#DCE4FF`],[`#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:w}},headerColumnStyle:{bd:{l:w}},firstRowStyle:{bg:{rgb:a}},secondRowStyle:{bg:{rgb:o}},lastRowStyle:{bg:{rgb:s},bd:{b:w}},lastColumnStyle:{bd:{r:w}}}}});function E(e){"@babel/helpers - typeof";return E=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},E(e)}function re(e,t){if(E(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(E(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ie(e){var t=re(e,`string`);return E(t)==`symbol`?t:t+``}function D(e,t,n){return(t=ie(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var O=class{constructor(e,t){D(this,`dataType`,void 0),D(this,`id`,void 0),D(this,`displayName`,void 0),D(this,`formula`,void 0),D(this,`formulaIsArray`,void 0),D(this,`totalsRowLabel`,void 0),D(this,`totalsRowFunction`,void 0),D(this,`totalsRowFormula`,void 0),D(this,`showFilterButton`,void 0),D(this,`meta`,void 0),D(this,`style`,void 0),this.id=e,this.displayName=t,this.dataType=`string`,this.formula=``,this.showFilterButton=!0,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,formulaIsArray:this.formulaIsArray,totalsRowLabel:this.totalsRowLabel,totalsRowFunction:this.totalsRowFunction,totalsRowFormula:this.totalsRowFormula,showFilterButton:this.showFilterButton,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.formulaIsArray=e.formulaIsArray,this.totalsRowLabel=e.totalsRowLabel,this.totalsRowFunction=e.totalsRowFunction,this.totalsRowFormula=e.totalsRowFormula,this.showFilterButton=e.showFilterButton??!0,this.meta=e.meta,this.style=e.style}isShowFilterButton(){return this.showFilterButton}};let ae=`SHEET_TABLE_PLUGIN`,k=`SHEET_TABLE`,oe=`table-custom`,se=`__UNIVER_TABLE_FILTER_EMPTY__`,ce=e=>e.getMonth()<=2,le=e=>{let t=e.getMonth();return t>2&&t<=5},ue=e=>{let t=e.getMonth();return t>5&&t<=8},de=e=>{let t=e.getMonth();return t>8&&t<=11},fe=e=>e.getMonth()===0,pe=e=>e.getMonth()===1,me=e=>e.getMonth()===2,he=e=>e.getMonth()===3,ge=e=>e.getMonth()===4,_e=e=>e.getMonth()===5,ve=e=>e.getMonth()===6,ye=e=>e.getMonth()===7,be=e=>e.getMonth()===8,xe=e=>e.getMonth()===9,Se=e=>e.getMonth()===10,Ce=e=>e.getMonth()===11,we=(e,t=new Date)=>e.toDateString()===t.toDateString(),Te=(e,t=new Date)=>{let n=new Date(t);return n.setDate(n.getDate()+1),e.toDateString()===n.toDateString()},Ee=(e,t=new Date)=>{let n=new Date(t);return n.setDate(n.getDate()-1),e.toDateString()===n.toDateString()},A=e=>{let t=e.getDay(),n=e.getDate()-t+(t===0?-6:1),r=new Date(e);return r.setDate(n),r},De=6048e5,Oe=(e,t=new Date)=>{let n=A(e),r=A(t);return n.toDateString()===r.toDateString()},ke=(e,t=new Date)=>{let n=A(e),r=new Date(A(t).getTime()+De);return n.toDateString()===r.toDateString()},Ae=(e,t=new Date)=>{let n=A(e),r=new Date(A(t).getTime()-De);return n.toDateString()===r.toDateString()},je=(e,t=new Date)=>e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth(),Me=e=>{let t=new Date(e);return t.setHours(0,0,0,0),t.setDate(1),t},Ne=(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()},Pe=(e,t=new Date)=>{let n=Me(t),r=new Date(n);r.setMonth(r.getMonth()+1,0);let i=e.getTime();return i>=n.getTime()&&i<r.getTime()},j=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},Fe=(e,t=new Date)=>{let n=j(t),r=new Date(n);r.setMonth(r.getMonth()+3);let i=e.getTime();return i>=n.getTime()&&i<r.getTime()},Ie=(e,t=new Date)=>{let n=j(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()},Le=(e,t=new Date)=>{let n=j(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()},Re=(e,t=new Date)=>e.getFullYear()===t.getFullYear(),ze=(e,t=new Date)=>e.getFullYear()===t.getFullYear()+1,Be=(e,t=new Date)=>e.getFullYear()===t.getFullYear()-1,Ve=(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 He(e){switch(e.compareType){case`equal`:{let t=new Date(e.expectedValue);return e=>e.getTime()===t.getTime()}case`notEqual`:{let t=new Date(e.expectedValue);return e=>e.getTime()!==t.getTime()}case`after`:{let t=new Date(e.expectedValue);return e=>e.getTime()>t.getTime()}case`before`:{let t=new Date(e.expectedValue);return e=>e.getTime()<t.getTime()}case`afterOrEqual`:{let t=new Date(e.expectedValue);return e=>e.getTime()>=t.getTime()}case`beforeOrEqual`:{let t=new Date(e.expectedValue);return e=>e.getTime()<=t.getTime()}case`between`:return t=>{let[n,r]=e.expectedValue;return t.getTime()>=new Date(n).getTime()&&t.getTime()<=new Date(r).getTime()};case`notBetween`:return t=>{let[n,r]=e.expectedValue;return t.getTime()<new Date(n).getTime()||t.getTime()>new Date(r).getTime()};case`today`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>we(e,t)}case`yesterday`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Ee(e,t)}case`tomorrow`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Te(e,t)}case`thisWeek`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Oe(e,t)}case`lastWeek`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Ae(e,t)}case`nextWeek`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>ke(e,t)}case`thisMonth`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>je(e,t)}case`lastMonth`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Pe(e,t)}case`nextMonth`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Ne(e,t)}case`thisQuarter`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Fe(e,t)}case`lastQuarter`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Le(e,t)}case`nextQuarter`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Ie(e,t)}case`thisYear`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Re(e,t)}case`lastYear`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Be(e,t)}case`nextYear`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>ze(e,t)}case`yearToDate`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Ve(e,t)}case`m1`:return fe;case`m2`:return pe;case`m3`:return me;case`m4`:return he;case`m5`:return ge;case`m6`:return _e;case`m7`:return ve;case`m8`:return ye;case`m9`:return be;case`m10`:return xe;case`m11`:return Se;case`m12`:return Ce;case`q1`:return ce;case`q2`:return le;case`q3`:return ue;case`q4`:return de;default:throw Error(`Unsupported compare type`)}}var Ue=class{constructor(){D(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)}},We=class extends Ue{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)}};let Ge=(e,t)=>{let n=new We;for(let r of e)n.insert(r),n.size()>t&&n.pop();return n.heap},Ke=(e,t)=>e>t,qe=(e,t)=>e<t,Je=(e,t,n)=>Ge(e,t).includes(n);function Ye(e,t){switch(e.compareType){case`equal`:{let t=Number(e.expectedValue);return e=>e===t}case`notEqual`:{let t=Number(e.expectedValue);return e=>e!==t}case`greaterThan`:{let t=Number(e.expectedValue);return e=>e>t}case`greaterThanOrEqual`:{let t=Number(e.expectedValue);return e=>e>=t}case`lessThan`:{let t=Number(e.expectedValue);return e=>e<t}case`lessThanOrEqual`:{let t=Number(e.expectedValue);return e=>e<=t}case`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`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`above`:{let e=t.average;return t=>Ke(t,e)}case`below`:{let e=t.average;return t=>qe(t,e)}case`topN`:{let n=t.list,r=Number(e.expectedValue);return e=>Je(n,r,e)}}}let Xe=(e,n)=>t.regexp.createFromWildcard(n).test(e),Ze=(e,n)=>!t.regexp.createFromWildcard(n).test(e),Qe=(e,n)=>t.regexp.createFromWildcard(`*${n}*`).test(e),$e=(e,n)=>!t.regexp.createFromWildcard(`*${n}*`).test(e),et=(e,n)=>t.regexp.createFromWildcard(`${n}*`).test(e),tt=(e,n)=>t.regexp.createFromWildcard(`*${n}`).test(e);function nt(e){switch(e.compareType){case`equal`:return t=>Xe(t,e.expectedValue);case`notEqual`:return t=>Ze(t,e.expectedValue);case`contains`:return t=>Qe(t,e.expectedValue);case`notContains`:return t=>$e(t,e.expectedValue);case`startsWith`:return t=>et(t,e.expectedValue);case`endsWith`:return t=>tt(t,e.expectedValue);default:return console.error(`Unknown filter operator: ${e.compareType}`),e=>!0}}let rt=new Set([`above`,`below`,`topN`]);function it(e){return rt.has(e)}function at(e,t){if(it(e.filterInfo.compareType))return e=>!0;switch(e.filterInfo.conditionType){case`date`:return He(e.filterInfo);case`number`:return Ye(e.filterInfo,t);case`string`:return nt(e.filterInfo);default:return e=>!0}}function M(e,n,r,i,a=t.DateSystem.Date1900){switch(i){case`date`:{let t=ct(e,n,r);return t==null?null:lt(t,a)}case`number`:return ct(e,n,r);default:return st(e,n,r)}}let ot=e=>{var t;return((t=e.body)==null?void 0:t.dataStream.replace(/\r\n$/,``))||``};function st(e,n,r){let i=e.getCell(n,r);if(!i)return null;let{v:a,t:o,p:s}=i;if(s)return ot(s);if(typeof a==`string`)return o===t.CellValueType.BOOLEAN?a.toUpperCase():a;if(typeof a==`number`)return o===t.CellValueType.BOOLEAN?a?`TRUE`:`FALSE`:a;if(typeof a==`boolean`)return a?`TRUE`:`FALSE`;if(a!==void 0)return String(a)}function ct(e,n,r){let i=e.getCell(n,r);if(!i)return null;let{v:a,t:o,p:s}=i;return s?null:typeof a==`string`&&o===t.CellValueType.NUMBER?Number(e.getCellRaw(n,r).v):Number(a)}function lt(e,n=t.DateSystem.Date1900){let r=(0,t.excelSerialToDateTime)(e,n);return Number.isNaN(r.getTime())?r:new Date(r.getUTCFullYear(),r.getUTCMonth(),r.getUTCDate(),r.getUTCHours(),r.getUTCMinutes(),r.getUTCSeconds(),r.getUTCMilliseconds())}function ut(e,r,i){let a=e.getCell(r,i),o=(0,n.extractFormulaError)(a,(a==null?void 0:a.isInArrayFormulaRange)===!0);if(o!==null)return{type:t.RecordValueType.Error,value:o};if(!a)return{type:t.RecordValueType.Blank};if(a.p)return{type:t.RecordValueType.String,value:_(a)};let s=a.v;if(s==null)return{type:t.RecordValueType.Blank};if(a.t===t.CellValueType.STRING||a.t===t.CellValueType.FORCE_STRING)return{type:t.RecordValueType.String,value:String(s)};if(a.t===t.CellValueType.BOOLEAN)return{type:t.RecordValueType.Boolean,value:dt(s)};if(a.t===t.CellValueType.NUMBER||typeof s==`number`){var c;let n=ft(pt(e,r,i,s,a.t===t.CellValueType.NUMBER,a.isInArrayFormulaRange===!0)),o=(c=e.getComposedCellStyleByCellData(r,i,a).n)==null?void 0:c.pattern;return o&&t.numfmt.getFormatInfo(o).isDate?{type:t.RecordValueType.Date,value:n}:{type:t.RecordValueType.Number,value:n}}if(typeof s==`boolean`)return{type:t.RecordValueType.Boolean,value:s};if(typeof s==`string`)return{type:t.RecordValueType.String,value:s};throw TypeError(`Invalid table record cell value.`)}function N(e){let n=e;if(!mt(n)||typeof n.type!=`string`)throw TypeError(`Invalid table record value.`);switch(n.type){case t.RecordValueType.Blank:if(`value`in n)throw TypeError(`Blank table record values cannot have a value.`);return`["blank"]`;case t.RecordValueType.String:case t.RecordValueType.Error:if(typeof n.value!=`string`)throw TypeError(`Invalid table record value.`);return JSON.stringify([n.type,n.value]);case t.RecordValueType.Boolean:if(typeof n.value!=`boolean`)throw TypeError(`Invalid table record value.`);return JSON.stringify([n.type,n.value]);case t.RecordValueType.Number:case t.RecordValueType.Date:if(typeof n.value!=`number`)throw TypeError(`Invalid table record value.`);if(!Number.isFinite(n.value))throw RangeError(`Table record numeric values must be finite.`);return JSON.stringify([n.type,n.value===0?0:n.value]);default:throw TypeError(`Unknown table record value type.`)}}function P(e){let n=e;if(!mt(n)||n.filterType!==`record`||n.mode!==t.FilterSelectionMode.Include&&n.mode!==t.FilterSelectionMode.Exclude||!Array.isArray(n.values))throw TypeError(`Invalid table record filter.`);let r=new Set(n.values.map(e=>N(e)));return n.mode===t.FilterSelectionMode.Include?e=>r.has(N(e)):e=>!r.has(N(e))}function F(e){return P(e),{filterType:`record`,mode:e.mode,values:e.values.map(e=>e.type===t.RecordValueType.Blank?{type:t.RecordValueType.Blank}:{...e})}}function dt(e){if(e===!0||e===1||typeof e==`string`&&e.toUpperCase()===`TRUE`)return!0;if(e===!1||e===0||typeof e==`string`&&e.toUpperCase()===`FALSE`)return!1;throw TypeError(`Invalid table record boolean value.`)}function ft(e){let t=typeof e==`number`?e:Number(e);if(!Number.isFinite(t))throw RangeError(`Table record numeric values must be finite.`);return t}function pt(e,t,n,r,i,a){var o;return!i||a?r:((o=e.getCellRaw(t,n))==null?void 0:o.v)??r}function mt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var ht=class{constructor(){D(this,`_tableColumnFilterList`,void 0),D(this,`_tableSortInfo`,void 0),D(this,`_filterOutRows`,new Set),this._tableColumnFilterList=[]}setColumnFilter(e,t){t?t.filterType===`record`?this._tableColumnFilterList[e]=F(t):this._tableColumnFilterList[e]=t:this._tableColumnFilterList[e]=void 0}setSortState(e,t){this._tableSortInfo={columnIndex:e,sortState:t}}setSortInfo(e){this._tableSortInfo=e}getColumnFilter(e){let t=this._tableColumnFilterList[e];return(t==null?void 0:t.filterType)===`record`?F(t):t}getFilterState(e){var t;let n=((t=this._tableSortInfo)==null?void 0:t.columnIndex)===e?this._tableSortInfo.sortState:`none`;return v(this._tableColumnFilterList[e],n)}getSortState(){return this._tableSortInfo??{}}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}setFilterOutRows(e){this._filterOutRows=new Set(e)}doFilter(e,n,r=t.DateSystem.Date1900){let i=new Set,a=this._tableColumnFilterList;for(let t=0;t<a.length;t++)a[t]&&this.doColumnFilter(e,n,t,i,r);return this._filterOutRows=i,i}doColumnFilter(e,n,r,i,a=t.DateSystem.Date1900){let o=this._tableColumnFilterList[r];if(o&&e){let{startRow:t,endRow:s,startColumn:c}=n,l=c+r;if(o.filterType===`record`){let n=P(o);for(let r=t;r<=s;r++)n(ut(e,r,l))||i.add(r);return}let u=this.getExecuteFunc(e,n,r,o);for(let n=t;n<=s;n++){if(x(o)){let t=e.getCell(n,l);u(e.getComposedCellStyleByCellData(n,l,t))||i.add(n);continue}let t=y(o)?o.filterInfo.conditionType:`string`,r=M(e,n,l,t,a);r===null&&!u(r)?i.add(n):u(M(e,n,l,t,a))||i.add(n)}}}_getNumberCalculatedOptions(e,t,n){let{startRow:r,endRow:i,startColumn:a}=t,o=a+n,s=[],c=0,l=0;for(let t=r;t<=i;t++){let n=M(e,t,o,`number`);n!==null&&(s.push(n),c++,l+=n)}return{list:s,average:c>0?l/c:0}}getExecuteFunc(e,n,r,i){if(i.filterType===`manual`){let e=new Set(i.values);return t=>t==null?e.has(se):e.has(String(t))}if(i.filterType===`record`)return P(i);if(i.filterType===`condition`)return at(i,it(i.filterInfo.compareType)?this._getNumberCalculatedOptions(e,n,r):void 0);if(i.filterType===`color`){let e=e=>e?new t.ColorKit(e).toRgbString():null;if(i.cellFillColors){let n=new Set(i.cellFillColors.map(e));return r=>n.has(e((0,t.getColorStyle)(r==null?void 0:r.bg)))}if(i.cellTextColors){let n=new Set(i.cellTextColors.map(e));return r=>n.has(e((0,t.getColorStyle)(r==null?void 0:r.cl)??(0,t.getColorStyle)(t.DEFAULT_STYLES.cl)))}}else return e=>!0;return()=>!0}toJSON(){return{tableColumnFilterList:this._tableColumnFilterList.some(e=>(e==null?void 0:e.filterType)===`record`)?this._tableColumnFilterList.map(e=>(e==null?void 0:e.filterType)===`record`?F(e):e):this._tableColumnFilterList,tableSortInfo:this._tableSortInfo}}fromJSON(e){let t=e.tableColumnFilterList??[];t.some(e=>(e==null?void 0:e.filterType)===`record`)?(this._tableColumnFilterList=[],t.forEach((e,t)=>this.setColumnFilter(t,e))):this._tableColumnFilterList=t,e.tableSortInfo&&(this._tableSortInfo=e.tableSortInfo)}dispose(){this._tableColumnFilterList=[],this._filterOutRows=new Set}},gt=class{constructor(e,t,n,r,i={}){D(this,`_id`,void 0),D(this,`_name`,void 0),D(this,`_tableStyleId`,void 0),D(this,`_showHeader`,void 0),D(this,`_showFooter`,void 0),D(this,`_showAutoFilter`,void 0),D(this,`_range`,void 0),D(this,`_columns`,new Map),D(this,`_columnOrder`,[]),D(this,`tableMeta`,void 0),D(this,`_tableFilters`,void 0),D(this,`_subUnitId`,void 0),this._id=e,this._range=n,this._name=t,this._tableFilters=new ht,this._init(r,i)}_init(e,n){this._tableStyleId=n==null?void 0:n.tableStyleId,this._showHeader=(n==null?void 0:n.showHeader)??!0,this._showFooter=(n==null?void 0:n.showFooter)??!1,this._showAutoFilter=(n==null?void 0:n.showAutoFilter)??!0;let r=this.getRange(),i=r.startColumn,a=r.endColumn;for(let r=i;r<=a;r++){var o;let a=r-i,s,c;(o=n.columns)!=null&&o[a]?(s=n.columns[a].id,c=n.columns[a].displayName):(s=(0,t.generateRandomId)(),c=e[r-i]);let l=new O(s,c);this._columns.set(s,l),this._columnOrder.push(s)}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 O(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(){return this._tableStyleId??ne[0].name}setTableStyleId(e){this._tableStyleId=e}isShowHeader(){return this._showHeader??!0}setShowHeader(e){this._showHeader=e}isShowFooter(){return this._showFooter??!1}isShowAutoFilter(){return this._showAutoFilter??!0}setShowAutoFilter(e){this._showAutoFilter=e}getTableInfo(){return{id:this._id,subUnitId:this._subUnitId,name:this._name,range:this.getRangeInfo(),meta:this.tableMeta,showHeader:this._showHeader,showAutoFilter:this._showAutoFilter,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,showAutoFilter:this._showAutoFilter},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,showAutoFilter:this._showAutoFilter,tableStyleId:this._tableStyleId},filters:this._tableFilters.toJSON(),columns:e,meta:this.tableMeta}}fromJSON(e){this._id=e.id,this._name=e.name,this._range=e.range,this.tableMeta=e.meta,this._tableStyleId=e.options.tableStyleId||``,this._showHeader=e.options.showHeader??!0,this._showFooter=e.options.showFooter??!0,this._showAutoFilter=e.options.showAutoFilter??!0,this._columns.clear(),this._columnOrder=[],e.columns.forEach(e=>{let t=new O(e.id,e.displayName);t.fromJSON(e),this._columns.set(e.id,t),this._columnOrder.push(e.id)}),this._tableFilters=new ht,this._tableFilters.fromJSON(e.filters)}dispose(){this._id=``,this._name=``,this._tableStyleId=``,this._showHeader=!0,this._showFooter=!0,this._showAutoFilter=!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 t.Disposable{constructor(e,t){super(),this._univerInstanceService=e,this._localeService=t,D(this,`_tableMap`,void 0),D(this,`_tableAdd$`,new i.Subject),D(this,`tableAdd$`,this._tableAdd$.asObservable()),D(this,`_tableDelete$`,new i.Subject),D(this,`tableDelete$`,this._tableDelete$.asObservable()),D(this,`_tableNameChanged$`,new i.Subject),D(this,`tableNameChanged$`,this._tableNameChanged$.asObservable()),D(this,`_tableRangeChanged$`,new i.Subject),D(this,`tableRangeChanged$`,this._tableRangeChanged$.asObservable()),D(this,`_tableThemeChanged$`,new i.Subject),D(this,`tableThemeChanged$`,this._tableThemeChanged$.asObservable()),D(this,`_tableFilterChanged$`,new i.Subject),D(this,`tableFilterChanged$`,this._tableFilterChanged$.asObservable()),D(this,`_tableInitStatus`,new i.BehaviorSubject(!1)),D(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??`Column`;for(let e=s;e<=c;e++)l.push(_(a==null?void 0:a.getCell(o,e))||p(e-s+1,u));return l}addTable(e,n,r,i,a,o,s){let c=o??(0,t.generateRandomId)(),l=new gt(c,r,i,a||this.getColumnHeader(e,n,i),s);if(l.setSubunitId(n),this._ensureUnit(e).set(c,l),this._tableAdd$.next({unitId:e,subUnitId:n,range:i,tableName:r,tableId:c,tableStyleId:s==null?void 0:s.tableStyleId}),s!=null&&s.filters){let t=this._univerInstanceService.getUnit(e),r=t==null?void 0:t.getSheetBySheetId(n);l.getTableFilters().doFilter(r,i,t==null?void 0:t.getDateSystem()),this._tableFilterChanged$.next({unitId:e,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()&&e.isShowAutoFilter()&&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(e,n,r){let i=this.getTableById(e,n);if(!i)return;let{operationType:a,rowColType:o,index:s,count:c,columnsJson:l}=r,u=i.getRange(),d={...u};if(a===`insert`){if(o===`row`)d.endRow+=c;else if(o===`column`){d.endColumn+=c;for(let e=0;e<c;e++){let n=this._localeService.t(`sheets-table.columnPrefix`),r=new O((0,t.generateRandomId)(),p(i.getColumnsCount()+1+e,n));l!=null&&l[e]&&r.fromJSON(l[e]);let a=s+e-u.startColumn;i.insertColumn(a,r)}}}else if(o===`row`)d.endRow-=c;else if(o===`column`){d.endColumn-=c;for(let e=c-1;e>=0;e--){let t=s+e-u.startColumn;i.removeColumn(t)}}i.setRange(d),this._tableRangeChanged$.next({unitId:e,subUnitId:i.getSubunitId(),tableId:n,range:d,oldRange:u})}updateTableRange(e,n,r){let i=this.getTableById(e,n);if(!i)return;let a=i.getRange(),o=r.newRange;if(o.startColumn<a.startColumn){let e=a.startColumn-o.startColumn,n=this._localeService.t(`sheets-table.columnPrefix`);for(let r=0;r<e;r++)i.insertColumn(a.startColumn,new O((0,t.generateRandomId)(),p(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 e=o.endColumn-a.endColumn,n=this._localeService.t(`sheets-table.columnPrefix`);for(let r=0;r<e;r++)i.insertColumn(a.endColumn,new O((0,t.generateRandomId)(),p(i.getColumnsCount()+1,n)))}i.setRange(o),this._tableRangeChanged$.next({unitId:e,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,sortInfo:u,options:d,filterButtons:f}=n;if(n.calculatedColumn){let e=i.getColumn(n.calculatedColumn.columnId);e&&(e.formula=n.calculatedColumn.formula,e.formulaIsArray=n.calculatedColumn.formulaIsArray)}if(f){f.showAutoFilter!==void 0&&i.setShowAutoFilter(f.showAutoFilter);for(let[e,t]of Object.entries(f.columns??{})){let n=i.getColumn(e);n&&(n.showFilterButton=t)}}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){let n=i.getTableStyleId()??`default`;i.setTableStyleId(l),this._tableThemeChanged$.next({unitId:e,subUnitId:a,tableId:t,theme:l,oldTheme:n})}`sortInfo`in n&&i.getTableFilters().setSortInfo(u),d&&d.showHeader!==void 0&&i.setShowHeader(d.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 n=this._ensureUnit(e);Object.keys(t).forEach(i=>{let a=(0,r.getSheetCommandTarget)(this._univerInstanceService,{unitId:e,subUnitId:i});if(!a)return;let o=a.worksheet,s;if(t[i].tables?s=t[i].tables:Array.isArray(t[i])&&(s=t[i]),!s)return;let c=t[i].tableFilteredOutRows;s.forEach(t=>{var r;let s=this.getColumnHeader(e,i,t.range),l=new gt(t.id,t.name,t.range,s,t.options);if(l.setTableMeta(t.meta),t.columns.length&&l.setColumns(t.columns),t.filters){let e=l.getTableFilters();if(e.fromJSON(t.filters),Array.isArray(c)){let{startRow:t,endRow:n}=l.getTableFilterRange();e.setFilterOutRows(c.filter(e=>e>=t&&e<=n))}else e.doFilter(o,l.getTableFilterRange(),a.workbook.getDateSystem())}l.setSubunitId(i),n.set(t.id,l),this._tableAdd$.next({unitId:e,subUnitId:i,range:t.range,tableName:t.name,tableId:t.id,tableStyleId:(r=t.options)==null?void 0:r.tableStyleId})})}),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,t.IUniverInstanceService),I(1,(0,t.Inject)(t.LocaleService))],R);let z=class extends t.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=`string`){return M(e,t,n,r)}};z=L([I(0,(0,t.Inject)(R))],z);let B={id:`sheet.mutation.add-table`,type:t.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:t.CommandType.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r,tableId:i}=t;return e.get(z).deleteTable(n,r,i),!0}},_t={id:`sheet.command.add-table`,type:t.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;let i=e.get(t.IUndoRedoService),a=e.get(t.ICommandService),o=e.get(t.LocaleService),s=e.get(R),c=r.id??(0,t.generateRandomId)(),l=C(r.unitId,{univerInstanceService:e.get(t.IUniverInstanceService),tableManager:s,definedNamesService:e.get(n.IDefinedNamesService)}),u=r.name;if(!u||!(0,t.customNameCharacterCheck)(u.toLowerCase(),l)){let e=o.t(`sheets-table.tablePrefix`),t=s.getTableList(r.unitId).length+1;for(let n of l)if(n.startsWith(e.toLowerCase())){let r=Number(n.slice(e.length));Number.isInteger(r)&&r>=t&&(t=r+1)}u=`${e}${t}`}let d=[],f=[],{unitId:p,subUnitId:m,range:h}=r,g=s.getColumnHeader(p,m,h,o.t(`sheets-table.columnPrefix`));return d.push({id:B.id,params:{...r,tableId:c,name:u,header:g}}),f.push({id:V.id,params:{tableId:c,unitId:r.unitId}}),(0,t.sequenceExecute)(d,a).result?(i.pushUndoRedo({unitID:r.unitId,undoMutations:f,redoMutations:d}),!0):!1}},H={id:`sheet.mutation.set-sheet-table`,type:t.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}},vt={id:`sheet.command.add-table-theme`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let i=e.get(R),{unitId:a,tableId:o,themeStyle:s}=n,c=[],l=[],u=i.getTableById(a,o);if(!u)return!1;let d=u.getSubunitId();c.push({id:r.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:r.RemoveRangeThemeMutation.id,params:{unitId:a,subUnitId:d,styleName:s.getName()}});let f=e.get(t.ICommandService);return(0,t.sequenceExecute)(c,f).result?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:a,undoMutations:l,redoMutations:c}),!0):!1}},U={id:`sheet.command.delete-table`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let i=e.get(t.IUndoRedoService),a=e.get(t.ICommandService),o=e.get(R),s=e.get(t.ILogService),c=[],l=[],u=o.getTable(n.unitId,n.tableId),d=u==null?void 0:u.toJSON();if(!d)return s.error(`[TableManager]: Table not found`),!1;let f=e.get(r.SheetInterceptorService).onCommandExecute({id:U.id,params:{...n,tableName:d.name}});return c.push(...f.preRedos??[]),c.push({id:V.id,params:{...n}}),c.push(...f.redos),l.push(...f.preUndos??[]),l.push({id:B.id,params:{unitId:n.unitId,subUnitId:n.subUnitId,tableId:n.tableId,name:d.name,range:d.range,options:d.options}}),l.push(...f.undos),(0,t.sequenceExecute)(c,a).result?(i.pushUndoRedo({unitID:n.unitId,undoMutations:l,redoMutations:c}),!0):!1}},yt={id:`sheet.command.remove-table-theme`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let{unitId:i,tableId:a,themeName:o}=n,s=e.get(R),c=e.get(r.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(oe)).find(e=>e!==o);m||=p[0],d.push({id:H.id,params:{unitId:i,subUnitId:u,tableId:a,config:{theme:m}}}),d.push({id:r.RemoveRangeThemeMutation.id,params:{unitId:i,subUnitId:u,styleName:o}});let h=c.getDefaultRangeThemeStyle(o);h&&(f.push({id:r.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}}}));let g=e.get(t.ICommandService);return(0,t.sequenceExecute)(d,g).result?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:i,redoMutations:d,undoMutations:f}),!0):!1}};function bt(e,n){let r=e.trim();if(!r)return{valid:!1,reason:`empty`};let i=new Set(Array.from(n,e=>e.toLowerCase()));return(0,t.customNameCharacterCheck)(r.toLowerCase(),i)?{valid:!0}:{valid:!1,reason:`invalid`}}function W(e,i,a,o,s,c,l){var u;let d=(u=e.getTableInfo)==null?void 0:u.call(e);if(!d)return;let f=d.range.startRow+ +!!d.showHeader,p={},m;if(d.columns.forEach((e,r)=>{var i;if(l&&e.id!==l.columnId)return;let a=(i=(l==null?void 0:l.formula)??e.formula)==null?void 0:i.trim(),u=(l==null?void 0:l.formulaIsArray)??e.formulaIsArray;if(!a)return;let h=xt(a.startsWith(`=`)?a:`=${a}`,d.name),g=d.range.startColumn+r;m??=c();for(let e=o;e<=s;e++){p[e]??={};let r={f:m.moveFormulaRefOffset(h,0,e-f),si:null,ref:null,ft:u?t.FormulaType.ARRAY:null,fd:u?t.BooleanNumber.FALSE:null,v:null,p:null,t:null};u&&(r.ref=(0,n.serializeRange)({startRow:e,endRow:e,startColumn:g,endColumn:g})),p[e][g]=r}}),Object.keys(p).length)return{id:r.SetRangeValuesMutation.id,params:{unitId:i,subUnitId:a,cellValue:p}}}function xt(e,t){let n=``;for(let r=0;r<e.length;r++){let i=r,a=e[r];if(a===`"`||a===`'`){for(;++r<e.length;)if(e[r]===a){if(e[r+1]!==a)break;r++}}else if(a===`[`){let a=1;for(;++r<e.length&&a>0&&(e[r]===`'`?r++:e[r]===`[`?a++:e[r]===`]`&&a--,a!==0););if(a===0){let a=e.slice(i+1,r),o=e.slice(0,i).trimEnd().slice(-1),s=!o||/[=+\-*/^&(<>,;:{]/.test(o),c=e.slice(r+1).trimStart();if(!/^[^+\-*/^&=<>%),;}:\s]/.test(c)){let e=s?t:``,r=a.slice(1);n+=a.startsWith(`@`)?`${e}[[#This Row],${r.startsWith(`[`)?r:`[${r}]`}]`:`${e}[${a}]`;continue}}}n+=e.slice(i,r+1)}return n}let St={id:`sheet.command.set-table-config`,type:t.CommandType.COMMAND,handler:(e,i)=>{if(!i)return!1;let{unitId:a,tableId:o,name:s,updateRange:c,rowColOperation:l,theme:u,filterButtons:d}=i,f=e.get(R),p=f.getTableById(a,o);if(!p)return!1;let m=[],h=[],g={},_={};if(i.calculatedColumn){let{columnId:t,formula:o,formulaIsArray:s}=i.calculatedColumn,u=p.getColumn(t);if(!u||typeof o!=`string`||s!==void 0&&typeof s!=`boolean`||c||l)return!1;let d=p.getTableFilterRange(),f=p.getTableInfo().columns.findIndex(e=>e.id===t),v=d.startColumn+f,y={...d,startColumn:v,endColumn:v};if(!(0,r.checkRangesEditablePermission)(e,a,p.getSubunitId(),[y]))return!1;let b=o.trim();if(b===`=`)return!1;g.calculatedColumn={columnId:t,formula:u.formula,formulaIsArray:u.formulaIsArray},_.calculatedColumn={columnId:t,formula:b&&!b.startsWith(`=`)?`=${b}`:b,formulaIsArray:b?s??u.formulaIsArray:void 0};let x=W(p,a,p.getSubunitId(),d.startRow,d.endRow,()=>e.get(n.LexerTreeBuilder),_.calculatedColumn);x&&(m.push(x),h.push({id:r.SetRangeValuesMutation.id,params:(0,r.SetRangeValuesUndoMutationFactory)(e,x.params)}))}if(d){var v;if(((v=e.get(t.IPermissionService).getPermissionPoint(new r.WorkbookEditablePermission(a).id))==null?void 0:v.value)===!1)return!1;let{showAutoFilter:n,columns:i}=d;if(n!==void 0&&typeof n!=`boolean`)return!1;let o=Object.entries(i??{});if(o.some(([e,t])=>!p.getColumn(e)||typeof t!=`boolean`))return!1;g.filterButtons={...n===void 0?{}:{showAutoFilter:p.isShowAutoFilter()},columns:Object.fromEntries(o.map(([e])=>[e,p.getColumn(e).isShowFilterButton()]))},_.filterButtons={...n===void 0?{}:{showAutoFilter:n},columns:Object.fromEntries(o)}}let y=e.get(t.LocaleService),b=C(a,{univerInstanceService:e.get(t.IUniverInstanceService),tableManager:f,definedNamesService:e.get(n.IDefinedNamesService)});if(s){if(!bt(s,b).valid)return e.get(t.ILogService).warn(y.t(`sheets-table.tableNameError`)),!1;g.name=p.getDisplayName(),_.name=s}l&&(g.rowColOperation={operationType:l.operationType===`insert`?`delete`:`insert`,rowColType:l.rowColType,index:l.index,count:l.count},_.rowColOperation=l),c&&(g.updateRange={newRange:p.getRange()},_.updateRange=c),u&&(g.theme=p.getTableStyleId(),_.theme=u);let x={unitId:a,subUnitId:p.getSubunitId(),tableId:o,config:_},S={unitId:a,subUnitId:p.getSubunitId(),tableId:o,config:g},w=e.get(r.SheetInterceptorService).onCommandExecute({id:St.id,params:{...i,oldTableName:g.name}}),T=[...w.preRedos??[],{id:H.id,params:x},...m,...w.redos],ee=[...w.preUndos??[],{id:H.id,params:S},...h,...w.undos],te=e.get(t.ICommandService);return(0,t.sequenceExecute)(T,te).result?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:a,undoMutations:ee,redoMutations:T}),!0):!1}},G={id:`sheet.mutation.set-table-filter`,type:t.CommandType.MUTATION,handler:(e,t)=>{let{tableId:n,unitId:r,column:i,tableFilter:a}=t,o=e.get(R),s=o.getTable(r,n);if(o.addFilter(r,n,i,a),s){var c;let e=s.getTableFilters();t.filterOutRows?e.setFilterOutRows(t.filterOutRows):t.filterOutRows=[...e.getFilterOutRows()],t.subUnitId=s.getSubunitId(),t.tableFilteredOutRows=((c=o.toJSON(r)[t.subUnitId])==null?void 0:c.tableFilteredOutRows)??[]}return!0}},Ct={id:`sheet.command.set-table-filter`,type:t.CommandType.COMMAND,handler:(e,n)=>{var r,i;if(!n)return!1;let a=e.get(t.IUndoRedoService),o=e.get(t.ICommandService),s=e.get(R),c=n.tableId||(0,t.generateRandomId)(),l=(r=s.getTable(n.unitId,c))==null?void 0:r.getTableFilters(),u=l==null?void 0:l.getColumnFilter(n.column),d=[...(l==null?void 0:l.getFilterOutRows())??[]],f=((i=n.tableFilter)==null?void 0:i.filterType)===`record`?F(n.tableFilter):n.tableFilter,p=[],m=[];return p.push({id:G.id,params:{...n,tableId:c,tableFilter:f}}),m.push({id:G.id,params:{...n,tableId:c,tableFilter:u,filterOutRows:d}}),(0,t.sequenceExecute)(p,o).result?(a.pushUndoRedo({unitID:n.unitId,undoMutations:m,redoMutations:p}),!0):!1}},wt={id:`sheet.command.set-table-sort-state`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let r=e.get(R).getTable(n.unitId,n.tableId);if(!r)return!1;let i=r.getTableFilters().toJSON().tableSortInfo,a=e.get(t.ICommandService),o={unitId:n.unitId,subUnitId:r.getSubunitId(),tableId:n.tableId,config:{sortInfo:n.sortInfo}};return a.syncExecuteCommand(H.id,o)?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:n.unitId,undoMutations:[{id:H.id,params:{...o,config:{sortInfo:i}}}],redoMutations:[{id:H.id,params:o}]}),!0):!1}},K=class extends t.Disposable{constructor(e,t,n,r){super(),this._univerInstanceService=e,this._sheetInterceptorService=t,this._tableManager=n,this._resourceManagerService=r,D(this,`_tableRangeRTree`,new Map),this.registerTableChangeEvent(),this._initSnapshot(),this._initSheetChange(),this.registerTableHeaderInterceptor()}getContainerTableWithRange(e,n,r){let i=this._ensureTableRangeRTree(e),a=Array.from(i.bulkSearch([{unitId:e,sheetId:n,range:r}])).find(n=>{let i=this._tableManager.getTable(e,String(n));return i?t.Rectangle.contains(i.getRange(),r):!1});if(a)return this._tableManager.getTable(e,String(a))}_ensureTableRangeRTree(e){return this._tableRangeRTree.has(e)||this._tableRangeRTree.set(e,new t.RTree),this._tableRangeRTree.get(e)}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(r.INTERCEPTOR_POINT.CELL_CONTENT,{effect:t.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:[t.UniverInstanceType.UNIVER_SHEET],pluginName:ae,onLoad:(e,t)=>{this._fromJSON(e,t)},onUnLoad:e=>{this._deleteUnitId(e)}}))}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===r.RemoveSheetCommand.id){var n;let r=e.params,i=r.unitId||this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_SHEET).getUnitId(),a=r.subUnitId||((n=this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_SHEET).getActiveSheet())==null?void 0:n.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}}if(e.id===r.CopySheetCommand.id){let{unitId:n,subUnitId:r,targetSubUnitId:i}=e.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(e=>{let r=e.toJSON(),a=(0,t.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,t.Inject)(t.IUniverInstanceService)),I(1,(0,t.Inject)(r.SheetInterceptorService)),I(2,(0,t.Inject)(R)),I(3,(0,t.Inject)(t.IResourceManagerService))],K);function Tt(e,n,r,i){let a=e.get(t.ICommandService);return(0,t.sequenceExecute)(r,a).result?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:n,undoMutations:i,redoMutations:r}),!0):!1}let Et={id:`sheet.command.table-insert-row`,type:t.CommandType.COMMAND,handler:e=>{let i=e.get(t.IUniverInstanceService),a=(0,r.getSheetCommandTarget)(i);if(!a)return!1;let{worksheet:o,unitId:s,subUnitId:c}=a,l=e.get(r.SheetsSelectionsService).getCurrentSelections();if(!l.length||l.length>1)return!1;let u=l[0].range,d=e.get(K).getContainerTableWithRange(s,c,u);if(!d)return!1;let f=u.endRow-u.startRow+1,p=o.getRowCount()-1,m=o.getCellMatrix().getDataRange().endRow,h=[],g=[];if(p-m<f)h.push({id:r.InsertRowMutation.id,params:{unitId:s,subUnitId:c,range:{...u}}}),h.push({id:H.id,params:{unitId:s,subUnitId:c,tableId:d.getId(),config:{updateRange:{newRange:{...d.getRange(),endRow:d.getRange().endRow+f}}}}}),g.push({id:H.id,params:{unitId:s,subUnitId:c,tableId:d.getId(),config:{updateRange:{newRange:d.getRange()}}}}),g.push({id:r.RemoveRowMutation.id,params:{unitId:s,subUnitId:c,range:{...u}}});else{let t={...d.getRange()};h.push({id:H.id,params:{unitId:s,subUnitId:c,tableId:d.getId(),config:{updateRange:{newRange:{...t,endRow:t.endRow+f}}}}}),g.push({id:H.id,params:{unitId:s,subUnitId:c,tableId:d.getId(),config:{updateRange:{newRange:{...t}}}}});let n=(0,r.getMoveRangeCommandMutations)(e,{fromUnitId:s,fromSubUnitId:c,toSubUnitId:c,fromRange:{startRow:u.startRow,endRow:m,startColumn:t.startColumn,endColumn:t.endColumn},toRange:{startRow:u.startRow+f,endRow:m+f,startColumn:t.startColumn,endColumn:t.endColumn}},{includeSelection:!1,includeAutoHeight:!1});n&&(h.push(...n.redos),g.push(...n.undos))}let _=W(d,s,c,u.startRow,u.endRow,()=>e.get(n.LexerTreeBuilder));_&&(h.push(_),g.push({id:r.SetRangeValuesMutation.id,params:(0,r.SetRangeValuesUndoMutationFactory)(e,_.params)}));let v=e.get(t.ICommandService);return(0,t.sequenceExecute)(h,v).result?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:s,undoMutations:g,redoMutations:h}),!0):!1}},Dt={id:`sheet.command.table-insert-row-at`,type:t.CommandType.COMMAND,handler:(e,i)=>{if(!i)return!1;let{unitId:a,subUnitId:o,tableId:s,index:c,count:l=1}=i;if(l<=0)return!1;let u=e.get(t.IUniverInstanceService),d=(0,r.getSheetCommandTarget)(u,{unitId:a,subUnitId:o});if(!d)return!1;let f=e.get(R).getTableById(a,s);if(!f||f.getSubunitId()!==o)return!1;let p=f.getRange();if(c<=p.startRow||c>p.endRow+1)return!1;let m=[{id:H.id,params:{unitId:a,subUnitId:o,tableId:s,config:{updateRange:{newRange:{...p,endRow:p.endRow+l}}}}}],h=[{id:H.id,params:{unitId:a,subUnitId:o,tableId:s,config:{updateRange:{newRange:{...p}}}}}],g=d.worksheet.getCellMatrix().getDataRange().endRow,_=c<=g?(0,r.getMoveRangeCommandMutations)(e,{fromUnitId:a,fromSubUnitId:o,toSubUnitId:o,fromRange:{startRow:c,endRow:g,startColumn:p.startColumn,endColumn:p.endColumn},toRange:{startRow:c+l,endRow:g+l,startColumn:p.startColumn,endColumn:p.endColumn}},{includeSelection:!1,includeAutoHeight:!1}):null;_&&(m.push(..._.redos),h.push(..._.undos));let v=W(f,a,o,c,c+l-1,()=>e.get(n.LexerTreeBuilder));return v&&(m.push(v),h.push({id:r.SetRangeValuesMutation.id,params:(0,r.SetRangeValuesUndoMutationFactory)(e,v.params)})),Tt(e,a,m,h)}},Ot={id:`sheet.command.table-insert-col`,type:t.CommandType.COMMAND,handler:e=>{let n=e.get(t.IUniverInstanceService),i=(0,r.getSheetCommandTarget)(n);if(!i)return!1;let{worksheet:a,unitId:o,subUnitId:s}=i,c=e.get(r.SheetsSelectionsService).getCurrentSelections();if(!c.length||c.length>1)return!1;let l=c[0].range,u=e.get(K).getContainerTableWithRange(o,s,l);if(!u)return!1;let d=l.endColumn-l.startColumn+1,f=a.getColumnCount()-1,p=a.getCellMatrix().getDataRange().endColumn,m=[],h=[];if(f-p<d)m.push({id:r.InsertColMutation.id,params:{unitId:o,subUnitId:s,range:{...l}}}),m.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:u.getId(),config:{rowColOperation:{operationType:`insert`,rowColType:`column`,index:l.startColumn,count:d}}}}),h.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:u.getId(),config:{rowColOperation:{operationType:`delete`,rowColType:`column`,index:l.startColumn,count:d}}}}),h.push({id:r.RemoveColMutation.id,params:{unitId:o,subUnitId:s,range:{...l}}});else{let t=u.getRange();m.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:u.getId(),config:{rowColOperation:{operationType:`insert`,rowColType:`column`,index:l.startColumn,count:d}}}}),h.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:u.getId(),config:{rowColOperation:{operationType:`delete`,rowColType:`column`,index:l.startColumn,count:d}}}});let n=(0,r.getMoveRangeUndoRedoMutations)(e,{unitId:o,subUnitId:s,range:{startRow:t.startRow,endRow:t.endRow,startColumn:l.startColumn,endColumn:p}},{unitId:o,subUnitId:s,range:{startRow:t.startRow,endRow:t.endRow,startColumn:l.startColumn+d,endColumn:p+d}});n&&(m.push(...n.redos),h.push(...n.undos))}let g=e.get(t.ICommandService);return(0,t.sequenceExecute)(m,g).result?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:o,undoMutations:h,redoMutations:m}),!0):!1}},kt={id:`sheet.command.table-insert-column-at`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let{unitId:i,subUnitId:a,tableId:o,index:s,count:c=1}=n;if(c<=0)return!1;let l=e.get(t.IUniverInstanceService),u=(0,r.getSheetCommandTarget)(l,{unitId:i,subUnitId:a});if(!u)return!1;let d=e.get(R).getTableById(i,o);if(!d||d.getSubunitId()!==a)return!1;let f=d.getRange();if(s<f.startColumn||s>f.endColumn+1)return!1;let p=[{id:H.id,params:{unitId:i,subUnitId:a,tableId:o,config:{rowColOperation:{operationType:`insert`,rowColType:`column`,index:s,count:c}}}}],m=[{id:H.id,params:{unitId:i,subUnitId:a,tableId:o,config:{rowColOperation:{operationType:`delete`,rowColType:`column`,index:s,count:c}}}}],h=u.worksheet.getCellMatrix().getDataRange().endColumn;if(s<=h){let t=(0,r.getMoveRangeUndoRedoMutations)(e,{unitId:i,subUnitId:a,range:{startRow:f.startRow,endRow:f.endRow,startColumn:s,endColumn:h}},{unitId:i,subUnitId:a,range:{startRow:f.startRow,endRow:f.endRow,startColumn:s+c,endColumn:h+c}});t&&(p.push(...t.redos),m.push(...t.undos))}return Tt(e,i,p,m)}},At={id:`sheet.command.table-remove-column-at`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let{unitId:i,subUnitId:a,tableId:o,index:s,count:c=1}=n;if(c<=0)return!1;let l=e.get(t.IUniverInstanceService),u=(0,r.getSheetCommandTarget)(l,{unitId:i,subUnitId:a});if(!u)return!1;let d=e.get(R).getTableById(i,o);if(!d||d.getSubunitId()!==a)return!1;let f=d.getRange();if(s<f.startColumn||s+c-1>f.endColumn||c>=f.endColumn-f.startColumn+1)return!1;let p=d.getTableInfo(),m=[],h=s-f.startColumn;for(let e=0;e<c;e++){let t=p.columns[h+e];t&&m.push(t)}let g=e.get(r.SheetInterceptorService).onCommandExecute({id:At.id,params:{...n,tableName:p.name,removedColumnNames:m.map(e=>e.displayName)}}),_=[...g.preRedos??[],{id:H.id,params:{unitId:i,subUnitId:a,tableId:o,config:{rowColOperation:{operationType:`delete`,rowColType:`column`,index:s,count:c}}}},...g.redos],v=[...g.preUndos??[],{id:H.id,params:{unitId:i,subUnitId:a,tableId:o,config:{rowColOperation:{operationType:`insert`,rowColType:`column`,index:s,count:c,columnsJson:m}}}},...g.undos],y=u.worksheet.getCellMatrix().getDataRange().endColumn;if(s+c<=y){let t=(0,r.getMoveRangeUndoRedoMutations)(e,{unitId:i,subUnitId:a,range:{startRow:f.startRow,endRow:f.endRow,startColumn:s+c,endColumn:y}},{unitId:i,subUnitId:a,range:{startRow:f.startRow,endRow:f.endRow,startColumn:s,endColumn:y-c}});t&&(_.push(...t.redos),v.push(...t.undos))}return Tt(e,i,_,v)}},jt={id:`sheet.command.table-remove-row`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let i=e.get(t.IUniverInstanceService),a=(0,r.getSheetCommandTarget)(i,n);if(!a)return!1;let{unitId:o,subUnitId:s}=a,c=e.get(r.SheetsSelectionsService).getCurrentSelections();if(!c.length||c.length>1)return!1;let l=c[0].range,u=e.get(K).getContainerTableWithRange(o,s,l);if(!u)return!1;let d=l.endRow-l.startRow+1,f=[],p=[],m=u.getRange();f.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:u.getId(),config:{updateRange:{newRange:{...m,endRow:m.endRow-d}}}}}),p.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:u.getId(),config:{updateRange:{newRange:{...m}}}}});let h=a.worksheet.getCellMatrix().getDataRange().endRow,g=(0,r.getMoveRangeUndoRedoMutations)(e,{unitId:o,subUnitId:s,range:{startRow:l.endRow+1,endRow:h,startColumn:m.startColumn,endColumn:m.endColumn}},{unitId:o,subUnitId:s,range:{startRow:l.startRow,endRow:h-d,startColumn:m.startColumn,endColumn:m.endColumn}});g&&(f.push(...g.redos),p.push(...g.undos));let _=e.get(t.ICommandService);return(0,t.sequenceExecute)(f,_).result?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:o,undoMutations:p,redoMutations:f}),!0):!1}},q={id:`sheet.command.table-remove-col`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let i=e.get(t.IUniverInstanceService),a=(0,r.getSheetCommandTarget)(i,n);if(!a)return!1;let{workbook:o,unitId:s,subUnitId:c}=a;e.get(R);let l=e.get(r.SheetsSelectionsService).getCurrentSelections();if(!l.length||l.length>1)return!1;let u=l[0].range,d=e.get(K).getContainerTableWithRange(s,c,u);if(!d)return!1;let f=u.endColumn-u.startColumn+1,p=[],m=[],h=d.getRange();p.push({id:H.id,params:{unitId:s,subUnitId:c,tableId:d.getId(),config:{rowColOperation:{operationType:`delete`,rowColType:`column`,index:u.startColumn,count:f}}}});let g=d.getTableInfo(),_=[],v=u.startColumn-h.startColumn;for(let e=0;e<f;e++){let t=g.columns[v+e];t&&_.push(t)}let y=e.get(r.SheetInterceptorService).onCommandExecute({id:q.id,params:{...n,tableName:g.name,removedColumnNames:_.map(e=>e.displayName)}});p.unshift(...y.preRedos??[]),p.push(...y.redos),m.unshift(...y.preUndos??[]),m.push({id:H.id,params:{unitId:s,subUnitId:c,tableId:d.getId(),config:{rowColOperation:{operationType:`insert`,rowColType:`column`,index:u.startColumn,count:f,columnsJson:_}}}}),m.push(...y.undos);let b=a.worksheet.getCellMatrix().getDataRange().endColumn,x=(0,r.getMoveRangeUndoRedoMutations)(e,{unitId:s,subUnitId:c,range:{startRow:h.startRow,endRow:h.endRow,startColumn:u.endColumn+1,endColumn:b}},{unitId:s,subUnitId:c,range:{startRow:h.startRow,endRow:h.endRow,startColumn:u.startColumn,endColumn:b-f}});x&&(p.push(...x.redos),m.push(...x.undos));let S=e.get(t.ICommandService);return(0,t.sequenceExecute)(p,S).result?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:s,undoMutations:m,redoMutations:p}),!0):!1}},J=class extends t.Disposable{constructor(e,t,n,r){super(),this._tableManager=e,this._sheetRangeThemeService=t,this._sheetRangeThemeModel=n,this._configService=r,D(this,`_defaultThemeIndex`,0),D(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(ne)}_initDefaultTableTheme(){for(let e=0;e<this._allThemes.length;e++){let{name:t,style:n}=this._allThemes[e],i=new r.RangeThemeStyle(t,n);this._sheetRangeThemeModel.registerDefaultRangeTheme(i)}}dispose(){super.dispose(),this._allThemes=[],this._defaultThemeIndex=0}};J=L([I(0,(0,t.Inject)(R)),I(1,(0,t.Inject)(r.SheetRangeThemeService)),I(2,(0,t.Inject)(r.SheetRangeThemeModel)),I(3,t.IConfigService)],J);var Mt=`@univerjs/sheets-table`,Nt=`1.0.0`;let Y=class extends t.Disposable{constructor(e,t,n){super(),this._tableManager=e,this._commandService=t,this._activeDirtyManagerService=n,this._initRangeListener(),this._initFilterDirtyRange()}_initFilterDirtyRange(){this._activeDirtyManagerService.register(G.id,{commandId:G.id,getDirtyData:e=>{let t=e.params,n=this._tableManager.getTableById(t.unitId,t.tableId);if(!n)return{};let{subUnitId:r,range:i}=n.getTableInfo();return{dirtyRanges:[{unitId:t.unitId,sheetId:r,range:i}],clearDependencyTreeCache:{[t.unitId]:{[r]:`1`}}}}}),this.disposeWithMe((0,t.toDisposable)(()=>{this._activeDirtyManagerService.remove(G.id)}))}_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:t,subUnitId:r,tableName:i,range:a}=e;this._commandService.executeCommand(n.RemoveSuperTableMutation.id,{unitId:t,tableName:i,reference:{sheetId:r,range:a}},{onlyLocal:!0})})),this.disposeWithMe(this._tableManager.tableNameChanged$.subscribe(e=>{let{tableId:t,unitId:r,oldTableName:i}=e;this._commandService.executeCommand(n.RemoveSuperTableMutation.id,{unitId:r,tableName:i},{onlyLocal:!0});let a=this._tableManager.getTableById(r,t);a&&this._updateSuperTable(r,a,i)}))}_updateSuperTable(e,t,r){let i=t.getTableInfo(),a=i.name,o=i.columns,s=new Map;o.forEach((e,t)=>{s.set(e.displayName,t)}),this._commandService.executeCommand(n.SetSuperTableMutation.id,{unitId:e,tableName:a,oldTableName:r,reference:{range:i.range,sheetId:i.subUnitId,titleMap:s}},{onlyLocal:!0})}};Y=L([I(0,(0,t.Inject)(R)),I(1,t.ICommandService),I(2,n.IActiveDirtyManagerService)],Y);let X=class extends t.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,k,n),this._exclusiveRangeService.addExclusiveRange(r,i,k,[{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,k,[{range:{...i},groupId:t}])})),this.disposeWithMe(this._tableManager.tableDelete$.subscribe(e=>{let{tableId:t,unitId:n,subUnitId:r}=e;this._exclusiveRangeService.clearExclusiveRangesByGroupId(n,r,k,t)}))}};X=L([I(0,(0,t.Inject)(R)),I(1,(0,t.Inject)(r.IExclusiveRangeService))],X);let Z=class extends t.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({priority:-1,getMutations(t){let n={redos:[],undos:[]},{id:i,params:a}=t;switch(i){case r.InsertRowCommand.id:return e._generateTableMutationWithInsertRow(a);case r.InsertColCommand.id:return e._generateTableMutationWithInsertCol(a);case r.RemoveRowCommand.id:return e._generateTableMutationWithRemoveRow(a);case r.RemoveColCommand.id:return e._generateTableMutationWithRemoveCol(a)}return n}})}_generateTableMutationWithInsertRow(e){let t=[],i=[],a=(0,r.getSheetCommandTarget)(this._univerInstanceService,e);if(!a)return{undos:t,redos:i};let{unitId:o,subUnitId:s}=a,c=this._tableManager.getTablesBySubunitId(o,s);if(!c.length)return{undos:t,redos:i};let{range:l}=e;return c.forEach(e=>{let r=e.getRange();if(l.startRow>r.startRow&&l.startRow<=r.endRow){let a=l.endRow-l.startRow+1;i.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:e.getId(),config:{updateRange:{newRange:{...r,endRow:r.endRow+a}}}}});let c=W(e,o,s,l.startRow,l.endRow,()=>this._injector.get(n.LexerTreeBuilder));c&&i.push(c),t.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:e.getId(),config:{updateRange:{newRange:{...r}}}}})}}),{undos:t,redos:i}}_generateTableMutationWithInsertCol(e){let t=[],n=[],i=(0,r.getSheetCommandTarget)(this._univerInstanceService,e);if(!i)return{undos:t,redos:n};let{unitId:a,subUnitId:o}=i,s=this._tableManager.getTablesBySubunitId(a,o);if(!s.length)return{undos:t,redos:n};let{range:c}=e;return s.forEach(e=>{let r=e.getRange();if(c.startColumn>r.startColumn&&c.startColumn<=r.endColumn){let r=c.endColumn-c.startColumn+1;n.push({id:H.id,params:{unitId:a,subUnitId:o,tableId:e.getId(),config:{rowColOperation:{operationType:`insert`,rowColType:`column`,index:c.startColumn,count:r}}}}),t.push({id:H.id,params:{unitId:a,subUnitId:o,tableId:e.getId(),config:{rowColOperation:{operationType:`delete`,rowColType:`column`,index:c.startColumn,count:r}}}})}}),{undos:t,redos:n}}_generateTableMutationWithRemoveRow(e){let n=[],i=[],a=[],o=[],s=(0,r.getSheetCommandTarget)(this._univerInstanceService);if(!s)return{undos:n,redos:i,preRedos:a,preUndos:o};let{unitId:c,subUnitId:l}=s,u=this._tableManager.getTablesBySubunitId(c,l);if(!u.length)return{undos:n,redos:i,preRedos:a,preUndos:o};let{range:d}=e,f=d.endRow-d.startRow+1;return u.forEach(e=>{let r=e.getRange();if(t.Rectangle.intersects(r,d)){if(d.startRow<=r.startRow&&d.endRow>=r.startRow){a.push({id:V.id,params:{unitId:c,subUnitId:l,tableId:e.getId()}});let t=e.toJSON();n.push({id:B.id,params:{unitId:c,subUnitId:l,tableId:t.id,name:t.name,range:t.range,options:t.options}})}else d.startRow>r.startRow&&d.startRow<=r.endRow?(i.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:e.getId(),config:{updateRange:{newRange:{...r,endRow:r.endRow-f}}}}}),n.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:e.getId(),config:{updateRange:{newRange:{...r}}}}})):d.startRow<r.endRow&&d.endRow>=r.endRow&&(i.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:e.getId(),config:{updateRange:{newRange:{...r,endRow:d.startRow-1}}}}}),n.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:e.getId(),config:{updateRange:{newRange:{...r}}}}}))}}),{undos:n,redos:i,preRedos:a,preUndos:o}}_generateTableMutationWithRemoveCol(e){let n=[],i=[],a=[],o=[],s=(0,r.getSheetCommandTarget)(this._univerInstanceService);if(!s)return{undos:n,redos:i,preRedos:a,preUndos:o};let{unitId:c,subUnitId:l}=s,u=this._tableManager.getTablesBySubunitId(c,l);if(!u.length)return{undos:n,redos:i,preRedos:a,preUndos:o};let{range:d}=e,f=d.endColumn-d.startColumn+1;return u.forEach(e=>{let r=e.getRange();if(t.Rectangle.intersects(r,d)){if(d.startColumn<=r.startColumn&&d.endColumn>=r.endColumn){let t=e.getTableInfo(),r=this._sheetInterceptorService.onCommandExecute({id:`sheet.command.delete-table`,params:{unitId:c,subUnitId:l,tableId:e.getId(),tableName:t.name}});a.push(...r.preRedos??[],...r.redos),a.push({id:V.id,params:{unitId:c,subUnitId:l,tableId:e.getId()}});let s=e.toJSON(),{startRow:u,startColumn:d,endColumn:f}=s.range,m=this._univerInstanceService.getUnit(c),h=m==null?void 0:m.getSheetBySheetId(l);if(!h)return{undos:n,redos:i,preRedos:a,preUndos:o};let g=[];for(let e=d;e<=f;e++)g.push(_(h==null?void 0:h.getCell(u,e))||p(e-d+1,this._localeService.t(`sheets-table.columnPrefix`)));n.push({id:B.id,params:{unitId:c,subUnitId:l,tableId:s.id,name:s.name,header:g,range:s.range,options:s.options}}),n.push(...r.preUndos??[],...r.undos)}else if(d.startColumn<=r.startColumn&&d.endColumn>=r.startColumn){let t=e.toJSON(),a=d.endColumn-r.startColumn+1;i.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:e.getId(),config:{rowColOperation:{operationType:`delete`,rowColType:`column`,index:r.startColumn,count:a}}}});let s=[];for(let t=0;t<a;t++){let n=e.getTableColumnByIndex(t);n&&s.push(n.toJSON())}o.push(this._getDeleteTableMutation(c,l,e.getId())),n.push(this._getAddTableMutation(c,l,t)),this._appendTableColumnFormulaMutations(i,n,{unitId:c,subUnitId:l,tableId:e.getId(),tableName:e.getTableInfo().name,range:d,columns:s})}else if(d.startColumn>r.startColumn&&d.endColumn>r.endColumn){let t=e.toJSON(),a=r.endColumn-d.startColumn+1;i.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:e.getId(),config:{rowColOperation:{operationType:`delete`,rowColType:`column`,index:d.startColumn,count:a}}}});let s=[],u=d.startColumn-r.startColumn;for(let t=0;t<a;t++){let n=e.getTableColumnByIndex(t+u);n&&s.push(n.toJSON())}o.push(this._getDeleteTableMutation(c,l,e.getId())),n.push(this._getAddTableMutation(c,l,t)),this._appendTableColumnFormulaMutations(i,n,{unitId:c,subUnitId:l,tableId:e.getId(),tableName:e.getTableInfo().name,range:d,columns:s})}else if(d.startColumn>r.startColumn&&d.endColumn<=r.endColumn){let t=e.toJSON();i.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:e.getId(),config:{rowColOperation:{operationType:`delete`,rowColType:`column`,index:d.startColumn,count:f}}}});let a=[],s=d.startColumn-r.startColumn;for(let t=0;t<f;t++){let n=e.getTableColumnByIndex(t+s);n&&a.push(n.toJSON())}o.push(this._getDeleteTableMutation(c,l,e.getId())),n.push(this._getAddTableMutation(c,l,t)),this._appendTableColumnFormulaMutations(i,n,{unitId:c,subUnitId:l,tableId:e.getId(),tableName:e.getTableInfo().name,range:d,columns:a})}}}),{undos:n,redos:i,preRedos:a,preUndos:o}}_getDeleteTableMutation(e,t,n){return{id:V.id,params:{unitId:e,subUnitId:t,tableId:n}}}_getAddTableMutation(e,t,n){let r=n.columns.map(e=>e.displayName);return{id:B.id,params:{unitId:e,subUnitId:t,tableId:n.id,name:n.name,header:r,range:n.range,options:{...n.options,columns:n.columns,filters:n.filters.tableColumnFilterList}}}}_appendTableColumnFormulaMutations(e,t,n){let r=n.columns.map(e=>e.displayName);if(!r.length)return;let i=this._sheetInterceptorService.onCommandExecute({id:`sheet.command.table-remove-col`,params:{unitId:n.unitId,subUnitId:n.subUnitId,tableId:n.tableId,tableName:n.tableName,range:n.range,removedColumnNames:r}});e.splice(Math.max(e.length-1,0),0,...i.preRedos??[],...i.redos),t.push(...i.preUndos??[],...i.undos)}_initCommandListener(){this._commandService.onCommandExecuted(e=>{if(e.id===r.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===r.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===r.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===r.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}})})}})}};Z=L([I(0,(0,t.Inject)(t.ICommandService)),I(1,(0,t.Inject)(r.RefRangeService)),I(2,(0,t.Inject)(t.IUniverInstanceService)),I(3,(0,t.Inject)(t.Injector)),I(4,(0,t.Inject)(r.SheetInterceptorService)),I(5,(0,t.Inject)(R)),I(6,(0,t.Inject)(t.LocaleService))],Z);let Q=class extends t.Disposable{constructor(e,t,n,r,i){super(),this._tableManager=e,this._sheetInterceptorService=t,this._univerInstanceService=n,this._sheetRowFilteredService=r,this._zebraCrossingCacheController=i,D(this,`_tableFilteredOutRows`,new Map),D(this,`_subscription`,null),this.registerFilterChangeEvent(),this.initTableHiddenRowIntercept(),this._registerFormulaRowFiltered(),this._initFilteredOutRows()}_registerFormulaRowFiltered(){this.disposeWithMe(this._sheetRowFilteredService.register((e,t,n)=>this._getTableFilteredOutRows(e,t).has(n)))}initTableHiddenRowIntercept(){this.disposeWithMe(this._sheetInterceptorService.intercept(r.INTERCEPTOR_POINT.ROW_FILTERED,{priority:100,handler:(e,t,n)=>{if(e)return!0;let r=this._getTableFilteredOutRows(t.unitId,t.subUnitId).has(t.row);return r?!0:n(r)}}))}_initFilteredOutRows(){this._tableManager.tableInitStatus$.pipe((0,i.filter)(e=>e),(0,i.switchMap)(()=>this._univerInstanceService.getCurrentTypeOfUnit$(t.UniverInstanceType.UNIVER_SHEET)),(0,i.filter)(e=>e!=null),(0,i.switchMap)(e=>e.activeSheet$),(0,i.filter)(e=>e!=null)).subscribe(()=>{let e=(0,r.getSheetCommandTarget)(this._univerInstanceService);if(!e)return;let{unitId:t,subUnitId:n}=e;this._refreshTableFilteredOutRows(t,n)})}registerFilterChangeEvent(){this.disposeWithMe(this._tableManager.tableFilterChanged$.subscribe(e=>{let{unitId:t,subUnitId:n,tableId:r}=e,i=this._univerInstanceService.getUnit(t),a=i==null?void 0:i.getSheetBySheetId(n),o=this._tableManager.getTable(t,r);a&&o&&(o.getTableFilters().doFilter(a,o.getTableFilterRange(),i==null?void 0:i.getDateSystem()),this._refreshTableFilteredOutRows(t,n),this._zebraCrossingCacheController.updateZebraCrossingCache(t,n))}))}_refreshTableFilteredOutRows(e,t){let n=new Set;this._tableManager.getTablesBySubunitId(e,t).forEach(e=>{let t=e.getTableFilters().getFilterOutRows();if(t)for(let e of t)n.add(e)}),this._tableFilteredOutRows.set(this._getSheetKey(e,t),n)}_getTableFilteredOutRows(e,t){let n=this._getSheetKey(e,t);return this._tableFilteredOutRows.has(n)||this._refreshTableFilteredOutRows(e,t),this._tableFilteredOutRows.get(n)??new Set}_getSheetKey(e,t){return`${e}|${t}`}dispose(){var e;super.dispose(),(e=this._subscription)==null||e.unsubscribe()}};Q=L([I(0,(0,t.Inject)(R)),I(1,(0,t.Inject)(r.SheetInterceptorService)),I(2,(0,t.Inject)(t.IUniverInstanceService)),I(3,(0,t.Inject)(n.ISheetRowFilteredService)),I(4,(0,t.Inject)(r.ZebraCrossingCacheController))],Q);let $=class extends t.Plugin{constructor(e=T,n,r,i){super(),this._config=e,this._injector=n,this._configService=r,this._commandService=i;let{...a}=(0,t.merge)({},T,this._config);this._configService.setConfig(`sheets-table.config`,a),this._initRegisterCommand()}onStarting(){(0,t.registerDependencies)(this._injector,[[R],[J],[K],[z],[Q],[X],[Z],[Y]])}onReady(){(0,t.touchDependencies)(this._injector,[[Y],[X],[Z],[J],[K],[z],[Q]]),(0,t.touchDependencies)(this._injector,[[R]])}_initRegisterCommand(){[_t,B,U,V,G,Ct,wt,St,H,vt,yt,Et,Ot,Dt,kt,jt,q,At].forEach(e=>this._commandService.registerCommand(e))}};D($,`pluginName`,ae),D($,`packageName`,Mt),D($,`version`,Nt),D($,`type`,t.UniverInstanceType.UNIVER_SHEET),$=L([(0,t.DependentOn)(r.UniverSheetsPlugin),I(1,(0,t.Inject)(t.Injector)),I(2,t.IConfigService),I(3,(0,t.Inject)(t.ICommandService))],$),e.AddSheetTableCommand=_t,e.AddSheetTableMutation=B,e.AddTableThemeCommand=vt,e.DeleteSheetTableCommand=U,e.DeleteSheetTableMutation=V,e.RemoveTableThemeCommand=yt,e.SHEET_TABLE_CUSTOM_THEME_PREFIX=oe,e.SetSheetTableCommand=St,e.SetSheetTableFilterCommand=Ct,e.SetSheetTableFilterMutation=G,e.SetSheetTableMutation=H,e.SetSheetTableSortStateCommand=wt,e.SheetTableInsertColCommand=Ot,e.SheetTableInsertColumnAtCommand=kt,e.SheetTableInsertRowAtCommand=Dt,e.SheetTableInsertRowCommand=Et,e.SheetTableRemoveColCommand=q,e.SheetTableRemoveColumnAtCommand=At,e.SheetTableRemoveRowCommand=jt,Object.defineProperty(e,"SheetTableService",{enumerable:!0,get:function(){return z}}),e.SheetsTableButtonStateEnum=d,Object.defineProperty(e,"SheetsTableController",{enumerable:!0,get:function(){return K}}),e.SheetsTableSortStateEnum=f,Object.defineProperty(e,"SheetsTableThemeController",{enumerable:!0,get:function(){return J}}),e.TABLE_FILTER_EMPTY_VALUE=se,e.TableColumnDataTypeEnum=a,e.TableColumnFilterTypeEnum=o,e.TableConditionTypeEnum=s,e.TableDateCompareTypeEnum=u,Object.defineProperty(e,"TableManager",{enumerable:!0,get:function(){return R}}),e.TableNumberCompareTypeEnum=c,e.TableStringCompareTypeEnum=l,Object.defineProperty(e,"UniverSheetsTablePlugin",{enumerable:!0,get:function(){return $}}),e.compileTableRecordFilter=P,e.customEmptyThemeWithBorderStyle=ee,e.getExistingNamesSet=C,e.getTableRecordValue=ut,e.getTableRecordValueKey=N,e.isColorTableFilter=x,e.isConditionFilter=y,e.isManualTableFilter=b,e.isRecordTableFilter=S,e.processStyleWithBorderStyle=te,e.validateSheetTableName=bt});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/engine-formula"),require("@univerjs/sheets"),require("rxjs")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/engine-formula`,`@univerjs/sheets`,`rxjs`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverSheetsTable={},e.UniverCore,e.UniverEngineFormula,e.UniverSheets,e.rxjs))})(this,function(e,t,n,r,i){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let a=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}({}),o=function(e){return e.manual=`manual`,e.condition=`condition`,e.color=`color`,e.record=`record`,e}({}),s=function(e){return e.Date=`date`,e.Number=`number`,e.String=`string`,e.Logic=`logic`,e}({}),c=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}({}),l=function(e){return e.Equal=`equal`,e.NotEqual=`notEqual`,e.Contains=`contains`,e.NotContains=`notContains`,e.StartsWith=`startsWith`,e.EndsWith=`endsWith`,e}({}),u=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}({}),d=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}({}),f=function(e){return e.Asc=`asc`,e.Desc=`desc`,e.None=`none`,e}({});function p(e,t){return`${t} ${e}`}let m=`TRUE`,h=`FALSE`,g=e=>{var t;return((t=e.body)==null?void 0:t.dataStream.replace(/\r\n$/,``))||``};function _(e){if(e){let{v:n,t:r,p:i}=e;return i?g(i):(r===t.CellValueType.FORCE_STRING||r===t.CellValueType.STRING)&&n!=null?String(n):r===t.CellValueType.BOOLEAN?n?m:h:r===t.CellValueType.NUMBER?String(n):typeof n==`boolean`?n?m:h:n==null?``:String(n)}return``}function v(e,t){if(e!=null)switch(t){case`asc`:return 2;case`desc`:return 3;default:return 1}else switch(t){case`asc`:return 5;case`desc`:return 6;default:return 4}}function y(e){return e?e.filterType===`condition`:!1}function b(e){return e?e.filterType===`manual`:!1}function x(e){return e?e.filterType===`color`:!1}function S(e){return e?e.filterType===`record`:!1}function C(e,n){let{univerInstanceService:r,tableManager:i,definedNamesService:a}=n,o=new Set,s=r==null?void 0:r.getUnit(e,t.UniverInstanceType.UNIVER_SHEET);s&&s.getSheets().forEach(e=>{o.add(e.getName().toLowerCase())});let c=i==null?void 0:i.getTableList(e);c&&c.length>0&&c.forEach(e=>{o.add(e.name.toLowerCase())});let l=a==null?void 0:a.getDefinedNameMap(e);return l&&Object.values(l).forEach(e=>{o.add(e.name.toLowerCase())}),o}let w={s:t.BorderStyleTypes.THIN,cl:{rgb:`rgb(95, 101, 116)`}},T={},ee={headerRowStyle:{bd:{t:w}},headerColumnStyle:{bd:{l:w}},lastColumnStyle:{bd:{r:w}},lastRowStyle:{bd:{b:w}}},te=(e,t)=>{if(e===`headerRowStyle`){if(!t.bd)return{...t,bd:{t:w}}}else if(e===`lastRowStyle`){if(!t.bd)return{...t,bd:{b:w}}}else if(e===`lastColumnStyle`){if(!t.bd)return{...t,bd:{r:w}}}else if(e===`headerColumnStyle`&&!t.bd)return{...t,bd:{l:w}};return t},ne=[[[`#6280F9`,`#FFFFFF`,`#EEF2FF`,`#DCE4FF`],[`#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:w}},headerColumnStyle:{bd:{l:w}},firstRowStyle:{bg:{rgb:a}},secondRowStyle:{bg:{rgb:o}},lastRowStyle:{bg:{rgb:s},bd:{b:w}},lastColumnStyle:{bd:{r:w}}}}});function E(e){"@babel/helpers - typeof";return E=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},E(e)}function re(e,t){if(E(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(E(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ie(e){var t=re(e,`string`);return E(t)==`symbol`?t:t+``}function D(e,t,n){return(t=ie(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var O=class{constructor(e,t){D(this,`dataType`,void 0),D(this,`id`,void 0),D(this,`displayName`,void 0),D(this,`formula`,void 0),D(this,`formulaIsArray`,void 0),D(this,`totalsRowLabel`,void 0),D(this,`totalsRowFunction`,void 0),D(this,`totalsRowFormula`,void 0),D(this,`showFilterButton`,void 0),D(this,`meta`,void 0),D(this,`style`,void 0),this.id=e,this.displayName=t,this.dataType=`string`,this.formula=``,this.showFilterButton=!0,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,formulaIsArray:this.formulaIsArray,totalsRowLabel:this.totalsRowLabel,totalsRowFunction:this.totalsRowFunction,totalsRowFormula:this.totalsRowFormula,showFilterButton:this.showFilterButton,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.formulaIsArray=e.formulaIsArray,this.totalsRowLabel=e.totalsRowLabel,this.totalsRowFunction=e.totalsRowFunction,this.totalsRowFormula=e.totalsRowFormula,this.showFilterButton=e.showFilterButton??!0,this.meta=e.meta,this.style=e.style}isShowFilterButton(){return this.showFilterButton}};let ae=`SHEET_TABLE_PLUGIN`,k=`SHEET_TABLE`,oe=`table-custom`,se=`__UNIVER_TABLE_FILTER_EMPTY__`,ce=e=>e.getMonth()<=2,le=e=>{let t=e.getMonth();return t>2&&t<=5},ue=e=>{let t=e.getMonth();return t>5&&t<=8},de=e=>{let t=e.getMonth();return t>8&&t<=11},fe=e=>e.getMonth()===0,pe=e=>e.getMonth()===1,me=e=>e.getMonth()===2,he=e=>e.getMonth()===3,ge=e=>e.getMonth()===4,_e=e=>e.getMonth()===5,ve=e=>e.getMonth()===6,ye=e=>e.getMonth()===7,be=e=>e.getMonth()===8,xe=e=>e.getMonth()===9,Se=e=>e.getMonth()===10,Ce=e=>e.getMonth()===11,we=(e,t=new Date)=>e.toDateString()===t.toDateString(),Te=(e,t=new Date)=>{let n=new Date(t);return n.setDate(n.getDate()+1),e.toDateString()===n.toDateString()},Ee=(e,t=new Date)=>{let n=new Date(t);return n.setDate(n.getDate()-1),e.toDateString()===n.toDateString()},A=e=>{let t=e.getDay(),n=e.getDate()-t+(t===0?-6:1),r=new Date(e);return r.setDate(n),r},De=6048e5,Oe=(e,t=new Date)=>{let n=A(e),r=A(t);return n.toDateString()===r.toDateString()},ke=(e,t=new Date)=>{let n=A(e),r=new Date(A(t).getTime()+De);return n.toDateString()===r.toDateString()},Ae=(e,t=new Date)=>{let n=A(e),r=new Date(A(t).getTime()-De);return n.toDateString()===r.toDateString()},je=(e,t=new Date)=>e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth(),Me=e=>{let t=new Date(e);return t.setHours(0,0,0,0),t.setDate(1),t},Ne=(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()},Pe=(e,t=new Date)=>{let n=Me(t),r=new Date(n);r.setMonth(r.getMonth()+1,0);let i=e.getTime();return i>=n.getTime()&&i<r.getTime()},j=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},Fe=(e,t=new Date)=>{let n=j(t),r=new Date(n);r.setMonth(r.getMonth()+3);let i=e.getTime();return i>=n.getTime()&&i<r.getTime()},Ie=(e,t=new Date)=>{let n=j(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()},Le=(e,t=new Date)=>{let n=j(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()},Re=(e,t=new Date)=>e.getFullYear()===t.getFullYear(),ze=(e,t=new Date)=>e.getFullYear()===t.getFullYear()+1,Be=(e,t=new Date)=>e.getFullYear()===t.getFullYear()-1,Ve=(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 He(e){switch(e.compareType){case`equal`:{let t=new Date(e.expectedValue);return e=>e.getTime()===t.getTime()}case`notEqual`:{let t=new Date(e.expectedValue);return e=>e.getTime()!==t.getTime()}case`after`:{let t=new Date(e.expectedValue);return e=>e.getTime()>t.getTime()}case`before`:{let t=new Date(e.expectedValue);return e=>e.getTime()<t.getTime()}case`afterOrEqual`:{let t=new Date(e.expectedValue);return e=>e.getTime()>=t.getTime()}case`beforeOrEqual`:{let t=new Date(e.expectedValue);return e=>e.getTime()<=t.getTime()}case`between`:return t=>{let[n,r]=e.expectedValue;return t.getTime()>=new Date(n).getTime()&&t.getTime()<=new Date(r).getTime()};case`notBetween`:return t=>{let[n,r]=e.expectedValue;return t.getTime()<new Date(n).getTime()||t.getTime()>new Date(r).getTime()};case`today`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>we(e,t)}case`yesterday`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Ee(e,t)}case`tomorrow`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Te(e,t)}case`thisWeek`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Oe(e,t)}case`lastWeek`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Ae(e,t)}case`nextWeek`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>ke(e,t)}case`thisMonth`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>je(e,t)}case`lastMonth`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Pe(e,t)}case`nextMonth`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Ne(e,t)}case`thisQuarter`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Fe(e,t)}case`lastQuarter`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Le(e,t)}case`nextQuarter`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Ie(e,t)}case`thisYear`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Re(e,t)}case`lastYear`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Be(e,t)}case`nextYear`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>ze(e,t)}case`yearToDate`:{let t=e.anchorTime?new Date(e.anchorTime):new Date;return e=>Ve(e,t)}case`m1`:return fe;case`m2`:return pe;case`m3`:return me;case`m4`:return he;case`m5`:return ge;case`m6`:return _e;case`m7`:return ve;case`m8`:return ye;case`m9`:return be;case`m10`:return xe;case`m11`:return Se;case`m12`:return Ce;case`q1`:return ce;case`q2`:return le;case`q3`:return ue;case`q4`:return de;default:throw Error(`Unsupported compare type`)}}var Ue=class{constructor(){D(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)}},We=class extends Ue{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)}};let Ge=(e,t)=>{let n=new We;for(let r of e)n.insert(r),n.size()>t&&n.pop();return n.heap},Ke=(e,t)=>e>t,qe=(e,t)=>e<t,Je=(e,t,n)=>Ge(e,t).includes(n);function Ye(e,t){switch(e.compareType){case`equal`:{let t=Number(e.expectedValue);return e=>e===t}case`notEqual`:{let t=Number(e.expectedValue);return e=>e!==t}case`greaterThan`:{let t=Number(e.expectedValue);return e=>e>t}case`greaterThanOrEqual`:{let t=Number(e.expectedValue);return e=>e>=t}case`lessThan`:{let t=Number(e.expectedValue);return e=>e<t}case`lessThanOrEqual`:{let t=Number(e.expectedValue);return e=>e<=t}case`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`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`above`:{let e=t.average;return t=>Ke(t,e)}case`below`:{let e=t.average;return t=>qe(t,e)}case`topN`:{let n=t.list,r=Number(e.expectedValue);return e=>Je(n,r,e)}}}let Xe=(e,n)=>t.regexp.createFromWildcard(n).test(e),Ze=(e,n)=>!t.regexp.createFromWildcard(n).test(e),Qe=(e,n)=>t.regexp.createFromWildcard(`*${n}*`).test(e),$e=(e,n)=>!t.regexp.createFromWildcard(`*${n}*`).test(e),et=(e,n)=>t.regexp.createFromWildcard(`${n}*`).test(e),tt=(e,n)=>t.regexp.createFromWildcard(`*${n}`).test(e);function nt(e){switch(e.compareType){case`equal`:return t=>Xe(t,e.expectedValue);case`notEqual`:return t=>Ze(t,e.expectedValue);case`contains`:return t=>Qe(t,e.expectedValue);case`notContains`:return t=>$e(t,e.expectedValue);case`startsWith`:return t=>et(t,e.expectedValue);case`endsWith`:return t=>tt(t,e.expectedValue);default:return console.error(`Unknown filter operator: ${e.compareType}`),e=>!0}}let rt=new Set([`above`,`below`,`topN`]);function it(e){return rt.has(e)}function at(e,t){if(it(e.filterInfo.compareType))return e=>!0;switch(e.filterInfo.conditionType){case`date`:return He(e.filterInfo);case`number`:return Ye(e.filterInfo,t);case`string`:return nt(e.filterInfo);default:return e=>!0}}function M(e,n,r,i,a=t.DateSystem.Date1900){switch(i){case`date`:{let t=ct(e,n,r);return t==null?null:lt(t,a)}case`number`:return ct(e,n,r);default:return st(e,n,r)}}let ot=e=>{var t;return((t=e.body)==null?void 0:t.dataStream.replace(/\r\n$/,``))||``};function st(e,n,r){let i=e.getCell(n,r);if(!i)return null;let{v:a,t:o,p:s}=i;if(s)return ot(s);if(typeof a==`string`)return o===t.CellValueType.BOOLEAN?a.toUpperCase():a;if(typeof a==`number`)return o===t.CellValueType.BOOLEAN?a?`TRUE`:`FALSE`:a;if(typeof a==`boolean`)return a?`TRUE`:`FALSE`;if(a!==void 0)return String(a)}function ct(e,n,r){let i=e.getCell(n,r);if(!i)return null;let{v:a,t:o,p:s}=i;return s?null:typeof a==`string`&&o===t.CellValueType.NUMBER?Number(e.getCellRaw(n,r).v):Number(a)}function lt(e,n=t.DateSystem.Date1900){let r=(0,t.excelSerialToDateTime)(e,n);return Number.isNaN(r.getTime())?r:new Date(r.getUTCFullYear(),r.getUTCMonth(),r.getUTCDate(),r.getUTCHours(),r.getUTCMinutes(),r.getUTCSeconds(),r.getUTCMilliseconds())}function ut(e,r,i){let a=e.getCell(r,i),o=(0,n.extractFormulaError)(a,(a==null?void 0:a.isInArrayFormulaRange)===!0);if(o!==null)return{type:t.RecordValueType.Error,value:o};if(!a)return{type:t.RecordValueType.Blank};if(a.p)return{type:t.RecordValueType.String,value:_(a)};let s=a.v;if(s==null)return{type:t.RecordValueType.Blank};if(a.t===t.CellValueType.STRING||a.t===t.CellValueType.FORCE_STRING)return{type:t.RecordValueType.String,value:String(s)};if(a.t===t.CellValueType.BOOLEAN)return{type:t.RecordValueType.Boolean,value:dt(s)};if(a.t===t.CellValueType.NUMBER||typeof s==`number`){var c;let n=ft(pt(e,r,i,s,a.t===t.CellValueType.NUMBER,a.isInArrayFormulaRange===!0)),o=(c=e.getComposedCellStyleByCellData(r,i,a).n)==null?void 0:c.pattern;return o&&t.numfmt.getFormatInfo(o).isDate?{type:t.RecordValueType.Date,value:n}:{type:t.RecordValueType.Number,value:n}}if(typeof s==`boolean`)return{type:t.RecordValueType.Boolean,value:s};if(typeof s==`string`)return{type:t.RecordValueType.String,value:s};throw TypeError(`Invalid table record cell value.`)}function N(e){let n=e;if(!mt(n)||typeof n.type!=`string`)throw TypeError(`Invalid table record value.`);switch(n.type){case t.RecordValueType.Blank:if(`value`in n)throw TypeError(`Blank table record values cannot have a value.`);return`["blank"]`;case t.RecordValueType.String:case t.RecordValueType.Error:if(typeof n.value!=`string`)throw TypeError(`Invalid table record value.`);return JSON.stringify([n.type,n.value]);case t.RecordValueType.Boolean:if(typeof n.value!=`boolean`)throw TypeError(`Invalid table record value.`);return JSON.stringify([n.type,n.value]);case t.RecordValueType.Number:case t.RecordValueType.Date:if(typeof n.value!=`number`)throw TypeError(`Invalid table record value.`);if(!Number.isFinite(n.value))throw RangeError(`Table record numeric values must be finite.`);return JSON.stringify([n.type,n.value===0?0:n.value]);default:throw TypeError(`Unknown table record value type.`)}}function P(e){let n=e;if(!mt(n)||n.filterType!==`record`||n.mode!==t.FilterSelectionMode.Include&&n.mode!==t.FilterSelectionMode.Exclude||!Array.isArray(n.values))throw TypeError(`Invalid table record filter.`);let r=new Set(n.values.map(e=>N(e)));return n.mode===t.FilterSelectionMode.Include?e=>r.has(N(e)):e=>!r.has(N(e))}function F(e){return P(e),{filterType:`record`,mode:e.mode,values:e.values.map(e=>e.type===t.RecordValueType.Blank?{type:t.RecordValueType.Blank}:{...e})}}function dt(e){if(e===!0||e===1||typeof e==`string`&&e.toUpperCase()===`TRUE`)return!0;if(e===!1||e===0||typeof e==`string`&&e.toUpperCase()===`FALSE`)return!1;throw TypeError(`Invalid table record boolean value.`)}function ft(e){let t=typeof e==`number`?e:Number(e);if(!Number.isFinite(t))throw RangeError(`Table record numeric values must be finite.`);return t}function pt(e,t,n,r,i,a){var o;return!i||a?r:((o=e.getCellRaw(t,n))==null?void 0:o.v)??r}function mt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var ht=class{constructor(){D(this,`_tableColumnFilterList`,void 0),D(this,`_tableSortInfo`,void 0),D(this,`_filterOutRows`,new Set),this._tableColumnFilterList=[]}setColumnFilter(e,t){t?t.filterType===`record`?this._tableColumnFilterList[e]=F(t):this._tableColumnFilterList[e]=t:this._tableColumnFilterList[e]=void 0}setSortState(e,t){this._tableSortInfo={columnIndex:e,sortState:t}}setSortInfo(e){this._tableSortInfo=e}getColumnFilter(e){let t=this._tableColumnFilterList[e];return(t==null?void 0:t.filterType)===`record`?F(t):t}getFilterState(e){var t;let n=((t=this._tableSortInfo)==null?void 0:t.columnIndex)===e?this._tableSortInfo.sortState:`none`;return v(this._tableColumnFilterList[e],n)}getSortState(){return this._tableSortInfo??{}}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}setFilterOutRows(e){this._filterOutRows=new Set(e)}doFilter(e,n,r=t.DateSystem.Date1900){let i=new Set,a=this._tableColumnFilterList;for(let t=0;t<a.length;t++)a[t]&&this.doColumnFilter(e,n,t,i,r);return this._filterOutRows=i,i}doColumnFilter(e,n,r,i,a=t.DateSystem.Date1900){let o=this._tableColumnFilterList[r];if(o&&e){let{startRow:t,endRow:s,startColumn:c}=n,l=c+r;if(o.filterType===`record`){let n=P(o);for(let r=t;r<=s;r++)n(ut(e,r,l))||i.add(r);return}let u=this.getExecuteFunc(e,n,r,o);for(let n=t;n<=s;n++){if(x(o)){let t=e.getCell(n,l);u(e.getComposedCellStyleByCellData(n,l,t))||i.add(n);continue}let t=y(o)?o.filterInfo.conditionType:`string`,r=M(e,n,l,t,a);r===null&&!u(r)?i.add(n):u(M(e,n,l,t,a))||i.add(n)}}}_getNumberCalculatedOptions(e,t,n){let{startRow:r,endRow:i,startColumn:a}=t,o=a+n,s=[],c=0,l=0;for(let t=r;t<=i;t++){let n=M(e,t,o,`number`);n!==null&&(s.push(n),c++,l+=n)}return{list:s,average:c>0?l/c:0}}getExecuteFunc(e,n,r,i){if(i.filterType===`manual`){let e=new Set(i.values);return t=>t==null?e.has(se):e.has(String(t))}if(i.filterType===`record`)return P(i);if(i.filterType===`condition`)return at(i,it(i.filterInfo.compareType)?this._getNumberCalculatedOptions(e,n,r):void 0);if(i.filterType===`color`){let e=e=>e?new t.ColorKit(e).toRgbString():null;if(i.cellFillColors){let n=new Set(i.cellFillColors.map(e));return r=>n.has(e((0,t.getColorStyle)(r==null?void 0:r.bg)))}if(i.cellTextColors){let n=new Set(i.cellTextColors.map(e));return r=>n.has(e((0,t.getColorStyle)(r==null?void 0:r.cl)??(0,t.getColorStyle)(t.DEFAULT_STYLES.cl)))}}else return e=>!0;return()=>!0}toJSON(){return{tableColumnFilterList:this._tableColumnFilterList.some(e=>(e==null?void 0:e.filterType)===`record`)?this._tableColumnFilterList.map(e=>(e==null?void 0:e.filterType)===`record`?F(e):e):this._tableColumnFilterList,tableSortInfo:this._tableSortInfo}}fromJSON(e){let t=e.tableColumnFilterList??[];t.some(e=>(e==null?void 0:e.filterType)===`record`)?(this._tableColumnFilterList=[],t.forEach((e,t)=>this.setColumnFilter(t,e))):this._tableColumnFilterList=t,e.tableSortInfo&&(this._tableSortInfo=e.tableSortInfo)}dispose(){this._tableColumnFilterList=[],this._filterOutRows=new Set}},gt=class{constructor(e,t,n,r,i={}){D(this,`_id`,void 0),D(this,`_name`,void 0),D(this,`_tableStyleId`,void 0),D(this,`_showHeader`,void 0),D(this,`_showFooter`,void 0),D(this,`_showAutoFilter`,void 0),D(this,`_range`,void 0),D(this,`_columns`,new Map),D(this,`_columnOrder`,[]),D(this,`tableMeta`,void 0),D(this,`_tableFilters`,void 0),D(this,`_subUnitId`,void 0),this._id=e,this._range=n,this._name=t,this._tableFilters=new ht,this._init(r,i)}_init(e,n){this._tableStyleId=n==null?void 0:n.tableStyleId,this._showHeader=(n==null?void 0:n.showHeader)??!0,this._showFooter=(n==null?void 0:n.showFooter)??!1,this._showAutoFilter=(n==null?void 0:n.showAutoFilter)??!0;let r=this.getRange(),i=r.startColumn,a=r.endColumn;for(let r=i;r<=a;r++){var o;let a=r-i,s,c;(o=n.columns)!=null&&o[a]?(s=n.columns[a].id,c=n.columns[a].displayName):(s=(0,t.generateRandomId)(),c=e[r-i]);let l=new O(s,c);this._columns.set(s,l),this._columnOrder.push(s)}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 O(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(){return this._tableStyleId??ne[0].name}setTableStyleId(e){this._tableStyleId=e}isShowHeader(){return this._showHeader??!0}setShowHeader(e){this._showHeader=e}isShowFooter(){return this._showFooter??!1}isShowAutoFilter(){return this._showAutoFilter??!0}setShowAutoFilter(e){this._showAutoFilter=e}getTableInfo(){return{id:this._id,subUnitId:this._subUnitId,name:this._name,range:this.getRangeInfo(),meta:this.tableMeta,showHeader:this._showHeader,showAutoFilter:this._showAutoFilter,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,showAutoFilter:this._showAutoFilter},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,showAutoFilter:this._showAutoFilter,tableStyleId:this._tableStyleId},filters:this._tableFilters.toJSON(),columns:e,meta:this.tableMeta}}fromJSON(e){this._id=e.id,this._name=e.name,this._range=e.range,this.tableMeta=e.meta,this._tableStyleId=e.options.tableStyleId||``,this._showHeader=e.options.showHeader??!0,this._showFooter=e.options.showFooter??!0,this._showAutoFilter=e.options.showAutoFilter??!0,this._columns.clear(),this._columnOrder=[],e.columns.forEach(e=>{let t=new O(e.id,e.displayName);t.fromJSON(e),this._columns.set(e.id,t),this._columnOrder.push(e.id)}),this._tableFilters=new ht,this._tableFilters.fromJSON(e.filters)}dispose(){this._id=``,this._name=``,this._tableStyleId=``,this._showHeader=!0,this._showFooter=!0,this._showAutoFilter=!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 t.Disposable{constructor(e,t){super(),this._univerInstanceService=e,this._localeService=t,D(this,`_tableMap`,void 0),D(this,`_tableAdd$`,new i.Subject),D(this,`tableAdd$`,this._tableAdd$.asObservable()),D(this,`_tableDelete$`,new i.Subject),D(this,`tableDelete$`,this._tableDelete$.asObservable()),D(this,`_tableNameChanged$`,new i.Subject),D(this,`tableNameChanged$`,this._tableNameChanged$.asObservable()),D(this,`_tableRangeChanged$`,new i.Subject),D(this,`tableRangeChanged$`,this._tableRangeChanged$.asObservable()),D(this,`_tableThemeChanged$`,new i.Subject),D(this,`tableThemeChanged$`,this._tableThemeChanged$.asObservable()),D(this,`_tableFilterChanged$`,new i.Subject),D(this,`tableFilterChanged$`,this._tableFilterChanged$.asObservable()),D(this,`_tableInitStatus`,new i.BehaviorSubject(!1)),D(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??`Column`;for(let e=s;e<=c;e++)l.push(_(a==null?void 0:a.getCell(o,e))||p(e-s+1,u));return l}addTable(e,n,r,i,a,o,s){let c=o??(0,t.generateRandomId)(),l=new gt(c,r,i,a||this.getColumnHeader(e,n,i),s);if(l.setSubunitId(n),this._ensureUnit(e).set(c,l),this._tableAdd$.next({unitId:e,subUnitId:n,range:i,tableName:r,tableId:c,tableStyleId:s==null?void 0:s.tableStyleId}),s!=null&&s.filters){let t=this._univerInstanceService.getUnit(e),r=t==null?void 0:t.getSheetBySheetId(n);l.getTableFilters().doFilter(r,i,t==null?void 0:t.getDateSystem()),this._tableFilterChanged$.next({unitId:e,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()&&e.isShowAutoFilter()&&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(e,n,r){let i=this.getTableById(e,n);if(!i)return;let{operationType:a,rowColType:o,index:s,count:c,columnsJson:l}=r,u=i.getRange(),d={...u};if(a===`insert`){if(o===`row`)d.endRow+=c;else if(o===`column`){d.endColumn+=c;for(let e=0;e<c;e++){let n=this._localeService.t(`sheets-table.columnPrefix`),r=new O((0,t.generateRandomId)(),p(i.getColumnsCount()+1+e,n));l!=null&&l[e]&&r.fromJSON(l[e]);let a=s+e-u.startColumn;i.insertColumn(a,r)}}}else if(o===`row`)d.endRow-=c;else if(o===`column`){d.endColumn-=c;for(let e=c-1;e>=0;e--){let t=s+e-u.startColumn;i.removeColumn(t)}}i.setRange(d),this._tableRangeChanged$.next({unitId:e,subUnitId:i.getSubunitId(),tableId:n,range:d,oldRange:u})}updateTableRange(e,n,r){let i=this.getTableById(e,n);if(!i)return;let a=i.getRange(),o=r.newRange;if(o.startColumn<a.startColumn){let e=a.startColumn-o.startColumn,n=this._localeService.t(`sheets-table.columnPrefix`);for(let r=0;r<e;r++)i.insertColumn(a.startColumn,new O((0,t.generateRandomId)(),p(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 e=o.endColumn-a.endColumn,n=this._localeService.t(`sheets-table.columnPrefix`);for(let r=0;r<e;r++)i.insertColumn(a.endColumn,new O((0,t.generateRandomId)(),p(i.getColumnsCount()+1,n)))}i.setRange(o),this._tableRangeChanged$.next({unitId:e,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,sortInfo:u,options:d,filterButtons:f}=n;if(n.calculatedColumn){let e=i.getColumn(n.calculatedColumn.columnId);e&&(e.formula=n.calculatedColumn.formula,e.formulaIsArray=n.calculatedColumn.formulaIsArray)}if(f){f.showAutoFilter!==void 0&&i.setShowAutoFilter(f.showAutoFilter);for(let[e,t]of Object.entries(f.columns??{})){let n=i.getColumn(e);n&&(n.showFilterButton=t)}}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){let n=i.getTableStyleId()??`default`;i.setTableStyleId(l),this._tableThemeChanged$.next({unitId:e,subUnitId:a,tableId:t,theme:l,oldTheme:n})}`sortInfo`in n&&i.getTableFilters().setSortInfo(u),d&&d.showHeader!==void 0&&i.setShowHeader(d.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 n=this._ensureUnit(e);Object.keys(t).forEach(i=>{let a=(0,r.getSheetCommandTarget)(this._univerInstanceService,{unitId:e,subUnitId:i});if(!a)return;let o=a.worksheet,s;if(t[i].tables?s=t[i].tables:Array.isArray(t[i])&&(s=t[i]),!s)return;let c=t[i].tableFilteredOutRows;s.forEach(t=>{var r;let s=this.getColumnHeader(e,i,t.range),l=new gt(t.id,t.name,t.range,s,t.options);if(l.setTableMeta(t.meta),t.columns.length&&l.setColumns(t.columns),t.filters){let e=l.getTableFilters();if(e.fromJSON(t.filters),Array.isArray(c)){let{startRow:t,endRow:n}=l.getTableFilterRange();e.setFilterOutRows(c.filter(e=>e>=t&&e<=n))}else e.doFilter(o,l.getTableFilterRange(),a.workbook.getDateSystem())}l.setSubunitId(i),n.set(t.id,l),this._tableAdd$.next({unitId:e,subUnitId:i,range:t.range,tableName:t.name,tableId:t.id,tableStyleId:(r=t.options)==null?void 0:r.tableStyleId})})}),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,t.IUniverInstanceService),I(1,(0,t.Inject)(t.LocaleService))],R);let z=class extends t.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=`string`){return M(e,t,n,r)}};z=L([I(0,(0,t.Inject)(R))],z);let B={id:`sheet.mutation.add-table`,type:t.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:t.CommandType.MUTATION,handler:(e,t)=>{let{unitId:n,subUnitId:r,tableId:i}=t;return e.get(z).deleteTable(n,r,i),!0}},_t={id:`sheet.command.add-table`,type:t.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;let i=e.get(t.IUndoRedoService),a=e.get(t.ICommandService),o=e.get(t.LocaleService),s=e.get(R),c=r.id??(0,t.generateRandomId)(),l=C(r.unitId,{univerInstanceService:e.get(t.IUniverInstanceService),tableManager:s,definedNamesService:e.get(n.IDefinedNamesService)}),u=r.name;if(!u||!(0,t.customNameCharacterCheck)(u.toLowerCase(),l)){let e=o.t(`sheets-table.tablePrefix`),t=s.getTableList(r.unitId).length+1;for(let n of l)if(n.startsWith(e.toLowerCase())){let r=Number(n.slice(e.length));Number.isInteger(r)&&r>=t&&(t=r+1)}u=`${e}${t}`}let d=[],f=[],{unitId:p,subUnitId:m,range:h}=r,g=s.getColumnHeader(p,m,h,o.t(`sheets-table.columnPrefix`));return d.push({id:B.id,params:{...r,tableId:c,name:u,header:g}}),f.push({id:V.id,params:{tableId:c,unitId:r.unitId}}),(0,t.sequenceExecute)(d,a).result?(i.pushUndoRedo({unitID:r.unitId,undoMutations:f,redoMutations:d}),!0):!1}},H={id:`sheet.mutation.set-sheet-table`,type:t.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}},vt={id:`sheet.command.add-table-theme`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let i=e.get(R),{unitId:a,tableId:o,themeStyle:s}=n,c=[],l=[],u=i.getTableById(a,o);if(!u)return!1;let d=u.getSubunitId();c.push({id:r.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:r.RemoveRangeThemeMutation.id,params:{unitId:a,subUnitId:d,styleName:s.getName()}});let f=e.get(t.ICommandService);return(0,t.sequenceExecute)(c,f).result?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:a,undoMutations:l,redoMutations:c}),!0):!1}},U={id:`sheet.command.delete-table`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let i=e.get(t.IUndoRedoService),a=e.get(t.ICommandService),o=e.get(R),s=e.get(t.ILogService),c=[],l=[],u=o.getTable(n.unitId,n.tableId),d=u==null?void 0:u.toJSON();if(!d)return s.error(`[TableManager]: Table not found`),!1;let f=e.get(r.SheetInterceptorService).onCommandExecute({id:U.id,params:{...n,tableName:d.name}});return c.push(...f.preRedos??[]),c.push({id:V.id,params:{...n}}),c.push(...f.redos),l.push(...f.preUndos??[]),l.push({id:B.id,params:{unitId:n.unitId,subUnitId:n.subUnitId,tableId:n.tableId,name:d.name,range:d.range,options:d.options}}),l.push(...f.undos),(0,t.sequenceExecute)(c,a).result?(i.pushUndoRedo({unitID:n.unitId,undoMutations:l,redoMutations:c}),!0):!1}},yt={id:`sheet.command.remove-table-theme`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let{unitId:i,tableId:a,themeName:o}=n,s=e.get(R),c=e.get(r.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(oe)).find(e=>e!==o);m||=p[0],d.push({id:H.id,params:{unitId:i,subUnitId:u,tableId:a,config:{theme:m}}}),d.push({id:r.RemoveRangeThemeMutation.id,params:{unitId:i,subUnitId:u,styleName:o}});let h=c.getDefaultRangeThemeStyle(o);h&&(f.push({id:r.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}}}));let g=e.get(t.ICommandService);return(0,t.sequenceExecute)(d,g).result?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:i,redoMutations:d,undoMutations:f}),!0):!1}};function bt(e,n){let r=e.trim();if(!r)return{valid:!1,reason:`empty`};let i=new Set(Array.from(n,e=>e.toLowerCase()));return(0,t.customNameCharacterCheck)(r.toLowerCase(),i)?{valid:!0}:{valid:!1,reason:`invalid`}}function W(e,i,a,o,s,c,l){var u;let d=(u=e.getTableInfo)==null?void 0:u.call(e);if(!d)return;let f=d.range.startRow+ +!!d.showHeader,p={},m;if(d.columns.forEach((e,r)=>{var i;if(l&&e.id!==l.columnId)return;let a=(i=(l==null?void 0:l.formula)??e.formula)==null?void 0:i.trim(),u=(l==null?void 0:l.formulaIsArray)??e.formulaIsArray;if(!a)return;let h=xt(a.startsWith(`=`)?a:`=${a}`,d.name),g=d.range.startColumn+r;m??=c();for(let e=o;e<=s;e++){p[e]??={};let r={f:m.moveFormulaRefOffset(h,0,e-f),si:null,ref:null,ft:u?t.FormulaType.ARRAY:null,fd:u?t.BooleanNumber.FALSE:null,v:null,p:null,t:null};u&&(r.ref=(0,n.serializeRange)({startRow:e,endRow:e,startColumn:g,endColumn:g})),p[e][g]=r}}),Object.keys(p).length)return{id:r.SetRangeValuesMutation.id,params:{unitId:i,subUnitId:a,cellValue:p}}}function xt(e,t){let n=``;for(let r=0;r<e.length;r++){let i=r,a=e[r];if(a===`"`||a===`'`){for(;++r<e.length;)if(e[r]===a){if(e[r+1]!==a)break;r++}}else if(a===`[`){let a=1;for(;++r<e.length&&a>0&&(e[r]===`'`?r++:e[r]===`[`?a++:e[r]===`]`&&a--,a!==0););if(a===0){let a=e.slice(i+1,r),o=e.slice(0,i).trimEnd().slice(-1),s=!o||/[=+\-*/^&(<>,;:{]/.test(o),c=e.slice(r+1).trimStart();if(!/^[^+\-*/^&=<>%),;}:\s]/.test(c)){let e=s?t:``,r=a.slice(1);n+=a.startsWith(`@`)?`${e}[[#This Row],${r.startsWith(`[`)?r:`[${r}]`}]`:`${e}[${a}]`;continue}}}n+=e.slice(i,r+1)}return n}let St={id:`sheet.command.set-table-config`,type:t.CommandType.COMMAND,handler:(e,i)=>{if(!i)return!1;let{unitId:a,tableId:o,name:s,updateRange:c,rowColOperation:l,theme:u,filterButtons:d}=i,f=e.get(R),p=f.getTableById(a,o);if(!p)return!1;let m=[],h=[],g={},_={};if(i.calculatedColumn){let{columnId:t,formula:o,formulaIsArray:s}=i.calculatedColumn,u=p.getColumn(t);if(!u||typeof o!=`string`||s!==void 0&&typeof s!=`boolean`||c||l)return!1;let d=p.getTableFilterRange(),f=p.getTableInfo().columns.findIndex(e=>e.id===t),v=d.startColumn+f,y={...d,startColumn:v,endColumn:v};if(!(0,r.checkRangesEditablePermission)(e,a,p.getSubunitId(),[y]))return!1;let b=o.trim();if(b===`=`)return!1;g.calculatedColumn={columnId:t,formula:u.formula,formulaIsArray:u.formulaIsArray},_.calculatedColumn={columnId:t,formula:b&&!b.startsWith(`=`)?`=${b}`:b,formulaIsArray:b?s??u.formulaIsArray:void 0};let x=W(p,a,p.getSubunitId(),d.startRow,d.endRow,()=>e.get(n.LexerTreeBuilder),_.calculatedColumn);x&&(m.push(x),h.push({id:r.SetRangeValuesMutation.id,params:(0,r.SetRangeValuesUndoMutationFactory)(e,x.params)}))}if(d){var v;if(((v=e.get(t.IPermissionService).getPermissionPoint(new r.WorkbookEditablePermission(a).id))==null?void 0:v.value)===!1)return!1;let{showAutoFilter:n,columns:i}=d;if(n!==void 0&&typeof n!=`boolean`)return!1;let o=Object.entries(i??{});if(o.some(([e,t])=>!p.getColumn(e)||typeof t!=`boolean`))return!1;g.filterButtons={...n===void 0?{}:{showAutoFilter:p.isShowAutoFilter()},columns:Object.fromEntries(o.map(([e])=>[e,p.getColumn(e).isShowFilterButton()]))},_.filterButtons={...n===void 0?{}:{showAutoFilter:n},columns:Object.fromEntries(o)}}let y=e.get(t.LocaleService),b=C(a,{univerInstanceService:e.get(t.IUniverInstanceService),tableManager:f,definedNamesService:e.get(n.IDefinedNamesService)});if(s){if(!bt(s,b).valid)return e.get(t.ILogService).warn(y.t(`sheets-table.tableNameError`)),!1;g.name=p.getDisplayName(),_.name=s}l&&(g.rowColOperation={operationType:l.operationType===`insert`?`delete`:`insert`,rowColType:l.rowColType,index:l.index,count:l.count},_.rowColOperation=l),c&&(g.updateRange={newRange:p.getRange()},_.updateRange=c),u&&(g.theme=p.getTableStyleId(),_.theme=u);let x={unitId:a,subUnitId:p.getSubunitId(),tableId:o,config:_},S={unitId:a,subUnitId:p.getSubunitId(),tableId:o,config:g},w=e.get(r.SheetInterceptorService).onCommandExecute({id:St.id,params:{...i,oldTableName:g.name}}),T=[...w.preRedos??[],{id:H.id,params:x},...m,...w.redos],ee=[...w.preUndos??[],{id:H.id,params:S},...h,...w.undos],te=e.get(t.ICommandService);return(0,t.sequenceExecute)(T,te).result?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:a,undoMutations:ee,redoMutations:T}),!0):!1}},G={id:`sheet.mutation.set-table-filter`,type:t.CommandType.MUTATION,handler:(e,t)=>{let{tableId:n,unitId:r,column:i,tableFilter:a}=t,o=e.get(R),s=o.getTable(r,n);if(o.addFilter(r,n,i,a),s){var c;let e=s.getTableFilters();t.filterOutRows?e.setFilterOutRows(t.filterOutRows):t.filterOutRows=[...e.getFilterOutRows()],t.subUnitId=s.getSubunitId(),t.tableFilteredOutRows=((c=o.toJSON(r)[t.subUnitId])==null?void 0:c.tableFilteredOutRows)??[]}return!0}},Ct={id:`sheet.command.set-table-filter`,type:t.CommandType.COMMAND,handler:(e,n)=>{var r,i;if(!n)return!1;let a=e.get(t.IUndoRedoService),o=e.get(t.ICommandService),s=e.get(R),c=n.tableId||(0,t.generateRandomId)(),l=(r=s.getTable(n.unitId,c))==null?void 0:r.getTableFilters(),u=l==null?void 0:l.getColumnFilter(n.column),d=[...(l==null?void 0:l.getFilterOutRows())??[]],f=((i=n.tableFilter)==null?void 0:i.filterType)===`record`?F(n.tableFilter):n.tableFilter,p=[],m=[];return p.push({id:G.id,params:{...n,tableId:c,tableFilter:f}}),m.push({id:G.id,params:{...n,tableId:c,tableFilter:u,filterOutRows:d}}),(0,t.sequenceExecute)(p,o).result?(a.pushUndoRedo({unitID:n.unitId,undoMutations:m,redoMutations:p}),!0):!1}},wt={id:`sheet.command.set-table-sort-state`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let r=e.get(R).getTable(n.unitId,n.tableId);if(!r)return!1;let i=r.getTableFilters().toJSON().tableSortInfo,a=e.get(t.ICommandService),o={unitId:n.unitId,subUnitId:r.getSubunitId(),tableId:n.tableId,config:{sortInfo:n.sortInfo}};return a.syncExecuteCommand(H.id,o)?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:n.unitId,undoMutations:[{id:H.id,params:{...o,config:{sortInfo:i}}}],redoMutations:[{id:H.id,params:o}]}),!0):!1}},K=class extends t.Disposable{constructor(e,t,n,r){super(),this._univerInstanceService=e,this._sheetInterceptorService=t,this._tableManager=n,this._resourceManagerService=r,D(this,`_tableRangeRTree`,new Map),this.registerTableChangeEvent(),this._initSnapshot(),this._initSheetChange(),this.registerTableHeaderInterceptor()}getContainerTableWithRange(e,n,r){let i=this._ensureTableRangeRTree(e),a=Array.from(i.bulkSearch([{unitId:e,sheetId:n,range:r}])).find(n=>{let i=this._tableManager.getTable(e,String(n));return i?t.Rectangle.contains(i.getRange(),r):!1});if(a)return this._tableManager.getTable(e,String(a))}_ensureTableRangeRTree(e){return this._tableRangeRTree.has(e)||this._tableRangeRTree.set(e,new t.RTree),this._tableRangeRTree.get(e)}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(r.INTERCEPTOR_POINT.CELL_CONTENT,{effect:t.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:[t.UniverInstanceType.UNIVER_SHEET],pluginName:ae,onLoad:(e,t)=>{this._fromJSON(e,t)},onUnLoad:e=>{this._deleteUnitId(e)}}))}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===r.RemoveSheetCommand.id){var n;let r=e.params,i=r.unitId||this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_SHEET).getUnitId(),a=r.subUnitId||((n=this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_SHEET).getActiveSheet())==null?void 0:n.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}}if(e.id===r.CopySheetCommand.id){let{unitId:n,subUnitId:r,targetSubUnitId:i}=e.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(e=>{let r=e.toJSON(),a=(0,t.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,t.Inject)(t.IUniverInstanceService)),I(1,(0,t.Inject)(r.SheetInterceptorService)),I(2,(0,t.Inject)(R)),I(3,(0,t.Inject)(t.IResourceManagerService))],K);function Tt(e,n,r,i){let a=e.get(t.ICommandService);return(0,t.sequenceExecute)(r,a).result?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:n,undoMutations:i,redoMutations:r}),!0):!1}let Et={id:`sheet.command.table-insert-row`,type:t.CommandType.COMMAND,handler:e=>{let i=e.get(t.IUniverInstanceService),a=(0,r.getSheetCommandTarget)(i);if(!a)return!1;let{worksheet:o,unitId:s,subUnitId:c}=a,l=e.get(r.SheetsSelectionsService).getCurrentSelections();if(!l.length||l.length>1)return!1;let u=l[0].range,d=e.get(K).getContainerTableWithRange(s,c,u);if(!d)return!1;let f=u.endRow-u.startRow+1,p=o.getRowCount()-1,m=o.getCellMatrix().getDataRange().endRow,h=[],g=[];if(p-m<f)h.push({id:r.InsertRowMutation.id,params:{unitId:s,subUnitId:c,range:{...u}}}),h.push({id:H.id,params:{unitId:s,subUnitId:c,tableId:d.getId(),config:{updateRange:{newRange:{...d.getRange(),endRow:d.getRange().endRow+f}}}}}),g.push({id:H.id,params:{unitId:s,subUnitId:c,tableId:d.getId(),config:{updateRange:{newRange:d.getRange()}}}}),g.push({id:r.RemoveRowMutation.id,params:{unitId:s,subUnitId:c,range:{...u}}});else{let t={...d.getRange()};h.push({id:H.id,params:{unitId:s,subUnitId:c,tableId:d.getId(),config:{updateRange:{newRange:{...t,endRow:t.endRow+f}}}}}),g.push({id:H.id,params:{unitId:s,subUnitId:c,tableId:d.getId(),config:{updateRange:{newRange:{...t}}}}});let n=(0,r.getMoveRangeCommandMutations)(e,{fromUnitId:s,fromSubUnitId:c,toSubUnitId:c,fromRange:{startRow:u.startRow,endRow:m,startColumn:t.startColumn,endColumn:t.endColumn},toRange:{startRow:u.startRow+f,endRow:m+f,startColumn:t.startColumn,endColumn:t.endColumn}},{includeSelection:!1,includeAutoHeight:!1});n&&(h.push(...n.redos),g.push(...n.undos))}let _=W(d,s,c,u.startRow,u.endRow,()=>e.get(n.LexerTreeBuilder));_&&(h.push(_),g.push({id:r.SetRangeValuesMutation.id,params:(0,r.SetRangeValuesUndoMutationFactory)(e,_.params)}));let v=e.get(t.ICommandService);return(0,t.sequenceExecute)(h,v).result?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:s,undoMutations:g,redoMutations:h}),!0):!1}},Dt={id:`sheet.command.table-insert-row-at`,type:t.CommandType.COMMAND,handler:(e,i)=>{if(!i)return!1;let{unitId:a,subUnitId:o,tableId:s,index:c,count:l=1}=i;if(l<=0)return!1;let u=e.get(t.IUniverInstanceService),d=(0,r.getSheetCommandTarget)(u,{unitId:a,subUnitId:o});if(!d)return!1;let f=e.get(R).getTableById(a,s);if(!f||f.getSubunitId()!==o)return!1;let p=f.getRange();if(c<=p.startRow||c>p.endRow+1)return!1;let m=[{id:H.id,params:{unitId:a,subUnitId:o,tableId:s,config:{updateRange:{newRange:{...p,endRow:p.endRow+l}}}}}],h=[{id:H.id,params:{unitId:a,subUnitId:o,tableId:s,config:{updateRange:{newRange:{...p}}}}}],g=d.worksheet.getCellMatrix().getDataRange().endRow,_=c<=g?(0,r.getMoveRangeCommandMutations)(e,{fromUnitId:a,fromSubUnitId:o,toSubUnitId:o,fromRange:{startRow:c,endRow:g,startColumn:p.startColumn,endColumn:p.endColumn},toRange:{startRow:c+l,endRow:g+l,startColumn:p.startColumn,endColumn:p.endColumn}},{includeSelection:!1,includeAutoHeight:!1}):null;_&&(m.push(..._.redos),h.push(..._.undos));let v=W(f,a,o,c,c+l-1,()=>e.get(n.LexerTreeBuilder));return v&&(m.push(v),h.push({id:r.SetRangeValuesMutation.id,params:(0,r.SetRangeValuesUndoMutationFactory)(e,v.params)})),Tt(e,a,m,h)}},Ot={id:`sheet.command.table-insert-col`,type:t.CommandType.COMMAND,handler:e=>{let n=e.get(t.IUniverInstanceService),i=(0,r.getSheetCommandTarget)(n);if(!i)return!1;let{worksheet:a,unitId:o,subUnitId:s}=i,c=e.get(r.SheetsSelectionsService).getCurrentSelections();if(!c.length||c.length>1)return!1;let l=c[0].range,u=e.get(K).getContainerTableWithRange(o,s,l);if(!u)return!1;let d=l.endColumn-l.startColumn+1,f=a.getColumnCount()-1,p=a.getCellMatrix().getDataRange().endColumn,m=[],h=[];if(f-p<d)m.push({id:r.InsertColMutation.id,params:{unitId:o,subUnitId:s,range:{...l}}}),m.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:u.getId(),config:{rowColOperation:{operationType:`insert`,rowColType:`column`,index:l.startColumn,count:d}}}}),h.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:u.getId(),config:{rowColOperation:{operationType:`delete`,rowColType:`column`,index:l.startColumn,count:d}}}}),h.push({id:r.RemoveColMutation.id,params:{unitId:o,subUnitId:s,range:{...l}}});else{let t=u.getRange();m.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:u.getId(),config:{rowColOperation:{operationType:`insert`,rowColType:`column`,index:l.startColumn,count:d}}}}),h.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:u.getId(),config:{rowColOperation:{operationType:`delete`,rowColType:`column`,index:l.startColumn,count:d}}}});let n=(0,r.getMoveRangeUndoRedoMutations)(e,{unitId:o,subUnitId:s,range:{startRow:t.startRow,endRow:t.endRow,startColumn:l.startColumn,endColumn:p}},{unitId:o,subUnitId:s,range:{startRow:t.startRow,endRow:t.endRow,startColumn:l.startColumn+d,endColumn:p+d}});n&&(m.push(...n.redos),h.push(...n.undos))}let g=e.get(t.ICommandService);return(0,t.sequenceExecute)(m,g).result?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:o,undoMutations:h,redoMutations:m}),!0):!1}},kt={id:`sheet.command.table-insert-column-at`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let{unitId:i,subUnitId:a,tableId:o,index:s,count:c=1}=n;if(c<=0)return!1;let l=e.get(t.IUniverInstanceService),u=(0,r.getSheetCommandTarget)(l,{unitId:i,subUnitId:a});if(!u)return!1;let d=e.get(R).getTableById(i,o);if(!d||d.getSubunitId()!==a)return!1;let f=d.getRange();if(s<f.startColumn||s>f.endColumn+1)return!1;let p=[{id:H.id,params:{unitId:i,subUnitId:a,tableId:o,config:{rowColOperation:{operationType:`insert`,rowColType:`column`,index:s,count:c}}}}],m=[{id:H.id,params:{unitId:i,subUnitId:a,tableId:o,config:{rowColOperation:{operationType:`delete`,rowColType:`column`,index:s,count:c}}}}],h=u.worksheet.getCellMatrix().getDataRange().endColumn;if(s<=h){let t=(0,r.getMoveRangeUndoRedoMutations)(e,{unitId:i,subUnitId:a,range:{startRow:f.startRow,endRow:f.endRow,startColumn:s,endColumn:h}},{unitId:i,subUnitId:a,range:{startRow:f.startRow,endRow:f.endRow,startColumn:s+c,endColumn:h+c}});t&&(p.push(...t.redos),m.push(...t.undos))}return Tt(e,i,p,m)}},At={id:`sheet.command.table-remove-column-at`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let{unitId:i,subUnitId:a,tableId:o,index:s,count:c=1}=n;if(c<=0)return!1;let l=e.get(t.IUniverInstanceService),u=(0,r.getSheetCommandTarget)(l,{unitId:i,subUnitId:a});if(!u)return!1;let d=e.get(R).getTableById(i,o);if(!d||d.getSubunitId()!==a)return!1;let f=d.getRange();if(s<f.startColumn||s+c-1>f.endColumn||c>=f.endColumn-f.startColumn+1)return!1;let p=d.getTableInfo(),m=[],h=s-f.startColumn;for(let e=0;e<c;e++){let t=p.columns[h+e];t&&m.push(t)}let g=e.get(r.SheetInterceptorService).onCommandExecute({id:At.id,params:{...n,tableName:p.name,removedColumnNames:m.map(e=>e.displayName)}}),_=[...g.preRedos??[],{id:H.id,params:{unitId:i,subUnitId:a,tableId:o,config:{rowColOperation:{operationType:`delete`,rowColType:`column`,index:s,count:c}}}},...g.redos],v=[...g.preUndos??[],{id:H.id,params:{unitId:i,subUnitId:a,tableId:o,config:{rowColOperation:{operationType:`insert`,rowColType:`column`,index:s,count:c,columnsJson:m}}}},...g.undos],y=u.worksheet.getCellMatrix().getDataRange().endColumn;if(s+c<=y){let t=(0,r.getMoveRangeUndoRedoMutations)(e,{unitId:i,subUnitId:a,range:{startRow:f.startRow,endRow:f.endRow,startColumn:s+c,endColumn:y}},{unitId:i,subUnitId:a,range:{startRow:f.startRow,endRow:f.endRow,startColumn:s,endColumn:y-c}});t&&(_.push(...t.redos),v.push(...t.undos))}return Tt(e,i,_,v)}},jt={id:`sheet.command.table-remove-row`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let i=e.get(t.IUniverInstanceService),a=(0,r.getSheetCommandTarget)(i,n);if(!a)return!1;let{unitId:o,subUnitId:s}=a,c=e.get(r.SheetsSelectionsService).getCurrentSelections();if(!c.length||c.length>1)return!1;let l=c[0].range,u=e.get(K).getContainerTableWithRange(o,s,l);if(!u)return!1;let d=l.endRow-l.startRow+1,f=[],p=[],m=u.getRange();f.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:u.getId(),config:{updateRange:{newRange:{...m,endRow:m.endRow-d}}}}}),p.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:u.getId(),config:{updateRange:{newRange:{...m}}}}});let h=a.worksheet.getCellMatrix().getDataRange().endRow,g=(0,r.getMoveRangeUndoRedoMutations)(e,{unitId:o,subUnitId:s,range:{startRow:l.endRow+1,endRow:h,startColumn:m.startColumn,endColumn:m.endColumn}},{unitId:o,subUnitId:s,range:{startRow:l.startRow,endRow:h-d,startColumn:m.startColumn,endColumn:m.endColumn}});g&&(f.push(...g.redos),p.push(...g.undos));let _=e.get(t.ICommandService);return(0,t.sequenceExecute)(f,_).result?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:o,undoMutations:p,redoMutations:f}),!0):!1}},q={id:`sheet.command.table-remove-col`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let i=e.get(t.IUniverInstanceService),a=(0,r.getSheetCommandTarget)(i,n);if(!a)return!1;let{workbook:o,unitId:s,subUnitId:c}=a;e.get(R);let l=e.get(r.SheetsSelectionsService).getCurrentSelections();if(!l.length||l.length>1)return!1;let u=l[0].range,d=e.get(K).getContainerTableWithRange(s,c,u);if(!d)return!1;let f=u.endColumn-u.startColumn+1,p=[],m=[],h=d.getRange();p.push({id:H.id,params:{unitId:s,subUnitId:c,tableId:d.getId(),config:{rowColOperation:{operationType:`delete`,rowColType:`column`,index:u.startColumn,count:f}}}});let g=d.getTableInfo(),_=[],v=u.startColumn-h.startColumn;for(let e=0;e<f;e++){let t=g.columns[v+e];t&&_.push(t)}let y=e.get(r.SheetInterceptorService).onCommandExecute({id:q.id,params:{...n,tableName:g.name,removedColumnNames:_.map(e=>e.displayName)}});p.unshift(...y.preRedos??[]),p.push(...y.redos),m.unshift(...y.preUndos??[]),m.push({id:H.id,params:{unitId:s,subUnitId:c,tableId:d.getId(),config:{rowColOperation:{operationType:`insert`,rowColType:`column`,index:u.startColumn,count:f,columnsJson:_}}}}),m.push(...y.undos);let b=a.worksheet.getCellMatrix().getDataRange().endColumn,x=(0,r.getMoveRangeUndoRedoMutations)(e,{unitId:s,subUnitId:c,range:{startRow:h.startRow,endRow:h.endRow,startColumn:u.endColumn+1,endColumn:b}},{unitId:s,subUnitId:c,range:{startRow:h.startRow,endRow:h.endRow,startColumn:u.startColumn,endColumn:b-f}});x&&(p.push(...x.redos),m.push(...x.undos));let S=e.get(t.ICommandService);return(0,t.sequenceExecute)(p,S).result?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:s,undoMutations:m,redoMutations:p}),!0):!1}},J=class extends t.Disposable{constructor(e,t,n,r){super(),this._tableManager=e,this._sheetRangeThemeService=t,this._sheetRangeThemeModel=n,this._configService=r,D(this,`_defaultThemeIndex`,0),D(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(ne)}_initDefaultTableTheme(){for(let e=0;e<this._allThemes.length;e++){let{name:t,style:n}=this._allThemes[e],i=new r.RangeThemeStyle(t,n);this._sheetRangeThemeModel.registerDefaultRangeTheme(i)}}dispose(){super.dispose(),this._allThemes=[],this._defaultThemeIndex=0}};J=L([I(0,(0,t.Inject)(R)),I(1,(0,t.Inject)(r.SheetRangeThemeService)),I(2,(0,t.Inject)(r.SheetRangeThemeModel)),I(3,t.IConfigService)],J);var Mt=`@univerjs/sheets-table`,Nt=`1.0.1`;let Y=class extends t.Disposable{constructor(e,t,n){super(),this._tableManager=e,this._commandService=t,this._activeDirtyManagerService=n,this._initRangeListener(),this._initFilterDirtyRange()}_initFilterDirtyRange(){this._activeDirtyManagerService.register(G.id,{commandId:G.id,getDirtyData:e=>{let t=e.params,n=this._tableManager.getTableById(t.unitId,t.tableId);if(!n)return{};let{subUnitId:r,range:i}=n.getTableInfo();return{dirtyRanges:[{unitId:t.unitId,sheetId:r,range:i}],clearDependencyTreeCache:{[t.unitId]:{[r]:`1`}}}}}),this.disposeWithMe((0,t.toDisposable)(()=>{this._activeDirtyManagerService.remove(G.id)}))}_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:t,subUnitId:r,tableName:i,range:a}=e;this._commandService.executeCommand(n.RemoveSuperTableMutation.id,{unitId:t,tableName:i,reference:{sheetId:r,range:a}},{onlyLocal:!0})})),this.disposeWithMe(this._tableManager.tableNameChanged$.subscribe(e=>{let{tableId:t,unitId:r,oldTableName:i}=e;this._commandService.executeCommand(n.RemoveSuperTableMutation.id,{unitId:r,tableName:i},{onlyLocal:!0});let a=this._tableManager.getTableById(r,t);a&&this._updateSuperTable(r,a,i)}))}_updateSuperTable(e,t,r){let i=t.getTableInfo(),a=i.name,o=i.columns,s=new Map;o.forEach((e,t)=>{s.set(e.displayName,t)}),this._commandService.executeCommand(n.SetSuperTableMutation.id,{unitId:e,tableName:a,oldTableName:r,reference:{range:i.range,sheetId:i.subUnitId,titleMap:s}},{onlyLocal:!0})}};Y=L([I(0,(0,t.Inject)(R)),I(1,t.ICommandService),I(2,n.IActiveDirtyManagerService)],Y);let X=class extends t.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,k,n),this._exclusiveRangeService.addExclusiveRange(r,i,k,[{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,k,[{range:{...i},groupId:t}])})),this.disposeWithMe(this._tableManager.tableDelete$.subscribe(e=>{let{tableId:t,unitId:n,subUnitId:r}=e;this._exclusiveRangeService.clearExclusiveRangesByGroupId(n,r,k,t)}))}};X=L([I(0,(0,t.Inject)(R)),I(1,(0,t.Inject)(r.IExclusiveRangeService))],X);let Z=class extends t.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({priority:-1,getMutations(t){let n={redos:[],undos:[]},{id:i,params:a}=t;switch(i){case r.InsertRowCommand.id:return e._generateTableMutationWithInsertRow(a);case r.InsertColCommand.id:return e._generateTableMutationWithInsertCol(a);case r.RemoveRowCommand.id:return e._generateTableMutationWithRemoveRow(a);case r.RemoveColCommand.id:return e._generateTableMutationWithRemoveCol(a)}return n}})}_generateTableMutationWithInsertRow(e){let t=[],i=[],a=(0,r.getSheetCommandTarget)(this._univerInstanceService,e);if(!a)return{undos:t,redos:i};let{unitId:o,subUnitId:s}=a,c=this._tableManager.getTablesBySubunitId(o,s);if(!c.length)return{undos:t,redos:i};let{range:l}=e;return c.forEach(e=>{let r=e.getRange();if(l.startRow>r.startRow&&l.startRow<=r.endRow){let a=l.endRow-l.startRow+1;i.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:e.getId(),config:{updateRange:{newRange:{...r,endRow:r.endRow+a}}}}});let c=W(e,o,s,l.startRow,l.endRow,()=>this._injector.get(n.LexerTreeBuilder));c&&i.push(c),t.push({id:H.id,params:{unitId:o,subUnitId:s,tableId:e.getId(),config:{updateRange:{newRange:{...r}}}}})}}),{undos:t,redos:i}}_generateTableMutationWithInsertCol(e){let t=[],n=[],i=(0,r.getSheetCommandTarget)(this._univerInstanceService,e);if(!i)return{undos:t,redos:n};let{unitId:a,subUnitId:o}=i,s=this._tableManager.getTablesBySubunitId(a,o);if(!s.length)return{undos:t,redos:n};let{range:c}=e;return s.forEach(e=>{let r=e.getRange();if(c.startColumn>r.startColumn&&c.startColumn<=r.endColumn){let r=c.endColumn-c.startColumn+1;n.push({id:H.id,params:{unitId:a,subUnitId:o,tableId:e.getId(),config:{rowColOperation:{operationType:`insert`,rowColType:`column`,index:c.startColumn,count:r}}}}),t.push({id:H.id,params:{unitId:a,subUnitId:o,tableId:e.getId(),config:{rowColOperation:{operationType:`delete`,rowColType:`column`,index:c.startColumn,count:r}}}})}}),{undos:t,redos:n}}_generateTableMutationWithRemoveRow(e){let n=[],i=[],a=[],o=[],s=(0,r.getSheetCommandTarget)(this._univerInstanceService);if(!s)return{undos:n,redos:i,preRedos:a,preUndos:o};let{unitId:c,subUnitId:l}=s,u=this._tableManager.getTablesBySubunitId(c,l);if(!u.length)return{undos:n,redos:i,preRedos:a,preUndos:o};let{range:d}=e,f=d.endRow-d.startRow+1;return u.forEach(e=>{let r=e.getRange();if(t.Rectangle.intersects(r,d)){if(d.startRow<=r.startRow&&d.endRow>=r.startRow){a.push({id:V.id,params:{unitId:c,subUnitId:l,tableId:e.getId()}});let t=e.toJSON();n.push({id:B.id,params:{unitId:c,subUnitId:l,tableId:t.id,name:t.name,range:t.range,options:t.options}})}else d.startRow>r.startRow&&d.startRow<=r.endRow?(i.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:e.getId(),config:{updateRange:{newRange:{...r,endRow:r.endRow-f}}}}}),n.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:e.getId(),config:{updateRange:{newRange:{...r}}}}})):d.startRow<r.endRow&&d.endRow>=r.endRow&&(i.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:e.getId(),config:{updateRange:{newRange:{...r,endRow:d.startRow-1}}}}}),n.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:e.getId(),config:{updateRange:{newRange:{...r}}}}}))}}),{undos:n,redos:i,preRedos:a,preUndos:o}}_generateTableMutationWithRemoveCol(e){let n=[],i=[],a=[],o=[],s=(0,r.getSheetCommandTarget)(this._univerInstanceService);if(!s)return{undos:n,redos:i,preRedos:a,preUndos:o};let{unitId:c,subUnitId:l}=s,u=this._tableManager.getTablesBySubunitId(c,l);if(!u.length)return{undos:n,redos:i,preRedos:a,preUndos:o};let{range:d}=e,f=d.endColumn-d.startColumn+1;return u.forEach(e=>{let r=e.getRange();if(t.Rectangle.intersects(r,d)){if(d.startColumn<=r.startColumn&&d.endColumn>=r.endColumn){let t=e.getTableInfo(),r=this._sheetInterceptorService.onCommandExecute({id:`sheet.command.delete-table`,params:{unitId:c,subUnitId:l,tableId:e.getId(),tableName:t.name}});a.push(...r.preRedos??[],...r.redos),a.push({id:V.id,params:{unitId:c,subUnitId:l,tableId:e.getId()}});let s=e.toJSON(),{startRow:u,startColumn:d,endColumn:f}=s.range,m=this._univerInstanceService.getUnit(c),h=m==null?void 0:m.getSheetBySheetId(l);if(!h)return{undos:n,redos:i,preRedos:a,preUndos:o};let g=[];for(let e=d;e<=f;e++)g.push(_(h==null?void 0:h.getCell(u,e))||p(e-d+1,this._localeService.t(`sheets-table.columnPrefix`)));n.push({id:B.id,params:{unitId:c,subUnitId:l,tableId:s.id,name:s.name,header:g,range:s.range,options:s.options}}),n.push(...r.preUndos??[],...r.undos)}else if(d.startColumn<=r.startColumn&&d.endColumn>=r.startColumn){let t=e.toJSON(),a=d.endColumn-r.startColumn+1;i.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:e.getId(),config:{rowColOperation:{operationType:`delete`,rowColType:`column`,index:r.startColumn,count:a}}}});let s=[];for(let t=0;t<a;t++){let n=e.getTableColumnByIndex(t);n&&s.push(n.toJSON())}o.push(this._getDeleteTableMutation(c,l,e.getId())),n.push(this._getAddTableMutation(c,l,t)),this._appendTableColumnFormulaMutations(i,n,{unitId:c,subUnitId:l,tableId:e.getId(),tableName:e.getTableInfo().name,range:d,columns:s})}else if(d.startColumn>r.startColumn&&d.endColumn>r.endColumn){let t=e.toJSON(),a=r.endColumn-d.startColumn+1;i.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:e.getId(),config:{rowColOperation:{operationType:`delete`,rowColType:`column`,index:d.startColumn,count:a}}}});let s=[],u=d.startColumn-r.startColumn;for(let t=0;t<a;t++){let n=e.getTableColumnByIndex(t+u);n&&s.push(n.toJSON())}o.push(this._getDeleteTableMutation(c,l,e.getId())),n.push(this._getAddTableMutation(c,l,t)),this._appendTableColumnFormulaMutations(i,n,{unitId:c,subUnitId:l,tableId:e.getId(),tableName:e.getTableInfo().name,range:d,columns:s})}else if(d.startColumn>r.startColumn&&d.endColumn<=r.endColumn){let t=e.toJSON();i.push({id:H.id,params:{unitId:c,subUnitId:l,tableId:e.getId(),config:{rowColOperation:{operationType:`delete`,rowColType:`column`,index:d.startColumn,count:f}}}});let a=[],s=d.startColumn-r.startColumn;for(let t=0;t<f;t++){let n=e.getTableColumnByIndex(t+s);n&&a.push(n.toJSON())}o.push(this._getDeleteTableMutation(c,l,e.getId())),n.push(this._getAddTableMutation(c,l,t)),this._appendTableColumnFormulaMutations(i,n,{unitId:c,subUnitId:l,tableId:e.getId(),tableName:e.getTableInfo().name,range:d,columns:a})}}}),{undos:n,redos:i,preRedos:a,preUndos:o}}_getDeleteTableMutation(e,t,n){return{id:V.id,params:{unitId:e,subUnitId:t,tableId:n}}}_getAddTableMutation(e,t,n){let r=n.columns.map(e=>e.displayName);return{id:B.id,params:{unitId:e,subUnitId:t,tableId:n.id,name:n.name,header:r,range:n.range,options:{...n.options,columns:n.columns,filters:n.filters.tableColumnFilterList}}}}_appendTableColumnFormulaMutations(e,t,n){let r=n.columns.map(e=>e.displayName);if(!r.length)return;let i=this._sheetInterceptorService.onCommandExecute({id:`sheet.command.table-remove-col`,params:{unitId:n.unitId,subUnitId:n.subUnitId,tableId:n.tableId,tableName:n.tableName,range:n.range,removedColumnNames:r}});e.splice(Math.max(e.length-1,0),0,...i.preRedos??[],...i.redos),t.push(...i.preUndos??[],...i.undos)}_initCommandListener(){this._commandService.onCommandExecuted(e=>{if(e.id===r.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===r.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===r.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===r.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}})})}})}};Z=L([I(0,(0,t.Inject)(t.ICommandService)),I(1,(0,t.Inject)(r.RefRangeService)),I(2,(0,t.Inject)(t.IUniverInstanceService)),I(3,(0,t.Inject)(t.Injector)),I(4,(0,t.Inject)(r.SheetInterceptorService)),I(5,(0,t.Inject)(R)),I(6,(0,t.Inject)(t.LocaleService))],Z);let Q=class extends t.Disposable{constructor(e,t,n,r,i){super(),this._tableManager=e,this._sheetInterceptorService=t,this._univerInstanceService=n,this._sheetRowFilteredService=r,this._zebraCrossingCacheController=i,D(this,`_tableFilteredOutRows`,new Map),D(this,`_subscription`,null),this.registerFilterChangeEvent(),this.initTableHiddenRowIntercept(),this._registerFormulaRowFiltered(),this._initFilteredOutRows()}_registerFormulaRowFiltered(){this.disposeWithMe(this._sheetRowFilteredService.register((e,t,n)=>this._getTableFilteredOutRows(e,t).has(n)))}initTableHiddenRowIntercept(){this.disposeWithMe(this._sheetInterceptorService.intercept(r.INTERCEPTOR_POINT.ROW_FILTERED,{priority:100,handler:(e,t,n)=>{if(e)return!0;let r=this._getTableFilteredOutRows(t.unitId,t.subUnitId).has(t.row);return r?!0:n(r)}}))}_initFilteredOutRows(){this._tableManager.tableInitStatus$.pipe((0,i.filter)(e=>e),(0,i.switchMap)(()=>this._univerInstanceService.getCurrentTypeOfUnit$(t.UniverInstanceType.UNIVER_SHEET)),(0,i.filter)(e=>e!=null),(0,i.switchMap)(e=>e.activeSheet$),(0,i.filter)(e=>e!=null)).subscribe(()=>{let e=(0,r.getSheetCommandTarget)(this._univerInstanceService);if(!e)return;let{unitId:t,subUnitId:n}=e;this._refreshTableFilteredOutRows(t,n)})}registerFilterChangeEvent(){this.disposeWithMe(this._tableManager.tableFilterChanged$.subscribe(e=>{let{unitId:t,subUnitId:n,tableId:r}=e,i=this._univerInstanceService.getUnit(t),a=i==null?void 0:i.getSheetBySheetId(n),o=this._tableManager.getTable(t,r);a&&o&&(o.getTableFilters().doFilter(a,o.getTableFilterRange(),i==null?void 0:i.getDateSystem()),this._refreshTableFilteredOutRows(t,n),this._zebraCrossingCacheController.updateZebraCrossingCache(t,n))}))}_refreshTableFilteredOutRows(e,t){let n=new Set;this._tableManager.getTablesBySubunitId(e,t).forEach(e=>{let t=e.getTableFilters().getFilterOutRows();if(t)for(let e of t)n.add(e)}),this._tableFilteredOutRows.set(this._getSheetKey(e,t),n)}_getTableFilteredOutRows(e,t){let n=this._getSheetKey(e,t);return this._tableFilteredOutRows.has(n)||this._refreshTableFilteredOutRows(e,t),this._tableFilteredOutRows.get(n)??new Set}_getSheetKey(e,t){return`${e}|${t}`}dispose(){var e;super.dispose(),(e=this._subscription)==null||e.unsubscribe()}};Q=L([I(0,(0,t.Inject)(R)),I(1,(0,t.Inject)(r.SheetInterceptorService)),I(2,(0,t.Inject)(t.IUniverInstanceService)),I(3,(0,t.Inject)(n.ISheetRowFilteredService)),I(4,(0,t.Inject)(r.ZebraCrossingCacheController))],Q);let $=class extends t.Plugin{constructor(e=T,n,r,i){super(),this._config=e,this._injector=n,this._configService=r,this._commandService=i;let{...a}=(0,t.merge)({},T,this._config);this._configService.setConfig(`sheets-table.config`,a),this._initRegisterCommand()}onStarting(){(0,t.registerDependencies)(this._injector,[[R],[J],[K],[z],[Q],[X],[Z],[Y]])}onReady(){(0,t.touchDependencies)(this._injector,[[Y],[X],[Z],[J],[K],[z],[Q]]),(0,t.touchDependencies)(this._injector,[[R]])}_initRegisterCommand(){[_t,B,U,V,G,Ct,wt,St,H,vt,yt,Et,Ot,Dt,kt,jt,q,At].forEach(e=>this._commandService.registerCommand(e))}};D($,`pluginName`,ae),D($,`packageName`,Mt),D($,`version`,Nt),D($,`type`,t.UniverInstanceType.UNIVER_SHEET),$=L([(0,t.DependentOn)(r.UniverSheetsPlugin),I(1,(0,t.Inject)(t.Injector)),I(2,t.IConfigService),I(3,(0,t.Inject)(t.ICommandService))],$),e.AddSheetTableCommand=_t,e.AddSheetTableMutation=B,e.AddTableThemeCommand=vt,e.DeleteSheetTableCommand=U,e.DeleteSheetTableMutation=V,e.RemoveTableThemeCommand=yt,e.SHEET_TABLE_CUSTOM_THEME_PREFIX=oe,e.SetSheetTableCommand=St,e.SetSheetTableFilterCommand=Ct,e.SetSheetTableFilterMutation=G,e.SetSheetTableMutation=H,e.SetSheetTableSortStateCommand=wt,e.SheetTableInsertColCommand=Ot,e.SheetTableInsertColumnAtCommand=kt,e.SheetTableInsertRowAtCommand=Dt,e.SheetTableInsertRowCommand=Et,e.SheetTableRemoveColCommand=q,e.SheetTableRemoveColumnAtCommand=At,e.SheetTableRemoveRowCommand=jt,Object.defineProperty(e,"SheetTableService",{enumerable:!0,get:function(){return z}}),e.SheetsTableButtonStateEnum=d,Object.defineProperty(e,"SheetsTableController",{enumerable:!0,get:function(){return K}}),e.SheetsTableSortStateEnum=f,Object.defineProperty(e,"SheetsTableThemeController",{enumerable:!0,get:function(){return J}}),e.TABLE_FILTER_EMPTY_VALUE=se,e.TableColumnDataTypeEnum=a,e.TableColumnFilterTypeEnum=o,e.TableConditionTypeEnum=s,e.TableDateCompareTypeEnum=u,Object.defineProperty(e,"TableManager",{enumerable:!0,get:function(){return R}}),e.TableNumberCompareTypeEnum=c,e.TableStringCompareTypeEnum=l,Object.defineProperty(e,"UniverSheetsTablePlugin",{enumerable:!0,get:function(){return $}}),e.compileTableRecordFilter=P,e.customEmptyThemeWithBorderStyle=ee,e.getExistingNamesSet=C,e.getTableRecordValue=ut,e.getTableRecordValueKey=N,e.isColorTableFilter=x,e.isConditionFilter=y,e.isManualTableFilter=b,e.isRecordTableFilter=S,e.processStyleWithBorderStyle=te,e.validateSheetTableName=bt});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/sheets-table",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "private": false,
5
5
  "description": "Structured table model and commands for Univer Sheets.",
6
6
  "author": "DreamNum Co., Ltd. <developer@univer.ai>",
@@ -67,14 +67,14 @@
67
67
  "rxjs": ">=7.0.0"
68
68
  },
69
69
  "dependencies": {
70
- "@univerjs/core": "1.0.0",
71
- "@univerjs/engine-formula": "1.0.0",
72
- "@univerjs/sheets": "1.0.0"
70
+ "@univerjs/core": "1.0.1",
71
+ "@univerjs/engine-formula": "1.0.1",
72
+ "@univerjs/sheets": "1.0.1"
73
73
  },
74
74
  "devDependencies": {
75
- "@univerjs-infra/shared": "1.0.0",
76
- "@univerjs/engine-render": "1.0.0",
77
- "@univerjs/sheets-formula": "1.0.0",
75
+ "@univerjs-infra/shared": "1.0.1",
76
+ "@univerjs/engine-render": "1.0.1",
77
+ "@univerjs/sheets-formula": "1.0.1",
78
78
  "rxjs": "^7.8.2",
79
79
  "typescript": "^6.0.3",
80
80
  "vitest": "^5.0.0"
@@ -1,27 +0,0 @@
1
- /**
2
- * Copyright 2023-present DreamNum Co., Ltd.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import type { IDocumentData, Worksheet } from '@univerjs/core';
17
- import type { TableStringCompareTypeEnum } from '../../types/enum';
18
- import type { ICalculatedOptions, ITableConditionFilterItem } from '../../types/type';
19
- import { TableConditionTypeEnum, TableDateCompareTypeEnum, TableNumberCompareTypeEnum } from '../../types/enum';
20
- type TableConditionCompareType = TableNumberCompareTypeEnum | TableDateCompareTypeEnum | TableStringCompareTypeEnum;
21
- export declare function isNumberDynamicFilter(compareType: TableConditionCompareType): compareType is TableNumberCompareTypeEnum;
22
- export declare function isDateDynamicFilter(compareType: TableConditionCompareType): compareType is TableDateCompareTypeEnum;
23
- export declare function getConditionExecuteFunc(filter: ITableConditionFilterItem, calculatedOptions: ICalculatedOptions | undefined): ((date: Date) => boolean) | ((value: number) => boolean) | ((value: string) => boolean);
24
- export declare function getCellValueWithConditionType(sheet: Worksheet, row: number, col: number, conditionType: TableConditionTypeEnum): string | number | Date | null | undefined;
25
- export declare const getStringFromDataStream: (data: IDocumentData) => string;
26
- export declare function excelSerialToDateTime(serial: number): Date;
27
- export {};
@@ -1,225 +0,0 @@
1
- /**
2
- * Copyright 2023-present DreamNum Co., Ltd.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import type { ITableDateFilterInfo } from '../../types/type';
17
- /**
18
- * The provided date is a date in Q1 of the year.
19
- * @param {Date} date - The date to compare.
20
- * @returns {boolean} return the date is match
21
- */
22
- export declare const dateQ1: (date: Date) => boolean;
23
- /**
24
- * The provided date is a date in Q2 of the year.
25
- * @param {Date} date - The date to compare.
26
- * @returns {boolean} return the date is match
27
- */
28
- export declare const dateQ2: (date: Date) => boolean;
29
- /**
30
- * The provided date is a date in Q3 of the year.
31
- * @param {Date} date - The date to compare.
32
- * @returns {boolean} return the date is match
33
- */
34
- export declare const dateQ3: (date: Date) => boolean;
35
- /**
36
- * The provided date is a date in Q4 of the year.
37
- * @param {Date} date - The date to compare.
38
- * @returns {boolean} return the date is match
39
- */
40
- export declare const dateQ4: (date: Date) => boolean;
41
- /**
42
- * The provided date is a date in January.
43
- * @param {Date} date - The date to compare.
44
- * @returns {boolean} return the date is match
45
- */
46
- export declare const dateM1: (date: Date) => boolean;
47
- /**
48
- * The provided date is a date in February.
49
- * @param {Date} date - The date to compare.
50
- * @returns {boolean} return the date is match
51
- */
52
- export declare const dateM2: (date: Date) => boolean;
53
- /**
54
- * The provided date is a date in March.
55
- * @param {Date} date - The date to compare.
56
- * @returns {boolean} return the date is match
57
- */
58
- export declare const dateM3: (date: Date) => boolean;
59
- /**
60
- * The provided date is a date in April.
61
- * @param {Date} date - The date to compare.
62
- * @returns {boolean} return the date is match
63
- */
64
- export declare const dateM4: (date: Date) => boolean;
65
- /**
66
- * The provided date is a date in May.
67
- * @param {Date} date - The date to compare.
68
- * @returns {boolean} return the date is match
69
- */
70
- export declare const dateM5: (date: Date) => boolean;
71
- /**
72
- * The provided date is a date in June.
73
- * @param {Date} date - The date to compare.
74
- * @returns {boolean} return the date is match
75
- */
76
- export declare const dateM6: (date: Date) => boolean;
77
- /**
78
- * The provided date is a date in July.
79
- * @param {Date} date - The date to compare.
80
- * @returns {boolean} return the date is match
81
- */
82
- export declare const dateM7: (date: Date) => boolean;
83
- /**
84
- * The provided date is a date in August.
85
- * @param {Date} date - The date to compare.
86
- * @returns {boolean} return the date is match
87
- */
88
- export declare const dateM8: (date: Date) => boolean;
89
- /**
90
- * The provided date is a date in September.
91
- * @param {Date} date - The date to compare.
92
- * @returns {boolean} return the date is match
93
- */
94
- export declare const dateM9: (date: Date) => boolean;
95
- /**
96
- * The provided date is a date in October.
97
- * @param {Date} date - The date to compare.
98
- * @returns {boolean} return the date is match
99
- */
100
- export declare const dateM10: (date: Date) => boolean;
101
- /**
102
- * The provided date is a date in November.
103
- * @param {Date} date - The date to compare.
104
- * @returns {boolean} return the date is match
105
- */
106
- export declare const dateM11: (date: Date) => boolean;
107
- /**
108
- * The provided date is a date in December.
109
- * @param {Date} date - The date to compare.
110
- * @returns {boolean} return the date is match
111
- */
112
- export declare const dateM12: (date: Date) => boolean;
113
- /**
114
- * The provided date is today.
115
- * @param {Date} expectedDate - The date to compare.
116
- * @param {Date} [anchorTime] - The reference date.
117
- * @returns {boolean} return the date is match
118
- */
119
- export declare const today: (expectedDate: Date, anchorTime?: Date) => boolean;
120
- /**
121
- * The provided date is tomorrow.
122
- * @param {Date} date - The date to compare.
123
- * @param {Date} [anchorTime] - The reference date.
124
- * @returns {boolean} return the date is match
125
- */
126
- export declare const tomorrow: (date: Date, anchorTime?: Date) => boolean;
127
- /**
128
- * The provided date is yesterday.
129
- * @param {Date} date - The date to compare.
130
- * @param {Date} [anchorTime] - The reference date.
131
- * @returns {boolean} return the date is match
132
- */
133
- export declare const yesterday: (date: Date, anchorTime?: Date) => boolean;
134
- /**
135
- * The provided date is in the current week.
136
- * @param {Date} date - The date to compare.
137
- * @param {Date} [anchorTime] - The reference date.
138
- * @returns {boolean} return the date is match
139
- */
140
- export declare const thisWeek: (date: Date, anchorTime?: Date) => boolean;
141
- /**
142
- * The provided date is in the next week.
143
- * @param {Date} date - The date to compare.
144
- * @param {Date} [anchorTime] - The reference date.
145
- * @returns {boolean} return the date is match
146
- */
147
- export declare const nextWeek: (date: Date, anchorTime?: Date) => boolean;
148
- /**
149
- * The provided date is in the last week.
150
- * @param {Date} date - The date to compare.
151
- * @param {Date} [anchorTime] - The reference date.
152
- * @returns {boolean} return the date is match
153
- */
154
- export declare const lastWeek: (date: Date, anchorTime?: Date) => boolean;
155
- /**
156
- * The provided date is in the current month.
157
- * @param {Date} date - The date to compare.
158
- * @param {Date} [anchorTime] - The reference date.
159
- * @returns {boolean} return the date is match
160
- */
161
- export declare const thisMonth: (date: Date, anchorTime?: Date) => boolean;
162
- /**
163
- * The provided date is in the next month.
164
- * @param {Date} date - The date to compare.
165
- * @param {Date} [anchorTime] - The reference date.
166
- * @returns {boolean} return the date is match
167
- */
168
- export declare const nextMonth: (date: Date, anchorTime?: Date) => boolean;
169
- /**
170
- * The provided date is in the last month.
171
- * @param {Date} date - The date to compare.
172
- * @param {Date} [anchorTime] - The reference date.
173
- * @returns {boolean} return the date is match
174
- */
175
- export declare const lastMonth: (date: Date, anchorTime?: Date) => boolean;
176
- /**
177
- * The provided date is in the current quarter.
178
- * @param {Date} date - The date to compare.
179
- * @param {Date} [anchorTime] - The reference date.
180
- * @returns {boolean} return the date is match
181
- */
182
- export declare const thisQuarter: (date: Date, anchorTime?: Date) => boolean;
183
- /**
184
- * The provided date is in the next quarter.
185
- * @param {Date} date - The date to compare.
186
- * @param {Date} [anchorTime] - The reference date.
187
- * @returns {boolean} return the date is match
188
- */
189
- export declare const nextQuarter: (date: Date, anchorTime?: Date) => boolean;
190
- /**
191
- * The provided date is in the last quarter.
192
- * @param {Date} date - The date to compare.
193
- * @param {Date} [anchorTime] - The reference date.
194
- * @returns {boolean} return the date is match
195
- */
196
- export declare const lastQuarter: (date: Date, anchorTime?: Date) => boolean;
197
- /**
198
- * The provided date is in the current year.
199
- * @param {Date} date - The date to compare.
200
- * @param {Date} [anchorTime] - The reference date.
201
- * @returns {boolean} return the date is match
202
- */
203
- export declare const thisYear: (date: Date, anchorTime?: Date) => boolean;
204
- /**
205
- * The provided date is in the next year.
206
- * @param {Date} date - The date to compare.
207
- * @param {Date} [anchorTime] - The reference date.
208
- * @returns {boolean} return the date is match
209
- */
210
- export declare const nextYear: (date: Date, anchorTime?: Date) => boolean;
211
- /**
212
- * The provided date is in the last year.
213
- * @param {Date} date - The date to compare.
214
- * @param {Date} [anchorTime] - The reference date.
215
- * @returns {boolean} return the date is match
216
- */
217
- export declare const lastYear: (date: Date, anchorTime?: Date) => boolean;
218
- /**
219
- * The provided date is in the year to date.
220
- * @param {Date} date - The date to compare.
221
- * @param {Date} [anchorTime] - The reference date.
222
- * @returns {boolean} return the date is match
223
- */
224
- export declare const yearToDate: (date: Date, anchorTime?: Date) => boolean;
225
- export declare function getDateFilterExecuteFunc(filterInfo: ITableDateFilterInfo): (date: Date) => boolean;
@@ -1,47 +0,0 @@
1
- /**
2
- * Copyright 2023-present DreamNum Co., Ltd.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import type { ICalculatedOptions, ITableNumberFilterInfo } from '../../types/type';
17
- /**
18
- * @description Checks if a value is above the average.
19
- * @param {number} value - The value to check.
20
- * @param {number} average - The average value.
21
- * @returns {boolean} A boolean value indicating whether the value is above the average.
22
- */
23
- export declare const above: (value: number, average: number) => boolean;
24
- /**
25
- * @description Checks if a value is below the average.
26
- * @param {number} value - The value to check.
27
- * @param {number} average - The average value.
28
- * @returns {boolean} A boolean value indicating whether the value is below the average.
29
- */
30
- export declare const below: (value: number, average: number) => boolean;
31
- /**
32
- * @description Gets the largest N values from a list and checks if the expected value is included.
33
- * @param {number[]} list - The list of numbers.
34
- * @param {number} top - The number of top values to retrieve.
35
- * @param {number} expectedValue - The expected value to check for inclusion.
36
- * @returns {boolean} A boolean value indicating whether the expected value is included in the top N values.
37
- */
38
- export declare const getTopN: (list: number[], top: number, expectedValue: number) => boolean;
39
- /**
40
- * @description Gets the smallest N values from a list and checks if the expected value is included.
41
- * @param {number[]} list - The list of numbers.
42
- * @param {number} bottom - The number of bottom values to retrieve.
43
- * @param {number} expectedValue - The expected value to check for inclusion.
44
- * @returns {boolean} A boolean value indicating whether the expected value is included in the bottom N values.
45
- */
46
- export declare const getBottomN: (list: number[], bottom: number, expectedValue: number) => boolean;
47
- export declare function getNumberFilterExecuteFunc(filter: ITableNumberFilterInfo, calculatedOptions: ICalculatedOptions | undefined): (value: number) => boolean;
@@ -1,23 +0,0 @@
1
- /**
2
- * Copyright 2023-present DreamNum Co., Ltd.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import type { ITableStringFilterInfo } from '../../types/type';
17
- export declare const textEqual: (compareValue: string, expectedValue: string) => boolean;
18
- export declare const textNotEqual: (compareValue: string, expectedValue: string) => boolean;
19
- export declare const textContain: (compareValue: string, expectedValue: string) => boolean;
20
- export declare const textNotContain: (compareValue: string, expectedValue: string) => boolean;
21
- export declare const textStartWith: (compareValue: string, expectedValue: string) => boolean;
22
- export declare const textEndWith: (compareValue: string, expectedValue: string) => boolean;
23
- export declare function getTextFilterExecuteFunc(filter: ITableStringFilterInfo): (value: string) => boolean;
@@ -1,29 +0,0 @@
1
- /**
2
- * Copyright 2023-present DreamNum Co., Ltd.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- /**
17
- * Returns the kth largest element from the given list using a min heap.
18
- * @param {number[]} list The list of numbers.
19
- * @param {number} k The value of k.
20
- * @returns The kth largest element.
21
- */
22
- export declare const getLargestK: (list: number[], k: number) => number[];
23
- /**
24
- * Returns the kth smallest element from the given list using a max heap.
25
- * @param {number[]} list The list of numbers.
26
- * @param {number} k The value of k.
27
- * @returns The kth smallest element.
28
- */
29
- export declare const getSmallestK: (list: number[], k: number) => number[];
@@ -1,39 +0,0 @@
1
- /**
2
- * Copyright 2023-present DreamNum Co., Ltd.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import type { IStyleData } from '@univerjs/core';
17
- import type { TableMetaType } from '../types/type';
18
- import { TableColumnDataTypeEnum } from '../types/enum';
19
- export declare class TableColumn {
20
- dataType: TableColumnDataTypeEnum;
21
- id: string;
22
- displayName: string;
23
- formula: string;
24
- meta: TableMetaType;
25
- style: IStyleData;
26
- constructor(id: string, name: string);
27
- getMeta(): TableMetaType;
28
- setMeta(meta: TableMetaType): void;
29
- getDisplayName(): string;
30
- toJSON(): {
31
- id: string;
32
- displayName: string;
33
- dataType: TableColumnDataTypeEnum;
34
- formula: string;
35
- meta: TableMetaType;
36
- style: IStyleData;
37
- };
38
- fromJSON(json: any): void;
39
- }
@@ -1,42 +0,0 @@
1
- /**
2
- * Copyright 2023-present DreamNum Co., Ltd.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import type { Worksheet } from '@univerjs/core';
17
- import type { SheetsTableButtonStateEnum } from '../types/enum';
18
- import type { ITableFilterItem, ITableFilterJSON, ITableRange } from '../types/type';
19
- import { SheetsTableSortStateEnum } from '../types/enum';
20
- export declare class TableFilters {
21
- private _tableColumnFilterList;
22
- private _tableSortInfo;
23
- private _filterOutRows;
24
- constructor();
25
- setColumnFilter(columnIndex: number, filter: ITableFilterItem | undefined): void;
26
- setSortState(columnIndex: number, sortState: SheetsTableSortStateEnum): void;
27
- getColumnFilter(columnIndex: number): ITableFilterItem | undefined;
28
- getFilterState(columnIndex: number): SheetsTableButtonStateEnum;
29
- getSortState(): {
30
- columnIndex: number;
31
- sortState: SheetsTableSortStateEnum;
32
- };
33
- getFilterStates(range: ITableRange): SheetsTableButtonStateEnum[];
34
- getFilterOutRows(): Set<number>;
35
- doFilter(sheet: Worksheet, range: ITableRange): Set<number>;
36
- doColumnFilter(sheet: Worksheet, range: ITableRange, columnIndex: number, filterOutRows: Set<number>): void;
37
- private _getNumberCalculatedOptions;
38
- getExecuteFunc(sheet: Worksheet, range: ITableRange, columnIndex: number, filter: ITableFilterItem): (value: any) => boolean;
39
- toJSON(): ITableFilterJSON;
40
- fromJSON(json: ITableFilterJSON): void;
41
- dispose(): void;
42
- }
@@ -1,97 +0,0 @@
1
- /**
2
- * Copyright 2023-present DreamNum Co., Ltd.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import type { IRange } from '@univerjs/core';
17
- import type { ITableAddedEvent, ITableDeletedEvent, ITableFilterChangedEvent, ITableFilterItem, ITableInfoWithUnitId, ITableNameChangedEvent, ITableOptions, ITableRange, ITableRangeChangedEvent, ITableRangeRowColOperation, ITableRangeUpdate, ITableRangeWithState, ITableResource, ITableSetConfig, ITableThemeChangedEvent } from '../types/type';
18
- import { Disposable, IUniverInstanceService, LocaleService } from '@univerjs/core';
19
- import { Table } from './table';
20
- export declare class TableManager extends Disposable {
21
- private readonly _univerInstanceService;
22
- private readonly _localeService;
23
- private _tableMap;
24
- private _tableAdd$;
25
- tableAdd$: import("rxjs").Observable<ITableAddedEvent>;
26
- private _tableDelete$;
27
- tableDelete$: import("rxjs").Observable<ITableDeletedEvent>;
28
- private _tableNameChanged$;
29
- tableNameChanged$: import("rxjs").Observable<ITableNameChangedEvent>;
30
- private _tableRangeChanged$;
31
- tableRangeChanged$: import("rxjs").Observable<ITableRangeChangedEvent>;
32
- private _tableThemeChanged$;
33
- tableThemeChanged$: import("rxjs").Observable<ITableThemeChangedEvent>;
34
- private _tableFilterChanged$;
35
- tableFilterChanged$: import("rxjs").Observable<ITableFilterChangedEvent>;
36
- private _tableInitStatus;
37
- tableInitStatus$: import("rxjs").Observable<boolean>;
38
- constructor(_univerInstanceService: IUniverInstanceService, _localeService: LocaleService);
39
- private _ensureUnit;
40
- getColumnHeader(unitId: string, subUnitId: string, range: ITableRange, prefixText?: string): string[];
41
- /**
42
- * Add a table to univer.
43
- * @param {string} unitId The unit id of the table.
44
- * @param {string} subUnitId The subunit id of the table.
45
- * @param {string} name The table name, it should be unique in the unit or it will be appended with a number.
46
- * @param {ITableRange} range The range of the table, it contains the unit id and subunit id.
47
- * @param {string[]} [header] The header of the table, if not provided, it will be generated based on the range.
48
- * @param {string} [initId] The initial id of the table, if not provided, a random id will be generated.
49
- * @param {ITableOptions} [options] Other options of the table.
50
- * @returns {string} The table id.
51
- */
52
- addTable(unitId: string, subUnitId: string, name: string, range: ITableRange, header?: string[], initId?: string, options?: ITableOptions): string;
53
- addFilter(unitId: string, tableId: string, column: number, filter: ITableFilterItem | undefined): void;
54
- getFilterRanges(unitId: string, subUnitId: string): IRange[];
55
- getSheetFilterRangeWithState(unitId: string, subUnitId: string): ITableRangeWithState[];
56
- getTable(unitId: string, tableId: string): Table | undefined;
57
- /**
58
- * Get the unique table name, in excel, the table name should be unique because it is used as a reference.
59
- * @param {string} unitId The unit id of the table.
60
- * @param {string} baseName The base name of the table.
61
- * @returns {string} The unique table name
62
- */
63
- getUniqueTableName(unitId: string, baseName: string): string;
64
- /**
65
- * Get table by unit id and table id.
66
- * @param {string} unitId The unit id of the table.
67
- * @param {string} tableId The table id.
68
- * @returns {Table} The table.
69
- */
70
- getTableById(unitId: string, tableId: string): Table | undefined;
71
- getTableList(unitId: string): ITableInfoWithUnitId[];
72
- /**
73
- * Get the table list by unit id and subunit id.
74
- * @param {string} unitId The unit id of the table.
75
- * @param {string} subUnitId The subunit id of the table.
76
- * @returns {Table[]} The table list.
77
- */
78
- getTablesBySubunitId(unitId: string, subUnitId: string): Table[];
79
- getTablesInfoBySubunitId(unitId: string, subUnitId: string): {
80
- id: string;
81
- name: string;
82
- range: {
83
- startRow: number;
84
- startColumn: number;
85
- endRow: number;
86
- endColumn: number;
87
- };
88
- }[];
89
- deleteTable(unitId: string, tableId: string): void;
90
- operationTableRowCol(unitId: string, tableId: string, config: ITableRangeRowColOperation): void;
91
- updateTableRange(unitId: string, tableId: string, config: ITableRangeUpdate): void;
92
- setTableByConfig(unitId: string, tableId: string, config: ITableSetConfig): void;
93
- toJSON(unitId: string): ITableResource;
94
- fromJSON(unitId: string, data: ITableResource): void;
95
- deleteUnitId(unitId: string): void;
96
- dispose(): void;
97
- }
@@ -1,96 +0,0 @@
1
- /**
2
- * Copyright 2023-present DreamNum Co., Ltd.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import type { ITableColumnJson, ITableFilterItem, ITableInfo, ITableJson, ITableOptions, ITableRange } from '../types/type';
17
- import { TableColumn } from './table-column';
18
- import { TableFilters } from './table-filter';
19
- export declare class Table {
20
- private _id;
21
- private _name;
22
- /**
23
- * @property {string} tableStyleId The table style id. If the property is empty, the default style will be used.
24
- */
25
- private _tableStyleId?;
26
- private _showHeader;
27
- private _showFooter;
28
- private _range;
29
- private _columns;
30
- private _columnOrder;
31
- tableMeta: Record<string, any>;
32
- private _tableFilters;
33
- private _subUnitId;
34
- constructor(id: string, name: string, range: ITableRange, header: string[], options?: ITableOptions);
35
- _init(header: string[], options: ITableOptions): void;
36
- setTableFilterColumn(columnIndex: number, filter: ITableFilterItem): void;
37
- getTableFilterColumn(columnIndex: number): ITableFilterItem | undefined;
38
- getTableFilters(): TableFilters;
39
- getTableFilterRange(): {
40
- startRow: number;
41
- startColumn: number;
42
- endRow: number;
43
- endColumn: number;
44
- };
45
- setColumns(columns: ITableColumnJson[]): void;
46
- getColumnsCount(): number;
47
- insertColumn(index: number, column: TableColumn): void;
48
- removeColumn(index: number): void;
49
- setTableMeta(meta: Record<string, any>): void;
50
- getTableMeta(): Record<string, any>;
51
- getColumn(columnId: string): TableColumn | undefined;
52
- getTableColumnByIndex(index: number): TableColumn | undefined;
53
- getColumnNameByIndex(index: number): string;
54
- getId(): string;
55
- getRangeInfo(): {
56
- startRow: number;
57
- startColumn: number;
58
- endRow: number;
59
- endColumn: number;
60
- };
61
- getRange(): {
62
- startRow: number;
63
- startColumn: number;
64
- endRow: number;
65
- endColumn: number;
66
- };
67
- setRange(range: ITableRange): void;
68
- setDisplayName(name: string): void;
69
- getDisplayName(): string;
70
- getSubunitId(): string;
71
- setSubunitId(subUnitId: string): void;
72
- getTableStyleId(): string;
73
- setTableStyleId(tableStyleId: string): void;
74
- isShowHeader(): boolean;
75
- setShowHeader(showHeader: boolean): void;
76
- isShowFooter(): boolean;
77
- getTableInfo(): ITableInfo;
78
- getTableConfig(): {
79
- name: string;
80
- range: {
81
- startRow: number;
82
- startColumn: number;
83
- endRow: number;
84
- endColumn: number;
85
- };
86
- options: {
87
- showHeader: boolean;
88
- showFooter: boolean;
89
- };
90
- tableStyleId: string | undefined;
91
- };
92
- getFilterStates(range: ITableRange): import("..").SheetsTableButtonStateEnum[];
93
- toJSON(): ITableJson;
94
- fromJSON(json: ITableJson): void;
95
- dispose(): void;
96
- }