@univerjs/sheets-table 0.9.3-nightly.202507250819 → 0.9.4

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/LICENSE ADDED
@@ -0,0 +1,176 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
package/lib/cjs/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var Oe=Object.defineProperty;var Ue=(n,e,t)=>e in n?Oe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var C=(n,e,t)=>Ue(n,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("@univerjs/core"),S=require("@univerjs/sheets"),D=require("rxjs");var I=(n=>(n.Insert="insert",n.Delete="delete",n))(I||{}),y=(n=>(n.Row="row",n.Col="column",n))(y||{}),se=(n=>(n.None="none",n.String="string",n.Number="number",n.Date="date",n.Bool="bool",n.Checkbox="checkbox",n.List="list",n))(se||{}),W=(n=>(n.manual="manual",n.condition="condition",n))(W||{}),N=(n=>(n.Date="date",n.Number="number",n.String="string",n.Logic="logic",n))(N||{}),v=(n=>(n.Equal="equal",n.NotEqual="notEqual",n.GreaterThan="greaterThan",n.GreaterThanOrEqual="greaterThanOrEqual",n.LessThan="lessThan",n.LessThanOrEqual="lessThanOrEqual",n.Between="between",n.NotBetween="notBetween",n.Above="above",n.Below="below",n.TopN="topN",n))(v||{}),U=(n=>(n.Equal="equal",n.NotEqual="notEqual",n.Contains="contains",n.NotContains="notContains",n.StartsWith="startsWith",n.EndsWith="endsWith",n))(U||{}),b=(n=>(n.Equal="equal",n.NotEqual="notEqual",n.After="after",n.AfterOrEqual="afterOrEqual",n.Before="before",n.BeforeOrEqual="beforeOrEqual",n.Between="between",n.NotBetween="notBetween",n.Today="today",n.Yesterday="yesterday",n.Tomorrow="tomorrow",n.ThisWeek="thisWeek",n.LastWeek="lastWeek",n.NextWeek="nextWeek",n.ThisMonth="thisMonth",n.LastMonth="lastMonth",n.NextMonth="nextMonth",n.ThisQuarter="thisQuarter",n.LastQuarter="lastQuarter",n.NextQuarter="nextQuarter",n.ThisYear="thisYear",n.LastYear="lastYear",n.NextYear="nextYear",n.YearToDate="yearToDate",n.Quarter="quarter",n.Month="month",n.M1="m1",n.M2="m2",n.M3="m3",n.M4="m4",n.M5="m5",n.M6="m6",n.M7="m7",n.M8="m8",n.M9="m9",n.M10="m10",n.M11="m11",n.M12="m12",n.Q1="q1",n.Q2="q2",n.Q3="q3",n.Q4="q4",n))(b||{}),E=(n=>(n[n.FilteredSortNone=1]="FilteredSortNone",n[n.FilteredSortAsc=2]="FilteredSortAsc",n[n.FilteredSortDesc=3]="FilteredSortDesc",n[n.FilterNoneSortNone=4]="FilterNoneSortNone",n[n.FilterNoneSortAsc=5]="FilterNoneSortAsc",n[n.FilterNoneSortDesc=6]="FilterNoneSortDesc",n))(E||{}),A=(n=>(n.Asc="asc",n.Desc="desc",n.None="none",n))(A||{});function k(n,e){return`${e} ${n}`}const le="TRUE",ue="FALSE",Ee=n=>{var t;return((t=n.body)==null?void 0:t.dataStream.replace(/\r\n$/,""))||""};function Se(n){if(n){const{v:e,t,p:a}=n;return a?Ee(a):(t===u.CellValueType.FORCE_STRING||t===u.CellValueType.STRING)&&e!==void 0&&e!==null?String(e):t===u.CellValueType.BOOLEAN?e?le:ue:t===u.CellValueType.NUMBER?String(e):typeof e==="boolean"?e?le:ue:e==null?"":String(e)}return""}function $e(n,e){if(n!==void 0)switch(e){case A.Asc:return E.FilteredSortAsc;case A.Desc:return E.FilteredSortDesc;default:return E.FilteredSortNone}else switch(e){case A.Asc:return E.FilterNoneSortAsc;case A.Desc:return E.FilterNoneSortDesc;default:return E.FilterNoneSortNone}}function Ce(n){return n?n.filterType===W.condition:!1}function Ae(n){return n?n.filterType===W.manual:!1}const x={s:u.BorderStyleTypes.THIN,cl:{rgb:"rgb(95 101 116)"}},Be={headerRowStyle:{bd:{t:x}},headerColumnStyle:{bd:{l:x}},lastColumnStyle:{bd:{r:x}},lastRowStyle:{bd:{b:x}}},Le=(n,e)=>{if(n==="headerRowStyle"){if(!e.bd)return{...e,bd:{t:x}}}else if(n==="lastRowStyle"){if(!e.bd)return{...e,bd:{b:x}}}else if(n==="lastColumnStyle"){if(!e.bd)return{...e,bd:{r:x}}}else if(n==="headerColumnStyle"&&!e.bd)return{...e,bd:{l:x}};return e},We=[[["#6280F9","#FFFFFF","#BAC6F8","#D2DAFA"],["#fff"]],[["#16BDCA","#FFFFFF","#EDFAFA","#AFECEF"],["#000"]],[["#31C48D","#FFFFFF","#F3FAF7","#BCF0DA"],["#fff"]],[["#AC94FA","#FFFFFF","#F6F5FF","#EDEBFE"],["#fff"]],[["#F17EBB","#FFFFFF","#FDF2F8","#FCE8F3"],["#fff"]],[["#F98080","#FFFFFF","#FDF2F2","#FDE8E8"],["#fff"]]],L=We.map((n,e)=>{const[t,a]=n,[r,s,o,i]=t,[c]=a;return{name:`table-default-${e}`,style:{headerRowStyle:{bg:{rgb:r},cl:{rgb:c},bd:{t:x}},headerColumnStyle:{bd:{l:x}},firstRowStyle:{bg:{rgb:s}},secondRowStyle:{bg:{rgb:o}},lastRowStyle:{bg:{rgb:i},bd:{b:x}},lastColumnStyle:{bd:{r:x}}}}});class B{constructor(e,t){C(this,"dataType");C(this,"id");C(this,"displayName");C(this,"formula");C(this,"meta");C(this,"style");this.id=e,this.displayName=t,this.dataType=se.String,this.formula="",this.meta={},this.style={}}getMeta(){return this.meta}setMeta(e){this.meta=e}getDisplayName(){return this.displayName}toJSON(){return{id:this.id,displayName:this.displayName,dataType:this.dataType,formula:this.formula,meta:this.meta,style:this.style}}fromJSON(e){this.id=e.id,this.displayName=e.displayName,this.dataType=e.dataType,this.formula=e.formula,this.meta=e.meta,this.style=e.style}}const qe=n=>n.getMonth()<=2,Pe=n=>{const e=n.getMonth();return e>2&&e<=5},He=n=>{const e=n.getMonth();return e>5&&e<=8},Ve=n=>{const e=n.getMonth();return e>8&&e<=11},Je=n=>n.getMonth()===0,ke=n=>n.getMonth()===1,Qe=n=>n.getMonth()===2,je=n=>n.getMonth()===3,Ye=n=>n.getMonth()===4,Ge=n=>n.getMonth()===5,ze=n=>n.getMonth()===6,Ke=n=>n.getMonth()===7,Xe=n=>n.getMonth()===8,Ze=n=>n.getMonth()===9,et=n=>n.getMonth()===10,tt=n=>n.getMonth()===11,nt=(n,e=new Date)=>n.toDateString()===e.toDateString(),at=(n,e=new Date)=>{const t=new Date(e);return t.setDate(t.getDate()+1),n.toDateString()===t.toDateString()},rt=(n,e=new Date)=>{const t=new Date(e);return t.setDate(t.getDate()-1),n.toDateString()===t.toDateString()},q=n=>{const e=n.getDay(),t=n.getDate()-e+(e===0?-6:1),a=new Date(n);return a.setDate(t),a},Re=10080*60*1e3,st=(n,e=new Date)=>{const t=q(n),a=q(e);return t.toDateString()===a.toDateString()},ot=(n,e=new Date)=>{const t=q(n),a=new Date(q(e).getTime()+Re);return t.toDateString()===a.toDateString()},it=(n,e=new Date)=>{const t=q(n),a=new Date(q(e).getTime()-Re);return t.toDateString()===a.toDateString()},lt=(n,e=new Date)=>n.getFullYear()===e.getFullYear()&&n.getMonth()===e.getMonth(),ut=n=>{const e=new Date(n);return e.setHours(0,0,0,0),e.setDate(1),e},ct=(n,e=new Date)=>{const t=new Date(e);t.setHours(0,0,0,0),t.setMonth(t.getMonth()+1,1);const a=new Date(t);a.setMonth(a.getMonth()+1,0);const r=n.getTime();return r>=t.getTime()&&r<a.getTime()},dt=(n,e=new Date)=>{const t=ut(e),a=new Date(t);a.setMonth(a.getMonth()+1,0);const r=n.getTime();return r>=t.getTime()&&r<a.getTime()},oe=n=>{const e=new Date(n);e.setHours(0,0,0,0),e.setDate(1);const t=e.getMonth();return e.setMonth(t-t%3),e},ht=(n,e=new Date)=>{const t=oe(e),a=new Date(t);a.setMonth(a.getMonth()+3);const r=n.getTime();return r>=t.getTime()&&r<a.getTime()},gt=(n,e=new Date)=>{const t=oe(e),a=new Date(t);a.setMonth(a.getMonth()+3);const r=new Date(a);r.setMonth(r.getMonth()+3,0);const s=n.getTime();return s>=a.getTime()&&s<r.getTime()},mt=(n,e=new Date)=>{const t=oe(e),a=new Date(t);a.setMonth(a.getMonth()-3);const r=new Date(t);r.setDate(0);const s=n.getTime();return s>=a.getTime()&&s<r.getTime()},bt=(n,e=new Date)=>n.getFullYear()===e.getFullYear(),St=(n,e=new Date)=>n.getFullYear()===e.getFullYear()+1,Ct=(n,e=new Date)=>n.getFullYear()===e.getFullYear()-1,Rt=(n,e=new Date)=>{const t=new Date(e);t.setHours(0,0,0,0),t.setMonth(0,1);const a=n.getTime();return a>=t.getTime()&&a<e.getTime()};function Tt(n){switch(n.compareType){case b.Equal:{const e=n.expectedValue;return t=>t.getTime()===e.getTime()}case b.NotEqual:{const e=n.expectedValue;return t=>t.getTime()!==e.getTime()}case b.After:{const e=n.expectedValue;return t=>t.getTime()>e.getTime()}case b.Before:{const e=n.expectedValue;return t=>t.getTime()<e.getTime()}case b.AfterOrEqual:{const e=n.expectedValue;return t=>t.getTime()>=e.getTime()}case b.BeforeOrEqual:{const e=n.expectedValue;return t=>t.getTime()<=e.getTime()}case b.Between:return e=>{const[t,a]=n.expectedValue;return e.getTime()>=new Date(t).getTime()&&e.getTime()<=new Date(a).getTime()};case b.NotBetween:return e=>{const[t,a]=n.expectedValue;return e.getTime()<new Date(t).getTime()||e.getTime()>new Date(a).getTime()};case b.Today:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>nt(t,e)}case b.Yesterday:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>rt(t,e)}case b.Tomorrow:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>at(t,e)}case b.ThisWeek:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>st(t,e)}case b.LastWeek:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>it(t,e)}case b.NextWeek:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>ot(t,e)}case b.ThisMonth:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>lt(t,e)}case b.LastMonth:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>dt(t,e)}case b.NextMonth:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>ct(t,e)}case b.ThisQuarter:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>ht(t,e)}case b.LastQuarter:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>mt(t,e)}case b.NextQuarter:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>gt(t,e)}case b.ThisYear:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>bt(t,e)}case b.LastYear:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>Ct(t,e)}case b.NextYear:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>St(t,e)}case b.YearToDate:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>Rt(t,e)}case b.M1:return Je;case b.M2:return ke;case b.M3:return Qe;case b.M4:return je;case b.M5:return Ye;case b.M6:return Ge;case b.M7:return ze;case b.M8:return Ke;case b.M9:return Xe;case b.M10:return Ze;case b.M11:return et;case b.M12:return tt;case b.Q1:return qe;case b.Q2:return Pe;case b.Q3:return He;case b.Q4:return Ve;default:throw new Error("Unsupported compare type")}}class pt{constructor(){C(this,"heap");this.heap=[]}swap(e,t){const a=this.heap[e];this.heap[e]=this.heap[t],this.heap[t]=a}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)}}class wt extends pt{constructor(){super()}shiftUp(e){if(e===0)return;const t=this.getParentIndex(e);this.heap[t]>this.heap[e]&&(this.swap(t,e),this.shiftUp(t))}shiftDown(e){const t=this.getLeftIndex(e),a=this.getRightIndex(e);this.heap[t]<this.heap[e]&&(this.swap(t,e),this.shiftDown(t)),this.heap[a]<this.heap[e]&&(this.swap(a,e),this.shiftDown(a))}insert(e){this.heap.push(e),this.shiftUp(this.heap.length-1)}pop(){this.heap[0]=this.heap.pop(),this.shiftDown(0)}}const ft=(n,e)=>{const t=new wt;for(const a of n)t.insert(a),t.size()>e&&t.pop();return t.heap},It=(n,e)=>n>e,_t=(n,e)=>n<e,Mt=(n,e,t)=>ft(n,e).includes(t);function vt(n,e){switch(n.compareType){case v.Equal:{const t=Number(n.expectedValue);return a=>a===t}case v.NotEqual:{const t=Number(n.expectedValue);return a=>a!==t}case v.GreaterThan:{const t=Number(n.expectedValue);return a=>a>t}case v.GreaterThanOrEqual:{const t=Number(n.expectedValue);return a=>a>=t}case v.LessThan:{const t=Number(n.expectedValue);return a=>a<t}case v.LessThanOrEqual:{const t=Number(n.expectedValue);return a=>a<=t}case v.Between:{const[t,a]=n.expectedValue,r=Number(t),s=Number(a);return r>s?o=>o>=s&&o<=r:o=>o>=r&&o<=s}case v.NotBetween:{const[t,a]=n.expectedValue,r=Number(t),s=Number(a);return r>s?o=>o<s||o>r:o=>o<r||o>s}case v.Above:{const t=e.average;return a=>It(a,t)}case v.Below:{const t=e.average;return a=>_t(a,t)}case v.TopN:{const t=e.list,a=Number(n.expectedValue);return r=>Mt(t,a,r)}}}const V=n=>{const t=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/\\\*/g,".*").replace(/\\\?/g,".");return new RegExp(`^${t}$`)},Ft=(n,e)=>V(e).test(n),yt=(n,e)=>!V(e).test(n),Dt=(n,e)=>V(`*${e}*`).test(n),Nt=(n,e)=>!V(`*${e}*`).test(n),xt=(n,e)=>V(`${e}*`).test(n),Ot=(n,e)=>V(`*${e}`).test(n);function Ut(n){switch(n.compareType){case U.Equal:return e=>Ft(e,n.expectedValue);case U.NotEqual:return e=>yt(e,n.expectedValue);case U.Contains:return e=>Dt(e,n.expectedValue);case U.NotContains:return e=>Nt(e,n.expectedValue);case U.StartsWith:return e=>xt(e,n.expectedValue);case U.EndsWith:return e=>Ot(e,n.expectedValue);default:return console.error(`Unknown filter operator: ${n.compareType}`),e=>!0}}const Et=new Set([v.Above,v.Below,v.TopN]);b.Today,b.Yesterday,b.Tomorrow,b.ThisWeek,b.LastWeek,b.NextWeek,b.ThisMonth,b.LastMonth,b.NextMonth,b.ThisQuarter,b.LastQuarter,b.NextQuarter,b.NextYear,b.ThisYear,b.LastYear,b.YearToDate;function Te(n){return Et.has(n)}function $t(n,e){if(Te(n.filterInfo.compareType))return t=>!0;switch(n.filterInfo.conditionType){case N.Date:return Tt(n.filterInfo);case N.Number:return vt(n.filterInfo,e);case N.String:return Ut(n.filterInfo);case N.Logic:default:return t=>!0}}function G(n,e,t,a){switch(a){case N.Date:{const r=ce(n,e,t);return r?Lt(r):null}case N.Number:return ce(n,e,t);case N.String:default:return Bt(n,e,t)}}const At=n=>{var t;return((t=n.body)==null?void 0:t.dataStream.replace(/\r\n$/,""))||""};function Bt(n,e,t){const a=n.getCell(e,t);if(!a)return null;const{v:r,t:s,p:o}=a;return o?At(o):typeof r=="string"?s===u.CellValueType.BOOLEAN?r.toUpperCase():r:typeof r=="number"?s===u.CellValueType.BOOLEAN?r?"TRUE":"FALSE":r:typeof r=="boolean"?r?"TRUE":"FALSE":r===void 0?"(空白)":String(r)}function ce(n,e,t){const a=n.getCell(e,t);if(!a)return null;const{v:r,t:s,p:o}=a;return o?null:typeof r=="string"&&s===u.CellValueType.NUMBER?Number(n.getCellRaw(e,t).v):Number(r)}function Lt(n){const e=new Date(Date.UTC(1900,0,1,0,0,0)),t=new Date(Date.UTC(1900,1,28,0,0,0));let a=n-1;return a>(t.getTime()-e.getTime())/(1e3*3600*24)&&(a-=1),a<0&&(a=n),new Date(e.getTime()+a*(1e3*3600*24))}class de{constructor(){C(this,"_tableColumnFilterList");C(this,"_tableSortInfo");C(this,"_filterOutRows");this._tableColumnFilterList=[]}setColumnFilter(e,t){t?this._tableColumnFilterList[e]=t:this._tableColumnFilterList[e]=void 0}setSortState(e,t){this._tableSortInfo={columnIndex:e,sortState:t}}getColumnFilter(e){return this._tableColumnFilterList[e]}getFilterState(e){var a;const t=((a=this._tableSortInfo)==null?void 0:a.columnIndex)===e?this._tableSortInfo.sortState:A.None;return $e(this._tableColumnFilterList[e],t)}getSortState(){var e;return(e=this._tableSortInfo)!=null?e:{}}getFilterStates(e){const t=[],{startColumn:a,endColumn:r}=e;for(let s=a;s<=r;s++)t.push(this.getFilterState(s-a));return t}getFilterOutRows(){return this._filterOutRows}doFilter(e,t){const a=new Set,r=this._tableColumnFilterList;for(let s=0;s<r.length;s++)r[s]&&this.doColumnFilter(e,t,s,a);return this._filterOutRows=a,a}doColumnFilter(e,t,a,r){const s=this._tableColumnFilterList[a];if(s&&e){const{startRow:o,endRow:i,startColumn:c}=t,l=c+a,h=this.getExecuteFunc(e,t,a,s);for(let g=o;g<=i;g++){const d=Ce(s)?s.filterInfo.conditionType:N.String;G(e,g,l,d)===null?r.add(g):h(G(e,g,l,d))||r.add(g)}}}_getNumberCalculatedOptions(e,t,a){const{startRow:r,endRow:s,startColumn:o}=t,i=o+a,c=[];let l=0,h=0;for(let g=r;g<=s;g++){const d=G(e,g,i,N.Number);d!==null&&(c.push(d),l++,h+=d)}return{list:c,average:l>0?h/l:0}}getExecuteFunc(e,t,a,r){if(r.filterType===W.manual){const s=new Set(r.values);return o=>s.has(o)}else if(r.filterType===W.condition){const o=Te(r.filterInfo.compareType)?this._getNumberCalculatedOptions(e,t,a):void 0;return $t(r,o)}else return s=>!0}toJSON(){return{tableColumnFilterList:this._tableColumnFilterList,tableSortInfo:this._tableSortInfo}}fromJSON(e){var t;this._tableColumnFilterList=(t=e.tableColumnFilterList)!=null?t:[],e.tableSortInfo&&(this._tableSortInfo=e.tableSortInfo)}dispose(){this._tableColumnFilterList=[]}}class he{constructor(e,t,a,r,s={}){C(this,"_id");C(this,"_name");C(this,"_tableStyleId");C(this,"_showHeader");C(this,"_showFooter");C(this,"_range");C(this,"_columns",new Map);C(this,"_columnOrder",[]);C(this,"tableMeta");C(this,"_tableFilters");C(this,"_subUnitId");this._id=e,this._range=a,this._name=t,this._tableFilters=new de,this._init(r,s)}_init(e,t){var a;if(this._tableStyleId=t==null?void 0:t.tableStyleId,this._showHeader=(a=t==null?void 0:t.showHeader)!=null?a:!0,this._showFooter=!1,t.columns)t.columns.forEach(r=>{const s=r.id||u.generateRandomId(),o=new B(s,r.displayName);o.fromJSON(r),this._columns.set(s,o),this._columnOrder.push(s)});else{const r=this.getRange(),s=r.startColumn,o=r.endColumn;for(let i=s;i<=o;i++){const c=u.generateRandomId(),l=new B(c,e[i-s]);this._columns.set(c,l),this._columnOrder.push(c)}}t.filters&&t.filters.forEach((s,o)=>{s&&this._tableFilters.setColumnFilter(o,s)})}setTableFilterColumn(e,t){this._tableFilters.setColumnFilter(e,t)}getTableFilterColumn(e){return this._tableFilters.getColumnFilter(e)}getTableFilters(){return this._tableFilters}getTableFilterRange(){const e=this.getRange(),t=this.isShowHeader(),a=this.isShowFooter(),{startRow:r,startColumn:s,endRow:o,endColumn:i}=e,c=t?r+1:r,l=a?o-1:o;return{startRow:c,startColumn:s,endRow:l,endColumn:i}}setColumns(e){this._columns.clear(),this._columnOrder=[],e.forEach(t=>{const a=new B(t.id,t.displayName);a.fromJSON(t),this._columns.set(t.id,a),this._columnOrder.push(t.id)})}getColumnsCount(){return this._columnOrder.length}insertColumn(e,t){const a=t.id;this._columns.set(a,t),this._columnOrder.splice(e,0,a)}removeColumn(e){const 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){const t=this._columnOrder[e];return this.getColumn(t)}getColumnNameByIndex(e){var a;const t=this._columnOrder[e];return((a=this.getColumn(t))==null?void 0:a.getDisplayName())||""}getId(){return this._id}getRangeInfo(){return{...this._range}}getRange(){return{...this._range}}setRange(e){this._range=e}setDisplayName(e){this._name=e}getDisplayName(){return this._name}getSubunitId(){return this._subUnitId}setSubunitId(e){this._subUnitId=e}getTableStyleId(){var e;return(e=this._tableStyleId)!=null?e:L[0].name}setTableStyleId(e){this._tableStyleId=e}isShowHeader(){var e;return(e=this._showHeader)!=null?e:!0}setShowHeader(e){this._showHeader=e}isShowFooter(){var e;return(e=this._showFooter)!=null?e:!1}getTableInfo(){return{id:this._id,subUnitId:this._subUnitId,name:this._name,range:this.getRangeInfo(),meta:this.tableMeta,showHeader:this._showHeader,columns:this._columnOrder.map(e=>this._columns.get(e).toJSON())}}getTableConfig(){return{name:this.getDisplayName(),range:this.getRangeInfo(),options:{showHeader:this._showHeader,showFooter:this._showFooter},tableStyleId:this._tableStyleId}}getFilterStates(e){return this._tableFilters.getFilterStates(e)}toJSON(){const e=[];return this._columns.forEach(t=>{e.push(t.toJSON())}),{id:this._id,name:this._name,range:this.getRangeInfo(),options:{showHeader:this._showHeader,showFooter:this._showFooter,tableStyleId:this._tableStyleId},filters:this._tableFilters.toJSON(),columns:e,meta:this.tableMeta}}fromJSON(e){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,e.columns.forEach(a=>{const r=new B(a.id,a.displayName);r.fromJSON(a),this._columns.set(a.id,r),this._columnOrder.push(a.id)}),this._tableFilters=new de,this._tableFilters.fromJSON(e.filters)}dispose(){this._id="",this._name="",this._tableStyleId="",this._showHeader=!0,this._showFooter=!0,delete this._range,this._columns.clear(),this._columnOrder=[]}}var Wt=Object.getOwnPropertyDescriptor,qt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Wt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},ge=(n,e)=>(t,a)=>e(t,a,n);exports.TableManager=class extends u.Disposable{constructor(t,a){super();C(this,"_tableMap");C(this,"_tableAdd$",new D.Subject);C(this,"tableAdd$",this._tableAdd$.asObservable());C(this,"_tableDelete$",new D.Subject);C(this,"tableDelete$",this._tableDelete$.asObservable());C(this,"_tableNameChanged$",new D.Subject);C(this,"tableNameChanged$",this._tableNameChanged$.asObservable());C(this,"_tableRangeChanged$",new D.Subject);C(this,"tableRangeChanged$",this._tableRangeChanged$.asObservable());C(this,"_tableThemeChanged$",new D.Subject);C(this,"tableThemeChanged$",this._tableThemeChanged$.asObservable());C(this,"_tableFilterChanged$",new D.Subject);C(this,"tableFilterChanged$",this._tableFilterChanged$.asObservable());C(this,"_tableInitStatus",new D.BehaviorSubject(!1));C(this,"tableInitStatus$",this._tableInitStatus.asObservable());this._univerInstanceService=t,this._localeService=a,this._tableMap=new Map}_ensureUnit(t){return this._tableMap.has(t)||this._tableMap.set(t,new Map),this._tableMap.get(t)}getColumnHeader(t,a,r,s){var d;const o=(d=this._univerInstanceService.getUnit(t))==null?void 0:d.getSheetBySheetId(a),{startRow:i,startColumn:c,endColumn:l}=r,h=[],g=s!=null?s:"Column";for(let m=c;m<=l;m++)h.push(Se(o==null?void 0:o.getCell(i,m))||k(m-c+1,g));return h}addTable(t,a,r,s,o,i,c){const l=i!=null?i:u.generateRandomId(),h=o||this.getColumnHeader(t,a,s),g=new he(l,r,s,h,c);return g.setSubunitId(a),this._ensureUnit(t).set(l,g),this._tableAdd$.next({unitId:t,subUnitId:a,range:s,tableName:r,tableId:l}),l}addFilter(t,a,r,s){const o=this.getTable(t,a);if(o){o.getTableFilters().setColumnFilter(r,s);const c=o.getSubunitId();this._tableFilterChanged$.next({unitId:t,subUnitId:c,tableId:a})}}getFilterRanges(t,a){const r=this._tableMap.get(t);if(!r)return[];const s=[];return r.forEach(o=>{o.getSubunitId()===a&&o.isShowHeader()&&s.push(o.getRange())}),s}getSheetFilterRangeWithState(t,a){const r=this._tableMap.get(t);if(!r)return[];const s=[];return r.forEach(o=>{o.getSubunitId()===a&&o.isShowHeader()&&s.push({tableId:o.getId(),range:o.getRange(),states:o.getFilterStates(o.getRange())})}),s}getTable(t,a){const r=this._tableMap.get(t);if(r)return r.get(a)}getUniqueTableName(t,a){const r=this._tableMap.get(t);if(!r)return a;const s=new Set(Array.from(r.values()).map(c=>c.getDisplayName()));let o=a,i=1;for(;s.has(o);)o=`${a}-${i}`,i++;return o}getTableById(t,a){return this.getTable(t,a)}getTableList(t){const a=this._tableMap.get(t);return a?Array.from(a.values()).map(r=>({...r.getTableInfo(),unitId:t})):[]}getTablesBySubunitId(t,a){const r=this._tableMap.get(t);return r?Array.from(r.values()).filter(s=>s.getSubunitId()===a):[]}getTablesInfoBySubunitId(t,a){return this.getTablesBySubunitId(t,a).map(r=>({id:r.getId(),name:r.getDisplayName(),range:r.getRange()}))}deleteTable(t,a){const r=this._tableMap.get(t),s=r==null?void 0:r.get(a);if(s){const o=s.getTableInfo(),i=s.getTableStyleId();r==null||r.delete(a);const{subUnitId:c,range:l,name:h}=o;this._tableDelete$.next({unitId:t,subUnitId:c,tableId:a,range:l,tableName:h,tableStyleId:i})}}operationTableRowCol(t,a,r){const s=this.getTableById(t,a);if(!s)return;const{operationType:o,rowColType:i,index:c,count:l,columnsJson:h}=r,g=s.getRange(),d={...g};if(o===I.Insert){if(i==="row")d.endRow+=l;else if(i==="column"){d.endColumn+=l;for(let m=0;m<l;m++){const p=this._localeService.t("sheets-table.columnPrefix"),R=new B(u.generateRandomId(),k(s.getColumnsCount()+1+m,p));h!=null&&h[m]&&R.fromJSON(h[m]);const w=c+m-g.startColumn;s.insertColumn(w,R)}}}else if(i==="row")d.endRow-=l;else if(i==="column"){d.endColumn-=l;for(let m=l-1;m>=0;m--){const p=c+m-g.startColumn;s.removeColumn(p)}}s.setRange(d),this._tableRangeChanged$.next({unitId:t,subUnitId:s.getSubunitId(),tableId:a,range:d,oldRange:g})}updateTableRange(t,a,r){const s=this.getTableById(t,a);if(!s)return;const o=s.getRange(),i=r.newRange;if(i.startColumn<o.startColumn){const c=o.startColumn-i.startColumn,l=this._localeService.t("sheets-table.columnPrefix");for(let h=0;h<c;h++)s.insertColumn(o.startColumn,new B(u.generateRandomId(),k(s.getColumnsCount()+1,l)))}else if(i.startColumn>o.startColumn){const c=i.startColumn-o.startColumn;for(let l=c-1;l>=0;l--){const h=i.startColumn+l-o.startColumn;s.removeColumn(h)}}if(i.endColumn<o.endColumn){const c=o.endColumn-i.endColumn;for(let l=c-1;l>=0;l--){const h=i.endColumn+l-o.startColumn;s.removeColumn(h)}}else if(i.endColumn>o.endColumn){const c=i.endColumn-o.endColumn;for(let l=0;l<c;l++)s.insertColumn(o.endColumn,new B(u.generateRandomId(),k(s.getColumnsCount()+1,"Column")))}s.setRange(i),this._tableRangeChanged$.next({unitId:t,subUnitId:s.getSubunitId(),tableId:a,range:i,oldRange:o})}setTableByConfig(t,a,r){var m;const s=this._tableMap.get(t),o=s==null?void 0:s.get(a);if(!o)return;const i=o.getSubunitId(),{name:c,updateRange:l,rowColOperation:h,theme:g,options:d}=r;if(c){const p=o.getDisplayName();o.setDisplayName(c),this._tableNameChanged$.next({unitId:t,subUnitId:i,tableId:a,tableName:c,oldTableName:p})}if(h&&this.operationTableRowCol(t,a,h),l&&this.updateTableRange(t,a,l),g){const p=(m=o.getTableStyleId())!=null?m:"default";o.setTableStyleId(g),this._tableThemeChanged$.next({unitId:t,subUnitId:i,tableId:a,theme:g,oldTheme:p})}d&&d.showHeader!==void 0&&o.setShowHeader(d.showHeader)}toJSON(t){const a={},r=this._tableMap.get(t);return r&&r.forEach(s=>{const o=s.getSubunitId();a[o]||(a[o]=[]),a[o].push(s.toJSON())}),a}fromJSON(t,a){const r=this._ensureUnit(t);Object.keys(a).forEach(o=>{const i=S.getSheetCommandTarget(this._univerInstanceService,{unitId:t,subUnitId:o});if(!i)return;const c=i.worksheet;a[o].forEach(h=>{const g=this.getColumnHeader(t,o,h.range),d=new he(h.id,h.name,h.range,g,h.options);if(d.setTableMeta(h.meta),h.columns.length&&d.setColumns(h.columns),h.filters){const m=d.getTableFilters();m.fromJSON(h.filters),m.doFilter(c,d.getTableFilterRange())}d.setSubunitId(o),r.set(h.id,d),this._tableAdd$.next({unitId:t,subUnitId:o,range:h.range,tableName:h.name,tableId:h.id})})}),this._tableInitStatus.next(!0)}deleteUnitId(t){this._tableMap.delete(t)}dispose(){super.dispose(),this._tableMap.forEach(t=>{t.forEach(a=>a.dispose()),t.clear()}),this._tableMap.clear()}};exports.TableManager=qt([ge(0,u.IUniverInstanceService),ge(1,u.Inject(u.LocaleService))],exports.TableManager);var Pt=Object.getOwnPropertyDescriptor,Ht=(n,e,t,a)=>{for(var r=a>1?void 0:a?Pt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},Vt=(n,e)=>(t,a)=>e(t,a,n);exports.SheetTableService=class extends u.Disposable{constructor(e){super(),this._tableManager=e}getTableInfo(e,t){const a=this._tableManager.getTable(e,t);if(a)return{unitId:e,...a.getTableInfo()}}getTableList(e){return this._tableManager.getTableList(e)}addTable(e,t,a,r,s,o,i){return this._tableManager.addTable(e,t,a,r,s,o,i)}deleteTable(e,t,a){this._tableManager.deleteTable(e,a)}getTableMeta(e,t){var a;return(a=this._tableManager.getTable(e,t))==null?void 0:a.getTableMeta()}setTableMeta(e,t,a){var r;(r=this._tableManager.getTable(e,t))==null||r.setTableMeta(a)}getTableColumnMeta(e,t,a){var r,s;return(s=(r=this._tableManager.getTable(e,t))==null?void 0:r.getTableColumnByIndex(a))==null?void 0:s.getMeta()}selTableColumnMeta(e,t,a,r){var s,o;(o=(s=this._tableManager.getTable(e,t))==null?void 0:s.getTableColumnByIndex(a))==null||o.setMeta(r)}addFilter(e,t,a,r){this._tableManager.addFilter(e,t,a,r)}getCellValueWithConditionType(e,t,a,r=N.String){return G(e,t,a,r)}};exports.SheetTableService=Ht([Vt(0,u.Inject(exports.TableManager))],exports.SheetTableService);const P={id:"sheet.mutation.add-table",type:u.CommandType.MUTATION,handler:(n,e)=>{const{tableId:t,unitId:a,subUnitId:r,name:s,range:o,header:i,options:c}=e;return n.get(exports.SheetTableService).addTable(a,r,s,o,i,t,c),!0}},H={id:"sheet.mutation.delete-table",type:u.CommandType.MUTATION,handler:(n,e)=>{const{unitId:t,subUnitId:a,tableId:r}=e;return n.get(exports.SheetTableService).deleteTable(t,a,r),!0}},pe={id:"sheet.command.add-table",type:u.CommandType.COMMAND,handler:(n,e)=>{var R;if(!e)return!1;const t=n.get(u.IUndoRedoService),a=n.get(u.ICommandService),r=n.get(u.LocaleService),s=(R=e.id)!=null?R:u.generateRandomId();let o=e.name;if(!o){const T=n.get(exports.TableManager).getTableList(e.unitId).length;o=`${r.t("sheets-table.tablePrefix")} ${T+1}`}const i=[],c=[],l=n.get(exports.TableManager),{unitId:h,subUnitId:g,range:d}=e,m=l.getColumnHeader(h,g,d,r.t("sheets-table.columnPrefix"));return i.push({id:P.id,params:{...e,tableId:s,name:o,header:m}}),c.push({id:H.id,params:{tableId:s,unitId:e.unitId}}),u.sequenceExecute(i,a)&&t.pushUndoRedo({unitID:e.unitId,undoMutations:c,redoMutations:i}),!0}},we={id:"sheet.command.delete-table",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(u.IUndoRedoService),a=n.get(u.ICommandService),r=n.get(exports.TableManager),s=[],o=[],i=r.getTable(e.unitId,e.tableId),c=i==null?void 0:i.toJSON();if(!c)throw new Error("[TableManager]: Table not found");return s.push({id:H.id,params:{...e}}),o.push({id:P.id,params:{unitId:e.unitId,subUnitId:e.subUnitId,tableId:e.tableId,name:c.name,range:c.range,options:c.options}}),u.sequenceExecute(s,a)&&t.pushUndoRedo({unitID:e.unitId,undoMutations:o,redoMutations:s}),!0}},z={id:"sheet.mutation.set-table-filter",type:u.CommandType.MUTATION,handler:(n,e)=>{const{tableId:t,unitId:a,column:r,tableFilter:s}=e;return n.get(exports.TableManager).addFilter(a,t,r,s),!0}},fe={id:"sheet.command.set-table-filter",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(u.IUndoRedoService),a=n.get(u.ICommandService),r=e.tableId||u.generateRandomId(),s=[],o=[];return s.push({id:z.id,params:{...e,tableId:r}}),o.push({id:z.id,params:{...e,tableId:r,tableFilter:void 0}}),u.sequenceExecute(s,a)&&t.pushUndoRedo({unitID:e.unitId,undoMutations:o,redoMutations:s}),!0}},Ie="SHEET_TABLE_PLUGIN",j="SHEET_TABLE",_e="table-custom";var Jt=Object.getOwnPropertyDescriptor,kt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Jt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},te=(n,e)=>(t,a)=>e(t,a,n);exports.SheetsTableController=class extends u.Disposable{constructor(t,a,r){super();C(this,"_tableRangeRTree",new Map);this._sheetInterceptorService=t,this._tableManager=a,this._resourceManagerService=r,this._initSnapshot(),this.registerTableChangeEvent(),this.registerTableHeaderInterceptor()}getContainerTableWithRange(t,a,r){const s=this._ensureTableRangeRTree(t),i=Array.from(s.bulkSearch([{unitId:t,sheetId:a,range:r}])).find(c=>{const l=this._tableManager.getTable(t,String(c));return l?u.Rectangle.contains(l.getRange(),r):!1});if(i)return this._tableManager.getTable(t,String(i))}_ensureTableRangeRTree(t){return this._tableRangeRTree.has(t)||this._tableRangeRTree.set(t,new u.RTree),this._tableRangeRTree.get(t)}registerTableChangeEvent(){this.disposeWithMe(this._tableManager.tableAdd$.subscribe(t=>{const{range:a,tableId:r,unitId:s,subUnitId:o}=t;this._ensureTableRangeRTree(s).insert({unitId:s,sheetId:o,id:r,range:{...a}})})),this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe(t=>{const{range:a,tableId:r,unitId:s,subUnitId:o,oldRange:i}=t,c=this._ensureTableRangeRTree(s);c.remove({unitId:s,sheetId:o,id:r,range:{...i}}),c.insert({unitId:s,sheetId:o,id:r,range:{...a}})})),this.disposeWithMe(this._tableManager.tableDelete$.subscribe(t=>{const{tableId:a,unitId:r,subUnitId:s,range:o}=t;this._ensureTableRangeRTree(r).remove({unitId:r,sheetId:s,id:a,range:{...o}})}))}registerTableHeaderInterceptor(){this.disposeWithMe(this._sheetInterceptorService.intercept(S.INTERCEPTOR_POINT.CELL_CONTENT,{effect:u.InterceptorEffectEnum.Value,handler:(t,a,r)=>{const{row:s,col:o,unitId:i,subUnitId:c}=a,l=this._ensureTableRangeRTree(i);if((t==null?void 0:t.v)===void 0&&l){const g=Array.from(l.bulkSearch([{unitId:i,sheetId:c,range:{startColumn:o,endColumn:o,startRow:s,endRow:s}}]));if(g.length>0){const d=this._tableManager.getTable(i,g[0]);if(d){const m=d.getRange(),p=o-m.startColumn;if(m.startRow===s){const w=d.getColumnNameByIndex(p);return(!t||t===a.rawData)&&(t={...a.rawData}),t.v=w,r(t)}}}}return r(t)}}))}_toJson(t){return this._tableManager.toJSON(t)}_fromJSON(t,a){return this._tableManager.fromJSON(t,a)}_deleteUnitId(t){this._tableManager.deleteUnitId(t)}_initSnapshot(){this.disposeWithMe(this._resourceManagerService.registerPluginResource({toJson:t=>JSON.stringify(this._toJson(t)),parseJson:t=>{if(!t)return{};try{return JSON.parse(t)}catch{return{}}},businesses:[u.UniverInstanceType.UNIVER_SHEET],pluginName:Ie,onLoad:(t,a)=>{this._fromJSON(t,a)},onUnLoad:t=>{this._deleteUnitId(t)}}))}dispose(){super.dispose(),this._tableRangeRTree.clear()}};exports.SheetsTableController=kt([te(0,u.Inject(S.SheetInterceptorService)),te(1,u.Inject(exports.TableManager)),te(2,u.Inject(u.IResourceManagerService))],exports.SheetsTableController);const f={id:"sheet.mutation.set-sheet-table",type:u.CommandType.MUTATION,handler:(n,e)=>{if(!e)return!1;const{unitId:t,tableId:a,config:r}=e;return n.get(exports.TableManager).setTableByConfig(t,a,r),!0}},Me={id:"sheet.command.add-table-theme",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(exports.TableManager),{unitId:a,tableId:r,themeStyle:s}=e,o=[],i=[],c=t.getTableById(a,r);if(!c)return!1;const l=c.getSubunitId();o.push({id:S.AddRangeThemeMutation.id,params:{unitId:a,subUnitId:l,styleJSON:s.toJson()}}),o.push({id:f.id,params:{unitId:a,subUnitId:l,tableId:r,config:{theme:s.getName()}}}),i.push({id:f.id,params:{unitId:a,subUnitId:l,tableId:r,config:{themeStyle:c.getTableStyleId()}}}),i.push({id:S.RemoveRangeThemeMutation.id,params:{unitId:a,subUnitId:l,styleName:s.getName()}});const h=n.get(u.ICommandService);return u.sequenceExecute(o,h)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:a,undoMutations:i,redoMutations:o}),!0}},ve={id:"sheet.command.remove-table-theme",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const{unitId:t,tableId:a,themeName:r}=e,s=n.get(exports.TableManager),o=n.get(S.SheetRangeThemeModel),i=s.getTableById(t,a);if(!i)return!1;const c=i.getSubunitId(),l=[],h=[],g=o.getRegisteredRangeThemes().filter(T=>T==null?void 0:T.startsWith("table-default"));let m=o.getRegisteredRangeThemes().filter(T=>T==null?void 0:T.startsWith(_e)).find(T=>T!==r);m||(m=g[0]),l.push({id:f.id,params:{unitId:t,subUnitId:c,tableId:a,config:{theme:m}}}),l.push({id:S.RemoveRangeThemeMutation.id,params:{unitId:t,subUnitId:c,styleName:r}});const p=o.getDefaultRangeThemeStyle(r);p&&(h.push({id:S.AddRangeThemeMutation.id,params:{unitId:t,subUnitId:c,styleJSON:p.toJson()}}),h.push({id:f.id,params:{unitId:t,subUnitId:c,tableId:a,config:{theme:r}}}));const R=n.get(u.ICommandService);return u.sequenceExecute(l,R)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:t,redoMutations:l,undoMutations:h}),!0}},Fe={id:"sheet.command.set-table-config",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const{unitId:t,tableId:a,name:r,updateRange:s,rowColOperation:o,theme:i}=e,l=n.get(exports.TableManager).getTableById(t,a);if(!l)return!1;const h={},g={};r&&(h.name=l.getDisplayName(),g.name=r),o&&(h.rowColOperation={operationType:o.operationType===I.Insert?I.Delete:I.Insert,rowColType:o.rowColType,index:o.index,count:o.count},g.rowColOperation=o),s&&(h.updateRange={newRange:l.getRange()},g.updateRange=s),i&&(h.theme=l.getTableStyleId(),g.theme=i);const d={unitId:t,subUnitId:l.getSubunitId(),tableId:a,config:g};return n.get(u.ICommandService).executeCommand(f.id,d),n.get(u.IUndoRedoService).pushUndoRedo({unitID:t,undoMutations:[{id:f.id,params:{unitId:t,subUnitId:l.getSubunitId(),tableId:a,config:h}}],redoMutations:[{id:f.id,params:d}]}),!0}},ye={id:"sheet.command.table-insert-row",type:u.CommandType.COMMAND,handler:n=>{const e=n.get(u.IUniverInstanceService),t=S.getSheetCommandTarget(e);if(!t)return!1;const{workbook:a,worksheet:r,unitId:s,subUnitId:o}=t,c=n.get(S.SheetsSelectionsService).getCurrentSelections();if(!c.length||c.length>1)return!1;n.get(exports.TableManager);const h=c[0].range,d=n.get(exports.SheetsTableController).getContainerTableWithRange(s,o,h);if(!d)return!1;const m=h.endRow-h.startRow+1,R=r.getRowCount()-1,w=r.getCellMatrix().getDataRange().endRow,T=[],_=[];if(R-w<m)T.push({id:S.InsertRowMutation.id,params:{unitId:s,subUnitId:o,range:{...h}}}),T.push({id:f.id,params:{unitId:s,subUnitId:o,tableId:d.getId(),config:{updateRange:{newRange:{...d.getRange(),endRow:d.getRange().endRow+m}}}}}),_.push({id:f.id,params:{unitId:s,subUnitId:o,tableId:d.getId(),config:{updateRange:{newRange:d.getRange()}}}}),_.push({id:S.RemoveRowMutation.id,params:{unitId:s,subUnitId:o,range:{...h}}});else{const M={...d.getRange()};T.push({id:f.id,params:{unitId:s,subUnitId:o,tableId:d.getId(),config:{updateRange:{newRange:{...M,endRow:M.endRow+m}}}}}),_.push({id:f.id,params:{unitId:s,subUnitId:o,tableId:d.getId(),config:{updateRange:{newRange:{...M}}}}});const J=S.getMoveRangeUndoRedoMutations(n,{unitId:s,subUnitId:o,range:{startRow:h.startRow,endRow:w,startColumn:M.startColumn,endColumn:M.endColumn}},{unitId:s,subUnitId:o,range:{startRow:h.startRow+m,endRow:w+m,startColumn:M.startColumn,endColumn:M.endColumn}});J&&(T.push(...J.redos),_.push(...J.undos))}const O=n.get(u.ICommandService);return u.sequenceExecute(T,O)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:s,undoMutations:_,redoMutations:T}),!0}},De={id:"sheet.command.table-insert-col",type:u.CommandType.COMMAND,handler:n=>{const e=n.get(u.IUniverInstanceService),t=S.getSheetCommandTarget(e);if(!t)return!1;const{worksheet:a,unitId:r,subUnitId:s}=t,i=n.get(S.SheetsSelectionsService).getCurrentSelections();if(!i.length||i.length>1)return!1;const l=i[0].range,g=n.get(exports.SheetsTableController).getContainerTableWithRange(r,s,l);if(!g)return!1;const d=l.endColumn-l.startColumn+1,p=a.getColumnCount()-1,R=a.getCellMatrix().getDataRange().endColumn,w=[],T=[];if(p-R<d)w.push({id:S.InsertColMutation.id,params:{unitId:r,subUnitId:s,range:{...l}}}),w.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:g.getId(),config:{rowColOperation:{operationType:I.Insert,rowColType:y.Col,index:l.startColumn,count:d}}}}),T.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:g.getId(),config:{rowColOperation:{operationType:I.Delete,rowColType:y.Col,index:l.startColumn,count:d}}}}),T.push({id:S.RemoveColMutation.id,params:{unitId:r,subUnitId:s,range:{...l}}});else{const F=g.getRange();w.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:g.getId(),config:{rowColOperation:{operationType:I.Insert,rowColType:y.Col,index:l.startColumn,count:d}}}}),T.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:g.getId(),config:{rowColOperation:{operationType:I.Delete,rowColType:y.Col,index:l.startColumn,count:d}}}});const M=S.getMoveRangeUndoRedoMutations(n,{unitId:r,subUnitId:s,range:{startRow:F.startRow,endRow:F.endRow,startColumn:l.startColumn,endColumn:R}},{unitId:r,subUnitId:s,range:{startRow:F.startRow,endRow:F.endRow,startColumn:l.startColumn+d,endColumn:R+d}});M&&(w.push(...M.redos),T.push(...M.undos))}const _=n.get(u.ICommandService);return u.sequenceExecute(w,_)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:r,undoMutations:T,redoMutations:w}),!0}},Ne={id:"sheet.command.table-remove-row",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(u.IUniverInstanceService),a=S.getSheetCommandTarget(t);if(!a)return!1;const{unitId:r,subUnitId:s}=a,i=n.get(S.SheetsSelectionsService).getCurrentSelections();if(!i.length||i.length>1)return!1;const l=i[0].range,g=n.get(exports.SheetsTableController).getContainerTableWithRange(r,s,l);if(!g)return!1;const d=l.endRow-l.startRow+1,m=[],p=[],R=g.getRange();m.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:g.getId(),config:{updateRange:{newRange:{...R,endRow:R.endRow-d}}}}}),p.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:g.getId(),config:{updateRange:{newRange:{...R}}}}});const T=a.worksheet.getCellMatrix().getDataRange().endRow,_=S.getMoveRangeUndoRedoMutations(n,{unitId:r,subUnitId:s,range:{startRow:l.endRow+1,endRow:T,startColumn:R.startColumn,endColumn:R.endColumn}},{unitId:r,subUnitId:s,range:{startRow:l.startRow,endRow:T-d,startColumn:R.startColumn,endColumn:R.endColumn}});_&&(m.push(..._.redos),p.push(..._.undos));const O=n.get(u.ICommandService);return u.sequenceExecute(m,O)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:r,undoMutations:p,redoMutations:m}),!0}},xe={id:"sheet.command.table-remove-col",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(u.IUniverInstanceService),a=S.getSheetCommandTarget(t);if(!a)return!1;const{workbook:r,unitId:s,subUnitId:o}=a;n.get(exports.TableManager);const c=n.get(S.SheetsSelectionsService).getCurrentSelections();if(!c.length||c.length>1)return!1;const h=c[0].range,d=n.get(exports.SheetsTableController).getContainerTableWithRange(s,o,h);if(!d)return!1;const m=h.endColumn-h.startColumn+1,p=[],R=[],w=d.getRange();p.push({id:f.id,params:{unitId:s,subUnitId:o,tableId:d.getId(),config:{rowColOperation:{operationType:I.Delete,rowColType:y.Col,index:h.startColumn,count:m}}}});const T=[],_=h.startColumn-w.startColumn;for(let Q=0;Q<m;Q++){const ie=d.getTableInfo().columns[_+Q];ie&&T.push(ie)}R.push({id:f.id,params:{unitId:s,subUnitId:o,tableId:d.getId(),config:{rowColOperation:{operationType:I.Insert,rowColType:y.Col,index:h.startColumn,count:m,columnsJson:T}}}});const F=a.worksheet.getCellMatrix().getDataRange().endColumn,M=S.getMoveRangeUndoRedoMutations(n,{unitId:s,subUnitId:o,range:{startRow:w.startRow,endRow:w.endRow,startColumn:h.endColumn+1,endColumn:F}},{unitId:s,subUnitId:o,range:{startRow:w.startRow,endRow:w.endRow,startColumn:h.startColumn,endColumn:F-m}});M&&(p.push(...M.redos),R.push(...M.undos));const J=n.get(u.ICommandService);return u.sequenceExecute(p,J)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:s,undoMutations:R,redoMutations:p}),!0}},Qt="sheets-table.config",me={};var jt=Object.getOwnPropertyDescriptor,Yt=(n,e,t,a)=>{for(var r=a>1?void 0:a?jt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},be=(n,e)=>(t,a)=>e(t,a,n);let K=class extends u.Disposable{constructor(n,e){super(),this._tableManager=n,this._exclusiveRangeService=e,this._initRangeListener()}_initRangeListener(){this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe(n=>{const{range:e,tableId:t,unitId:a,subUnitId:r}=n;this._exclusiveRangeService.clearExclusiveRangesByGroupId(a,r,j,t),this._exclusiveRangeService.addExclusiveRange(a,r,j,[{range:{...e},groupId:t}])})),this.disposeWithMe(this._tableManager.tableAdd$.subscribe(n=>{const{tableId:e,unitId:t,subUnitId:a,range:r}=n;this._exclusiveRangeService.addExclusiveRange(t,a,j,[{range:{...r},groupId:e}])})),this.disposeWithMe(this._tableManager.tableDelete$.subscribe(n=>{const{tableId:e,unitId:t,subUnitId:a}=n;this._exclusiveRangeService.clearExclusiveRangesByGroupId(t,a,j,e)}))}};K=Yt([be(0,u.Inject(exports.TableManager)),be(1,u.Inject(S.IExclusiveRangeService))],K);var Gt=Object.getOwnPropertyDescriptor,zt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Gt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},$=(n,e)=>(t,a)=>e(t,a,n);let X=class extends u.Disposable{constructor(n,e,t,a,r,s,o){super(),this._commandService=n,this._refRangeService=e,this._univerInstanceService=t,this._injector=a,this._sheetInterceptorService=r,this._tableManager=s,this._localeService=o,this._initCommandInterceptor(),this._initCommandListener()}_initCommandInterceptor(){const n=this;this._sheetInterceptorService.interceptCommand({getMutations(e){const t={redos:[],undos:[]},{id:a,params:r}=e;switch(a){case S.InsertRowCommand.id:return n._generateTableMutationWithInsertRow(r);case S.InsertColCommand.id:return n._generateTableMutationWithInsertCol(r);case S.RemoveRowCommand.id:return n._generateTableMutationWithRemoveRow(r);case S.RemoveColCommand.id:return n._generateTableMutationWithRemoveCol(r)}return t}})}_generateTableMutationWithInsertRow(n){const e=[],t=[],a=S.getSheetCommandTarget(this._univerInstanceService);if(!a)return{undos:e,redos:t};const{unitId:r,subUnitId:s}=a,o=this._tableManager.getTablesBySubunitId(r,s);if(!o.length)return{undos:e,redos:t};const{range:i}=n;return o.forEach(c=>{const l=c.getRange();if(i.startRow>l.startRow&&i.startRow<=l.endRow){const h=i.endRow-i.startRow+1;t.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:c.getId(),config:{updateRange:{newRange:{...l,endRow:l.endRow+h}}}}}),e.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:c.getId(),config:{updateRange:{newRange:{...l}}}}})}}),{undos:e,redos:t}}_generateTableMutationWithInsertCol(n){const e=[],t=[],a=S.getSheetCommandTarget(this._univerInstanceService);if(!a)return{undos:e,redos:t};const{unitId:r,subUnitId:s}=a,o=this._tableManager.getTablesBySubunitId(r,s);if(!o.length)return{undos:e,redos:t};const{range:i}=n;return o.forEach(c=>{const l=c.getRange();if(i.startColumn>l.startColumn&&i.startColumn<=l.endColumn){const h=i.endColumn-i.startColumn+1;t.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:c.getId(),config:{rowColOperation:{operationType:I.Insert,rowColType:y.Col,index:i.startColumn,count:h}}}}),e.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:c.getId(),config:{rowColOperation:{operationType:I.Delete,rowColType:y.Col,index:i.startColumn,count:h}}}})}}),{undos:e,redos:t}}_generateTableMutationWithRemoveRow(n){const e=[],t=[],a=[],r=[],s=S.getSheetCommandTarget(this._univerInstanceService);if(!s)return{undos:e,redos:t,preRedos:a,preUndos:r};const{unitId:o,subUnitId:i}=s,c=this._tableManager.getTablesBySubunitId(o,i);if(!c.length)return{undos:e,redos:t,preRedos:a,preUndos:r};const{range:l}=n,h=l.endRow-l.startRow+1;return c.forEach(g=>{const d=g.getRange();if(u.Rectangle.intersects(d,l))if(l.startRow<=d.startRow&&l.endRow>=d.startRow){a.push({id:H.id,params:{unitId:o,subUnitId:i,tableId:g.getId()}});const m=g.toJSON();e.push({id:P.id,params:{unitId:o,subUnitId:i,tableId:m.id,name:m.name,range:m.range,options:m.options}})}else l.startRow>d.startRow&&l.startRow<=d.endRow?(t.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{updateRange:{newRange:{...d,endRow:d.endRow-h}}}}}),e.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{updateRange:{newRange:{...d}}}}})):l.startRow<d.endRow&&l.endRow>=d.endRow&&(t.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{updateRange:{newRange:{...d,endRow:l.startRow-1}}}}}),e.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{updateRange:{newRange:{...d}}}}}))}),{undos:e,redos:t,preRedos:a,preUndos:r}}_generateTableMutationWithRemoveCol(n){const e=[],t=[],a=[],r=[],s=S.getSheetCommandTarget(this._univerInstanceService);if(!s)return{undos:e,redos:t,preRedos:a,preUndos:r};const{unitId:o,subUnitId:i}=s,c=this._tableManager.getTablesBySubunitId(o,i);if(!c.length)return{undos:e,redos:t,preRedos:a,preUndos:r};const{range:l}=n,h=l.endColumn-l.startColumn+1;return c.forEach(g=>{const d=g.getRange();if(u.Rectangle.intersects(d,l)){if(l.startColumn<=d.startColumn&&l.endColumn>=d.endColumn){a.push({id:H.id,params:{unitId:o,subUnitId:i,tableId:g.getId()}});const m=g.toJSON(),{startRow:p,startColumn:R,endColumn:w}=m.range,T=this._univerInstanceService.getUnit(o),_=T==null?void 0:T.getSheetBySheetId(i);if(!_)return{undos:e,redos:t,preRedos:a,preUndos:r};const O=[];for(let F=R;F<=w;F++)O.push(Se(_==null?void 0:_.getCell(p,F))||k(F-R+1,this._localeService.t("sheets-table.columnPrefix")));e.push({id:P.id,params:{unitId:o,subUnitId:i,tableId:m.id,name:m.name,header:O,range:m.range,options:m.options}})}else if(l.startColumn<=d.startColumn&&l.endColumn>=d.startColumn){const m=l.endColumn-d.startColumn+1;t.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{rowColOperation:{operationType:I.Delete,rowColType:y.Col,index:d.startColumn,count:m}}}});const p=[];for(let R=0;R<m;R++){const w=g.getTableColumnByIndex(R);w&&p.push(w.toJSON())}e.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{rowColOperation:{operationType:I.Insert,rowColType:y.Col,index:d.startColumn,count:m,columnsJson:p}}}})}else if(l.startColumn>d.startColumn&&l.endColumn>d.endColumn){const m=d.endColumn-l.startColumn+1;t.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{rowColOperation:{operationType:I.Delete,rowColType:y.Col,index:l.startColumn,count:m}}}});const p=[],R=l.startColumn-d.startColumn;for(let w=0;w<m;w++){const T=g.getTableColumnByIndex(w+R);T&&p.push(T.toJSON())}e.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{rowColOperation:{operationType:I.Insert,rowColType:y.Col,index:l.startColumn,count:h,columnsJson:p}}}})}else if(l.startColumn>d.startColumn&&l.endColumn<=d.endColumn){t.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{rowColOperation:{operationType:I.Delete,rowColType:y.Col,index:l.startColumn,count:h}}}});const m=[],p=l.startColumn-d.startColumn;for(let R=0;R<h;R++){const w=g.getTableColumnByIndex(R+p);w&&m.push(w.toJSON())}e.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{rowColOperation:{operationType:I.Insert,rowColType:y.Col,index:l.startColumn,count:h,columnsJson:m}}}})}}}),{undos:e,redos:t,preRedos:a,preUndos:r}}_initCommandListener(){this._commandService.onCommandExecuted(n=>{if(n.id===S.InsertRowMutation.id){const e=n.params,{unitId:t,subUnitId:a,range:r}=e,s=r.endRow-r.startRow+1;this._tableManager.getTablesBySubunitId(t,a).forEach(i=>{const c=i.getRange();r.startRow<=c.startRow&&this._tableManager.updateTableRange(t,i.getId(),{newRange:{...c,startRow:c.startRow+s,endRow:c.endRow+s}})})}else if(n.id===S.InsertColMutation.id){const e=n.params,{unitId:t,subUnitId:a,range:r}=e,s=r.endColumn-r.startColumn+1;this._tableManager.getTablesBySubunitId(t,a).forEach(i=>{const c=i.getRange();r.startColumn<=c.startColumn&&this._tableManager.updateTableRange(t,i.getId(),{newRange:{...c,startColumn:c.startColumn+s,endColumn:c.endColumn+s}})})}else if(n.id===S.RemoveRowMutation.id){const e=n.params,{unitId:t,subUnitId:a,range:r}=e,s=r.endRow-r.startRow+1;this._tableManager.getTablesBySubunitId(t,a).forEach(i=>{const c=i.getRange();r.startRow<c.startRow&&this._tableManager.updateTableRange(t,i.getId(),{newRange:{...c,startRow:c.startRow-s,endRow:c.endRow-s}})})}else if(n.id===S.RemoveColMutation.id){const e=n.params,{unitId:t,subUnitId:a,range:r}=e,s=r.endColumn-r.startColumn+1;this._tableManager.getTablesBySubunitId(t,a).forEach(i=>{const c=i.getRange();r.startColumn<c.startColumn&&this._tableManager.updateTableRange(t,i.getId(),{newRange:{...c,startColumn:c.startColumn-s,endColumn:c.endColumn-s}})})}})}};X=zt([$(0,u.Inject(u.ICommandService)),$(1,u.Inject(S.RefRangeService)),$(2,u.Inject(u.IUniverInstanceService)),$(3,u.Inject(u.Injector)),$(4,u.Inject(S.SheetInterceptorService)),$(5,u.Inject(exports.TableManager)),$(6,u.Inject(u.LocaleService))],X);var Kt=Object.getOwnPropertyDescriptor,Xt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Kt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},ne=(n,e)=>(t,a)=>e(t,a,n);let Z=class extends u.Disposable{constructor(n,e,t){super(),this._tableManager=n,this._sheetRangeThemeService=e,this._sheetRangeThemeModel=t,this.registerTableChangeEvent(),this._initDefaultTableTheme()}registerTableChangeEvent(){this.disposeWithMe(this._tableManager.tableAdd$.subscribe(n=>{const{range:e,tableId:t,unitId:a,subUnitId:r}=n,o=this._tableManager.getTable(a,t).getTableStyleId()||L[0].name;this._sheetRangeThemeService.registerRangeThemeStyle(o,{unitId:a,subUnitId:r,range:{...e}})})),this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe(n=>{const{range:e,oldRange:t,tableId:a,unitId:r,subUnitId:s}=n,i=this._tableManager.getTable(r,a).getTableStyleId()||L[0].name;this._sheetRangeThemeService.removeRangeThemeRule(i,{unitId:r,subUnitId:s,range:{...t}}),this._sheetRangeThemeService.registerRangeThemeStyle(i,{unitId:r,subUnitId:s,range:{...e}})})),this.disposeWithMe(this._tableManager.tableThemeChanged$.subscribe(n=>{const{theme:e,oldTheme:t,tableId:a,unitId:r,subUnitId:s}=n,i=this._tableManager.getTable(r,a).getRange();this._sheetRangeThemeService.removeRangeThemeRule(t,{unitId:r,subUnitId:s,range:{...i}}),this._sheetRangeThemeService.registerRangeThemeStyle(e,{unitId:r,subUnitId:s,range:{...i}})})),this.disposeWithMe(this._tableManager.tableDelete$.subscribe(n=>{const{range:e,unitId:t,subUnitId:a,tableStyleId:r=L[0].name}=n;this._sheetRangeThemeService.removeRangeThemeRule(r,{unitId:t,subUnitId:a,range:{...e}})}))}_initDefaultTableTheme(){for(let n=0;n<L.length;n++){const{name:e,style:t}=L[n],a=new S.RangeThemeStyle(e,t);this._sheetRangeThemeModel.registerDefaultRangeTheme(a)}}dispose(){super.dispose()}};Z=Xt([ne(0,u.Inject(exports.TableManager)),ne(1,u.Inject(S.SheetRangeThemeService)),ne(2,u.Inject(S.SheetRangeThemeModel))],Z);var Zt=Object.getOwnPropertyDescriptor,en=(n,e,t,a)=>{for(var r=a>1?void 0:a?Zt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},ae=(n,e)=>(t,a)=>e(t,a,n);let ee=class extends u.Disposable{constructor(e,t,a){super();C(this,"_tableFilteredOutRows$",new D.BehaviorSubject(new Set));C(this,"tableFilteredOutRows$",this._tableFilteredOutRows$.asObservable());C(this,"_subscription",null);this._tableManager=e,this._sheetInterceptorService=t,this._univerInstanceService=a,this.registerFilterChangeEvent(),this.initTableHiddenRowIntercept(),this._initFilteredOutRows()}get tableFilteredOutRows(){return this._tableFilteredOutRows$.value}set tableFilteredOutRows(e){this._tableFilteredOutRows$.next(e)}initTableHiddenRowIntercept(){this.disposeWithMe(this._sheetInterceptorService.intercept(S.INTERCEPTOR_POINT.ROW_FILTERED,{priority:100,handler:(e,t,a)=>{if(e)return!0;const r=this.tableFilteredOutRows.has(t.row);return r?!0:a(r)}}))}_initFilteredOutRows(){this._tableManager.tableInitStatus$.pipe(D.filter(e=>e),D.switchMap(()=>this._univerInstanceService.getCurrentTypeOfUnit$(u.UniverInstanceType.UNIVER_SHEET)),D.filter(e=>e!=null),D.switchMap(e=>e.activeSheet$),D.filter(e=>e!=null)).subscribe(()=>{const e=S.getSheetCommandTarget(this._univerInstanceService);if(!e)return;const{unitId:t,subUnitId:a}=e;this.tableFilteredOutRows.clear(),this._tableManager.getTablesBySubunitId(t,a).forEach(s=>{const o=s.getTableFilters().getFilterOutRows();if(o)for(const i of o)this.tableFilteredOutRows.add(i)})})}registerFilterChangeEvent(){this.disposeWithMe(this._tableManager.tableFilterChanged$.subscribe(e=>{var l;const{unitId:t,subUnitId:a,tableId:r}=e,s=(l=this._univerInstanceService.getUnit(t))==null?void 0:l.getSheetBySheetId(a),o=this._tableManager.getTable(t,r);if(!s||!o)return;this.tableFilteredOutRows.clear(),o.getTableFilters().doFilter(s,o.getTableFilterRange()),this._tableManager.getTablesBySubunitId(t,a).forEach(h=>{const g=h.getTableFilters().getFilterOutRows();if(g)for(const d of g)this.tableFilteredOutRows.add(d)})}))}dispose(){var e;super.dispose(),(e=this._subscription)==null||e.unsubscribe()}};ee=en([ae(0,u.Inject(exports.TableManager)),ae(1,u.Inject(S.SheetInterceptorService)),ae(2,u.Inject(u.IUniverInstanceService))],ee);var tn=Object.getOwnPropertyDescriptor,nn=(n,e,t,a)=>{for(var r=a>1?void 0:a?tn(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},re=(n,e)=>(t,a)=>e(t,a,n),Y;exports.UniverSheetsTablePlugin=(Y=class extends u.Plugin{constructor(e=me,t,a,r){super(),this._config=e,this._injector=t,this._configService=a,this._commandService=r;const{...s}=u.merge({},me,this._config);this._configService.setConfig(Qt,s),this._initRegisterCommand()}onStarting(){u.registerDependencies(this._injector,[[exports.TableManager],[Z],[exports.SheetsTableController],[exports.SheetTableService],[ee],[K],[X]]),u.touchDependencies(this._injector,[[K],[X],[Z],[exports.SheetsTableController],[exports.SheetTableService],[ee]])}onReady(){u.touchDependencies(this._injector,[[exports.TableManager]])}_initRegisterCommand(){[pe,P,we,H,z,fe,Fe,f,Me,ve,ye,De,Ne,xe].forEach(e=>this._commandService.registerCommand(e))}},C(Y,"pluginName",Ie),C(Y,"type",u.UniverInstanceType.UNIVER_SHEET),Y);exports.UniverSheetsTablePlugin=nn([re(1,u.Inject(u.Injector)),re(2,u.IConfigService),re(3,u.Inject(u.ICommandService))],exports.UniverSheetsTablePlugin);exports.AddSheetTableCommand=pe;exports.AddSheetTableMutation=P;exports.AddTableThemeCommand=Me;exports.DeleteSheetTableCommand=we;exports.DeleteSheetTableMutation=H;exports.RemoveTableThemeCommand=ve;exports.SHEET_TABLE_CUSTOM_THEME_PREFIX=_e;exports.SetSheetTableCommand=Fe;exports.SetSheetTableFilterCommand=fe;exports.SetSheetTableFilterMutation=z;exports.SetSheetTableMutation=f;exports.SheetTableInsertColCommand=De;exports.SheetTableInsertRowCommand=ye;exports.SheetTableRemoveColCommand=xe;exports.SheetTableRemoveRowCommand=Ne;exports.SheetsTableButtonStateEnum=E;exports.SheetsTableSortStateEnum=A;exports.TableColumnDataTypeEnum=se;exports.TableColumnFilterTypeEnum=W;exports.TableConditionTypeEnum=N;exports.TableDateCompareTypeEnum=b;exports.TableNumberCompareTypeEnum=v;exports.TableStringCompareTypeEnum=U;exports.customEmptyThemeWithBorderStyle=Be;exports.isConditionFilter=Ce;exports.isManualFilter=Ae;exports.processStyleWithBorderStyle=Le;
1
+ "use strict";var Oe=Object.defineProperty;var Ue=(n,e,t)=>e in n?Oe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var C=(n,e,t)=>Ue(n,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("@univerjs/core"),S=require("@univerjs/sheets"),D=require("rxjs");var I=(n=>(n.Insert="insert",n.Delete="delete",n))(I||{}),y=(n=>(n.Row="row",n.Col="column",n))(y||{}),se=(n=>(n.None="none",n.String="string",n.Number="number",n.Date="date",n.Bool="bool",n.Checkbox="checkbox",n.List="list",n))(se||{}),W=(n=>(n.manual="manual",n.condition="condition",n))(W||{}),N=(n=>(n.Date="date",n.Number="number",n.String="string",n.Logic="logic",n))(N||{}),v=(n=>(n.Equal="equal",n.NotEqual="notEqual",n.GreaterThan="greaterThan",n.GreaterThanOrEqual="greaterThanOrEqual",n.LessThan="lessThan",n.LessThanOrEqual="lessThanOrEqual",n.Between="between",n.NotBetween="notBetween",n.Above="above",n.Below="below",n.TopN="topN",n))(v||{}),U=(n=>(n.Equal="equal",n.NotEqual="notEqual",n.Contains="contains",n.NotContains="notContains",n.StartsWith="startsWith",n.EndsWith="endsWith",n))(U||{}),b=(n=>(n.Equal="equal",n.NotEqual="notEqual",n.After="after",n.AfterOrEqual="afterOrEqual",n.Before="before",n.BeforeOrEqual="beforeOrEqual",n.Between="between",n.NotBetween="notBetween",n.Today="today",n.Yesterday="yesterday",n.Tomorrow="tomorrow",n.ThisWeek="thisWeek",n.LastWeek="lastWeek",n.NextWeek="nextWeek",n.ThisMonth="thisMonth",n.LastMonth="lastMonth",n.NextMonth="nextMonth",n.ThisQuarter="thisQuarter",n.LastQuarter="lastQuarter",n.NextQuarter="nextQuarter",n.ThisYear="thisYear",n.LastYear="lastYear",n.NextYear="nextYear",n.YearToDate="yearToDate",n.Quarter="quarter",n.Month="month",n.M1="m1",n.M2="m2",n.M3="m3",n.M4="m4",n.M5="m5",n.M6="m6",n.M7="m7",n.M8="m8",n.M9="m9",n.M10="m10",n.M11="m11",n.M12="m12",n.Q1="q1",n.Q2="q2",n.Q3="q3",n.Q4="q4",n))(b||{}),E=(n=>(n[n.FilteredSortNone=1]="FilteredSortNone",n[n.FilteredSortAsc=2]="FilteredSortAsc",n[n.FilteredSortDesc=3]="FilteredSortDesc",n[n.FilterNoneSortNone=4]="FilterNoneSortNone",n[n.FilterNoneSortAsc=5]="FilterNoneSortAsc",n[n.FilterNoneSortDesc=6]="FilterNoneSortDesc",n))(E||{}),A=(n=>(n.Asc="asc",n.Desc="desc",n.None="none",n))(A||{});function k(n,e){return`${e} ${n}`}const le="TRUE",ue="FALSE",Ee=n=>{var t;return((t=n.body)==null?void 0:t.dataStream.replace(/\r\n$/,""))||""};function Se(n){if(n){const{v:e,t,p:a}=n;return a?Ee(a):(t===u.CellValueType.FORCE_STRING||t===u.CellValueType.STRING)&&e!==void 0&&e!==null?String(e):t===u.CellValueType.BOOLEAN?e?le:ue:t===u.CellValueType.NUMBER?String(e):typeof e==="boolean"?e?le:ue:e==null?"":String(e)}return""}function $e(n,e){if(n!==void 0)switch(e){case A.Asc:return E.FilteredSortAsc;case A.Desc:return E.FilteredSortDesc;default:return E.FilteredSortNone}else switch(e){case A.Asc:return E.FilterNoneSortAsc;case A.Desc:return E.FilterNoneSortDesc;default:return E.FilterNoneSortNone}}function Ce(n){return n?n.filterType===W.condition:!1}function Ae(n){return n?n.filterType===W.manual:!1}const x={s:u.BorderStyleTypes.THIN,cl:{rgb:"rgb(95 101 116)"}},Be={headerRowStyle:{bd:{t:x}},headerColumnStyle:{bd:{l:x}},lastColumnStyle:{bd:{r:x}},lastRowStyle:{bd:{b:x}}},Le=(n,e)=>{if(n==="headerRowStyle"){if(!e.bd)return{...e,bd:{t:x}}}else if(n==="lastRowStyle"){if(!e.bd)return{...e,bd:{b:x}}}else if(n==="lastColumnStyle"){if(!e.bd)return{...e,bd:{r:x}}}else if(n==="headerColumnStyle"&&!e.bd)return{...e,bd:{l:x}};return e},We=[[["#6280F9","#FFFFFF","#BAC6F8","#D2DAFA"],["#fff"]],[["#16BDCA","#FFFFFF","#EDFAFA","#AFECEF"],["#000"]],[["#31C48D","#FFFFFF","#F3FAF7","#BCF0DA"],["#fff"]],[["#AC94FA","#FFFFFF","#F6F5FF","#EDEBFE"],["#fff"]],[["#F17EBB","#FFFFFF","#FDF2F8","#FCE8F3"],["#fff"]],[["#F98080","#FFFFFF","#FDF2F2","#FDE8E8"],["#fff"]]],L=We.map((n,e)=>{const[t,a]=n,[r,s,o,i]=t,[c]=a;return{name:`table-default-${e}`,style:{headerRowStyle:{bg:{rgb:r},cl:{rgb:c},bd:{t:x}},headerColumnStyle:{bd:{l:x}},firstRowStyle:{bg:{rgb:s}},secondRowStyle:{bg:{rgb:o}},lastRowStyle:{bg:{rgb:i},bd:{b:x}},lastColumnStyle:{bd:{r:x}}}}});class B{constructor(e,t){C(this,"dataType");C(this,"id");C(this,"displayName");C(this,"formula");C(this,"meta");C(this,"style");this.id=e,this.displayName=t,this.dataType=se.String,this.formula="",this.meta={},this.style={}}getMeta(){return this.meta}setMeta(e){this.meta=e}getDisplayName(){return this.displayName}toJSON(){return{id:this.id,displayName:this.displayName,dataType:this.dataType,formula:this.formula,meta:this.meta,style:this.style}}fromJSON(e){this.id=e.id,this.displayName=e.displayName,this.dataType=e.dataType,this.formula=e.formula,this.meta=e.meta,this.style=e.style}}const qe=n=>n.getMonth()<=2,Pe=n=>{const e=n.getMonth();return e>2&&e<=5},He=n=>{const e=n.getMonth();return e>5&&e<=8},Ve=n=>{const e=n.getMonth();return e>8&&e<=11},Je=n=>n.getMonth()===0,ke=n=>n.getMonth()===1,Qe=n=>n.getMonth()===2,je=n=>n.getMonth()===3,Ye=n=>n.getMonth()===4,Ge=n=>n.getMonth()===5,ze=n=>n.getMonth()===6,Ke=n=>n.getMonth()===7,Xe=n=>n.getMonth()===8,Ze=n=>n.getMonth()===9,et=n=>n.getMonth()===10,tt=n=>n.getMonth()===11,nt=(n,e=new Date)=>n.toDateString()===e.toDateString(),at=(n,e=new Date)=>{const t=new Date(e);return t.setDate(t.getDate()+1),n.toDateString()===t.toDateString()},rt=(n,e=new Date)=>{const t=new Date(e);return t.setDate(t.getDate()-1),n.toDateString()===t.toDateString()},q=n=>{const e=n.getDay(),t=n.getDate()-e+(e===0?-6:1),a=new Date(n);return a.setDate(t),a},Re=7*24*60*60*1e3,st=(n,e=new Date)=>{const t=q(n),a=q(e);return t.toDateString()===a.toDateString()},ot=(n,e=new Date)=>{const t=q(n),a=new Date(q(e).getTime()+Re);return t.toDateString()===a.toDateString()},it=(n,e=new Date)=>{const t=q(n),a=new Date(q(e).getTime()-Re);return t.toDateString()===a.toDateString()},lt=(n,e=new Date)=>n.getFullYear()===e.getFullYear()&&n.getMonth()===e.getMonth(),ut=n=>{const e=new Date(n);return e.setHours(0,0,0,0),e.setDate(1),e},ct=(n,e=new Date)=>{const t=new Date(e);t.setHours(0,0,0,0),t.setMonth(t.getMonth()+1,1);const a=new Date(t);a.setMonth(a.getMonth()+1,0);const r=n.getTime();return r>=t.getTime()&&r<a.getTime()},dt=(n,e=new Date)=>{const t=ut(e),a=new Date(t);a.setMonth(a.getMonth()+1,0);const r=n.getTime();return r>=t.getTime()&&r<a.getTime()},oe=n=>{const e=new Date(n);e.setHours(0,0,0,0),e.setDate(1);const t=e.getMonth();return e.setMonth(t-t%3),e},ht=(n,e=new Date)=>{const t=oe(e),a=new Date(t);a.setMonth(a.getMonth()+3);const r=n.getTime();return r>=t.getTime()&&r<a.getTime()},gt=(n,e=new Date)=>{const t=oe(e),a=new Date(t);a.setMonth(a.getMonth()+3);const r=new Date(a);r.setMonth(r.getMonth()+3,0);const s=n.getTime();return s>=a.getTime()&&s<r.getTime()},mt=(n,e=new Date)=>{const t=oe(e),a=new Date(t);a.setMonth(a.getMonth()-3);const r=new Date(t);r.setDate(0);const s=n.getTime();return s>=a.getTime()&&s<r.getTime()},bt=(n,e=new Date)=>n.getFullYear()===e.getFullYear(),St=(n,e=new Date)=>n.getFullYear()===e.getFullYear()+1,Ct=(n,e=new Date)=>n.getFullYear()===e.getFullYear()-1,Rt=(n,e=new Date)=>{const t=new Date(e);t.setHours(0,0,0,0),t.setMonth(0,1);const a=n.getTime();return a>=t.getTime()&&a<e.getTime()};function Tt(n){switch(n.compareType){case b.Equal:{const e=n.expectedValue;return t=>t.getTime()===e.getTime()}case b.NotEqual:{const e=n.expectedValue;return t=>t.getTime()!==e.getTime()}case b.After:{const e=n.expectedValue;return t=>t.getTime()>e.getTime()}case b.Before:{const e=n.expectedValue;return t=>t.getTime()<e.getTime()}case b.AfterOrEqual:{const e=n.expectedValue;return t=>t.getTime()>=e.getTime()}case b.BeforeOrEqual:{const e=n.expectedValue;return t=>t.getTime()<=e.getTime()}case b.Between:return e=>{const[t,a]=n.expectedValue;return e.getTime()>=new Date(t).getTime()&&e.getTime()<=new Date(a).getTime()};case b.NotBetween:return e=>{const[t,a]=n.expectedValue;return e.getTime()<new Date(t).getTime()||e.getTime()>new Date(a).getTime()};case b.Today:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>nt(t,e)}case b.Yesterday:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>rt(t,e)}case b.Tomorrow:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>at(t,e)}case b.ThisWeek:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>st(t,e)}case b.LastWeek:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>it(t,e)}case b.NextWeek:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>ot(t,e)}case b.ThisMonth:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>lt(t,e)}case b.LastMonth:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>dt(t,e)}case b.NextMonth:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>ct(t,e)}case b.ThisQuarter:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>ht(t,e)}case b.LastQuarter:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>mt(t,e)}case b.NextQuarter:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>gt(t,e)}case b.ThisYear:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>bt(t,e)}case b.LastYear:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>Ct(t,e)}case b.NextYear:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>St(t,e)}case b.YearToDate:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>Rt(t,e)}case b.M1:return Je;case b.M2:return ke;case b.M3:return Qe;case b.M4:return je;case b.M5:return Ye;case b.M6:return Ge;case b.M7:return ze;case b.M8:return Ke;case b.M9:return Xe;case b.M10:return Ze;case b.M11:return et;case b.M12:return tt;case b.Q1:return qe;case b.Q2:return Pe;case b.Q3:return He;case b.Q4:return Ve;default:throw new Error("Unsupported compare type")}}class pt{constructor(){C(this,"heap");this.heap=[]}swap(e,t){const a=this.heap[e];this.heap[e]=this.heap[t],this.heap[t]=a}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)}}class wt extends pt{constructor(){super()}shiftUp(e){if(e===0)return;const t=this.getParentIndex(e);this.heap[t]>this.heap[e]&&(this.swap(t,e),this.shiftUp(t))}shiftDown(e){const t=this.getLeftIndex(e),a=this.getRightIndex(e);this.heap[t]<this.heap[e]&&(this.swap(t,e),this.shiftDown(t)),this.heap[a]<this.heap[e]&&(this.swap(a,e),this.shiftDown(a))}insert(e){this.heap.push(e),this.shiftUp(this.heap.length-1)}pop(){this.heap[0]=this.heap.pop(),this.shiftDown(0)}}const ft=(n,e)=>{const t=new wt;for(const a of n)t.insert(a),t.size()>e&&t.pop();return t.heap},It=(n,e)=>n>e,_t=(n,e)=>n<e,Mt=(n,e,t)=>ft(n,e).includes(t);function vt(n,e){switch(n.compareType){case v.Equal:{const t=Number(n.expectedValue);return a=>a===t}case v.NotEqual:{const t=Number(n.expectedValue);return a=>a!==t}case v.GreaterThan:{const t=Number(n.expectedValue);return a=>a>t}case v.GreaterThanOrEqual:{const t=Number(n.expectedValue);return a=>a>=t}case v.LessThan:{const t=Number(n.expectedValue);return a=>a<t}case v.LessThanOrEqual:{const t=Number(n.expectedValue);return a=>a<=t}case v.Between:{const[t,a]=n.expectedValue,r=Number(t),s=Number(a);return r>s?o=>o>=s&&o<=r:o=>o>=r&&o<=s}case v.NotBetween:{const[t,a]=n.expectedValue,r=Number(t),s=Number(a);return r>s?o=>o<s||o>r:o=>o<r||o>s}case v.Above:{const t=e.average;return a=>It(a,t)}case v.Below:{const t=e.average;return a=>_t(a,t)}case v.TopN:{const t=e.list,a=Number(n.expectedValue);return r=>Mt(t,a,r)}}}const V=n=>{const t=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/\\\*/g,".*").replace(/\\\?/g,".");return new RegExp(`^${t}$`)},Ft=(n,e)=>V(e).test(n),yt=(n,e)=>!V(e).test(n),Dt=(n,e)=>V(`*${e}*`).test(n),Nt=(n,e)=>!V(`*${e}*`).test(n),xt=(n,e)=>V(`${e}*`).test(n),Ot=(n,e)=>V(`*${e}`).test(n);function Ut(n){switch(n.compareType){case U.Equal:return e=>Ft(e,n.expectedValue);case U.NotEqual:return e=>yt(e,n.expectedValue);case U.Contains:return e=>Dt(e,n.expectedValue);case U.NotContains:return e=>Nt(e,n.expectedValue);case U.StartsWith:return e=>xt(e,n.expectedValue);case U.EndsWith:return e=>Ot(e,n.expectedValue);default:return console.error(`Unknown filter operator: ${n.compareType}`),e=>!0}}const Et=new Set([v.Above,v.Below,v.TopN]);b.Today,b.Yesterday,b.Tomorrow,b.ThisWeek,b.LastWeek,b.NextWeek,b.ThisMonth,b.LastMonth,b.NextMonth,b.ThisQuarter,b.LastQuarter,b.NextQuarter,b.NextYear,b.ThisYear,b.LastYear,b.YearToDate;function Te(n){return Et.has(n)}function $t(n,e){if(Te(n.filterInfo.compareType))return t=>!0;switch(n.filterInfo.conditionType){case N.Date:return Tt(n.filterInfo);case N.Number:return vt(n.filterInfo,e);case N.String:return Ut(n.filterInfo);case N.Logic:default:return t=>!0}}function G(n,e,t,a){switch(a){case N.Date:{const r=ce(n,e,t);return r?Lt(r):null}case N.Number:return ce(n,e,t);case N.String:default:return Bt(n,e,t)}}const At=n=>{var t;return((t=n.body)==null?void 0:t.dataStream.replace(/\r\n$/,""))||""};function Bt(n,e,t){const a=n.getCell(e,t);if(!a)return null;const{v:r,t:s,p:o}=a;return o?At(o):typeof r=="string"?s===u.CellValueType.BOOLEAN?r.toUpperCase():r:typeof r=="number"?s===u.CellValueType.BOOLEAN?r?"TRUE":"FALSE":r:typeof r=="boolean"?r?"TRUE":"FALSE":r===void 0?"(空白)":String(r)}function ce(n,e,t){const a=n.getCell(e,t);if(!a)return null;const{v:r,t:s,p:o}=a;return o?null:typeof r=="string"&&s===u.CellValueType.NUMBER?Number(n.getCellRaw(e,t).v):Number(r)}function Lt(n){const e=new Date(Date.UTC(1900,0,1,0,0,0)),t=new Date(Date.UTC(1900,1,28,0,0,0));let a=n-1;return a>(t.getTime()-e.getTime())/(1e3*3600*24)&&(a-=1),a<0&&(a=n),new Date(e.getTime()+a*(1e3*3600*24))}class de{constructor(){C(this,"_tableColumnFilterList");C(this,"_tableSortInfo");C(this,"_filterOutRows");this._tableColumnFilterList=[]}setColumnFilter(e,t){t?this._tableColumnFilterList[e]=t:this._tableColumnFilterList[e]=void 0}setSortState(e,t){this._tableSortInfo={columnIndex:e,sortState:t}}getColumnFilter(e){return this._tableColumnFilterList[e]}getFilterState(e){var a;const t=((a=this._tableSortInfo)==null?void 0:a.columnIndex)===e?this._tableSortInfo.sortState:A.None;return $e(this._tableColumnFilterList[e],t)}getSortState(){var e;return(e=this._tableSortInfo)!=null?e:{}}getFilterStates(e){const t=[],{startColumn:a,endColumn:r}=e;for(let s=a;s<=r;s++)t.push(this.getFilterState(s-a));return t}getFilterOutRows(){return this._filterOutRows}doFilter(e,t){const a=new Set,r=this._tableColumnFilterList;for(let s=0;s<r.length;s++)r[s]&&this.doColumnFilter(e,t,s,a);return this._filterOutRows=a,a}doColumnFilter(e,t,a,r){const s=this._tableColumnFilterList[a];if(s&&e){const{startRow:o,endRow:i,startColumn:c}=t,l=c+a,h=this.getExecuteFunc(e,t,a,s);for(let g=o;g<=i;g++){const d=Ce(s)?s.filterInfo.conditionType:N.String;G(e,g,l,d)===null?r.add(g):h(G(e,g,l,d))||r.add(g)}}}_getNumberCalculatedOptions(e,t,a){const{startRow:r,endRow:s,startColumn:o}=t,i=o+a,c=[];let l=0,h=0;for(let g=r;g<=s;g++){const d=G(e,g,i,N.Number);d!==null&&(c.push(d),l++,h+=d)}return{list:c,average:l>0?h/l:0}}getExecuteFunc(e,t,a,r){if(r.filterType===W.manual){const s=new Set(r.values);return o=>s.has(o)}else if(r.filterType===W.condition){const o=Te(r.filterInfo.compareType)?this._getNumberCalculatedOptions(e,t,a):void 0;return $t(r,o)}else return s=>!0}toJSON(){return{tableColumnFilterList:this._tableColumnFilterList,tableSortInfo:this._tableSortInfo}}fromJSON(e){var t;this._tableColumnFilterList=(t=e.tableColumnFilterList)!=null?t:[],e.tableSortInfo&&(this._tableSortInfo=e.tableSortInfo)}dispose(){this._tableColumnFilterList=[]}}class he{constructor(e,t,a,r,s={}){C(this,"_id");C(this,"_name");C(this,"_tableStyleId");C(this,"_showHeader");C(this,"_showFooter");C(this,"_range");C(this,"_columns",new Map);C(this,"_columnOrder",[]);C(this,"tableMeta");C(this,"_tableFilters");C(this,"_subUnitId");this._id=e,this._range=a,this._name=t,this._tableFilters=new de,this._init(r,s)}_init(e,t){var a;if(this._tableStyleId=t==null?void 0:t.tableStyleId,this._showHeader=(a=t==null?void 0:t.showHeader)!=null?a:!0,this._showFooter=!1,t.columns)t.columns.forEach(r=>{const s=r.id||u.generateRandomId(),o=new B(s,r.displayName);o.fromJSON(r),this._columns.set(s,o),this._columnOrder.push(s)});else{const r=this.getRange(),s=r.startColumn,o=r.endColumn;for(let i=s;i<=o;i++){const c=u.generateRandomId(),l=new B(c,e[i-s]);this._columns.set(c,l),this._columnOrder.push(c)}}t.filters&&t.filters.forEach((s,o)=>{s&&this._tableFilters.setColumnFilter(o,s)})}setTableFilterColumn(e,t){this._tableFilters.setColumnFilter(e,t)}getTableFilterColumn(e){return this._tableFilters.getColumnFilter(e)}getTableFilters(){return this._tableFilters}getTableFilterRange(){const e=this.getRange(),t=this.isShowHeader(),a=this.isShowFooter(),{startRow:r,startColumn:s,endRow:o,endColumn:i}=e,c=t?r+1:r,l=a?o-1:o;return{startRow:c,startColumn:s,endRow:l,endColumn:i}}setColumns(e){this._columns.clear(),this._columnOrder=[],e.forEach(t=>{const a=new B(t.id,t.displayName);a.fromJSON(t),this._columns.set(t.id,a),this._columnOrder.push(t.id)})}getColumnsCount(){return this._columnOrder.length}insertColumn(e,t){const a=t.id;this._columns.set(a,t),this._columnOrder.splice(e,0,a)}removeColumn(e){const 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){const t=this._columnOrder[e];return this.getColumn(t)}getColumnNameByIndex(e){var a;const t=this._columnOrder[e];return((a=this.getColumn(t))==null?void 0:a.getDisplayName())||""}getId(){return this._id}getRangeInfo(){return{...this._range}}getRange(){return{...this._range}}setRange(e){this._range=e}setDisplayName(e){this._name=e}getDisplayName(){return this._name}getSubunitId(){return this._subUnitId}setSubunitId(e){this._subUnitId=e}getTableStyleId(){var e;return(e=this._tableStyleId)!=null?e:L[0].name}setTableStyleId(e){this._tableStyleId=e}isShowHeader(){var e;return(e=this._showHeader)!=null?e:!0}setShowHeader(e){this._showHeader=e}isShowFooter(){var e;return(e=this._showFooter)!=null?e:!1}getTableInfo(){return{id:this._id,subUnitId:this._subUnitId,name:this._name,range:this.getRangeInfo(),meta:this.tableMeta,showHeader:this._showHeader,columns:this._columnOrder.map(e=>this._columns.get(e).toJSON())}}getTableConfig(){return{name:this.getDisplayName(),range:this.getRangeInfo(),options:{showHeader:this._showHeader,showFooter:this._showFooter},tableStyleId:this._tableStyleId}}getFilterStates(e){return this._tableFilters.getFilterStates(e)}toJSON(){const e=[];return this._columns.forEach(t=>{e.push(t.toJSON())}),{id:this._id,name:this._name,range:this.getRangeInfo(),options:{showHeader:this._showHeader,showFooter:this._showFooter,tableStyleId:this._tableStyleId},filters:this._tableFilters.toJSON(),columns:e,meta:this.tableMeta}}fromJSON(e){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,e.columns.forEach(a=>{const r=new B(a.id,a.displayName);r.fromJSON(a),this._columns.set(a.id,r),this._columnOrder.push(a.id)}),this._tableFilters=new de,this._tableFilters.fromJSON(e.filters)}dispose(){this._id="",this._name="",this._tableStyleId="",this._showHeader=!0,this._showFooter=!0,delete this._range,this._columns.clear(),this._columnOrder=[]}}var Wt=Object.getOwnPropertyDescriptor,qt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Wt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},ge=(n,e)=>(t,a)=>e(t,a,n);exports.TableManager=class extends u.Disposable{constructor(t,a){super();C(this,"_tableMap");C(this,"_tableAdd$",new D.Subject);C(this,"tableAdd$",this._tableAdd$.asObservable());C(this,"_tableDelete$",new D.Subject);C(this,"tableDelete$",this._tableDelete$.asObservable());C(this,"_tableNameChanged$",new D.Subject);C(this,"tableNameChanged$",this._tableNameChanged$.asObservable());C(this,"_tableRangeChanged$",new D.Subject);C(this,"tableRangeChanged$",this._tableRangeChanged$.asObservable());C(this,"_tableThemeChanged$",new D.Subject);C(this,"tableThemeChanged$",this._tableThemeChanged$.asObservable());C(this,"_tableFilterChanged$",new D.Subject);C(this,"tableFilterChanged$",this._tableFilterChanged$.asObservable());C(this,"_tableInitStatus",new D.BehaviorSubject(!1));C(this,"tableInitStatus$",this._tableInitStatus.asObservable());this._univerInstanceService=t,this._localeService=a,this._tableMap=new Map}_ensureUnit(t){return this._tableMap.has(t)||this._tableMap.set(t,new Map),this._tableMap.get(t)}getColumnHeader(t,a,r,s){var d;const o=(d=this._univerInstanceService.getUnit(t))==null?void 0:d.getSheetBySheetId(a),{startRow:i,startColumn:c,endColumn:l}=r,h=[],g=s!=null?s:"Column";for(let m=c;m<=l;m++)h.push(Se(o==null?void 0:o.getCell(i,m))||k(m-c+1,g));return h}addTable(t,a,r,s,o,i,c){const l=i!=null?i:u.generateRandomId(),h=o||this.getColumnHeader(t,a,s),g=new he(l,r,s,h,c);return g.setSubunitId(a),this._ensureUnit(t).set(l,g),this._tableAdd$.next({unitId:t,subUnitId:a,range:s,tableName:r,tableId:l}),l}addFilter(t,a,r,s){const o=this.getTable(t,a);if(o){o.getTableFilters().setColumnFilter(r,s);const c=o.getSubunitId();this._tableFilterChanged$.next({unitId:t,subUnitId:c,tableId:a})}}getFilterRanges(t,a){const r=this._tableMap.get(t);if(!r)return[];const s=[];return r.forEach(o=>{o.getSubunitId()===a&&o.isShowHeader()&&s.push(o.getRange())}),s}getSheetFilterRangeWithState(t,a){const r=this._tableMap.get(t);if(!r)return[];const s=[];return r.forEach(o=>{o.getSubunitId()===a&&o.isShowHeader()&&s.push({tableId:o.getId(),range:o.getRange(),states:o.getFilterStates(o.getRange())})}),s}getTable(t,a){const r=this._tableMap.get(t);if(r)return r.get(a)}getUniqueTableName(t,a){const r=this._tableMap.get(t);if(!r)return a;const s=new Set(Array.from(r.values()).map(c=>c.getDisplayName()));let o=a,i=1;for(;s.has(o);)o=`${a}-${i}`,i++;return o}getTableById(t,a){return this.getTable(t,a)}getTableList(t){const a=this._tableMap.get(t);return a?Array.from(a.values()).map(r=>({...r.getTableInfo(),unitId:t})):[]}getTablesBySubunitId(t,a){const r=this._tableMap.get(t);return r?Array.from(r.values()).filter(s=>s.getSubunitId()===a):[]}getTablesInfoBySubunitId(t,a){return this.getTablesBySubunitId(t,a).map(r=>({id:r.getId(),name:r.getDisplayName(),range:r.getRange()}))}deleteTable(t,a){const r=this._tableMap.get(t),s=r==null?void 0:r.get(a);if(s){const o=s.getTableInfo(),i=s.getTableStyleId();r==null||r.delete(a);const{subUnitId:c,range:l,name:h}=o;this._tableDelete$.next({unitId:t,subUnitId:c,tableId:a,range:l,tableName:h,tableStyleId:i})}}operationTableRowCol(t,a,r){const s=this.getTableById(t,a);if(!s)return;const{operationType:o,rowColType:i,index:c,count:l,columnsJson:h}=r,g=s.getRange(),d={...g};if(o===I.Insert){if(i==="row")d.endRow+=l;else if(i==="column"){d.endColumn+=l;for(let m=0;m<l;m++){const p=this._localeService.t("sheets-table.columnPrefix"),R=new B(u.generateRandomId(),k(s.getColumnsCount()+1+m,p));h!=null&&h[m]&&R.fromJSON(h[m]);const w=c+m-g.startColumn;s.insertColumn(w,R)}}}else if(i==="row")d.endRow-=l;else if(i==="column"){d.endColumn-=l;for(let m=l-1;m>=0;m--){const p=c+m-g.startColumn;s.removeColumn(p)}}s.setRange(d),this._tableRangeChanged$.next({unitId:t,subUnitId:s.getSubunitId(),tableId:a,range:d,oldRange:g})}updateTableRange(t,a,r){const s=this.getTableById(t,a);if(!s)return;const o=s.getRange(),i=r.newRange;if(i.startColumn<o.startColumn){const c=o.startColumn-i.startColumn,l=this._localeService.t("sheets-table.columnPrefix");for(let h=0;h<c;h++)s.insertColumn(o.startColumn,new B(u.generateRandomId(),k(s.getColumnsCount()+1,l)))}else if(i.startColumn>o.startColumn){const c=i.startColumn-o.startColumn;for(let l=c-1;l>=0;l--){const h=i.startColumn+l-o.startColumn;s.removeColumn(h)}}if(i.endColumn<o.endColumn){const c=o.endColumn-i.endColumn;for(let l=c-1;l>=0;l--){const h=i.endColumn+l-o.startColumn;s.removeColumn(h)}}else if(i.endColumn>o.endColumn){const c=i.endColumn-o.endColumn;for(let l=0;l<c;l++)s.insertColumn(o.endColumn,new B(u.generateRandomId(),k(s.getColumnsCount()+1,"Column")))}s.setRange(i),this._tableRangeChanged$.next({unitId:t,subUnitId:s.getSubunitId(),tableId:a,range:i,oldRange:o})}setTableByConfig(t,a,r){var m;const s=this._tableMap.get(t),o=s==null?void 0:s.get(a);if(!o)return;const i=o.getSubunitId(),{name:c,updateRange:l,rowColOperation:h,theme:g,options:d}=r;if(c){const p=o.getDisplayName();o.setDisplayName(c),this._tableNameChanged$.next({unitId:t,subUnitId:i,tableId:a,tableName:c,oldTableName:p})}if(h&&this.operationTableRowCol(t,a,h),l&&this.updateTableRange(t,a,l),g){const p=(m=o.getTableStyleId())!=null?m:"default";o.setTableStyleId(g),this._tableThemeChanged$.next({unitId:t,subUnitId:i,tableId:a,theme:g,oldTheme:p})}d&&d.showHeader!==void 0&&o.setShowHeader(d.showHeader)}toJSON(t){const a={},r=this._tableMap.get(t);return r&&r.forEach(s=>{const o=s.getSubunitId();a[o]||(a[o]=[]),a[o].push(s.toJSON())}),a}fromJSON(t,a){const r=this._ensureUnit(t);Object.keys(a).forEach(o=>{const i=S.getSheetCommandTarget(this._univerInstanceService,{unitId:t,subUnitId:o});if(!i)return;const c=i.worksheet;a[o].forEach(h=>{const g=this.getColumnHeader(t,o,h.range),d=new he(h.id,h.name,h.range,g,h.options);if(d.setTableMeta(h.meta),h.columns.length&&d.setColumns(h.columns),h.filters){const m=d.getTableFilters();m.fromJSON(h.filters),m.doFilter(c,d.getTableFilterRange())}d.setSubunitId(o),r.set(h.id,d),this._tableAdd$.next({unitId:t,subUnitId:o,range:h.range,tableName:h.name,tableId:h.id})})}),this._tableInitStatus.next(!0)}deleteUnitId(t){this._tableMap.delete(t)}dispose(){super.dispose(),this._tableMap.forEach(t=>{t.forEach(a=>a.dispose()),t.clear()}),this._tableMap.clear()}};exports.TableManager=qt([ge(0,u.IUniverInstanceService),ge(1,u.Inject(u.LocaleService))],exports.TableManager);var Pt=Object.getOwnPropertyDescriptor,Ht=(n,e,t,a)=>{for(var r=a>1?void 0:a?Pt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},Vt=(n,e)=>(t,a)=>e(t,a,n);exports.SheetTableService=class extends u.Disposable{constructor(e){super(),this._tableManager=e}getTableInfo(e,t){const a=this._tableManager.getTable(e,t);if(a)return{unitId:e,...a.getTableInfo()}}getTableList(e){return this._tableManager.getTableList(e)}addTable(e,t,a,r,s,o,i){return this._tableManager.addTable(e,t,a,r,s,o,i)}deleteTable(e,t,a){this._tableManager.deleteTable(e,a)}getTableMeta(e,t){var a;return(a=this._tableManager.getTable(e,t))==null?void 0:a.getTableMeta()}setTableMeta(e,t,a){var r;(r=this._tableManager.getTable(e,t))==null||r.setTableMeta(a)}getTableColumnMeta(e,t,a){var r,s;return(s=(r=this._tableManager.getTable(e,t))==null?void 0:r.getTableColumnByIndex(a))==null?void 0:s.getMeta()}selTableColumnMeta(e,t,a,r){var s,o;(o=(s=this._tableManager.getTable(e,t))==null?void 0:s.getTableColumnByIndex(a))==null||o.setMeta(r)}addFilter(e,t,a,r){this._tableManager.addFilter(e,t,a,r)}getCellValueWithConditionType(e,t,a,r=N.String){return G(e,t,a,r)}};exports.SheetTableService=Ht([Vt(0,u.Inject(exports.TableManager))],exports.SheetTableService);const P={id:"sheet.mutation.add-table",type:u.CommandType.MUTATION,handler:(n,e)=>{const{tableId:t,unitId:a,subUnitId:r,name:s,range:o,header:i,options:c}=e;return n.get(exports.SheetTableService).addTable(a,r,s,o,i,t,c),!0}},H={id:"sheet.mutation.delete-table",type:u.CommandType.MUTATION,handler:(n,e)=>{const{unitId:t,subUnitId:a,tableId:r}=e;return n.get(exports.SheetTableService).deleteTable(t,a,r),!0}},pe={id:"sheet.command.add-table",type:u.CommandType.COMMAND,handler:(n,e)=>{var R;if(!e)return!1;const t=n.get(u.IUndoRedoService),a=n.get(u.ICommandService),r=n.get(u.LocaleService),s=(R=e.id)!=null?R:u.generateRandomId();let o=e.name;if(!o){const T=n.get(exports.TableManager).getTableList(e.unitId).length;o=`${r.t("sheets-table.tablePrefix")} ${T+1}`}const i=[],c=[],l=n.get(exports.TableManager),{unitId:h,subUnitId:g,range:d}=e,m=l.getColumnHeader(h,g,d,r.t("sheets-table.columnPrefix"));return i.push({id:P.id,params:{...e,tableId:s,name:o,header:m}}),c.push({id:H.id,params:{tableId:s,unitId:e.unitId}}),u.sequenceExecute(i,a)&&t.pushUndoRedo({unitID:e.unitId,undoMutations:c,redoMutations:i}),!0}},we={id:"sheet.command.delete-table",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(u.IUndoRedoService),a=n.get(u.ICommandService),r=n.get(exports.TableManager),s=[],o=[],i=r.getTable(e.unitId,e.tableId),c=i==null?void 0:i.toJSON();if(!c)throw new Error("[TableManager]: Table not found");return s.push({id:H.id,params:{...e}}),o.push({id:P.id,params:{unitId:e.unitId,subUnitId:e.subUnitId,tableId:e.tableId,name:c.name,range:c.range,options:c.options}}),u.sequenceExecute(s,a)&&t.pushUndoRedo({unitID:e.unitId,undoMutations:o,redoMutations:s}),!0}},z={id:"sheet.mutation.set-table-filter",type:u.CommandType.MUTATION,handler:(n,e)=>{const{tableId:t,unitId:a,column:r,tableFilter:s}=e;return n.get(exports.TableManager).addFilter(a,t,r,s),!0}},fe={id:"sheet.command.set-table-filter",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(u.IUndoRedoService),a=n.get(u.ICommandService),r=e.tableId||u.generateRandomId(),s=[],o=[];return s.push({id:z.id,params:{...e,tableId:r}}),o.push({id:z.id,params:{...e,tableId:r,tableFilter:void 0}}),u.sequenceExecute(s,a)&&t.pushUndoRedo({unitID:e.unitId,undoMutations:o,redoMutations:s}),!0}},Ie="SHEET_TABLE_PLUGIN",j="SHEET_TABLE",_e="table-custom";var Jt=Object.getOwnPropertyDescriptor,kt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Jt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},te=(n,e)=>(t,a)=>e(t,a,n);exports.SheetsTableController=class extends u.Disposable{constructor(t,a,r){super();C(this,"_tableRangeRTree",new Map);this._sheetInterceptorService=t,this._tableManager=a,this._resourceManagerService=r,this._initSnapshot(),this.registerTableChangeEvent(),this.registerTableHeaderInterceptor()}getContainerTableWithRange(t,a,r){const s=this._ensureTableRangeRTree(t),i=Array.from(s.bulkSearch([{unitId:t,sheetId:a,range:r}])).find(c=>{const l=this._tableManager.getTable(t,String(c));return l?u.Rectangle.contains(l.getRange(),r):!1});if(i)return this._tableManager.getTable(t,String(i))}_ensureTableRangeRTree(t){return this._tableRangeRTree.has(t)||this._tableRangeRTree.set(t,new u.RTree),this._tableRangeRTree.get(t)}registerTableChangeEvent(){this.disposeWithMe(this._tableManager.tableAdd$.subscribe(t=>{const{range:a,tableId:r,unitId:s,subUnitId:o}=t;this._ensureTableRangeRTree(s).insert({unitId:s,sheetId:o,id:r,range:{...a}})})),this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe(t=>{const{range:a,tableId:r,unitId:s,subUnitId:o,oldRange:i}=t,c=this._ensureTableRangeRTree(s);c.remove({unitId:s,sheetId:o,id:r,range:{...i}}),c.insert({unitId:s,sheetId:o,id:r,range:{...a}})})),this.disposeWithMe(this._tableManager.tableDelete$.subscribe(t=>{const{tableId:a,unitId:r,subUnitId:s,range:o}=t;this._ensureTableRangeRTree(r).remove({unitId:r,sheetId:s,id:a,range:{...o}})}))}registerTableHeaderInterceptor(){this.disposeWithMe(this._sheetInterceptorService.intercept(S.INTERCEPTOR_POINT.CELL_CONTENT,{effect:u.InterceptorEffectEnum.Value,handler:(t,a,r)=>{const{row:s,col:o,unitId:i,subUnitId:c}=a,l=this._ensureTableRangeRTree(i);if((t==null?void 0:t.v)===void 0&&l){const g=Array.from(l.bulkSearch([{unitId:i,sheetId:c,range:{startColumn:o,endColumn:o,startRow:s,endRow:s}}]));if(g.length>0){const d=this._tableManager.getTable(i,g[0]);if(d){const m=d.getRange(),p=o-m.startColumn;if(m.startRow===s){const w=d.getColumnNameByIndex(p);return(!t||t===a.rawData)&&(t={...a.rawData}),t.v=w,r(t)}}}}return r(t)}}))}_toJson(t){return this._tableManager.toJSON(t)}_fromJSON(t,a){return this._tableManager.fromJSON(t,a)}_deleteUnitId(t){this._tableManager.deleteUnitId(t)}_initSnapshot(){this.disposeWithMe(this._resourceManagerService.registerPluginResource({toJson:t=>JSON.stringify(this._toJson(t)),parseJson:t=>{if(!t)return{};try{return JSON.parse(t)}catch{return{}}},businesses:[u.UniverInstanceType.UNIVER_SHEET],pluginName:Ie,onLoad:(t,a)=>{this._fromJSON(t,a)},onUnLoad:t=>{this._deleteUnitId(t)}}))}dispose(){super.dispose(),this._tableRangeRTree.clear()}};exports.SheetsTableController=kt([te(0,u.Inject(S.SheetInterceptorService)),te(1,u.Inject(exports.TableManager)),te(2,u.Inject(u.IResourceManagerService))],exports.SheetsTableController);const f={id:"sheet.mutation.set-sheet-table",type:u.CommandType.MUTATION,handler:(n,e)=>{if(!e)return!1;const{unitId:t,tableId:a,config:r}=e;return n.get(exports.TableManager).setTableByConfig(t,a,r),!0}},Me={id:"sheet.command.add-table-theme",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(exports.TableManager),{unitId:a,tableId:r,themeStyle:s}=e,o=[],i=[],c=t.getTableById(a,r);if(!c)return!1;const l=c.getSubunitId();o.push({id:S.AddRangeThemeMutation.id,params:{unitId:a,subUnitId:l,styleJSON:s.toJson()}}),o.push({id:f.id,params:{unitId:a,subUnitId:l,tableId:r,config:{theme:s.getName()}}}),i.push({id:f.id,params:{unitId:a,subUnitId:l,tableId:r,config:{themeStyle:c.getTableStyleId()}}}),i.push({id:S.RemoveRangeThemeMutation.id,params:{unitId:a,subUnitId:l,styleName:s.getName()}});const h=n.get(u.ICommandService);return u.sequenceExecute(o,h)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:a,undoMutations:i,redoMutations:o}),!0}},ve={id:"sheet.command.remove-table-theme",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const{unitId:t,tableId:a,themeName:r}=e,s=n.get(exports.TableManager),o=n.get(S.SheetRangeThemeModel),i=s.getTableById(t,a);if(!i)return!1;const c=i.getSubunitId(),l=[],h=[],g=o.getRegisteredRangeThemes().filter(T=>T==null?void 0:T.startsWith("table-default"));let m=o.getRegisteredRangeThemes().filter(T=>T==null?void 0:T.startsWith(_e)).find(T=>T!==r);m||(m=g[0]),l.push({id:f.id,params:{unitId:t,subUnitId:c,tableId:a,config:{theme:m}}}),l.push({id:S.RemoveRangeThemeMutation.id,params:{unitId:t,subUnitId:c,styleName:r}});const p=o.getDefaultRangeThemeStyle(r);p&&(h.push({id:S.AddRangeThemeMutation.id,params:{unitId:t,subUnitId:c,styleJSON:p.toJson()}}),h.push({id:f.id,params:{unitId:t,subUnitId:c,tableId:a,config:{theme:r}}}));const R=n.get(u.ICommandService);return u.sequenceExecute(l,R)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:t,redoMutations:l,undoMutations:h}),!0}},Fe={id:"sheet.command.set-table-config",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const{unitId:t,tableId:a,name:r,updateRange:s,rowColOperation:o,theme:i}=e,l=n.get(exports.TableManager).getTableById(t,a);if(!l)return!1;const h={},g={};r&&(h.name=l.getDisplayName(),g.name=r),o&&(h.rowColOperation={operationType:o.operationType===I.Insert?I.Delete:I.Insert,rowColType:o.rowColType,index:o.index,count:o.count},g.rowColOperation=o),s&&(h.updateRange={newRange:l.getRange()},g.updateRange=s),i&&(h.theme=l.getTableStyleId(),g.theme=i);const d={unitId:t,subUnitId:l.getSubunitId(),tableId:a,config:g};return n.get(u.ICommandService).executeCommand(f.id,d),n.get(u.IUndoRedoService).pushUndoRedo({unitID:t,undoMutations:[{id:f.id,params:{unitId:t,subUnitId:l.getSubunitId(),tableId:a,config:h}}],redoMutations:[{id:f.id,params:d}]}),!0}},ye={id:"sheet.command.table-insert-row",type:u.CommandType.COMMAND,handler:n=>{const e=n.get(u.IUniverInstanceService),t=S.getSheetCommandTarget(e);if(!t)return!1;const{workbook:a,worksheet:r,unitId:s,subUnitId:o}=t,c=n.get(S.SheetsSelectionsService).getCurrentSelections();if(!c.length||c.length>1)return!1;n.get(exports.TableManager);const h=c[0].range,d=n.get(exports.SheetsTableController).getContainerTableWithRange(s,o,h);if(!d)return!1;const m=h.endRow-h.startRow+1,R=r.getRowCount()-1,w=r.getCellMatrix().getDataRange().endRow,T=[],_=[];if(R-w<m)T.push({id:S.InsertRowMutation.id,params:{unitId:s,subUnitId:o,range:{...h}}}),T.push({id:f.id,params:{unitId:s,subUnitId:o,tableId:d.getId(),config:{updateRange:{newRange:{...d.getRange(),endRow:d.getRange().endRow+m}}}}}),_.push({id:f.id,params:{unitId:s,subUnitId:o,tableId:d.getId(),config:{updateRange:{newRange:d.getRange()}}}}),_.push({id:S.RemoveRowMutation.id,params:{unitId:s,subUnitId:o,range:{...h}}});else{const M={...d.getRange()};T.push({id:f.id,params:{unitId:s,subUnitId:o,tableId:d.getId(),config:{updateRange:{newRange:{...M,endRow:M.endRow+m}}}}}),_.push({id:f.id,params:{unitId:s,subUnitId:o,tableId:d.getId(),config:{updateRange:{newRange:{...M}}}}});const J=S.getMoveRangeUndoRedoMutations(n,{unitId:s,subUnitId:o,range:{startRow:h.startRow,endRow:w,startColumn:M.startColumn,endColumn:M.endColumn}},{unitId:s,subUnitId:o,range:{startRow:h.startRow+m,endRow:w+m,startColumn:M.startColumn,endColumn:M.endColumn}});J&&(T.push(...J.redos),_.push(...J.undos))}const O=n.get(u.ICommandService);return u.sequenceExecute(T,O)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:s,undoMutations:_,redoMutations:T}),!0}},De={id:"sheet.command.table-insert-col",type:u.CommandType.COMMAND,handler:n=>{const e=n.get(u.IUniverInstanceService),t=S.getSheetCommandTarget(e);if(!t)return!1;const{worksheet:a,unitId:r,subUnitId:s}=t,i=n.get(S.SheetsSelectionsService).getCurrentSelections();if(!i.length||i.length>1)return!1;const l=i[0].range,g=n.get(exports.SheetsTableController).getContainerTableWithRange(r,s,l);if(!g)return!1;const d=l.endColumn-l.startColumn+1,p=a.getColumnCount()-1,R=a.getCellMatrix().getDataRange().endColumn,w=[],T=[];if(p-R<d)w.push({id:S.InsertColMutation.id,params:{unitId:r,subUnitId:s,range:{...l}}}),w.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:g.getId(),config:{rowColOperation:{operationType:I.Insert,rowColType:y.Col,index:l.startColumn,count:d}}}}),T.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:g.getId(),config:{rowColOperation:{operationType:I.Delete,rowColType:y.Col,index:l.startColumn,count:d}}}}),T.push({id:S.RemoveColMutation.id,params:{unitId:r,subUnitId:s,range:{...l}}});else{const F=g.getRange();w.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:g.getId(),config:{rowColOperation:{operationType:I.Insert,rowColType:y.Col,index:l.startColumn,count:d}}}}),T.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:g.getId(),config:{rowColOperation:{operationType:I.Delete,rowColType:y.Col,index:l.startColumn,count:d}}}});const M=S.getMoveRangeUndoRedoMutations(n,{unitId:r,subUnitId:s,range:{startRow:F.startRow,endRow:F.endRow,startColumn:l.startColumn,endColumn:R}},{unitId:r,subUnitId:s,range:{startRow:F.startRow,endRow:F.endRow,startColumn:l.startColumn+d,endColumn:R+d}});M&&(w.push(...M.redos),T.push(...M.undos))}const _=n.get(u.ICommandService);return u.sequenceExecute(w,_)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:r,undoMutations:T,redoMutations:w}),!0}},Ne={id:"sheet.command.table-remove-row",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(u.IUniverInstanceService),a=S.getSheetCommandTarget(t);if(!a)return!1;const{unitId:r,subUnitId:s}=a,i=n.get(S.SheetsSelectionsService).getCurrentSelections();if(!i.length||i.length>1)return!1;const l=i[0].range,g=n.get(exports.SheetsTableController).getContainerTableWithRange(r,s,l);if(!g)return!1;const d=l.endRow-l.startRow+1,m=[],p=[],R=g.getRange();m.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:g.getId(),config:{updateRange:{newRange:{...R,endRow:R.endRow-d}}}}}),p.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:g.getId(),config:{updateRange:{newRange:{...R}}}}});const T=a.worksheet.getCellMatrix().getDataRange().endRow,_=S.getMoveRangeUndoRedoMutations(n,{unitId:r,subUnitId:s,range:{startRow:l.endRow+1,endRow:T,startColumn:R.startColumn,endColumn:R.endColumn}},{unitId:r,subUnitId:s,range:{startRow:l.startRow,endRow:T-d,startColumn:R.startColumn,endColumn:R.endColumn}});_&&(m.push(..._.redos),p.push(..._.undos));const O=n.get(u.ICommandService);return u.sequenceExecute(m,O)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:r,undoMutations:p,redoMutations:m}),!0}},xe={id:"sheet.command.table-remove-col",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(u.IUniverInstanceService),a=S.getSheetCommandTarget(t);if(!a)return!1;const{workbook:r,unitId:s,subUnitId:o}=a;n.get(exports.TableManager);const c=n.get(S.SheetsSelectionsService).getCurrentSelections();if(!c.length||c.length>1)return!1;const h=c[0].range,d=n.get(exports.SheetsTableController).getContainerTableWithRange(s,o,h);if(!d)return!1;const m=h.endColumn-h.startColumn+1,p=[],R=[],w=d.getRange();p.push({id:f.id,params:{unitId:s,subUnitId:o,tableId:d.getId(),config:{rowColOperation:{operationType:I.Delete,rowColType:y.Col,index:h.startColumn,count:m}}}});const T=[],_=h.startColumn-w.startColumn;for(let Q=0;Q<m;Q++){const ie=d.getTableInfo().columns[_+Q];ie&&T.push(ie)}R.push({id:f.id,params:{unitId:s,subUnitId:o,tableId:d.getId(),config:{rowColOperation:{operationType:I.Insert,rowColType:y.Col,index:h.startColumn,count:m,columnsJson:T}}}});const F=a.worksheet.getCellMatrix().getDataRange().endColumn,M=S.getMoveRangeUndoRedoMutations(n,{unitId:s,subUnitId:o,range:{startRow:w.startRow,endRow:w.endRow,startColumn:h.endColumn+1,endColumn:F}},{unitId:s,subUnitId:o,range:{startRow:w.startRow,endRow:w.endRow,startColumn:h.startColumn,endColumn:F-m}});M&&(p.push(...M.redos),R.push(...M.undos));const J=n.get(u.ICommandService);return u.sequenceExecute(p,J)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:s,undoMutations:R,redoMutations:p}),!0}},Qt="sheets-table.config",me={};var jt=Object.getOwnPropertyDescriptor,Yt=(n,e,t,a)=>{for(var r=a>1?void 0:a?jt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},be=(n,e)=>(t,a)=>e(t,a,n);let K=class extends u.Disposable{constructor(n,e){super(),this._tableManager=n,this._exclusiveRangeService=e,this._initRangeListener()}_initRangeListener(){this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe(n=>{const{range:e,tableId:t,unitId:a,subUnitId:r}=n;this._exclusiveRangeService.clearExclusiveRangesByGroupId(a,r,j,t),this._exclusiveRangeService.addExclusiveRange(a,r,j,[{range:{...e},groupId:t}])})),this.disposeWithMe(this._tableManager.tableAdd$.subscribe(n=>{const{tableId:e,unitId:t,subUnitId:a,range:r}=n;this._exclusiveRangeService.addExclusiveRange(t,a,j,[{range:{...r},groupId:e}])})),this.disposeWithMe(this._tableManager.tableDelete$.subscribe(n=>{const{tableId:e,unitId:t,subUnitId:a}=n;this._exclusiveRangeService.clearExclusiveRangesByGroupId(t,a,j,e)}))}};K=Yt([be(0,u.Inject(exports.TableManager)),be(1,u.Inject(S.IExclusiveRangeService))],K);var Gt=Object.getOwnPropertyDescriptor,zt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Gt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},$=(n,e)=>(t,a)=>e(t,a,n);let X=class extends u.Disposable{constructor(n,e,t,a,r,s,o){super(),this._commandService=n,this._refRangeService=e,this._univerInstanceService=t,this._injector=a,this._sheetInterceptorService=r,this._tableManager=s,this._localeService=o,this._initCommandInterceptor(),this._initCommandListener()}_initCommandInterceptor(){const n=this;this._sheetInterceptorService.interceptCommand({getMutations(e){const t={redos:[],undos:[]},{id:a,params:r}=e;switch(a){case S.InsertRowCommand.id:return n._generateTableMutationWithInsertRow(r);case S.InsertColCommand.id:return n._generateTableMutationWithInsertCol(r);case S.RemoveRowCommand.id:return n._generateTableMutationWithRemoveRow(r);case S.RemoveColCommand.id:return n._generateTableMutationWithRemoveCol(r)}return t}})}_generateTableMutationWithInsertRow(n){const e=[],t=[],a=S.getSheetCommandTarget(this._univerInstanceService);if(!a)return{undos:e,redos:t};const{unitId:r,subUnitId:s}=a,o=this._tableManager.getTablesBySubunitId(r,s);if(!o.length)return{undos:e,redos:t};const{range:i}=n;return o.forEach(c=>{const l=c.getRange();if(i.startRow>l.startRow&&i.startRow<=l.endRow){const h=i.endRow-i.startRow+1;t.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:c.getId(),config:{updateRange:{newRange:{...l,endRow:l.endRow+h}}}}}),e.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:c.getId(),config:{updateRange:{newRange:{...l}}}}})}}),{undos:e,redos:t}}_generateTableMutationWithInsertCol(n){const e=[],t=[],a=S.getSheetCommandTarget(this._univerInstanceService);if(!a)return{undos:e,redos:t};const{unitId:r,subUnitId:s}=a,o=this._tableManager.getTablesBySubunitId(r,s);if(!o.length)return{undos:e,redos:t};const{range:i}=n;return o.forEach(c=>{const l=c.getRange();if(i.startColumn>l.startColumn&&i.startColumn<=l.endColumn){const h=i.endColumn-i.startColumn+1;t.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:c.getId(),config:{rowColOperation:{operationType:I.Insert,rowColType:y.Col,index:i.startColumn,count:h}}}}),e.push({id:f.id,params:{unitId:r,subUnitId:s,tableId:c.getId(),config:{rowColOperation:{operationType:I.Delete,rowColType:y.Col,index:i.startColumn,count:h}}}})}}),{undos:e,redos:t}}_generateTableMutationWithRemoveRow(n){const e=[],t=[],a=[],r=[],s=S.getSheetCommandTarget(this._univerInstanceService);if(!s)return{undos:e,redos:t,preRedos:a,preUndos:r};const{unitId:o,subUnitId:i}=s,c=this._tableManager.getTablesBySubunitId(o,i);if(!c.length)return{undos:e,redos:t,preRedos:a,preUndos:r};const{range:l}=n,h=l.endRow-l.startRow+1;return c.forEach(g=>{const d=g.getRange();if(u.Rectangle.intersects(d,l))if(l.startRow<=d.startRow&&l.endRow>=d.startRow){a.push({id:H.id,params:{unitId:o,subUnitId:i,tableId:g.getId()}});const m=g.toJSON();e.push({id:P.id,params:{unitId:o,subUnitId:i,tableId:m.id,name:m.name,range:m.range,options:m.options}})}else l.startRow>d.startRow&&l.startRow<=d.endRow?(t.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{updateRange:{newRange:{...d,endRow:d.endRow-h}}}}}),e.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{updateRange:{newRange:{...d}}}}})):l.startRow<d.endRow&&l.endRow>=d.endRow&&(t.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{updateRange:{newRange:{...d,endRow:l.startRow-1}}}}}),e.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{updateRange:{newRange:{...d}}}}}))}),{undos:e,redos:t,preRedos:a,preUndos:r}}_generateTableMutationWithRemoveCol(n){const e=[],t=[],a=[],r=[],s=S.getSheetCommandTarget(this._univerInstanceService);if(!s)return{undos:e,redos:t,preRedos:a,preUndos:r};const{unitId:o,subUnitId:i}=s,c=this._tableManager.getTablesBySubunitId(o,i);if(!c.length)return{undos:e,redos:t,preRedos:a,preUndos:r};const{range:l}=n,h=l.endColumn-l.startColumn+1;return c.forEach(g=>{const d=g.getRange();if(u.Rectangle.intersects(d,l)){if(l.startColumn<=d.startColumn&&l.endColumn>=d.endColumn){a.push({id:H.id,params:{unitId:o,subUnitId:i,tableId:g.getId()}});const m=g.toJSON(),{startRow:p,startColumn:R,endColumn:w}=m.range,T=this._univerInstanceService.getUnit(o),_=T==null?void 0:T.getSheetBySheetId(i);if(!_)return{undos:e,redos:t,preRedos:a,preUndos:r};const O=[];for(let F=R;F<=w;F++)O.push(Se(_==null?void 0:_.getCell(p,F))||k(F-R+1,this._localeService.t("sheets-table.columnPrefix")));e.push({id:P.id,params:{unitId:o,subUnitId:i,tableId:m.id,name:m.name,header:O,range:m.range,options:m.options}})}else if(l.startColumn<=d.startColumn&&l.endColumn>=d.startColumn){const m=l.endColumn-d.startColumn+1;t.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{rowColOperation:{operationType:I.Delete,rowColType:y.Col,index:d.startColumn,count:m}}}});const p=[];for(let R=0;R<m;R++){const w=g.getTableColumnByIndex(R);w&&p.push(w.toJSON())}e.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{rowColOperation:{operationType:I.Insert,rowColType:y.Col,index:d.startColumn,count:m,columnsJson:p}}}})}else if(l.startColumn>d.startColumn&&l.endColumn>d.endColumn){const m=d.endColumn-l.startColumn+1;t.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{rowColOperation:{operationType:I.Delete,rowColType:y.Col,index:l.startColumn,count:m}}}});const p=[],R=l.startColumn-d.startColumn;for(let w=0;w<m;w++){const T=g.getTableColumnByIndex(w+R);T&&p.push(T.toJSON())}e.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{rowColOperation:{operationType:I.Insert,rowColType:y.Col,index:l.startColumn,count:h,columnsJson:p}}}})}else if(l.startColumn>d.startColumn&&l.endColumn<=d.endColumn){t.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{rowColOperation:{operationType:I.Delete,rowColType:y.Col,index:l.startColumn,count:h}}}});const m=[],p=l.startColumn-d.startColumn;for(let R=0;R<h;R++){const w=g.getTableColumnByIndex(R+p);w&&m.push(w.toJSON())}e.push({id:f.id,params:{unitId:o,subUnitId:i,tableId:g.getId(),config:{rowColOperation:{operationType:I.Insert,rowColType:y.Col,index:l.startColumn,count:h,columnsJson:m}}}})}}}),{undos:e,redos:t,preRedos:a,preUndos:r}}_initCommandListener(){this._commandService.onCommandExecuted(n=>{if(n.id===S.InsertRowMutation.id){const e=n.params,{unitId:t,subUnitId:a,range:r}=e,s=r.endRow-r.startRow+1;this._tableManager.getTablesBySubunitId(t,a).forEach(i=>{const c=i.getRange();r.startRow<=c.startRow&&this._tableManager.updateTableRange(t,i.getId(),{newRange:{...c,startRow:c.startRow+s,endRow:c.endRow+s}})})}else if(n.id===S.InsertColMutation.id){const e=n.params,{unitId:t,subUnitId:a,range:r}=e,s=r.endColumn-r.startColumn+1;this._tableManager.getTablesBySubunitId(t,a).forEach(i=>{const c=i.getRange();r.startColumn<=c.startColumn&&this._tableManager.updateTableRange(t,i.getId(),{newRange:{...c,startColumn:c.startColumn+s,endColumn:c.endColumn+s}})})}else if(n.id===S.RemoveRowMutation.id){const e=n.params,{unitId:t,subUnitId:a,range:r}=e,s=r.endRow-r.startRow+1;this._tableManager.getTablesBySubunitId(t,a).forEach(i=>{const c=i.getRange();r.startRow<c.startRow&&this._tableManager.updateTableRange(t,i.getId(),{newRange:{...c,startRow:c.startRow-s,endRow:c.endRow-s}})})}else if(n.id===S.RemoveColMutation.id){const e=n.params,{unitId:t,subUnitId:a,range:r}=e,s=r.endColumn-r.startColumn+1;this._tableManager.getTablesBySubunitId(t,a).forEach(i=>{const c=i.getRange();r.startColumn<c.startColumn&&this._tableManager.updateTableRange(t,i.getId(),{newRange:{...c,startColumn:c.startColumn-s,endColumn:c.endColumn-s}})})}})}};X=zt([$(0,u.Inject(u.ICommandService)),$(1,u.Inject(S.RefRangeService)),$(2,u.Inject(u.IUniverInstanceService)),$(3,u.Inject(u.Injector)),$(4,u.Inject(S.SheetInterceptorService)),$(5,u.Inject(exports.TableManager)),$(6,u.Inject(u.LocaleService))],X);var Kt=Object.getOwnPropertyDescriptor,Xt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Kt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},ne=(n,e)=>(t,a)=>e(t,a,n);let Z=class extends u.Disposable{constructor(n,e,t){super(),this._tableManager=n,this._sheetRangeThemeService=e,this._sheetRangeThemeModel=t,this.registerTableChangeEvent(),this._initDefaultTableTheme()}registerTableChangeEvent(){this.disposeWithMe(this._tableManager.tableAdd$.subscribe(n=>{const{range:e,tableId:t,unitId:a,subUnitId:r}=n,o=this._tableManager.getTable(a,t).getTableStyleId()||L[0].name;this._sheetRangeThemeService.registerRangeThemeStyle(o,{unitId:a,subUnitId:r,range:{...e}})})),this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe(n=>{const{range:e,oldRange:t,tableId:a,unitId:r,subUnitId:s}=n,i=this._tableManager.getTable(r,a).getTableStyleId()||L[0].name;this._sheetRangeThemeService.removeRangeThemeRule(i,{unitId:r,subUnitId:s,range:{...t}}),this._sheetRangeThemeService.registerRangeThemeStyle(i,{unitId:r,subUnitId:s,range:{...e}})})),this.disposeWithMe(this._tableManager.tableThemeChanged$.subscribe(n=>{const{theme:e,oldTheme:t,tableId:a,unitId:r,subUnitId:s}=n,i=this._tableManager.getTable(r,a).getRange();this._sheetRangeThemeService.removeRangeThemeRule(t,{unitId:r,subUnitId:s,range:{...i}}),this._sheetRangeThemeService.registerRangeThemeStyle(e,{unitId:r,subUnitId:s,range:{...i}})})),this.disposeWithMe(this._tableManager.tableDelete$.subscribe(n=>{const{range:e,unitId:t,subUnitId:a,tableStyleId:r=L[0].name}=n;this._sheetRangeThemeService.removeRangeThemeRule(r,{unitId:t,subUnitId:a,range:{...e}})}))}_initDefaultTableTheme(){for(let n=0;n<L.length;n++){const{name:e,style:t}=L[n],a=new S.RangeThemeStyle(e,t);this._sheetRangeThemeModel.registerDefaultRangeTheme(a)}}dispose(){super.dispose()}};Z=Xt([ne(0,u.Inject(exports.TableManager)),ne(1,u.Inject(S.SheetRangeThemeService)),ne(2,u.Inject(S.SheetRangeThemeModel))],Z);var Zt=Object.getOwnPropertyDescriptor,en=(n,e,t,a)=>{for(var r=a>1?void 0:a?Zt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},ae=(n,e)=>(t,a)=>e(t,a,n);let ee=class extends u.Disposable{constructor(e,t,a){super();C(this,"_tableFilteredOutRows$",new D.BehaviorSubject(new Set));C(this,"tableFilteredOutRows$",this._tableFilteredOutRows$.asObservable());C(this,"_subscription",null);this._tableManager=e,this._sheetInterceptorService=t,this._univerInstanceService=a,this.registerFilterChangeEvent(),this.initTableHiddenRowIntercept(),this._initFilteredOutRows()}get tableFilteredOutRows(){return this._tableFilteredOutRows$.value}set tableFilteredOutRows(e){this._tableFilteredOutRows$.next(e)}initTableHiddenRowIntercept(){this.disposeWithMe(this._sheetInterceptorService.intercept(S.INTERCEPTOR_POINT.ROW_FILTERED,{priority:100,handler:(e,t,a)=>{if(e)return!0;const r=this.tableFilteredOutRows.has(t.row);return r?!0:a(r)}}))}_initFilteredOutRows(){this._tableManager.tableInitStatus$.pipe(D.filter(e=>e),D.switchMap(()=>this._univerInstanceService.getCurrentTypeOfUnit$(u.UniverInstanceType.UNIVER_SHEET)),D.filter(e=>e!=null),D.switchMap(e=>e.activeSheet$),D.filter(e=>e!=null)).subscribe(()=>{const e=S.getSheetCommandTarget(this._univerInstanceService);if(!e)return;const{unitId:t,subUnitId:a}=e;this.tableFilteredOutRows.clear(),this._tableManager.getTablesBySubunitId(t,a).forEach(s=>{const o=s.getTableFilters().getFilterOutRows();if(o)for(const i of o)this.tableFilteredOutRows.add(i)})})}registerFilterChangeEvent(){this.disposeWithMe(this._tableManager.tableFilterChanged$.subscribe(e=>{var l;const{unitId:t,subUnitId:a,tableId:r}=e,s=(l=this._univerInstanceService.getUnit(t))==null?void 0:l.getSheetBySheetId(a),o=this._tableManager.getTable(t,r);if(!s||!o)return;this.tableFilteredOutRows.clear(),o.getTableFilters().doFilter(s,o.getTableFilterRange()),this._tableManager.getTablesBySubunitId(t,a).forEach(h=>{const g=h.getTableFilters().getFilterOutRows();if(g)for(const d of g)this.tableFilteredOutRows.add(d)})}))}dispose(){var e;super.dispose(),(e=this._subscription)==null||e.unsubscribe()}};ee=en([ae(0,u.Inject(exports.TableManager)),ae(1,u.Inject(S.SheetInterceptorService)),ae(2,u.Inject(u.IUniverInstanceService))],ee);var tn=Object.getOwnPropertyDescriptor,nn=(n,e,t,a)=>{for(var r=a>1?void 0:a?tn(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},re=(n,e)=>(t,a)=>e(t,a,n),Y;exports.UniverSheetsTablePlugin=(Y=class extends u.Plugin{constructor(e=me,t,a,r){super(),this._config=e,this._injector=t,this._configService=a,this._commandService=r;const{...s}=u.merge({},me,this._config);this._configService.setConfig(Qt,s),this._initRegisterCommand()}onStarting(){u.registerDependencies(this._injector,[[exports.TableManager],[Z],[exports.SheetsTableController],[exports.SheetTableService],[ee],[K],[X]]),u.touchDependencies(this._injector,[[K],[X],[Z],[exports.SheetsTableController],[exports.SheetTableService],[ee]])}onReady(){u.touchDependencies(this._injector,[[exports.TableManager]])}_initRegisterCommand(){[pe,P,we,H,z,fe,Fe,f,Me,ve,ye,De,Ne,xe].forEach(e=>this._commandService.registerCommand(e))}},C(Y,"pluginName",Ie),C(Y,"type",u.UniverInstanceType.UNIVER_SHEET),Y);exports.UniverSheetsTablePlugin=nn([re(1,u.Inject(u.Injector)),re(2,u.IConfigService),re(3,u.Inject(u.ICommandService))],exports.UniverSheetsTablePlugin);exports.AddSheetTableCommand=pe;exports.AddSheetTableMutation=P;exports.AddTableThemeCommand=Me;exports.DeleteSheetTableCommand=we;exports.DeleteSheetTableMutation=H;exports.RemoveTableThemeCommand=ve;exports.SHEET_TABLE_CUSTOM_THEME_PREFIX=_e;exports.SetSheetTableCommand=Fe;exports.SetSheetTableFilterCommand=fe;exports.SetSheetTableFilterMutation=z;exports.SetSheetTableMutation=f;exports.SheetTableInsertColCommand=De;exports.SheetTableInsertRowCommand=ye;exports.SheetTableRemoveColCommand=xe;exports.SheetTableRemoveRowCommand=Ne;exports.SheetsTableButtonStateEnum=E;exports.SheetsTableSortStateEnum=A;exports.TableColumnDataTypeEnum=se;exports.TableColumnFilterTypeEnum=W;exports.TableConditionTypeEnum=N;exports.TableDateCompareTypeEnum=b;exports.TableNumberCompareTypeEnum=v;exports.TableStringCompareTypeEnum=U;exports.customEmptyThemeWithBorderStyle=Be;exports.isConditionFilter=Ce;exports.isManualFilter=Ae;exports.processStyleWithBorderStyle=Le;
package/lib/es/index.js CHANGED
@@ -209,7 +209,7 @@ const ft = (t) => t.getMonth() <= 2, Ct = (t) => {
209
209
  }, j = (t) => {
210
210
  const e = t.getDay(), n = t.getDate() - e + (e === 0 ? -6 : 1), r = new Date(t);
211
211
  return r.setDate(n), r;
212
- }, Ge = 10080 * 60 * 1e3, Wt = (t, e = /* @__PURE__ */ new Date()) => {
212
+ }, Ge = 7 * 24 * 60 * 60 * 1e3, Wt = (t, e = /* @__PURE__ */ new Date()) => {
213
213
  const n = j(t), r = j(e);
214
214
  return n.toDateString() === r.toDateString();
215
215
  }, Et = (t, e = /* @__PURE__ */ new Date()) => {
package/lib/index.js CHANGED
@@ -209,7 +209,7 @@ const ft = (t) => t.getMonth() <= 2, Ct = (t) => {
209
209
  }, j = (t) => {
210
210
  const e = t.getDay(), n = t.getDate() - e + (e === 0 ? -6 : 1), r = new Date(t);
211
211
  return r.setDate(n), r;
212
- }, Ge = 10080 * 60 * 1e3, Wt = (t, e = /* @__PURE__ */ new Date()) => {
212
+ }, Ge = 7 * 24 * 60 * 60 * 1e3, Wt = (t, e = /* @__PURE__ */ new Date()) => {
213
213
  const n = j(t), r = j(e);
214
214
  return n.toDateString() === r.toDateString();
215
215
  }, Et = (t, e = /* @__PURE__ */ new Date()) => {
package/lib/umd/index.js CHANGED
@@ -1 +1 @@
1
- (function(h,u){typeof exports=="object"&&typeof module<"u"?u(exports,require("@univerjs/core"),require("@univerjs/sheets"),require("rxjs")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/sheets","rxjs"],u):(h=typeof globalThis<"u"?globalThis:h||self,u(h.UniverSheetsTable={},h.UniverCore,h.UniverSheets,h.rxjs))})(this,function(h,u,C,N){"use strict";var tn=Object.defineProperty;var nn=(h,u,C)=>u in h?tn(h,u,{enumerable:!0,configurable:!0,writable:!0,value:C}):h[u]=C;var R=(h,u,C)=>nn(h,typeof u!="symbol"?u+"":u,C);var ee;var _=(n=>(n.Insert="insert",n.Delete="delete",n))(_||{}),y=(n=>(n.Row="row",n.Col="column",n))(y||{}),ne=(n=>(n.None="none",n.String="string",n.Number="number",n.Date="date",n.Bool="bool",n.Checkbox="checkbox",n.List="list",n))(ne||{}),W=(n=>(n.manual="manual",n.condition="condition",n))(W||{}),O=(n=>(n.Date="date",n.Number="number",n.String="string",n.Logic="logic",n))(O||{}),F=(n=>(n.Equal="equal",n.NotEqual="notEqual",n.GreaterThan="greaterThan",n.GreaterThanOrEqual="greaterThanOrEqual",n.LessThan="lessThan",n.LessThanOrEqual="lessThanOrEqual",n.Between="between",n.NotBetween="notBetween",n.Above="above",n.Below="below",n.TopN="topN",n))(F||{}),x=(n=>(n.Equal="equal",n.NotEqual="notEqual",n.Contains="contains",n.NotContains="notContains",n.StartsWith="startsWith",n.EndsWith="endsWith",n))(x||{}),S=(n=>(n.Equal="equal",n.NotEqual="notEqual",n.After="after",n.AfterOrEqual="afterOrEqual",n.Before="before",n.BeforeOrEqual="beforeOrEqual",n.Between="between",n.NotBetween="notBetween",n.Today="today",n.Yesterday="yesterday",n.Tomorrow="tomorrow",n.ThisWeek="thisWeek",n.LastWeek="lastWeek",n.NextWeek="nextWeek",n.ThisMonth="thisMonth",n.LastMonth="lastMonth",n.NextMonth="nextMonth",n.ThisQuarter="thisQuarter",n.LastQuarter="lastQuarter",n.NextQuarter="nextQuarter",n.ThisYear="thisYear",n.LastYear="lastYear",n.NextYear="nextYear",n.YearToDate="yearToDate",n.Quarter="quarter",n.Month="month",n.M1="m1",n.M2="m2",n.M3="m3",n.M4="m4",n.M5="m5",n.M6="m6",n.M7="m7",n.M8="m8",n.M9="m9",n.M10="m10",n.M11="m11",n.M12="m12",n.Q1="q1",n.Q2="q2",n.Q3="q3",n.Q4="q4",n))(S||{}),E=(n=>(n[n.FilteredSortNone=1]="FilteredSortNone",n[n.FilteredSortAsc=2]="FilteredSortAsc",n[n.FilteredSortDesc=3]="FilteredSortDesc",n[n.FilterNoneSortNone=4]="FilterNoneSortNone",n[n.FilterNoneSortAsc=5]="FilterNoneSortAsc",n[n.FilterNoneSortDesc=6]="FilterNoneSortDesc",n))(E||{}),A=(n=>(n.Asc="asc",n.Desc="desc",n.None="none",n))(A||{});function k(n,e){return`${e} ${n}`}const le="TRUE",ue="FALSE",xe=n=>{var t;return((t=n.body)==null?void 0:t.dataStream.replace(/\r\n$/,""))||""};function de(n){if(n){const{v:e,t,p:a}=n;return a?xe(a):(t===u.CellValueType.FORCE_STRING||t===u.CellValueType.STRING)&&e!==void 0&&e!==null?String(e):t===u.CellValueType.BOOLEAN?e?le:ue:t===u.CellValueType.NUMBER?String(e):typeof e==="boolean"?e?le:ue:e==null?"":String(e)}return""}function Ee(n,e){if(n!==void 0)switch(e){case A.Asc:return E.FilteredSortAsc;case A.Desc:return E.FilteredSortDesc;default:return E.FilteredSortNone}else switch(e){case A.Asc:return E.FilterNoneSortAsc;case A.Desc:return E.FilterNoneSortDesc;default:return E.FilterNoneSortNone}}function ce(n){return n?n.filterType===W.condition:!1}function $e(n){return n?n.filterType===W.manual:!1}const U={s:u.BorderStyleTypes.THIN,cl:{rgb:"rgb(95 101 116)"}},Ae={headerRowStyle:{bd:{t:U}},headerColumnStyle:{bd:{l:U}},lastColumnStyle:{bd:{r:U}},lastRowStyle:{bd:{b:U}}},Be=(n,e)=>{if(n==="headerRowStyle"){if(!e.bd)return{...e,bd:{t:U}}}else if(n==="lastRowStyle"){if(!e.bd)return{...e,bd:{b:U}}}else if(n==="lastColumnStyle"){if(!e.bd)return{...e,bd:{r:U}}}else if(n==="headerColumnStyle"&&!e.bd)return{...e,bd:{l:U}};return e},q=[[["#6280F9","#FFFFFF","#BAC6F8","#D2DAFA"],["#fff"]],[["#16BDCA","#FFFFFF","#EDFAFA","#AFECEF"],["#000"]],[["#31C48D","#FFFFFF","#F3FAF7","#BCF0DA"],["#fff"]],[["#AC94FA","#FFFFFF","#F6F5FF","#EDEBFE"],["#fff"]],[["#F17EBB","#FFFFFF","#FDF2F8","#FCE8F3"],["#fff"]],[["#F98080","#FFFFFF","#FDF2F2","#FDE8E8"],["#fff"]]].map((n,e)=>{const[t,a]=n,[r,s,o,i]=t,[d]=a;return{name:`table-default-${e}`,style:{headerRowStyle:{bg:{rgb:r},cl:{rgb:d},bd:{t:U}},headerColumnStyle:{bd:{l:U}},firstRowStyle:{bg:{rgb:s}},secondRowStyle:{bg:{rgb:o}},lastRowStyle:{bg:{rgb:i},bd:{b:U}},lastColumnStyle:{bd:{r:U}}}}});class B{constructor(e,t){R(this,"dataType");R(this,"id");R(this,"displayName");R(this,"formula");R(this,"meta");R(this,"style");this.id=e,this.displayName=t,this.dataType=ne.String,this.formula="",this.meta={},this.style={}}getMeta(){return this.meta}setMeta(e){this.meta=e}getDisplayName(){return this.displayName}toJSON(){return{id:this.id,displayName:this.displayName,dataType:this.dataType,formula:this.formula,meta:this.meta,style:this.style}}fromJSON(e){this.id=e.id,this.displayName=e.displayName,this.dataType=e.dataType,this.formula=e.formula,this.meta=e.meta,this.style=e.style}}const Le=n=>n.getMonth()<=2,We=n=>{const e=n.getMonth();return e>2&&e<=5},qe=n=>{const e=n.getMonth();return e>5&&e<=8},Pe=n=>{const e=n.getMonth();return e>8&&e<=11},He=n=>n.getMonth()===0,Ve=n=>n.getMonth()===1,Je=n=>n.getMonth()===2,ke=n=>n.getMonth()===3,Qe=n=>n.getMonth()===4,Ye=n=>n.getMonth()===5,je=n=>n.getMonth()===6,Ge=n=>n.getMonth()===7,ze=n=>n.getMonth()===8,Ke=n=>n.getMonth()===9,Xe=n=>n.getMonth()===10,Ze=n=>n.getMonth()===11,et=(n,e=new Date)=>n.toDateString()===e.toDateString(),tt=(n,e=new Date)=>{const t=new Date(e);return t.setDate(t.getDate()+1),n.toDateString()===t.toDateString()},nt=(n,e=new Date)=>{const t=new Date(e);return t.setDate(t.getDate()-1),n.toDateString()===t.toDateString()},P=n=>{const e=n.getDay(),t=n.getDate()-e+(e===0?-6:1),a=new Date(n);return a.setDate(t),a},ge=10080*60*1e3,at=(n,e=new Date)=>{const t=P(n),a=P(e);return t.toDateString()===a.toDateString()},rt=(n,e=new Date)=>{const t=P(n),a=new Date(P(e).getTime()+ge);return t.toDateString()===a.toDateString()},st=(n,e=new Date)=>{const t=P(n),a=new Date(P(e).getTime()-ge);return t.toDateString()===a.toDateString()},ot=(n,e=new Date)=>n.getFullYear()===e.getFullYear()&&n.getMonth()===e.getMonth(),it=n=>{const e=new Date(n);return e.setHours(0,0,0,0),e.setDate(1),e},lt=(n,e=new Date)=>{const t=new Date(e);t.setHours(0,0,0,0),t.setMonth(t.getMonth()+1,1);const a=new Date(t);a.setMonth(a.getMonth()+1,0);const r=n.getTime();return r>=t.getTime()&&r<a.getTime()},ut=(n,e=new Date)=>{const t=it(e),a=new Date(t);a.setMonth(a.getMonth()+1,0);const r=n.getTime();return r>=t.getTime()&&r<a.getTime()},ae=n=>{const e=new Date(n);e.setHours(0,0,0,0),e.setDate(1);const t=e.getMonth();return e.setMonth(t-t%3),e},dt=(n,e=new Date)=>{const t=ae(e),a=new Date(t);a.setMonth(a.getMonth()+3);const r=n.getTime();return r>=t.getTime()&&r<a.getTime()},ct=(n,e=new Date)=>{const t=ae(e),a=new Date(t);a.setMonth(a.getMonth()+3);const r=new Date(a);r.setMonth(r.getMonth()+3,0);const s=n.getTime();return s>=a.getTime()&&s<r.getTime()},gt=(n,e=new Date)=>{const t=ae(e),a=new Date(t);a.setMonth(a.getMonth()-3);const r=new Date(t);r.setDate(0);const s=n.getTime();return s>=a.getTime()&&s<r.getTime()},ht=(n,e=new Date)=>n.getFullYear()===e.getFullYear(),mt=(n,e=new Date)=>n.getFullYear()===e.getFullYear()+1,bt=(n,e=new Date)=>n.getFullYear()===e.getFullYear()-1,St=(n,e=new Date)=>{const t=new Date(e);t.setHours(0,0,0,0),t.setMonth(0,1);const a=n.getTime();return a>=t.getTime()&&a<e.getTime()};function Ct(n){switch(n.compareType){case S.Equal:{const e=n.expectedValue;return t=>t.getTime()===e.getTime()}case S.NotEqual:{const e=n.expectedValue;return t=>t.getTime()!==e.getTime()}case S.After:{const e=n.expectedValue;return t=>t.getTime()>e.getTime()}case S.Before:{const e=n.expectedValue;return t=>t.getTime()<e.getTime()}case S.AfterOrEqual:{const e=n.expectedValue;return t=>t.getTime()>=e.getTime()}case S.BeforeOrEqual:{const e=n.expectedValue;return t=>t.getTime()<=e.getTime()}case S.Between:return e=>{const[t,a]=n.expectedValue;return e.getTime()>=new Date(t).getTime()&&e.getTime()<=new Date(a).getTime()};case S.NotBetween:return e=>{const[t,a]=n.expectedValue;return e.getTime()<new Date(t).getTime()||e.getTime()>new Date(a).getTime()};case S.Today:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>et(t,e)}case S.Yesterday:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>nt(t,e)}case S.Tomorrow:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>tt(t,e)}case S.ThisWeek:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>at(t,e)}case S.LastWeek:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>st(t,e)}case S.NextWeek:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>rt(t,e)}case S.ThisMonth:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>ot(t,e)}case S.LastMonth:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>ut(t,e)}case S.NextMonth:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>lt(t,e)}case S.ThisQuarter:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>dt(t,e)}case S.LastQuarter:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>gt(t,e)}case S.NextQuarter:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>ct(t,e)}case S.ThisYear:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>ht(t,e)}case S.LastYear:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>bt(t,e)}case S.NextYear:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>mt(t,e)}case S.YearToDate:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>St(t,e)}case S.M1:return He;case S.M2:return Ve;case S.M3:return Je;case S.M4:return ke;case S.M5:return Qe;case S.M6:return Ye;case S.M7:return je;case S.M8:return Ge;case S.M9:return ze;case S.M10:return Ke;case S.M11:return Xe;case S.M12:return Ze;case S.Q1:return Le;case S.Q2:return We;case S.Q3:return qe;case S.Q4:return Pe;default:throw new Error("Unsupported compare type")}}class Rt{constructor(){R(this,"heap");this.heap=[]}swap(e,t){const a=this.heap[e];this.heap[e]=this.heap[t],this.heap[t]=a}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)}}class Tt extends Rt{constructor(){super()}shiftUp(e){if(e===0)return;const t=this.getParentIndex(e);this.heap[t]>this.heap[e]&&(this.swap(t,e),this.shiftUp(t))}shiftDown(e){const t=this.getLeftIndex(e),a=this.getRightIndex(e);this.heap[t]<this.heap[e]&&(this.swap(t,e),this.shiftDown(t)),this.heap[a]<this.heap[e]&&(this.swap(a,e),this.shiftDown(a))}insert(e){this.heap.push(e),this.shiftUp(this.heap.length-1)}pop(){this.heap[0]=this.heap.pop(),this.shiftDown(0)}}const wt=(n,e)=>{const t=new Tt;for(const a of n)t.insert(a),t.size()>e&&t.pop();return t.heap},ft=(n,e)=>n>e,It=(n,e)=>n<e,pt=(n,e,t)=>wt(n,e).includes(t);function _t(n,e){switch(n.compareType){case F.Equal:{const t=Number(n.expectedValue);return a=>a===t}case F.NotEqual:{const t=Number(n.expectedValue);return a=>a!==t}case F.GreaterThan:{const t=Number(n.expectedValue);return a=>a>t}case F.GreaterThanOrEqual:{const t=Number(n.expectedValue);return a=>a>=t}case F.LessThan:{const t=Number(n.expectedValue);return a=>a<t}case F.LessThanOrEqual:{const t=Number(n.expectedValue);return a=>a<=t}case F.Between:{const[t,a]=n.expectedValue,r=Number(t),s=Number(a);return r>s?o=>o>=s&&o<=r:o=>o>=r&&o<=s}case F.NotBetween:{const[t,a]=n.expectedValue,r=Number(t),s=Number(a);return r>s?o=>o<s||o>r:o=>o<r||o>s}case F.Above:{const t=e.average;return a=>ft(a,t)}case F.Below:{const t=e.average;return a=>It(a,t)}case F.TopN:{const t=e.list,a=Number(n.expectedValue);return r=>pt(t,a,r)}}}const H=n=>{const t=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/\\\*/g,".*").replace(/\\\?/g,".");return new RegExp(`^${t}$`)},vt=(n,e)=>H(e).test(n),Mt=(n,e)=>!H(e).test(n),Ft=(n,e)=>H(`*${e}*`).test(n),yt=(n,e)=>!H(`*${e}*`).test(n),Dt=(n,e)=>H(`${e}*`).test(n),Nt=(n,e)=>H(`*${e}`).test(n);function Ot(n){switch(n.compareType){case x.Equal:return e=>vt(e,n.expectedValue);case x.NotEqual:return e=>Mt(e,n.expectedValue);case x.Contains:return e=>Ft(e,n.expectedValue);case x.NotContains:return e=>yt(e,n.expectedValue);case x.StartsWith:return e=>Dt(e,n.expectedValue);case x.EndsWith:return e=>Nt(e,n.expectedValue);default:return console.error(`Unknown filter operator: ${n.compareType}`),e=>!0}}const Ut=new Set([F.Above,F.Below,F.TopN]);S.Today,S.Yesterday,S.Tomorrow,S.ThisWeek,S.LastWeek,S.NextWeek,S.ThisMonth,S.LastMonth,S.NextMonth,S.ThisQuarter,S.LastQuarter,S.NextQuarter,S.NextYear,S.ThisYear,S.LastYear,S.YearToDate;function he(n){return Ut.has(n)}function xt(n,e){if(he(n.filterInfo.compareType))return t=>!0;switch(n.filterInfo.conditionType){case O.Date:return Ct(n.filterInfo);case O.Number:return _t(n.filterInfo,e);case O.String:return Ot(n.filterInfo);case O.Logic:default:return t=>!0}}function Y(n,e,t,a){switch(a){case O.Date:{const r=me(n,e,t);return r?At(r):null}case O.Number:return me(n,e,t);case O.String:default:return $t(n,e,t)}}const Et=n=>{var t;return((t=n.body)==null?void 0:t.dataStream.replace(/\r\n$/,""))||""};function $t(n,e,t){const a=n.getCell(e,t);if(!a)return null;const{v:r,t:s,p:o}=a;return o?Et(o):typeof r=="string"?s===u.CellValueType.BOOLEAN?r.toUpperCase():r:typeof r=="number"?s===u.CellValueType.BOOLEAN?r?"TRUE":"FALSE":r:typeof r=="boolean"?r?"TRUE":"FALSE":r===void 0?"(空白)":String(r)}function me(n,e,t){const a=n.getCell(e,t);if(!a)return null;const{v:r,t:s,p:o}=a;return o?null:typeof r=="string"&&s===u.CellValueType.NUMBER?Number(n.getCellRaw(e,t).v):Number(r)}function At(n){const e=new Date(Date.UTC(1900,0,1,0,0,0)),t=new Date(Date.UTC(1900,1,28,0,0,0));let a=n-1;return a>(t.getTime()-e.getTime())/(1e3*3600*24)&&(a-=1),a<0&&(a=n),new Date(e.getTime()+a*(1e3*3600*24))}class be{constructor(){R(this,"_tableColumnFilterList");R(this,"_tableSortInfo");R(this,"_filterOutRows");this._tableColumnFilterList=[]}setColumnFilter(e,t){t?this._tableColumnFilterList[e]=t:this._tableColumnFilterList[e]=void 0}setSortState(e,t){this._tableSortInfo={columnIndex:e,sortState:t}}getColumnFilter(e){return this._tableColumnFilterList[e]}getFilterState(e){var a;const t=((a=this._tableSortInfo)==null?void 0:a.columnIndex)===e?this._tableSortInfo.sortState:A.None;return Ee(this._tableColumnFilterList[e],t)}getSortState(){var e;return(e=this._tableSortInfo)!=null?e:{}}getFilterStates(e){const t=[],{startColumn:a,endColumn:r}=e;for(let s=a;s<=r;s++)t.push(this.getFilterState(s-a));return t}getFilterOutRows(){return this._filterOutRows}doFilter(e,t){const a=new Set,r=this._tableColumnFilterList;for(let s=0;s<r.length;s++)r[s]&&this.doColumnFilter(e,t,s,a);return this._filterOutRows=a,a}doColumnFilter(e,t,a,r){const s=this._tableColumnFilterList[a];if(s&&e){const{startRow:o,endRow:i,startColumn:d}=t,l=d+a,g=this.getExecuteFunc(e,t,a,s);for(let m=o;m<=i;m++){const c=ce(s)?s.filterInfo.conditionType:O.String;Y(e,m,l,c)===null?r.add(m):g(Y(e,m,l,c))||r.add(m)}}}_getNumberCalculatedOptions(e,t,a){const{startRow:r,endRow:s,startColumn:o}=t,i=o+a,d=[];let l=0,g=0;for(let m=r;m<=s;m++){const c=Y(e,m,i,O.Number);c!==null&&(d.push(c),l++,g+=c)}return{list:d,average:l>0?g/l:0}}getExecuteFunc(e,t,a,r){if(r.filterType===W.manual){const s=new Set(r.values);return o=>s.has(o)}else if(r.filterType===W.condition){const o=he(r.filterInfo.compareType)?this._getNumberCalculatedOptions(e,t,a):void 0;return xt(r,o)}else return s=>!0}toJSON(){return{tableColumnFilterList:this._tableColumnFilterList,tableSortInfo:this._tableSortInfo}}fromJSON(e){var t;this._tableColumnFilterList=(t=e.tableColumnFilterList)!=null?t:[],e.tableSortInfo&&(this._tableSortInfo=e.tableSortInfo)}dispose(){this._tableColumnFilterList=[]}}class Se{constructor(e,t,a,r,s={}){R(this,"_id");R(this,"_name");R(this,"_tableStyleId");R(this,"_showHeader");R(this,"_showFooter");R(this,"_range");R(this,"_columns",new Map);R(this,"_columnOrder",[]);R(this,"tableMeta");R(this,"_tableFilters");R(this,"_subUnitId");this._id=e,this._range=a,this._name=t,this._tableFilters=new be,this._init(r,s)}_init(e,t){var a;if(this._tableStyleId=t==null?void 0:t.tableStyleId,this._showHeader=(a=t==null?void 0:t.showHeader)!=null?a:!0,this._showFooter=!1,t.columns)t.columns.forEach(r=>{const s=r.id||u.generateRandomId(),o=new B(s,r.displayName);o.fromJSON(r),this._columns.set(s,o),this._columnOrder.push(s)});else{const r=this.getRange(),s=r.startColumn,o=r.endColumn;for(let i=s;i<=o;i++){const d=u.generateRandomId(),l=new B(d,e[i-s]);this._columns.set(d,l),this._columnOrder.push(d)}}t.filters&&t.filters.forEach((s,o)=>{s&&this._tableFilters.setColumnFilter(o,s)})}setTableFilterColumn(e,t){this._tableFilters.setColumnFilter(e,t)}getTableFilterColumn(e){return this._tableFilters.getColumnFilter(e)}getTableFilters(){return this._tableFilters}getTableFilterRange(){const e=this.getRange(),t=this.isShowHeader(),a=this.isShowFooter(),{startRow:r,startColumn:s,endRow:o,endColumn:i}=e,d=t?r+1:r,l=a?o-1:o;return{startRow:d,startColumn:s,endRow:l,endColumn:i}}setColumns(e){this._columns.clear(),this._columnOrder=[],e.forEach(t=>{const a=new B(t.id,t.displayName);a.fromJSON(t),this._columns.set(t.id,a),this._columnOrder.push(t.id)})}getColumnsCount(){return this._columnOrder.length}insertColumn(e,t){const a=t.id;this._columns.set(a,t),this._columnOrder.splice(e,0,a)}removeColumn(e){const 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){const t=this._columnOrder[e];return this.getColumn(t)}getColumnNameByIndex(e){var a;const t=this._columnOrder[e];return((a=this.getColumn(t))==null?void 0:a.getDisplayName())||""}getId(){return this._id}getRangeInfo(){return{...this._range}}getRange(){return{...this._range}}setRange(e){this._range=e}setDisplayName(e){this._name=e}getDisplayName(){return this._name}getSubunitId(){return this._subUnitId}setSubunitId(e){this._subUnitId=e}getTableStyleId(){var e;return(e=this._tableStyleId)!=null?e:q[0].name}setTableStyleId(e){this._tableStyleId=e}isShowHeader(){var e;return(e=this._showHeader)!=null?e:!0}setShowHeader(e){this._showHeader=e}isShowFooter(){var e;return(e=this._showFooter)!=null?e:!1}getTableInfo(){return{id:this._id,subUnitId:this._subUnitId,name:this._name,range:this.getRangeInfo(),meta:this.tableMeta,showHeader:this._showHeader,columns:this._columnOrder.map(e=>this._columns.get(e).toJSON())}}getTableConfig(){return{name:this.getDisplayName(),range:this.getRangeInfo(),options:{showHeader:this._showHeader,showFooter:this._showFooter},tableStyleId:this._tableStyleId}}getFilterStates(e){return this._tableFilters.getFilterStates(e)}toJSON(){const e=[];return this._columns.forEach(t=>{e.push(t.toJSON())}),{id:this._id,name:this._name,range:this.getRangeInfo(),options:{showHeader:this._showHeader,showFooter:this._showFooter,tableStyleId:this._tableStyleId},filters:this._tableFilters.toJSON(),columns:e,meta:this.tableMeta}}fromJSON(e){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,e.columns.forEach(a=>{const r=new B(a.id,a.displayName);r.fromJSON(a),this._columns.set(a.id,r),this._columnOrder.push(a.id)}),this._tableFilters=new be,this._tableFilters.fromJSON(e.filters)}dispose(){this._id="",this._name="",this._tableStyleId="",this._showHeader=!0,this._showFooter=!0,delete this._range,this._columns.clear(),this._columnOrder=[]}}var Bt=Object.getOwnPropertyDescriptor,Lt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Bt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},Ce=(n,e)=>(t,a)=>e(t,a,n);h.TableManager=class extends u.Disposable{constructor(t,a){super();R(this,"_tableMap");R(this,"_tableAdd$",new N.Subject);R(this,"tableAdd$",this._tableAdd$.asObservable());R(this,"_tableDelete$",new N.Subject);R(this,"tableDelete$",this._tableDelete$.asObservable());R(this,"_tableNameChanged$",new N.Subject);R(this,"tableNameChanged$",this._tableNameChanged$.asObservable());R(this,"_tableRangeChanged$",new N.Subject);R(this,"tableRangeChanged$",this._tableRangeChanged$.asObservable());R(this,"_tableThemeChanged$",new N.Subject);R(this,"tableThemeChanged$",this._tableThemeChanged$.asObservable());R(this,"_tableFilterChanged$",new N.Subject);R(this,"tableFilterChanged$",this._tableFilterChanged$.asObservable());R(this,"_tableInitStatus",new N.BehaviorSubject(!1));R(this,"tableInitStatus$",this._tableInitStatus.asObservable());this._univerInstanceService=t,this._localeService=a,this._tableMap=new Map}_ensureUnit(t){return this._tableMap.has(t)||this._tableMap.set(t,new Map),this._tableMap.get(t)}getColumnHeader(t,a,r,s){var c;const o=(c=this._univerInstanceService.getUnit(t))==null?void 0:c.getSheetBySheetId(a),{startRow:i,startColumn:d,endColumn:l}=r,g=[],m=s!=null?s:"Column";for(let b=d;b<=l;b++)g.push(de(o==null?void 0:o.getCell(i,b))||k(b-d+1,m));return g}addTable(t,a,r,s,o,i,d){const l=i!=null?i:u.generateRandomId(),g=o||this.getColumnHeader(t,a,s),m=new Se(l,r,s,g,d);return m.setSubunitId(a),this._ensureUnit(t).set(l,m),this._tableAdd$.next({unitId:t,subUnitId:a,range:s,tableName:r,tableId:l}),l}addFilter(t,a,r,s){const o=this.getTable(t,a);if(o){o.getTableFilters().setColumnFilter(r,s);const d=o.getSubunitId();this._tableFilterChanged$.next({unitId:t,subUnitId:d,tableId:a})}}getFilterRanges(t,a){const r=this._tableMap.get(t);if(!r)return[];const s=[];return r.forEach(o=>{o.getSubunitId()===a&&o.isShowHeader()&&s.push(o.getRange())}),s}getSheetFilterRangeWithState(t,a){const r=this._tableMap.get(t);if(!r)return[];const s=[];return r.forEach(o=>{o.getSubunitId()===a&&o.isShowHeader()&&s.push({tableId:o.getId(),range:o.getRange(),states:o.getFilterStates(o.getRange())})}),s}getTable(t,a){const r=this._tableMap.get(t);if(r)return r.get(a)}getUniqueTableName(t,a){const r=this._tableMap.get(t);if(!r)return a;const s=new Set(Array.from(r.values()).map(d=>d.getDisplayName()));let o=a,i=1;for(;s.has(o);)o=`${a}-${i}`,i++;return o}getTableById(t,a){return this.getTable(t,a)}getTableList(t){const a=this._tableMap.get(t);return a?Array.from(a.values()).map(r=>({...r.getTableInfo(),unitId:t})):[]}getTablesBySubunitId(t,a){const r=this._tableMap.get(t);return r?Array.from(r.values()).filter(s=>s.getSubunitId()===a):[]}getTablesInfoBySubunitId(t,a){return this.getTablesBySubunitId(t,a).map(r=>({id:r.getId(),name:r.getDisplayName(),range:r.getRange()}))}deleteTable(t,a){const r=this._tableMap.get(t),s=r==null?void 0:r.get(a);if(s){const o=s.getTableInfo(),i=s.getTableStyleId();r==null||r.delete(a);const{subUnitId:d,range:l,name:g}=o;this._tableDelete$.next({unitId:t,subUnitId:d,tableId:a,range:l,tableName:g,tableStyleId:i})}}operationTableRowCol(t,a,r){const s=this.getTableById(t,a);if(!s)return;const{operationType:o,rowColType:i,index:d,count:l,columnsJson:g}=r,m=s.getRange(),c={...m};if(o===_.Insert){if(i==="row")c.endRow+=l;else if(i==="column"){c.endColumn+=l;for(let b=0;b<l;b++){const f=this._localeService.t("sheets-table.columnPrefix"),T=new B(u.generateRandomId(),k(s.getColumnsCount()+1+b,f));g!=null&&g[b]&&T.fromJSON(g[b]);const p=d+b-m.startColumn;s.insertColumn(p,T)}}}else if(i==="row")c.endRow-=l;else if(i==="column"){c.endColumn-=l;for(let b=l-1;b>=0;b--){const f=d+b-m.startColumn;s.removeColumn(f)}}s.setRange(c),this._tableRangeChanged$.next({unitId:t,subUnitId:s.getSubunitId(),tableId:a,range:c,oldRange:m})}updateTableRange(t,a,r){const s=this.getTableById(t,a);if(!s)return;const o=s.getRange(),i=r.newRange;if(i.startColumn<o.startColumn){const d=o.startColumn-i.startColumn,l=this._localeService.t("sheets-table.columnPrefix");for(let g=0;g<d;g++)s.insertColumn(o.startColumn,new B(u.generateRandomId(),k(s.getColumnsCount()+1,l)))}else if(i.startColumn>o.startColumn){const d=i.startColumn-o.startColumn;for(let l=d-1;l>=0;l--){const g=i.startColumn+l-o.startColumn;s.removeColumn(g)}}if(i.endColumn<o.endColumn){const d=o.endColumn-i.endColumn;for(let l=d-1;l>=0;l--){const g=i.endColumn+l-o.startColumn;s.removeColumn(g)}}else if(i.endColumn>o.endColumn){const d=i.endColumn-o.endColumn;for(let l=0;l<d;l++)s.insertColumn(o.endColumn,new B(u.generateRandomId(),k(s.getColumnsCount()+1,"Column")))}s.setRange(i),this._tableRangeChanged$.next({unitId:t,subUnitId:s.getSubunitId(),tableId:a,range:i,oldRange:o})}setTableByConfig(t,a,r){var b;const s=this._tableMap.get(t),o=s==null?void 0:s.get(a);if(!o)return;const i=o.getSubunitId(),{name:d,updateRange:l,rowColOperation:g,theme:m,options:c}=r;if(d){const f=o.getDisplayName();o.setDisplayName(d),this._tableNameChanged$.next({unitId:t,subUnitId:i,tableId:a,tableName:d,oldTableName:f})}if(g&&this.operationTableRowCol(t,a,g),l&&this.updateTableRange(t,a,l),m){const f=(b=o.getTableStyleId())!=null?b:"default";o.setTableStyleId(m),this._tableThemeChanged$.next({unitId:t,subUnitId:i,tableId:a,theme:m,oldTheme:f})}c&&c.showHeader!==void 0&&o.setShowHeader(c.showHeader)}toJSON(t){const a={},r=this._tableMap.get(t);return r&&r.forEach(s=>{const o=s.getSubunitId();a[o]||(a[o]=[]),a[o].push(s.toJSON())}),a}fromJSON(t,a){const r=this._ensureUnit(t);Object.keys(a).forEach(o=>{const i=C.getSheetCommandTarget(this._univerInstanceService,{unitId:t,subUnitId:o});if(!i)return;const d=i.worksheet;a[o].forEach(g=>{const m=this.getColumnHeader(t,o,g.range),c=new Se(g.id,g.name,g.range,m,g.options);if(c.setTableMeta(g.meta),g.columns.length&&c.setColumns(g.columns),g.filters){const b=c.getTableFilters();b.fromJSON(g.filters),b.doFilter(d,c.getTableFilterRange())}c.setSubunitId(o),r.set(g.id,c),this._tableAdd$.next({unitId:t,subUnitId:o,range:g.range,tableName:g.name,tableId:g.id})})}),this._tableInitStatus.next(!0)}deleteUnitId(t){this._tableMap.delete(t)}dispose(){super.dispose(),this._tableMap.forEach(t=>{t.forEach(a=>a.dispose()),t.clear()}),this._tableMap.clear()}},h.TableManager=Lt([Ce(0,u.IUniverInstanceService),Ce(1,u.Inject(u.LocaleService))],h.TableManager);var Wt=Object.getOwnPropertyDescriptor,qt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Wt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},Pt=(n,e)=>(t,a)=>e(t,a,n);h.SheetTableService=class extends u.Disposable{constructor(e){super(),this._tableManager=e}getTableInfo(e,t){const a=this._tableManager.getTable(e,t);if(a)return{unitId:e,...a.getTableInfo()}}getTableList(e){return this._tableManager.getTableList(e)}addTable(e,t,a,r,s,o,i){return this._tableManager.addTable(e,t,a,r,s,o,i)}deleteTable(e,t,a){this._tableManager.deleteTable(e,a)}getTableMeta(e,t){var a;return(a=this._tableManager.getTable(e,t))==null?void 0:a.getTableMeta()}setTableMeta(e,t,a){var r;(r=this._tableManager.getTable(e,t))==null||r.setTableMeta(a)}getTableColumnMeta(e,t,a){var r,s;return(s=(r=this._tableManager.getTable(e,t))==null?void 0:r.getTableColumnByIndex(a))==null?void 0:s.getMeta()}selTableColumnMeta(e,t,a,r){var s,o;(o=(s=this._tableManager.getTable(e,t))==null?void 0:s.getTableColumnByIndex(a))==null||o.setMeta(r)}addFilter(e,t,a,r){this._tableManager.addFilter(e,t,a,r)}getCellValueWithConditionType(e,t,a,r=O.String){return Y(e,t,a,r)}},h.SheetTableService=qt([Pt(0,u.Inject(h.TableManager))],h.SheetTableService);const V={id:"sheet.mutation.add-table",type:u.CommandType.MUTATION,handler:(n,e)=>{const{tableId:t,unitId:a,subUnitId:r,name:s,range:o,header:i,options:d}=e;return n.get(h.SheetTableService).addTable(a,r,s,o,i,t,d),!0}},J={id:"sheet.mutation.delete-table",type:u.CommandType.MUTATION,handler:(n,e)=>{const{unitId:t,subUnitId:a,tableId:r}=e;return n.get(h.SheetTableService).deleteTable(t,a,r),!0}},Re={id:"sheet.command.add-table",type:u.CommandType.COMMAND,handler:(n,e)=>{var T;if(!e)return!1;const t=n.get(u.IUndoRedoService),a=n.get(u.ICommandService),r=n.get(u.LocaleService),s=(T=e.id)!=null?T:u.generateRandomId();let o=e.name;if(!o){const w=n.get(h.TableManager).getTableList(e.unitId).length;o=`${r.t("sheets-table.tablePrefix")} ${w+1}`}const i=[],d=[],l=n.get(h.TableManager),{unitId:g,subUnitId:m,range:c}=e,b=l.getColumnHeader(g,m,c,r.t("sheets-table.columnPrefix"));return i.push({id:V.id,params:{...e,tableId:s,name:o,header:b}}),d.push({id:J.id,params:{tableId:s,unitId:e.unitId}}),u.sequenceExecute(i,a)&&t.pushUndoRedo({unitID:e.unitId,undoMutations:d,redoMutations:i}),!0}},Te={id:"sheet.command.delete-table",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(u.IUndoRedoService),a=n.get(u.ICommandService),r=n.get(h.TableManager),s=[],o=[],i=r.getTable(e.unitId,e.tableId),d=i==null?void 0:i.toJSON();if(!d)throw new Error("[TableManager]: Table not found");return s.push({id:J.id,params:{...e}}),o.push({id:V.id,params:{unitId:e.unitId,subUnitId:e.subUnitId,tableId:e.tableId,name:d.name,range:d.range,options:d.options}}),u.sequenceExecute(s,a)&&t.pushUndoRedo({unitID:e.unitId,undoMutations:o,redoMutations:s}),!0}},j={id:"sheet.mutation.set-table-filter",type:u.CommandType.MUTATION,handler:(n,e)=>{const{tableId:t,unitId:a,column:r,tableFilter:s}=e;return n.get(h.TableManager).addFilter(a,t,r,s),!0}},we={id:"sheet.command.set-table-filter",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(u.IUndoRedoService),a=n.get(u.ICommandService),r=e.tableId||u.generateRandomId(),s=[],o=[];return s.push({id:j.id,params:{...e,tableId:r}}),o.push({id:j.id,params:{...e,tableId:r,tableFilter:void 0}}),u.sequenceExecute(s,a)&&t.pushUndoRedo({unitID:e.unitId,undoMutations:o,redoMutations:s}),!0}},fe="SHEET_TABLE_PLUGIN",G="SHEET_TABLE",Ie="table-custom";var Ht=Object.getOwnPropertyDescriptor,Vt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Ht(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},re=(n,e)=>(t,a)=>e(t,a,n);h.SheetsTableController=class extends u.Disposable{constructor(t,a,r){super();R(this,"_tableRangeRTree",new Map);this._sheetInterceptorService=t,this._tableManager=a,this._resourceManagerService=r,this._initSnapshot(),this.registerTableChangeEvent(),this.registerTableHeaderInterceptor()}getContainerTableWithRange(t,a,r){const s=this._ensureTableRangeRTree(t),i=Array.from(s.bulkSearch([{unitId:t,sheetId:a,range:r}])).find(d=>{const l=this._tableManager.getTable(t,String(d));return l?u.Rectangle.contains(l.getRange(),r):!1});if(i)return this._tableManager.getTable(t,String(i))}_ensureTableRangeRTree(t){return this._tableRangeRTree.has(t)||this._tableRangeRTree.set(t,new u.RTree),this._tableRangeRTree.get(t)}registerTableChangeEvent(){this.disposeWithMe(this._tableManager.tableAdd$.subscribe(t=>{const{range:a,tableId:r,unitId:s,subUnitId:o}=t;this._ensureTableRangeRTree(s).insert({unitId:s,sheetId:o,id:r,range:{...a}})})),this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe(t=>{const{range:a,tableId:r,unitId:s,subUnitId:o,oldRange:i}=t,d=this._ensureTableRangeRTree(s);d.remove({unitId:s,sheetId:o,id:r,range:{...i}}),d.insert({unitId:s,sheetId:o,id:r,range:{...a}})})),this.disposeWithMe(this._tableManager.tableDelete$.subscribe(t=>{const{tableId:a,unitId:r,subUnitId:s,range:o}=t;this._ensureTableRangeRTree(r).remove({unitId:r,sheetId:s,id:a,range:{...o}})}))}registerTableHeaderInterceptor(){this.disposeWithMe(this._sheetInterceptorService.intercept(C.INTERCEPTOR_POINT.CELL_CONTENT,{effect:u.InterceptorEffectEnum.Value,handler:(t,a,r)=>{const{row:s,col:o,unitId:i,subUnitId:d}=a,l=this._ensureTableRangeRTree(i);if((t==null?void 0:t.v)===void 0&&l){const m=Array.from(l.bulkSearch([{unitId:i,sheetId:d,range:{startColumn:o,endColumn:o,startRow:s,endRow:s}}]));if(m.length>0){const c=this._tableManager.getTable(i,m[0]);if(c){const b=c.getRange(),f=o-b.startColumn;if(b.startRow===s){const p=c.getColumnNameByIndex(f);return(!t||t===a.rawData)&&(t={...a.rawData}),t.v=p,r(t)}}}}return r(t)}}))}_toJson(t){return this._tableManager.toJSON(t)}_fromJSON(t,a){return this._tableManager.fromJSON(t,a)}_deleteUnitId(t){this._tableManager.deleteUnitId(t)}_initSnapshot(){this.disposeWithMe(this._resourceManagerService.registerPluginResource({toJson:t=>JSON.stringify(this._toJson(t)),parseJson:t=>{if(!t)return{};try{return JSON.parse(t)}catch{return{}}},businesses:[u.UniverInstanceType.UNIVER_SHEET],pluginName:fe,onLoad:(t,a)=>{this._fromJSON(t,a)},onUnLoad:t=>{this._deleteUnitId(t)}}))}dispose(){super.dispose(),this._tableRangeRTree.clear()}},h.SheetsTableController=Vt([re(0,u.Inject(C.SheetInterceptorService)),re(1,u.Inject(h.TableManager)),re(2,u.Inject(u.IResourceManagerService))],h.SheetsTableController);const I={id:"sheet.mutation.set-sheet-table",type:u.CommandType.MUTATION,handler:(n,e)=>{if(!e)return!1;const{unitId:t,tableId:a,config:r}=e;return n.get(h.TableManager).setTableByConfig(t,a,r),!0}},pe={id:"sheet.command.add-table-theme",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(h.TableManager),{unitId:a,tableId:r,themeStyle:s}=e,o=[],i=[],d=t.getTableById(a,r);if(!d)return!1;const l=d.getSubunitId();o.push({id:C.AddRangeThemeMutation.id,params:{unitId:a,subUnitId:l,styleJSON:s.toJson()}}),o.push({id:I.id,params:{unitId:a,subUnitId:l,tableId:r,config:{theme:s.getName()}}}),i.push({id:I.id,params:{unitId:a,subUnitId:l,tableId:r,config:{themeStyle:d.getTableStyleId()}}}),i.push({id:C.RemoveRangeThemeMutation.id,params:{unitId:a,subUnitId:l,styleName:s.getName()}});const g=n.get(u.ICommandService);return u.sequenceExecute(o,g)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:a,undoMutations:i,redoMutations:o}),!0}},_e={id:"sheet.command.remove-table-theme",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const{unitId:t,tableId:a,themeName:r}=e,s=n.get(h.TableManager),o=n.get(C.SheetRangeThemeModel),i=s.getTableById(t,a);if(!i)return!1;const d=i.getSubunitId(),l=[],g=[],m=o.getRegisteredRangeThemes().filter(w=>w==null?void 0:w.startsWith("table-default"));let b=o.getRegisteredRangeThemes().filter(w=>w==null?void 0:w.startsWith(Ie)).find(w=>w!==r);b||(b=m[0]),l.push({id:I.id,params:{unitId:t,subUnitId:d,tableId:a,config:{theme:b}}}),l.push({id:C.RemoveRangeThemeMutation.id,params:{unitId:t,subUnitId:d,styleName:r}});const f=o.getDefaultRangeThemeStyle(r);f&&(g.push({id:C.AddRangeThemeMutation.id,params:{unitId:t,subUnitId:d,styleJSON:f.toJson()}}),g.push({id:I.id,params:{unitId:t,subUnitId:d,tableId:a,config:{theme:r}}}));const T=n.get(u.ICommandService);return u.sequenceExecute(l,T)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:t,redoMutations:l,undoMutations:g}),!0}},ve={id:"sheet.command.set-table-config",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const{unitId:t,tableId:a,name:r,updateRange:s,rowColOperation:o,theme:i}=e,l=n.get(h.TableManager).getTableById(t,a);if(!l)return!1;const g={},m={};r&&(g.name=l.getDisplayName(),m.name=r),o&&(g.rowColOperation={operationType:o.operationType===_.Insert?_.Delete:_.Insert,rowColType:o.rowColType,index:o.index,count:o.count},m.rowColOperation=o),s&&(g.updateRange={newRange:l.getRange()},m.updateRange=s),i&&(g.theme=l.getTableStyleId(),m.theme=i);const c={unitId:t,subUnitId:l.getSubunitId(),tableId:a,config:m};return n.get(u.ICommandService).executeCommand(I.id,c),n.get(u.IUndoRedoService).pushUndoRedo({unitID:t,undoMutations:[{id:I.id,params:{unitId:t,subUnitId:l.getSubunitId(),tableId:a,config:g}}],redoMutations:[{id:I.id,params:c}]}),!0}},Me={id:"sheet.command.table-insert-row",type:u.CommandType.COMMAND,handler:n=>{const e=n.get(u.IUniverInstanceService),t=C.getSheetCommandTarget(e);if(!t)return!1;const{workbook:a,worksheet:r,unitId:s,subUnitId:o}=t,d=n.get(C.SheetsSelectionsService).getCurrentSelections();if(!d.length||d.length>1)return!1;n.get(h.TableManager);const g=d[0].range,c=n.get(h.SheetsTableController).getContainerTableWithRange(s,o,g);if(!c)return!1;const b=g.endRow-g.startRow+1,T=r.getRowCount()-1,p=r.getCellMatrix().getDataRange().endRow,w=[],v=[];if(T-p<b)w.push({id:C.InsertRowMutation.id,params:{unitId:s,subUnitId:o,range:{...g}}}),w.push({id:I.id,params:{unitId:s,subUnitId:o,tableId:c.getId(),config:{updateRange:{newRange:{...c.getRange(),endRow:c.getRange().endRow+b}}}}}),v.push({id:I.id,params:{unitId:s,subUnitId:o,tableId:c.getId(),config:{updateRange:{newRange:c.getRange()}}}}),v.push({id:C.RemoveRowMutation.id,params:{unitId:s,subUnitId:o,range:{...g}}});else{const M={...c.getRange()};w.push({id:I.id,params:{unitId:s,subUnitId:o,tableId:c.getId(),config:{updateRange:{newRange:{...M,endRow:M.endRow+b}}}}}),v.push({id:I.id,params:{unitId:s,subUnitId:o,tableId:c.getId(),config:{updateRange:{newRange:{...M}}}}});const Q=C.getMoveRangeUndoRedoMutations(n,{unitId:s,subUnitId:o,range:{startRow:g.startRow,endRow:p,startColumn:M.startColumn,endColumn:M.endColumn}},{unitId:s,subUnitId:o,range:{startRow:g.startRow+b,endRow:p+b,startColumn:M.startColumn,endColumn:M.endColumn}});Q&&(w.push(...Q.redos),v.push(...Q.undos))}const $=n.get(u.ICommandService);return u.sequenceExecute(w,$)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:s,undoMutations:v,redoMutations:w}),!0}},Fe={id:"sheet.command.table-insert-col",type:u.CommandType.COMMAND,handler:n=>{const e=n.get(u.IUniverInstanceService),t=C.getSheetCommandTarget(e);if(!t)return!1;const{worksheet:a,unitId:r,subUnitId:s}=t,i=n.get(C.SheetsSelectionsService).getCurrentSelections();if(!i.length||i.length>1)return!1;const l=i[0].range,m=n.get(h.SheetsTableController).getContainerTableWithRange(r,s,l);if(!m)return!1;const c=l.endColumn-l.startColumn+1,f=a.getColumnCount()-1,T=a.getCellMatrix().getDataRange().endColumn,p=[],w=[];if(f-T<c)p.push({id:C.InsertColMutation.id,params:{unitId:r,subUnitId:s,range:{...l}}}),p.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:m.getId(),config:{rowColOperation:{operationType:_.Insert,rowColType:y.Col,index:l.startColumn,count:c}}}}),w.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:m.getId(),config:{rowColOperation:{operationType:_.Delete,rowColType:y.Col,index:l.startColumn,count:c}}}}),w.push({id:C.RemoveColMutation.id,params:{unitId:r,subUnitId:s,range:{...l}}});else{const D=m.getRange();p.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:m.getId(),config:{rowColOperation:{operationType:_.Insert,rowColType:y.Col,index:l.startColumn,count:c}}}}),w.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:m.getId(),config:{rowColOperation:{operationType:_.Delete,rowColType:y.Col,index:l.startColumn,count:c}}}});const M=C.getMoveRangeUndoRedoMutations(n,{unitId:r,subUnitId:s,range:{startRow:D.startRow,endRow:D.endRow,startColumn:l.startColumn,endColumn:T}},{unitId:r,subUnitId:s,range:{startRow:D.startRow,endRow:D.endRow,startColumn:l.startColumn+c,endColumn:T+c}});M&&(p.push(...M.redos),w.push(...M.undos))}const v=n.get(u.ICommandService);return u.sequenceExecute(p,v)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:r,undoMutations:w,redoMutations:p}),!0}},ye={id:"sheet.command.table-remove-row",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(u.IUniverInstanceService),a=C.getSheetCommandTarget(t);if(!a)return!1;const{unitId:r,subUnitId:s}=a,i=n.get(C.SheetsSelectionsService).getCurrentSelections();if(!i.length||i.length>1)return!1;const l=i[0].range,m=n.get(h.SheetsTableController).getContainerTableWithRange(r,s,l);if(!m)return!1;const c=l.endRow-l.startRow+1,b=[],f=[],T=m.getRange();b.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:m.getId(),config:{updateRange:{newRange:{...T,endRow:T.endRow-c}}}}}),f.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:m.getId(),config:{updateRange:{newRange:{...T}}}}});const w=a.worksheet.getCellMatrix().getDataRange().endRow,v=C.getMoveRangeUndoRedoMutations(n,{unitId:r,subUnitId:s,range:{startRow:l.endRow+1,endRow:w,startColumn:T.startColumn,endColumn:T.endColumn}},{unitId:r,subUnitId:s,range:{startRow:l.startRow,endRow:w-c,startColumn:T.startColumn,endColumn:T.endColumn}});v&&(b.push(...v.redos),f.push(...v.undos));const $=n.get(u.ICommandService);return u.sequenceExecute(b,$)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:r,undoMutations:f,redoMutations:b}),!0}},De={id:"sheet.command.table-remove-col",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(u.IUniverInstanceService),a=C.getSheetCommandTarget(t);if(!a)return!1;const{workbook:r,unitId:s,subUnitId:o}=a;n.get(h.TableManager);const d=n.get(C.SheetsSelectionsService).getCurrentSelections();if(!d.length||d.length>1)return!1;const g=d[0].range,c=n.get(h.SheetsTableController).getContainerTableWithRange(s,o,g);if(!c)return!1;const b=g.endColumn-g.startColumn+1,f=[],T=[],p=c.getRange();f.push({id:I.id,params:{unitId:s,subUnitId:o,tableId:c.getId(),config:{rowColOperation:{operationType:_.Delete,rowColType:y.Col,index:g.startColumn,count:b}}}});const w=[],v=g.startColumn-p.startColumn;for(let te=0;te<b;te++){const Ue=c.getTableInfo().columns[v+te];Ue&&w.push(Ue)}T.push({id:I.id,params:{unitId:s,subUnitId:o,tableId:c.getId(),config:{rowColOperation:{operationType:_.Insert,rowColType:y.Col,index:g.startColumn,count:b,columnsJson:w}}}});const D=a.worksheet.getCellMatrix().getDataRange().endColumn,M=C.getMoveRangeUndoRedoMutations(n,{unitId:s,subUnitId:o,range:{startRow:p.startRow,endRow:p.endRow,startColumn:g.endColumn+1,endColumn:D}},{unitId:s,subUnitId:o,range:{startRow:p.startRow,endRow:p.endRow,startColumn:g.startColumn,endColumn:D-b}});M&&(f.push(...M.redos),T.push(...M.undos));const Q=n.get(u.ICommandService);return u.sequenceExecute(f,Q)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:s,undoMutations:T,redoMutations:f}),!0}},Jt="sheets-table.config",Ne={};var kt=Object.getOwnPropertyDescriptor,Qt=(n,e,t,a)=>{for(var r=a>1?void 0:a?kt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},Oe=(n,e)=>(t,a)=>e(t,a,n);let z=class extends u.Disposable{constructor(n,e){super(),this._tableManager=n,this._exclusiveRangeService=e,this._initRangeListener()}_initRangeListener(){this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe(n=>{const{range:e,tableId:t,unitId:a,subUnitId:r}=n;this._exclusiveRangeService.clearExclusiveRangesByGroupId(a,r,G,t),this._exclusiveRangeService.addExclusiveRange(a,r,G,[{range:{...e},groupId:t}])})),this.disposeWithMe(this._tableManager.tableAdd$.subscribe(n=>{const{tableId:e,unitId:t,subUnitId:a,range:r}=n;this._exclusiveRangeService.addExclusiveRange(t,a,G,[{range:{...r},groupId:e}])})),this.disposeWithMe(this._tableManager.tableDelete$.subscribe(n=>{const{tableId:e,unitId:t,subUnitId:a}=n;this._exclusiveRangeService.clearExclusiveRangesByGroupId(t,a,G,e)}))}};z=Qt([Oe(0,u.Inject(h.TableManager)),Oe(1,u.Inject(C.IExclusiveRangeService))],z);var Yt=Object.getOwnPropertyDescriptor,jt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Yt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},L=(n,e)=>(t,a)=>e(t,a,n);let K=class extends u.Disposable{constructor(n,e,t,a,r,s,o){super(),this._commandService=n,this._refRangeService=e,this._univerInstanceService=t,this._injector=a,this._sheetInterceptorService=r,this._tableManager=s,this._localeService=o,this._initCommandInterceptor(),this._initCommandListener()}_initCommandInterceptor(){const n=this;this._sheetInterceptorService.interceptCommand({getMutations(e){const t={redos:[],undos:[]},{id:a,params:r}=e;switch(a){case C.InsertRowCommand.id:return n._generateTableMutationWithInsertRow(r);case C.InsertColCommand.id:return n._generateTableMutationWithInsertCol(r);case C.RemoveRowCommand.id:return n._generateTableMutationWithRemoveRow(r);case C.RemoveColCommand.id:return n._generateTableMutationWithRemoveCol(r)}return t}})}_generateTableMutationWithInsertRow(n){const e=[],t=[],a=C.getSheetCommandTarget(this._univerInstanceService);if(!a)return{undos:e,redos:t};const{unitId:r,subUnitId:s}=a,o=this._tableManager.getTablesBySubunitId(r,s);if(!o.length)return{undos:e,redos:t};const{range:i}=n;return o.forEach(d=>{const l=d.getRange();if(i.startRow>l.startRow&&i.startRow<=l.endRow){const g=i.endRow-i.startRow+1;t.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:d.getId(),config:{updateRange:{newRange:{...l,endRow:l.endRow+g}}}}}),e.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:d.getId(),config:{updateRange:{newRange:{...l}}}}})}}),{undos:e,redos:t}}_generateTableMutationWithInsertCol(n){const e=[],t=[],a=C.getSheetCommandTarget(this._univerInstanceService);if(!a)return{undos:e,redos:t};const{unitId:r,subUnitId:s}=a,o=this._tableManager.getTablesBySubunitId(r,s);if(!o.length)return{undos:e,redos:t};const{range:i}=n;return o.forEach(d=>{const l=d.getRange();if(i.startColumn>l.startColumn&&i.startColumn<=l.endColumn){const g=i.endColumn-i.startColumn+1;t.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:d.getId(),config:{rowColOperation:{operationType:_.Insert,rowColType:y.Col,index:i.startColumn,count:g}}}}),e.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:d.getId(),config:{rowColOperation:{operationType:_.Delete,rowColType:y.Col,index:i.startColumn,count:g}}}})}}),{undos:e,redos:t}}_generateTableMutationWithRemoveRow(n){const e=[],t=[],a=[],r=[],s=C.getSheetCommandTarget(this._univerInstanceService);if(!s)return{undos:e,redos:t,preRedos:a,preUndos:r};const{unitId:o,subUnitId:i}=s,d=this._tableManager.getTablesBySubunitId(o,i);if(!d.length)return{undos:e,redos:t,preRedos:a,preUndos:r};const{range:l}=n,g=l.endRow-l.startRow+1;return d.forEach(m=>{const c=m.getRange();if(u.Rectangle.intersects(c,l))if(l.startRow<=c.startRow&&l.endRow>=c.startRow){a.push({id:J.id,params:{unitId:o,subUnitId:i,tableId:m.getId()}});const b=m.toJSON();e.push({id:V.id,params:{unitId:o,subUnitId:i,tableId:b.id,name:b.name,range:b.range,options:b.options}})}else l.startRow>c.startRow&&l.startRow<=c.endRow?(t.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{updateRange:{newRange:{...c,endRow:c.endRow-g}}}}}),e.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{updateRange:{newRange:{...c}}}}})):l.startRow<c.endRow&&l.endRow>=c.endRow&&(t.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{updateRange:{newRange:{...c,endRow:l.startRow-1}}}}}),e.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{updateRange:{newRange:{...c}}}}}))}),{undos:e,redos:t,preRedos:a,preUndos:r}}_generateTableMutationWithRemoveCol(n){const e=[],t=[],a=[],r=[],s=C.getSheetCommandTarget(this._univerInstanceService);if(!s)return{undos:e,redos:t,preRedos:a,preUndos:r};const{unitId:o,subUnitId:i}=s,d=this._tableManager.getTablesBySubunitId(o,i);if(!d.length)return{undos:e,redos:t,preRedos:a,preUndos:r};const{range:l}=n,g=l.endColumn-l.startColumn+1;return d.forEach(m=>{const c=m.getRange();if(u.Rectangle.intersects(c,l)){if(l.startColumn<=c.startColumn&&l.endColumn>=c.endColumn){a.push({id:J.id,params:{unitId:o,subUnitId:i,tableId:m.getId()}});const b=m.toJSON(),{startRow:f,startColumn:T,endColumn:p}=b.range,w=this._univerInstanceService.getUnit(o),v=w==null?void 0:w.getSheetBySheetId(i);if(!v)return{undos:e,redos:t,preRedos:a,preUndos:r};const $=[];for(let D=T;D<=p;D++)$.push(de(v==null?void 0:v.getCell(f,D))||k(D-T+1,this._localeService.t("sheets-table.columnPrefix")));e.push({id:V.id,params:{unitId:o,subUnitId:i,tableId:b.id,name:b.name,header:$,range:b.range,options:b.options}})}else if(l.startColumn<=c.startColumn&&l.endColumn>=c.startColumn){const b=l.endColumn-c.startColumn+1;t.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{rowColOperation:{operationType:_.Delete,rowColType:y.Col,index:c.startColumn,count:b}}}});const f=[];for(let T=0;T<b;T++){const p=m.getTableColumnByIndex(T);p&&f.push(p.toJSON())}e.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{rowColOperation:{operationType:_.Insert,rowColType:y.Col,index:c.startColumn,count:b,columnsJson:f}}}})}else if(l.startColumn>c.startColumn&&l.endColumn>c.endColumn){const b=c.endColumn-l.startColumn+1;t.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{rowColOperation:{operationType:_.Delete,rowColType:y.Col,index:l.startColumn,count:b}}}});const f=[],T=l.startColumn-c.startColumn;for(let p=0;p<b;p++){const w=m.getTableColumnByIndex(p+T);w&&f.push(w.toJSON())}e.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{rowColOperation:{operationType:_.Insert,rowColType:y.Col,index:l.startColumn,count:g,columnsJson:f}}}})}else if(l.startColumn>c.startColumn&&l.endColumn<=c.endColumn){t.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{rowColOperation:{operationType:_.Delete,rowColType:y.Col,index:l.startColumn,count:g}}}});const b=[],f=l.startColumn-c.startColumn;for(let T=0;T<g;T++){const p=m.getTableColumnByIndex(T+f);p&&b.push(p.toJSON())}e.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{rowColOperation:{operationType:_.Insert,rowColType:y.Col,index:l.startColumn,count:g,columnsJson:b}}}})}}}),{undos:e,redos:t,preRedos:a,preUndos:r}}_initCommandListener(){this._commandService.onCommandExecuted(n=>{if(n.id===C.InsertRowMutation.id){const e=n.params,{unitId:t,subUnitId:a,range:r}=e,s=r.endRow-r.startRow+1;this._tableManager.getTablesBySubunitId(t,a).forEach(i=>{const d=i.getRange();r.startRow<=d.startRow&&this._tableManager.updateTableRange(t,i.getId(),{newRange:{...d,startRow:d.startRow+s,endRow:d.endRow+s}})})}else if(n.id===C.InsertColMutation.id){const e=n.params,{unitId:t,subUnitId:a,range:r}=e,s=r.endColumn-r.startColumn+1;this._tableManager.getTablesBySubunitId(t,a).forEach(i=>{const d=i.getRange();r.startColumn<=d.startColumn&&this._tableManager.updateTableRange(t,i.getId(),{newRange:{...d,startColumn:d.startColumn+s,endColumn:d.endColumn+s}})})}else if(n.id===C.RemoveRowMutation.id){const e=n.params,{unitId:t,subUnitId:a,range:r}=e,s=r.endRow-r.startRow+1;this._tableManager.getTablesBySubunitId(t,a).forEach(i=>{const d=i.getRange();r.startRow<d.startRow&&this._tableManager.updateTableRange(t,i.getId(),{newRange:{...d,startRow:d.startRow-s,endRow:d.endRow-s}})})}else if(n.id===C.RemoveColMutation.id){const e=n.params,{unitId:t,subUnitId:a,range:r}=e,s=r.endColumn-r.startColumn+1;this._tableManager.getTablesBySubunitId(t,a).forEach(i=>{const d=i.getRange();r.startColumn<d.startColumn&&this._tableManager.updateTableRange(t,i.getId(),{newRange:{...d,startColumn:d.startColumn-s,endColumn:d.endColumn-s}})})}})}};K=jt([L(0,u.Inject(u.ICommandService)),L(1,u.Inject(C.RefRangeService)),L(2,u.Inject(u.IUniverInstanceService)),L(3,u.Inject(u.Injector)),L(4,u.Inject(C.SheetInterceptorService)),L(5,u.Inject(h.TableManager)),L(6,u.Inject(u.LocaleService))],K);var Gt=Object.getOwnPropertyDescriptor,zt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Gt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},se=(n,e)=>(t,a)=>e(t,a,n);let X=class extends u.Disposable{constructor(n,e,t){super(),this._tableManager=n,this._sheetRangeThemeService=e,this._sheetRangeThemeModel=t,this.registerTableChangeEvent(),this._initDefaultTableTheme()}registerTableChangeEvent(){this.disposeWithMe(this._tableManager.tableAdd$.subscribe(n=>{const{range:e,tableId:t,unitId:a,subUnitId:r}=n,o=this._tableManager.getTable(a,t).getTableStyleId()||q[0].name;this._sheetRangeThemeService.registerRangeThemeStyle(o,{unitId:a,subUnitId:r,range:{...e}})})),this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe(n=>{const{range:e,oldRange:t,tableId:a,unitId:r,subUnitId:s}=n,i=this._tableManager.getTable(r,a).getTableStyleId()||q[0].name;this._sheetRangeThemeService.removeRangeThemeRule(i,{unitId:r,subUnitId:s,range:{...t}}),this._sheetRangeThemeService.registerRangeThemeStyle(i,{unitId:r,subUnitId:s,range:{...e}})})),this.disposeWithMe(this._tableManager.tableThemeChanged$.subscribe(n=>{const{theme:e,oldTheme:t,tableId:a,unitId:r,subUnitId:s}=n,i=this._tableManager.getTable(r,a).getRange();this._sheetRangeThemeService.removeRangeThemeRule(t,{unitId:r,subUnitId:s,range:{...i}}),this._sheetRangeThemeService.registerRangeThemeStyle(e,{unitId:r,subUnitId:s,range:{...i}})})),this.disposeWithMe(this._tableManager.tableDelete$.subscribe(n=>{const{range:e,unitId:t,subUnitId:a,tableStyleId:r=q[0].name}=n;this._sheetRangeThemeService.removeRangeThemeRule(r,{unitId:t,subUnitId:a,range:{...e}})}))}_initDefaultTableTheme(){for(let n=0;n<q.length;n++){const{name:e,style:t}=q[n],a=new C.RangeThemeStyle(e,t);this._sheetRangeThemeModel.registerDefaultRangeTheme(a)}}dispose(){super.dispose()}};X=zt([se(0,u.Inject(h.TableManager)),se(1,u.Inject(C.SheetRangeThemeService)),se(2,u.Inject(C.SheetRangeThemeModel))],X);var Kt=Object.getOwnPropertyDescriptor,Xt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Kt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},oe=(n,e)=>(t,a)=>e(t,a,n);let Z=class extends u.Disposable{constructor(e,t,a){super();R(this,"_tableFilteredOutRows$",new N.BehaviorSubject(new Set));R(this,"tableFilteredOutRows$",this._tableFilteredOutRows$.asObservable());R(this,"_subscription",null);this._tableManager=e,this._sheetInterceptorService=t,this._univerInstanceService=a,this.registerFilterChangeEvent(),this.initTableHiddenRowIntercept(),this._initFilteredOutRows()}get tableFilteredOutRows(){return this._tableFilteredOutRows$.value}set tableFilteredOutRows(e){this._tableFilteredOutRows$.next(e)}initTableHiddenRowIntercept(){this.disposeWithMe(this._sheetInterceptorService.intercept(C.INTERCEPTOR_POINT.ROW_FILTERED,{priority:100,handler:(e,t,a)=>{if(e)return!0;const r=this.tableFilteredOutRows.has(t.row);return r?!0:a(r)}}))}_initFilteredOutRows(){this._tableManager.tableInitStatus$.pipe(N.filter(e=>e),N.switchMap(()=>this._univerInstanceService.getCurrentTypeOfUnit$(u.UniverInstanceType.UNIVER_SHEET)),N.filter(e=>e!=null),N.switchMap(e=>e.activeSheet$),N.filter(e=>e!=null)).subscribe(()=>{const e=C.getSheetCommandTarget(this._univerInstanceService);if(!e)return;const{unitId:t,subUnitId:a}=e;this.tableFilteredOutRows.clear(),this._tableManager.getTablesBySubunitId(t,a).forEach(s=>{const o=s.getTableFilters().getFilterOutRows();if(o)for(const i of o)this.tableFilteredOutRows.add(i)})})}registerFilterChangeEvent(){this.disposeWithMe(this._tableManager.tableFilterChanged$.subscribe(e=>{var l;const{unitId:t,subUnitId:a,tableId:r}=e,s=(l=this._univerInstanceService.getUnit(t))==null?void 0:l.getSheetBySheetId(a),o=this._tableManager.getTable(t,r);if(!s||!o)return;this.tableFilteredOutRows.clear(),o.getTableFilters().doFilter(s,o.getTableFilterRange()),this._tableManager.getTablesBySubunitId(t,a).forEach(g=>{const m=g.getTableFilters().getFilterOutRows();if(m)for(const c of m)this.tableFilteredOutRows.add(c)})}))}dispose(){var e;super.dispose(),(e=this._subscription)==null||e.unsubscribe()}};Z=Xt([oe(0,u.Inject(h.TableManager)),oe(1,u.Inject(C.SheetInterceptorService)),oe(2,u.Inject(u.IUniverInstanceService))],Z);var Zt=Object.getOwnPropertyDescriptor,en=(n,e,t,a)=>{for(var r=a>1?void 0:a?Zt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},ie=(n,e)=>(t,a)=>e(t,a,n);h.UniverSheetsTablePlugin=(ee=class extends u.Plugin{constructor(e=Ne,t,a,r){super(),this._config=e,this._injector=t,this._configService=a,this._commandService=r;const{...s}=u.merge({},Ne,this._config);this._configService.setConfig(Jt,s),this._initRegisterCommand()}onStarting(){u.registerDependencies(this._injector,[[h.TableManager],[X],[h.SheetsTableController],[h.SheetTableService],[Z],[z],[K]]),u.touchDependencies(this._injector,[[z],[K],[X],[h.SheetsTableController],[h.SheetTableService],[Z]])}onReady(){u.touchDependencies(this._injector,[[h.TableManager]])}_initRegisterCommand(){[Re,V,Te,J,j,we,ve,I,pe,_e,Me,Fe,ye,De].forEach(e=>this._commandService.registerCommand(e))}},R(ee,"pluginName",fe),R(ee,"type",u.UniverInstanceType.UNIVER_SHEET),ee),h.UniverSheetsTablePlugin=en([ie(1,u.Inject(u.Injector)),ie(2,u.IConfigService),ie(3,u.Inject(u.ICommandService))],h.UniverSheetsTablePlugin),h.AddSheetTableCommand=Re,h.AddSheetTableMutation=V,h.AddTableThemeCommand=pe,h.DeleteSheetTableCommand=Te,h.DeleteSheetTableMutation=J,h.RemoveTableThemeCommand=_e,h.SHEET_TABLE_CUSTOM_THEME_PREFIX=Ie,h.SetSheetTableCommand=ve,h.SetSheetTableFilterCommand=we,h.SetSheetTableFilterMutation=j,h.SetSheetTableMutation=I,h.SheetTableInsertColCommand=Fe,h.SheetTableInsertRowCommand=Me,h.SheetTableRemoveColCommand=De,h.SheetTableRemoveRowCommand=ye,h.SheetsTableButtonStateEnum=E,h.SheetsTableSortStateEnum=A,h.TableColumnDataTypeEnum=ne,h.TableColumnFilterTypeEnum=W,h.TableConditionTypeEnum=O,h.TableDateCompareTypeEnum=S,h.TableNumberCompareTypeEnum=F,h.TableStringCompareTypeEnum=x,h.customEmptyThemeWithBorderStyle=Ae,h.isConditionFilter=ce,h.isManualFilter=$e,h.processStyleWithBorderStyle=Be,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
1
+ (function(h,u){typeof exports=="object"&&typeof module<"u"?u(exports,require("@univerjs/core"),require("@univerjs/sheets"),require("rxjs")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/sheets","rxjs"],u):(h=typeof globalThis<"u"?globalThis:h||self,u(h.UniverSheetsTable={},h.UniverCore,h.UniverSheets,h.rxjs))})(this,function(h,u,C,N){"use strict";var tn=Object.defineProperty;var nn=(h,u,C)=>u in h?tn(h,u,{enumerable:!0,configurable:!0,writable:!0,value:C}):h[u]=C;var R=(h,u,C)=>nn(h,typeof u!="symbol"?u+"":u,C);var ee;var _=(n=>(n.Insert="insert",n.Delete="delete",n))(_||{}),y=(n=>(n.Row="row",n.Col="column",n))(y||{}),ne=(n=>(n.None="none",n.String="string",n.Number="number",n.Date="date",n.Bool="bool",n.Checkbox="checkbox",n.List="list",n))(ne||{}),W=(n=>(n.manual="manual",n.condition="condition",n))(W||{}),O=(n=>(n.Date="date",n.Number="number",n.String="string",n.Logic="logic",n))(O||{}),F=(n=>(n.Equal="equal",n.NotEqual="notEqual",n.GreaterThan="greaterThan",n.GreaterThanOrEqual="greaterThanOrEqual",n.LessThan="lessThan",n.LessThanOrEqual="lessThanOrEqual",n.Between="between",n.NotBetween="notBetween",n.Above="above",n.Below="below",n.TopN="topN",n))(F||{}),x=(n=>(n.Equal="equal",n.NotEqual="notEqual",n.Contains="contains",n.NotContains="notContains",n.StartsWith="startsWith",n.EndsWith="endsWith",n))(x||{}),S=(n=>(n.Equal="equal",n.NotEqual="notEqual",n.After="after",n.AfterOrEqual="afterOrEqual",n.Before="before",n.BeforeOrEqual="beforeOrEqual",n.Between="between",n.NotBetween="notBetween",n.Today="today",n.Yesterday="yesterday",n.Tomorrow="tomorrow",n.ThisWeek="thisWeek",n.LastWeek="lastWeek",n.NextWeek="nextWeek",n.ThisMonth="thisMonth",n.LastMonth="lastMonth",n.NextMonth="nextMonth",n.ThisQuarter="thisQuarter",n.LastQuarter="lastQuarter",n.NextQuarter="nextQuarter",n.ThisYear="thisYear",n.LastYear="lastYear",n.NextYear="nextYear",n.YearToDate="yearToDate",n.Quarter="quarter",n.Month="month",n.M1="m1",n.M2="m2",n.M3="m3",n.M4="m4",n.M5="m5",n.M6="m6",n.M7="m7",n.M8="m8",n.M9="m9",n.M10="m10",n.M11="m11",n.M12="m12",n.Q1="q1",n.Q2="q2",n.Q3="q3",n.Q4="q4",n))(S||{}),E=(n=>(n[n.FilteredSortNone=1]="FilteredSortNone",n[n.FilteredSortAsc=2]="FilteredSortAsc",n[n.FilteredSortDesc=3]="FilteredSortDesc",n[n.FilterNoneSortNone=4]="FilterNoneSortNone",n[n.FilterNoneSortAsc=5]="FilterNoneSortAsc",n[n.FilterNoneSortDesc=6]="FilterNoneSortDesc",n))(E||{}),A=(n=>(n.Asc="asc",n.Desc="desc",n.None="none",n))(A||{});function k(n,e){return`${e} ${n}`}const le="TRUE",ue="FALSE",xe=n=>{var t;return((t=n.body)==null?void 0:t.dataStream.replace(/\r\n$/,""))||""};function de(n){if(n){const{v:e,t,p:a}=n;return a?xe(a):(t===u.CellValueType.FORCE_STRING||t===u.CellValueType.STRING)&&e!==void 0&&e!==null?String(e):t===u.CellValueType.BOOLEAN?e?le:ue:t===u.CellValueType.NUMBER?String(e):typeof e==="boolean"?e?le:ue:e==null?"":String(e)}return""}function Ee(n,e){if(n!==void 0)switch(e){case A.Asc:return E.FilteredSortAsc;case A.Desc:return E.FilteredSortDesc;default:return E.FilteredSortNone}else switch(e){case A.Asc:return E.FilterNoneSortAsc;case A.Desc:return E.FilterNoneSortDesc;default:return E.FilterNoneSortNone}}function ce(n){return n?n.filterType===W.condition:!1}function $e(n){return n?n.filterType===W.manual:!1}const U={s:u.BorderStyleTypes.THIN,cl:{rgb:"rgb(95 101 116)"}},Ae={headerRowStyle:{bd:{t:U}},headerColumnStyle:{bd:{l:U}},lastColumnStyle:{bd:{r:U}},lastRowStyle:{bd:{b:U}}},Be=(n,e)=>{if(n==="headerRowStyle"){if(!e.bd)return{...e,bd:{t:U}}}else if(n==="lastRowStyle"){if(!e.bd)return{...e,bd:{b:U}}}else if(n==="lastColumnStyle"){if(!e.bd)return{...e,bd:{r:U}}}else if(n==="headerColumnStyle"&&!e.bd)return{...e,bd:{l:U}};return e},q=[[["#6280F9","#FFFFFF","#BAC6F8","#D2DAFA"],["#fff"]],[["#16BDCA","#FFFFFF","#EDFAFA","#AFECEF"],["#000"]],[["#31C48D","#FFFFFF","#F3FAF7","#BCF0DA"],["#fff"]],[["#AC94FA","#FFFFFF","#F6F5FF","#EDEBFE"],["#fff"]],[["#F17EBB","#FFFFFF","#FDF2F8","#FCE8F3"],["#fff"]],[["#F98080","#FFFFFF","#FDF2F2","#FDE8E8"],["#fff"]]].map((n,e)=>{const[t,a]=n,[r,s,o,i]=t,[d]=a;return{name:`table-default-${e}`,style:{headerRowStyle:{bg:{rgb:r},cl:{rgb:d},bd:{t:U}},headerColumnStyle:{bd:{l:U}},firstRowStyle:{bg:{rgb:s}},secondRowStyle:{bg:{rgb:o}},lastRowStyle:{bg:{rgb:i},bd:{b:U}},lastColumnStyle:{bd:{r:U}}}}});class B{constructor(e,t){R(this,"dataType");R(this,"id");R(this,"displayName");R(this,"formula");R(this,"meta");R(this,"style");this.id=e,this.displayName=t,this.dataType=ne.String,this.formula="",this.meta={},this.style={}}getMeta(){return this.meta}setMeta(e){this.meta=e}getDisplayName(){return this.displayName}toJSON(){return{id:this.id,displayName:this.displayName,dataType:this.dataType,formula:this.formula,meta:this.meta,style:this.style}}fromJSON(e){this.id=e.id,this.displayName=e.displayName,this.dataType=e.dataType,this.formula=e.formula,this.meta=e.meta,this.style=e.style}}const Le=n=>n.getMonth()<=2,We=n=>{const e=n.getMonth();return e>2&&e<=5},qe=n=>{const e=n.getMonth();return e>5&&e<=8},Pe=n=>{const e=n.getMonth();return e>8&&e<=11},He=n=>n.getMonth()===0,Ve=n=>n.getMonth()===1,Je=n=>n.getMonth()===2,ke=n=>n.getMonth()===3,Qe=n=>n.getMonth()===4,Ye=n=>n.getMonth()===5,je=n=>n.getMonth()===6,Ge=n=>n.getMonth()===7,ze=n=>n.getMonth()===8,Ke=n=>n.getMonth()===9,Xe=n=>n.getMonth()===10,Ze=n=>n.getMonth()===11,et=(n,e=new Date)=>n.toDateString()===e.toDateString(),tt=(n,e=new Date)=>{const t=new Date(e);return t.setDate(t.getDate()+1),n.toDateString()===t.toDateString()},nt=(n,e=new Date)=>{const t=new Date(e);return t.setDate(t.getDate()-1),n.toDateString()===t.toDateString()},P=n=>{const e=n.getDay(),t=n.getDate()-e+(e===0?-6:1),a=new Date(n);return a.setDate(t),a},ge=7*24*60*60*1e3,at=(n,e=new Date)=>{const t=P(n),a=P(e);return t.toDateString()===a.toDateString()},rt=(n,e=new Date)=>{const t=P(n),a=new Date(P(e).getTime()+ge);return t.toDateString()===a.toDateString()},st=(n,e=new Date)=>{const t=P(n),a=new Date(P(e).getTime()-ge);return t.toDateString()===a.toDateString()},ot=(n,e=new Date)=>n.getFullYear()===e.getFullYear()&&n.getMonth()===e.getMonth(),it=n=>{const e=new Date(n);return e.setHours(0,0,0,0),e.setDate(1),e},lt=(n,e=new Date)=>{const t=new Date(e);t.setHours(0,0,0,0),t.setMonth(t.getMonth()+1,1);const a=new Date(t);a.setMonth(a.getMonth()+1,0);const r=n.getTime();return r>=t.getTime()&&r<a.getTime()},ut=(n,e=new Date)=>{const t=it(e),a=new Date(t);a.setMonth(a.getMonth()+1,0);const r=n.getTime();return r>=t.getTime()&&r<a.getTime()},ae=n=>{const e=new Date(n);e.setHours(0,0,0,0),e.setDate(1);const t=e.getMonth();return e.setMonth(t-t%3),e},dt=(n,e=new Date)=>{const t=ae(e),a=new Date(t);a.setMonth(a.getMonth()+3);const r=n.getTime();return r>=t.getTime()&&r<a.getTime()},ct=(n,e=new Date)=>{const t=ae(e),a=new Date(t);a.setMonth(a.getMonth()+3);const r=new Date(a);r.setMonth(r.getMonth()+3,0);const s=n.getTime();return s>=a.getTime()&&s<r.getTime()},gt=(n,e=new Date)=>{const t=ae(e),a=new Date(t);a.setMonth(a.getMonth()-3);const r=new Date(t);r.setDate(0);const s=n.getTime();return s>=a.getTime()&&s<r.getTime()},ht=(n,e=new Date)=>n.getFullYear()===e.getFullYear(),mt=(n,e=new Date)=>n.getFullYear()===e.getFullYear()+1,bt=(n,e=new Date)=>n.getFullYear()===e.getFullYear()-1,St=(n,e=new Date)=>{const t=new Date(e);t.setHours(0,0,0,0),t.setMonth(0,1);const a=n.getTime();return a>=t.getTime()&&a<e.getTime()};function Ct(n){switch(n.compareType){case S.Equal:{const e=n.expectedValue;return t=>t.getTime()===e.getTime()}case S.NotEqual:{const e=n.expectedValue;return t=>t.getTime()!==e.getTime()}case S.After:{const e=n.expectedValue;return t=>t.getTime()>e.getTime()}case S.Before:{const e=n.expectedValue;return t=>t.getTime()<e.getTime()}case S.AfterOrEqual:{const e=n.expectedValue;return t=>t.getTime()>=e.getTime()}case S.BeforeOrEqual:{const e=n.expectedValue;return t=>t.getTime()<=e.getTime()}case S.Between:return e=>{const[t,a]=n.expectedValue;return e.getTime()>=new Date(t).getTime()&&e.getTime()<=new Date(a).getTime()};case S.NotBetween:return e=>{const[t,a]=n.expectedValue;return e.getTime()<new Date(t).getTime()||e.getTime()>new Date(a).getTime()};case S.Today:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>et(t,e)}case S.Yesterday:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>nt(t,e)}case S.Tomorrow:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>tt(t,e)}case S.ThisWeek:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>at(t,e)}case S.LastWeek:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>st(t,e)}case S.NextWeek:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>rt(t,e)}case S.ThisMonth:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>ot(t,e)}case S.LastMonth:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>ut(t,e)}case S.NextMonth:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>lt(t,e)}case S.ThisQuarter:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>dt(t,e)}case S.LastQuarter:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>gt(t,e)}case S.NextQuarter:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>ct(t,e)}case S.ThisYear:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>ht(t,e)}case S.LastYear:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>bt(t,e)}case S.NextYear:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>mt(t,e)}case S.YearToDate:{const e=n.anchorTime?new Date(n.anchorTime):new Date;return t=>St(t,e)}case S.M1:return He;case S.M2:return Ve;case S.M3:return Je;case S.M4:return ke;case S.M5:return Qe;case S.M6:return Ye;case S.M7:return je;case S.M8:return Ge;case S.M9:return ze;case S.M10:return Ke;case S.M11:return Xe;case S.M12:return Ze;case S.Q1:return Le;case S.Q2:return We;case S.Q3:return qe;case S.Q4:return Pe;default:throw new Error("Unsupported compare type")}}class Rt{constructor(){R(this,"heap");this.heap=[]}swap(e,t){const a=this.heap[e];this.heap[e]=this.heap[t],this.heap[t]=a}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)}}class Tt extends Rt{constructor(){super()}shiftUp(e){if(e===0)return;const t=this.getParentIndex(e);this.heap[t]>this.heap[e]&&(this.swap(t,e),this.shiftUp(t))}shiftDown(e){const t=this.getLeftIndex(e),a=this.getRightIndex(e);this.heap[t]<this.heap[e]&&(this.swap(t,e),this.shiftDown(t)),this.heap[a]<this.heap[e]&&(this.swap(a,e),this.shiftDown(a))}insert(e){this.heap.push(e),this.shiftUp(this.heap.length-1)}pop(){this.heap[0]=this.heap.pop(),this.shiftDown(0)}}const wt=(n,e)=>{const t=new Tt;for(const a of n)t.insert(a),t.size()>e&&t.pop();return t.heap},ft=(n,e)=>n>e,It=(n,e)=>n<e,pt=(n,e,t)=>wt(n,e).includes(t);function _t(n,e){switch(n.compareType){case F.Equal:{const t=Number(n.expectedValue);return a=>a===t}case F.NotEqual:{const t=Number(n.expectedValue);return a=>a!==t}case F.GreaterThan:{const t=Number(n.expectedValue);return a=>a>t}case F.GreaterThanOrEqual:{const t=Number(n.expectedValue);return a=>a>=t}case F.LessThan:{const t=Number(n.expectedValue);return a=>a<t}case F.LessThanOrEqual:{const t=Number(n.expectedValue);return a=>a<=t}case F.Between:{const[t,a]=n.expectedValue,r=Number(t),s=Number(a);return r>s?o=>o>=s&&o<=r:o=>o>=r&&o<=s}case F.NotBetween:{const[t,a]=n.expectedValue,r=Number(t),s=Number(a);return r>s?o=>o<s||o>r:o=>o<r||o>s}case F.Above:{const t=e.average;return a=>ft(a,t)}case F.Below:{const t=e.average;return a=>It(a,t)}case F.TopN:{const t=e.list,a=Number(n.expectedValue);return r=>pt(t,a,r)}}}const H=n=>{const t=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/\\\*/g,".*").replace(/\\\?/g,".");return new RegExp(`^${t}$`)},vt=(n,e)=>H(e).test(n),Mt=(n,e)=>!H(e).test(n),Ft=(n,e)=>H(`*${e}*`).test(n),yt=(n,e)=>!H(`*${e}*`).test(n),Dt=(n,e)=>H(`${e}*`).test(n),Nt=(n,e)=>H(`*${e}`).test(n);function Ot(n){switch(n.compareType){case x.Equal:return e=>vt(e,n.expectedValue);case x.NotEqual:return e=>Mt(e,n.expectedValue);case x.Contains:return e=>Ft(e,n.expectedValue);case x.NotContains:return e=>yt(e,n.expectedValue);case x.StartsWith:return e=>Dt(e,n.expectedValue);case x.EndsWith:return e=>Nt(e,n.expectedValue);default:return console.error(`Unknown filter operator: ${n.compareType}`),e=>!0}}const Ut=new Set([F.Above,F.Below,F.TopN]);S.Today,S.Yesterday,S.Tomorrow,S.ThisWeek,S.LastWeek,S.NextWeek,S.ThisMonth,S.LastMonth,S.NextMonth,S.ThisQuarter,S.LastQuarter,S.NextQuarter,S.NextYear,S.ThisYear,S.LastYear,S.YearToDate;function he(n){return Ut.has(n)}function xt(n,e){if(he(n.filterInfo.compareType))return t=>!0;switch(n.filterInfo.conditionType){case O.Date:return Ct(n.filterInfo);case O.Number:return _t(n.filterInfo,e);case O.String:return Ot(n.filterInfo);case O.Logic:default:return t=>!0}}function Y(n,e,t,a){switch(a){case O.Date:{const r=me(n,e,t);return r?At(r):null}case O.Number:return me(n,e,t);case O.String:default:return $t(n,e,t)}}const Et=n=>{var t;return((t=n.body)==null?void 0:t.dataStream.replace(/\r\n$/,""))||""};function $t(n,e,t){const a=n.getCell(e,t);if(!a)return null;const{v:r,t:s,p:o}=a;return o?Et(o):typeof r=="string"?s===u.CellValueType.BOOLEAN?r.toUpperCase():r:typeof r=="number"?s===u.CellValueType.BOOLEAN?r?"TRUE":"FALSE":r:typeof r=="boolean"?r?"TRUE":"FALSE":r===void 0?"(空白)":String(r)}function me(n,e,t){const a=n.getCell(e,t);if(!a)return null;const{v:r,t:s,p:o}=a;return o?null:typeof r=="string"&&s===u.CellValueType.NUMBER?Number(n.getCellRaw(e,t).v):Number(r)}function At(n){const e=new Date(Date.UTC(1900,0,1,0,0,0)),t=new Date(Date.UTC(1900,1,28,0,0,0));let a=n-1;return a>(t.getTime()-e.getTime())/(1e3*3600*24)&&(a-=1),a<0&&(a=n),new Date(e.getTime()+a*(1e3*3600*24))}class be{constructor(){R(this,"_tableColumnFilterList");R(this,"_tableSortInfo");R(this,"_filterOutRows");this._tableColumnFilterList=[]}setColumnFilter(e,t){t?this._tableColumnFilterList[e]=t:this._tableColumnFilterList[e]=void 0}setSortState(e,t){this._tableSortInfo={columnIndex:e,sortState:t}}getColumnFilter(e){return this._tableColumnFilterList[e]}getFilterState(e){var a;const t=((a=this._tableSortInfo)==null?void 0:a.columnIndex)===e?this._tableSortInfo.sortState:A.None;return Ee(this._tableColumnFilterList[e],t)}getSortState(){var e;return(e=this._tableSortInfo)!=null?e:{}}getFilterStates(e){const t=[],{startColumn:a,endColumn:r}=e;for(let s=a;s<=r;s++)t.push(this.getFilterState(s-a));return t}getFilterOutRows(){return this._filterOutRows}doFilter(e,t){const a=new Set,r=this._tableColumnFilterList;for(let s=0;s<r.length;s++)r[s]&&this.doColumnFilter(e,t,s,a);return this._filterOutRows=a,a}doColumnFilter(e,t,a,r){const s=this._tableColumnFilterList[a];if(s&&e){const{startRow:o,endRow:i,startColumn:d}=t,l=d+a,g=this.getExecuteFunc(e,t,a,s);for(let m=o;m<=i;m++){const c=ce(s)?s.filterInfo.conditionType:O.String;Y(e,m,l,c)===null?r.add(m):g(Y(e,m,l,c))||r.add(m)}}}_getNumberCalculatedOptions(e,t,a){const{startRow:r,endRow:s,startColumn:o}=t,i=o+a,d=[];let l=0,g=0;for(let m=r;m<=s;m++){const c=Y(e,m,i,O.Number);c!==null&&(d.push(c),l++,g+=c)}return{list:d,average:l>0?g/l:0}}getExecuteFunc(e,t,a,r){if(r.filterType===W.manual){const s=new Set(r.values);return o=>s.has(o)}else if(r.filterType===W.condition){const o=he(r.filterInfo.compareType)?this._getNumberCalculatedOptions(e,t,a):void 0;return xt(r,o)}else return s=>!0}toJSON(){return{tableColumnFilterList:this._tableColumnFilterList,tableSortInfo:this._tableSortInfo}}fromJSON(e){var t;this._tableColumnFilterList=(t=e.tableColumnFilterList)!=null?t:[],e.tableSortInfo&&(this._tableSortInfo=e.tableSortInfo)}dispose(){this._tableColumnFilterList=[]}}class Se{constructor(e,t,a,r,s={}){R(this,"_id");R(this,"_name");R(this,"_tableStyleId");R(this,"_showHeader");R(this,"_showFooter");R(this,"_range");R(this,"_columns",new Map);R(this,"_columnOrder",[]);R(this,"tableMeta");R(this,"_tableFilters");R(this,"_subUnitId");this._id=e,this._range=a,this._name=t,this._tableFilters=new be,this._init(r,s)}_init(e,t){var a;if(this._tableStyleId=t==null?void 0:t.tableStyleId,this._showHeader=(a=t==null?void 0:t.showHeader)!=null?a:!0,this._showFooter=!1,t.columns)t.columns.forEach(r=>{const s=r.id||u.generateRandomId(),o=new B(s,r.displayName);o.fromJSON(r),this._columns.set(s,o),this._columnOrder.push(s)});else{const r=this.getRange(),s=r.startColumn,o=r.endColumn;for(let i=s;i<=o;i++){const d=u.generateRandomId(),l=new B(d,e[i-s]);this._columns.set(d,l),this._columnOrder.push(d)}}t.filters&&t.filters.forEach((s,o)=>{s&&this._tableFilters.setColumnFilter(o,s)})}setTableFilterColumn(e,t){this._tableFilters.setColumnFilter(e,t)}getTableFilterColumn(e){return this._tableFilters.getColumnFilter(e)}getTableFilters(){return this._tableFilters}getTableFilterRange(){const e=this.getRange(),t=this.isShowHeader(),a=this.isShowFooter(),{startRow:r,startColumn:s,endRow:o,endColumn:i}=e,d=t?r+1:r,l=a?o-1:o;return{startRow:d,startColumn:s,endRow:l,endColumn:i}}setColumns(e){this._columns.clear(),this._columnOrder=[],e.forEach(t=>{const a=new B(t.id,t.displayName);a.fromJSON(t),this._columns.set(t.id,a),this._columnOrder.push(t.id)})}getColumnsCount(){return this._columnOrder.length}insertColumn(e,t){const a=t.id;this._columns.set(a,t),this._columnOrder.splice(e,0,a)}removeColumn(e){const 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){const t=this._columnOrder[e];return this.getColumn(t)}getColumnNameByIndex(e){var a;const t=this._columnOrder[e];return((a=this.getColumn(t))==null?void 0:a.getDisplayName())||""}getId(){return this._id}getRangeInfo(){return{...this._range}}getRange(){return{...this._range}}setRange(e){this._range=e}setDisplayName(e){this._name=e}getDisplayName(){return this._name}getSubunitId(){return this._subUnitId}setSubunitId(e){this._subUnitId=e}getTableStyleId(){var e;return(e=this._tableStyleId)!=null?e:q[0].name}setTableStyleId(e){this._tableStyleId=e}isShowHeader(){var e;return(e=this._showHeader)!=null?e:!0}setShowHeader(e){this._showHeader=e}isShowFooter(){var e;return(e=this._showFooter)!=null?e:!1}getTableInfo(){return{id:this._id,subUnitId:this._subUnitId,name:this._name,range:this.getRangeInfo(),meta:this.tableMeta,showHeader:this._showHeader,columns:this._columnOrder.map(e=>this._columns.get(e).toJSON())}}getTableConfig(){return{name:this.getDisplayName(),range:this.getRangeInfo(),options:{showHeader:this._showHeader,showFooter:this._showFooter},tableStyleId:this._tableStyleId}}getFilterStates(e){return this._tableFilters.getFilterStates(e)}toJSON(){const e=[];return this._columns.forEach(t=>{e.push(t.toJSON())}),{id:this._id,name:this._name,range:this.getRangeInfo(),options:{showHeader:this._showHeader,showFooter:this._showFooter,tableStyleId:this._tableStyleId},filters:this._tableFilters.toJSON(),columns:e,meta:this.tableMeta}}fromJSON(e){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,e.columns.forEach(a=>{const r=new B(a.id,a.displayName);r.fromJSON(a),this._columns.set(a.id,r),this._columnOrder.push(a.id)}),this._tableFilters=new be,this._tableFilters.fromJSON(e.filters)}dispose(){this._id="",this._name="",this._tableStyleId="",this._showHeader=!0,this._showFooter=!0,delete this._range,this._columns.clear(),this._columnOrder=[]}}var Bt=Object.getOwnPropertyDescriptor,Lt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Bt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},Ce=(n,e)=>(t,a)=>e(t,a,n);h.TableManager=class extends u.Disposable{constructor(t,a){super();R(this,"_tableMap");R(this,"_tableAdd$",new N.Subject);R(this,"tableAdd$",this._tableAdd$.asObservable());R(this,"_tableDelete$",new N.Subject);R(this,"tableDelete$",this._tableDelete$.asObservable());R(this,"_tableNameChanged$",new N.Subject);R(this,"tableNameChanged$",this._tableNameChanged$.asObservable());R(this,"_tableRangeChanged$",new N.Subject);R(this,"tableRangeChanged$",this._tableRangeChanged$.asObservable());R(this,"_tableThemeChanged$",new N.Subject);R(this,"tableThemeChanged$",this._tableThemeChanged$.asObservable());R(this,"_tableFilterChanged$",new N.Subject);R(this,"tableFilterChanged$",this._tableFilterChanged$.asObservable());R(this,"_tableInitStatus",new N.BehaviorSubject(!1));R(this,"tableInitStatus$",this._tableInitStatus.asObservable());this._univerInstanceService=t,this._localeService=a,this._tableMap=new Map}_ensureUnit(t){return this._tableMap.has(t)||this._tableMap.set(t,new Map),this._tableMap.get(t)}getColumnHeader(t,a,r,s){var c;const o=(c=this._univerInstanceService.getUnit(t))==null?void 0:c.getSheetBySheetId(a),{startRow:i,startColumn:d,endColumn:l}=r,g=[],m=s!=null?s:"Column";for(let b=d;b<=l;b++)g.push(de(o==null?void 0:o.getCell(i,b))||k(b-d+1,m));return g}addTable(t,a,r,s,o,i,d){const l=i!=null?i:u.generateRandomId(),g=o||this.getColumnHeader(t,a,s),m=new Se(l,r,s,g,d);return m.setSubunitId(a),this._ensureUnit(t).set(l,m),this._tableAdd$.next({unitId:t,subUnitId:a,range:s,tableName:r,tableId:l}),l}addFilter(t,a,r,s){const o=this.getTable(t,a);if(o){o.getTableFilters().setColumnFilter(r,s);const d=o.getSubunitId();this._tableFilterChanged$.next({unitId:t,subUnitId:d,tableId:a})}}getFilterRanges(t,a){const r=this._tableMap.get(t);if(!r)return[];const s=[];return r.forEach(o=>{o.getSubunitId()===a&&o.isShowHeader()&&s.push(o.getRange())}),s}getSheetFilterRangeWithState(t,a){const r=this._tableMap.get(t);if(!r)return[];const s=[];return r.forEach(o=>{o.getSubunitId()===a&&o.isShowHeader()&&s.push({tableId:o.getId(),range:o.getRange(),states:o.getFilterStates(o.getRange())})}),s}getTable(t,a){const r=this._tableMap.get(t);if(r)return r.get(a)}getUniqueTableName(t,a){const r=this._tableMap.get(t);if(!r)return a;const s=new Set(Array.from(r.values()).map(d=>d.getDisplayName()));let o=a,i=1;for(;s.has(o);)o=`${a}-${i}`,i++;return o}getTableById(t,a){return this.getTable(t,a)}getTableList(t){const a=this._tableMap.get(t);return a?Array.from(a.values()).map(r=>({...r.getTableInfo(),unitId:t})):[]}getTablesBySubunitId(t,a){const r=this._tableMap.get(t);return r?Array.from(r.values()).filter(s=>s.getSubunitId()===a):[]}getTablesInfoBySubunitId(t,a){return this.getTablesBySubunitId(t,a).map(r=>({id:r.getId(),name:r.getDisplayName(),range:r.getRange()}))}deleteTable(t,a){const r=this._tableMap.get(t),s=r==null?void 0:r.get(a);if(s){const o=s.getTableInfo(),i=s.getTableStyleId();r==null||r.delete(a);const{subUnitId:d,range:l,name:g}=o;this._tableDelete$.next({unitId:t,subUnitId:d,tableId:a,range:l,tableName:g,tableStyleId:i})}}operationTableRowCol(t,a,r){const s=this.getTableById(t,a);if(!s)return;const{operationType:o,rowColType:i,index:d,count:l,columnsJson:g}=r,m=s.getRange(),c={...m};if(o===_.Insert){if(i==="row")c.endRow+=l;else if(i==="column"){c.endColumn+=l;for(let b=0;b<l;b++){const f=this._localeService.t("sheets-table.columnPrefix"),T=new B(u.generateRandomId(),k(s.getColumnsCount()+1+b,f));g!=null&&g[b]&&T.fromJSON(g[b]);const p=d+b-m.startColumn;s.insertColumn(p,T)}}}else if(i==="row")c.endRow-=l;else if(i==="column"){c.endColumn-=l;for(let b=l-1;b>=0;b--){const f=d+b-m.startColumn;s.removeColumn(f)}}s.setRange(c),this._tableRangeChanged$.next({unitId:t,subUnitId:s.getSubunitId(),tableId:a,range:c,oldRange:m})}updateTableRange(t,a,r){const s=this.getTableById(t,a);if(!s)return;const o=s.getRange(),i=r.newRange;if(i.startColumn<o.startColumn){const d=o.startColumn-i.startColumn,l=this._localeService.t("sheets-table.columnPrefix");for(let g=0;g<d;g++)s.insertColumn(o.startColumn,new B(u.generateRandomId(),k(s.getColumnsCount()+1,l)))}else if(i.startColumn>o.startColumn){const d=i.startColumn-o.startColumn;for(let l=d-1;l>=0;l--){const g=i.startColumn+l-o.startColumn;s.removeColumn(g)}}if(i.endColumn<o.endColumn){const d=o.endColumn-i.endColumn;for(let l=d-1;l>=0;l--){const g=i.endColumn+l-o.startColumn;s.removeColumn(g)}}else if(i.endColumn>o.endColumn){const d=i.endColumn-o.endColumn;for(let l=0;l<d;l++)s.insertColumn(o.endColumn,new B(u.generateRandomId(),k(s.getColumnsCount()+1,"Column")))}s.setRange(i),this._tableRangeChanged$.next({unitId:t,subUnitId:s.getSubunitId(),tableId:a,range:i,oldRange:o})}setTableByConfig(t,a,r){var b;const s=this._tableMap.get(t),o=s==null?void 0:s.get(a);if(!o)return;const i=o.getSubunitId(),{name:d,updateRange:l,rowColOperation:g,theme:m,options:c}=r;if(d){const f=o.getDisplayName();o.setDisplayName(d),this._tableNameChanged$.next({unitId:t,subUnitId:i,tableId:a,tableName:d,oldTableName:f})}if(g&&this.operationTableRowCol(t,a,g),l&&this.updateTableRange(t,a,l),m){const f=(b=o.getTableStyleId())!=null?b:"default";o.setTableStyleId(m),this._tableThemeChanged$.next({unitId:t,subUnitId:i,tableId:a,theme:m,oldTheme:f})}c&&c.showHeader!==void 0&&o.setShowHeader(c.showHeader)}toJSON(t){const a={},r=this._tableMap.get(t);return r&&r.forEach(s=>{const o=s.getSubunitId();a[o]||(a[o]=[]),a[o].push(s.toJSON())}),a}fromJSON(t,a){const r=this._ensureUnit(t);Object.keys(a).forEach(o=>{const i=C.getSheetCommandTarget(this._univerInstanceService,{unitId:t,subUnitId:o});if(!i)return;const d=i.worksheet;a[o].forEach(g=>{const m=this.getColumnHeader(t,o,g.range),c=new Se(g.id,g.name,g.range,m,g.options);if(c.setTableMeta(g.meta),g.columns.length&&c.setColumns(g.columns),g.filters){const b=c.getTableFilters();b.fromJSON(g.filters),b.doFilter(d,c.getTableFilterRange())}c.setSubunitId(o),r.set(g.id,c),this._tableAdd$.next({unitId:t,subUnitId:o,range:g.range,tableName:g.name,tableId:g.id})})}),this._tableInitStatus.next(!0)}deleteUnitId(t){this._tableMap.delete(t)}dispose(){super.dispose(),this._tableMap.forEach(t=>{t.forEach(a=>a.dispose()),t.clear()}),this._tableMap.clear()}},h.TableManager=Lt([Ce(0,u.IUniverInstanceService),Ce(1,u.Inject(u.LocaleService))],h.TableManager);var Wt=Object.getOwnPropertyDescriptor,qt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Wt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},Pt=(n,e)=>(t,a)=>e(t,a,n);h.SheetTableService=class extends u.Disposable{constructor(e){super(),this._tableManager=e}getTableInfo(e,t){const a=this._tableManager.getTable(e,t);if(a)return{unitId:e,...a.getTableInfo()}}getTableList(e){return this._tableManager.getTableList(e)}addTable(e,t,a,r,s,o,i){return this._tableManager.addTable(e,t,a,r,s,o,i)}deleteTable(e,t,a){this._tableManager.deleteTable(e,a)}getTableMeta(e,t){var a;return(a=this._tableManager.getTable(e,t))==null?void 0:a.getTableMeta()}setTableMeta(e,t,a){var r;(r=this._tableManager.getTable(e,t))==null||r.setTableMeta(a)}getTableColumnMeta(e,t,a){var r,s;return(s=(r=this._tableManager.getTable(e,t))==null?void 0:r.getTableColumnByIndex(a))==null?void 0:s.getMeta()}selTableColumnMeta(e,t,a,r){var s,o;(o=(s=this._tableManager.getTable(e,t))==null?void 0:s.getTableColumnByIndex(a))==null||o.setMeta(r)}addFilter(e,t,a,r){this._tableManager.addFilter(e,t,a,r)}getCellValueWithConditionType(e,t,a,r=O.String){return Y(e,t,a,r)}},h.SheetTableService=qt([Pt(0,u.Inject(h.TableManager))],h.SheetTableService);const V={id:"sheet.mutation.add-table",type:u.CommandType.MUTATION,handler:(n,e)=>{const{tableId:t,unitId:a,subUnitId:r,name:s,range:o,header:i,options:d}=e;return n.get(h.SheetTableService).addTable(a,r,s,o,i,t,d),!0}},J={id:"sheet.mutation.delete-table",type:u.CommandType.MUTATION,handler:(n,e)=>{const{unitId:t,subUnitId:a,tableId:r}=e;return n.get(h.SheetTableService).deleteTable(t,a,r),!0}},Re={id:"sheet.command.add-table",type:u.CommandType.COMMAND,handler:(n,e)=>{var T;if(!e)return!1;const t=n.get(u.IUndoRedoService),a=n.get(u.ICommandService),r=n.get(u.LocaleService),s=(T=e.id)!=null?T:u.generateRandomId();let o=e.name;if(!o){const w=n.get(h.TableManager).getTableList(e.unitId).length;o=`${r.t("sheets-table.tablePrefix")} ${w+1}`}const i=[],d=[],l=n.get(h.TableManager),{unitId:g,subUnitId:m,range:c}=e,b=l.getColumnHeader(g,m,c,r.t("sheets-table.columnPrefix"));return i.push({id:V.id,params:{...e,tableId:s,name:o,header:b}}),d.push({id:J.id,params:{tableId:s,unitId:e.unitId}}),u.sequenceExecute(i,a)&&t.pushUndoRedo({unitID:e.unitId,undoMutations:d,redoMutations:i}),!0}},Te={id:"sheet.command.delete-table",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(u.IUndoRedoService),a=n.get(u.ICommandService),r=n.get(h.TableManager),s=[],o=[],i=r.getTable(e.unitId,e.tableId),d=i==null?void 0:i.toJSON();if(!d)throw new Error("[TableManager]: Table not found");return s.push({id:J.id,params:{...e}}),o.push({id:V.id,params:{unitId:e.unitId,subUnitId:e.subUnitId,tableId:e.tableId,name:d.name,range:d.range,options:d.options}}),u.sequenceExecute(s,a)&&t.pushUndoRedo({unitID:e.unitId,undoMutations:o,redoMutations:s}),!0}},j={id:"sheet.mutation.set-table-filter",type:u.CommandType.MUTATION,handler:(n,e)=>{const{tableId:t,unitId:a,column:r,tableFilter:s}=e;return n.get(h.TableManager).addFilter(a,t,r,s),!0}},we={id:"sheet.command.set-table-filter",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(u.IUndoRedoService),a=n.get(u.ICommandService),r=e.tableId||u.generateRandomId(),s=[],o=[];return s.push({id:j.id,params:{...e,tableId:r}}),o.push({id:j.id,params:{...e,tableId:r,tableFilter:void 0}}),u.sequenceExecute(s,a)&&t.pushUndoRedo({unitID:e.unitId,undoMutations:o,redoMutations:s}),!0}},fe="SHEET_TABLE_PLUGIN",G="SHEET_TABLE",Ie="table-custom";var Ht=Object.getOwnPropertyDescriptor,Vt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Ht(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},re=(n,e)=>(t,a)=>e(t,a,n);h.SheetsTableController=class extends u.Disposable{constructor(t,a,r){super();R(this,"_tableRangeRTree",new Map);this._sheetInterceptorService=t,this._tableManager=a,this._resourceManagerService=r,this._initSnapshot(),this.registerTableChangeEvent(),this.registerTableHeaderInterceptor()}getContainerTableWithRange(t,a,r){const s=this._ensureTableRangeRTree(t),i=Array.from(s.bulkSearch([{unitId:t,sheetId:a,range:r}])).find(d=>{const l=this._tableManager.getTable(t,String(d));return l?u.Rectangle.contains(l.getRange(),r):!1});if(i)return this._tableManager.getTable(t,String(i))}_ensureTableRangeRTree(t){return this._tableRangeRTree.has(t)||this._tableRangeRTree.set(t,new u.RTree),this._tableRangeRTree.get(t)}registerTableChangeEvent(){this.disposeWithMe(this._tableManager.tableAdd$.subscribe(t=>{const{range:a,tableId:r,unitId:s,subUnitId:o}=t;this._ensureTableRangeRTree(s).insert({unitId:s,sheetId:o,id:r,range:{...a}})})),this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe(t=>{const{range:a,tableId:r,unitId:s,subUnitId:o,oldRange:i}=t,d=this._ensureTableRangeRTree(s);d.remove({unitId:s,sheetId:o,id:r,range:{...i}}),d.insert({unitId:s,sheetId:o,id:r,range:{...a}})})),this.disposeWithMe(this._tableManager.tableDelete$.subscribe(t=>{const{tableId:a,unitId:r,subUnitId:s,range:o}=t;this._ensureTableRangeRTree(r).remove({unitId:r,sheetId:s,id:a,range:{...o}})}))}registerTableHeaderInterceptor(){this.disposeWithMe(this._sheetInterceptorService.intercept(C.INTERCEPTOR_POINT.CELL_CONTENT,{effect:u.InterceptorEffectEnum.Value,handler:(t,a,r)=>{const{row:s,col:o,unitId:i,subUnitId:d}=a,l=this._ensureTableRangeRTree(i);if((t==null?void 0:t.v)===void 0&&l){const m=Array.from(l.bulkSearch([{unitId:i,sheetId:d,range:{startColumn:o,endColumn:o,startRow:s,endRow:s}}]));if(m.length>0){const c=this._tableManager.getTable(i,m[0]);if(c){const b=c.getRange(),f=o-b.startColumn;if(b.startRow===s){const p=c.getColumnNameByIndex(f);return(!t||t===a.rawData)&&(t={...a.rawData}),t.v=p,r(t)}}}}return r(t)}}))}_toJson(t){return this._tableManager.toJSON(t)}_fromJSON(t,a){return this._tableManager.fromJSON(t,a)}_deleteUnitId(t){this._tableManager.deleteUnitId(t)}_initSnapshot(){this.disposeWithMe(this._resourceManagerService.registerPluginResource({toJson:t=>JSON.stringify(this._toJson(t)),parseJson:t=>{if(!t)return{};try{return JSON.parse(t)}catch{return{}}},businesses:[u.UniverInstanceType.UNIVER_SHEET],pluginName:fe,onLoad:(t,a)=>{this._fromJSON(t,a)},onUnLoad:t=>{this._deleteUnitId(t)}}))}dispose(){super.dispose(),this._tableRangeRTree.clear()}},h.SheetsTableController=Vt([re(0,u.Inject(C.SheetInterceptorService)),re(1,u.Inject(h.TableManager)),re(2,u.Inject(u.IResourceManagerService))],h.SheetsTableController);const I={id:"sheet.mutation.set-sheet-table",type:u.CommandType.MUTATION,handler:(n,e)=>{if(!e)return!1;const{unitId:t,tableId:a,config:r}=e;return n.get(h.TableManager).setTableByConfig(t,a,r),!0}},pe={id:"sheet.command.add-table-theme",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(h.TableManager),{unitId:a,tableId:r,themeStyle:s}=e,o=[],i=[],d=t.getTableById(a,r);if(!d)return!1;const l=d.getSubunitId();o.push({id:C.AddRangeThemeMutation.id,params:{unitId:a,subUnitId:l,styleJSON:s.toJson()}}),o.push({id:I.id,params:{unitId:a,subUnitId:l,tableId:r,config:{theme:s.getName()}}}),i.push({id:I.id,params:{unitId:a,subUnitId:l,tableId:r,config:{themeStyle:d.getTableStyleId()}}}),i.push({id:C.RemoveRangeThemeMutation.id,params:{unitId:a,subUnitId:l,styleName:s.getName()}});const g=n.get(u.ICommandService);return u.sequenceExecute(o,g)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:a,undoMutations:i,redoMutations:o}),!0}},_e={id:"sheet.command.remove-table-theme",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const{unitId:t,tableId:a,themeName:r}=e,s=n.get(h.TableManager),o=n.get(C.SheetRangeThemeModel),i=s.getTableById(t,a);if(!i)return!1;const d=i.getSubunitId(),l=[],g=[],m=o.getRegisteredRangeThemes().filter(w=>w==null?void 0:w.startsWith("table-default"));let b=o.getRegisteredRangeThemes().filter(w=>w==null?void 0:w.startsWith(Ie)).find(w=>w!==r);b||(b=m[0]),l.push({id:I.id,params:{unitId:t,subUnitId:d,tableId:a,config:{theme:b}}}),l.push({id:C.RemoveRangeThemeMutation.id,params:{unitId:t,subUnitId:d,styleName:r}});const f=o.getDefaultRangeThemeStyle(r);f&&(g.push({id:C.AddRangeThemeMutation.id,params:{unitId:t,subUnitId:d,styleJSON:f.toJson()}}),g.push({id:I.id,params:{unitId:t,subUnitId:d,tableId:a,config:{theme:r}}}));const T=n.get(u.ICommandService);return u.sequenceExecute(l,T)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:t,redoMutations:l,undoMutations:g}),!0}},ve={id:"sheet.command.set-table-config",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const{unitId:t,tableId:a,name:r,updateRange:s,rowColOperation:o,theme:i}=e,l=n.get(h.TableManager).getTableById(t,a);if(!l)return!1;const g={},m={};r&&(g.name=l.getDisplayName(),m.name=r),o&&(g.rowColOperation={operationType:o.operationType===_.Insert?_.Delete:_.Insert,rowColType:o.rowColType,index:o.index,count:o.count},m.rowColOperation=o),s&&(g.updateRange={newRange:l.getRange()},m.updateRange=s),i&&(g.theme=l.getTableStyleId(),m.theme=i);const c={unitId:t,subUnitId:l.getSubunitId(),tableId:a,config:m};return n.get(u.ICommandService).executeCommand(I.id,c),n.get(u.IUndoRedoService).pushUndoRedo({unitID:t,undoMutations:[{id:I.id,params:{unitId:t,subUnitId:l.getSubunitId(),tableId:a,config:g}}],redoMutations:[{id:I.id,params:c}]}),!0}},Me={id:"sheet.command.table-insert-row",type:u.CommandType.COMMAND,handler:n=>{const e=n.get(u.IUniverInstanceService),t=C.getSheetCommandTarget(e);if(!t)return!1;const{workbook:a,worksheet:r,unitId:s,subUnitId:o}=t,d=n.get(C.SheetsSelectionsService).getCurrentSelections();if(!d.length||d.length>1)return!1;n.get(h.TableManager);const g=d[0].range,c=n.get(h.SheetsTableController).getContainerTableWithRange(s,o,g);if(!c)return!1;const b=g.endRow-g.startRow+1,T=r.getRowCount()-1,p=r.getCellMatrix().getDataRange().endRow,w=[],v=[];if(T-p<b)w.push({id:C.InsertRowMutation.id,params:{unitId:s,subUnitId:o,range:{...g}}}),w.push({id:I.id,params:{unitId:s,subUnitId:o,tableId:c.getId(),config:{updateRange:{newRange:{...c.getRange(),endRow:c.getRange().endRow+b}}}}}),v.push({id:I.id,params:{unitId:s,subUnitId:o,tableId:c.getId(),config:{updateRange:{newRange:c.getRange()}}}}),v.push({id:C.RemoveRowMutation.id,params:{unitId:s,subUnitId:o,range:{...g}}});else{const M={...c.getRange()};w.push({id:I.id,params:{unitId:s,subUnitId:o,tableId:c.getId(),config:{updateRange:{newRange:{...M,endRow:M.endRow+b}}}}}),v.push({id:I.id,params:{unitId:s,subUnitId:o,tableId:c.getId(),config:{updateRange:{newRange:{...M}}}}});const Q=C.getMoveRangeUndoRedoMutations(n,{unitId:s,subUnitId:o,range:{startRow:g.startRow,endRow:p,startColumn:M.startColumn,endColumn:M.endColumn}},{unitId:s,subUnitId:o,range:{startRow:g.startRow+b,endRow:p+b,startColumn:M.startColumn,endColumn:M.endColumn}});Q&&(w.push(...Q.redos),v.push(...Q.undos))}const $=n.get(u.ICommandService);return u.sequenceExecute(w,$)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:s,undoMutations:v,redoMutations:w}),!0}},Fe={id:"sheet.command.table-insert-col",type:u.CommandType.COMMAND,handler:n=>{const e=n.get(u.IUniverInstanceService),t=C.getSheetCommandTarget(e);if(!t)return!1;const{worksheet:a,unitId:r,subUnitId:s}=t,i=n.get(C.SheetsSelectionsService).getCurrentSelections();if(!i.length||i.length>1)return!1;const l=i[0].range,m=n.get(h.SheetsTableController).getContainerTableWithRange(r,s,l);if(!m)return!1;const c=l.endColumn-l.startColumn+1,f=a.getColumnCount()-1,T=a.getCellMatrix().getDataRange().endColumn,p=[],w=[];if(f-T<c)p.push({id:C.InsertColMutation.id,params:{unitId:r,subUnitId:s,range:{...l}}}),p.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:m.getId(),config:{rowColOperation:{operationType:_.Insert,rowColType:y.Col,index:l.startColumn,count:c}}}}),w.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:m.getId(),config:{rowColOperation:{operationType:_.Delete,rowColType:y.Col,index:l.startColumn,count:c}}}}),w.push({id:C.RemoveColMutation.id,params:{unitId:r,subUnitId:s,range:{...l}}});else{const D=m.getRange();p.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:m.getId(),config:{rowColOperation:{operationType:_.Insert,rowColType:y.Col,index:l.startColumn,count:c}}}}),w.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:m.getId(),config:{rowColOperation:{operationType:_.Delete,rowColType:y.Col,index:l.startColumn,count:c}}}});const M=C.getMoveRangeUndoRedoMutations(n,{unitId:r,subUnitId:s,range:{startRow:D.startRow,endRow:D.endRow,startColumn:l.startColumn,endColumn:T}},{unitId:r,subUnitId:s,range:{startRow:D.startRow,endRow:D.endRow,startColumn:l.startColumn+c,endColumn:T+c}});M&&(p.push(...M.redos),w.push(...M.undos))}const v=n.get(u.ICommandService);return u.sequenceExecute(p,v)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:r,undoMutations:w,redoMutations:p}),!0}},ye={id:"sheet.command.table-remove-row",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(u.IUniverInstanceService),a=C.getSheetCommandTarget(t);if(!a)return!1;const{unitId:r,subUnitId:s}=a,i=n.get(C.SheetsSelectionsService).getCurrentSelections();if(!i.length||i.length>1)return!1;const l=i[0].range,m=n.get(h.SheetsTableController).getContainerTableWithRange(r,s,l);if(!m)return!1;const c=l.endRow-l.startRow+1,b=[],f=[],T=m.getRange();b.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:m.getId(),config:{updateRange:{newRange:{...T,endRow:T.endRow-c}}}}}),f.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:m.getId(),config:{updateRange:{newRange:{...T}}}}});const w=a.worksheet.getCellMatrix().getDataRange().endRow,v=C.getMoveRangeUndoRedoMutations(n,{unitId:r,subUnitId:s,range:{startRow:l.endRow+1,endRow:w,startColumn:T.startColumn,endColumn:T.endColumn}},{unitId:r,subUnitId:s,range:{startRow:l.startRow,endRow:w-c,startColumn:T.startColumn,endColumn:T.endColumn}});v&&(b.push(...v.redos),f.push(...v.undos));const $=n.get(u.ICommandService);return u.sequenceExecute(b,$)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:r,undoMutations:f,redoMutations:b}),!0}},De={id:"sheet.command.table-remove-col",type:u.CommandType.COMMAND,handler:(n,e)=>{if(!e)return!1;const t=n.get(u.IUniverInstanceService),a=C.getSheetCommandTarget(t);if(!a)return!1;const{workbook:r,unitId:s,subUnitId:o}=a;n.get(h.TableManager);const d=n.get(C.SheetsSelectionsService).getCurrentSelections();if(!d.length||d.length>1)return!1;const g=d[0].range,c=n.get(h.SheetsTableController).getContainerTableWithRange(s,o,g);if(!c)return!1;const b=g.endColumn-g.startColumn+1,f=[],T=[],p=c.getRange();f.push({id:I.id,params:{unitId:s,subUnitId:o,tableId:c.getId(),config:{rowColOperation:{operationType:_.Delete,rowColType:y.Col,index:g.startColumn,count:b}}}});const w=[],v=g.startColumn-p.startColumn;for(let te=0;te<b;te++){const Ue=c.getTableInfo().columns[v+te];Ue&&w.push(Ue)}T.push({id:I.id,params:{unitId:s,subUnitId:o,tableId:c.getId(),config:{rowColOperation:{operationType:_.Insert,rowColType:y.Col,index:g.startColumn,count:b,columnsJson:w}}}});const D=a.worksheet.getCellMatrix().getDataRange().endColumn,M=C.getMoveRangeUndoRedoMutations(n,{unitId:s,subUnitId:o,range:{startRow:p.startRow,endRow:p.endRow,startColumn:g.endColumn+1,endColumn:D}},{unitId:s,subUnitId:o,range:{startRow:p.startRow,endRow:p.endRow,startColumn:g.startColumn,endColumn:D-b}});M&&(f.push(...M.redos),T.push(...M.undos));const Q=n.get(u.ICommandService);return u.sequenceExecute(f,Q)&&n.get(u.IUndoRedoService).pushUndoRedo({unitID:s,undoMutations:T,redoMutations:f}),!0}},Jt="sheets-table.config",Ne={};var kt=Object.getOwnPropertyDescriptor,Qt=(n,e,t,a)=>{for(var r=a>1?void 0:a?kt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},Oe=(n,e)=>(t,a)=>e(t,a,n);let z=class extends u.Disposable{constructor(n,e){super(),this._tableManager=n,this._exclusiveRangeService=e,this._initRangeListener()}_initRangeListener(){this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe(n=>{const{range:e,tableId:t,unitId:a,subUnitId:r}=n;this._exclusiveRangeService.clearExclusiveRangesByGroupId(a,r,G,t),this._exclusiveRangeService.addExclusiveRange(a,r,G,[{range:{...e},groupId:t}])})),this.disposeWithMe(this._tableManager.tableAdd$.subscribe(n=>{const{tableId:e,unitId:t,subUnitId:a,range:r}=n;this._exclusiveRangeService.addExclusiveRange(t,a,G,[{range:{...r},groupId:e}])})),this.disposeWithMe(this._tableManager.tableDelete$.subscribe(n=>{const{tableId:e,unitId:t,subUnitId:a}=n;this._exclusiveRangeService.clearExclusiveRangesByGroupId(t,a,G,e)}))}};z=Qt([Oe(0,u.Inject(h.TableManager)),Oe(1,u.Inject(C.IExclusiveRangeService))],z);var Yt=Object.getOwnPropertyDescriptor,jt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Yt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},L=(n,e)=>(t,a)=>e(t,a,n);let K=class extends u.Disposable{constructor(n,e,t,a,r,s,o){super(),this._commandService=n,this._refRangeService=e,this._univerInstanceService=t,this._injector=a,this._sheetInterceptorService=r,this._tableManager=s,this._localeService=o,this._initCommandInterceptor(),this._initCommandListener()}_initCommandInterceptor(){const n=this;this._sheetInterceptorService.interceptCommand({getMutations(e){const t={redos:[],undos:[]},{id:a,params:r}=e;switch(a){case C.InsertRowCommand.id:return n._generateTableMutationWithInsertRow(r);case C.InsertColCommand.id:return n._generateTableMutationWithInsertCol(r);case C.RemoveRowCommand.id:return n._generateTableMutationWithRemoveRow(r);case C.RemoveColCommand.id:return n._generateTableMutationWithRemoveCol(r)}return t}})}_generateTableMutationWithInsertRow(n){const e=[],t=[],a=C.getSheetCommandTarget(this._univerInstanceService);if(!a)return{undos:e,redos:t};const{unitId:r,subUnitId:s}=a,o=this._tableManager.getTablesBySubunitId(r,s);if(!o.length)return{undos:e,redos:t};const{range:i}=n;return o.forEach(d=>{const l=d.getRange();if(i.startRow>l.startRow&&i.startRow<=l.endRow){const g=i.endRow-i.startRow+1;t.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:d.getId(),config:{updateRange:{newRange:{...l,endRow:l.endRow+g}}}}}),e.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:d.getId(),config:{updateRange:{newRange:{...l}}}}})}}),{undos:e,redos:t}}_generateTableMutationWithInsertCol(n){const e=[],t=[],a=C.getSheetCommandTarget(this._univerInstanceService);if(!a)return{undos:e,redos:t};const{unitId:r,subUnitId:s}=a,o=this._tableManager.getTablesBySubunitId(r,s);if(!o.length)return{undos:e,redos:t};const{range:i}=n;return o.forEach(d=>{const l=d.getRange();if(i.startColumn>l.startColumn&&i.startColumn<=l.endColumn){const g=i.endColumn-i.startColumn+1;t.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:d.getId(),config:{rowColOperation:{operationType:_.Insert,rowColType:y.Col,index:i.startColumn,count:g}}}}),e.push({id:I.id,params:{unitId:r,subUnitId:s,tableId:d.getId(),config:{rowColOperation:{operationType:_.Delete,rowColType:y.Col,index:i.startColumn,count:g}}}})}}),{undos:e,redos:t}}_generateTableMutationWithRemoveRow(n){const e=[],t=[],a=[],r=[],s=C.getSheetCommandTarget(this._univerInstanceService);if(!s)return{undos:e,redos:t,preRedos:a,preUndos:r};const{unitId:o,subUnitId:i}=s,d=this._tableManager.getTablesBySubunitId(o,i);if(!d.length)return{undos:e,redos:t,preRedos:a,preUndos:r};const{range:l}=n,g=l.endRow-l.startRow+1;return d.forEach(m=>{const c=m.getRange();if(u.Rectangle.intersects(c,l))if(l.startRow<=c.startRow&&l.endRow>=c.startRow){a.push({id:J.id,params:{unitId:o,subUnitId:i,tableId:m.getId()}});const b=m.toJSON();e.push({id:V.id,params:{unitId:o,subUnitId:i,tableId:b.id,name:b.name,range:b.range,options:b.options}})}else l.startRow>c.startRow&&l.startRow<=c.endRow?(t.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{updateRange:{newRange:{...c,endRow:c.endRow-g}}}}}),e.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{updateRange:{newRange:{...c}}}}})):l.startRow<c.endRow&&l.endRow>=c.endRow&&(t.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{updateRange:{newRange:{...c,endRow:l.startRow-1}}}}}),e.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{updateRange:{newRange:{...c}}}}}))}),{undos:e,redos:t,preRedos:a,preUndos:r}}_generateTableMutationWithRemoveCol(n){const e=[],t=[],a=[],r=[],s=C.getSheetCommandTarget(this._univerInstanceService);if(!s)return{undos:e,redos:t,preRedos:a,preUndos:r};const{unitId:o,subUnitId:i}=s,d=this._tableManager.getTablesBySubunitId(o,i);if(!d.length)return{undos:e,redos:t,preRedos:a,preUndos:r};const{range:l}=n,g=l.endColumn-l.startColumn+1;return d.forEach(m=>{const c=m.getRange();if(u.Rectangle.intersects(c,l)){if(l.startColumn<=c.startColumn&&l.endColumn>=c.endColumn){a.push({id:J.id,params:{unitId:o,subUnitId:i,tableId:m.getId()}});const b=m.toJSON(),{startRow:f,startColumn:T,endColumn:p}=b.range,w=this._univerInstanceService.getUnit(o),v=w==null?void 0:w.getSheetBySheetId(i);if(!v)return{undos:e,redos:t,preRedos:a,preUndos:r};const $=[];for(let D=T;D<=p;D++)$.push(de(v==null?void 0:v.getCell(f,D))||k(D-T+1,this._localeService.t("sheets-table.columnPrefix")));e.push({id:V.id,params:{unitId:o,subUnitId:i,tableId:b.id,name:b.name,header:$,range:b.range,options:b.options}})}else if(l.startColumn<=c.startColumn&&l.endColumn>=c.startColumn){const b=l.endColumn-c.startColumn+1;t.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{rowColOperation:{operationType:_.Delete,rowColType:y.Col,index:c.startColumn,count:b}}}});const f=[];for(let T=0;T<b;T++){const p=m.getTableColumnByIndex(T);p&&f.push(p.toJSON())}e.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{rowColOperation:{operationType:_.Insert,rowColType:y.Col,index:c.startColumn,count:b,columnsJson:f}}}})}else if(l.startColumn>c.startColumn&&l.endColumn>c.endColumn){const b=c.endColumn-l.startColumn+1;t.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{rowColOperation:{operationType:_.Delete,rowColType:y.Col,index:l.startColumn,count:b}}}});const f=[],T=l.startColumn-c.startColumn;for(let p=0;p<b;p++){const w=m.getTableColumnByIndex(p+T);w&&f.push(w.toJSON())}e.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{rowColOperation:{operationType:_.Insert,rowColType:y.Col,index:l.startColumn,count:g,columnsJson:f}}}})}else if(l.startColumn>c.startColumn&&l.endColumn<=c.endColumn){t.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{rowColOperation:{operationType:_.Delete,rowColType:y.Col,index:l.startColumn,count:g}}}});const b=[],f=l.startColumn-c.startColumn;for(let T=0;T<g;T++){const p=m.getTableColumnByIndex(T+f);p&&b.push(p.toJSON())}e.push({id:I.id,params:{unitId:o,subUnitId:i,tableId:m.getId(),config:{rowColOperation:{operationType:_.Insert,rowColType:y.Col,index:l.startColumn,count:g,columnsJson:b}}}})}}}),{undos:e,redos:t,preRedos:a,preUndos:r}}_initCommandListener(){this._commandService.onCommandExecuted(n=>{if(n.id===C.InsertRowMutation.id){const e=n.params,{unitId:t,subUnitId:a,range:r}=e,s=r.endRow-r.startRow+1;this._tableManager.getTablesBySubunitId(t,a).forEach(i=>{const d=i.getRange();r.startRow<=d.startRow&&this._tableManager.updateTableRange(t,i.getId(),{newRange:{...d,startRow:d.startRow+s,endRow:d.endRow+s}})})}else if(n.id===C.InsertColMutation.id){const e=n.params,{unitId:t,subUnitId:a,range:r}=e,s=r.endColumn-r.startColumn+1;this._tableManager.getTablesBySubunitId(t,a).forEach(i=>{const d=i.getRange();r.startColumn<=d.startColumn&&this._tableManager.updateTableRange(t,i.getId(),{newRange:{...d,startColumn:d.startColumn+s,endColumn:d.endColumn+s}})})}else if(n.id===C.RemoveRowMutation.id){const e=n.params,{unitId:t,subUnitId:a,range:r}=e,s=r.endRow-r.startRow+1;this._tableManager.getTablesBySubunitId(t,a).forEach(i=>{const d=i.getRange();r.startRow<d.startRow&&this._tableManager.updateTableRange(t,i.getId(),{newRange:{...d,startRow:d.startRow-s,endRow:d.endRow-s}})})}else if(n.id===C.RemoveColMutation.id){const e=n.params,{unitId:t,subUnitId:a,range:r}=e,s=r.endColumn-r.startColumn+1;this._tableManager.getTablesBySubunitId(t,a).forEach(i=>{const d=i.getRange();r.startColumn<d.startColumn&&this._tableManager.updateTableRange(t,i.getId(),{newRange:{...d,startColumn:d.startColumn-s,endColumn:d.endColumn-s}})})}})}};K=jt([L(0,u.Inject(u.ICommandService)),L(1,u.Inject(C.RefRangeService)),L(2,u.Inject(u.IUniverInstanceService)),L(3,u.Inject(u.Injector)),L(4,u.Inject(C.SheetInterceptorService)),L(5,u.Inject(h.TableManager)),L(6,u.Inject(u.LocaleService))],K);var Gt=Object.getOwnPropertyDescriptor,zt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Gt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},se=(n,e)=>(t,a)=>e(t,a,n);let X=class extends u.Disposable{constructor(n,e,t){super(),this._tableManager=n,this._sheetRangeThemeService=e,this._sheetRangeThemeModel=t,this.registerTableChangeEvent(),this._initDefaultTableTheme()}registerTableChangeEvent(){this.disposeWithMe(this._tableManager.tableAdd$.subscribe(n=>{const{range:e,tableId:t,unitId:a,subUnitId:r}=n,o=this._tableManager.getTable(a,t).getTableStyleId()||q[0].name;this._sheetRangeThemeService.registerRangeThemeStyle(o,{unitId:a,subUnitId:r,range:{...e}})})),this.disposeWithMe(this._tableManager.tableRangeChanged$.subscribe(n=>{const{range:e,oldRange:t,tableId:a,unitId:r,subUnitId:s}=n,i=this._tableManager.getTable(r,a).getTableStyleId()||q[0].name;this._sheetRangeThemeService.removeRangeThemeRule(i,{unitId:r,subUnitId:s,range:{...t}}),this._sheetRangeThemeService.registerRangeThemeStyle(i,{unitId:r,subUnitId:s,range:{...e}})})),this.disposeWithMe(this._tableManager.tableThemeChanged$.subscribe(n=>{const{theme:e,oldTheme:t,tableId:a,unitId:r,subUnitId:s}=n,i=this._tableManager.getTable(r,a).getRange();this._sheetRangeThemeService.removeRangeThemeRule(t,{unitId:r,subUnitId:s,range:{...i}}),this._sheetRangeThemeService.registerRangeThemeStyle(e,{unitId:r,subUnitId:s,range:{...i}})})),this.disposeWithMe(this._tableManager.tableDelete$.subscribe(n=>{const{range:e,unitId:t,subUnitId:a,tableStyleId:r=q[0].name}=n;this._sheetRangeThemeService.removeRangeThemeRule(r,{unitId:t,subUnitId:a,range:{...e}})}))}_initDefaultTableTheme(){for(let n=0;n<q.length;n++){const{name:e,style:t}=q[n],a=new C.RangeThemeStyle(e,t);this._sheetRangeThemeModel.registerDefaultRangeTheme(a)}}dispose(){super.dispose()}};X=zt([se(0,u.Inject(h.TableManager)),se(1,u.Inject(C.SheetRangeThemeService)),se(2,u.Inject(C.SheetRangeThemeModel))],X);var Kt=Object.getOwnPropertyDescriptor,Xt=(n,e,t,a)=>{for(var r=a>1?void 0:a?Kt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},oe=(n,e)=>(t,a)=>e(t,a,n);let Z=class extends u.Disposable{constructor(e,t,a){super();R(this,"_tableFilteredOutRows$",new N.BehaviorSubject(new Set));R(this,"tableFilteredOutRows$",this._tableFilteredOutRows$.asObservable());R(this,"_subscription",null);this._tableManager=e,this._sheetInterceptorService=t,this._univerInstanceService=a,this.registerFilterChangeEvent(),this.initTableHiddenRowIntercept(),this._initFilteredOutRows()}get tableFilteredOutRows(){return this._tableFilteredOutRows$.value}set tableFilteredOutRows(e){this._tableFilteredOutRows$.next(e)}initTableHiddenRowIntercept(){this.disposeWithMe(this._sheetInterceptorService.intercept(C.INTERCEPTOR_POINT.ROW_FILTERED,{priority:100,handler:(e,t,a)=>{if(e)return!0;const r=this.tableFilteredOutRows.has(t.row);return r?!0:a(r)}}))}_initFilteredOutRows(){this._tableManager.tableInitStatus$.pipe(N.filter(e=>e),N.switchMap(()=>this._univerInstanceService.getCurrentTypeOfUnit$(u.UniverInstanceType.UNIVER_SHEET)),N.filter(e=>e!=null),N.switchMap(e=>e.activeSheet$),N.filter(e=>e!=null)).subscribe(()=>{const e=C.getSheetCommandTarget(this._univerInstanceService);if(!e)return;const{unitId:t,subUnitId:a}=e;this.tableFilteredOutRows.clear(),this._tableManager.getTablesBySubunitId(t,a).forEach(s=>{const o=s.getTableFilters().getFilterOutRows();if(o)for(const i of o)this.tableFilteredOutRows.add(i)})})}registerFilterChangeEvent(){this.disposeWithMe(this._tableManager.tableFilterChanged$.subscribe(e=>{var l;const{unitId:t,subUnitId:a,tableId:r}=e,s=(l=this._univerInstanceService.getUnit(t))==null?void 0:l.getSheetBySheetId(a),o=this._tableManager.getTable(t,r);if(!s||!o)return;this.tableFilteredOutRows.clear(),o.getTableFilters().doFilter(s,o.getTableFilterRange()),this._tableManager.getTablesBySubunitId(t,a).forEach(g=>{const m=g.getTableFilters().getFilterOutRows();if(m)for(const c of m)this.tableFilteredOutRows.add(c)})}))}dispose(){var e;super.dispose(),(e=this._subscription)==null||e.unsubscribe()}};Z=Xt([oe(0,u.Inject(h.TableManager)),oe(1,u.Inject(C.SheetInterceptorService)),oe(2,u.Inject(u.IUniverInstanceService))],Z);var Zt=Object.getOwnPropertyDescriptor,en=(n,e,t,a)=>{for(var r=a>1?void 0:a?Zt(e,t):e,s=n.length-1,o;s>=0;s--)(o=n[s])&&(r=o(r)||r);return r},ie=(n,e)=>(t,a)=>e(t,a,n);h.UniverSheetsTablePlugin=(ee=class extends u.Plugin{constructor(e=Ne,t,a,r){super(),this._config=e,this._injector=t,this._configService=a,this._commandService=r;const{...s}=u.merge({},Ne,this._config);this._configService.setConfig(Jt,s),this._initRegisterCommand()}onStarting(){u.registerDependencies(this._injector,[[h.TableManager],[X],[h.SheetsTableController],[h.SheetTableService],[Z],[z],[K]]),u.touchDependencies(this._injector,[[z],[K],[X],[h.SheetsTableController],[h.SheetTableService],[Z]])}onReady(){u.touchDependencies(this._injector,[[h.TableManager]])}_initRegisterCommand(){[Re,V,Te,J,j,we,ve,I,pe,_e,Me,Fe,ye,De].forEach(e=>this._commandService.registerCommand(e))}},R(ee,"pluginName",fe),R(ee,"type",u.UniverInstanceType.UNIVER_SHEET),ee),h.UniverSheetsTablePlugin=en([ie(1,u.Inject(u.Injector)),ie(2,u.IConfigService),ie(3,u.Inject(u.ICommandService))],h.UniverSheetsTablePlugin),h.AddSheetTableCommand=Re,h.AddSheetTableMutation=V,h.AddTableThemeCommand=pe,h.DeleteSheetTableCommand=Te,h.DeleteSheetTableMutation=J,h.RemoveTableThemeCommand=_e,h.SHEET_TABLE_CUSTOM_THEME_PREFIX=Ie,h.SetSheetTableCommand=ve,h.SetSheetTableFilterCommand=we,h.SetSheetTableFilterMutation=j,h.SetSheetTableMutation=I,h.SheetTableInsertColCommand=Fe,h.SheetTableInsertRowCommand=Me,h.SheetTableRemoveColCommand=De,h.SheetTableRemoveRowCommand=ye,h.SheetsTableButtonStateEnum=E,h.SheetsTableSortStateEnum=A,h.TableColumnDataTypeEnum=ne,h.TableColumnFilterTypeEnum=W,h.TableConditionTypeEnum=O,h.TableDateCompareTypeEnum=S,h.TableNumberCompareTypeEnum=F,h.TableStringCompareTypeEnum=x,h.customEmptyThemeWithBorderStyle=Ae,h.isConditionFilter=ce,h.isManualFilter=$e,h.processStyleWithBorderStyle=Be,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/sheets-table",
3
- "version": "0.9.3-nightly.202507250819",
3
+ "version": "0.9.4",
4
4
  "private": false,
5
5
  "description": "A library for connect and bind data from other sources to Univer Sheets",
6
6
  "author": "DreamNum <developer@univer.ai>",
@@ -60,15 +60,15 @@
60
60
  "rxjs": ">=7.0.0"
61
61
  },
62
62
  "dependencies": {
63
- "@univerjs/core": "0.9.3-nightly.202507250819",
64
- "@univerjs/sheets": "0.9.3-nightly.202507250819"
63
+ "@univerjs/core": "0.9.4",
64
+ "@univerjs/sheets": "0.9.4"
65
65
  },
66
66
  "devDependencies": {
67
67
  "rxjs": "^7.8.2",
68
68
  "typescript": "^5.8.3",
69
69
  "vite": "^7.0.5",
70
70
  "vitest": "^3.2.4",
71
- "@univerjs-infra/shared": "0.9.3"
71
+ "@univerjs-infra/shared": "0.9.4"
72
72
  },
73
73
  "scripts": {
74
74
  "test": "vitest run",