@univerjs/sheets-data-validation 0.17.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/lib/cjs/facade.js +1 -1
  2. package/lib/cjs/index.js +1 -1
  3. package/lib/es/facade.js +1 -1628
  4. package/lib/es/index.js +1 -2640
  5. package/lib/facade.js +1 -1628
  6. package/lib/index.js +1 -2640
  7. package/lib/types/commands/commands/data-validation.command.d.ts +19 -4
  8. package/lib/types/common/date-text-map.d.ts +15 -0
  9. package/lib/types/controllers/dv-formula-ref-range.controller.d.ts +17 -1
  10. package/lib/types/controllers/dv-formula.controller.d.ts +15 -0
  11. package/lib/types/controllers/dv-ref-range.controller.d.ts +17 -1
  12. package/lib/types/controllers/dv-sheet.controller.d.ts +15 -0
  13. package/lib/types/controllers/dv.controller.d.ts +15 -0
  14. package/lib/types/facade/f-data-validation-builder.d.ts +18 -2
  15. package/lib/types/facade/f-data-validation.d.ts +16 -1
  16. package/lib/types/facade/f-event.d.ts +20 -5
  17. package/lib/types/facade/f-range.d.ts +18 -2
  18. package/lib/types/facade/f-univer.d.ts +16 -1
  19. package/lib/types/facade/f-workbook.d.ts +20 -3
  20. package/lib/types/facade/f-worksheet.d.ts +18 -2
  21. package/lib/types/models/rule-matrix.d.ts +17 -2
  22. package/lib/types/models/sheet-data-validation-model.d.ts +24 -7
  23. package/lib/types/plugin.d.ts +16 -1
  24. package/lib/types/services/dv-cache.service.d.ts +18 -2
  25. package/lib/types/services/dv-custom-formula.service.d.ts +21 -5
  26. package/lib/types/services/dv-formula.service.d.ts +19 -2
  27. package/lib/types/services/dv-list-cache.service.d.ts +18 -2
  28. package/lib/types/services/dv-validator-service.d.ts +17 -1
  29. package/lib/types/types/const/operator-text-map.d.ts +15 -0
  30. package/lib/types/types/const/two-formula-operators.d.ts +15 -0
  31. package/lib/types/utils/create.d.ts +18 -2
  32. package/lib/types/utils/formula.d.ts +18 -3
  33. package/lib/types/utils/get-cell-data-origin.d.ts +17 -2
  34. package/lib/types/validators/any-validator.d.ts +18 -2
  35. package/lib/types/validators/checkbox-validator.d.ts +19 -2
  36. package/lib/types/validators/custom-validator.d.ts +18 -2
  37. package/lib/types/validators/date-validator.d.ts +20 -3
  38. package/lib/types/validators/decimal-validator.d.ts +23 -6
  39. package/lib/types/validators/list-multiple-validator.d.ts +15 -0
  40. package/lib/types/validators/list-validator.d.ts +18 -2
  41. package/lib/types/validators/text-length-validator.d.ts +23 -6
  42. package/lib/types/validators/util.d.ts +18 -3
  43. package/lib/types/validators/whole-validator.d.ts +23 -6
  44. package/lib/umd/facade.js +1 -1
  45. package/lib/umd/index.js +1 -1
  46. package/package.json +11 -10
package/lib/umd/index.js CHANGED
@@ -1 +1 @@
1
- (function(m,r){typeof exports=="object"&&typeof module<"u"?r(exports,require("@univerjs/core"),require("@univerjs/data-validation"),require("@univerjs/engine-formula"),require("@univerjs/sheets"),require("rxjs"),require("@univerjs/sheets-formula")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/data-validation","@univerjs/engine-formula","@univerjs/sheets","rxjs","@univerjs/sheets-formula"],r):(m=typeof globalThis<"u"?globalThis:m||self,r(m.UniverSheetsDataValidation={},m.UniverCore,m.UniverDataValidation,m.UniverEngineFormula,m.UniverSheets,m.rxjs,m.UniverSheetsFormula))})(this,(function(m,r,p,E,D,U,de){"use strict";var Ut=Object.defineProperty;var wt=(m,r,p)=>r in m?Ut(m,r,{enumerable:!0,configurable:!0,writable:!0,value:p}):m[r]=p;var S=(m,r,p)=>wt(m,typeof r!="symbol"?r+"":r,p);var We=Object.getOwnPropertyDescriptor,$e=(o,s,e,t)=>{for(var a=t>1?void 0:t?We(s,e):s,i=o.length-1,n;i>=0;i--)(n=o[i])&&(a=n(a)||a);return a},ce=(o,s)=>(e,t)=>s(e,t,o);m.DataValidationCacheService=class extends r.Disposable{constructor(e,t,a){super();S(this,"_cacheMatrix",new Map);S(this,"_dirtyRanges$",new U.Subject);S(this,"dirtyRanges$",this._dirtyRanges$.asObservable());this._commandService=e,this._univerInstanceService=t,this._sheetDataValidationModel=a,this._initDirtyRanges(),this._initSheetRemove()}_initDirtyRanges(){this.disposeWithMe(this._commandService.onCommandExecuted((e,t)=>{if(e.id===D.SetRangeValuesMutation.id&&!(t!=null&&t.onlyLocal)){const{cellValue:a,unitId:i,subUnitId:n}=e.params;if(a){const l=new r.ObjectMatrix(a).getDataRange();if(l.endRow===-1)return;const c=this._sheetDataValidationModel.getRules(i,n).map(h=>h.ranges).flat().map(h=>r.getIntersectRange(h,l)).filter(Boolean);c.length&&this.markRangeDirty(i,n,c,!0)}}}))}_initSheetRemove(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{var t;if(e.id===D.RemoveSheetMutation.id){const{unitId:a,subUnitId:i}=e.params;(t=this._cacheMatrix.get(a))==null||t.delete(i)}})),this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(e=>{e.type===r.UniverInstanceType.UNIVER_SHEET&&this._cacheMatrix.delete(e.getUnitId())}))}_ensureCache(e,t){let a=this._cacheMatrix.get(e);a||(a=new Map,this._cacheMatrix.set(e,a));let i=a.get(t);return i||(i=new r.ObjectMatrix,a.set(t,i)),i}ensureCache(e,t){return this._ensureCache(e,t)}addRule(e,t,a){this.markRangeDirty(e,t,a.ranges)}removeRule(e,t,a){this._deleteRange(e,t,a.ranges)}markRangeDirty(e,t,a,i){const n=this._ensureCache(e,t);a.forEach(l=>{r.Range.foreach(l,(u,d)=>{n.getValue(u,d)!==void 0&&n.setValue(u,d,void 0)})}),this._dirtyRanges$.next({unitId:e,subUnitId:t,ranges:a,isSetRange:i})}_deleteRange(e,t,a){const i=this._ensureCache(e,t);a.forEach(n=>{r.Range.foreach(n,(l,u)=>{i.realDeleteValue(l,u)})}),this._dirtyRanges$.next({unitId:e,subUnitId:t,ranges:a})}getValue(e,t,a,i){return this._ensureCache(e,t).getValue(a,i)}},m.DataValidationCacheService=$e([ce(0,r.Inject(r.ICommandService)),ce(1,r.Inject(r.IUniverInstanceService)),ce(2,r.Inject(p.DataValidationModel))],m.DataValidationCacheService);function w(o){var s,e;return(e=(s=o==null?void 0:o[0])==null?void 0:s[0])==null?void 0:e.v}function P(o){var s;return(s=o==null?void 0:o[0])==null?void 0:s[0]}function y(o){return!E.ERROR_TYPE_SET.has(o)}function H(o,s){var t;const e=s.getValidatorItem(o);return(t=e==null?void 0:e.offsetFormulaByRange)!=null?t:!1}var ke=Object.getOwnPropertyDescriptor,qe=(o,s,e,t)=>{for(var a=t>1?void 0:t?ke(s,e):s,i=o.length-1,n;i>=0;i--)(n=o[i])&&(a=n(a)||a);return a},W=(o,s)=>(e,t)=>s(e,t,o);m.DataValidationCustomFormulaService=class extends r.Disposable{constructor(e,t,a,i,n){super();S(this,"_ruleFormulaMap",new Map);S(this,"_ruleFormulaMap2",new Map);this._instanceSrv=e,this._registerOtherFormulaService=t,this._dataValidationModel=a,this._dataValidationCacheService=i,this._validatorRegistryService=n,this._initFormulaResultHandler(),this._initDirtyRanges()}dispose(){super.dispose(),this._ruleFormulaMap.clear(),this._ruleFormulaMap2.clear()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(e=>{for(const t in e){const a=e[t];if(this._instanceSrv.getUnitType(t)===r.UniverInstanceType.UNIVER_SHEET)for(const n in a){const l=a[n],{ruleFormulaMap:u}=this._ensureMaps(t,n);l.forEach(d=>{var g,f;const c=u.get((g=d.extra)==null?void 0:g.ruleId),h=this._dataValidationModel.getRuleById(t,n,(f=d.extra)==null?void 0:f.ruleId);h&&c&&this._dataValidationCacheService.markRangeDirty(t,n,h.ranges)})}}}))}_ensureMaps(e,t){let a=this._ruleFormulaMap.get(e),i=this._ruleFormulaMap2.get(e);a||(a=new Map,this._ruleFormulaMap.set(e,a)),i||(i=new Map,this._ruleFormulaMap2.set(e,i));let n=a.get(t);n||(n=new Map,a.set(t,n));let l=i.get(t);return l||(l=new Map,i.set(t,l)),{ruleFormulaMap:n,ruleFormulaMap2:l}}_registerFormula(e,t,a,i,n){return this._registerOtherFormulaService.registerFormulaWithRange(e,t,i,n,{ruleId:a},E.OtherFormulaBizType.DATA_VALIDATION_CUSTOM,a)}_handleDirtyRanges(e,t,a){this._dataValidationModel.getRules(e,t).forEach(n=>{const l=n.ranges;r.Rectangle.doAnyRangesIntersect(l,a)&&this.makeRuleDirty(e,t,n.uid)})}_initDirtyRanges(){this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.subscribe(e=>{e.isSetRange&&this._handleDirtyRanges(e.unitId,e.subUnitId,e.ranges)}))}deleteByRuleId(e,t,a){const{ruleFormulaMap:i,ruleFormulaMap2:n}=this._ensureMaps(e,t),l=this._dataValidationModel.getRuleById(e,t,a),u=i.get(a);if(!l||!u)return;const d=i.get(a);d&&(i.delete(a),this._registerOtherFormulaService.deleteFormula(e,t,[d.formulaId]));const c=n.get(a);c&&(n.delete(a),this._registerOtherFormulaService.deleteFormula(e,t,[c.formulaId]))}_addFormulaByRange(e,t,a,i,n,l){const{ruleFormulaMap:u,ruleFormulaMap2:d}=this._ensureMaps(e,t),c=l[0].startRow,h=l[0].startColumn;if(i&&r.isFormulaString(i)){const g=this._registerFormula(e,t,a,i,l);u.set(a,{formula:i,originCol:h,originRow:c,formulaId:g})}if(n&&r.isFormulaString(n)){const g=this._registerFormula(e,t,a,n,l);d.set(a,{formula:n,originCol:h,originRow:c,formulaId:g})}}addRule(e,t,a){if(H(a.type,this._validatorRegistryService)){const{ranges:i,formula1:n,formula2:l,uid:u}=a;this._addFormulaByRange(e,t,u,n,l,i)}}async getCellFormulaValue(e,t,a,i,n){var _,R;const{ruleFormulaMap:l}=this._ensureMaps(e,t),u=l.get(a);if(!u)return Promise.resolve(void 0);const d=await this._registerOtherFormulaService.getFormulaValue(e,t,u.formulaId),{originRow:c,originCol:h}=u,g=i-c,f=n-h;return P((R=(_=d==null?void 0:d.result)==null?void 0:_[g])==null?void 0:R[f])}async getCellFormula2Value(e,t,a,i,n){var _,R;const{ruleFormulaMap2:l}=this._ensureMaps(e,t),u=l.get(a);if(!u)return Promise.resolve(void 0);const d=await this._registerOtherFormulaService.getFormulaValue(e,t,u.formulaId),{originRow:c,originCol:h}=u,g=i-c,f=n-h;return P((R=(_=d==null?void 0:d.result)==null?void 0:_[g])==null?void 0:R[f])}getCellFormulaValueSync(e,t,a,i,n){var _,R;const{ruleFormulaMap:l}=this._ensureMaps(e,t),u=l.get(a);if(!u)return;const d=this._registerOtherFormulaService.getFormulaValueSync(e,t,u.formulaId),{originRow:c,originCol:h}=u,g=i-c,f=n-h;return P((R=(_=d==null?void 0:d.result)==null?void 0:_[g])==null?void 0:R[f])}getCellFormula2ValueSync(e,t,a,i,n){var _,R;const{ruleFormulaMap2:l}=this._ensureMaps(e,t),u=l.get(a);if(!u)return;const d=this._registerOtherFormulaService.getFormulaValueSync(e,t,u.formulaId),{originRow:c,originCol:h}=u,g=i-c,f=n-h;return P((R=(_=d==null?void 0:d.result)==null?void 0:_[g])==null?void 0:R[f])}getRuleFormulaInfo(e,t,a){const{ruleFormulaMap:i}=this._ensureMaps(e,t);return i.get(a)}makeRuleDirty(e,t,a){var l,u,d,c;const i=(u=(l=this._ruleFormulaMap.get(e))==null?void 0:l.get(t))==null?void 0:u.get(a),n=(c=(d=this._ruleFormulaMap2.get(e))==null?void 0:d.get(t))==null?void 0:c.get(a);i&&this._registerOtherFormulaService.markFormulaDirty(e,t,i.formulaId),n&&this._registerOtherFormulaService.markFormulaDirty(e,t,n.formulaId)}},m.DataValidationCustomFormulaService=qe([W(0,r.IUniverInstanceService),W(1,r.Inject(E.RegisterOtherFormulaService)),W(2,r.Inject(p.DataValidationModel)),W(3,r.Inject(m.DataValidationCacheService)),W(4,r.Inject(p.DataValidatorRegistryService))],m.DataValidationCustomFormulaService);function N(o){return r.getOriginCellValue(o)}function Ve(o){var s;return String((s=N(o))!=null?s:"")}function Qe(o){return o.filter(Boolean).join(",")}function $(o){return o.split(",").filter(Boolean)}function xe(o){const s=N(o);return s==null?"":s.toString()}function k(o,s,e){const{formula1:t,formula2:a}=s,i=s.ranges[0].startRow,n=s.ranges[0].startColumn,l=e.row-i,u=e.col-n,d=r.isFormulaString(t)?o.moveFormulaRefOffset(t,u,l,!0):t,c=r.isFormulaString(a)?o.moveFormulaRefOffset(a,u,l,!0):a;return{transformedFormula1:d,transformedFormula2:c}}var Ge=Object.getOwnPropertyDescriptor,Ye=(o,s,e,t)=>{for(var a=t>1?void 0:t?Ge(s,e):s,i=o.length-1,n;i>=0;i--)(n=o[i])&&(a=n(a)||a);return a},De=(o,s)=>(e,t)=>s(e,t,o);m.DataValidationListCacheService=class extends r.Disposable{constructor(e,t){super();S(this,"_cache",new Map);this._injector=e,this._dataValidationModel=t,this._initRuleChangeListener()}_initRuleChangeListener(){this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(e=>{(e.type==="remove"||e.type==="update")&&this.markRuleDirty(e.unitId,e.subUnitId,e.rule.uid)}))}getOrCompute(e,t,a){const i=this.getCache(e,t,a.uid);if(i)return i;const l=this._injector.get(m.DataValidationFormulaService).getRuleFormulaResultSync(e,t,a.uid);return this.computeAndCache(e,t,a,l)}_ensureCache(e,t){let a=this._cache.get(e);a||(a=new Map,this._cache.set(e,a));let i=a.get(t);return i||(i=new Map,a.set(t,i)),i}getCache(e,t,a){var i,n;return(n=(i=this._cache.get(e))==null?void 0:i.get(t))==null?void 0:n.get(a)}setCache(e,t,a,i){this._ensureCache(e,t).set(a,i)}markRuleDirty(e,t,a){var i,n;(n=(i=this._cache.get(e))==null?void 0:i.get(t))==null||n.delete(a)}clear(){this._cache.clear()}computeAndCache(e,t,a,i){var _,R,V;const{formula1:n="",formula2:l=""}=a,u=r.isFormulaString(n)?this._getRuleFormulaResultSet((V=(R=(_=i==null?void 0:i[0])==null?void 0:_.result)==null?void 0:R[0])==null?void 0:V[0]):$(n),d=l.split(","),c=u.map((v,M)=>({label:v,color:d[M]||""})),h={};for(const v of c)v.color&&(h[v.label]=v.color);const g=new Set(u),f={list:u,listWithColor:c,colorMap:h,set:g};return this.setCache(e,t,a.uid,f),f}_getRuleFormulaResultSet(e){var a,i;if(!e)return[];const t=new Set;for(let n=0,l=e.length;n<l;n++){const u=e[n];if(u)for(let d=0,c=u.length;d<c;d++){const h=u[d],g=N(h);if(g!=null){if(typeof g!="string"&&typeof(h==null?void 0:h.s)=="object"&&((i=(a=h.s)==null?void 0:a.n)!=null&&i.pattern)){t.add(r.numfmt.format(h.s.n.pattern,g,{throws:!1}));continue}const f=typeof g=="string"?g:String(g);y(f)&&t.add(f)}}}return[...t]}},m.DataValidationListCacheService=Ye([De(0,r.Inject(r.Injector)),De(1,r.Inject(p.DataValidationModel))],m.DataValidationListCacheService);var Xe=Object.getOwnPropertyDescriptor,Ke=(o,s,e,t)=>{for(var a=t>1?void 0:t?Xe(s,e):s,i=o.length-1,n;i>=0;i--)(n=o[i])&&(a=n(a)||a);return a},L=(o,s)=>(e,t)=>s(e,t,o);m.DataValidationFormulaService=class extends r.Disposable{constructor(e,t,a,i,n,l){super();S(this,"_formulaRuleMap",new Map);this._instanceService=e,this._registerOtherFormulaService=t,this._dataValidationCacheService=a,this._dataValidationModel=i,this._validatorRegistryService=n,this._listCacheService=l,this._initFormulaResultHandler()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(e=>{for(const t in e){const a=e[t];if(this._instanceService.getUnitType(t)===r.UniverInstanceType.UNIVER_SHEET)for(const n in a){const l=a[n],u=this._ensureRuleFormulaMap(t,n);l.forEach(d=>{var h;const c=(h=d.extra)==null?void 0:h.ruleId;if(c&&u.get(c)){const g=this._dataValidationModel.getRuleById(t,n,c);g&&(this._listCacheService.markRuleDirty(t,n,c),this._dataValidationCacheService.markRangeDirty(t,n,g.ranges))}})}}}))}_ensureRuleFormulaMap(e,t){let a=this._formulaRuleMap.get(e);a||(a=new Map,this._formulaRuleMap.set(e,a));let i=a.get(t);return i||(i=new Map,a.set(t,i)),i}_registerSingleFormula(e,t,a,i){const n=[{startColumn:0,endColumn:0,startRow:0,endRow:0}];return this._registerOtherFormulaService.registerFormulaWithRange(e,t,a,n,{ruleId:i},E.OtherFormulaBizType.DATA_VALIDATION,i)}addRule(e,t,a){if(!H(a.type,this._validatorRegistryService)&&a.type!==r.DataValidationType.CHECKBOX){const{formula1:i,formula2:n,uid:l}=a,u=r.isFormulaString(i),d=r.isFormulaString(n);if(!u&&!d)return;const c=this._ensureRuleFormulaMap(e,t),h=[void 0,void 0];if(u){const g=this._registerSingleFormula(e,t,i,l);h[0]={id:g,text:i}}if(d){const g=this._registerSingleFormula(e,t,n,l);h[1]={id:g,text:n}}c.set(l,h)}}removeRule(e,t,a){const n=this._ensureRuleFormulaMap(e,t).get(a);if(!n)return;const[l,u]=n,d=[l==null?void 0:l.id,u==null?void 0:u.id].filter(Boolean);d.length&&this._registerOtherFormulaService.deleteFormula(e,t,d)}getRuleFormulaResult(e,t,a){const n=this._ensureRuleFormulaMap(e,t).get(a);if(!n)return Promise.resolve(null);const l=async u=>u&&this._registerOtherFormulaService.getFormulaValue(e,t,u.id);return Promise.all([l(n[0]),l(n[1])])}getRuleFormulaResultSync(e,t,a){const n=this._ensureRuleFormulaMap(e,t).get(a);if(n)return n.map(l=>{if(l)return this._registerOtherFormulaService.getFormulaValueSync(e,t,l.id)})}getRuleFormulaInfo(e,t,a){return this._ensureRuleFormulaMap(e,t).get(a)}},m.DataValidationFormulaService=Ke([L(0,r.IUniverInstanceService),L(1,r.Inject(E.RegisterOtherFormulaService)),L(2,r.Inject(m.DataValidationCacheService)),L(3,r.Inject(p.DataValidationModel)),L(4,r.Inject(p.DataValidatorRegistryService)),L(5,r.Inject(m.DataValidationListCacheService))],m.DataValidationFormulaService);class he{constructor(s,e,t,a,i=!1){S(this,"_map");S(this,"_tree",new r.RBush);S(this,"_dirty",!0);S(this,"_buildTree",()=>{if(!this._dirty||this._disableTree)return;this._tree.clear();const s=[];this._map.forEach((e,t)=>{e.forEach(a=>{s.push({minX:a.startRow,maxX:a.endRow,minY:a.startColumn,maxY:a.endColumn,ruleId:t})})}),this._tree.load(s),this._dirty=!1});S(this,"_debonceBuildTree",r.debounce(this._buildTree,0));this._unitId=e,this._subUnitId=t,this._univerInstanceService=a,this._disableTree=i,this._map=s,this._buildTree()}get _worksheet(){var s;return(s=this._univerInstanceService.getUnit(this._unitId,r.UniverInstanceType.UNIVER_SHEET))==null?void 0:s.getSheetBySheetId(this._subUnitId)}_addRule(s,e){if(!this._worksheet)return;const t=r.Rectangle.mergeRanges(e.map(a=>r.Range.transformRange(a,this._worksheet)));this._map.forEach((a,i)=>{const n=r.Rectangle.subtractMulti(a,t);n.length===0?this._map.delete(i):this._map.set(i,n)}),this._dirty=!0,this._map.set(s,t),this._debonceBuildTree()}addRule(s){this._addRule(s.uid,s.ranges)}removeRange(s){if(!this._worksheet)return;const e=s.map(t=>r.Range.transformRange(t,this._worksheet));this._map.forEach((t,a)=>{const i=r.Rectangle.subtractMulti(t,e);i.length===0?this._map.delete(a):this._map.set(a,i)}),this._dirty=!0,this._debonceBuildTree()}_removeRule(s){this._map.delete(s),this._dirty=!0,this._debonceBuildTree()}removeRule(s){this._removeRule(s.uid)}updateRange(s,e){this._removeRule(s),this._addRule(s,e)}addRangeRules(s){s.forEach(({id:e,ranges:t})=>{if(!t.length)return;let a=this._map.get(e);a?(this._map.set(e,r.Rectangle.mergeRanges([...a,...t])),a=this._map.get(e)):(a=t,this._map.set(e,a)),this._map.forEach((i,n)=>{if(n===e)return;const l=r.Rectangle.subtractMulti(i,t);l.length===0?this._map.delete(n):this._map.set(n,l)})}),this._dirty=!0,this._debonceBuildTree()}diff(s){const e=[];let t=0;return s.forEach((a,i)=>{var u;const n=(u=this._map.get(a.uid))!=null?u:[],l=a.ranges;n.length!==0&&(n.length!==l.length||n.some((d,c)=>!r.Rectangle.equals(d,l[c])))&&e.push({type:"update",ruleId:a.uid,oldRanges:l,newRanges:r.Rectangle.sort(n),rule:a}),n.length===0&&(e.push({type:"delete",rule:a,index:i-t}),t++)}),e}diffWithAddition(s,e){const t=[];let a=0;return s.forEach((i,n)=>{var d;const l=(d=this._map.get(i.uid))!=null?d:[],u=i.ranges;l.length!==0&&(l.length!==u.length||l.some((c,h)=>!r.Rectangle.equals(c,u[h])))&&t.push({type:"update",ruleId:i.uid,oldRanges:u,newRanges:r.Rectangle.sort(l),rule:i}),l.length===0&&(t.push({type:"delete",rule:i,index:n-a}),a++)}),Array.from(e).forEach(i=>{var l;const n=(l=this._map.get(i.uid))!=null?l:[];t.push({type:"add",rule:{...i,ranges:r.Rectangle.sort(n)}})}),t}clone(){return new he(new Map(r.Tools.deepClone(Array.from(this._map.entries()))),this._unitId,this._subUnitId,this._univerInstanceService,!0)}getValue(s,e){this._dirty&&this._buildTree();const t=this._tree.search({minX:s,maxX:s,minY:e,maxY:e});return t.length>0?t[0].ruleId:void 0}}var ze=Object.getOwnPropertyDescriptor,Ze=(o,s,e,t)=>{for(var a=t>1?void 0:t?ze(s,e):s,i=o.length-1,n;i>=0;i--)(n=o[i])&&(a=n(a)||a);return a},A=(o,s)=>(e,t)=>s(e,t,o);m.SheetDataValidationModel=class extends r.Disposable{constructor(e,t,a,i,n,l,u){super();S(this,"_ruleMatrixMap",new Map);S(this,"_validStatusChange$",new U.Subject);S(this,"_ruleChange$",new U.Subject);S(this,"ruleChange$",this._ruleChange$.asObservable());S(this,"validStatusChange$",this._validStatusChange$.asObservable());this._dataValidationModel=e,this._univerInstanceService=t,this._dataValidatorRegistryService=a,this._dataValidationCacheService=i,this._dataValidationFormulaService=n,this._dataValidationCustomFormulaService=l,this._commandService=u,this._initRuleUpdateListener(),this.disposeWithMe(()=>{this._ruleChange$.complete(),this._validStatusChange$.complete()}),this._initUniverInstanceListener()}_initUniverInstanceListener(){this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(e=>{this._ruleMatrixMap.delete(e.getUnitId())})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===D.RemoveSheetMutation.id){const{unitId:t,subUnitId:a}=e.params,i=this._ruleMatrixMap.get(t);i&&i.delete(a)}}))}_initRuleUpdateListener(){const e=this._dataValidationModel.getAll();for(const[t,a]of e)for(const[i,n]of a)for(const l of n)this._addRule(t,i,l),this._ruleChange$.next({type:"add",unitId:t,subUnitId:i,rule:l,source:"patched"});this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(t=>{switch(t.type){case"add":this._addRule(t.unitId,t.subUnitId,t.rule);break;case"update":this._updateRule(t.unitId,t.subUnitId,t.rule.uid,t.oldRule,t.updatePayload);break;case"remove":this._removeRule(t.unitId,t.subUnitId,t.rule);break}this._ruleChange$.next(t)}))}_ensureRuleMatrix(e,t){let a=this._ruleMatrixMap.get(e);a||(a=new Map,this._ruleMatrixMap.set(e,a));let i=a.get(t);return i||(i=new he(new Map,e,t,this._univerInstanceService),a.set(t,i)),i}_addRuleSideEffect(e,t,a){this._ensureRuleMatrix(e,t).addRule(a),this._dataValidationCacheService.addRule(e,t,a),this._dataValidationFormulaService.addRule(e,t,a),this._dataValidationCustomFormulaService.addRule(e,t,a)}_addRule(e,t,a){(Array.isArray(a)?a:[a]).forEach(n=>{this._addRuleSideEffect(e,t,n)})}_updateRule(e,t,a,i,n){const l=this._ensureRuleMatrix(e,t),u={...i,...n.payload};n.type===p.UpdateRuleType.RANGE?l.updateRange(a,n.payload):n.type===p.UpdateRuleType.ALL&&l.updateRange(a,n.payload.ranges),this._dataValidationCacheService.removeRule(e,t,i),this._dataValidationCacheService.addRule(e,t,u),this._dataValidationFormulaService.removeRule(e,t,i.uid),this._dataValidationFormulaService.addRule(e,t,u),this._dataValidationCustomFormulaService.deleteByRuleId(e,t,a),this._dataValidationCustomFormulaService.addRule(e,t,u)}_removeRule(e,t,a){this._ensureRuleMatrix(e,t).removeRule(a),this._dataValidationCacheService.removeRule(e,t,a),this._dataValidationCustomFormulaService.deleteByRuleId(e,t,a.uid)}getValidator(e){return this._dataValidatorRegistryService.getValidatorItem(e)}getRuleIdByLocation(e,t,a,i){return this._ensureRuleMatrix(e,t).getValue(a,i)}getRuleByLocation(e,t,a,i){const n=this.getRuleIdByLocation(e,t,a,i);if(n)return this._dataValidationModel.getRuleById(e,t,n)}validator(e,t,a){const{col:i,row:n,unitId:l,subUnitId:u,worksheet:d}=t,c=(R,V)=>{a&&a(R,V),V&&this._validStatusChange$.next({unitId:l,subUnitId:u,ruleId:e.uid,status:R,row:n,col:i})},h=d.getCellValueOnly(n,i),g=this.getValidator(e.type),f=d.getCellRaw(n,i),_=N(f);if(g){const R=this._dataValidationCacheService.ensureCache(l,u),V=R.getValue(n,i);return V==null?(R.setValue(n,i,r.DataValidationStatus.VALIDATING),g.validator({value:_,unitId:l,subUnitId:u,row:n,column:i,worksheet:t.worksheet,workbook:t.workbook,interceptValue:N(h),t:f==null?void 0:f.t},e).then(v=>{const M=v?r.DataValidationStatus.VALID:r.DataValidationStatus.INVALID,T=R.getValue(n,i);M===r.DataValidationStatus.VALID?R.realDeleteValue(n,i):R.setValue(n,i,M),c(M,V!==T)}),r.DataValidationStatus.VALIDATING):(c(V!=null?V:r.DataValidationStatus.VALID,!1),V!=null?V:r.DataValidationStatus.VALID)}else return c(r.DataValidationStatus.VALID,!1),r.DataValidationStatus.VALID}getRuleObjectMatrix(e,t){return this._ensureRuleMatrix(e,t)}getRuleById(e,t,a){return this._dataValidationModel.getRuleById(e,t,a)}getRuleIndex(e,t,a){return this._dataValidationModel.getRuleIndex(e,t,a)}getRules(e,t){return[...this._dataValidationModel.getRules(e,t)]}getUnitRules(e){return this._dataValidationModel.getUnitRules(e)}deleteUnitRules(e){return this._dataValidationModel.deleteUnitRules(e)}getSubUnitIds(e){return this._dataValidationModel.getSubUnitIds(e)}getAll(){return this._dataValidationModel.getAll()}},m.SheetDataValidationModel=Ze([A(0,r.Inject(p.DataValidationModel)),A(1,r.IUniverInstanceService),A(2,r.Inject(p.DataValidatorRegistryService)),A(3,r.Inject(m.DataValidationCacheService)),A(4,r.Inject(m.DataValidationFormulaService)),A(5,r.Inject(m.DataValidationCustomFormulaService)),A(6,r.ICommandService)],m.SheetDataValidationModel);const q=1,Q=0;function Me(o,s){return r.Tools.isBlank(o)?s.t("dataValidation.validFail.value"):r.isFormulaString(o)?s.t("dataValidation.validFail.primitive"):""}const x=o=>r.Tools.isDefine(o)&&String(o).toLowerCase()==="true"?"1":String(o).toLowerCase()==="false"?"0":o;class Ee extends p.BaseDataValidator{constructor(){super(...arguments);S(this,"id",r.DataValidationType.CHECKBOX);S(this,"title","dataValidation.checkbox.title");S(this,"operators",[]);S(this,"scopes",["sheet"]);S(this,"order",41);S(this,"offsetFormulaByRange",!1);S(this,"_formulaService",this.injector.get(m.DataValidationFormulaService));S(this,"skipDefaultFontRender",(e,t,a)=>{const{unitId:i,subUnitId:n}=a,{formula1:l,formula2:u}=this.parseFormulaSync(e,i,n),d=`${t!=null?t:""}`;return!d||d===`${l}`||d===`${u}`})}validatorFormula(e,t,a){const{formula1:i,formula2:n}=e,l=i===n;if(r.Tools.isBlank(i)&&r.Tools.isBlank(n))return{success:!0};if(l)return{success:!1,formula1:this.localeService.t("dataValidation.validFail.checkboxEqual"),formula2:this.localeService.t("dataValidation.validFail.checkboxEqual")};const u=Me(i,this.localeService),d=Me(n,this.localeService);return{success:!u&&!d,formula1:u,formula2:d}}async parseFormula(e,t,a){var h,g,f,_;const{formula1:i=q,formula2:n=Q}=e,l=await this._formulaService.getRuleFormulaResult(t,a,e.uid),u=r.isFormulaString(i)?w((g=(h=l==null?void 0:l[0])==null?void 0:h.result)==null?void 0:g[0][0]):i,d=r.isFormulaString(n)?w((_=(f=l==null?void 0:l[1])==null?void 0:f.result)==null?void 0:_[0][0]):n,c=y(String(u))&&y(String(d));return{formula1:x(u),formula2:x(d),originFormula1:u,originFormula2:d,isFormulaValid:c}}getExtraStyle(e,t){return{tb:r.WrapStrategy.CLIP}}parseFormulaSync(e,t,a){var h,g,f,_;const{formula1:i=q,formula2:n=Q}=e,l=this._formulaService.getRuleFormulaResultSync(t,a,e.uid),u=r.isFormulaString(i)?w((g=(h=l==null?void 0:l[0])==null?void 0:h.result)==null?void 0:g[0][0]):i,d=r.isFormulaString(n)?w((_=(f=l==null?void 0:l[1])==null?void 0:f.result)==null?void 0:_[0][0]):n,c=y(String(u))&&y(String(d));return{formula1:x(u),formula2:x(d),originFormula1:u,originFormula2:d,isFormulaValid:c}}async isValidType(e,t,a){const{value:i,unitId:n,subUnitId:l}=e,{formula1:u,formula2:d,originFormula1:c,originFormula2:h}=await this.parseFormula(a,n,l);return!r.Tools.isDefine(u)||!r.Tools.isDefine(d)?!0:r.Tools.isDefine(i)&&(String(i)===String(u)||String(i)===String(d)||String(i)===String(c!=null?c:"")||String(i)===String(h!=null?h:""))}generateRuleErrorMessage(e){return this.localeService.t("dataValidation.checkbox.error")}generateRuleName(e){return this.titleStr}}const Je={[r.DataValidationOperator.BETWEEN]:"dataValidation.date.operators.between",[r.DataValidationOperator.EQUAL]:"dataValidation.date.operators.equal",[r.DataValidationOperator.GREATER_THAN]:"dataValidation.date.operators.greaterThan",[r.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.operators.greaterThanOrEqual",[r.DataValidationOperator.LESS_THAN]:"dataValidation.date.operators.lessThan",[r.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.operators.lessThanOrEqual",[r.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.operators.notBetween",[r.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.operators.notEqual"};r.DataValidationOperator.BETWEEN+"",r.DataValidationOperator.EQUAL+"",r.DataValidationOperator.GREATER_THAN+"",r.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",r.DataValidationOperator.LESS_THAN+"",r.DataValidationOperator.LESS_THAN_OR_EQUAL+"",r.DataValidationOperator.NOT_BETWEEN+"",r.DataValidationOperator.NOT_EQUAL+"";const ye={[r.DataValidationOperator.BETWEEN]:"dataValidation.date.ruleName.between",[r.DataValidationOperator.EQUAL]:"dataValidation.date.ruleName.equal",[r.DataValidationOperator.GREATER_THAN]:"dataValidation.date.ruleName.greaterThan",[r.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.ruleName.greaterThanOrEqual",[r.DataValidationOperator.LESS_THAN]:"dataValidation.date.ruleName.lessThan",[r.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.ruleName.lessThanOrEqual",[r.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.ruleName.notBetween",[r.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.ruleName.notEqual",NONE:"dataValidation.date.ruleName.legal"},et={[r.DataValidationOperator.BETWEEN]:"dataValidation.date.errorMsg.between",[r.DataValidationOperator.EQUAL]:"dataValidation.date.errorMsg.equal",[r.DataValidationOperator.GREATER_THAN]:"dataValidation.date.errorMsg.greaterThan",[r.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.errorMsg.greaterThanOrEqual",[r.DataValidationOperator.LESS_THAN]:"dataValidation.date.errorMsg.lessThan",[r.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.errorMsg.lessThanOrEqual",[r.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.errorMsg.notBetween",[r.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.errorMsg.notEqual",NONE:"dataValidation.date.errorMsg.legal"},Z=[r.DataValidationOperator.BETWEEN,r.DataValidationOperator.NOT_BETWEEN],G="{FORMULA1}",Y="{FORMULA2}",me=o=>{var e,t;if(o==null||typeof o=="boolean")return;if(typeof o=="number"||!Number.isNaN(+o))return+o;const s=(e=r.numfmt.parseDate(o))==null?void 0:e.v;return r.Tools.isDefine(s)?s:(t=r.numfmt.parseDate(r.dayjs(o).format("YYYY-MM-DD HH:mm:ss")))==null?void 0:t.v};class Te extends p.BaseDataValidator{constructor(){super(...arguments);S(this,"id",r.DataValidationType.DATE);S(this,"title","dataValidation.date.title");S(this,"order",40);S(this,"operators",[r.DataValidationOperator.BETWEEN,r.DataValidationOperator.EQUAL,r.DataValidationOperator.GREATER_THAN,r.DataValidationOperator.GREATER_THAN_OR_EQUAL,r.DataValidationOperator.LESS_THAN,r.DataValidationOperator.LESS_THAN_OR_EQUAL,r.DataValidationOperator.NOT_BETWEEN,r.DataValidationOperator.NOT_EQUAL]);S(this,"scopes",["sheet"]);S(this,"_customFormulaService",this.injector.get(m.DataValidationCustomFormulaService));S(this,"_lexerTreeBuilder",this.injector.get(E.LexerTreeBuilder))}async parseFormula(e,t,a,i,n){const l=await this._customFormulaService.getCellFormulaValue(t,a,e.uid,i,n),u=await this._customFormulaService.getCellFormula2Value(t,a,e.uid,i,n),{formula1:d,formula2:c}=e,h=y(String(l==null?void 0:l.v))&&y(String(u==null?void 0:u.v));return{formula1:me(r.isFormulaString(d)?l==null?void 0:l.v:d),formula2:me(r.isFormulaString(c)?u==null?void 0:u.v:c),isFormulaValid:h}}async isValidType(e){const{interceptValue:t,value:a}=e;return typeof a=="number"&&typeof t=="string"||typeof t=="string"?!!r.numfmt.parseDate(t):!1}_validatorSingleFormula(e){return!r.Tools.isBlank(e)&&(r.isFormulaString(e)||!Number.isNaN(+e)||!!(e&&r.numfmt.parseDate(e)))}validatorFormula(e,t,a){const i=e.operator;if(!i)return{success:!0};const n=this._validatorSingleFormula(e.formula1),l=this.localeService.t("dataValidation.validFail.date");if(Z.includes(i)){const d=this._validatorSingleFormula(e.formula2);return{success:n&&d,formula1:n?void 0:l,formula2:d?void 0:l}}return{success:n,formula1:n?void 0:l}}normalizeFormula(e,t,a){const{formula1:i,formula2:n,bizInfo:l}=e,u=d=>{var h;if(!d)return d;let c;if(!Number.isNaN(+d))c=r.numfmt.dateFromSerial(+d);else{const g=(h=r.numfmt.parseDate(d))==null?void 0:h.v;if(g==null)return"";c=r.numfmt.dateFromSerial(g)}return r.dayjs(`${c[0]}/${c[1]}/${c[2]} ${c[3]}:${c[4]}:${c[5]}`).format(l!=null&&l.showTime?"YYYY-MM-DD HH:mm:ss":"YYYY-MM-DD")};return{formula1:r.isFormulaString(i)?i:u(`${i}`),formula2:r.isFormulaString(n)?n:u(`${n}`)}}transform(e,t,a){const{value:i}=e;return{...e,value:me(i)}}get operatorNames(){return this.operators.map(e=>this.localeService.t(Je[e]))}generateRuleName(e){var a,i;if(!e.operator)return this.localeService.t(ye.NONE);const t=this.localeService.t(ye[e.operator]).replace(G,(a=e.formula1)!=null?a:"").replace(Y,(i=e.formula2)!=null?i:"");return`${this.titleStr} ${t}`}generateRuleErrorMessage(e,t){if(!e.operator)return this.titleStr;const{transformedFormula1:a,transformedFormula2:i}=k(this._lexerTreeBuilder,e,t);return`${this.localeService.t(et[e.operator]).replace(G,a!=null?a:"").replace(Y,i!=null?i:"")}`}}r.DataValidationOperator.BETWEEN+"",r.DataValidationOperator.EQUAL+"",r.DataValidationOperator.GREATER_THAN+"",r.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",r.DataValidationOperator.LESS_THAN+"",r.DataValidationOperator.LESS_THAN_OR_EQUAL+"",r.DataValidationOperator.NOT_BETWEEN+"",r.DataValidationOperator.NOT_EQUAL+"",r.DataValidationOperator.BETWEEN+"",r.DataValidationOperator.EQUAL+"",r.DataValidationOperator.GREATER_THAN+"",r.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",r.DataValidationOperator.LESS_THAN+"",r.DataValidationOperator.LESS_THAN_OR_EQUAL+"",r.DataValidationOperator.NOT_BETWEEN+"",r.DataValidationOperator.NOT_EQUAL+"";const J={[r.DataValidationOperator.BETWEEN]:"dataValidation.errorMsg.between",[r.DataValidationOperator.EQUAL]:"dataValidation.errorMsg.equal",[r.DataValidationOperator.GREATER_THAN]:"dataValidation.errorMsg.greaterThan",[r.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.errorMsg.greaterThanOrEqual",[r.DataValidationOperator.LESS_THAN]:"dataValidation.errorMsg.lessThan",[r.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.errorMsg.lessThanOrEqual",[r.DataValidationOperator.NOT_BETWEEN]:"dataValidation.errorMsg.notBetween",[r.DataValidationOperator.NOT_EQUAL]:"dataValidation.errorMsg.notEqual",NONE:"dataValidation.errorMsg.legal"};function X(o){return+o}class tt extends p.BaseDataValidator{constructor(){super(...arguments);S(this,"_customFormulaService",this.injector.get(m.DataValidationCustomFormulaService));S(this,"id",r.DataValidationType.DECIMAL);S(this,"_lexerTreeBuilder",this.injector.get(E.LexerTreeBuilder));S(this,"title","dataValidation.decimal.title");S(this,"order",20);S(this,"operators",[r.DataValidationOperator.BETWEEN,r.DataValidationOperator.EQUAL,r.DataValidationOperator.GREATER_THAN,r.DataValidationOperator.GREATER_THAN_OR_EQUAL,r.DataValidationOperator.LESS_THAN,r.DataValidationOperator.LESS_THAN_OR_EQUAL,r.DataValidationOperator.NOT_BETWEEN,r.DataValidationOperator.NOT_EQUAL]);S(this,"scopes",["sheet"])}_isFormulaOrNumber(e){return!r.Tools.isBlank(e)&&(r.isFormulaString(e)||!Number.isNaN(+e))}async isValidType(e,t,a){const{value:i}=e;return!Number.isNaN(X(i))}transform(e,t,a){const{value:i}=e;return{...e,value:X(i)}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a,i,n){const l=await this._customFormulaService.getCellFormulaValue(t,a,e.uid,i,n),u=await this._customFormulaService.getCellFormula2Value(t,a,e.uid,i,n),{formula1:d,formula2:c}=e,h=y(String(l==null?void 0:l.v))&&y(String(u==null?void 0:u.v));return{formula1:this._parseNumber(r.isFormulaString(d)?l==null?void 0:l.v:d),formula2:this._parseNumber(r.isFormulaString(c)?u==null?void 0:u.v:c),isFormulaValid:h}}validatorFormula(e,t,a){const i=e.operator;if(!i)return{success:!0};const n=r.Tools.isDefine(e.formula1)&&this._isFormulaOrNumber(e.formula1),l=r.Tools.isDefine(e.formula2)&&this._isFormulaOrNumber(e.formula2),u=Z.includes(i),d=this.localeService.t("dataValidation.validFail.number");return u?{success:n&&l,formula1:n?void 0:d,formula2:l?void 0:d}:{success:n,formula1:n?"":d}}generateRuleErrorMessage(e,t){if(!e.operator)return this.localeService.t(J.NONE).replace("{TYPE}",this.titleStr);const{transformedFormula1:a,transformedFormula2:i}=k(this._lexerTreeBuilder,e,t);return`${this.localeService.t(J[e.operator]).replace(G,a!=null?a:"").replace(Y,i!=null?i:"")}`}}function at(o){var e,t;if(!o)return[];const s=new Set;for(let a=0,i=o.length;a<i;a++){const n=o[a];if(n)for(let l=0,u=n.length;l<u;l++){const d=n[l],c=N(d);if(c!=null){if(typeof c!="string"&&typeof(d==null?void 0:d.s)=="object"&&((t=(e=d.s)==null?void 0:e.n)!=null&&t.pattern)){s.add(r.numfmt.format(d.s.n.pattern,c,{throws:!1}));continue}const h=typeof c=="string"?c:String(c);y(h)&&s.add(h)}}}return[...s]}const it=["if","indirect","choose","offset"];function rt(o,s){if(!r.isFormulaString(o)||E.isReferenceString(o.slice(1)))return!0;const t=s.sequenceNodesBuilder(o);return t&&t.some(a=>typeof a=="object"&&a.nodeType===E.sequenceNodeType.FUNCTION&&it.indexOf(a.token.toLowerCase())>-1)}function nt(o,s){const{formula1:e="",ranges:t}=o;if(E.isReferenceString(e.slice(1))){const i=E.deserializeRangeWithSheet(e.slice(1));if((!i.sheetName||i.sheetName===s)&&t.some(n=>r.Rectangle.intersects(n,i.range)))return!0}return!1}class ge extends p.BaseDataValidator{constructor(){super(...arguments);S(this,"formulaService",this.injector.get(m.DataValidationFormulaService));S(this,"_lexer",this.injector.get(E.LexerTreeBuilder));S(this,"_univerInstanceService",this.injector.get(r.IUniverInstanceService));S(this,"_listCacheService",this.injector.get(m.DataValidationListCacheService));S(this,"order",50);S(this,"offsetFormulaByRange",!1);S(this,"id",r.DataValidationType.LIST);S(this,"title","dataValidation.list.title");S(this,"operators",[]);S(this,"scopes",["sheet"]);S(this,"skipDefaultFontRender",e=>e.renderMode!==r.DataValidationRenderMode.TEXT)}validatorFormula(e,t,a){var d,c,h;const i=!r.Tools.isBlank(e.formula1),n=rt((d=e.formula1)!=null?d:"",this._lexer),l=(h=(c=this._univerInstanceService.getUnit(t,r.UniverInstanceType.UNIVER_SHEET))==null?void 0:c.getSheetBySheetId(a))==null?void 0:h.getName(),u=nt(e,l!=null?l:"");return{success:!!(i&&n&&!u),formula1:i?n?u?this.localeService.t("dataValidation.validFail.listIntersects"):void 0:this.localeService.t("dataValidation.validFail.listInvalid"):this.localeService.t("dataValidation.validFail.list")}}getExtraStyle(e,t,{style:a}){var n;const i=(n=a.tb!==r.WrapStrategy.OVERFLOW?a.tb:r.WrapStrategy.CLIP)!=null?n:r.WrapStrategy.WRAP;if(e.type===r.DataValidationType.LIST&&(e.renderMode===r.DataValidationRenderMode.ARROW||e.renderMode===r.DataValidationRenderMode.TEXT)){const l=this.getListWithColorMap(e),u=`${t!=null?t:""}`,d=l[u];if(d)return{bg:{rgb:d},tb:i}}return{tb:i}}parseCellValue(e){const t=e.toString();return $(t)}async parseFormula(e,t,a){var u,d;const i=await this.formulaService.getRuleFormulaResult(t,a,e.uid),n=w((d=(u=i==null?void 0:i[0])==null?void 0:u.result)==null?void 0:d[0][0]);return{formula1:void 0,formula2:void 0,isFormulaValid:y(String(n))}}async isValidType(e,t,a){const{value:i,unitId:n,subUnitId:l}=e,{formula1:u=""}=a,d=r.isFormulaString(u)?this._listCacheService.getOrCompute(n,l,a).list:$(u);return this.parseCellValue(i).every(h=>d.includes(h))}generateRuleName(){return this.localeService.t("dataValidation.list.name")}generateRuleErrorMessage(){return this.localeService.t("dataValidation.list.error")}_getUnitAndSubUnit(e,t){var n,l;const a=(n=e?this._univerInstanceService.getUniverSheetInstance(e):void 0)!=null?n:this._univerInstanceService.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET);if(!a)return null;const i=(l=t?a.getSheetBySheetId(t):void 0)!=null?l:a.getActiveSheet();return i?{unitId:a.getUnitId(),subUnitId:i.getSheetId()}:null}getList(e,t,a){const i=this._getUnitAndSubUnit(t,a);if(!i)return[];const{unitId:n,subUnitId:l}=i;return this._listCacheService.getOrCompute(n,l,e).list}async getListAsync(e,t,a){var c,h;const{formula1:i=""}=e,n=this._getUnitAndSubUnit(t,a);if(!n)return[];const{unitId:l,subUnitId:u}=n,d=await this.formulaService.getRuleFormulaResult(l,u,e.uid);return r.isFormulaString(i)?at((h=(c=d==null?void 0:d[0])==null?void 0:c.result)==null?void 0:h[0][0]):$(i)}getListWithColor(e,t,a){const i=this._getUnitAndSubUnit(t,a);if(!i)return[];const{unitId:n,subUnitId:l}=i;return this._listCacheService.getOrCompute(n,l,e).listWithColor}getListWithColorMap(e,t,a){const i=this._getUnitAndSubUnit(t,a);if(!i)return{};const{unitId:n,subUnitId:l}=i;return this._listCacheService.getOrCompute(n,l,e).colorMap}}class ot extends p.BaseDataValidator{constructor(){super(...arguments);S(this,"id",r.DataValidationType.TEXT_LENGTH);S(this,"title","dataValidation.textLength.title");S(this,"_lexerTreeBuilder",this.injector.get(E.LexerTreeBuilder));S(this,"order",30);S(this,"operators",[r.DataValidationOperator.BETWEEN,r.DataValidationOperator.EQUAL,r.DataValidationOperator.GREATER_THAN,r.DataValidationOperator.GREATER_THAN_OR_EQUAL,r.DataValidationOperator.LESS_THAN,r.DataValidationOperator.LESS_THAN_OR_EQUAL,r.DataValidationOperator.NOT_BETWEEN,r.DataValidationOperator.NOT_EQUAL]);S(this,"scopes",["sheet"]);S(this,"_customFormulaService",this.injector.get(m.DataValidationCustomFormulaService))}_isFormulaOrInt(e){return!r.Tools.isBlank(e)&&(r.isFormulaString(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}validatorFormula(e,t,a){const i=e.operator;if(!i)return{success:!1};const n=r.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),l=r.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),u=Z.includes(i),d=this.localeService.t("dataValidation.validFail.number");return u?{success:n&&l,formula1:n?void 0:d,formula2:l?void 0:d}:{success:n,formula1:d}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a,i,n){const l=await this._customFormulaService.getCellFormulaValue(t,a,e.uid,i,n),u=await this._customFormulaService.getCellFormula2Value(t,a,e.uid,i,n),{formula1:d,formula2:c}=e,h=y(String(l==null?void 0:l.v))&&y(String(u==null?void 0:u.v));return{formula1:this._parseNumber(r.isFormulaString(d)?l==null?void 0:l.v:d),formula2:this._parseNumber(r.isFormulaString(c)?u==null?void 0:u.v:c),isFormulaValid:h}}transform(e,t,a){return{...e,value:e.value.toString().length}}async isValidType(e,t,a){const{value:i}=e;return typeof i=="string"||typeof i=="number"}generateRuleErrorMessage(e,t){if(!e.operator)return this.titleStr;const{transformedFormula1:a,transformedFormula2:i}=k(this._lexerTreeBuilder,e,t);return`${this.localeService.t(p.TextLengthErrorTitleMap[e.operator]).replace(G,a!=null?a:"").replace(Y,i!=null?i:"")}`}}function Ce(o){var e,t;return o?o.p?!((t=(e=o.p.body)==null?void 0:e.dataStream)!=null?t:"").slice(0,-2).trim():r.Tools.isBlank(o.v):!0}function K(o,s,e,t,a="command",i=!0){const n=t.get(E.LexerTreeBuilder),l=t.get(p.DataValidatorRegistryService),u=[],d=[],c=t.get(m.SheetDataValidationModel),h=t.get(r.IUniverInstanceService),g=D.getSheetCommandTarget(h,{unitId:o,subUnitId:s});if(!g)return{redoMutations:u,undoMutations:d};const{worksheet:f}=g,_=new r.ObjectMatrix;let R=!1;function V(v,M){i&&v.forEach(T=>{r.Range.foreach(T,(C,F)=>{const O=f.getCellRaw(C,F),j=Ve(O);(Ce(O)||j===M)&&!(O!=null&&O.p)&&(R=!0,_.setValue(C,F,{v:M,p:null}))})})}if(e.forEach(v=>{switch(v.type){case"delete":u.push({id:p.RemoveDataValidationMutation.id,params:{unitId:o,subUnitId:s,ruleId:v.rule.uid,source:a}}),d.unshift({id:p.AddDataValidationMutation.id,params:{unitId:o,subUnitId:s,rule:v.rule,index:v.index,source:a}});break;case"update":{if(H(v.rule.type,l)){const T=v.oldRanges[0].startRow,C=v.oldRanges[0].startColumn,F=v.newRanges[0].startRow,O=v.newRanges[0].startColumn,j=F-T,oe=O-C,se=r.isFormulaString(v.rule.formula1)?n.moveFormulaRefOffset(v.rule.formula1,oe,j):v.rule.formula1,le=r.isFormulaString(v.rule.formula2)?n.moveFormulaRefOffset(v.rule.formula2,oe,j):v.rule.formula2;se!==v.rule.formula1||le!==v.rule.formula2||!r.isRangesEqual(v.newRanges,v.oldRanges)?(u.push({id:p.UpdateDataValidationMutation.id,params:{unitId:o,subUnitId:s,ruleId:v.ruleId,payload:{type:p.UpdateRuleType.ALL,payload:{formula1:se,formula2:le,ranges:v.newRanges}}}}),d.unshift({id:p.UpdateDataValidationMutation.id,params:{unitId:o,subUnitId:s,ruleId:v.ruleId,payload:{type:p.UpdateRuleType.ALL,payload:{formula1:v.rule.formula1,formula2:v.rule.formula2,ranges:v.oldRanges}}}})):(u.push({id:p.UpdateDataValidationMutation.id,params:{unitId:o,subUnitId:s,ruleId:v.ruleId,payload:{type:p.UpdateRuleType.RANGE,payload:v.newRanges},source:a}}),d.unshift({id:p.UpdateDataValidationMutation.id,params:{unitId:o,subUnitId:s,ruleId:v.ruleId,payload:{type:p.UpdateRuleType.RANGE,payload:v.oldRanges},source:a}}))}else u.push({id:p.UpdateDataValidationMutation.id,params:{unitId:o,subUnitId:s,ruleId:v.ruleId,payload:{type:p.UpdateRuleType.RANGE,payload:v.newRanges},source:a}}),d.unshift({id:p.UpdateDataValidationMutation.id,params:{unitId:o,subUnitId:s,ruleId:v.ruleId,payload:{type:p.UpdateRuleType.RANGE,payload:v.oldRanges},source:a}});const M=c.getRuleById(o,s,v.ruleId);if(M&&M.type===r.DataValidationType.CHECKBOX){const C=c.getValidator(r.DataValidationType.CHECKBOX).parseFormulaSync(M,o,s);V(v.newRanges,C.formula2)}break}case"add":{if(u.push({id:p.AddDataValidationMutation.id,params:{unitId:o,subUnitId:s,rule:v.rule,source:a}}),d.unshift({id:p.RemoveDataValidationMutation.id,params:{unitId:o,subUnitId:s,ruleId:v.rule.uid,source:a}}),v.rule.type===r.DataValidationType.CHECKBOX){const T=c.getValidator(r.DataValidationType.CHECKBOX).parseFormulaSync(v.rule,o,s);V(v.rule.ranges,T.originFormula2)}break}}}),R){const v={id:D.SetRangeValuesMutation.id,params:{unitId:o,subUnitId:s,cellValue:_.getData()}},M={id:D.SetRangeValuesMutation.id,params:D.SetRangeValuesUndoMutationFactory(t,v.params)};u.push(v),d.push(M)}return{redoMutations:u,undoMutations:d}}const Oe={type:r.CommandType.COMMAND,id:"sheet.command.updateDataValidationRuleRange",handler(o,s){if(!s)return!1;const{unitId:e,subUnitId:t,ranges:a,ruleId:i}=s,n=o.get(m.SheetDataValidationModel),l=o.get(r.ICommandService),u=o.get(r.IUndoRedoService);if(!n.getRuleById(e,t,i))return!1;const c=n.getRuleObjectMatrix(e,t).clone();c.updateRange(i,a);const h=c.diff(n.getRules(e,t)),{redoMutations:g,undoMutations:f}=K(e,t,h,o);return u.pushUndoRedo({undoMutations:f,redoMutations:g,unitID:e}),r.sequenceExecute(g,l),!0}},Fe={type:r.CommandType.COMMAND,id:"sheet.command.addDataValidation",handler(o,s){if(!s)return!1;const{unitId:e,subUnitId:t,rule:a}=s,i=o.get(m.SheetDataValidationModel),n=o.get(r.ICommandService),l=o.get(r.IUndoRedoService),u=i.getRuleObjectMatrix(e,t).clone();u.addRule(a);const d=u.diff(i.getRules(e,t)),c=i.getValidator(a.type),h={unitId:e,subUnitId:t,rule:{...a,...c==null?void 0:c.normalizeFormula(a,e,t)}},{redoMutations:g,undoMutations:f}=K(e,t,d,o);return g.push({id:p.AddDataValidationMutation.id,params:h}),f.unshift({id:p.RemoveDataValidationMutation.id,params:{unitId:e,subUnitId:t,ruleId:a.uid}}),l.pushUndoRedo({unitID:e,redoMutations:g,undoMutations:f}),r.sequenceExecute(g,n),!0}},Ie={type:r.CommandType.COMMAND,id:"sheets.command.update-data-validation-setting",handler(o,s){if(!s)return!1;const e=o.get(r.ICommandService),t=o.get(r.IUndoRedoService),a=o.get(m.SheetDataValidationModel),i=o.get(p.DataValidatorRegistryService),{unitId:n,subUnitId:l,ruleId:u,setting:d}=s,c=i.getValidatorItem(d.type);if(!c)return!1;const h=a.getRuleById(n,l,u);if(!h)return!1;const g={...h,...d};if(!c.validatorFormula(g,n,l).success)return!1;const f={unitId:n,subUnitId:l,ruleId:u,payload:{type:p.UpdateRuleType.SETTING,payload:{...d,...c.normalizeFormula(g,n,l)}}},_=[{id:p.UpdateDataValidationMutation.id,params:f}],R={unitId:n,subUnitId:l,ruleId:u,payload:{type:p.UpdateRuleType.SETTING,payload:p.getRuleSetting(h)}},V=[{id:p.UpdateDataValidationMutation.id,params:R}];if(d.type===r.DataValidationType.CHECKBOX){const M=h.ranges,T=o.get(r.IUniverInstanceService),C=D.getSheetCommandTarget(T,{unitId:n,subUnitId:l});if(C){const F=new r.ObjectMatrix,{worksheet:O}=C,{formula2:j=Q,formula1:oe=q}=h,{formula2:se=Q,formula1:le=q}=d;let _e=!1;if(M.forEach(ue=>{r.Range.foreach(ue,(z,Re)=>{const I=O.getCellRaw(z,Re),He=Ve(I);(Ce(I)||He===String(j))&&!(I!=null&&I.p)?(F.setValue(z,Re,{v:se,p:null}),_e=!0):He===String(oe)&&!(I!=null&&I.p)&&(F.setValue(z,Re,{v:le,p:null}),_e=!0)})}),_e){const ue={id:D.SetRangeValuesMutation.id,params:{unitId:n,subUnitId:l,cellValue:F.getData()}},z={id:D.SetRangeValuesMutation.id,params:D.SetRangeValuesUndoMutationFactory(o,ue.params)};_.push(ue),V.push(z)}}}return r.sequenceExecute(_,e).result?(t.pushUndoRedo({unitID:n,redoMutations:_,undoMutations:V}),!0):!1}},Ne={type:r.CommandType.COMMAND,id:"sheets.command.update-data-validation-options",handler(o,s){if(!s)return!1;const e=o.get(r.ICommandService),t=o.get(r.IUndoRedoService),a=o.get(m.SheetDataValidationModel),{unitId:i,subUnitId:n,ruleId:l,options:u}=s,d=a.getRuleById(i,n,l);if(!d)return!1;const c={unitId:i,subUnitId:n,ruleId:l,payload:{type:p.UpdateRuleType.OPTIONS,payload:u}},h=[{id:p.UpdateDataValidationMutation.id,params:c}],g={unitId:i,subUnitId:n,ruleId:l,payload:{type:p.UpdateRuleType.OPTIONS,payload:p.getRuleOptions(d)}},f=[{id:p.UpdateDataValidationMutation.id,params:g}];return t.pushUndoRedo({unitID:i,redoMutations:h,undoMutations:f}),e.executeCommand(p.UpdateDataValidationMutation.id,c),!0}},Ae={type:r.CommandType.COMMAND,id:"sheets.command.clear-range-data-validation",handler(o,s){if(!s)return!1;const{unitId:e,subUnitId:t,ranges:a}=s,i=o.get(r.ICommandService),n=o.get(r.IUniverInstanceService),l=D.getSheetCommandTarget(n,{unitId:e,subUnitId:t}),u=o.get(m.SheetDataValidationModel);if(!l)return!1;const d=o.get(r.IUndoRedoService),c=u.getRuleObjectMatrix(e,t).clone();c.removeRange(a);const h=c.diff(u.getRules(e,t)),{redoMutations:g,undoMutations:f}=K(e,t,h,o);return d.pushUndoRedo({unitID:e,redoMutations:g,undoMutations:f}),r.sequenceExecute(g,i).result}},Ue={type:r.CommandType.COMMAND,id:"sheet.command.remove-all-data-validation",handler(o,s){if(!s)return!1;const{unitId:e,subUnitId:t}=s,a=o.get(r.ICommandService),i=o.get(m.SheetDataValidationModel),n=o.get(r.IUndoRedoService),l=[...i.getRules(e,t)],u={unitId:e,subUnitId:t,ruleId:l.map(h=>h.uid)},d=[{id:p.RemoveDataValidationMutation.id,params:u}],c=[{id:p.AddDataValidationMutation.id,params:{unitId:e,subUnitId:t,rule:l}}];return n.pushUndoRedo({redoMutations:d,undoMutations:c,unitID:e}),a.executeCommand(p.RemoveDataValidationMutation.id,u),!0}},st=(o,s)=>{const e=o.get(m.SheetDataValidationModel),{unitId:t,subUnitId:a,ruleId:i,source:n}=s;if(Array.isArray(i)){const u=i.map(d=>e.getRuleById(t,a,d)).filter(Boolean);return[{id:p.AddDataValidationMutation.id,params:{unitId:t,subUnitId:a,rule:u,source:n}}]}return[{id:p.AddDataValidationMutation.id,params:{unitId:t,subUnitId:a,rule:{...e.getRuleById(t,a,i)},index:e.getRuleIndex(t,a,i)}}]},we={type:r.CommandType.COMMAND,id:"sheet.command.remove-data-validation-rule",handler(o,s){if(!s)return!1;const{unitId:e,subUnitId:t,ruleId:a}=s,i=o.get(r.ICommandService),n=o.get(r.IUndoRedoService),l=o.get(m.SheetDataValidationModel),u=[{id:p.RemoveDataValidationMutation.id,params:s}],d=[{id:p.AddDataValidationMutation.id,params:{unitId:e,subUnitId:t,rule:{...l.getRuleById(e,t,a)},index:l.getRuleIndex(e,t,a)}}];return n.pushUndoRedo({undoMutations:d,redoMutations:u,unitID:s.unitId}),i.executeCommand(p.RemoveDataValidationMutation.id,s),!0}},Le="SHEET_DATA_VALIDATION_PLUGIN";var be=(o=>(o[o.View=0]="View",o[o.Edit=1]="Edit",o[o.ManageCollaborator=2]="ManageCollaborator",o[o.Print=3]="Print",o[o.Duplicate=4]="Duplicate",o[o.Comment=5]="Comment",o[o.Copy=6]="Copy",o[o.Share=7]="Share",o[o.Export=8]="Export",o[o.MoveWorksheet=9]="MoveWorksheet",o[o.DeleteWorksheet=10]="DeleteWorksheet",o[o.HideWorksheet=11]="HideWorksheet",o[o.RenameWorksheet=12]="RenameWorksheet",o[o.CreateWorksheet=13]="CreateWorksheet",o[o.SetWorksheetStyle=14]="SetWorksheetStyle",o[o.EditWorksheetCell=15]="EditWorksheetCell",o[o.InsertHyperlink=16]="InsertHyperlink",o[o.Sort=17]="Sort",o[o.Filter=18]="Filter",o[o.PivotTable=19]="PivotTable",o[o.FloatImg=20]="FloatImg",o[o.History=21]="History",o[o.RwHgtClWdt=22]="RwHgtClWdt",o[o.ViemRwHgtClWdt=23]="ViemRwHgtClWdt",o[o.ViewFilter=24]="ViewFilter",o[o.MoveSheet=25]="MoveSheet",o[o.DeleteSheet=26]="DeleteSheet",o[o.HideSheet=27]="HideSheet",o[o.CopySheet=28]="CopySheet",o[o.RenameSheet=29]="RenameSheet",o[o.CreateSheet=30]="CreateSheet",o[o.SelectProtectedCells=31]="SelectProtectedCells",o[o.SelectUnProtectedCells=32]="SelectUnProtectedCells",o[o.SetCellStyle=33]="SetCellStyle",o[o.SetCellValue=34]="SetCellValue",o[o.SetRowStyle=35]="SetRowStyle",o[o.SetColumnStyle=36]="SetColumnStyle",o[o.InsertRow=37]="InsertRow",o[o.InsertColumn=38]="InsertColumn",o[o.DeleteRow=39]="DeleteRow",o[o.DeleteColumn=40]="DeleteColumn",o[o.EditExtraObject=41]="EditExtraObject",o[o.Delete=42]="Delete",o[o.RecoverHistory=43]="RecoverHistory",o[o.ViewHistory=44]="ViewHistory",o[o.CreatePermissionObject=45]="CreatePermissionObject",o[o.UNRECOGNIZED=-1]="UNRECOGNIZED",o))(be||{}),lt=Object.getOwnPropertyDescriptor,ut=(o,s,e,t)=>{for(var a=t>1?void 0:t?lt(s,e):s,i=o.length-1,n;i>=0;i--)(n=o[i])&&(a=n(a)||a);return a},pe=(o,s)=>(e,t)=>s(e,t,o);m.DataValidationFormulaController=class extends r.Disposable{constructor(s,e,t){super(),this._univerInstanceService=s,this._permissionService=e,this._lexerTreeBuilder=t}getFormulaRefCheck(s){var t,a;const e=this._lexerTreeBuilder.sequenceNodesBuilder(s);if(!e)return!0;for(let i=0;i<e.length;i++){const n=e[i];if(typeof n=="string")continue;const{token:l}=n,u=E.deserializeRangeWithSheetWithCache(l),d=this._univerInstanceService.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET);let c=d.getActiveSheet();const h=d.getUnitId();if(u.sheetName){if(c=d.getSheetBySheetName(u.sheetName),!c)return!1;const V=c==null?void 0:c.getSheetId();if(!this._permissionService.getPermissionPoint(new D.WorksheetViewPermission(h,V).id))return!1}if(!c)return!1;const{startRow:g,endRow:f,startColumn:_,endColumn:R}=u.range;for(let V=g;V<=f;V++)for(let v=_;v<=R;v++){const M=(a=(t=c.getCell(V,v))==null?void 0:t.selectionProtection)==null?void 0:a[0];if((M==null?void 0:M[be.View])===!1)return!1}}return!0}},m.DataValidationFormulaController=ut([pe(0,r.IUniverInstanceService),pe(1,r.IPermissionService),pe(2,r.Inject(E.LexerTreeBuilder))],m.DataValidationFormulaController);const Be={name:"@univerjs/sheets-data-validation",version:"0.17.0"},dt="sheets-data-validation.config",je={};var ct=Object.getOwnPropertyDescriptor,ht=(o,s,e,t)=>{for(var a=t>1?void 0:t?ct(s,e):s,i=o.length-1,n;i>=0;i--)(n=o[i])&&(a=n(a)||a);return a},Se=(o,s)=>(e,t)=>s(e,t,o);let ee=class extends r.Disposable{constructor(s,e,t){super();S(this,"_disposableMap",new Map);S(this,"registerRule",(s,e,t)=>{H(t.type,this._validatorRegistryService)&&this.register(s,e,t)});this._dataValidationModel=s,this._formulaRefRangeService=e,this._validatorRegistryService=t,this._initRefRange()}_getIdWithUnitId(s,e,t){return`${s}_${e}_${t}`}register(s,e,t){const a=t.ranges,i=t.formula1,n=t.formula2,l=this._formulaRefRangeService.registerRangeFormula(s,e,a,[i!=null?i:"",n!=null?n:""],d=>{if(d.length===0)return{undos:[{id:p.AddDataValidationMutation.id,params:{unitId:s,subUnitId:e,rule:t,source:"patched"}}],redos:[{id:p.RemoveDataValidationMutation.id,params:{unitId:s,subUnitId:e,ruleId:t.uid,source:"patched"}}]};const c=[],h=[],g=d[0];c.push({id:p.UpdateDataValidationMutation.id,params:{unitId:s,subUnitId:e,ruleId:t.uid,payload:{type:p.UpdateRuleType.ALL,payload:{ranges:g.ranges,formula1:g.formulas[0],formula2:g.formulas[1]}},source:"patched"}}),h.push({id:p.UpdateDataValidationMutation.id,params:{unitId:s,subUnitId:e,ruleId:t.uid,payload:{type:p.UpdateRuleType.ALL,payload:{ranges:a,formula1:i,formula2:n}},source:"patched"}});for(let f=1;f<d.length;f++){const _=d[f],R=r.generateRandomId();c.push({id:p.AddDataValidationMutation.id,params:{unitId:s,subUnitId:e,rule:{...t,uid:R,formula1:_.formulas[0],formula2:_.formulas[1],ranges:_.ranges},source:"patched"}}),h.push({id:p.RemoveDataValidationMutation.id,params:{unitId:s,subUnitId:e,ruleId:R,source:"patched"}})}return{undos:h,redos:c}}),u=this._getIdWithUnitId(s,e,t.uid);this._disposableMap.set(u,l)}_initRefRange(){const s=this._dataValidationModel.getAll();for(const[e,t]of s)for(const[a,i]of t)for(const n of i)this.registerRule(e,a,n);this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(e=>{const{unitId:t,subUnitId:a,rule:i}=e;switch(e.type){case"add":{const n=e.rule;this.registerRule(e.unitId,e.subUnitId,n);break}case"remove":{const n=this._disposableMap.get(this._getIdWithUnitId(t,a,i.uid));n&&n.dispose();break}case"update":{const n=e.rule,l=this._disposableMap.get(this._getIdWithUnitId(t,a,n.uid));l&&l.dispose(),this.registerRule(e.unitId,e.subUnitId,n);break}}})),this.disposeWithMe(r.toDisposable(()=>{this._disposableMap.forEach(e=>{e.dispose()}),this._disposableMap.clear()}))}};ee=ht([Se(0,r.Inject(m.SheetDataValidationModel)),Se(1,r.Inject(de.FormulaRefRangeService)),Se(2,r.Inject(p.DataValidatorRegistryService))],ee);var mt=Object.getOwnPropertyDescriptor,gt=(o,s,e,t)=>{for(var a=t>1?void 0:t?mt(s,e):s,i=o.length-1,n;i>=0;i--)(n=o[i])&&(a=n(a)||a);return a},b=(o,s)=>(e,t)=>s(e,t,o);let te=class extends r.Disposable{constructor(s,e,t,a,i,n){super();S(this,"_disposableMap",new Map);S(this,"registerRule",(s,e,t)=>{H(t.type,this._validatorRegistryService)||(this.register(s,e,t),this.registerFormula(s,e,t))});this._dataValidationModel=s,this._injector=e,this._refRangeService=t,this._dataValidationFormulaService=a,this._formulaRefRangeService=i,this._validatorRegistryService=n,this._initRefRange()}_getIdWithUnitId(s,e,t){return`${s}_${e}_${t}`}registerFormula(s,e,t){var d;const a=t.uid,i=this._getIdWithUnitId(s,e,a),n=(d=this._disposableMap.get(i))!=null?d:new Set,l=(c,h)=>{const g=this._dataValidationModel.getRuleById(s,e,a);if(!g)return{redos:[],undos:[]};const f=g[c];if(!f||f===h)return{redos:[],undos:[]};const _={unitId:s,subUnitId:e,ruleId:t.uid,payload:{type:p.UpdateRuleType.SETTING,payload:{type:g.type,formula1:g.formula1,formula2:g.formula2,[c]:h}},source:"patched"},R={unitId:s,subUnitId:e,ruleId:t.uid,payload:{type:p.UpdateRuleType.SETTING,payload:{type:g.type,formula1:g.formula1,formula2:g.formula2}},source:"patched"},V=[{id:p.UpdateDataValidationMutation.id,params:_}],v=[{id:p.UpdateDataValidationMutation.id,params:R}];return{redos:V,undos:v}},u=this._dataValidationFormulaService.getRuleFormulaInfo(s,e,a);if(u){const[c,h]=u;if(c){const g=this._formulaRefRangeService.registerFormula(s,e,c.text,f=>l("formula1",f));n.add(()=>g.dispose())}if(h){const g=this._formulaRefRangeService.registerFormula(s,e,h.text,f=>l("formula2",f));n.add(()=>g.dispose())}}}register(s,e,t){var u;const a=d=>{const c=[...t.ranges],g=c.map(_=>D.handleCommonDefaultRangeChangeWithEffectRefCommands(_,d)).filter(_=>!!_).flat();if(r.isRangesEqual(g,c))return{redos:[],undos:[]};if(g.length){const _={unitId:s,subUnitId:e,ruleId:t.uid,payload:{type:p.UpdateRuleType.RANGE,payload:g},source:"patched"},R=[{id:p.UpdateDataValidationMutation.id,params:_}],V=[{id:p.UpdateDataValidationMutation.id,params:{unitId:s,subUnitId:e,ruleId:t.uid,payload:{type:p.UpdateRuleType.RANGE,payload:c},source:"patched"}}];return{redos:R,undos:V}}else{const _={unitId:s,subUnitId:e,ruleId:t.uid},R=[{id:p.RemoveDataValidationMutation.id,params:_}],V=st(this._injector,_);return{redos:R,undos:V}}},i=[];t.ranges.forEach(d=>{const c=this._refRangeService.registerRefRange(d,a,s,e);i.push(()=>c.dispose())});const n=this._getIdWithUnitId(s,e,t.uid),l=(u=this._disposableMap.get(n))!=null?u:new Set;l.add(()=>i.forEach(d=>d())),this._disposableMap.set(n,l)}_initRefRange(){const s=this._dataValidationModel.getAll();for(const[e,t]of s)for(const[a,i]of t)for(const n of i)this.registerRule(e,a,n);this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(e=>{const{unitId:t,subUnitId:a,rule:i}=e;switch(e.type){case"add":{const n=e.rule;this.registerRule(e.unitId,e.subUnitId,n);break}case"remove":{const n=this._disposableMap.get(this._getIdWithUnitId(t,a,i.uid));n&&n.forEach(l=>l());break}case"update":{const n=e.rule,l=this._disposableMap.get(this._getIdWithUnitId(t,a,n.uid));l&&l.forEach(u=>u()),this.registerRule(e.unitId,e.subUnitId,n);break}}})),this.disposeWithMe(r.toDisposable(()=>{this._disposableMap.forEach(e=>{e.forEach(t=>t())}),this._disposableMap.clear()}))}};te=gt([b(0,r.Inject(m.SheetDataValidationModel)),b(1,r.Inject(r.Injector)),b(2,r.Inject(D.RefRangeService)),b(3,r.Inject(m.DataValidationFormulaService)),b(4,r.Inject(de.FormulaRefRangeService)),b(5,r.Inject(p.DataValidatorRegistryService))],te);var pt=Object.getOwnPropertyDescriptor,St=(o,s,e,t)=>{for(var a=t>1?void 0:t?pt(s,e):s,i=o.length-1,n;i>=0;i--)(n=o[i])&&(a=n(a)||a);return a},fe=(o,s)=>(e,t)=>s(e,t,o);let ae=class extends r.Disposable{constructor(o,s,e){super(),this._sheetInterceptorService=o,this._univerInstanceService=s,this._sheetDataValidationModel=e,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:o=>{var s;if(o.id===D.RemoveSheetCommand.id){const e=o.params,t=e.unitId||this._univerInstanceService.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET).getUnitId(),a=this._univerInstanceService.getUniverSheetInstance(t);if(!a)return{redos:[],undos:[]};const i=e.subUnitId||((s=a.getActiveSheet())==null?void 0:s.getSheetId());if(!i)return{redos:[],undos:[]};const n=this._sheetDataValidationModel.getRules(t,i);if(n.length===0)return{redos:[],undos:[]};const l=n.map(c=>c.uid),u={unitId:t,subUnitId:i,ruleId:l,source:"patched"},d={unitId:t,subUnitId:i,rule:[...n],source:"patched"};return{redos:[{id:p.RemoveDataValidationMutation.id,params:u}],undos:[{id:p.AddDataValidationMutation.id,params:d}]}}else if(o.id===D.CopySheetCommand.id){const e=o.params,{unitId:t,subUnitId:a,targetSubUnitId:i}=e;if(!t||!a||!i)return{redos:[],undos:[]};const n=this._sheetDataValidationModel.getRules(t,a);if(n.length===0)return{redos:[],undos:[]};const l=n.map(u=>({...u,uid:r.generateRandomId(6)}));return{redos:[{id:p.AddDataValidationMutation.id,params:{unitId:t,subUnitId:i,rule:l,source:"patched"}}],undos:[{id:p.RemoveDataValidationMutation.id,params:{unitId:t,subUnitId:i,ruleId:l.map(u=>u.uid),source:"patched"}}]}}return{redos:[],undos:[]}}}))}};ae=St([fe(0,r.Inject(D.SheetInterceptorService)),fe(1,r.Inject(r.IUniverInstanceService)),fe(2,r.Inject(m.SheetDataValidationModel))],ae);class ft extends p.BaseDataValidator{constructor(){super(...arguments);S(this,"id",r.DataValidationType.ANY);S(this,"title","dataValidation.any.title");S(this,"operators",[]);S(this,"scopes",["sheet"]);S(this,"order",0);S(this,"offsetFormulaByRange",!1)}async parseFormula(e,t,a){return{formula1:e.formula1,formula2:e.formula2,isFormulaValid:!0}}validatorFormula(e,t,a){return{success:!0}}async isValidType(e,t,a){return!0}generateRuleErrorMessage(e){return this.localeService.t("dataValidation.any.error")}}class vt extends p.BaseDataValidator{constructor(){super(...arguments);S(this,"id",r.DataValidationType.CUSTOM);S(this,"title","dataValidation.custom.title");S(this,"operators",[]);S(this,"scopes",["sheet"]);S(this,"order",60);S(this,"_customFormulaService",this.injector.get(m.DataValidationCustomFormulaService));S(this,"_lexerTreeBuilder",this.injector.get(E.LexerTreeBuilder))}validatorFormula(e,t,a){var d;const i=r.isFormulaString(e.formula1),n=(d=e.formula1)!=null?d:"",u=this._lexerTreeBuilder.checkIfAddBracket(n)===0&&n.startsWith(E.operatorToken.EQUALS);return{success:i&&u,formula1:i&&u?"":this.localeService.t("dataValidation.validFail.formula")}}async parseFormula(e,t,a){return{formula1:void 0,formula2:void 0,isFormulaValid:!0}}async isValidType(e,t,a){const{column:i,row:n,unitId:l,subUnitId:u}=e,d=await this._customFormulaService.getCellFormulaValue(l,u,a.uid,n,i),c=d==null?void 0:d.v;return y(String(c))&&r.Tools.isDefine(c)&&c!==""?d.t===r.CellValueType.BOOLEAN?!!c:typeof c=="boolean"?c:typeof c=="number"?!!c:typeof c=="string"?y(c):!!c:!1}generateRuleErrorMessage(e){return this.localeService.t("dataValidation.custom.error")}generateRuleName(e){var t;return this.localeService.t("dataValidation.custom.ruleName").replace("{FORMULA1}",(t=e.formula1)!=null?t:"")}}class Pe extends ge{constructor(){super(...arguments);S(this,"id",r.DataValidationType.LIST_MULTIPLE);S(this,"title","dataValidation.listMultiple.title");S(this,"offsetFormulaByRange",!1);S(this,"skipDefaultFontRender",()=>!0)}}class _t extends p.BaseDataValidator{constructor(){super(...arguments);S(this,"_customFormulaService",this.injector.get(m.DataValidationCustomFormulaService));S(this,"_lexerTreeBuilder",this.injector.get(E.LexerTreeBuilder));S(this,"id",r.DataValidationType.WHOLE);S(this,"title","dataValidation.whole.title");S(this,"order",10);S(this,"operators",[r.DataValidationOperator.BETWEEN,r.DataValidationOperator.EQUAL,r.DataValidationOperator.GREATER_THAN,r.DataValidationOperator.GREATER_THAN_OR_EQUAL,r.DataValidationOperator.LESS_THAN,r.DataValidationOperator.LESS_THAN_OR_EQUAL,r.DataValidationOperator.NOT_BETWEEN,r.DataValidationOperator.NOT_EQUAL]);S(this,"scopes",["sheet"])}_isFormulaOrInt(e){return!r.Tools.isBlank(e)&&(r.isFormulaString(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}async isValidType(e,t,a){const{value:i}=e,n=X(i);return!Number.isNaN(n)&&Number.isInteger(n)}transform(e,t,a){const{value:i}=e;return{...e,value:X(i)}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a,i,n){const l=await this._customFormulaService.getCellFormulaValue(t,a,e.uid,i,n),u=await this._customFormulaService.getCellFormula2Value(t,a,e.uid,i,n),{formula1:d,formula2:c}=e,h=r.isFormulaString(d)?l==null?void 0:l.v:d,g=r.isFormulaString(c)?u==null?void 0:u.v:c,f=y(`${h}`)&&y(`${g}`);return{formula1:this._parseNumber(h),formula2:this._parseNumber(g),isFormulaValid:f}}validatorFormula(e,t,a){const i=e.operator;if(!i)return{success:!0};const n=r.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),l=r.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),u=Z.includes(i),d=this.localeService.t("dataValidation.validFail.number");return u?{success:n&&l,formula1:n?void 0:d,formula2:l?void 0:d}:{success:n,formula1:d}}generateRuleErrorMessage(e,t){if(!e.operator)return this.localeService.t(J.NONE).replace("{TYPE}",this.titleStr);const{transformedFormula1:a,transformedFormula2:i}=k(this._lexerTreeBuilder,e,t);return`${this.localeService.t(J[e.operator]).replace(G,a!=null?a:"").replace(Y,i!=null?i:"")}`}}var Rt=Object.getOwnPropertyDescriptor,Vt=(o,s,e,t)=>{for(var a=t>1?void 0:t?Rt(s,e):s,i=o.length-1,n;i>=0;i--)(n=o[i])&&(a=n(a)||a);return a},B=(o,s)=>(e,t)=>s(e,t,o);let ie=class extends r.RxDisposable{constructor(o,s,e,t,a,i){super(),this._univerInstanceService=o,this._dataValidatorRegistryService=s,this._injector=e,this._selectionManagerService=t,this._sheetInterceptorService=a,this._sheetDataValidationModel=i,this._init()}_init(){this._registerValidators(),this._initCommandInterceptor()}_registerValidators(){[ft,tt,_t,ot,Te,Ee,ge,Pe,vt].forEach(o=>{const s=this._injector.createInstance(o);this.disposeWithMe(this._dataValidatorRegistryService.register(s)),this.disposeWithMe(r.toDisposable(()=>this._injector.delete(o)))})}_initCommandInterceptor(){this._sheetInterceptorService.interceptCommand({getMutations:o=>{var s;if(o.id===D.ClearSelectionAllCommand.id){const e=this._univerInstanceService.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET),t=e.getUnitId(),a=e.getActiveSheet();if(!a)throw new Error("No active sheet found");const i=a.getSheetId(),n=(s=this._selectionManagerService.getCurrentSelections())==null?void 0:s.map(h=>h.range),l=this._sheetDataValidationModel.getRuleObjectMatrix(t,i).clone();n&&l.removeRange(n);const u=l.diff(this._sheetDataValidationModel.getRules(t,i)),{redoMutations:d,undoMutations:c}=K(t,i,u,this._injector,"patched");return{undos:c,redos:d}}return{undos:[],redos:[]}}})}};ie=Vt([B(0,r.IUniverInstanceService),B(1,r.Inject(p.DataValidatorRegistryService)),B(2,r.Inject(r.Injector)),B(3,r.Inject(D.SheetsSelectionsService)),B(4,r.Inject(D.SheetInterceptorService)),B(5,r.Inject(m.SheetDataValidationModel))],ie);var Dt=Object.getOwnPropertyDescriptor,Mt=(o,s,e,t)=>{for(var a=t>1?void 0:t?Dt(s,e):s,i=o.length-1,n;i>=0;i--)(n=o[i])&&(a=n(a)||a);return a},re=(o,s)=>(e,t)=>s(e,t,o);m.SheetsDataValidationValidatorService=class extends r.Disposable{constructor(s,e,t,a){super(),this._univerInstanceService=s,this._sheetDataValidationModel=e,this._dataValidationCacheService=t,this._lifecycleService=a,this._initRecalculate()}_initRecalculate(){const s=e=>{if(e.length===0)return;const t=this._univerInstanceService.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET),a=t==null?void 0:t.getActiveSheet(),i={};e.flat().forEach(n=>{i[n.unitId]||(i[n.unitId]={}),i[n.unitId][n.subUnitId]||(i[n.unitId][n.subUnitId]=[]);const l=this._univerInstanceService.getUnit(n.unitId,r.UniverInstanceType.UNIVER_SHEET),u=l==null?void 0:l.getSheetBySheetId(n.subUnitId);u&&i[n.unitId][n.subUnitId].push(...n.ranges.map(d=>r.Range.transformRange(d,u)))}),Object.entries(i).forEach(([n,l])=>{Object.entries(l).forEach(([u,d])=>{(t==null?void 0:t.getUnitId())===n&&(a==null?void 0:a.getSheetId())===u?this.validatorRanges(n,u,d):requestIdleCallback(()=>{this.validatorRanges(n,u,d)})})})};this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.pipe(U.bufferWhen(()=>this._lifecycleService.lifecycle$.pipe(U.filter(e=>e===r.LifecycleStages.Rendered)))).subscribe(s)),this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.pipe(U.filter(()=>this._lifecycleService.stage>=r.LifecycleStages.Rendered),r.bufferDebounceTime(20)).subscribe(s))}async _validatorByCell(s,e,t,a){const i=s.getUnitId(),n=e.getSheetId();if(!r.Tools.isDefine(t)||!r.Tools.isDefine(a))throw new Error(`row or col is not defined, row: ${t}, col: ${a}`);let l=t,u=a;const d=e.getMergedCell(t,a);d&&(l=d.startRow,u=d.startColumn);const c=this._sheetDataValidationModel.getRuleByLocation(i,n,l,u);return c?new Promise(h=>{this._sheetDataValidationModel.validator(c,{unitId:i,subUnitId:n,row:l,col:u,worksheet:e,workbook:s},g=>{h(g)})}):r.DataValidationStatus.VALID}async validatorCell(s,e,t,a){const i=this._univerInstanceService.getUnit(s,r.UniverInstanceType.UNIVER_SHEET);if(!i)throw new Error(`cannot find current workbook, unitId: ${s}`);const n=i.getSheetBySheetId(e);if(!n)throw new Error(`cannot find current worksheet, sheetId: ${e}`);return this._validatorByCell(i,n,t,a)}async validatorRanges(s,e,t){if(!t.length)return Promise.resolve([]);const a=this._univerInstanceService.getUnit(s,r.UniverInstanceType.UNIVER_SHEET);if(!a)throw new Error(`cannot find current workbook, unitId: ${s}`);const i=a.getSheetBySheetId(e);if(!i)throw new Error(`cannot find current worksheet, sheetId: ${e}`);const l=this._sheetDataValidationModel.getRules(s,e).map(h=>h.ranges).flat(),u=t.map(h=>l.map(g=>r.getIntersectRange(h,g))).flat().filter(Boolean),d=[],c=await Promise.all(u.map((h,g)=>{const f=[];for(let _=h.startRow;_<=h.endRow;_++)for(let R=h.startColumn;R<=h.endColumn;R++){f.push(this._validatorByCell(a,i,_,R));const V=i.getMergedCell(_,R);V&&d.push({resultRowIndex:g,resultColIndex:f.length-1,row:V.startRow,col:V.startColumn})}return Promise.all(f)}));return d.length&&d.forEach(({resultRowIndex:h,resultColIndex:g,row:f,col:_})=>{var R;c[h][g]===r.DataValidationStatus.VALIDATING&&(c[h][g]=(R=this._dataValidationCacheService.getValue(s,e,f,_))!=null?R:r.DataValidationStatus.VALID)}),c}async validatorWorksheet(s,e){const t=this._univerInstanceService.getUnit(s,r.UniverInstanceType.UNIVER_SHEET);if(!t)throw new Error(`cannot find current workbook, unitId: ${s}`);const a=t.getSheetBySheetId(e);if(!a)throw new Error(`cannot find current worksheet, sheetId: ${e}`);const i=this._sheetDataValidationModel.getRules(s,e);return await Promise.all(i.map(n=>Promise.all(n.ranges.map(l=>{const u=[];return r.Range.foreach(l,(d,c)=>{u.push(this._validatorByCell(t,a,d,c))}),Promise.all(u)})))),this._dataValidationCacheService.ensureCache(s,e)}async validatorWorkbook(s){const e=this._sheetDataValidationModel.getSubUnitIds(s),t=await Promise.all(e.map(i=>this.validatorWorksheet(s,i))),a={};return t.forEach((i,n)=>{a[e[n]]=i}),a}getDataValidations(s,e,t){const a=this._sheetDataValidationModel.getRuleObjectMatrix(s,e),i=new Set;return t.forEach(l=>{r.Range.foreach(l,(u,d)=>{const c=a.getValue(u,d);c&&i.add(c)})}),Array.from(i).map(l=>this._sheetDataValidationModel.getRuleById(s,e,l)).filter(Boolean)}getDataValidation(s,e,t){return this.getDataValidations(s,e,t)[0]}},m.SheetsDataValidationValidatorService=Mt([re(0,r.IUniverInstanceService),re(1,r.Inject(m.SheetDataValidationModel)),re(2,r.Inject(m.DataValidationCacheService)),re(3,r.Inject(r.LifecycleService))],m.SheetsDataValidationValidatorService);var Et=Object.defineProperty,yt=Object.getOwnPropertyDescriptor,Tt=(o,s,e)=>s in o?Et(o,s,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[s]=e,Ct=(o,s,e,t)=>{for(var a=t>1?void 0:t?yt(s,e):s,i=o.length-1,n;i>=0;i--)(n=o[i])&&(a=n(a)||a);return a},ve=(o,s)=>(e,t)=>s(e,t,o),ne=(o,s,e)=>Tt(o,typeof s!="symbol"?s+"":s,e);m.UniverSheetsDataValidationPlugin=class extends r.Plugin{constructor(s=je,e,t,a){super(),this._config=s,this._injector=e,this._commandService=t,this._configService=a;const{...i}=r.merge({},je,this._config);this._configService.setConfig(dt,i)}onStarting(){[[m.DataValidationCacheService],[m.DataValidationListCacheService],[m.DataValidationFormulaService],[m.DataValidationCustomFormulaService],[m.SheetsDataValidationValidatorService],[m.SheetDataValidationModel],[ie],[m.DataValidationFormulaController],[ae],[te],[ee]].forEach(s=>{this._injector.add(s)}),[Fe,Oe,Ie,Ne,we,Ue,Ae].forEach(s=>{this._commandService.registerCommand(s)}),this._injector.get(m.DataValidationCacheService),this._injector.get(m.SheetsDataValidationValidatorService),this._injector.get(ie),this._injector.get(ee),this._injector.get(te)}onReady(){this._injector.get(ae)}onRendered(){this._injector.get(m.DataValidationFormulaController)}},ne(m.UniverSheetsDataValidationPlugin,"pluginName",Le),ne(m.UniverSheetsDataValidationPlugin,"packageName",Be.name),ne(m.UniverSheetsDataValidationPlugin,"version",Be.version),ne(m.UniverSheetsDataValidationPlugin,"type",r.UniverInstanceType.UNIVER_SHEET),m.UniverSheetsDataValidationPlugin=Ct([r.DependentOn(de.UniverSheetsFormulaPlugin,p.UniverDataValidationPlugin),ve(1,r.Inject(r.Injector)),ve(2,r.ICommandService),ve(3,r.IConfigService)],m.UniverSheetsDataValidationPlugin);function Ot(o){const e=o.get(D.SheetsSelectionsService).getCurrentSelections().map(i=>i.range);return{uid:r.generateRandomId(6),type:r.DataValidationType.DECIMAL,operator:r.DataValidationOperator.EQUAL,formula1:"100",ranges:e!=null?e:[{startColumn:0,endColumn:0,startRow:0,endRow:0}]}}const Ft="data-validation.custom-formula-input",It="data-validation.formula-input",Nt="data-validation.list-formula-input",At="data-validation.checkbox-formula-input";m.AddSheetDataValidationCommand=Fe,m.BASE_FORMULA_INPUT_NAME=It,m.CHECKBOX_FORMULA_1=q,m.CHECKBOX_FORMULA_2=Q,m.CHECKBOX_FORMULA_INPUT_NAME=At,m.CUSTOM_FORMULA_INPUT_NAME=Ft,m.CheckboxValidator=Ee,m.ClearRangeDataValidationCommand=Ae,m.DATA_VALIDATION_PLUGIN_NAME=Le,m.DateValidator=Te,m.LIST_FORMULA_INPUT_NAME=Nt,m.ListMultipleValidator=Pe,m.ListValidator=ge,m.RemoveSheetAllDataValidationCommand=Ue,m.RemoveSheetDataValidationCommand=we,m.UpdateSheetDataValidationOptionsCommand=Ne,m.UpdateSheetDataValidationRangeCommand=Oe,m.UpdateSheetDataValidationSettingCommand=Ie,m.createDefaultNewRule=Ot,m.deserializeListOptions=$,m.getCellValueNumber=X,m.getCellValueOrigin=N,m.getDataValidationCellValue=xe,m.getDataValidationDiffMutations=K,m.getFormulaCellData=P,m.getFormulaResult=w,m.getTransformedFormula=k,m.isLegalFormulaResult=y,m.serializeListOptions=Qe,m.transformCheckboxValue=x,Object.defineProperty(m,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`@univerjs/core`),require(`@univerjs/data-validation`),require(`@univerjs/engine-formula`),require(`@univerjs/sheets`),require(`rxjs`),require(`@univerjs/sheets-formula`)):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/data-validation`,`@univerjs/engine-formula`,`@univerjs/sheets`,`rxjs`,`@univerjs/sheets-formula`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverSheetsDataValidation={},e.UniverCore,e.UniverDataValidation,e.UniverEngineFormula,e.UniverSheets,e.rxjs,e.UniverSheetsFormula))})(this,function(e,t,n,r,i,a,o){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function s(e){"@babel/helpers - typeof";return s=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},s(e)}function c(e,t){if(s(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(s(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function l(e){var t=c(e,`string`);return s(t)==`symbol`?t:t+``}function u(e,t,n){return(t=l(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(e,t){return function(n,r){t(n,r,e)}}function f(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let p=class extends t.Disposable{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._sheetDataValidationModel=n,u(this,`_cacheMatrix`,new Map),u(this,`_dirtyRanges$`,new a.Subject),u(this,`dirtyRanges$`,this._dirtyRanges$.asObservable()),this._initDirtyRanges(),this._initSheetRemove()}_initDirtyRanges(){this.disposeWithMe(this._commandService.onCommandExecuted((e,n)=>{if(e.id===i.SetRangeValuesMutation.id&&!(n!=null&&n.onlyLocal)){let{cellValue:n,unitId:r,subUnitId:i}=e.params;if(n){let e=new t.ObjectMatrix(n).getDataRange();if(e.endRow===-1)return;let a=this._sheetDataValidationModel.getRules(r,i).map(e=>e.ranges).flat().map(n=>(0,t.getIntersectRange)(n,e)).filter(Boolean);a.length&&this.markRangeDirty(r,i,a,!0)}}}))}_initSheetRemove(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===i.RemoveSheetMutation.id){var t;let{unitId:n,subUnitId:r}=e.params;(t=this._cacheMatrix.get(n))==null||t.delete(r)}})),this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(e=>{e.type===t.UniverInstanceType.UNIVER_SHEET&&this._cacheMatrix.delete(e.getUnitId())}))}_ensureCache(e,n){let r=this._cacheMatrix.get(e);r||(r=new Map,this._cacheMatrix.set(e,r));let i=r.get(n);return i||(i=new t.ObjectMatrix,r.set(n,i)),i}ensureCache(e,t){return this._ensureCache(e,t)}addRule(e,t,n){this.markRangeDirty(e,t,n.ranges)}removeRule(e,t,n){this._deleteRange(e,t,n.ranges)}markRangeDirty(e,n,r,i){let a=this._ensureCache(e,n);r.forEach(e=>{t.Range.foreach(e,(e,t)=>{a.getValue(e,t)!==void 0&&a.setValue(e,t,void 0)})}),this._dirtyRanges$.next({unitId:e,subUnitId:n,ranges:r,isSetRange:i})}_deleteRange(e,n,r){let i=this._ensureCache(e,n);r.forEach(e=>{t.Range.foreach(e,(e,t)=>{i.realDeleteValue(e,t)})}),this._dirtyRanges$.next({unitId:e,subUnitId:n,ranges:r})}getValue(e,t,n,r){return this._ensureCache(e,t).getValue(n,r)}};p=f([d(0,(0,t.Inject)(t.ICommandService)),d(1,(0,t.Inject)(t.IUniverInstanceService)),d(2,(0,t.Inject)(n.DataValidationModel))],p);function m(e){var t;return e==null||(t=e[0])==null||(t=t[0])==null?void 0:t.v}function h(e){var t;return e==null||(t=e[0])==null?void 0:t[0]}function g(e){return!r.ERROR_TYPE_SET.has(e)}function _(e,t){var n;let r=t.getValidatorItem(e);return(n=r==null?void 0:r.offsetFormulaByRange)==null?!1:n}let v=class extends t.Disposable{constructor(e,t,n,r,i){super(),this._instanceSrv=e,this._registerOtherFormulaService=t,this._dataValidationModel=n,this._dataValidationCacheService=r,this._validatorRegistryService=i,u(this,`_ruleFormulaMap`,new Map),u(this,`_ruleFormulaMap2`,new Map),this._initFormulaResultHandler(),this._initDirtyRanges()}dispose(){super.dispose(),this._ruleFormulaMap.clear(),this._ruleFormulaMap2.clear()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(e=>{for(let n in e){let r=e[n];if(this._instanceSrv.getUnitType(n)===t.UniverInstanceType.UNIVER_SHEET)for(let e in r){let t=r[e],{ruleFormulaMap:i}=this._ensureMaps(n,e);t.forEach(t=>{var r,a;let o=i.get((r=t.extra)==null?void 0:r.ruleId),s=this._dataValidationModel.getRuleById(n,e,(a=t.extra)==null?void 0:a.ruleId);s&&o&&this._dataValidationCacheService.markRangeDirty(n,e,s.ranges)})}}}))}_ensureMaps(e,t){let n=this._ruleFormulaMap.get(e),r=this._ruleFormulaMap2.get(e);n||(n=new Map,this._ruleFormulaMap.set(e,n)),r||(r=new Map,this._ruleFormulaMap2.set(e,r));let i=n.get(t);i||(i=new Map,n.set(t,i));let a=r.get(t);return a||(a=new Map,r.set(t,a)),{ruleFormulaMap:i,ruleFormulaMap2:a}}_registerFormula(e,t,n,i,a){return this._registerOtherFormulaService.registerFormulaWithRange(e,t,i,a,{ruleId:n},r.OtherFormulaBizType.DATA_VALIDATION_CUSTOM,n)}_handleDirtyRanges(e,n,r){this._dataValidationModel.getRules(e,n).forEach(i=>{let a=i.ranges;t.Rectangle.doAnyRangesIntersect(a,r)&&this.makeRuleDirty(e,n,i.uid)})}_initDirtyRanges(){this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.subscribe(e=>{e.isSetRange&&this._handleDirtyRanges(e.unitId,e.subUnitId,e.ranges)}))}deleteByRuleId(e,t,n){let{ruleFormulaMap:r,ruleFormulaMap2:i}=this._ensureMaps(e,t),a=this._dataValidationModel.getRuleById(e,t,n),o=r.get(n);if(!a||!o)return;let s=r.get(n);s&&(r.delete(n),this._registerOtherFormulaService.deleteFormula(e,t,[s.formulaId]));let c=i.get(n);c&&(i.delete(n),this._registerOtherFormulaService.deleteFormula(e,t,[c.formulaId]))}_addFormulaByRange(e,n,r,i,a,o){let{ruleFormulaMap:s,ruleFormulaMap2:c}=this._ensureMaps(e,n),l=o[0].startRow,u=o[0].startColumn;if(i&&(0,t.isFormulaString)(i)){let t=this._registerFormula(e,n,r,i,o);s.set(r,{formula:i,originCol:u,originRow:l,formulaId:t})}if(a&&(0,t.isFormulaString)(a)){let t=this._registerFormula(e,n,r,a,o);c.set(r,{formula:a,originCol:u,originRow:l,formulaId:t})}}addRule(e,t,n){if(_(n.type,this._validatorRegistryService)){let{ranges:r,formula1:i,formula2:a,uid:o}=n;this._addFormulaByRange(e,t,o,i,a,r)}}async getCellFormulaValue(e,t,n,r,i){var a;let{ruleFormulaMap:o}=this._ensureMaps(e,t),s=o.get(n);if(!s)return Promise.resolve(void 0);let c=await this._registerOtherFormulaService.getFormulaValue(e,t,s.formulaId),{originRow:l,originCol:u}=s,d=r-l,f=i-u;return h(c==null||(a=c.result)==null||(a=a[d])==null?void 0:a[f])}async getCellFormula2Value(e,t,n,r,i){var a;let{ruleFormulaMap2:o}=this._ensureMaps(e,t),s=o.get(n);if(!s)return Promise.resolve(void 0);let c=await this._registerOtherFormulaService.getFormulaValue(e,t,s.formulaId),{originRow:l,originCol:u}=s,d=r-l,f=i-u;return h(c==null||(a=c.result)==null||(a=a[d])==null?void 0:a[f])}getCellFormulaValueSync(e,t,n,r,i){var a;let{ruleFormulaMap:o}=this._ensureMaps(e,t),s=o.get(n);if(!s)return;let c=this._registerOtherFormulaService.getFormulaValueSync(e,t,s.formulaId),{originRow:l,originCol:u}=s,d=r-l,f=i-u;return h(c==null||(a=c.result)==null||(a=a[d])==null?void 0:a[f])}getCellFormula2ValueSync(e,t,n,r,i){var a;let{ruleFormulaMap2:o}=this._ensureMaps(e,t),s=o.get(n);if(!s)return;let c=this._registerOtherFormulaService.getFormulaValueSync(e,t,s.formulaId),{originRow:l,originCol:u}=s,d=r-l,f=i-u;return h(c==null||(a=c.result)==null||(a=a[d])==null?void 0:a[f])}getRuleFormulaInfo(e,t,n){let{ruleFormulaMap:r}=this._ensureMaps(e,t);return r.get(n)}makeRuleDirty(e,t,n){var r,i;let a=(r=this._ruleFormulaMap.get(e))==null||(r=r.get(t))==null?void 0:r.get(n),o=(i=this._ruleFormulaMap2.get(e))==null||(i=i.get(t))==null?void 0:i.get(n);a&&this._registerOtherFormulaService.markFormulaDirty(e,t,a.formulaId),o&&this._registerOtherFormulaService.markFormulaDirty(e,t,o.formulaId)}};v=f([d(0,t.IUniverInstanceService),d(1,(0,t.Inject)(r.RegisterOtherFormulaService)),d(2,(0,t.Inject)(n.DataValidationModel)),d(3,(0,t.Inject)(p)),d(4,(0,t.Inject)(n.DataValidatorRegistryService))],v);function y(e){return(0,t.getOriginCellValue)(e)}function ee(e){var t;return String((t=y(e))==null?``:t)}function b(e){return e.filter(Boolean).join(`,`)}function x(e){return e.split(`,`).filter(Boolean)}function te(e){let t=y(e);return t==null?``:t.toString()}function S(e,n,r){let{formula1:i,formula2:a}=n,o=n.ranges[0].startRow,s=n.ranges[0].startColumn,c=r.row-o,l=r.col-s;return{transformedFormula1:(0,t.isFormulaString)(i)?e.moveFormulaRefOffset(i,l,c,!0):i,transformedFormula2:(0,t.isFormulaString)(a)?e.moveFormulaRefOffset(a,l,c,!0):a}}let C=class extends t.Disposable{constructor(e,t){super(),this._injector=e,this._dataValidationModel=t,u(this,`_cache`,new Map),this._initRuleChangeListener()}_initRuleChangeListener(){this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(e=>{(e.type===`remove`||e.type===`update`)&&this.markRuleDirty(e.unitId,e.subUnitId,e.rule.uid)}))}getOrCompute(e,t,n){let r=this.getCache(e,t,n.uid);if(r)return r;let i=this._injector.get(w).getRuleFormulaResultSync(e,t,n.uid);return this.computeAndCache(e,t,n,i)}_ensureCache(e,t){let n=this._cache.get(e);n||(n=new Map,this._cache.set(e,n));let r=n.get(t);return r||(r=new Map,n.set(t,r)),r}getCache(e,t,n){var r;return(r=this._cache.get(e))==null||(r=r.get(t))==null?void 0:r.get(n)}setCache(e,t,n,r){this._ensureCache(e,t).set(n,r)}markRuleDirty(e,t,n){var r;(r=this._cache.get(e))==null||(r=r.get(t))==null||r.delete(n)}clear(){this._cache.clear()}computeAndCache(e,n,r,i){var a;let{formula1:o=``,formula2:s=``}=r,c=(0,t.isFormulaString)(o)?this._getRuleFormulaResultSet(i==null||(a=i[0])==null||(a=a.result)==null||(a=a[0])==null?void 0:a[0]):x(o),l=s.split(`,`),u=c.map((e,t)=>({label:e,color:l[t]||``})),d={};for(let e of u)e.color&&(d[e.label]=e.color);let f={list:c,listWithColor:u,colorMap:d,set:new Set(c)};return this.setCache(e,n,r.uid,f),f}_getRuleFormulaResultSet(e){if(!e)return[];let n=new Set;for(let i=0,a=e.length;i<a;i++){let a=e[i];if(a)for(let e=0,i=a.length;e<i;e++){let i=a[e],o=y(i);if(o!=null){var r;if(typeof o!=`string`&&typeof(i==null?void 0:i.s)==`object`&&!((r=i.s)==null||(r=r.n)==null)&&r.pattern){n.add(t.numfmt.format(i.s.n.pattern,o,{throws:!1}));continue}let e=typeof o==`string`?o:String(o);g(e)&&n.add(e)}}}return[...n]}};C=f([d(0,(0,t.Inject)(t.Injector)),d(1,(0,t.Inject)(n.DataValidationModel))],C);let w=class extends t.Disposable{constructor(e,t,n,r,i,a){super(),this._instanceService=e,this._registerOtherFormulaService=t,this._dataValidationCacheService=n,this._dataValidationModel=r,this._validatorRegistryService=i,this._listCacheService=a,u(this,`_formulaRuleMap`,new Map),this._initFormulaResultHandler()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(e=>{for(let n in e){let r=e[n];if(this._instanceService.getUnitType(n)===t.UniverInstanceType.UNIVER_SHEET)for(let e in r){let t=r[e],i=this._ensureRuleFormulaMap(n,e);t.forEach(t=>{var r;let a=(r=t.extra)==null?void 0:r.ruleId;if(a&&i.get(a)){let t=this._dataValidationModel.getRuleById(n,e,a);t&&(this._listCacheService.markRuleDirty(n,e,a),this._dataValidationCacheService.markRangeDirty(n,e,t.ranges))}})}}}))}_ensureRuleFormulaMap(e,t){let n=this._formulaRuleMap.get(e);n||(n=new Map,this._formulaRuleMap.set(e,n));let r=n.get(t);return r||(r=new Map,n.set(t,r)),r}_registerSingleFormula(e,t,n,i){return this._registerOtherFormulaService.registerFormulaWithRange(e,t,n,[{startColumn:0,endColumn:0,startRow:0,endRow:0}],{ruleId:i},r.OtherFormulaBizType.DATA_VALIDATION,i)}addRule(e,n,r){if(!_(r.type,this._validatorRegistryService)&&r.type!==t.DataValidationType.CHECKBOX){let{formula1:i,formula2:a,uid:o}=r,s=(0,t.isFormulaString)(i),c=(0,t.isFormulaString)(a);if(!s&&!c)return;let l=this._ensureRuleFormulaMap(e,n),u=[void 0,void 0];s&&(u[0]={id:this._registerSingleFormula(e,n,i,o),text:i}),c&&(u[1]={id:this._registerSingleFormula(e,n,a,o),text:a}),l.set(o,u)}}removeRule(e,t,n){let r=this._ensureRuleFormulaMap(e,t).get(n);if(!r)return;let[i,a]=r,o=[i==null?void 0:i.id,a==null?void 0:a.id].filter(Boolean);o.length&&this._registerOtherFormulaService.deleteFormula(e,t,o)}getRuleFormulaResult(e,t,n){let r=this._ensureRuleFormulaMap(e,t).get(n);if(!r)return Promise.resolve(null);let i=async n=>n&&this._registerOtherFormulaService.getFormulaValue(e,t,n.id);return Promise.all([i(r[0]),i(r[1])])}getRuleFormulaResultSync(e,t,n){let r=this._ensureRuleFormulaMap(e,t).get(n);if(r)return r.map(n=>{if(n)return this._registerOtherFormulaService.getFormulaValueSync(e,t,n.id)})}getRuleFormulaInfo(e,t,n){return this._ensureRuleFormulaMap(e,t).get(n)}};w=f([d(0,t.IUniverInstanceService),d(1,(0,t.Inject)(r.RegisterOtherFormulaService)),d(2,(0,t.Inject)(p)),d(3,(0,t.Inject)(n.DataValidationModel)),d(4,(0,t.Inject)(n.DataValidatorRegistryService)),d(5,(0,t.Inject)(C))],w);var ne=class e{constructor(e,n,r,i,a=!1){this._unitId=n,this._subUnitId=r,this._univerInstanceService=i,this._disableTree=a,u(this,`_map`,void 0),u(this,`_tree`,new t.RBush),u(this,`_dirty`,!0),u(this,`_buildTree`,()=>{if(!this._dirty||this._disableTree)return;this._tree.clear();let e=[];this._map.forEach((t,n)=>{t.forEach(t=>{e.push({minX:t.startRow,maxX:t.endRow,minY:t.startColumn,maxY:t.endColumn,ruleId:n})})}),this._tree.load(e),this._dirty=!1}),u(this,`_debonceBuildTree`,(0,t.debounce)(this._buildTree,0)),this._map=e,this._buildTree()}get _worksheet(){var e;return(e=this._univerInstanceService.getUnit(this._unitId,t.UniverInstanceType.UNIVER_SHEET))==null?void 0:e.getSheetBySheetId(this._subUnitId)}_addRule(e,n){if(!this._worksheet)return;let r=t.Rectangle.mergeRanges(n.map(e=>t.Range.transformRange(e,this._worksheet)));this._map.forEach((e,n)=>{let i=t.Rectangle.subtractMulti(e,r);i.length===0?this._map.delete(n):this._map.set(n,i)}),this._dirty=!0,this._map.set(e,r),this._debonceBuildTree()}addRule(e){this._addRule(e.uid,e.ranges)}removeRange(e){if(!this._worksheet)return;let n=e.map(e=>t.Range.transformRange(e,this._worksheet));this._map.forEach((e,r)=>{let i=t.Rectangle.subtractMulti(e,n);i.length===0?this._map.delete(r):this._map.set(r,i)}),this._dirty=!0,this._debonceBuildTree()}_removeRule(e){this._map.delete(e),this._dirty=!0,this._debonceBuildTree()}removeRule(e){this._removeRule(e.uid)}updateRange(e,t){this._removeRule(e),this._addRule(e,t)}addRangeRules(e){e.forEach(({id:e,ranges:n})=>{if(!n.length)return;let r=this._map.get(e);r?(this._map.set(e,t.Rectangle.mergeRanges([...r,...n])),r=this._map.get(e)):(r=n,this._map.set(e,r)),this._map.forEach((r,i)=>{if(i===e)return;let a=t.Rectangle.subtractMulti(r,n);a.length===0?this._map.delete(i):this._map.set(i,a)})}),this._dirty=!0,this._debonceBuildTree()}diff(e){let n=[],r=0;return e.forEach((e,i)=>{var a;let o=(a=this._map.get(e.uid))==null?[]:a,s=e.ranges;o.length!==0&&(o.length!==s.length||o.some((e,n)=>!t.Rectangle.equals(e,s[n])))&&n.push({type:`update`,ruleId:e.uid,oldRanges:s,newRanges:t.Rectangle.sort(o),rule:e}),o.length===0&&(n.push({type:`delete`,rule:e,index:i-r}),r++)}),n}diffWithAddition(e,n){let r=[],i=0;return e.forEach((e,n)=>{var a;let o=(a=this._map.get(e.uid))==null?[]:a,s=e.ranges;o.length!==0&&(o.length!==s.length||o.some((e,n)=>!t.Rectangle.equals(e,s[n])))&&r.push({type:`update`,ruleId:e.uid,oldRanges:s,newRanges:t.Rectangle.sort(o),rule:e}),o.length===0&&(r.push({type:`delete`,rule:e,index:n-i}),i++)}),Array.from(n).forEach(e=>{var n;let i=(n=this._map.get(e.uid))==null?[]:n;r.push({type:`add`,rule:{...e,ranges:t.Rectangle.sort(i)}})}),r}clone(){return new e(new Map(t.Tools.deepClone(Array.from(this._map.entries()))),this._unitId,this._subUnitId,this._univerInstanceService,!0)}getValue(e,t){this._dirty&&this._buildTree();let n=this._tree.search({minX:e,maxX:e,minY:t,maxY:t});return n.length>0?n[0].ruleId:void 0}};let T=class extends t.Disposable{constructor(e,t,n,r,i,o,s){super(),this._dataValidationModel=e,this._univerInstanceService=t,this._dataValidatorRegistryService=n,this._dataValidationCacheService=r,this._dataValidationFormulaService=i,this._dataValidationCustomFormulaService=o,this._commandService=s,u(this,`_ruleMatrixMap`,new Map),u(this,`_validStatusChange$`,new a.Subject),u(this,`_ruleChange$`,new a.Subject),u(this,`ruleChange$`,this._ruleChange$.asObservable()),u(this,`validStatusChange$`,this._validStatusChange$.asObservable()),this._initRuleUpdateListener(),this.disposeWithMe(()=>{this._ruleChange$.complete(),this._validStatusChange$.complete()}),this._initUniverInstanceListener()}_initUniverInstanceListener(){this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(e=>{this._ruleMatrixMap.delete(e.getUnitId())})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===i.RemoveSheetMutation.id){let{unitId:t,subUnitId:n}=e.params,r=this._ruleMatrixMap.get(t);r&&r.delete(n)}}))}_initRuleUpdateListener(){let e=this._dataValidationModel.getAll();for(let[t,n]of e)for(let[e,r]of n)for(let n of r)this._addRule(t,e,n),this._ruleChange$.next({type:`add`,unitId:t,subUnitId:e,rule:n,source:`patched`});this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(e=>{switch(e.type){case`add`:this._addRule(e.unitId,e.subUnitId,e.rule);break;case`update`:this._updateRule(e.unitId,e.subUnitId,e.rule.uid,e.oldRule,e.updatePayload);break;case`remove`:this._removeRule(e.unitId,e.subUnitId,e.rule);break}this._ruleChange$.next(e)}))}_ensureRuleMatrix(e,t){let n=this._ruleMatrixMap.get(e);n||(n=new Map,this._ruleMatrixMap.set(e,n));let r=n.get(t);return r||(r=new ne(new Map,e,t,this._univerInstanceService),n.set(t,r)),r}_addRuleSideEffect(e,t,n){this._ensureRuleMatrix(e,t).addRule(n),this._dataValidationCacheService.addRule(e,t,n),this._dataValidationFormulaService.addRule(e,t,n),this._dataValidationCustomFormulaService.addRule(e,t,n)}_addRule(e,t,n){(Array.isArray(n)?n:[n]).forEach(n=>{this._addRuleSideEffect(e,t,n)})}_updateRule(e,t,r,i,a){let o=this._ensureRuleMatrix(e,t),s={...i,...a.payload};a.type===n.UpdateRuleType.RANGE?o.updateRange(r,a.payload):a.type===n.UpdateRuleType.ALL&&o.updateRange(r,a.payload.ranges),this._dataValidationCacheService.removeRule(e,t,i),this._dataValidationCacheService.addRule(e,t,s),this._dataValidationFormulaService.removeRule(e,t,i.uid),this._dataValidationFormulaService.addRule(e,t,s),this._dataValidationCustomFormulaService.deleteByRuleId(e,t,r),this._dataValidationCustomFormulaService.addRule(e,t,s)}_removeRule(e,t,n){this._ensureRuleMatrix(e,t).removeRule(n),this._dataValidationCacheService.removeRule(e,t,n),this._dataValidationCustomFormulaService.deleteByRuleId(e,t,n.uid)}getValidator(e){return this._dataValidatorRegistryService.getValidatorItem(e)}getRuleIdByLocation(e,t,n,r){return this._ensureRuleMatrix(e,t).getValue(n,r)}getRuleByLocation(e,t,n,r){let i=this.getRuleIdByLocation(e,t,n,r);if(i)return this._dataValidationModel.getRuleById(e,t,i)}validator(e,n,r){let{col:i,row:a,unitId:o,subUnitId:s,worksheet:c}=n,l=(t,n)=>{r&&r(t,n),n&&this._validStatusChange$.next({unitId:o,subUnitId:s,ruleId:e.uid,status:t,row:a,col:i})},u=c.getCellValueOnly(a,i),d=this.getValidator(e.type),f=c.getCellRaw(a,i),p=y(f);if(d){let r=this._dataValidationCacheService.ensureCache(o,s),c=r.getValue(a,i);return c==null?(r.setValue(a,i,t.DataValidationStatus.VALIDATING),d.validator({value:p,unitId:o,subUnitId:s,row:a,column:i,worksheet:n.worksheet,workbook:n.workbook,interceptValue:y(u),t:f==null?void 0:f.t},e).then(e=>{let n=e?t.DataValidationStatus.VALID:t.DataValidationStatus.INVALID,o=r.getValue(a,i);n===t.DataValidationStatus.VALID?r.realDeleteValue(a,i):r.setValue(a,i,n),l(n,c!==o)}),t.DataValidationStatus.VALIDATING):(l(c==null?t.DataValidationStatus.VALID:c,!1),c==null?t.DataValidationStatus.VALID:c)}else return l(t.DataValidationStatus.VALID,!1),t.DataValidationStatus.VALID}getRuleObjectMatrix(e,t){return this._ensureRuleMatrix(e,t)}getRuleById(e,t,n){return this._dataValidationModel.getRuleById(e,t,n)}getRuleIndex(e,t,n){return this._dataValidationModel.getRuleIndex(e,t,n)}getRules(e,t){return[...this._dataValidationModel.getRules(e,t)]}getUnitRules(e){return this._dataValidationModel.getUnitRules(e)}deleteUnitRules(e){return this._dataValidationModel.deleteUnitRules(e)}getSubUnitIds(e){return this._dataValidationModel.getSubUnitIds(e)}getAll(){return this._dataValidationModel.getAll()}};T=f([d(0,(0,t.Inject)(n.DataValidationModel)),d(1,t.IUniverInstanceService),d(2,(0,t.Inject)(n.DataValidatorRegistryService)),d(3,(0,t.Inject)(p)),d(4,(0,t.Inject)(w)),d(5,(0,t.Inject)(v)),d(6,t.ICommandService)],T);function re(e,n){return t.Tools.isBlank(e)?n.t(`dataValidation.validFail.value`):(0,t.isFormulaString)(e)?n.t(`dataValidation.validFail.primitive`):``}let E=e=>t.Tools.isDefine(e)&&String(e).toLowerCase()===`true`?`1`:String(e).toLowerCase()===`false`?`0`:e;var D=class extends n.BaseDataValidator{constructor(...e){super(...e),u(this,`id`,t.DataValidationType.CHECKBOX),u(this,`title`,`dataValidation.checkbox.title`),u(this,`operators`,[]),u(this,`scopes`,[`sheet`]),u(this,`order`,41),u(this,`offsetFormulaByRange`,!1),u(this,`_formulaService`,this.injector.get(w)),u(this,`skipDefaultFontRender`,(e,t,n)=>{let{unitId:r,subUnitId:i}=n,{formula1:a,formula2:o}=this.parseFormulaSync(e,r,i),s=`${t==null?``:t}`;return!s||s===`${a}`||s===`${o}`})}validatorFormula(e,n,r){let{formula1:i,formula2:a}=e,o=i===a;if(t.Tools.isBlank(i)&&t.Tools.isBlank(a))return{success:!0};if(o)return{success:!1,formula1:this.localeService.t(`dataValidation.validFail.checkboxEqual`),formula2:this.localeService.t(`dataValidation.validFail.checkboxEqual`)};let s=re(i,this.localeService),c=re(a,this.localeService);return{success:!s&&!c,formula1:s,formula2:c}}async parseFormula(e,n,r){var i,a;let{formula1:o=1,formula2:s=0}=e,c=await this._formulaService.getRuleFormulaResult(n,r,e.uid),l=(0,t.isFormulaString)(o)?m(c==null||(i=c[0])==null||(i=i.result)==null?void 0:i[0][0]):o,u=(0,t.isFormulaString)(s)?m(c==null||(a=c[1])==null||(a=a.result)==null?void 0:a[0][0]):s,d=g(String(l))&&g(String(u));return{formula1:E(l),formula2:E(u),originFormula1:l,originFormula2:u,isFormulaValid:d}}getExtraStyle(e,n){return{tb:t.WrapStrategy.CLIP}}parseFormulaSync(e,n,r){var i,a;let{formula1:o=1,formula2:s=0}=e,c=this._formulaService.getRuleFormulaResultSync(n,r,e.uid),l=(0,t.isFormulaString)(o)?m(c==null||(i=c[0])==null||(i=i.result)==null?void 0:i[0][0]):o,u=(0,t.isFormulaString)(s)?m(c==null||(a=c[1])==null||(a=a.result)==null?void 0:a[0][0]):s,d=g(String(l))&&g(String(u));return{formula1:E(l),formula2:E(u),originFormula1:l,originFormula2:u,isFormulaValid:d}}async isValidType(e,n,r){let{value:i,unitId:a,subUnitId:o}=e,{formula1:s,formula2:c,originFormula1:l,originFormula2:u}=await this.parseFormula(r,a,o);return!t.Tools.isDefine(s)||!t.Tools.isDefine(c)?!0:t.Tools.isDefine(i)&&(String(i)===String(s)||String(i)===String(c)||String(i)===String(l==null?``:l)||String(i)===String(u==null?``:u))}generateRuleErrorMessage(e){return this.localeService.t(`dataValidation.checkbox.error`)}generateRuleName(e){return this.titleStr}};let ie={[t.DataValidationOperator.BETWEEN]:`dataValidation.date.operators.between`,[t.DataValidationOperator.EQUAL]:`dataValidation.date.operators.equal`,[t.DataValidationOperator.GREATER_THAN]:`dataValidation.date.operators.greaterThan`,[t.DataValidationOperator.GREATER_THAN_OR_EQUAL]:`dataValidation.date.operators.greaterThanOrEqual`,[t.DataValidationOperator.LESS_THAN]:`dataValidation.date.operators.lessThan`,[t.DataValidationOperator.LESS_THAN_OR_EQUAL]:`dataValidation.date.operators.lessThanOrEqual`,[t.DataValidationOperator.NOT_BETWEEN]:`dataValidation.date.operators.notBetween`,[t.DataValidationOperator.NOT_EQUAL]:`dataValidation.date.operators.notEqual`};t.DataValidationOperator.BETWEEN,t.DataValidationOperator.EQUAL,t.DataValidationOperator.GREATER_THAN,t.DataValidationOperator.GREATER_THAN_OR_EQUAL,t.DataValidationOperator.LESS_THAN,t.DataValidationOperator.LESS_THAN_OR_EQUAL,t.DataValidationOperator.NOT_BETWEEN,t.DataValidationOperator.NOT_EQUAL;let O={[t.DataValidationOperator.BETWEEN]:`dataValidation.date.ruleName.between`,[t.DataValidationOperator.EQUAL]:`dataValidation.date.ruleName.equal`,[t.DataValidationOperator.GREATER_THAN]:`dataValidation.date.ruleName.greaterThan`,[t.DataValidationOperator.GREATER_THAN_OR_EQUAL]:`dataValidation.date.ruleName.greaterThanOrEqual`,[t.DataValidationOperator.LESS_THAN]:`dataValidation.date.ruleName.lessThan`,[t.DataValidationOperator.LESS_THAN_OR_EQUAL]:`dataValidation.date.ruleName.lessThanOrEqual`,[t.DataValidationOperator.NOT_BETWEEN]:`dataValidation.date.ruleName.notBetween`,[t.DataValidationOperator.NOT_EQUAL]:`dataValidation.date.ruleName.notEqual`,NONE:`dataValidation.date.ruleName.legal`},ae={[t.DataValidationOperator.BETWEEN]:`dataValidation.date.errorMsg.between`,[t.DataValidationOperator.EQUAL]:`dataValidation.date.errorMsg.equal`,[t.DataValidationOperator.GREATER_THAN]:`dataValidation.date.errorMsg.greaterThan`,[t.DataValidationOperator.GREATER_THAN_OR_EQUAL]:`dataValidation.date.errorMsg.greaterThanOrEqual`,[t.DataValidationOperator.LESS_THAN]:`dataValidation.date.errorMsg.lessThan`,[t.DataValidationOperator.LESS_THAN_OR_EQUAL]:`dataValidation.date.errorMsg.lessThanOrEqual`,[t.DataValidationOperator.NOT_BETWEEN]:`dataValidation.date.errorMsg.notBetween`,[t.DataValidationOperator.NOT_EQUAL]:`dataValidation.date.errorMsg.notEqual`,NONE:`dataValidation.date.errorMsg.legal`},k=[t.DataValidationOperator.BETWEEN,t.DataValidationOperator.NOT_BETWEEN],A=`{FORMULA1}`,j=`{FORMULA2}`,M=e=>{var n,r;if(e==null||typeof e==`boolean`)return;if(typeof e==`number`||!Number.isNaN(+e))return+e;let i=(n=t.numfmt.parseDate(e))==null?void 0:n.v;return t.Tools.isDefine(i)?i:(r=t.numfmt.parseDate((0,t.dayjs)(e).format(`YYYY-MM-DD HH:mm:ss`)))==null?void 0:r.v};var oe=class extends n.BaseDataValidator{constructor(...e){super(...e),u(this,`id`,t.DataValidationType.DATE),u(this,`title`,`dataValidation.date.title`),u(this,`order`,40),u(this,`operators`,[t.DataValidationOperator.BETWEEN,t.DataValidationOperator.EQUAL,t.DataValidationOperator.GREATER_THAN,t.DataValidationOperator.GREATER_THAN_OR_EQUAL,t.DataValidationOperator.LESS_THAN,t.DataValidationOperator.LESS_THAN_OR_EQUAL,t.DataValidationOperator.NOT_BETWEEN,t.DataValidationOperator.NOT_EQUAL]),u(this,`scopes`,[`sheet`]),u(this,`_customFormulaService`,this.injector.get(v)),u(this,`_lexerTreeBuilder`,this.injector.get(r.LexerTreeBuilder))}async parseFormula(e,n,r,i,a){let o=await this._customFormulaService.getCellFormulaValue(n,r,e.uid,i,a),s=await this._customFormulaService.getCellFormula2Value(n,r,e.uid,i,a),{formula1:c,formula2:l}=e,u=g(String(o==null?void 0:o.v))&&g(String(s==null?void 0:s.v));return{formula1:M((0,t.isFormulaString)(c)?o==null?void 0:o.v:c),formula2:M((0,t.isFormulaString)(l)?s==null?void 0:s.v:l),isFormulaValid:u}}async isValidType(e){let{interceptValue:n,value:r}=e;return typeof r==`number`&&typeof n==`string`||typeof n==`string`?!!t.numfmt.parseDate(n):!1}_validatorSingleFormula(e){return!t.Tools.isBlank(e)&&((0,t.isFormulaString)(e)||!Number.isNaN(+e)||!!(e&&t.numfmt.parseDate(e)))}validatorFormula(e,t,n){let r=e.operator;if(!r)return{success:!0};let i=this._validatorSingleFormula(e.formula1),a=this.localeService.t(`dataValidation.validFail.date`);if(k.includes(r)){let t=this._validatorSingleFormula(e.formula2);return{success:i&&t,formula1:i?void 0:a,formula2:t?void 0:a}}return{success:i,formula1:i?void 0:a}}normalizeFormula(e,n,r){let{formula1:i,formula2:a,bizInfo:o}=e,s=e=>{if(!e)return e;let n;if(!Number.isNaN(+e))n=t.numfmt.dateFromSerial(+e);else{var r;let i=(r=t.numfmt.parseDate(e))==null?void 0:r.v;if(i==null)return``;n=t.numfmt.dateFromSerial(i)}return(0,t.dayjs)(`${n[0]}/${n[1]}/${n[2]} ${n[3]}:${n[4]}:${n[5]}`).format(o!=null&&o.showTime?`YYYY-MM-DD HH:mm:ss`:`YYYY-MM-DD`)};return{formula1:(0,t.isFormulaString)(i)?i:s(`${i}`),formula2:(0,t.isFormulaString)(a)?a:s(`${a}`)}}transform(e,t,n){let{value:r}=e;return{...e,value:M(r)}}get operatorNames(){return this.operators.map(e=>this.localeService.t(ie[e]))}generateRuleName(e){var t,n;if(!e.operator)return this.localeService.t(O.NONE);let r=this.localeService.t(O[e.operator]).replace(A,(t=e.formula1)==null?``:t).replace(j,(n=e.formula2)==null?``:n);return`${this.titleStr} ${r}`}generateRuleErrorMessage(e,t){if(!e.operator)return this.titleStr;let{transformedFormula1:n,transformedFormula2:r}=S(this._lexerTreeBuilder,e,t);return`${this.localeService.t(ae[e.operator]).replace(A,n==null?``:n).replace(j,r==null?``:r)}`}};t.DataValidationOperator.BETWEEN,t.DataValidationOperator.EQUAL,t.DataValidationOperator.GREATER_THAN,t.DataValidationOperator.GREATER_THAN_OR_EQUAL,t.DataValidationOperator.LESS_THAN,t.DataValidationOperator.LESS_THAN_OR_EQUAL,t.DataValidationOperator.NOT_BETWEEN,t.DataValidationOperator.NOT_EQUAL,t.DataValidationOperator.BETWEEN,t.DataValidationOperator.EQUAL,t.DataValidationOperator.GREATER_THAN,t.DataValidationOperator.GREATER_THAN_OR_EQUAL,t.DataValidationOperator.LESS_THAN,t.DataValidationOperator.LESS_THAN_OR_EQUAL,t.DataValidationOperator.NOT_BETWEEN,t.DataValidationOperator.NOT_EQUAL;let N={[t.DataValidationOperator.BETWEEN]:`dataValidation.errorMsg.between`,[t.DataValidationOperator.EQUAL]:`dataValidation.errorMsg.equal`,[t.DataValidationOperator.GREATER_THAN]:`dataValidation.errorMsg.greaterThan`,[t.DataValidationOperator.GREATER_THAN_OR_EQUAL]:`dataValidation.errorMsg.greaterThanOrEqual`,[t.DataValidationOperator.LESS_THAN]:`dataValidation.errorMsg.lessThan`,[t.DataValidationOperator.LESS_THAN_OR_EQUAL]:`dataValidation.errorMsg.lessThanOrEqual`,[t.DataValidationOperator.NOT_BETWEEN]:`dataValidation.errorMsg.notBetween`,[t.DataValidationOperator.NOT_EQUAL]:`dataValidation.errorMsg.notEqual`,NONE:`dataValidation.errorMsg.legal`};function P(e){return+e}var se=class extends n.BaseDataValidator{constructor(...e){super(...e),u(this,`_customFormulaService`,this.injector.get(v)),u(this,`id`,t.DataValidationType.DECIMAL),u(this,`_lexerTreeBuilder`,this.injector.get(r.LexerTreeBuilder)),u(this,`title`,`dataValidation.decimal.title`),u(this,`order`,20),u(this,`operators`,[t.DataValidationOperator.BETWEEN,t.DataValidationOperator.EQUAL,t.DataValidationOperator.GREATER_THAN,t.DataValidationOperator.GREATER_THAN_OR_EQUAL,t.DataValidationOperator.LESS_THAN,t.DataValidationOperator.LESS_THAN_OR_EQUAL,t.DataValidationOperator.NOT_BETWEEN,t.DataValidationOperator.NOT_EQUAL]),u(this,`scopes`,[`sheet`])}_isFormulaOrNumber(e){return!t.Tools.isBlank(e)&&((0,t.isFormulaString)(e)||!Number.isNaN(+e))}async isValidType(e,t,n){let{value:r}=e;return!Number.isNaN(P(r))}transform(e,t,n){let{value:r}=e;return{...e,value:P(r)}}_parseNumber(e){return e==null?NaN:+e}async parseFormula(e,n,r,i,a){let o=await this._customFormulaService.getCellFormulaValue(n,r,e.uid,i,a),s=await this._customFormulaService.getCellFormula2Value(n,r,e.uid,i,a),{formula1:c,formula2:l}=e,u=g(String(o==null?void 0:o.v))&&g(String(s==null?void 0:s.v));return{formula1:this._parseNumber((0,t.isFormulaString)(c)?o==null?void 0:o.v:c),formula2:this._parseNumber((0,t.isFormulaString)(l)?s==null?void 0:s.v:l),isFormulaValid:u}}validatorFormula(e,n,r){let i=e.operator;if(!i)return{success:!0};let a=t.Tools.isDefine(e.formula1)&&this._isFormulaOrNumber(e.formula1),o=t.Tools.isDefine(e.formula2)&&this._isFormulaOrNumber(e.formula2),s=k.includes(i),c=this.localeService.t(`dataValidation.validFail.number`);return s?{success:a&&o,formula1:a?void 0:c,formula2:o?void 0:c}:{success:a,formula1:a?``:c}}generateRuleErrorMessage(e,t){if(!e.operator)return this.localeService.t(N.NONE).replace(`{TYPE}`,this.titleStr);let{transformedFormula1:n,transformedFormula2:r}=S(this._lexerTreeBuilder,e,t);return`${this.localeService.t(N[e.operator]).replace(A,n==null?``:n).replace(j,r==null?``:r)}`}};function ce(e){if(!e)return[];let n=new Set;for(let i=0,a=e.length;i<a;i++){let a=e[i];if(a)for(let e=0,i=a.length;e<i;e++){let i=a[e],o=y(i);if(o!=null){var r;if(typeof o!=`string`&&typeof(i==null?void 0:i.s)==`object`&&!((r=i.s)==null||(r=r.n)==null)&&r.pattern){n.add(t.numfmt.format(i.s.n.pattern,o,{throws:!1}));continue}let e=typeof o==`string`?o:String(o);g(e)&&n.add(e)}}}return[...n]}let le=[`if`,`indirect`,`choose`,`offset`];function ue(e,n){if(!(0,t.isFormulaString)(e)||(0,r.isReferenceString)(e.slice(1)))return!0;let i=n.sequenceNodesBuilder(e);return i&&i.some(e=>typeof e==`object`&&e.nodeType===r.sequenceNodeType.FUNCTION&&le.indexOf(e.token.toLowerCase())>-1)}function de(e,n){let{formula1:i=``,ranges:a}=e;if((0,r.isReferenceString)(i.slice(1))){let e=(0,r.deserializeRangeWithSheet)(i.slice(1));if((!e.sheetName||e.sheetName===n)&&a.some(n=>t.Rectangle.intersects(n,e.range)))return!0}return!1}var F=class extends n.BaseDataValidator{constructor(...e){super(...e),u(this,`formulaService`,this.injector.get(w)),u(this,`_lexer`,this.injector.get(r.LexerTreeBuilder)),u(this,`_univerInstanceService`,this.injector.get(t.IUniverInstanceService)),u(this,`_listCacheService`,this.injector.get(C)),u(this,`order`,50),u(this,`offsetFormulaByRange`,!1),u(this,`id`,t.DataValidationType.LIST),u(this,`title`,`dataValidation.list.title`),u(this,`operators`,[]),u(this,`scopes`,[`sheet`]),u(this,`skipDefaultFontRender`,e=>e.renderMode!==t.DataValidationRenderMode.TEXT)}validatorFormula(e,n,r){var i,a;let o=!t.Tools.isBlank(e.formula1),s=ue((i=e.formula1)==null?``:i,this._lexer),c=(a=this._univerInstanceService.getUnit(n,t.UniverInstanceType.UNIVER_SHEET))==null||(a=a.getSheetBySheetId(r))==null?void 0:a.getName(),l=de(e,c==null?``:c);return{success:!!(o&&s&&!l),formula1:o?s?l?this.localeService.t(`dataValidation.validFail.listIntersects`):void 0:this.localeService.t(`dataValidation.validFail.listInvalid`):this.localeService.t(`dataValidation.validFail.list`)}}getExtraStyle(e,n,{style:r}){var i;let a=(i=r.tb===t.WrapStrategy.OVERFLOW?t.WrapStrategy.CLIP:r.tb)==null?t.WrapStrategy.WRAP:i;if(e.type===t.DataValidationType.LIST&&(e.renderMode===t.DataValidationRenderMode.ARROW||e.renderMode===t.DataValidationRenderMode.TEXT)){let t=this.getListWithColorMap(e)[`${n==null?``:n}`];if(t)return{bg:{rgb:t},tb:a}}return{tb:a}}parseCellValue(e){return x(e.toString())}async parseFormula(e,t,n){var r;let i=await this.formulaService.getRuleFormulaResult(t,n,e.uid),a=m(i==null||(r=i[0])==null||(r=r.result)==null?void 0:r[0][0]);return{formula1:void 0,formula2:void 0,isFormulaValid:g(String(a))}}async isValidType(e,n,r){let{value:i,unitId:a,subUnitId:o}=e,{formula1:s=``}=r,c=(0,t.isFormulaString)(s)?this._listCacheService.getOrCompute(a,o,r).list:x(s);return this.parseCellValue(i).every(e=>c.includes(e))}generateRuleName(){return this.localeService.t(`dataValidation.list.name`)}generateRuleErrorMessage(){return this.localeService.t(`dataValidation.list.error`)}_getUnitAndSubUnit(e,n){var r,i;let a=(r=e?this._univerInstanceService.getUniverSheetInstance(e):void 0)==null?this._univerInstanceService.getCurrentUnitForType(t.UniverInstanceType.UNIVER_SHEET):r;if(!a)return null;let o=(i=n?a.getSheetBySheetId(n):void 0)==null?a.getActiveSheet():i;return o?{unitId:a.getUnitId(),subUnitId:o.getSheetId()}:null}getList(e,t,n){let r=this._getUnitAndSubUnit(t,n);if(!r)return[];let{unitId:i,subUnitId:a}=r;return this._listCacheService.getOrCompute(i,a,e).list}async getListAsync(e,n,r){var i;let{formula1:a=``}=e,o=this._getUnitAndSubUnit(n,r);if(!o)return[];let{unitId:s,subUnitId:c}=o,l=await this.formulaService.getRuleFormulaResult(s,c,e.uid);return(0,t.isFormulaString)(a)?ce(l==null||(i=l[0])==null||(i=i.result)==null?void 0:i[0][0]):x(a)}getListWithColor(e,t,n){let r=this._getUnitAndSubUnit(t,n);if(!r)return[];let{unitId:i,subUnitId:a}=r;return this._listCacheService.getOrCompute(i,a,e).listWithColor}getListWithColorMap(e,t,n){let r=this._getUnitAndSubUnit(t,n);if(!r)return{};let{unitId:i,subUnitId:a}=r;return this._listCacheService.getOrCompute(i,a,e).colorMap}},fe=class extends n.BaseDataValidator{constructor(...e){super(...e),u(this,`id`,t.DataValidationType.TEXT_LENGTH),u(this,`title`,`dataValidation.textLength.title`),u(this,`_lexerTreeBuilder`,this.injector.get(r.LexerTreeBuilder)),u(this,`order`,30),u(this,`operators`,[t.DataValidationOperator.BETWEEN,t.DataValidationOperator.EQUAL,t.DataValidationOperator.GREATER_THAN,t.DataValidationOperator.GREATER_THAN_OR_EQUAL,t.DataValidationOperator.LESS_THAN,t.DataValidationOperator.LESS_THAN_OR_EQUAL,t.DataValidationOperator.NOT_BETWEEN,t.DataValidationOperator.NOT_EQUAL]),u(this,`scopes`,[`sheet`]),u(this,`_customFormulaService`,this.injector.get(v))}_isFormulaOrInt(e){return!t.Tools.isBlank(e)&&((0,t.isFormulaString)(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}validatorFormula(e,n,r){let i=e.operator;if(!i)return{success:!1};let a=t.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),o=t.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),s=k.includes(i),c=this.localeService.t(`dataValidation.validFail.number`);return s?{success:a&&o,formula1:a?void 0:c,formula2:o?void 0:c}:{success:a,formula1:c}}_parseNumber(e){return e==null?NaN:+e}async parseFormula(e,n,r,i,a){let o=await this._customFormulaService.getCellFormulaValue(n,r,e.uid,i,a),s=await this._customFormulaService.getCellFormula2Value(n,r,e.uid,i,a),{formula1:c,formula2:l}=e,u=g(String(o==null?void 0:o.v))&&g(String(s==null?void 0:s.v));return{formula1:this._parseNumber((0,t.isFormulaString)(c)?o==null?void 0:o.v:c),formula2:this._parseNumber((0,t.isFormulaString)(l)?s==null?void 0:s.v:l),isFormulaValid:u}}transform(e,t,n){return{...e,value:e.value.toString().length}}async isValidType(e,t,n){let{value:r}=e;return typeof r==`string`||typeof r==`number`}generateRuleErrorMessage(e,t){if(!e.operator)return this.titleStr;let{transformedFormula1:r,transformedFormula2:i}=S(this._lexerTreeBuilder,e,t);return`${this.localeService.t(n.TextLengthErrorTitleMap[e.operator]).replace(A,r==null?``:r).replace(j,i==null?``:i)}`}};function I(e){var n,r;return e?e.p?!((n=(r=e.p.body)==null?void 0:r.dataStream)==null?``:n).slice(0,-2).trim():t.Tools.isBlank(e.v):!0}function L(e,a,o,s,c=`command`,l=!0){let u=s.get(r.LexerTreeBuilder),d=s.get(n.DataValidatorRegistryService),f=[],p=[],m=s.get(T),h=(0,i.getSheetCommandTarget)(s.get(t.IUniverInstanceService),{unitId:e,subUnitId:a});if(!h)return{redoMutations:f,undoMutations:p};let{worksheet:g}=h,v=new t.ObjectMatrix,y=!1;function b(e,n){l&&e.forEach(e=>{t.Range.foreach(e,(e,t)=>{let r=g.getCellRaw(e,t),i=ee(r);(I(r)||i===n)&&!(r!=null&&r.p)&&(y=!0,v.setValue(e,t,{v:n,p:null}))})})}if(o.forEach(r=>{switch(r.type){case`delete`:f.push({id:n.RemoveDataValidationMutation.id,params:{unitId:e,subUnitId:a,ruleId:r.rule.uid,source:c}}),p.unshift({id:n.AddDataValidationMutation.id,params:{unitId:e,subUnitId:a,rule:r.rule,index:r.index,source:c}});break;case`update`:{if(_(r.rule.type,d)){let i=r.oldRanges[0].startRow,o=r.oldRanges[0].startColumn,s=r.newRanges[0].startRow,l=r.newRanges[0].startColumn,d=s-i,m=l-o,h=(0,t.isFormulaString)(r.rule.formula1)?u.moveFormulaRefOffset(r.rule.formula1,m,d):r.rule.formula1,g=(0,t.isFormulaString)(r.rule.formula2)?u.moveFormulaRefOffset(r.rule.formula2,m,d):r.rule.formula2;h!==r.rule.formula1||g!==r.rule.formula2||!(0,t.isRangesEqual)(r.newRanges,r.oldRanges)?(f.push({id:n.UpdateDataValidationMutation.id,params:{unitId:e,subUnitId:a,ruleId:r.ruleId,payload:{type:n.UpdateRuleType.ALL,payload:{formula1:h,formula2:g,ranges:r.newRanges}}}}),p.unshift({id:n.UpdateDataValidationMutation.id,params:{unitId:e,subUnitId:a,ruleId:r.ruleId,payload:{type:n.UpdateRuleType.ALL,payload:{formula1:r.rule.formula1,formula2:r.rule.formula2,ranges:r.oldRanges}}}})):(f.push({id:n.UpdateDataValidationMutation.id,params:{unitId:e,subUnitId:a,ruleId:r.ruleId,payload:{type:n.UpdateRuleType.RANGE,payload:r.newRanges},source:c}}),p.unshift({id:n.UpdateDataValidationMutation.id,params:{unitId:e,subUnitId:a,ruleId:r.ruleId,payload:{type:n.UpdateRuleType.RANGE,payload:r.oldRanges},source:c}}))}else f.push({id:n.UpdateDataValidationMutation.id,params:{unitId:e,subUnitId:a,ruleId:r.ruleId,payload:{type:n.UpdateRuleType.RANGE,payload:r.newRanges},source:c}}),p.unshift({id:n.UpdateDataValidationMutation.id,params:{unitId:e,subUnitId:a,ruleId:r.ruleId,payload:{type:n.UpdateRuleType.RANGE,payload:r.oldRanges},source:c}});let i=m.getRuleById(e,a,r.ruleId);if(i&&i.type===t.DataValidationType.CHECKBOX){let n=m.getValidator(t.DataValidationType.CHECKBOX).parseFormulaSync(i,e,a);b(r.newRanges,n.formula2)}break}case`add`:if(f.push({id:n.AddDataValidationMutation.id,params:{unitId:e,subUnitId:a,rule:r.rule,source:c}}),p.unshift({id:n.RemoveDataValidationMutation.id,params:{unitId:e,subUnitId:a,ruleId:r.rule.uid,source:c}}),r.rule.type===t.DataValidationType.CHECKBOX){let n=m.getValidator(t.DataValidationType.CHECKBOX).parseFormulaSync(r.rule,e,a);b(r.rule.ranges,n.originFormula2)}break;default:break}}),y){let t={id:i.SetRangeValuesMutation.id,params:{unitId:e,subUnitId:a,cellValue:v.getData()}},n={id:i.SetRangeValuesMutation.id,params:(0,i.SetRangeValuesUndoMutationFactory)(s,t.params)};f.push(t),p.push(n)}return{redoMutations:f,undoMutations:p}}let R={type:t.CommandType.COMMAND,id:`sheet.command.updateDataValidationRuleRange`,handler(e,n){if(!n)return!1;let{unitId:r,subUnitId:i,ranges:a,ruleId:o}=n,s=e.get(T),c=e.get(t.ICommandService),l=e.get(t.IUndoRedoService);if(!s.getRuleById(r,i,o))return!1;let u=s.getRuleObjectMatrix(r,i).clone();u.updateRange(o,a);let{redoMutations:d,undoMutations:f}=L(r,i,u.diff(s.getRules(r,i)),e);return l.pushUndoRedo({undoMutations:f,redoMutations:d,unitID:r}),(0,t.sequenceExecute)(d,c),!0}},z={type:t.CommandType.COMMAND,id:`sheet.command.addDataValidation`,handler(e,r){if(!r)return!1;let{unitId:i,subUnitId:a,rule:o}=r,s=e.get(T),c=e.get(t.ICommandService),l=e.get(t.IUndoRedoService),u=s.getRuleObjectMatrix(i,a).clone();u.addRule(o);let d=u.diff(s.getRules(i,a)),f=s.getValidator(o.type),p={unitId:i,subUnitId:a,rule:{...o,...f==null?void 0:f.normalizeFormula(o,i,a)}},{redoMutations:m,undoMutations:h}=L(i,a,d,e);return m.push({id:n.AddDataValidationMutation.id,params:p}),h.unshift({id:n.RemoveDataValidationMutation.id,params:{unitId:i,subUnitId:a,ruleId:o.uid}}),l.pushUndoRedo({unitID:i,redoMutations:m,undoMutations:h}),(0,t.sequenceExecute)(m,c),!0}},B={type:t.CommandType.COMMAND,id:`sheets.command.update-data-validation-setting`,handler(e,r){if(!r)return!1;let a=e.get(t.ICommandService),o=e.get(t.IUndoRedoService),s=e.get(T),c=e.get(n.DataValidatorRegistryService),{unitId:l,subUnitId:u,ruleId:d,setting:f}=r,p=c.getValidatorItem(f.type);if(!p)return!1;let m=s.getRuleById(l,u,d);if(!m)return!1;let h={...m,...f};if(!p.validatorFormula(h,l,u).success)return!1;let g={unitId:l,subUnitId:u,ruleId:d,payload:{type:n.UpdateRuleType.SETTING,payload:{...f,...p.normalizeFormula(h,l,u)}}},_=[{id:n.UpdateDataValidationMutation.id,params:g}],v={unitId:l,subUnitId:u,ruleId:d,payload:{type:n.UpdateRuleType.SETTING,payload:(0,n.getRuleSetting)(m)}},y=[{id:n.UpdateDataValidationMutation.id,params:v}];if(f.type===t.DataValidationType.CHECKBOX){let n=m.ranges,r=(0,i.getSheetCommandTarget)(e.get(t.IUniverInstanceService),{unitId:l,subUnitId:u});if(r){let a=new t.ObjectMatrix,{worksheet:o}=r,{formula2:s=0,formula1:c=1}=m,{formula2:d=0,formula1:p=1}=f,h=!1;if(n.forEach(e=>{t.Range.foreach(e,(e,t)=>{let n=o.getCellRaw(e,t),r=ee(n);(I(n)||r===String(s))&&!(n!=null&&n.p)?(a.setValue(e,t,{v:d,p:null}),h=!0):r===String(c)&&!(n!=null&&n.p)&&(a.setValue(e,t,{v:p,p:null}),h=!0)})}),h){let t={id:i.SetRangeValuesMutation.id,params:{unitId:l,subUnitId:u,cellValue:a.getData()}},n={id:i.SetRangeValuesMutation.id,params:(0,i.SetRangeValuesUndoMutationFactory)(e,t.params)};_.push(t),y.push(n)}}}return(0,t.sequenceExecute)(_,a).result?(o.pushUndoRedo({unitID:l,redoMutations:_,undoMutations:y}),!0):!1}},V={type:t.CommandType.COMMAND,id:`sheets.command.update-data-validation-options`,handler(e,r){if(!r)return!1;let i=e.get(t.ICommandService),a=e.get(t.IUndoRedoService),o=e.get(T),{unitId:s,subUnitId:c,ruleId:l,options:u}=r,d=o.getRuleById(s,c,l);if(!d)return!1;let f={unitId:s,subUnitId:c,ruleId:l,payload:{type:n.UpdateRuleType.OPTIONS,payload:u}},p=[{id:n.UpdateDataValidationMutation.id,params:f}],m={unitId:s,subUnitId:c,ruleId:l,payload:{type:n.UpdateRuleType.OPTIONS,payload:(0,n.getRuleOptions)(d)}},h=[{id:n.UpdateDataValidationMutation.id,params:m}];return a.pushUndoRedo({unitID:s,redoMutations:p,undoMutations:h}),i.executeCommand(n.UpdateDataValidationMutation.id,f),!0}},H={type:t.CommandType.COMMAND,id:`sheets.command.clear-range-data-validation`,handler(e,n){if(!n)return!1;let{unitId:r,subUnitId:a,ranges:o}=n,s=e.get(t.ICommandService),c=(0,i.getSheetCommandTarget)(e.get(t.IUniverInstanceService),{unitId:r,subUnitId:a}),l=e.get(T);if(!c)return!1;let u=e.get(t.IUndoRedoService),d=l.getRuleObjectMatrix(r,a).clone();d.removeRange(o);let{redoMutations:f,undoMutations:p}=L(r,a,d.diff(l.getRules(r,a)),e);return u.pushUndoRedo({unitID:r,redoMutations:f,undoMutations:p}),(0,t.sequenceExecute)(f,s).result}},U={type:t.CommandType.COMMAND,id:`sheet.command.remove-all-data-validation`,handler(e,r){if(!r)return!1;let{unitId:i,subUnitId:a}=r,o=e.get(t.ICommandService),s=e.get(T),c=e.get(t.IUndoRedoService),l=[...s.getRules(i,a)],u={unitId:i,subUnitId:a,ruleId:l.map(e=>e.uid)},d=[{id:n.RemoveDataValidationMutation.id,params:u}],f=[{id:n.AddDataValidationMutation.id,params:{unitId:i,subUnitId:a,rule:l}}];return c.pushUndoRedo({redoMutations:d,undoMutations:f,unitID:i}),o.executeCommand(n.RemoveDataValidationMutation.id,u),!0}},pe=(e,t)=>{let r=e.get(T),{unitId:i,subUnitId:a,ruleId:o,source:s}=t;if(Array.isArray(o)){let e=o.map(e=>r.getRuleById(i,a,e)).filter(Boolean);return[{id:n.AddDataValidationMutation.id,params:{unitId:i,subUnitId:a,rule:e,source:s}}]}return[{id:n.AddDataValidationMutation.id,params:{unitId:i,subUnitId:a,rule:{...r.getRuleById(i,a,o)},index:r.getRuleIndex(i,a,o)}}]},W={type:t.CommandType.COMMAND,id:`sheet.command.remove-data-validation-rule`,handler(e,r){if(!r)return!1;let{unitId:i,subUnitId:a,ruleId:o}=r,s=e.get(t.ICommandService),c=e.get(t.IUndoRedoService),l=e.get(T),u=[{id:n.RemoveDataValidationMutation.id,params:r}],d=[{id:n.AddDataValidationMutation.id,params:{unitId:i,subUnitId:a,rule:{...l.getRuleById(i,a,o)},index:l.getRuleIndex(i,a,o)}}];return c.pushUndoRedo({undoMutations:d,redoMutations:u,unitID:r.unitId}),s.executeCommand(n.RemoveDataValidationMutation.id,r),!0}},G=`SHEET_DATA_VALIDATION_PLUGIN`;var me=(e=>(e[e.OpenOrReOpen=0]=`OpenOrReOpen`,e[e.Solved=1]=`Solved`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(me||{}),he=(e=>(e[e.Unknown=0]=`Unknown`,e[e.Add=1]=`Add`,e[e.Reply=2]=`Reply`,e[e.Edit=3]=`Edit`,e[e.Delete=4]=`Delete`,e[e.Solve=5]=`Solve`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(he||{}),ge=(e=>(e[e.UNDEFINED=0]=`UNDEFINED`,e[e.OK=1]=`OK`,e[e.INTERNAL_ERROR=2]=`INTERNAL_ERROR`,e[e.PERMISSION_DENIED=3]=`PERMISSION_DENIED`,e[e.NOT_FOUND=4]=`NOT_FOUND`,e[e.UNAUTHENTICATED=5]=`UNAUTHENTICATED`,e[e.ALREADY_EXISTS=6]=`ALREADY_EXISTS`,e[e.INVALID_ARGUMENT=7]=`INVALID_ARGUMENT`,e[e.TOO_MANY_REQUESTS=8]=`TOO_MANY_REQUESTS`,e[e.COMPLETION_FINISHED=9]=`COMPLETION_FINISHED`,e[e.LOGIN_FAILED=10]=`LOGIN_FAILED`,e[e.MOBILE_VERIFY_CODE_MISMATCH=11]=`MOBILE_VERIFY_CODE_MISMATCH`,e[e.MOBILE_VERIFY_CODE_NOT_FOUND_OR_EXPIRED=12]=`MOBILE_VERIFY_CODE_NOT_FOUND_OR_EXPIRED`,e[e.EMAIL_VERIFY_CODE_MISMATCH=13]=`EMAIL_VERIFY_CODE_MISMATCH`,e[e.EMAIL_VERIFY_CODE_NOT_FOUND_OR_EXPIRED=14]=`EMAIL_VERIFY_CODE_NOT_FOUND_OR_EXPIRED`,e[e.AUTHORIZE_CODE_ILLEGAL=15]=`AUTHORIZE_CODE_ILLEGAL`,e[e.LOGIN_TOKEN_PROCESSING_FAILED=16]=`LOGIN_TOKEN_PROCESSING_FAILED`,e[e.CURRENT_STATUS_CANNOT_OPERATE=100]=`CURRENT_STATUS_CANNOT_OPERATE`,e[e.ERROR_AGAIN=101]=`ERROR_AGAIN`,e[e.USER_NOT_FOUND=201]=`USER_NOT_FOUND`,e[e.USER_IS_ANONYMOUS=202]=`USER_IS_ANONYMOUS`,e[e.CHANGESET_REVISION_CONFILICT=5001]=`CHANGESET_REVISION_CONFILICT`,e[e.SNAPSHOT_INVALID_SNAPSHOT=6001]=`SNAPSHOT_INVALID_SNAPSHOT`,e[e.SNAPSHOT_HAS_BEEN_REMOVED=6002]=`SNAPSHOT_HAS_BEEN_REMOVED`,e[e.ENSURE_SNAPSHOT_EXECUTION=6003]=`ENSURE_SNAPSHOT_EXECUTION`,e[e.APPLY_REJECT=7001]=`APPLY_REJECT`,e[e.APPLY_NON_SEQUENTIAL_REVISION=7002]=`APPLY_NON_SEQUENTIAL_REVISION`,e[e.APPLY_REVISION_CONFILICT=7003]=`APPLY_REVISION_CONFILICT`,e[e.APPLY_PERMISSION_DENIED=7004]=`APPLY_PERMISSION_DENIED`,e[e.APPLY_DUPLICATED=7005]=`APPLY_DUPLICATED`,e[e.CONNECTOR_DATA_TOO_LARGE=8001]=`CONNECTOR_DATA_TOO_LARGE`,e[e.LICENSE_MAX_UNITS_EXCEEDED=9001]=`LICENSE_MAX_UNITS_EXCEEDED`,e[e.LICENSE_MAX_MEMBERS_PER_UNIT_EXCEEDED=9002]=`LICENSE_MAX_MEMBERS_PER_UNIT_EXCEEDED`,e[e.LICENSE_IMPORT_SIZE_EXCEEDED=9003]=`LICENSE_IMPORT_SIZE_EXCEEDED`,e[e.LICENSE_EXPORT_SIZE_EXCEEDED=9004]=`LICENSE_EXPORT_SIZE_EXCEEDED`,e[e.LICENSE_DISTRO_REJECTED=9005]=`LICENSE_DISTRO_REJECTED`,e[e.YUUMI_UNABLE_LOAD_URL=10001]=`YUUMI_UNABLE_LOAD_URL`,e[e.YUUMI_URL_COL_OUT_OF_RANGE=10002]=`YUUMI_URL_COL_OUT_OF_RANGE`,e[e.YUUMI_RATE_OVER_LIMIT=10003]=`YUUMI_RATE_OVER_LIMIT`,e[e.YUUMI_SUBSCRIPTION_NOT_FOUND=10004]=`YUUMI_SUBSCRIPTION_NOT_FOUND`,e[e.YUUMI_NO_CUBOID_FOR_QUESTION=10010]=`YUUMI_NO_CUBOID_FOR_QUESTION`,e[e.YUUMI_ASYNCIO_CANCELLED=10011]=`YUUMI_ASYNCIO_CANCELLED`,e[e.YUUMI_TABLE_NOT_FOUND_IN_UNIT=10012]=`YUUMI_TABLE_NOT_FOUND_IN_UNIT`,e[e.YUUMI_ALL_TABLES_IS_INVALID=10013]=`YUUMI_ALL_TABLES_IS_INVALID`,e[e.YUUMI_PROMPT_MAX_TOKENS_EXCEEDED=10014]=`YUUMI_PROMPT_MAX_TOKENS_EXCEEDED`,e[e.YUUMI_AI_RUN_FAILED=10015]=`YUUMI_AI_RUN_FAILED`,e[e.YUUMI_CONNECTOR_URL_NOT_FOUND=10016]=`YUUMI_CONNECTOR_URL_NOT_FOUND`,e[e.PY_RUNTIME_SCRIPT_ERROR=11001]=`PY_RUNTIME_SCRIPT_ERROR`,e[e.INVITE_CODE_HAS_BEEN_UES=12001]=`INVITE_CODE_HAS_BEEN_UES`,e[e.INVALID_INVITE_CODE=12002]=`INVALID_INVITE_CODE`,e[e.INVITE_CODE_REQUIRED=12003]=`INVITE_CODE_REQUIRED`,e[e.USER_NOT_INVITED_CODE=12004]=`USER_NOT_INVITED_CODE`,e[e.INVITE_CODE_ALREADY_BOUND=12005]=`INVITE_CODE_ALREADY_BOUND`,e[e.WECHAT_HAS_BEEN_BOUND=13001]=`WECHAT_HAS_BEEN_BOUND`,e[e.MOBILE_HAS_BEEN_BOUND=13002]=`MOBILE_HAS_BEEN_BOUND`,e[e.EMAIL_HAS_BEEN_BOUND=13003]=`EMAIL_HAS_BEEN_BOUND`,e[e.ENTITLE_CAN_NOT_BUY_LOWER_OTP=14001]=`ENTITLE_CAN_NOT_BUY_LOWER_OTP`,e[e.ENTITLE_UPDOWN_GRADE_NOT_SUPPORT=14002]=`ENTITLE_UPDOWN_GRADE_NOT_SUPPORT`,e[e.ENTITLE_DUP_SUBSCRIPTION=14003]=`ENTITLE_DUP_SUBSCRIPTION`,e[e.PAYMENT_CHANNEL_NOT_SUPPORT=14004]=`PAYMENT_CHANNEL_NOT_SUPPORT`,e[e.ENTITLE_INVALID_COUPON_CODE=14005]=`ENTITLE_INVALID_COUPON_CODE`,e[e.ENTITLE_COUPON_EXPIRED=14006]=`ENTITLE_COUPON_EXPIRED`,e[e.ENTITLE_COUPON_USED_UP=14007]=`ENTITLE_COUPON_USED_UP`,e[e.ENTITLE_USE_COUPON_NOT_1ST_TRADE=14008]=`ENTITLE_USE_COUPON_NOT_1ST_TRADE`,e[e.ENTITLE_CHAT_LIMIT_EXCEED=14101]=`ENTITLE_CHAT_LIMIT_EXCEED`,e[e.ENTITLE_REPORT_LIMIT_EXCEED=14102]=`ENTITLE_REPORT_LIMIT_EXCEED`,e[e.ENTITLE_INSUFFICIENT_QUOTA=14103]=`ENTITLE_INSUFFICIENT_QUOTA`,e[e.ENTITLE_NEED_BILLING_ADDRESS=14301]=`ENTITLE_NEED_BILLING_ADDRESS`,e[e.REDEMPTION_INVALID_CODE=15001]=`REDEMPTION_INVALID_CODE`,e[e.REDEMPTION_CODE_INACTIVE=15002]=`REDEMPTION_CODE_INACTIVE`,e[e.REDEMPTION_CODE_FULLY_REDEEMED=15003]=`REDEMPTION_CODE_FULLY_REDEEMED`,e[e.REDEMPTION_CODE_NOT_STARTED=15004]=`REDEMPTION_CODE_NOT_STARTED`,e[e.REDEMPTION_USER_NOT_ELIGIBLE=15005]=`REDEMPTION_USER_NOT_ELIGIBLE`,e[e.REDEMPTION_USER_REDEEM_TIMES_EXCEED=15006]=`REDEMPTION_USER_REDEEM_TIMES_EXCEED`,e[e.REDEMPTION_CODE_HAS_BEEN_CREATED=15007]=`REDEMPTION_CODE_HAS_BEEN_CREATED`,e[e.DATA_SOURCE_TOO_LARGE=16001]=`DATA_SOURCE_TOO_LARGE`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(ge||{}),_e=(e=>(e[e.UNIVER_UNKNOWN=0]=`UNIVER_UNKNOWN`,e[e.UNIVER_DOC=1]=`UNIVER_DOC`,e[e.UNIVER_SHEET=2]=`UNIVER_SHEET`,e[e.UNIVER_SLIDE=3]=`UNIVER_SLIDE`,e[e.UNIVER_PROJECT=4]=`UNIVER_PROJECT`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(_e||{}),ve=(e=>(e[e.UNDEFINED=0]=`UNDEFINED`,e[e.TEXT=1]=`TEXT`,e[e.URL=2]=`URL`,e[e.IMAGE=3]=`IMAGE`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(ve||{}),K=(e=>(e[e.View=0]=`View`,e[e.Edit=1]=`Edit`,e[e.ManageCollaborator=2]=`ManageCollaborator`,e[e.Print=3]=`Print`,e[e.Duplicate=4]=`Duplicate`,e[e.Comment=5]=`Comment`,e[e.Copy=6]=`Copy`,e[e.Share=7]=`Share`,e[e.Export=8]=`Export`,e[e.MoveWorksheet=9]=`MoveWorksheet`,e[e.DeleteWorksheet=10]=`DeleteWorksheet`,e[e.HideWorksheet=11]=`HideWorksheet`,e[e.RenameWorksheet=12]=`RenameWorksheet`,e[e.CreateWorksheet=13]=`CreateWorksheet`,e[e.SetWorksheetStyle=14]=`SetWorksheetStyle`,e[e.EditWorksheetCell=15]=`EditWorksheetCell`,e[e.InsertHyperlink=16]=`InsertHyperlink`,e[e.Sort=17]=`Sort`,e[e.Filter=18]=`Filter`,e[e.PivotTable=19]=`PivotTable`,e[e.FloatImg=20]=`FloatImg`,e[e.History=21]=`History`,e[e.RwHgtClWdt=22]=`RwHgtClWdt`,e[e.ViemRwHgtClWdt=23]=`ViemRwHgtClWdt`,e[e.ViewFilter=24]=`ViewFilter`,e[e.MoveSheet=25]=`MoveSheet`,e[e.DeleteSheet=26]=`DeleteSheet`,e[e.HideSheet=27]=`HideSheet`,e[e.CopySheet=28]=`CopySheet`,e[e.RenameSheet=29]=`RenameSheet`,e[e.CreateSheet=30]=`CreateSheet`,e[e.SelectProtectedCells=31]=`SelectProtectedCells`,e[e.SelectUnProtectedCells=32]=`SelectUnProtectedCells`,e[e.SetCellStyle=33]=`SetCellStyle`,e[e.SetCellValue=34]=`SetCellValue`,e[e.SetRowStyle=35]=`SetRowStyle`,e[e.SetColumnStyle=36]=`SetColumnStyle`,e[e.InsertRow=37]=`InsertRow`,e[e.InsertColumn=38]=`InsertColumn`,e[e.DeleteRow=39]=`DeleteRow`,e[e.DeleteColumn=40]=`DeleteColumn`,e[e.EditExtraObject=41]=`EditExtraObject`,e[e.Delete=42]=`Delete`,e[e.RecoverHistory=43]=`RecoverHistory`,e[e.ViewHistory=44]=`ViewHistory`,e[e.CreatePermissionObject=45]=`CreatePermissionObject`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(K||{}),ye=(e=>(e[e.Reader=0]=`Reader`,e[e.Editor=1]=`Editor`,e[e.Owner=2]=`Owner`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(ye||{}),be=(e=>(e[e.Unkonwn=0]=`Unkonwn`,e[e.Workbook=1]=`Workbook`,e[e.Worksheet=2]=`Worksheet`,e[e.SelectRange=3]=`SelectRange`,e[e.Document=4]=`Document`,e[e.Slide=5]=`Slide`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(be||{}),xe=(e=>(e[e.Private=0]=`Private`,e[e.Public=1]=`Public`,e[e.Organization=2]=`Organization`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(xe||{}),Se=(e=>(e[e.SomeCollaborator=0]=`SomeCollaborator`,e[e.AllCollaborator=1]=`AllCollaborator`,e[e.OneSelf=2]=`OneSelf`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(Se||{}),Ce=(e=>(e[e.UNKNOWN=0]=`UNKNOWN`,e[e.STRING=1]=`STRING`,e[e.NUMBER=2]=`NUMBER`,e[e.BOOLEAN=3]=`BOOLEAN`,e[e.FORCE_STRING=4]=`FORCE_STRING`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(Ce||{}),we=(e=>(e[e.Unknown=0]=`Unknown`,e[e.Colla=1]=`Colla`,e[e.Import=2]=`Import`,e[e.Export=3]=`Export`,e[e.CreateUnit=4]=`CreateUnit`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(we||{}),Te=(e=>(e[e.valueBetween=0]=`valueBetween`,e[e.valueEqual=1]=`valueEqual`,e[e.valueGreaterThan=2]=`valueGreaterThan`,e[e.valueGreaterThanOrEqual=3]=`valueGreaterThanOrEqual`,e[e.valueLessThan=4]=`valueLessThan`,e[e.valueLessThanOrEqual=5]=`valueLessThanOrEqual`,e[e.valueNotBetween=6]=`valueNotBetween`,e[e.valueNotEqual=7]=`valueNotEqual`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(Te||{}),Ee=(e=>(e[e.DataFragmentationType_None=0]=`DataFragmentationType_None`,e[e.DataFragmentationType_Charts=1]=`DataFragmentationType_Charts`,e[e.DataFragmentationType_Unit=2]=`DataFragmentationType_Unit`,e[e.DataFragmentationType_WorkSheetRef=3]=`DataFragmentationType_WorkSheetRef`,e[e.DataFragmentationType_Code=4]=`DataFragmentationType_Code`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(Ee||{}),De=(e=>(e[e.AnalyseTaskStatus_None=0]=`AnalyseTaskStatus_None`,e[e.AnalyseTaskStatus_Analysing=1]=`AnalyseTaskStatus_Analysing`,e[e.AnalyseTaskStatus_Failed=2]=`AnalyseTaskStatus_Failed`,e[e.AnalyseTaskStatus_Completed=3]=`AnalyseTaskStatus_Completed`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(De||{}),Oe=(e=>(e[e.UNKNOWN_CMD=0]=`UNKNOWN_CMD`,e[e.HELLO=1]=`HELLO`,e[e.JOIN=2]=`JOIN`,e[e.LEAVE=3]=`LEAVE`,e[e.INGEST=4]=`INGEST`,e[e.HEARTBEAT=5]=`HEARTBEAT`,e[e.RECV=6]=`RECV`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(Oe||{}),ke=(e=>(e[e.UNKNOWN_CODE=0]=`UNKNOWN_CODE`,e[e.OK=1]=`OK`,e[e.FAIL=2]=`FAIL`,e[e.JOIN_ROOM_FULL=1001]=`JOIN_ROOM_FULL`,e[e.JOIN_ROOM_NOT_EXISTS=1002]=`JOIN_ROOM_NOT_EXISTS`,e[e.JOIN_ROOM_PERMISSION_DENIED=1003]=`JOIN_ROOM_PERMISSION_DENIED`,e[e.GLOBAL_ROOMS_CNT_EXCEEDS=1004]=`GLOBAL_ROOMS_CNT_EXCEEDS`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(ke||{}),Ae=(e=>(e[e.Completion_None=0]=`Completion_None`,e[e.Completion_Completed=1]=`Completion_Completed`,e[e.Completion_UserCancelled=2]=`Completion_UserCancelled`,e[e.Completion_SystemErr=3]=`Completion_SystemErr`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(Ae||{}),je=(e=>(e[e.RoleType_None=0]=`RoleType_None`,e[e.RoleType_User=1]=`RoleType_User`,e[e.RoleType_Agent=2]=`RoleType_Agent`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(je||{}),Me=(e=>(e[e.ContentBlockType_None=0]=`ContentBlockType_None`,e[e.ContentBlockType_Prompt=1]=`ContentBlockType_Prompt`,e[e.ContentBlockType_Thinking=2]=`ContentBlockType_Thinking`,e[e.ContentBlockType_Report=3]=`ContentBlockType_Report`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(Me||{}),Ne=(e=>(e[e.ContentType_None=0]=`ContentType_None`,e[e.ContentType_PlainText=1]=`ContentType_PlainText`,e[e.ContentType_Markdown=2]=`ContentType_Markdown`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(Ne||{}),Pe=(e=>(e[e.AttachmentType_None=0]=`AttachmentType_None`,e[e.AttachmentType_Unit=1]=`AttachmentType_Unit`,e[e.AttachmentType_Recommendation=3]=`AttachmentType_Recommendation`,e[e.AttachmentType_DataSource=4]=`AttachmentType_DataSource`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(Pe||{}),Fe=(e=>(e[e.Reaction_NoReact=0]=`Reaction_NoReact`,e[e.Reaction_ThumbsUp=1]=`Reaction_ThumbsUp`,e[e.Reaction_ThumbsDown=2]=`Reaction_ThumbsDown`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(Fe||{}),Ie=(e=>(e[e.ChatSSEBlockType_None=0]=`ChatSSEBlockType_None`,e[e.ChatSSEBlockType_EndOfStream=1]=`ChatSSEBlockType_EndOfStream`,e[e.ChatSSEBlockType_Reject=2]=`ChatSSEBlockType_Reject`,e[e.ChatSSEBlockType_ModConversation=3]=`ChatSSEBlockType_ModConversation`,e[e.ChatSSEBlockType_PromptAck=4]=`ChatSSEBlockType_PromptAck`,e[e.ChatSSEBlockType_ChatContent=5]=`ChatSSEBlockType_ChatContent`,e[e.ChatSSEBlockType_Attachment=6]=`ChatSSEBlockType_Attachment`,e[e.ChatSSEBlockType_RespMeta=7]=`ChatSSEBlockType_RespMeta`,e[e.ChatSSEBlockType_StreamErr=8]=`ChatSSEBlockType_StreamErr`,e[e.ChatSSEBlockType_ChatThinking=9]=`ChatSSEBlockType_ChatThinking`,e[e.ChatSSEBlockType_Fragmentation=10]=`ChatSSEBlockType_Fragmentation`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(Ie||{}),Le=(e=>(e[e.ChatSSEStatus_None=0]=`ChatSSEStatus_None`,e[e.ChatSSEStatus_Appending=1]=`ChatSSEStatus_Appending`,e[e.ChatSSEStatus_Success=2]=`ChatSSEStatus_Success`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(Le||{}),Re=(e=>(e[e.UNDEFINED=0]=`UNDEFINED`,e[e.UNIT=1]=`UNIT`,e[e.JSON=2]=`JSON`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(Re||{}),ze=(e=>(e[e.ImportScene_Unspecified=0]=`ImportScene_Unspecified`,e[e.ImportScene_General=1]=`ImportScene_General`,e[e.ImportScene_AIAnalyse=2]=`ImportScene_AIAnalyse`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(ze||{}),Be=(e=>(e[e.Undefined=0]=`Undefined`,e[e.HttpImport=1]=`HttpImport`,e[e.HttpExport=2]=`HttpExport`,e[e.UnitEmbedded=3]=`UnitEmbedded`,e[e.UnitSnapshot=4]=`UnitSnapshot`,e[e.UserProfileImg=5]=`UserProfileImg`,e[e.ClipsheetFragments=6]=`ClipsheetFragments`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(Be||{}),Ve=(e=>(e[e.UNDEFINED_ENV=0]=`UNDEFINED_ENV`,e[e.NODE=1]=`NODE`,e[e.BROWSER=2]=`BROWSER`,e[e.PYTHON=3]=`PYTHON`,e[e.REQUIREMENTS_TXT=4]=`REQUIREMENTS_TXT`,e[e.WORKSPACE_ENV_VARS=5]=`WORKSPACE_ENV_VARS`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(Ve||{}),He=(e=>(e[e.UNKNOWN=0]=`UNKNOWN`,e[e.ROOT=1]=`ROOT`,e[e.TRASH=2]=`TRASH`,e[e.DEBUG=3]=`DEBUG`,e[e.AI_STASH=4]=`AI_STASH`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e))(He||{});let q=class extends t.Disposable{constructor(e,t,n){super(),this._univerInstanceService=e,this._permissionService=t,this._lexerTreeBuilder=n}getFormulaRefCheck(e){let n=this._lexerTreeBuilder.sequenceNodesBuilder(e);if(!n)return!0;for(let e=0;e<n.length;e++){let o=n[e];if(typeof o==`string`)continue;let{token:s}=o,c=(0,r.deserializeRangeWithSheetWithCache)(s),l=this._univerInstanceService.getCurrentUnitForType(t.UniverInstanceType.UNIVER_SHEET),u=l.getActiveSheet(),d=l.getUnitId();if(c.sheetName){if(u=l.getSheetBySheetName(c.sheetName),!u)return!1;let e=u==null?void 0:u.getSheetId();if(!this._permissionService.getPermissionPoint(new i.WorksheetViewPermission(d,e).id))return!1}if(!u)return!1;let{startRow:f,endRow:p,startColumn:m,endColumn:h}=c.range;for(let e=f;e<=p;e++)for(let t=m;t<=h;t++){var a;let n=(a=u.getCell(e,t))==null||(a=a.selectionProtection)==null?void 0:a[0];if((n==null?void 0:n[K.View])===!1)return!1}}return!0}};q=f([d(0,t.IUniverInstanceService),d(1,t.IPermissionService),d(2,(0,t.Inject)(r.LexerTreeBuilder))],q);var Ue=`@univerjs/sheets-data-validation`,We=`0.18.0`;let Ge=`sheets-data-validation.config`;Symbol(Ge);let Ke={},J=class extends t.Disposable{constructor(e,t,n){super(),this._dataValidationModel=e,this._formulaRefRangeService=t,this._validatorRegistryService=n,u(this,`_disposableMap`,new Map),u(this,`registerRule`,(e,t,n)=>{_(n.type,this._validatorRegistryService)&&this.register(e,t,n)}),this._initRefRange()}_getIdWithUnitId(e,t,n){return`${e}_${t}_${n}`}register(e,r,i){let a=i.ranges,o=i.formula1,s=i.formula2,c=this._formulaRefRangeService.registerRangeFormula(e,r,a,[o==null?``:o,s==null?``:s],c=>{if(c.length===0)return{undos:[{id:n.AddDataValidationMutation.id,params:{unitId:e,subUnitId:r,rule:i,source:`patched`}}],redos:[{id:n.RemoveDataValidationMutation.id,params:{unitId:e,subUnitId:r,ruleId:i.uid,source:`patched`}}]};let l=[],u=[],d=c[0];l.push({id:n.UpdateDataValidationMutation.id,params:{unitId:e,subUnitId:r,ruleId:i.uid,payload:{type:n.UpdateRuleType.ALL,payload:{ranges:d.ranges,formula1:d.formulas[0],formula2:d.formulas[1]}},source:`patched`}}),u.push({id:n.UpdateDataValidationMutation.id,params:{unitId:e,subUnitId:r,ruleId:i.uid,payload:{type:n.UpdateRuleType.ALL,payload:{ranges:a,formula1:o,formula2:s}},source:`patched`}});for(let a=1;a<c.length;a++){let o=c[a],s=(0,t.generateRandomId)();l.push({id:n.AddDataValidationMutation.id,params:{unitId:e,subUnitId:r,rule:{...i,uid:s,formula1:o.formulas[0],formula2:o.formulas[1],ranges:o.ranges},source:`patched`}}),u.push({id:n.RemoveDataValidationMutation.id,params:{unitId:e,subUnitId:r,ruleId:s,source:`patched`}})}return{undos:u,redos:l}}),l=this._getIdWithUnitId(e,r,i.uid);this._disposableMap.set(l,c)}_initRefRange(){let e=this._dataValidationModel.getAll();for(let[t,n]of e)for(let[e,r]of n)for(let n of r)this.registerRule(t,e,n);this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(e=>{let{unitId:t,subUnitId:n,rule:r}=e;switch(e.type){case`add`:{let t=e.rule;this.registerRule(e.unitId,e.subUnitId,t);break}case`remove`:{let e=this._disposableMap.get(this._getIdWithUnitId(t,n,r.uid));e&&e.dispose();break}case`update`:{let r=e.rule,i=this._disposableMap.get(this._getIdWithUnitId(t,n,r.uid));i&&i.dispose(),this.registerRule(e.unitId,e.subUnitId,r);break}}})),this.disposeWithMe((0,t.toDisposable)(()=>{this._disposableMap.forEach(e=>{e.dispose()}),this._disposableMap.clear()}))}};J=f([d(0,(0,t.Inject)(T)),d(1,(0,t.Inject)(o.FormulaRefRangeService)),d(2,(0,t.Inject)(n.DataValidatorRegistryService))],J);let Y=class extends t.Disposable{constructor(e,t,n,r,i,a){super(),this._dataValidationModel=e,this._injector=t,this._refRangeService=n,this._dataValidationFormulaService=r,this._formulaRefRangeService=i,this._validatorRegistryService=a,u(this,`_disposableMap`,new Map),u(this,`registerRule`,(e,t,n)=>{_(n.type,this._validatorRegistryService)||(this.register(e,t,n),this.registerFormula(e,t,n))}),this._initRefRange()}_getIdWithUnitId(e,t,n){return`${e}_${t}_${n}`}registerFormula(e,t,r){var i;let a=r.uid,o=this._getIdWithUnitId(e,t,a),s=(i=this._disposableMap.get(o))==null?new Set:i,c=(i,o)=>{let s=this._dataValidationModel.getRuleById(e,t,a);if(!s)return{redos:[],undos:[]};let c=s[i];if(!c||c===o)return{redos:[],undos:[]};let l={unitId:e,subUnitId:t,ruleId:r.uid,payload:{type:n.UpdateRuleType.SETTING,payload:{type:s.type,formula1:s.formula1,formula2:s.formula2,[i]:o}},source:`patched`},u={unitId:e,subUnitId:t,ruleId:r.uid,payload:{type:n.UpdateRuleType.SETTING,payload:{type:s.type,formula1:s.formula1,formula2:s.formula2}},source:`patched`};return{redos:[{id:n.UpdateDataValidationMutation.id,params:l}],undos:[{id:n.UpdateDataValidationMutation.id,params:u}]}},l=this._dataValidationFormulaService.getRuleFormulaInfo(e,t,a);if(l){let[n,r]=l;if(n){let r=this._formulaRefRangeService.registerFormula(e,t,n.text,e=>c(`formula1`,e));s.add(()=>r.dispose())}if(r){let n=this._formulaRefRangeService.registerFormula(e,t,r.text,e=>c(`formula2`,e));s.add(()=>n.dispose())}}}register(e,r,a){var o;let s=o=>{let s=[...a.ranges],c=s.map(e=>(0,i.handleCommonDefaultRangeChangeWithEffectRefCommands)(e,o)).filter(e=>!!e).flat();if((0,t.isRangesEqual)(c,s))return{redos:[],undos:[]};if(c.length){let t={unitId:e,subUnitId:r,ruleId:a.uid,payload:{type:n.UpdateRuleType.RANGE,payload:c},source:`patched`};return{redos:[{id:n.UpdateDataValidationMutation.id,params:t}],undos:[{id:n.UpdateDataValidationMutation.id,params:{unitId:e,subUnitId:r,ruleId:a.uid,payload:{type:n.UpdateRuleType.RANGE,payload:s},source:`patched`}}]}}else{let t={unitId:e,subUnitId:r,ruleId:a.uid};return{redos:[{id:n.RemoveDataValidationMutation.id,params:t}],undos:pe(this._injector,t)}}},c=[];a.ranges.forEach(t=>{let n=this._refRangeService.registerRefRange(t,s,e,r);c.push(()=>n.dispose())});let l=this._getIdWithUnitId(e,r,a.uid),u=(o=this._disposableMap.get(l))==null?new Set:o;u.add(()=>c.forEach(e=>e())),this._disposableMap.set(l,u)}_initRefRange(){let e=this._dataValidationModel.getAll();for(let[t,n]of e)for(let[e,r]of n)for(let n of r)this.registerRule(t,e,n);this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(e=>{let{unitId:t,subUnitId:n,rule:r}=e;switch(e.type){case`add`:{let t=e.rule;this.registerRule(e.unitId,e.subUnitId,t);break}case`remove`:{let e=this._disposableMap.get(this._getIdWithUnitId(t,n,r.uid));e&&e.forEach(e=>e());break}case`update`:{let r=e.rule,i=this._disposableMap.get(this._getIdWithUnitId(t,n,r.uid));i&&i.forEach(e=>e()),this.registerRule(e.unitId,e.subUnitId,r);break}}})),this.disposeWithMe((0,t.toDisposable)(()=>{this._disposableMap.forEach(e=>{e.forEach(e=>e())}),this._disposableMap.clear()}))}};Y=f([d(0,(0,t.Inject)(T)),d(1,(0,t.Inject)(t.Injector)),d(2,(0,t.Inject)(i.RefRangeService)),d(3,(0,t.Inject)(w)),d(4,(0,t.Inject)(o.FormulaRefRangeService)),d(5,(0,t.Inject)(n.DataValidatorRegistryService))],Y);let X=class extends t.Disposable{constructor(e,t,n){super(),this._sheetInterceptorService=e,this._univerInstanceService=t,this._sheetDataValidationModel=n,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===i.RemoveSheetCommand.id){var r;let i=e.params,a=i.unitId||this._univerInstanceService.getCurrentUnitForType(t.UniverInstanceType.UNIVER_SHEET).getUnitId(),o=this._univerInstanceService.getUniverSheetInstance(a);if(!o)return{redos:[],undos:[]};let s=i.subUnitId||((r=o.getActiveSheet())==null?void 0:r.getSheetId());if(!s)return{redos:[],undos:[]};let c=this._sheetDataValidationModel.getRules(a,s);if(c.length===0)return{redos:[],undos:[]};let l={unitId:a,subUnitId:s,ruleId:c.map(e=>e.uid),source:`patched`},u={unitId:a,subUnitId:s,rule:[...c],source:`patched`};return{redos:[{id:n.RemoveDataValidationMutation.id,params:l}],undos:[{id:n.AddDataValidationMutation.id,params:u}]}}else if(e.id===i.CopySheetCommand.id){let{unitId:r,subUnitId:i,targetSubUnitId:a}=e.params;if(!r||!i||!a)return{redos:[],undos:[]};let o=this._sheetDataValidationModel.getRules(r,i);if(o.length===0)return{redos:[],undos:[]};let s=o.map(e=>({...e,uid:(0,t.generateRandomId)(6)}));return{redos:[{id:n.AddDataValidationMutation.id,params:{unitId:r,subUnitId:a,rule:s,source:`patched`}}],undos:[{id:n.RemoveDataValidationMutation.id,params:{unitId:r,subUnitId:a,ruleId:s.map(e=>e.uid),source:`patched`}}]}}return{redos:[],undos:[]}}}))}};X=f([d(0,(0,t.Inject)(i.SheetInterceptorService)),d(1,(0,t.Inject)(t.IUniverInstanceService)),d(2,(0,t.Inject)(T))],X);var qe=class extends n.BaseDataValidator{constructor(...e){super(...e),u(this,`id`,t.DataValidationType.ANY),u(this,`title`,`dataValidation.any.title`),u(this,`operators`,[]),u(this,`scopes`,[`sheet`]),u(this,`order`,0),u(this,`offsetFormulaByRange`,!1)}async parseFormula(e,t,n){return{formula1:e.formula1,formula2:e.formula2,isFormulaValid:!0}}validatorFormula(e,t,n){return{success:!0}}async isValidType(e,t,n){return!0}generateRuleErrorMessage(e){return this.localeService.t(`dataValidation.any.error`)}},Je=class extends n.BaseDataValidator{constructor(...e){super(...e),u(this,`id`,t.DataValidationType.CUSTOM),u(this,`title`,`dataValidation.custom.title`),u(this,`operators`,[]),u(this,`scopes`,[`sheet`]),u(this,`order`,60),u(this,`_customFormulaService`,this.injector.get(v)),u(this,`_lexerTreeBuilder`,this.injector.get(r.LexerTreeBuilder))}validatorFormula(e,n,i){var a;let o=(0,t.isFormulaString)(e.formula1),s=(a=e.formula1)==null?``:a,c=this._lexerTreeBuilder.checkIfAddBracket(s)===0&&s.startsWith(r.operatorToken.EQUALS);return{success:o&&c,formula1:o&&c?``:this.localeService.t(`dataValidation.validFail.formula`)}}async parseFormula(e,t,n){return{formula1:void 0,formula2:void 0,isFormulaValid:!0}}async isValidType(e,n,r){let{column:i,row:a,unitId:o,subUnitId:s}=e,c=await this._customFormulaService.getCellFormulaValue(o,s,r.uid,a,i),l=c==null?void 0:c.v;return g(String(l))&&t.Tools.isDefine(l)&&l!==``?c.t===t.CellValueType.BOOLEAN?!!l:typeof l==`boolean`?l:typeof l==`number`?!!l:typeof l==`string`?g(l):!!l:!1}generateRuleErrorMessage(e){return this.localeService.t(`dataValidation.custom.error`)}generateRuleName(e){var t;return this.localeService.t(`dataValidation.custom.ruleName`).replace(`{FORMULA1}`,(t=e.formula1)==null?``:t)}},Ye=class extends F{constructor(...e){super(...e),u(this,`id`,t.DataValidationType.LIST_MULTIPLE),u(this,`title`,`dataValidation.listMultiple.title`),u(this,`offsetFormulaByRange`,!1),u(this,`skipDefaultFontRender`,()=>!0)}},Xe=class extends n.BaseDataValidator{constructor(...e){super(...e),u(this,`_customFormulaService`,this.injector.get(v)),u(this,`_lexerTreeBuilder`,this.injector.get(r.LexerTreeBuilder)),u(this,`id`,t.DataValidationType.WHOLE),u(this,`title`,`dataValidation.whole.title`),u(this,`order`,10),u(this,`operators`,[t.DataValidationOperator.BETWEEN,t.DataValidationOperator.EQUAL,t.DataValidationOperator.GREATER_THAN,t.DataValidationOperator.GREATER_THAN_OR_EQUAL,t.DataValidationOperator.LESS_THAN,t.DataValidationOperator.LESS_THAN_OR_EQUAL,t.DataValidationOperator.NOT_BETWEEN,t.DataValidationOperator.NOT_EQUAL]),u(this,`scopes`,[`sheet`])}_isFormulaOrInt(e){return!t.Tools.isBlank(e)&&((0,t.isFormulaString)(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}async isValidType(e,t,n){let{value:r}=e,i=P(r);return!Number.isNaN(i)&&Number.isInteger(i)}transform(e,t,n){let{value:r}=e;return{...e,value:P(r)}}_parseNumber(e){return e==null?NaN:+e}async parseFormula(e,n,r,i,a){let o=await this._customFormulaService.getCellFormulaValue(n,r,e.uid,i,a),s=await this._customFormulaService.getCellFormula2Value(n,r,e.uid,i,a),{formula1:c,formula2:l}=e,u=(0,t.isFormulaString)(c)?o==null?void 0:o.v:c,d=(0,t.isFormulaString)(l)?s==null?void 0:s.v:l,f=g(`${u}`)&&g(`${d}`);return{formula1:this._parseNumber(u),formula2:this._parseNumber(d),isFormulaValid:f}}validatorFormula(e,n,r){let i=e.operator;if(!i)return{success:!0};let a=t.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),o=t.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),s=k.includes(i),c=this.localeService.t(`dataValidation.validFail.number`);return s?{success:a&&o,formula1:a?void 0:c,formula2:o?void 0:c}:{success:a,formula1:c}}generateRuleErrorMessage(e,t){if(!e.operator)return this.localeService.t(N.NONE).replace(`{TYPE}`,this.titleStr);let{transformedFormula1:n,transformedFormula2:r}=S(this._lexerTreeBuilder,e,t);return`${this.localeService.t(N[e.operator]).replace(A,n==null?``:n).replace(j,r==null?``:r)}`}};let Z=class extends t.RxDisposable{constructor(e,t,n,r,i,a){super(),this._univerInstanceService=e,this._dataValidatorRegistryService=t,this._injector=n,this._selectionManagerService=r,this._sheetInterceptorService=i,this._sheetDataValidationModel=a,this._init()}_init(){this._registerValidators(),this._initCommandInterceptor()}_registerValidators(){[qe,se,Xe,fe,oe,D,F,Ye,Je].forEach(e=>{let n=this._injector.createInstance(e);this.disposeWithMe(this._dataValidatorRegistryService.register(n)),this.disposeWithMe((0,t.toDisposable)(()=>this._injector.delete(e)))})}_initCommandInterceptor(){this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===i.ClearSelectionAllCommand.id){var n;let e=this._univerInstanceService.getCurrentUnitForType(t.UniverInstanceType.UNIVER_SHEET),r=e.getUnitId(),i=e.getActiveSheet();if(!i)throw Error(`No active sheet found`);let a=i.getSheetId(),o=(n=this._selectionManagerService.getCurrentSelections())==null?void 0:n.map(e=>e.range),s=this._sheetDataValidationModel.getRuleObjectMatrix(r,a).clone();o&&s.removeRange(o);let{redoMutations:c,undoMutations:l}=L(r,a,s.diff(this._sheetDataValidationModel.getRules(r,a)),this._injector,`patched`);return{undos:l,redos:c}}return{undos:[],redos:[]}}})}};Z=f([d(0,t.IUniverInstanceService),d(1,(0,t.Inject)(n.DataValidatorRegistryService)),d(2,(0,t.Inject)(t.Injector)),d(3,(0,t.Inject)(i.SheetsSelectionsService)),d(4,(0,t.Inject)(i.SheetInterceptorService)),d(5,(0,t.Inject)(T))],Z);let Q=class extends t.Disposable{constructor(e,t,n,r){super(),this._univerInstanceService=e,this._sheetDataValidationModel=t,this._dataValidationCacheService=n,this._lifecycleService=r,this._initRecalculate()}_initRecalculate(){let e=e=>{if(e.length===0)return;let n=this._univerInstanceService.getCurrentUnitForType(t.UniverInstanceType.UNIVER_SHEET),r=n==null?void 0:n.getActiveSheet(),i={};e.flat().forEach(e=>{i[e.unitId]||(i[e.unitId]={}),i[e.unitId][e.subUnitId]||(i[e.unitId][e.subUnitId]=[]);let n=this._univerInstanceService.getUnit(e.unitId,t.UniverInstanceType.UNIVER_SHEET),r=n==null?void 0:n.getSheetBySheetId(e.subUnitId);r&&i[e.unitId][e.subUnitId].push(...e.ranges.map(e=>t.Range.transformRange(e,r)))}),Object.entries(i).forEach(([e,t])=>{Object.entries(t).forEach(([t,i])=>{(n==null?void 0:n.getUnitId())===e&&(r==null?void 0:r.getSheetId())===t?this.validatorRanges(e,t,i):requestIdleCallback(()=>{this.validatorRanges(e,t,i)})})})};this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.pipe((0,a.bufferWhen)(()=>this._lifecycleService.lifecycle$.pipe((0,a.filter)(e=>e===t.LifecycleStages.Rendered)))).subscribe(e)),this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.pipe((0,a.filter)(()=>this._lifecycleService.stage>=t.LifecycleStages.Rendered),(0,t.bufferDebounceTime)(20)).subscribe(e))}async _validatorByCell(e,n,r,i){let a=e.getUnitId(),o=n.getSheetId();if(!t.Tools.isDefine(r)||!t.Tools.isDefine(i))throw Error(`row or col is not defined, row: ${r}, col: ${i}`);let s=r,c=i,l=n.getMergedCell(r,i);l&&(s=l.startRow,c=l.startColumn);let u=this._sheetDataValidationModel.getRuleByLocation(a,o,s,c);return u?new Promise(t=>{this._sheetDataValidationModel.validator(u,{unitId:a,subUnitId:o,row:s,col:c,worksheet:n,workbook:e},e=>{t(e)})}):t.DataValidationStatus.VALID}async validatorCell(e,n,r,i){let a=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_SHEET);if(!a)throw Error(`cannot find current workbook, unitId: ${e}`);let o=a.getSheetBySheetId(n);if(!o)throw Error(`cannot find current worksheet, sheetId: ${n}`);return this._validatorByCell(a,o,r,i)}async validatorRanges(e,n,r){if(!r.length)return Promise.resolve([]);let i=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_SHEET);if(!i)throw Error(`cannot find current workbook, unitId: ${e}`);let a=i.getSheetBySheetId(n);if(!a)throw Error(`cannot find current worksheet, sheetId: ${n}`);let o=this._sheetDataValidationModel.getRules(e,n).map(e=>e.ranges).flat(),s=r.map(e=>o.map(n=>(0,t.getIntersectRange)(e,n))).flat().filter(Boolean),c=[],l=await Promise.all(s.map((e,t)=>{let n=[];for(let r=e.startRow;r<=e.endRow;r++)for(let o=e.startColumn;o<=e.endColumn;o++){n.push(this._validatorByCell(i,a,r,o));let e=a.getMergedCell(r,o);e&&c.push({resultRowIndex:t,resultColIndex:n.length-1,row:e.startRow,col:e.startColumn})}return Promise.all(n)}));return c.length&&c.forEach(({resultRowIndex:r,resultColIndex:i,row:a,col:o})=>{if(l[r][i]===t.DataValidationStatus.VALIDATING){var s;l[r][i]=(s=this._dataValidationCacheService.getValue(e,n,a,o))==null?t.DataValidationStatus.VALID:s}}),l}async validatorWorksheet(e,n){let r=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_SHEET);if(!r)throw Error(`cannot find current workbook, unitId: ${e}`);let i=r.getSheetBySheetId(n);if(!i)throw Error(`cannot find current worksheet, sheetId: ${n}`);let a=this._sheetDataValidationModel.getRules(e,n);return await Promise.all(a.map(e=>Promise.all(e.ranges.map(e=>{let n=[];return t.Range.foreach(e,(e,t)=>{n.push(this._validatorByCell(r,i,e,t))}),Promise.all(n)})))),this._dataValidationCacheService.ensureCache(e,n)}async validatorWorkbook(e){let t=this._sheetDataValidationModel.getSubUnitIds(e),n=await Promise.all(t.map(t=>this.validatorWorksheet(e,t))),r={};return n.forEach((e,n)=>{r[t[n]]=e}),r}getDataValidations(e,n,r){let i=this._sheetDataValidationModel.getRuleObjectMatrix(e,n),a=new Set;return r.forEach(e=>{t.Range.foreach(e,(e,t)=>{let n=i.getValue(e,t);n&&a.add(n)})}),Array.from(a).map(t=>this._sheetDataValidationModel.getRuleById(e,n,t)).filter(Boolean)}getDataValidation(e,t,n){return this.getDataValidations(e,t,n)[0]}};Q=f([d(0,t.IUniverInstanceService),d(1,(0,t.Inject)(T)),d(2,(0,t.Inject)(p)),d(3,(0,t.Inject)(t.LifecycleService))],Q);let $=class extends t.Plugin{constructor(e=Ke,n,r,i){super(),this._config=e,this._injector=n,this._commandService=r,this._configService=i;let{...a}=(0,t.merge)({},Ke,this._config);this._configService.setConfig(Ge,a)}onStarting(){[[p],[C],[w],[v],[Q],[T],[Z],[q],[X],[Y],[J]].forEach(e=>{this._injector.add(e)}),[z,R,B,V,W,U,H].forEach(e=>{this._commandService.registerCommand(e)}),this._injector.get(p),this._injector.get(Q),this._injector.get(Z),this._injector.get(J),this._injector.get(Y)}onReady(){this._injector.get(X)}onRendered(){this._injector.get(q)}};u($,`pluginName`,G),u($,`packageName`,Ue),u($,`version`,We),u($,`type`,t.UniverInstanceType.UNIVER_SHEET),$=f([(0,t.DependentOn)(o.UniverSheetsFormulaPlugin,n.UniverDataValidationPlugin),d(1,(0,t.Inject)(t.Injector)),d(2,t.ICommandService),d(3,t.IConfigService)],$);function Ze(e){let n=e.get(i.SheetsSelectionsService).getCurrentSelections().map(e=>e.range);return{uid:(0,t.generateRandomId)(6),type:t.DataValidationType.DECIMAL,operator:t.DataValidationOperator.EQUAL,formula1:`100`,ranges:n==null?[{startColumn:0,endColumn:0,startRow:0,endRow:0}]:n}}e.AddSheetDataValidationCommand=z,e.BASE_FORMULA_INPUT_NAME=`data-validation.formula-input`,e.CHECKBOX_FORMULA_1=1,e.CHECKBOX_FORMULA_2=0,e.CHECKBOX_FORMULA_INPUT_NAME=`data-validation.checkbox-formula-input`,e.CUSTOM_FORMULA_INPUT_NAME=`data-validation.custom-formula-input`,e.CheckboxValidator=D,e.ClearRangeDataValidationCommand=H,e.DATA_VALIDATION_PLUGIN_NAME=G,Object.defineProperty(e,`DataValidationCacheService`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(e,`DataValidationCustomFormulaService`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(e,`DataValidationFormulaController`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(e,`DataValidationFormulaService`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(e,`DataValidationListCacheService`,{enumerable:!0,get:function(){return C}}),e.DateValidator=oe,e.LIST_FORMULA_INPUT_NAME=`data-validation.list-formula-input`,e.ListMultipleValidator=Ye,e.ListValidator=F,e.RemoveSheetAllDataValidationCommand=U,e.RemoveSheetDataValidationCommand=W,Object.defineProperty(e,`SheetDataValidationModel`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(e,`SheetsDataValidationValidatorService`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,`UniverSheetsDataValidationPlugin`,{enumerable:!0,get:function(){return $}}),e.UpdateSheetDataValidationOptionsCommand=V,e.UpdateSheetDataValidationRangeCommand=R,e.UpdateSheetDataValidationSettingCommand=B,e.createDefaultNewRule=Ze,e.deserializeListOptions=x,e.getCellValueNumber=P,e.getCellValueOrigin=y,e.getDataValidationCellValue=te,e.getDataValidationDiffMutations=L,e.getFormulaCellData=h,e.getFormulaResult=m,e.getTransformedFormula=S,e.isLegalFormulaResult=g,e.serializeListOptions=b,e.transformCheckboxValue=E});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/sheets-data-validation",
3
- "version": "0.17.0",
3
+ "version": "0.18.0",
4
4
  "private": false,
5
5
  "description": "Data validation for Univer Sheets",
6
6
  "author": "DreamNum <developer@univer.ai>",
@@ -59,25 +59,26 @@
59
59
  },
60
60
  "dependencies": {
61
61
  "@univerjs/protocol": "0.1.48",
62
- "@univerjs/sheets": "0.17.0",
63
- "@univerjs/engine-formula": "0.17.0",
64
- "@univerjs/data-validation": "0.17.0",
65
- "@univerjs/sheets-formula": "0.17.0",
66
- "@univerjs/core": "0.17.0"
62
+ "@univerjs/core": "0.18.0",
63
+ "@univerjs/data-validation": "0.18.0",
64
+ "@univerjs/sheets": "0.18.0",
65
+ "@univerjs/engine-formula": "0.18.0",
66
+ "@univerjs/sheets-formula": "0.18.0"
67
67
  },
68
68
  "devDependencies": {
69
69
  "rxjs": "^7.8.2",
70
70
  "typescript": "^5.9.3",
71
- "vite": "^7.3.1",
72
- "vitest": "^4.0.18",
73
- "@univerjs-infra/shared": "0.17.0"
71
+ "vitest": "^4.1.0",
72
+ "@univerjs-infra/shared": "0.18.0"
74
73
  },
75
74
  "scripts": {
76
75
  "dev": "vite",
77
76
  "test": "vitest run",
78
77
  "test:watch": "vitest",
79
78
  "coverage": "vitest run --coverage",
80
- "build": "univer-cli build",
79
+ "build:bundle": "univer-cli build",
80
+ "build:types": "tsc -p tsconfig.node.json",
81
+ "build": "pnpm run build:bundle && pnpm run build:types",
81
82
  "typecheck": "tsc --noEmit"
82
83
  },
83
84
  "module": "./lib/es/index.js"