@univerjs/sheets-data-validation 0.19.0 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- import{CellValueType as e,CommandType as t,DataValidationOperator as n,DataValidationRenderMode as r,DataValidationStatus as i,DataValidationType as a,DependentOn as o,Disposable as s,ICommandService as c,IConfigService as l,IPermissionService as u,IUndoRedoService as d,IUniverInstanceService as f,Inject as p,Injector as m,LifecycleService as h,LifecycleStages as g,ObjectMatrix as ee,Plugin as te,RBush as ne,Range as _,Rectangle as v,RxDisposable as re,Tools as y,UniverInstanceType as b,WrapStrategy as ie,bufferDebounceTime as ae,dayjs as oe,debounce as se,generateRandomId as ce,getIntersectRange as le,getOriginCellValue as ue,isFormulaString as x,isRangesEqual as de,merge as fe,numfmt as S,sequenceExecute as pe,toDisposable as me}from"@univerjs/core";import{AddDataValidationMutation as C,BaseDataValidator as w,DataValidationModel as T,DataValidatorRegistryService as E,RemoveDataValidationMutation as D,TextLengthErrorTitleMap as he,UniverDataValidationPlugin as ge,UpdateDataValidationMutation as O,UpdateRuleType as k,getRuleOptions as _e,getRuleSetting as ve}from"@univerjs/data-validation";import{ERROR_TYPE_SET as ye,LexerTreeBuilder as A,OtherFormulaBizType as be,RegisterOtherFormulaService as xe,deserializeRangeWithSheet as Se,deserializeRangeWithSheetWithCache as Ce,isReferenceString as we,operatorToken as Te,sequenceNodeType as Ee}from"@univerjs/engine-formula";import{ClearSelectionAllCommand as De,CopySheetCommand as Oe,RefRangeService as ke,RemoveSheetCommand as Ae,RemoveSheetMutation as je,SetRangeValuesMutation as j,SetRangeValuesUndoMutationFactory as Me,SheetInterceptorService as Ne,SheetsSelectionsService as Pe,WorksheetViewPermission as Fe,getSheetCommandTarget as Ie,handleCommonDefaultRangeChangeWithEffectRefCommands as Le}from"@univerjs/sheets";import{Subject as Re,bufferWhen as ze,filter as Be}from"rxjs";import{UnitAction as Ve}from"@univerjs/protocol";import{FormulaRefRangeService as He,UniverSheetsFormulaPlugin as Ue}from"@univerjs/sheets-formula";function M(e){"@babel/helpers - typeof";return M=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},M(e)}function We(e,t){if(M(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(M(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Ge(e){var t=We(e,`string`);return M(t)==`symbol`?t:t+``}function N(e,t,n){return(t=Ge(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function P(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 I=class extends s{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._sheetDataValidationModel=n,N(this,`_cacheMatrix`,new Map),N(this,`_dirtyRanges$`,new Re),N(this,`dirtyRanges$`,this._dirtyRanges$.asObservable()),this._initDirtyRanges(),this._initSheetRemove()}_initDirtyRanges(){this.disposeWithMe(this._commandService.onCommandExecuted((e,t)=>{if(e.id===j.id&&!(t!=null&&t.onlyLocal)){let{cellValue:t,unitId:n,subUnitId:r}=e.params;if(t){let e=new ee(t).getDataRange();if(e.endRow===-1)return;let i=this._sheetDataValidationModel.getRules(n,r).map(e=>e.ranges).flat().map(t=>le(t,e)).filter(Boolean);i.length&&this.markRangeDirty(n,r,i,!0)}}}))}_initSheetRemove(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===je.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===b.UNIVER_SHEET&&this._cacheMatrix.delete(e.getUnitId())}))}_ensureCache(e,t){let n=this._cacheMatrix.get(e);n||(n=new Map,this._cacheMatrix.set(e,n));let r=n.get(t);return r||(r=new ee,n.set(t,r)),r}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,t,n,r){let i=this._ensureCache(e,t);n.forEach(e=>{_.foreach(e,(e,t)=>{i.getValue(e,t)!==void 0&&i.setValue(e,t,void 0)})}),this._dirtyRanges$.next({unitId:e,subUnitId:t,ranges:n,isSetRange:r})}_deleteRange(e,t,n){let r=this._ensureCache(e,t);n.forEach(e=>{_.foreach(e,(e,t)=>{r.realDeleteValue(e,t)})}),this._dirtyRanges$.next({unitId:e,subUnitId:t,ranges:n})}getValue(e,t,n,r){return this._ensureCache(e,t).getValue(n,r)}};I=F([P(0,p(c)),P(1,p(f)),P(2,p(T))],I);function L(e){var t;return e==null||(t=e[0])==null||(t=t[0])==null?void 0:t.v}function R(e){var t;return e==null||(t=e[0])==null?void 0:t[0]}function z(e){return!ye.has(e)}function B(e,t){var n;let r=t.getValidatorItem(e);return(n=r==null?void 0:r.offsetFormulaByRange)==null?!1:n}let V=class extends s{constructor(e,t,n,r,i){super(),this._instanceSrv=e,this._registerOtherFormulaService=t,this._dataValidationModel=n,this._dataValidationCacheService=r,this._validatorRegistryService=i,N(this,`_ruleFormulaMap`,new Map),N(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 t in e){let n=e[t];if(this._instanceSrv.getUnitType(t)===b.UNIVER_SHEET)for(let e in n){let r=n[e],{ruleFormulaMap:i}=this._ensureMaps(t,e);r.forEach(n=>{var r,a;let o=i.get((r=n.extra)==null?void 0:r.ruleId),s=this._dataValidationModel.getRuleById(t,e,(a=n.extra)==null?void 0:a.ruleId);s&&o&&this._dataValidationCacheService.markRangeDirty(t,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,r,i){return this._registerOtherFormulaService.registerFormulaWithRange(e,t,r,i,{ruleId:n},be.DATA_VALIDATION_CUSTOM,n)}_handleDirtyRanges(e,t,n){this._dataValidationModel.getRules(e,t).forEach(r=>{let i=r.ranges;v.doAnyRangesIntersect(i,n)&&this.makeRuleDirty(e,t,r.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,t,n,r,i,a){let{ruleFormulaMap:o,ruleFormulaMap2:s}=this._ensureMaps(e,t),c=a[0].startRow,l=a[0].startColumn;if(r&&x(r)){let i=this._registerFormula(e,t,n,r,a);o.set(n,{formula:r,originCol:l,originRow:c,formulaId:i})}if(i&&x(i)){let r=this._registerFormula(e,t,n,i,a);s.set(n,{formula:i,originCol:l,originRow:c,formulaId:r})}}addRule(e,t,n){if(B(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 R(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 R(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 R(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 R(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([P(0,f),P(1,p(xe)),P(2,p(T)),P(3,p(I)),P(4,p(E))],V);function H(e){return ue(e)}function Ke(e){var t;return String((t=H(e))==null?``:t)}function qe(e){return e.filter(Boolean).join(`,`)}function U(e){return e.split(`,`).filter(Boolean)}function Je(e){let t=H(e);return t==null?``:t.toString()}function W(e,t,n){let{formula1:r,formula2:i}=t,a=t.ranges[0].startRow,o=t.ranges[0].startColumn,s=n.row-a,c=n.col-o;return{transformedFormula1:x(r)?e.moveFormulaRefOffset(r,c,s,!0):r,transformedFormula2:x(i)?e.moveFormulaRefOffset(i,c,s,!0):i}}let G=class extends s{constructor(e,t){super(),this._injector=e,this._dataValidationModel=t,N(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(K).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,t,n,r){var i;let{formula1:a=``,formula2:o=``}=n,s=x(a)?this._getRuleFormulaResultSet(r==null||(i=r[0])==null||(i=i.result)==null||(i=i[0])==null?void 0:i[0]):U(a),c=o.split(`,`),l=s.map((e,t)=>({label:e,color:c[t]||``})),u={};for(let e of l)e.color&&(u[e.label]=e.color);let d={list:s,listWithColor:l,colorMap:u,set:new Set(s)};return this.setCache(e,t,n.uid,d),d}_getRuleFormulaResultSet(e){if(!e)return[];let t=new Set;for(let r=0,i=e.length;r<i;r++){let i=e[r];if(i)for(let e=0,r=i.length;e<r;e++){let r=i[e],a=H(r);if(a!=null){var n;if(typeof a!=`string`&&typeof(r==null?void 0:r.s)==`object`&&!((n=r.s)==null||(n=n.n)==null)&&n.pattern){t.add(S.format(r.s.n.pattern,a,{throws:!1}));continue}let e=typeof a==`string`?a:String(a);z(e)&&t.add(e)}}}return[...t]}};G=F([P(0,p(m)),P(1,p(T))],G);let K=class extends s{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,N(this,`_formulaRuleMap`,new Map),this._initFormulaResultHandler()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(e=>{for(let t in e){let n=e[t];if(this._instanceService.getUnitType(t)===b.UNIVER_SHEET)for(let e in n){let r=n[e],i=this._ensureRuleFormulaMap(t,e);r.forEach(n=>{var r;let a=(r=n.extra)==null?void 0:r.ruleId;if(a&&i.get(a)){let n=this._dataValidationModel.getRuleById(t,e,a);n&&(this._listCacheService.markRuleDirty(t,e,a),this._dataValidationCacheService.markRangeDirty(t,e,n.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,r){return this._registerOtherFormulaService.registerFormulaWithRange(e,t,n,[{startColumn:0,endColumn:0,startRow:0,endRow:0}],{ruleId:r},be.DATA_VALIDATION,r)}addRule(e,t,n){if(!B(n.type,this._validatorRegistryService)&&n.type!==a.CHECKBOX){let{formula1:r,formula2:i,uid:a}=n,o=x(r),s=x(i);if(!o&&!s)return;let c=this._ensureRuleFormulaMap(e,t),l=[void 0,void 0];o&&(l[0]={id:this._registerSingleFormula(e,t,r,a),text:r}),s&&(l[1]={id:this._registerSingleFormula(e,t,i,a),text:i}),c.set(a,l)}}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)}};K=F([P(0,f),P(1,p(xe)),P(2,p(I)),P(3,p(T)),P(4,p(E)),P(5,p(G))],K);var Ye=class e{constructor(e,t,n,r,i=!1){this._unitId=t,this._subUnitId=n,this._univerInstanceService=r,this._disableTree=i,N(this,`_map`,void 0),N(this,`_tree`,new ne),N(this,`_dirty`,!0),N(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}),N(this,`_debonceBuildTree`,se(this._buildTree,0)),this._map=e,this._buildTree()}get _worksheet(){var e;return(e=this._univerInstanceService.getUnit(this._unitId,b.UNIVER_SHEET))==null?void 0:e.getSheetBySheetId(this._subUnitId)}_addRule(e,t){if(!this._worksheet)return;let n=v.mergeRanges(t.map(e=>_.transformRange(e,this._worksheet)));this._map.forEach((e,t)=>{let r=v.subtractMulti(e,n);r.length===0?this._map.delete(t):this._map.set(t,r)}),this._dirty=!0,this._map.set(e,n),this._debonceBuildTree()}addRule(e){this._addRule(e.uid,e.ranges)}removeRange(e){if(!this._worksheet)return;let t=e.map(e=>_.transformRange(e,this._worksheet));this._map.forEach((e,n)=>{let r=v.subtractMulti(e,t);r.length===0?this._map.delete(n):this._map.set(n,r)}),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:t})=>{if(!t.length)return;let n=this._map.get(e);n?(this._map.set(e,v.mergeRanges([...n,...t])),n=this._map.get(e)):(n=t,this._map.set(e,n)),this._map.forEach((n,r)=>{if(r===e)return;let i=v.subtractMulti(n,t);i.length===0?this._map.delete(r):this._map.set(r,i)})}),this._dirty=!0,this._debonceBuildTree()}diff(e){let t=[],n=0;return e.forEach((e,r)=>{var i;let a=(i=this._map.get(e.uid))==null?[]:i,o=e.ranges;a.length!==0&&(a.length!==o.length||a.some((e,t)=>!v.equals(e,o[t])))&&t.push({type:`update`,ruleId:e.uid,oldRanges:o,newRanges:v.sort(a),rule:e}),a.length===0&&(t.push({type:`delete`,rule:e,index:r-n}),n++)}),t}diffWithAddition(e,t){let n=[],r=0;return e.forEach((e,t)=>{var i;let a=(i=this._map.get(e.uid))==null?[]:i,o=e.ranges;a.length!==0&&(a.length!==o.length||a.some((e,t)=>!v.equals(e,o[t])))&&n.push({type:`update`,ruleId:e.uid,oldRanges:o,newRanges:v.sort(a),rule:e}),a.length===0&&(n.push({type:`delete`,rule:e,index:t-r}),r++)}),Array.from(t).forEach(e=>{var t;let r=(t=this._map.get(e.uid))==null?[]:t;n.push({type:`add`,rule:{...e,ranges:v.sort(r)}})}),n}clone(){return new e(new Map(y.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 q=class extends s{constructor(e,t,n,r,i,a,o){super(),this._dataValidationModel=e,this._univerInstanceService=t,this._dataValidatorRegistryService=n,this._dataValidationCacheService=r,this._dataValidationFormulaService=i,this._dataValidationCustomFormulaService=a,this._commandService=o,N(this,`_ruleMatrixMap`,new Map),N(this,`_validStatusChange$`,new Re),N(this,`_ruleChange$`,new Re),N(this,`ruleChange$`,this._ruleChange$.asObservable()),N(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===je.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 Ye(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,n,r,i){let a=this._ensureRuleMatrix(e,t),o={...r,...i.payload};i.type===k.RANGE?a.updateRange(n,i.payload):i.type===k.ALL&&a.updateRange(n,i.payload.ranges),this._dataValidationCacheService.removeRule(e,t,r),this._dataValidationCacheService.addRule(e,t,o),this._dataValidationFormulaService.removeRule(e,t,r.uid),this._dataValidationFormulaService.addRule(e,t,o),this._dataValidationCustomFormulaService.deleteByRuleId(e,t,n),this._dataValidationCustomFormulaService.addRule(e,t,o)}_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,t,n){let{col:r,row:a,unitId:o,subUnitId:s,worksheet:c}=t,l=(t,i)=>{n&&n(t,i),i&&this._validStatusChange$.next({unitId:o,subUnitId:s,ruleId:e.uid,status:t,row:a,col:r})},u=c.getCellValueOnly(a,r),d=this.getValidator(e.type),f=c.getCellRaw(a,r),p=H(f);if(d){let n=this._dataValidationCacheService.ensureCache(o,s),c=n.getValue(a,r);return c==null?(n.setValue(a,r,i.VALIDATING),d.validator({value:p,unitId:o,subUnitId:s,row:a,column:r,worksheet:t.worksheet,workbook:t.workbook,interceptValue:H(u),t:f==null?void 0:f.t},e).then(e=>{let t=e?i.VALID:i.INVALID,o=n.getValue(a,r);t===i.VALID?n.realDeleteValue(a,r):n.setValue(a,r,t),l(t,c!==o)}),i.VALIDATING):(l(c==null?i.VALID:c,!1),c==null?i.VALID:c)}else return l(i.VALID,!1),i.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()}};q=F([P(0,p(T)),P(1,f),P(2,p(E)),P(3,p(I)),P(4,p(K)),P(5,p(V)),P(6,c)],q);const Xe=1,Ze=0;function Qe(e,t){return y.isBlank(e)?t.t(`dataValidation.validFail.value`):x(e)?t.t(`dataValidation.validFail.primitive`):``}const J=e=>y.isDefine(e)&&String(e).toLowerCase()===`true`?`1`:String(e).toLowerCase()===`false`?`0`:e;var $e=class extends w{constructor(...e){super(...e),N(this,`id`,a.CHECKBOX),N(this,`title`,`dataValidation.checkbox.title`),N(this,`operators`,[]),N(this,`scopes`,[`sheet`]),N(this,`order`,41),N(this,`offsetFormulaByRange`,!1),N(this,`_formulaService`,this.injector.get(K)),N(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,t,n){let{formula1:r,formula2:i}=e,a=r===i;if(y.isBlank(r)&&y.isBlank(i))return{success:!0};if(a)return{success:!1,formula1:this.localeService.t(`dataValidation.validFail.checkboxEqual`),formula2:this.localeService.t(`dataValidation.validFail.checkboxEqual`)};let o=Qe(r,this.localeService),s=Qe(i,this.localeService);return{success:!o&&!s,formula1:o,formula2:s}}async parseFormula(e,t,n){var r,i;let{formula1:a=1,formula2:o=0}=e,s=await this._formulaService.getRuleFormulaResult(t,n,e.uid),c=x(a)?L(s==null||(r=s[0])==null||(r=r.result)==null?void 0:r[0][0]):a,l=x(o)?L(s==null||(i=s[1])==null||(i=i.result)==null?void 0:i[0][0]):o,u=z(String(c))&&z(String(l));return{formula1:J(c),formula2:J(l),originFormula1:c,originFormula2:l,isFormulaValid:u}}getExtraStyle(e,t){return{tb:ie.CLIP}}parseFormulaSync(e,t,n){var r,i;let{formula1:a=1,formula2:o=0}=e,s=this._formulaService.getRuleFormulaResultSync(t,n,e.uid),c=x(a)?L(s==null||(r=s[0])==null||(r=r.result)==null?void 0:r[0][0]):a,l=x(o)?L(s==null||(i=s[1])==null||(i=i.result)==null?void 0:i[0][0]):o,u=z(String(c))&&z(String(l));return{formula1:J(c),formula2:J(l),originFormula1:c,originFormula2:l,isFormulaValid:u}}async isValidType(e,t,n){let{value:r,unitId:i,subUnitId:a}=e,{formula1:o,formula2:s,originFormula1:c,originFormula2:l}=await this.parseFormula(n,i,a);return!y.isDefine(o)||!y.isDefine(s)?!0:y.isDefine(r)&&(String(r)===String(o)||String(r)===String(s)||String(r)===String(c==null?``:c)||String(r)===String(l==null?``:l))}generateRuleErrorMessage(e){return this.localeService.t(`dataValidation.checkbox.error`)}generateRuleName(e){return this.titleStr}};const et={[n.BETWEEN]:`dataValidation.date.operators.between`,[n.EQUAL]:`dataValidation.date.operators.equal`,[n.GREATER_THAN]:`dataValidation.date.operators.greaterThan`,[n.GREATER_THAN_OR_EQUAL]:`dataValidation.date.operators.greaterThanOrEqual`,[n.LESS_THAN]:`dataValidation.date.operators.lessThan`,[n.LESS_THAN_OR_EQUAL]:`dataValidation.date.operators.lessThanOrEqual`,[n.NOT_BETWEEN]:`dataValidation.date.operators.notBetween`,[n.NOT_EQUAL]:`dataValidation.date.operators.notEqual`};n.BETWEEN,n.EQUAL,n.GREATER_THAN,n.GREATER_THAN_OR_EQUAL,n.LESS_THAN,n.LESS_THAN_OR_EQUAL,n.NOT_BETWEEN,n.NOT_EQUAL;const tt={[n.BETWEEN]:`dataValidation.date.ruleName.between`,[n.EQUAL]:`dataValidation.date.ruleName.equal`,[n.GREATER_THAN]:`dataValidation.date.ruleName.greaterThan`,[n.GREATER_THAN_OR_EQUAL]:`dataValidation.date.ruleName.greaterThanOrEqual`,[n.LESS_THAN]:`dataValidation.date.ruleName.lessThan`,[n.LESS_THAN_OR_EQUAL]:`dataValidation.date.ruleName.lessThanOrEqual`,[n.NOT_BETWEEN]:`dataValidation.date.ruleName.notBetween`,[n.NOT_EQUAL]:`dataValidation.date.ruleName.notEqual`,NONE:`dataValidation.date.ruleName.legal`},nt={[n.BETWEEN]:`dataValidation.date.errorMsg.between`,[n.EQUAL]:`dataValidation.date.errorMsg.equal`,[n.GREATER_THAN]:`dataValidation.date.errorMsg.greaterThan`,[n.GREATER_THAN_OR_EQUAL]:`dataValidation.date.errorMsg.greaterThanOrEqual`,[n.LESS_THAN]:`dataValidation.date.errorMsg.lessThan`,[n.LESS_THAN_OR_EQUAL]:`dataValidation.date.errorMsg.lessThanOrEqual`,[n.NOT_BETWEEN]:`dataValidation.date.errorMsg.notBetween`,[n.NOT_EQUAL]:`dataValidation.date.errorMsg.notEqual`,NONE:`dataValidation.date.errorMsg.legal`},rt=[n.BETWEEN,n.NOT_BETWEEN],Y=`{FORMULA1}`,X=`{FORMULA2}`,it=e=>{var t,n;if(e==null||typeof e==`boolean`)return;if(typeof e==`number`||!Number.isNaN(+e))return+e;let r=(t=S.parseDate(e))==null?void 0:t.v;return y.isDefine(r)?r:(n=S.parseDate(oe(e).format(`YYYY-MM-DD HH:mm:ss`)))==null?void 0:n.v};var at=class extends w{constructor(...e){super(...e),N(this,`id`,a.DATE),N(this,`title`,`dataValidation.date.title`),N(this,`order`,40),N(this,`operators`,[n.BETWEEN,n.EQUAL,n.GREATER_THAN,n.GREATER_THAN_OR_EQUAL,n.LESS_THAN,n.LESS_THAN_OR_EQUAL,n.NOT_BETWEEN,n.NOT_EQUAL]),N(this,`scopes`,[`sheet`]),N(this,`_customFormulaService`,this.injector.get(V)),N(this,`_lexerTreeBuilder`,this.injector.get(A))}async parseFormula(e,t,n,r,i){let a=await this._customFormulaService.getCellFormulaValue(t,n,e.uid,r,i),o=await this._customFormulaService.getCellFormula2Value(t,n,e.uid,r,i),{formula1:s,formula2:c}=e,l=z(String(a==null?void 0:a.v))&&z(String(o==null?void 0:o.v));return{formula1:it(x(s)?a==null?void 0:a.v:s),formula2:it(x(c)?o==null?void 0:o.v:c),isFormulaValid:l}}async isValidType(e){let{interceptValue:t,value:n}=e;return typeof n==`number`&&typeof t==`string`||typeof t==`string`?!!S.parseDate(t):!1}_validatorSingleFormula(e){return!y.isBlank(e)&&(x(e)||!Number.isNaN(+e)||!!(e&&S.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(rt.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,t,n){let{formula1:r,formula2:i,bizInfo:a}=e,o=e=>{if(!e)return e;let t;if(!Number.isNaN(+e))t=S.dateFromSerial(+e);else{var n;let r=(n=S.parseDate(e))==null?void 0:n.v;if(r==null)return``;t=S.dateFromSerial(r)}return oe(`${t[0]}/${t[1]}/${t[2]} ${t[3]}:${t[4]}:${t[5]}`).format(a!=null&&a.showTime?`YYYY-MM-DD HH:mm:ss`:`YYYY-MM-DD`)};return{formula1:x(r)?r:o(`${r}`),formula2:x(i)?i:o(`${i}`)}}transform(e,t,n){let{value:r}=e;return{...e,value:it(r)}}get operatorNames(){return this.operators.map(e=>this.localeService.t(et[e]))}generateRuleName(e){var t,n;if(!e.operator)return this.localeService.t(tt.NONE);let r=this.localeService.t(tt[e.operator]).replace(Y,(t=e.formula1)==null?``:t).replace(X,(n=e.formula2)==null?``:n);return`${this.titleStr} ${r}`}generateRuleErrorMessage(e,t){if(!e.operator)return this.titleStr;let{transformedFormula1:n,transformedFormula2:r}=W(this._lexerTreeBuilder,e,t);return`${this.localeService.t(nt[e.operator]).replace(Y,n==null?``:n).replace(X,r==null?``:r)}`}};n.BETWEEN,n.EQUAL,n.GREATER_THAN,n.GREATER_THAN_OR_EQUAL,n.LESS_THAN,n.LESS_THAN_OR_EQUAL,n.NOT_BETWEEN,n.NOT_EQUAL,n.BETWEEN,n.EQUAL,n.GREATER_THAN,n.GREATER_THAN_OR_EQUAL,n.LESS_THAN,n.LESS_THAN_OR_EQUAL,n.NOT_BETWEEN,n.NOT_EQUAL;const ot={[n.BETWEEN]:`dataValidation.errorMsg.between`,[n.EQUAL]:`dataValidation.errorMsg.equal`,[n.GREATER_THAN]:`dataValidation.errorMsg.greaterThan`,[n.GREATER_THAN_OR_EQUAL]:`dataValidation.errorMsg.greaterThanOrEqual`,[n.LESS_THAN]:`dataValidation.errorMsg.lessThan`,[n.LESS_THAN_OR_EQUAL]:`dataValidation.errorMsg.lessThanOrEqual`,[n.NOT_BETWEEN]:`dataValidation.errorMsg.notBetween`,[n.NOT_EQUAL]:`dataValidation.errorMsg.notEqual`,NONE:`dataValidation.errorMsg.legal`};function Z(e){return+e}var st=class extends w{constructor(...e){super(...e),N(this,`_customFormulaService`,this.injector.get(V)),N(this,`id`,a.DECIMAL),N(this,`_lexerTreeBuilder`,this.injector.get(A)),N(this,`title`,`dataValidation.decimal.title`),N(this,`order`,20),N(this,`operators`,[n.BETWEEN,n.EQUAL,n.GREATER_THAN,n.GREATER_THAN_OR_EQUAL,n.LESS_THAN,n.LESS_THAN_OR_EQUAL,n.NOT_BETWEEN,n.NOT_EQUAL]),N(this,`scopes`,[`sheet`])}_isFormulaOrNumber(e){return!y.isBlank(e)&&(x(e)||!Number.isNaN(+e))}async isValidType(e,t,n){let{value:r}=e;return!Number.isNaN(Z(r))}transform(e,t,n){let{value:r}=e;return{...e,value:Z(r)}}_parseNumber(e){return e==null?NaN:+e}async parseFormula(e,t,n,r,i){let a=await this._customFormulaService.getCellFormulaValue(t,n,e.uid,r,i),o=await this._customFormulaService.getCellFormula2Value(t,n,e.uid,r,i),{formula1:s,formula2:c}=e,l=z(String(a==null?void 0:a.v))&&z(String(o==null?void 0:o.v));return{formula1:this._parseNumber(x(s)?a==null?void 0:a.v:s),formula2:this._parseNumber(x(c)?o==null?void 0:o.v:c),isFormulaValid:l}}validatorFormula(e,t,n){let r=e.operator;if(!r)return{success:!0};let i=y.isDefine(e.formula1)&&this._isFormulaOrNumber(e.formula1),a=y.isDefine(e.formula2)&&this._isFormulaOrNumber(e.formula2),o=rt.includes(r),s=this.localeService.t(`dataValidation.validFail.number`);return o?{success:i&&a,formula1:i?void 0:s,formula2:a?void 0:s}:{success:i,formula1:i?``:s}}generateRuleErrorMessage(e,t){if(!e.operator)return this.localeService.t(ot.NONE).replace(`{TYPE}`,this.titleStr);let{transformedFormula1:n,transformedFormula2:r}=W(this._lexerTreeBuilder,e,t);return`${this.localeService.t(ot[e.operator]).replace(Y,n==null?``:n).replace(X,r==null?``:r)}`}};function ct(e){if(!e)return[];let t=new Set;for(let r=0,i=e.length;r<i;r++){let i=e[r];if(i)for(let e=0,r=i.length;e<r;e++){let r=i[e],a=H(r);if(a!=null){var n;if(typeof a!=`string`&&typeof(r==null?void 0:r.s)==`object`&&!((n=r.s)==null||(n=n.n)==null)&&n.pattern){t.add(S.format(r.s.n.pattern,a,{throws:!1}));continue}let e=typeof a==`string`?a:String(a);z(e)&&t.add(e)}}}return[...t]}const lt=[`if`,`indirect`,`choose`,`offset`];function ut(e,t){if(!x(e)||we(e.slice(1)))return!0;let n=t.sequenceNodesBuilder(e);return n&&n.some(e=>typeof e==`object`&&e.nodeType===Ee.FUNCTION&&lt.indexOf(e.token.toLowerCase())>-1)}function dt(e,t){let{formula1:n=``,ranges:r}=e;if(we(n.slice(1))){let e=Se(n.slice(1));if((!e.sheetName||e.sheetName===t)&&r.some(t=>v.intersects(t,e.range)))return!0}return!1}var ft=class extends w{constructor(...e){super(...e),N(this,`formulaService`,this.injector.get(K)),N(this,`_lexer`,this.injector.get(A)),N(this,`_univerInstanceService`,this.injector.get(f)),N(this,`_listCacheService`,this.injector.get(G)),N(this,`order`,50),N(this,`offsetFormulaByRange`,!1),N(this,`id`,a.LIST),N(this,`title`,`dataValidation.list.title`),N(this,`operators`,[]),N(this,`scopes`,[`sheet`]),N(this,`skipDefaultFontRender`,e=>e.renderMode!==r.TEXT)}validatorFormula(e,t,n){var r,i;let a=!y.isBlank(e.formula1),o=ut((r=e.formula1)==null?``:r,this._lexer),s=(i=this._univerInstanceService.getUnit(t,b.UNIVER_SHEET))==null||(i=i.getSheetBySheetId(n))==null?void 0:i.getName(),c=dt(e,s==null?``:s);return{success:!!(a&&o&&!c),formula1:a?o?c?this.localeService.t(`dataValidation.validFail.listIntersects`):void 0:this.localeService.t(`dataValidation.validFail.listInvalid`):this.localeService.t(`dataValidation.validFail.list`)}}getExtraStyle(e,t,{style:n}){var i;let o=(i=n.tb===ie.OVERFLOW?ie.CLIP:n.tb)==null?ie.WRAP:i;if(e.type===a.LIST&&(e.renderMode===r.ARROW||e.renderMode===r.TEXT)){let n=this.getListWithColorMap(e)[`${t==null?``:t}`];if(n)return{bg:{rgb:n},tb:o}}return{tb:o}}parseCellValue(e){return U(e.toString())}async parseFormula(e,t,n){var r;let i=await this.formulaService.getRuleFormulaResult(t,n,e.uid),a=L(i==null||(r=i[0])==null||(r=r.result)==null?void 0:r[0][0]);return{formula1:void 0,formula2:void 0,isFormulaValid:z(String(a))}}async isValidType(e,t,n){let{value:r,unitId:i,subUnitId:a}=e,{formula1:o=``}=n,s=x(o)?this._listCacheService.getOrCompute(i,a,n).list:U(o);return this.parseCellValue(r).every(e=>s.includes(e))}generateRuleName(){return this.localeService.t(`dataValidation.list.name`)}generateRuleErrorMessage(){return this.localeService.t(`dataValidation.list.error`)}_getUnitAndSubUnit(e,t){var n,r;let i=(n=e?this._univerInstanceService.getUniverSheetInstance(e):void 0)==null?this._univerInstanceService.getCurrentUnitForType(b.UNIVER_SHEET):n;if(!i)return null;let a=(r=t?i.getSheetBySheetId(t):void 0)==null?i.getActiveSheet():r;return a?{unitId:i.getUnitId(),subUnitId:a.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,t,n){var r;let{formula1:i=``}=e,a=this._getUnitAndSubUnit(t,n);if(!a)return[];let{unitId:o,subUnitId:s}=a,c=await this.formulaService.getRuleFormulaResult(o,s,e.uid);return x(i)?ct(c==null||(r=c[0])==null||(r=r.result)==null?void 0:r[0][0]):U(i)}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}},pt=class extends w{constructor(...e){super(...e),N(this,`id`,a.TEXT_LENGTH),N(this,`title`,`dataValidation.textLength.title`),N(this,`_lexerTreeBuilder`,this.injector.get(A)),N(this,`order`,30),N(this,`operators`,[n.BETWEEN,n.EQUAL,n.GREATER_THAN,n.GREATER_THAN_OR_EQUAL,n.LESS_THAN,n.LESS_THAN_OR_EQUAL,n.NOT_BETWEEN,n.NOT_EQUAL]),N(this,`scopes`,[`sheet`]),N(this,`_customFormulaService`,this.injector.get(V))}_isFormulaOrInt(e){return!y.isBlank(e)&&(x(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}validatorFormula(e,t,n){let r=e.operator;if(!r)return{success:!1};let i=y.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),a=y.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),o=rt.includes(r),s=this.localeService.t(`dataValidation.validFail.number`);return o?{success:i&&a,formula1:i?void 0:s,formula2:a?void 0:s}:{success:i,formula1:s}}_parseNumber(e){return e==null?NaN:+e}async parseFormula(e,t,n,r,i){let a=await this._customFormulaService.getCellFormulaValue(t,n,e.uid,r,i),o=await this._customFormulaService.getCellFormula2Value(t,n,e.uid,r,i),{formula1:s,formula2:c}=e,l=z(String(a==null?void 0:a.v))&&z(String(o==null?void 0:o.v));return{formula1:this._parseNumber(x(s)?a==null?void 0:a.v:s),formula2:this._parseNumber(x(c)?o==null?void 0:o.v:c),isFormulaValid:l}}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:n,transformedFormula2:r}=W(this._lexerTreeBuilder,e,t);return`${this.localeService.t(he[e.operator]).replace(Y,n==null?``:n).replace(X,r==null?``:r)}`}};function mt(e){var t,n;return e?e.p?!((t=(n=e.p.body)==null?void 0:n.dataStream)==null?``:t).slice(0,-2).trim():y.isBlank(e.v):!0}function ht(e,t,n,r,i=`command`,o=!0){let s=r.get(A),c=r.get(E),l=[],u=[],d=r.get(q),p=Ie(r.get(f),{unitId:e,subUnitId:t});if(!p)return{redoMutations:l,undoMutations:u};let{worksheet:m}=p,h=new ee,g=!1;function te(e,t){o&&e.forEach(e=>{_.foreach(e,(e,n)=>{let r=m.getCellRaw(e,n),i=Ke(r);(mt(r)||i===t)&&!(r!=null&&r.p)&&(g=!0,h.setValue(e,n,{v:t,p:null}))})})}if(n.forEach(n=>{switch(n.type){case`delete`:l.push({id:D.id,params:{unitId:e,subUnitId:t,ruleId:n.rule.uid,source:i}}),u.unshift({id:C.id,params:{unitId:e,subUnitId:t,rule:n.rule,index:n.index,source:i}});break;case`update`:{if(B(n.rule.type,c)){let r=n.oldRanges[0].startRow,a=n.oldRanges[0].startColumn,o=n.newRanges[0].startRow,c=n.newRanges[0].startColumn,d=o-r,f=c-a,p=x(n.rule.formula1)?s.moveFormulaRefOffset(n.rule.formula1,f,d):n.rule.formula1,m=x(n.rule.formula2)?s.moveFormulaRefOffset(n.rule.formula2,f,d):n.rule.formula2;p!==n.rule.formula1||m!==n.rule.formula2||!de(n.newRanges,n.oldRanges)?(l.push({id:O.id,params:{unitId:e,subUnitId:t,ruleId:n.ruleId,payload:{type:k.ALL,payload:{formula1:p,formula2:m,ranges:n.newRanges}}}}),u.unshift({id:O.id,params:{unitId:e,subUnitId:t,ruleId:n.ruleId,payload:{type:k.ALL,payload:{formula1:n.rule.formula1,formula2:n.rule.formula2,ranges:n.oldRanges}}}})):(l.push({id:O.id,params:{unitId:e,subUnitId:t,ruleId:n.ruleId,payload:{type:k.RANGE,payload:n.newRanges},source:i}}),u.unshift({id:O.id,params:{unitId:e,subUnitId:t,ruleId:n.ruleId,payload:{type:k.RANGE,payload:n.oldRanges},source:i}}))}else l.push({id:O.id,params:{unitId:e,subUnitId:t,ruleId:n.ruleId,payload:{type:k.RANGE,payload:n.newRanges},source:i}}),u.unshift({id:O.id,params:{unitId:e,subUnitId:t,ruleId:n.ruleId,payload:{type:k.RANGE,payload:n.oldRanges},source:i}});let r=d.getRuleById(e,t,n.ruleId);if(r&&r.type===a.CHECKBOX){let i=d.getValidator(a.CHECKBOX).parseFormulaSync(r,e,t);te(n.newRanges,i.formula2)}break}case`add`:if(l.push({id:C.id,params:{unitId:e,subUnitId:t,rule:n.rule,source:i}}),u.unshift({id:D.id,params:{unitId:e,subUnitId:t,ruleId:n.rule.uid,source:i}}),n.rule.type===a.CHECKBOX){let r=d.getValidator(a.CHECKBOX).parseFormulaSync(n.rule,e,t);te(n.rule.ranges,r.originFormula2)}break;default:break}}),g){let n={id:j.id,params:{unitId:e,subUnitId:t,cellValue:h.getData()}},i={id:j.id,params:Me(r,n.params)};l.push(n),u.push(i)}return{redoMutations:l,undoMutations:u}}const gt={type:t.COMMAND,id:`sheet.command.updateDataValidationRuleRange`,handler(e,t){if(!t)return!1;let{unitId:n,subUnitId:r,ranges:i,ruleId:a}=t,o=e.get(q),s=e.get(c),l=e.get(d);if(!o.getRuleById(n,r,a))return!1;let u=o.getRuleObjectMatrix(n,r).clone();u.updateRange(a,i);let{redoMutations:f,undoMutations:p}=ht(n,r,u.diff(o.getRules(n,r)),e);return l.pushUndoRedo({undoMutations:p,redoMutations:f,unitID:n}),pe(f,s),!0}},_t={type:t.COMMAND,id:`sheet.command.addDataValidation`,handler(e,t){if(!t)return!1;let{unitId:n,subUnitId:r,rule:i}=t,a=e.get(q),o=e.get(c),s=e.get(d),l=a.getRuleObjectMatrix(n,r).clone();l.addRule(i);let u=l.diff(a.getRules(n,r)),f=a.getValidator(i.type),p={unitId:n,subUnitId:r,rule:{...i,...f==null?void 0:f.normalizeFormula(i,n,r)}},{redoMutations:m,undoMutations:h}=ht(n,r,u,e);return m.push({id:C.id,params:p}),h.unshift({id:D.id,params:{unitId:n,subUnitId:r,ruleId:i.uid}}),s.pushUndoRedo({unitID:n,redoMutations:m,undoMutations:h}),pe(m,o),!0}},vt={type:t.COMMAND,id:`sheets.command.update-data-validation-setting`,handler(e,t){if(!t)return!1;let n=e.get(c),r=e.get(d),i=e.get(q),o=e.get(E),{unitId:s,subUnitId:l,ruleId:u,setting:p}=t,m=o.getValidatorItem(p.type);if(!m)return!1;let h=i.getRuleById(s,l,u);if(!h)return!1;let g={...h,...p};if(!m.validatorFormula(g,s,l).success)return!1;let te={unitId:s,subUnitId:l,ruleId:u,payload:{type:k.SETTING,payload:{...p,...m.normalizeFormula(g,s,l)}}},ne=[{id:O.id,params:te}],v={unitId:s,subUnitId:l,ruleId:u,payload:{type:k.SETTING,payload:ve(h)}},re=[{id:O.id,params:v}];if(p.type===a.CHECKBOX){let t=h.ranges,n=Ie(e.get(f),{unitId:s,subUnitId:l});if(n){let r=new ee,{worksheet:i}=n,{formula2:a=0,formula1:o=1}=h,{formula2:c=0,formula1:u=1}=p,d=!1;if(t.forEach(e=>{_.foreach(e,(e,t)=>{let n=i.getCellRaw(e,t),s=Ke(n);(mt(n)||s===String(a))&&!(n!=null&&n.p)?(r.setValue(e,t,{v:c,p:null}),d=!0):s===String(o)&&!(n!=null&&n.p)&&(r.setValue(e,t,{v:u,p:null}),d=!0)})}),d){let t={id:j.id,params:{unitId:s,subUnitId:l,cellValue:r.getData()}},n={id:j.id,params:Me(e,t.params)};ne.push(t),re.push(n)}}}return pe(ne,n).result?(r.pushUndoRedo({unitID:s,redoMutations:ne,undoMutations:re}),!0):!1}},yt={type:t.COMMAND,id:`sheets.command.update-data-validation-options`,handler(e,t){if(!t)return!1;let n=e.get(c),r=e.get(d),i=e.get(q),{unitId:a,subUnitId:o,ruleId:s,options:l}=t,u=i.getRuleById(a,o,s);if(!u)return!1;let f={unitId:a,subUnitId:o,ruleId:s,payload:{type:k.OPTIONS,payload:l}},p=[{id:O.id,params:f}],m={unitId:a,subUnitId:o,ruleId:s,payload:{type:k.OPTIONS,payload:_e(u)}},h=[{id:O.id,params:m}];return r.pushUndoRedo({unitID:a,redoMutations:p,undoMutations:h}),n.executeCommand(O.id,f),!0}},bt={type:t.COMMAND,id:`sheets.command.clear-range-data-validation`,handler(e,t){if(!t)return!1;let{unitId:n,subUnitId:r,ranges:i}=t,a=e.get(c),o=Ie(e.get(f),{unitId:n,subUnitId:r}),s=e.get(q);if(!o)return!1;let l=e.get(d),u=s.getRuleObjectMatrix(n,r).clone();u.removeRange(i);let{redoMutations:p,undoMutations:m}=ht(n,r,u.diff(s.getRules(n,r)),e);return l.pushUndoRedo({unitID:n,redoMutations:p,undoMutations:m}),pe(p,a).result}},xt={type:t.COMMAND,id:`sheet.command.remove-all-data-validation`,handler(e,t){if(!t)return!1;let{unitId:n,subUnitId:r}=t,i=e.get(c),a=e.get(q),o=e.get(d),s=[...a.getRules(n,r)],l={unitId:n,subUnitId:r,ruleId:s.map(e=>e.uid)},u=[{id:D.id,params:l}],f=[{id:C.id,params:{unitId:n,subUnitId:r,rule:s}}];return o.pushUndoRedo({redoMutations:u,undoMutations:f,unitID:n}),i.executeCommand(D.id,l),!0}},St=(e,t)=>{let n=e.get(q),{unitId:r,subUnitId:i,ruleId:a,source:o}=t;if(Array.isArray(a)){let e=a.map(e=>n.getRuleById(r,i,e)).filter(Boolean);return[{id:C.id,params:{unitId:r,subUnitId:i,rule:e,source:o}}]}return[{id:C.id,params:{unitId:r,subUnitId:i,rule:{...n.getRuleById(r,i,a)},index:n.getRuleIndex(r,i,a)}}]},Ct={type:t.COMMAND,id:`sheet.command.remove-data-validation-rule`,handler(e,t){if(!t)return!1;let{unitId:n,subUnitId:r,ruleId:i}=t,a=e.get(c),o=e.get(d),s=e.get(q),l=[{id:D.id,params:t}],u=[{id:C.id,params:{unitId:n,subUnitId:r,rule:{...s.getRuleById(n,r,i)},index:s.getRuleIndex(n,r,i)}}];return o.pushUndoRedo({undoMutations:u,redoMutations:l,unitID:t.unitId}),a.executeCommand(D.id,t),!0}},wt=`SHEET_DATA_VALIDATION_PLUGIN`;let Tt=class extends s{constructor(e,t,n){super(),this._univerInstanceService=e,this._permissionService=t,this._lexerTreeBuilder=n}getFormulaRefCheck(e){let t=this._lexerTreeBuilder.sequenceNodesBuilder(e);if(!t)return!0;for(let e=0;e<t.length;e++){let r=t[e];if(typeof r==`string`)continue;let{token:i}=r,a=Ce(i),o=this._univerInstanceService.getCurrentUnitForType(b.UNIVER_SHEET),s=o.getActiveSheet(),c=o.getUnitId();if(a.sheetName){if(s=o.getSheetBySheetName(a.sheetName),!s)return!1;let e=s==null?void 0:s.getSheetId();if(!this._permissionService.getPermissionPoint(new Fe(c,e).id))return!1}if(!s)return!1;let{startRow:l,endRow:u,startColumn:d,endColumn:f}=a.range;for(let e=l;e<=u;e++)for(let t=d;t<=f;t++){var n;let r=(n=s.getCell(e,t))==null||(n=n.selectionProtection)==null?void 0:n[0];if((r==null?void 0:r[Ve.View])===!1)return!1}}return!0}};Tt=F([P(0,f),P(1,u),P(2,p(A))],Tt);var Et=`@univerjs/sheets-data-validation`,Dt=`0.19.0`;const Ot=`sheets-data-validation.config`;Symbol(Ot);const kt={};let At=class extends s{constructor(e,t,n){super(),this._dataValidationModel=e,this._formulaRefRangeService=t,this._validatorRegistryService=n,N(this,`_disposableMap`,new Map),N(this,`registerRule`,(e,t,n)=>{B(n.type,this._validatorRegistryService)&&this.register(e,t,n)}),this._initRefRange()}_getIdWithUnitId(e,t,n){return`${e}_${t}_${n}`}register(e,t,n){let r=n.ranges,i=n.formula1,a=n.formula2,o=this._formulaRefRangeService.registerRangeFormula(e,t,r,[i==null?``:i,a==null?``:a],o=>{if(o.length===0)return{undos:[{id:C.id,params:{unitId:e,subUnitId:t,rule:n,source:`patched`}}],redos:[{id:D.id,params:{unitId:e,subUnitId:t,ruleId:n.uid,source:`patched`}}]};let s=[],c=[],l=o[0];s.push({id:O.id,params:{unitId:e,subUnitId:t,ruleId:n.uid,payload:{type:k.ALL,payload:{ranges:l.ranges,formula1:l.formulas[0],formula2:l.formulas[1]}},source:`patched`}}),c.push({id:O.id,params:{unitId:e,subUnitId:t,ruleId:n.uid,payload:{type:k.ALL,payload:{ranges:r,formula1:i,formula2:a}},source:`patched`}});for(let r=1;r<o.length;r++){let i=o[r],a=ce();s.push({id:C.id,params:{unitId:e,subUnitId:t,rule:{...n,uid:a,formula1:i.formulas[0],formula2:i.formulas[1],ranges:i.ranges},source:`patched`}}),c.push({id:D.id,params:{unitId:e,subUnitId:t,ruleId:a,source:`patched`}})}return{undos:c,redos:s}}),s=this._getIdWithUnitId(e,t,n.uid);this._disposableMap.set(s,o)}_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(me(()=>{this._disposableMap.forEach(e=>{e.dispose()}),this._disposableMap.clear()}))}};At=F([P(0,p(q)),P(1,p(He)),P(2,p(E))],At);let jt=class extends s{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,N(this,`_disposableMap`,new Map),N(this,`registerRule`,(e,t,n)=>{B(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,n){var r;let i=n.uid,a=this._getIdWithUnitId(e,t,i),o=(r=this._disposableMap.get(a))==null?new Set:r,s=(r,a)=>{let o=this._dataValidationModel.getRuleById(e,t,i);if(!o)return{redos:[],undos:[]};let s=o[r];if(!s||s===a)return{redos:[],undos:[]};let c={unitId:e,subUnitId:t,ruleId:n.uid,payload:{type:k.SETTING,payload:{type:o.type,formula1:o.formula1,formula2:o.formula2,[r]:a}},source:`patched`},l={unitId:e,subUnitId:t,ruleId:n.uid,payload:{type:k.SETTING,payload:{type:o.type,formula1:o.formula1,formula2:o.formula2}},source:`patched`};return{redos:[{id:O.id,params:c}],undos:[{id:O.id,params:l}]}},c=this._dataValidationFormulaService.getRuleFormulaInfo(e,t,i);if(c){let[n,r]=c;if(n){let r=this._formulaRefRangeService.registerFormula(e,t,n.text,e=>s(`formula1`,e));o.add(()=>r.dispose())}if(r){let n=this._formulaRefRangeService.registerFormula(e,t,r.text,e=>s(`formula2`,e));o.add(()=>n.dispose())}}}register(e,t,n){var r;let i=r=>{let i=[...n.ranges],a=i.map(e=>Le(e,r)).filter(e=>!!e).flat();if(de(a,i))return{redos:[],undos:[]};if(a.length){let r={unitId:e,subUnitId:t,ruleId:n.uid,payload:{type:k.RANGE,payload:a},source:`patched`};return{redos:[{id:O.id,params:r}],undos:[{id:O.id,params:{unitId:e,subUnitId:t,ruleId:n.uid,payload:{type:k.RANGE,payload:i},source:`patched`}}]}}else{let r={unitId:e,subUnitId:t,ruleId:n.uid};return{redos:[{id:D.id,params:r}],undos:St(this._injector,r)}}},a=[];n.ranges.forEach(n=>{let r=this._refRangeService.registerRefRange(n,i,e,t);a.push(()=>r.dispose())});let o=this._getIdWithUnitId(e,t,n.uid),s=(r=this._disposableMap.get(o))==null?new Set:r;s.add(()=>a.forEach(e=>e())),this._disposableMap.set(o,s)}_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(me(()=>{this._disposableMap.forEach(e=>{e.forEach(e=>e())}),this._disposableMap.clear()}))}};jt=F([P(0,p(q)),P(1,p(m)),P(2,p(ke)),P(3,p(K)),P(4,p(He)),P(5,p(E))],jt);let Mt=class extends s{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===Ae.id){var t;let n=e.params,r=n.unitId||this._univerInstanceService.getCurrentUnitForType(b.UNIVER_SHEET).getUnitId(),i=this._univerInstanceService.getUniverSheetInstance(r);if(!i)return{redos:[],undos:[]};let a=n.subUnitId||((t=i.getActiveSheet())==null?void 0:t.getSheetId());if(!a)return{redos:[],undos:[]};let o=this._sheetDataValidationModel.getRules(r,a);if(o.length===0)return{redos:[],undos:[]};let s={unitId:r,subUnitId:a,ruleId:o.map(e=>e.uid),source:`patched`},c={unitId:r,subUnitId:a,rule:[...o],source:`patched`};return{redos:[{id:D.id,params:s}],undos:[{id:C.id,params:c}]}}else if(e.id===Oe.id){let{unitId:t,subUnitId:n,targetSubUnitId:r}=e.params;if(!t||!n||!r)return{redos:[],undos:[]};let i=this._sheetDataValidationModel.getRules(t,n);if(i.length===0)return{redos:[],undos:[]};let a=i.map(e=>({...e,uid:ce(6)}));return{redos:[{id:C.id,params:{unitId:t,subUnitId:r,rule:a,source:`patched`}}],undos:[{id:D.id,params:{unitId:t,subUnitId:r,ruleId:a.map(e=>e.uid),source:`patched`}}]}}return{redos:[],undos:[]}}}))}};Mt=F([P(0,p(Ne)),P(1,p(f)),P(2,p(q))],Mt);var Nt=class extends w{constructor(...e){super(...e),N(this,`id`,a.ANY),N(this,`title`,`dataValidation.any.title`),N(this,`operators`,[]),N(this,`scopes`,[`sheet`]),N(this,`order`,0),N(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`)}},Pt=class extends w{constructor(...e){super(...e),N(this,`id`,a.CUSTOM),N(this,`title`,`dataValidation.custom.title`),N(this,`operators`,[]),N(this,`scopes`,[`sheet`]),N(this,`order`,60),N(this,`_customFormulaService`,this.injector.get(V)),N(this,`_lexerTreeBuilder`,this.injector.get(A))}validatorFormula(e,t,n){var r;let i=x(e.formula1),a=(r=e.formula1)==null?``:r,o=this._lexerTreeBuilder.checkIfAddBracket(a)===0&&a.startsWith(Te.EQUALS);return{success:i&&o,formula1:i&&o?``:this.localeService.t(`dataValidation.validFail.formula`)}}async parseFormula(e,t,n){return{formula1:void 0,formula2:void 0,isFormulaValid:!0}}async isValidType(t,n,r){let{column:i,row:a,unitId:o,subUnitId:s}=t,c=await this._customFormulaService.getCellFormulaValue(o,s,r.uid,a,i),l=c==null?void 0:c.v;return z(String(l))&&y.isDefine(l)&&l!==``?c.t===e.BOOLEAN?!!l:typeof l==`boolean`?l:typeof l==`number`?!!l:typeof l==`string`?z(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)}},Ft=class extends ft{constructor(...e){super(...e),N(this,`id`,a.LIST_MULTIPLE),N(this,`title`,`dataValidation.listMultiple.title`),N(this,`offsetFormulaByRange`,!1),N(this,`skipDefaultFontRender`,()=>!0)}},It=class extends w{constructor(...e){super(...e),N(this,`_customFormulaService`,this.injector.get(V)),N(this,`_lexerTreeBuilder`,this.injector.get(A)),N(this,`id`,a.WHOLE),N(this,`title`,`dataValidation.whole.title`),N(this,`order`,10),N(this,`operators`,[n.BETWEEN,n.EQUAL,n.GREATER_THAN,n.GREATER_THAN_OR_EQUAL,n.LESS_THAN,n.LESS_THAN_OR_EQUAL,n.NOT_BETWEEN,n.NOT_EQUAL]),N(this,`scopes`,[`sheet`])}_isFormulaOrInt(e){return!y.isBlank(e)&&(x(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}async isValidType(e,t,n){let{value:r}=e,i=Z(r);return!Number.isNaN(i)&&Number.isInteger(i)}transform(e,t,n){let{value:r}=e;return{...e,value:Z(r)}}_parseNumber(e){return e==null?NaN:+e}async parseFormula(e,t,n,r,i){let a=await this._customFormulaService.getCellFormulaValue(t,n,e.uid,r,i),o=await this._customFormulaService.getCellFormula2Value(t,n,e.uid,r,i),{formula1:s,formula2:c}=e,l=x(s)?a==null?void 0:a.v:s,u=x(c)?o==null?void 0:o.v:c,d=z(`${l}`)&&z(`${u}`);return{formula1:this._parseNumber(l),formula2:this._parseNumber(u),isFormulaValid:d}}validatorFormula(e,t,n){let r=e.operator;if(!r)return{success:!0};let i=y.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),a=y.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),o=rt.includes(r),s=this.localeService.t(`dataValidation.validFail.number`);return o?{success:i&&a,formula1:i?void 0:s,formula2:a?void 0:s}:{success:i,formula1:s}}generateRuleErrorMessage(e,t){if(!e.operator)return this.localeService.t(ot.NONE).replace(`{TYPE}`,this.titleStr);let{transformedFormula1:n,transformedFormula2:r}=W(this._lexerTreeBuilder,e,t);return`${this.localeService.t(ot[e.operator]).replace(Y,n==null?``:n).replace(X,r==null?``:r)}`}};let Lt=class extends re{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(){[Nt,st,It,pt,at,$e,ft,Ft,Pt].forEach(e=>{let t=this._injector.createInstance(e);this.disposeWithMe(this._dataValidatorRegistryService.register(t)),this.disposeWithMe(me(()=>this._injector.delete(e)))})}_initCommandInterceptor(){this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===De.id){var t;let e=this._univerInstanceService.getCurrentUnitForType(b.UNIVER_SHEET),n=e.getUnitId(),r=e.getActiveSheet();if(!r)throw Error(`No active sheet found`);let i=r.getSheetId(),a=(t=this._selectionManagerService.getCurrentSelections())==null?void 0:t.map(e=>e.range),o=this._sheetDataValidationModel.getRuleObjectMatrix(n,i).clone();a&&o.removeRange(a);let{redoMutations:s,undoMutations:c}=ht(n,i,o.diff(this._sheetDataValidationModel.getRules(n,i)),this._injector,`patched`);return{undos:c,redos:s}}return{undos:[],redos:[]}}})}};Lt=F([P(0,f),P(1,p(E)),P(2,p(m)),P(3,p(Pe)),P(4,p(Ne)),P(5,p(q))],Lt);let Q=class extends s{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 t=this._univerInstanceService.getCurrentUnitForType(b.UNIVER_SHEET),n=t==null?void 0:t.getActiveSheet(),r={};e.flat().forEach(e=>{r[e.unitId]||(r[e.unitId]={}),r[e.unitId][e.subUnitId]||(r[e.unitId][e.subUnitId]=[]);let t=this._univerInstanceService.getUnit(e.unitId,b.UNIVER_SHEET),n=t==null?void 0:t.getSheetBySheetId(e.subUnitId);n&&r[e.unitId][e.subUnitId].push(...e.ranges.map(e=>_.transformRange(e,n)))}),Object.entries(r).forEach(([e,r])=>{Object.entries(r).forEach(([r,i])=>{(t==null?void 0:t.getUnitId())===e&&(n==null?void 0:n.getSheetId())===r?this.validatorRanges(e,r,i):requestIdleCallback(()=>{this.validatorRanges(e,r,i)})})})};this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.pipe(ze(()=>this._lifecycleService.lifecycle$.pipe(Be(e=>e===g.Rendered)))).subscribe(e)),this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.pipe(Be(()=>this._lifecycleService.stage>=g.Rendered),ae(20)).subscribe(e))}async _validatorByCell(e,t,n,r){let a=e.getUnitId(),o=t.getSheetId();if(!y.isDefine(n)||!y.isDefine(r))throw Error(`row or col is not defined, row: ${n}, col: ${r}`);let s=n,c=r,l=t.getMergedCell(n,r);l&&(s=l.startRow,c=l.startColumn);let u=this._sheetDataValidationModel.getRuleByLocation(a,o,s,c);return u?new Promise(n=>{this._sheetDataValidationModel.validator(u,{unitId:a,subUnitId:o,row:s,col:c,worksheet:t,workbook:e},e=>{n(e)})}):i.VALID}async validatorCell(e,t,n,r){let i=this._univerInstanceService.getUnit(e,b.UNIVER_SHEET);if(!i)throw Error(`cannot find current workbook, unitId: ${e}`);let a=i.getSheetBySheetId(t);if(!a)throw Error(`cannot find current worksheet, sheetId: ${t}`);return this._validatorByCell(i,a,n,r)}async validatorRanges(e,t,n){if(!n.length)return Promise.resolve([]);let r=this._univerInstanceService.getUnit(e,b.UNIVER_SHEET);if(!r)throw Error(`cannot find current workbook, unitId: ${e}`);let a=r.getSheetBySheetId(t);if(!a)throw Error(`cannot find current worksheet, sheetId: ${t}`);let o=this._sheetDataValidationModel.getRules(e,t).map(e=>e.ranges).flat(),s=n.map(e=>o.map(t=>le(e,t))).flat().filter(Boolean),c=[],l=await Promise.all(s.map((e,t)=>{let n=[];for(let i=e.startRow;i<=e.endRow;i++)for(let o=e.startColumn;o<=e.endColumn;o++){n.push(this._validatorByCell(r,a,i,o));let e=a.getMergedCell(i,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:n,resultColIndex:r,row:a,col:o})=>{if(l[n][r]===i.VALIDATING){var s;l[n][r]=(s=this._dataValidationCacheService.getValue(e,t,a,o))==null?i.VALID:s}}),l}async validatorWorksheet(e,t){let n=this._univerInstanceService.getUnit(e,b.UNIVER_SHEET);if(!n)throw Error(`cannot find current workbook, unitId: ${e}`);let r=n.getSheetBySheetId(t);if(!r)throw Error(`cannot find current worksheet, sheetId: ${t}`);let i=this._sheetDataValidationModel.getRules(e,t);return await Promise.all(i.map(e=>Promise.all(e.ranges.map(e=>{let t=[];return _.foreach(e,(e,i)=>{t.push(this._validatorByCell(n,r,e,i))}),Promise.all(t)})))),this._dataValidationCacheService.ensureCache(e,t)}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,t,n){let r=this._sheetDataValidationModel.getRuleObjectMatrix(e,t),i=new Set;return n.forEach(e=>{_.foreach(e,(e,t)=>{let n=r.getValue(e,t);n&&i.add(n)})}),Array.from(i).map(n=>this._sheetDataValidationModel.getRuleById(e,t,n)).filter(Boolean)}getDataValidation(e,t,n){return this.getDataValidations(e,t,n)[0]}};Q=F([P(0,f),P(1,p(q)),P(2,p(I)),P(3,p(h))],Q);let $=class extends te{constructor(e=kt,t,n,r){super(),this._config=e,this._injector=t,this._commandService=n,this._configService=r;let{...i}=fe({},kt,this._config);this._configService.setConfig(Ot,i)}onStarting(){[[I],[G],[K],[V],[Q],[q],[Lt],[Tt],[Mt],[jt],[At]].forEach(e=>{this._injector.add(e)}),[_t,gt,vt,yt,Ct,xt,bt].forEach(e=>{this._commandService.registerCommand(e)}),this._injector.get(I),this._injector.get(Q),this._injector.get(Lt),this._injector.get(At),this._injector.get(jt)}onReady(){this._injector.get(Mt)}onRendered(){this._injector.get(Tt)}};N($,`pluginName`,wt),N($,`packageName`,Et),N($,`version`,Dt),N($,`type`,b.UNIVER_SHEET),$=F([o(Ue,ge),P(1,p(m)),P(2,c),P(3,l)],$);function Rt(e){let t=e.get(Pe).getCurrentSelections().map(e=>e.range);return{uid:ce(6),type:a.DECIMAL,operator:n.EQUAL,formula1:`100`,ranges:t==null?[{startColumn:0,endColumn:0,startRow:0,endRow:0}]:t}}const zt=`data-validation.custom-formula-input`,Bt=`data-validation.formula-input`,Vt=`data-validation.list-formula-input`,Ht=`data-validation.checkbox-formula-input`;export{_t as AddSheetDataValidationCommand,Bt as BASE_FORMULA_INPUT_NAME,Xe as CHECKBOX_FORMULA_1,Ze as CHECKBOX_FORMULA_2,Ht as CHECKBOX_FORMULA_INPUT_NAME,zt as CUSTOM_FORMULA_INPUT_NAME,$e as CheckboxValidator,bt as ClearRangeDataValidationCommand,wt as DATA_VALIDATION_PLUGIN_NAME,I as DataValidationCacheService,V as DataValidationCustomFormulaService,Tt as DataValidationFormulaController,K as DataValidationFormulaService,G as DataValidationListCacheService,at as DateValidator,Vt as LIST_FORMULA_INPUT_NAME,Ft as ListMultipleValidator,ft as ListValidator,xt as RemoveSheetAllDataValidationCommand,Ct as RemoveSheetDataValidationCommand,q as SheetDataValidationModel,Q as SheetsDataValidationValidatorService,$ as UniverSheetsDataValidationPlugin,yt as UpdateSheetDataValidationOptionsCommand,gt as UpdateSheetDataValidationRangeCommand,vt as UpdateSheetDataValidationSettingCommand,Rt as createDefaultNewRule,U as deserializeListOptions,Z as getCellValueNumber,H as getCellValueOrigin,Je as getDataValidationCellValue,ht as getDataValidationDiffMutations,R as getFormulaCellData,L as getFormulaResult,W as getTransformedFormula,z as isLegalFormulaResult,qe as serializeListOptions,J as transformCheckboxValue};
1
+ import{CellValueType as e,CommandType as t,DataValidationOperator as n,DataValidationRenderMode as r,DataValidationStatus as i,DataValidationType as a,DependentOn as o,Disposable as s,ICommandService as c,IConfigService as l,IPermissionService as u,IUndoRedoService as d,IUniverInstanceService as f,Inject as p,Injector as m,LifecycleService as h,LifecycleStages as g,ObjectMatrix as ee,Plugin as te,RBush as ne,Range as _,Rectangle as v,RxDisposable as re,Tools as y,UniverInstanceType as b,WrapStrategy as ie,bufferDebounceTime as ae,dayjs as oe,debounce as se,generateRandomId as ce,getIntersectRange as le,getOriginCellValue as ue,isFormulaString as x,isRangesEqual as de,merge as fe,numfmt as S,sequenceExecute as pe,toDisposable as me}from"@univerjs/core";import{AddDataValidationMutation as C,BaseDataValidator as w,DataValidationModel as T,DataValidatorRegistryService as E,RemoveDataValidationMutation as D,TextLengthErrorTitleMap as he,UniverDataValidationPlugin as ge,UpdateDataValidationMutation as O,UpdateRuleType as k,getRuleOptions as _e,getRuleSetting as ve}from"@univerjs/data-validation";import{ERROR_TYPE_SET as ye,LexerTreeBuilder as A,OtherFormulaBizType as be,RegisterOtherFormulaService as xe,deserializeRangeWithSheet as Se,deserializeRangeWithSheetWithCache as Ce,isReferenceString as we,operatorToken as Te,sequenceNodeType as Ee}from"@univerjs/engine-formula";import{ClearSelectionAllCommand as De,CopySheetCommand as Oe,RefRangeService as ke,RemoveSheetCommand as Ae,RemoveSheetMutation as je,SetRangeValuesMutation as j,SetRangeValuesUndoMutationFactory as Me,SheetInterceptorService as Ne,SheetsSelectionsService as Pe,WorksheetViewPermission as Fe,getSheetCommandTarget as Ie,handleCommonDefaultRangeChangeWithEffectRefCommands as Le}from"@univerjs/sheets";import{Subject as Re,bufferWhen as ze,filter as Be}from"rxjs";import{UnitAction as Ve}from"@univerjs/protocol";import{FormulaRefRangeService as He,UniverSheetsFormulaPlugin as Ue}from"@univerjs/sheets-formula";function M(e){"@babel/helpers - typeof";return M=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},M(e)}function We(e,t){if(M(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(M(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Ge(e){var t=We(e,`string`);return M(t)==`symbol`?t:t+``}function N(e,t,n){return(t=Ge(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function P(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 I=class extends s{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._sheetDataValidationModel=n,N(this,`_cacheMatrix`,new Map),N(this,`_dirtyRanges$`,new Re),N(this,`dirtyRanges$`,this._dirtyRanges$.asObservable()),this._initDirtyRanges(),this._initSheetRemove()}_initDirtyRanges(){this.disposeWithMe(this._commandService.onCommandExecuted((e,t)=>{if(e.id===j.id&&!(t!=null&&t.onlyLocal)){let{cellValue:t,unitId:n,subUnitId:r}=e.params;if(t){let e=new ee(t).getDataRange();if(e.endRow===-1)return;let i=this._sheetDataValidationModel.getRules(n,r).map(e=>e.ranges).flat().map(t=>le(t,e)).filter(Boolean);i.length&&this.markRangeDirty(n,r,i,!0)}}}))}_initSheetRemove(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===je.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===b.UNIVER_SHEET&&this._cacheMatrix.delete(e.getUnitId())}))}_ensureCache(e,t){let n=this._cacheMatrix.get(e);n||(n=new Map,this._cacheMatrix.set(e,n));let r=n.get(t);return r||(r=new ee,n.set(t,r)),r}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,t,n,r){let i=this._ensureCache(e,t);n.forEach(e=>{_.foreach(e,(e,t)=>{i.getValue(e,t)!==void 0&&i.setValue(e,t,void 0)})}),this._dirtyRanges$.next({unitId:e,subUnitId:t,ranges:n,isSetRange:r})}_deleteRange(e,t,n){let r=this._ensureCache(e,t);n.forEach(e=>{_.foreach(e,(e,t)=>{r.realDeleteValue(e,t)})}),this._dirtyRanges$.next({unitId:e,subUnitId:t,ranges:n})}getValue(e,t,n,r){return this._ensureCache(e,t).getValue(n,r)}};I=F([P(0,p(c)),P(1,p(f)),P(2,p(T))],I);function L(e){var t;return e==null||(t=e[0])==null||(t=t[0])==null?void 0:t.v}function R(e){var t;return e==null||(t=e[0])==null?void 0:t[0]}function z(e){return!ye.has(e)}function B(e,t){var n;let r=t.getValidatorItem(e);return(n=r==null?void 0:r.offsetFormulaByRange)==null?!1:n}let V=class extends s{constructor(e,t,n,r,i){super(),this._instanceSrv=e,this._registerOtherFormulaService=t,this._dataValidationModel=n,this._dataValidationCacheService=r,this._validatorRegistryService=i,N(this,`_ruleFormulaMap`,new Map),N(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 t in e){let n=e[t];if(this._instanceSrv.getUnitType(t)===b.UNIVER_SHEET)for(let e in n){let r=n[e],{ruleFormulaMap:i}=this._ensureMaps(t,e);r.forEach(n=>{var r,a;let o=i.get((r=n.extra)==null?void 0:r.ruleId),s=this._dataValidationModel.getRuleById(t,e,(a=n.extra)==null?void 0:a.ruleId);s&&o&&this._dataValidationCacheService.markRangeDirty(t,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,r,i){return this._registerOtherFormulaService.registerFormulaWithRange(e,t,r,i,{ruleId:n},be.DATA_VALIDATION_CUSTOM,n)}_handleDirtyRanges(e,t,n){this._dataValidationModel.getRules(e,t).forEach(r=>{let i=r.ranges;v.doAnyRangesIntersect(i,n)&&this.makeRuleDirty(e,t,r.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,t,n,r,i,a){let{ruleFormulaMap:o,ruleFormulaMap2:s}=this._ensureMaps(e,t),c=a[0].startRow,l=a[0].startColumn;if(r&&x(r)){let i=this._registerFormula(e,t,n,r,a);o.set(n,{formula:r,originCol:l,originRow:c,formulaId:i})}if(i&&x(i)){let r=this._registerFormula(e,t,n,i,a);s.set(n,{formula:i,originCol:l,originRow:c,formulaId:r})}}addRule(e,t,n){if(B(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 R(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 R(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 R(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 R(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([P(0,f),P(1,p(xe)),P(2,p(T)),P(3,p(I)),P(4,p(E))],V);function H(e){return ue(e)}function Ke(e){var t;return String((t=H(e))==null?``:t)}function qe(e){return e.filter(Boolean).join(`,`)}function U(e){return e.split(`,`).filter(Boolean)}function Je(e){let t=H(e);return t==null?``:t.toString()}function W(e,t,n){let{formula1:r,formula2:i}=t,a=t.ranges[0].startRow,o=t.ranges[0].startColumn,s=n.row-a,c=n.col-o;return{transformedFormula1:x(r)?e.moveFormulaRefOffset(r,c,s,!0):r,transformedFormula2:x(i)?e.moveFormulaRefOffset(i,c,s,!0):i}}let G=class extends s{constructor(e,t){super(),this._injector=e,this._dataValidationModel=t,N(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(K).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,t,n,r){var i;let{formula1:a=``,formula2:o=``}=n,s=x(a)?this._getRuleFormulaResultSet(r==null||(i=r[0])==null||(i=i.result)==null||(i=i[0])==null?void 0:i[0]):U(a),c=o.split(`,`),l=s.map((e,t)=>({label:e,color:c[t]||``})),u={};for(let e of l)e.color&&(u[e.label]=e.color);let d={list:s,listWithColor:l,colorMap:u,set:new Set(s)};return this.setCache(e,t,n.uid,d),d}_getRuleFormulaResultSet(e){if(!e)return[];let t=new Set;for(let r=0,i=e.length;r<i;r++){let i=e[r];if(i)for(let e=0,r=i.length;e<r;e++){let r=i[e],a=H(r);if(a!=null){var n;if(typeof a!=`string`&&typeof(r==null?void 0:r.s)==`object`&&!((n=r.s)==null||(n=n.n)==null)&&n.pattern){t.add(S.format(r.s.n.pattern,a,{throws:!1}));continue}let e=typeof a==`string`?a:String(a);z(e)&&t.add(e)}}}return[...t]}};G=F([P(0,p(m)),P(1,p(T))],G);let K=class extends s{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,N(this,`_formulaRuleMap`,new Map),this._initFormulaResultHandler()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(e=>{for(let t in e){let n=e[t];if(this._instanceService.getUnitType(t)===b.UNIVER_SHEET)for(let e in n){let r=n[e],i=this._ensureRuleFormulaMap(t,e);r.forEach(n=>{var r;let a=(r=n.extra)==null?void 0:r.ruleId;if(a&&i.get(a)){let n=this._dataValidationModel.getRuleById(t,e,a);n&&(this._listCacheService.markRuleDirty(t,e,a),this._dataValidationCacheService.markRangeDirty(t,e,n.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,r){return this._registerOtherFormulaService.registerFormulaWithRange(e,t,n,[{startColumn:0,endColumn:0,startRow:0,endRow:0}],{ruleId:r},be.DATA_VALIDATION,r)}addRule(e,t,n){if(!B(n.type,this._validatorRegistryService)&&n.type!==a.CHECKBOX){let{formula1:r,formula2:i,uid:a}=n,o=x(r),s=x(i);if(!o&&!s)return;let c=this._ensureRuleFormulaMap(e,t),l=[void 0,void 0];o&&(l[0]={id:this._registerSingleFormula(e,t,r,a),text:r}),s&&(l[1]={id:this._registerSingleFormula(e,t,i,a),text:i}),c.set(a,l)}}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)}};K=F([P(0,f),P(1,p(xe)),P(2,p(I)),P(3,p(T)),P(4,p(E)),P(5,p(G))],K);var Ye=class e{constructor(e,t,n,r,i=!1){this._unitId=t,this._subUnitId=n,this._univerInstanceService=r,this._disableTree=i,N(this,`_map`,void 0),N(this,`_tree`,new ne),N(this,`_dirty`,!0),N(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}),N(this,`_debonceBuildTree`,se(this._buildTree,0)),this._map=e,this._buildTree()}get _worksheet(){var e;return(e=this._univerInstanceService.getUnit(this._unitId,b.UNIVER_SHEET))==null?void 0:e.getSheetBySheetId(this._subUnitId)}_addRule(e,t){if(!this._worksheet)return;let n=v.mergeRanges(t.map(e=>_.transformRange(e,this._worksheet)));this._map.forEach((e,t)=>{let r=v.subtractMulti(e,n);r.length===0?this._map.delete(t):this._map.set(t,r)}),this._dirty=!0,this._map.set(e,n),this._debonceBuildTree()}addRule(e){this._addRule(e.uid,e.ranges)}removeRange(e){if(!this._worksheet)return;let t=e.map(e=>_.transformRange(e,this._worksheet));this._map.forEach((e,n)=>{let r=v.subtractMulti(e,t);r.length===0?this._map.delete(n):this._map.set(n,r)}),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:t})=>{if(!t.length)return;let n=this._map.get(e);n?(this._map.set(e,v.mergeRanges([...n,...t])),n=this._map.get(e)):(n=t,this._map.set(e,n)),this._map.forEach((n,r)=>{if(r===e)return;let i=v.subtractMulti(n,t);i.length===0?this._map.delete(r):this._map.set(r,i)})}),this._dirty=!0,this._debonceBuildTree()}diff(e){let t=[],n=0;return e.forEach((e,r)=>{var i;let a=(i=this._map.get(e.uid))==null?[]:i,o=e.ranges;a.length!==0&&(a.length!==o.length||a.some((e,t)=>!v.equals(e,o[t])))&&t.push({type:`update`,ruleId:e.uid,oldRanges:o,newRanges:v.sort(a),rule:e}),a.length===0&&(t.push({type:`delete`,rule:e,index:r-n}),n++)}),t}diffWithAddition(e,t){let n=[],r=0;return e.forEach((e,t)=>{var i;let a=(i=this._map.get(e.uid))==null?[]:i,o=e.ranges;a.length!==0&&(a.length!==o.length||a.some((e,t)=>!v.equals(e,o[t])))&&n.push({type:`update`,ruleId:e.uid,oldRanges:o,newRanges:v.sort(a),rule:e}),a.length===0&&(n.push({type:`delete`,rule:e,index:t-r}),r++)}),Array.from(t).forEach(e=>{var t;let r=(t=this._map.get(e.uid))==null?[]:t;n.push({type:`add`,rule:{...e,ranges:v.sort(r)}})}),n}clone(){return new e(new Map(y.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 q=class extends s{constructor(e,t,n,r,i,a,o){super(),this._dataValidationModel=e,this._univerInstanceService=t,this._dataValidatorRegistryService=n,this._dataValidationCacheService=r,this._dataValidationFormulaService=i,this._dataValidationCustomFormulaService=a,this._commandService=o,N(this,`_ruleMatrixMap`,new Map),N(this,`_validStatusChange$`,new Re),N(this,`_ruleChange$`,new Re),N(this,`ruleChange$`,this._ruleChange$.asObservable()),N(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===je.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 Ye(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,n,r,i){let a=this._ensureRuleMatrix(e,t),o={...r,...i.payload};i.type===k.RANGE?a.updateRange(n,i.payload):i.type===k.ALL&&a.updateRange(n,i.payload.ranges),this._dataValidationCacheService.removeRule(e,t,r),this._dataValidationCacheService.addRule(e,t,o),this._dataValidationFormulaService.removeRule(e,t,r.uid),this._dataValidationFormulaService.addRule(e,t,o),this._dataValidationCustomFormulaService.deleteByRuleId(e,t,n),this._dataValidationCustomFormulaService.addRule(e,t,o)}_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,t,n){let{col:r,row:a,unitId:o,subUnitId:s,worksheet:c}=t,l=(t,i)=>{n&&n(t,i),i&&this._validStatusChange$.next({unitId:o,subUnitId:s,ruleId:e.uid,status:t,row:a,col:r})},u=c.getCellValueOnly(a,r),d=this.getValidator(e.type),f=c.getCellRaw(a,r),p=H(f);if(d){let n=this._dataValidationCacheService.ensureCache(o,s),c=n.getValue(a,r);return c==null?(n.setValue(a,r,i.VALIDATING),d.validator({value:p,unitId:o,subUnitId:s,row:a,column:r,worksheet:t.worksheet,workbook:t.workbook,interceptValue:H(u),t:f==null?void 0:f.t},e).then(e=>{let t=e?i.VALID:i.INVALID,o=n.getValue(a,r);t===i.VALID?n.realDeleteValue(a,r):n.setValue(a,r,t),l(t,c!==o)}),i.VALIDATING):(l(c==null?i.VALID:c,!1),c==null?i.VALID:c)}else return l(i.VALID,!1),i.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()}};q=F([P(0,p(T)),P(1,f),P(2,p(E)),P(3,p(I)),P(4,p(K)),P(5,p(V)),P(6,c)],q);const Xe=1,Ze=0;function Qe(e,t){return y.isBlank(e)?t.t(`dataValidation.validFail.value`):x(e)?t.t(`dataValidation.validFail.primitive`):``}const J=e=>y.isDefine(e)&&String(e).toLowerCase()===`true`?`1`:String(e).toLowerCase()===`false`?`0`:e;var $e=class extends w{constructor(...e){super(...e),N(this,`id`,a.CHECKBOX),N(this,`title`,`dataValidation.checkbox.title`),N(this,`operators`,[]),N(this,`scopes`,[`sheet`]),N(this,`order`,41),N(this,`offsetFormulaByRange`,!1),N(this,`_formulaService`,this.injector.get(K)),N(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,t,n){let{formula1:r,formula2:i}=e,a=r===i;if(y.isBlank(r)&&y.isBlank(i))return{success:!0};if(a)return{success:!1,formula1:this.localeService.t(`dataValidation.validFail.checkboxEqual`),formula2:this.localeService.t(`dataValidation.validFail.checkboxEqual`)};let o=Qe(r,this.localeService),s=Qe(i,this.localeService);return{success:!o&&!s,formula1:o,formula2:s}}async parseFormula(e,t,n){var r,i;let{formula1:a=1,formula2:o=0}=e,s=await this._formulaService.getRuleFormulaResult(t,n,e.uid),c=x(a)?L(s==null||(r=s[0])==null||(r=r.result)==null?void 0:r[0][0]):a,l=x(o)?L(s==null||(i=s[1])==null||(i=i.result)==null?void 0:i[0][0]):o,u=z(String(c))&&z(String(l));return{formula1:J(c),formula2:J(l),originFormula1:c,originFormula2:l,isFormulaValid:u}}getExtraStyle(e,t){return{tb:ie.CLIP}}parseFormulaSync(e,t,n){var r,i;let{formula1:a=1,formula2:o=0}=e,s=this._formulaService.getRuleFormulaResultSync(t,n,e.uid),c=x(a)?L(s==null||(r=s[0])==null||(r=r.result)==null?void 0:r[0][0]):a,l=x(o)?L(s==null||(i=s[1])==null||(i=i.result)==null?void 0:i[0][0]):o,u=z(String(c))&&z(String(l));return{formula1:J(c),formula2:J(l),originFormula1:c,originFormula2:l,isFormulaValid:u}}async isValidType(e,t,n){let{value:r,unitId:i,subUnitId:a}=e,{formula1:o,formula2:s,originFormula1:c,originFormula2:l}=await this.parseFormula(n,i,a);return!y.isDefine(o)||!y.isDefine(s)?!0:y.isDefine(r)&&(String(r)===String(o)||String(r)===String(s)||String(r)===String(c==null?``:c)||String(r)===String(l==null?``:l))}generateRuleErrorMessage(e){return this.localeService.t(`dataValidation.checkbox.error`)}generateRuleName(e){return this.titleStr}};const et={[n.BETWEEN]:`dataValidation.date.operators.between`,[n.EQUAL]:`dataValidation.date.operators.equal`,[n.GREATER_THAN]:`dataValidation.date.operators.greaterThan`,[n.GREATER_THAN_OR_EQUAL]:`dataValidation.date.operators.greaterThanOrEqual`,[n.LESS_THAN]:`dataValidation.date.operators.lessThan`,[n.LESS_THAN_OR_EQUAL]:`dataValidation.date.operators.lessThanOrEqual`,[n.NOT_BETWEEN]:`dataValidation.date.operators.notBetween`,[n.NOT_EQUAL]:`dataValidation.date.operators.notEqual`};n.BETWEEN,n.EQUAL,n.GREATER_THAN,n.GREATER_THAN_OR_EQUAL,n.LESS_THAN,n.LESS_THAN_OR_EQUAL,n.NOT_BETWEEN,n.NOT_EQUAL;const tt={[n.BETWEEN]:`dataValidation.date.ruleName.between`,[n.EQUAL]:`dataValidation.date.ruleName.equal`,[n.GREATER_THAN]:`dataValidation.date.ruleName.greaterThan`,[n.GREATER_THAN_OR_EQUAL]:`dataValidation.date.ruleName.greaterThanOrEqual`,[n.LESS_THAN]:`dataValidation.date.ruleName.lessThan`,[n.LESS_THAN_OR_EQUAL]:`dataValidation.date.ruleName.lessThanOrEqual`,[n.NOT_BETWEEN]:`dataValidation.date.ruleName.notBetween`,[n.NOT_EQUAL]:`dataValidation.date.ruleName.notEqual`,NONE:`dataValidation.date.ruleName.legal`},nt={[n.BETWEEN]:`dataValidation.date.errorMsg.between`,[n.EQUAL]:`dataValidation.date.errorMsg.equal`,[n.GREATER_THAN]:`dataValidation.date.errorMsg.greaterThan`,[n.GREATER_THAN_OR_EQUAL]:`dataValidation.date.errorMsg.greaterThanOrEqual`,[n.LESS_THAN]:`dataValidation.date.errorMsg.lessThan`,[n.LESS_THAN_OR_EQUAL]:`dataValidation.date.errorMsg.lessThanOrEqual`,[n.NOT_BETWEEN]:`dataValidation.date.errorMsg.notBetween`,[n.NOT_EQUAL]:`dataValidation.date.errorMsg.notEqual`,NONE:`dataValidation.date.errorMsg.legal`},rt=[n.BETWEEN,n.NOT_BETWEEN],Y=`{FORMULA1}`,X=`{FORMULA2}`,it=e=>{var t,n;if(e==null||typeof e==`boolean`)return;if(typeof e==`number`||!Number.isNaN(+e))return+e;let r=(t=S.parseDate(e))==null?void 0:t.v;return y.isDefine(r)?r:(n=S.parseDate(oe(e).format(`YYYY-MM-DD HH:mm:ss`)))==null?void 0:n.v};var at=class extends w{constructor(...e){super(...e),N(this,`id`,a.DATE),N(this,`title`,`dataValidation.date.title`),N(this,`order`,40),N(this,`operators`,[n.BETWEEN,n.EQUAL,n.GREATER_THAN,n.GREATER_THAN_OR_EQUAL,n.LESS_THAN,n.LESS_THAN_OR_EQUAL,n.NOT_BETWEEN,n.NOT_EQUAL]),N(this,`scopes`,[`sheet`]),N(this,`_customFormulaService`,this.injector.get(V)),N(this,`_lexerTreeBuilder`,this.injector.get(A))}async parseFormula(e,t,n,r,i){let a=await this._customFormulaService.getCellFormulaValue(t,n,e.uid,r,i),o=await this._customFormulaService.getCellFormula2Value(t,n,e.uid,r,i),{formula1:s,formula2:c}=e,l=z(String(a==null?void 0:a.v))&&z(String(o==null?void 0:o.v));return{formula1:it(x(s)?a==null?void 0:a.v:s),formula2:it(x(c)?o==null?void 0:o.v:c),isFormulaValid:l}}async isValidType(e){let{interceptValue:t,value:n}=e;return typeof n==`number`&&typeof t==`string`||typeof t==`string`?!!S.parseDate(t):!1}_validatorSingleFormula(e){return!y.isBlank(e)&&(x(e)||!Number.isNaN(+e)||!!(e&&S.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(rt.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,t,n){let{formula1:r,formula2:i,bizInfo:a}=e,o=e=>{if(!e)return e;let t;if(!Number.isNaN(+e))t=S.dateFromSerial(+e);else{var n;let r=(n=S.parseDate(e))==null?void 0:n.v;if(r==null)return``;t=S.dateFromSerial(r)}return oe(`${t[0]}/${t[1]}/${t[2]} ${t[3]}:${t[4]}:${t[5]}`).format(a!=null&&a.showTime?`YYYY-MM-DD HH:mm:ss`:`YYYY-MM-DD`)};return{formula1:x(r)?r:o(`${r}`),formula2:x(i)?i:o(`${i}`)}}transform(e,t,n){let{value:r}=e;return{...e,value:it(r)}}get operatorNames(){return this.operators.map(e=>this.localeService.t(et[e]))}generateRuleName(e){var t,n;if(!e.operator)return this.localeService.t(tt.NONE);let r=this.localeService.t(tt[e.operator]).replace(Y,(t=e.formula1)==null?``:t).replace(X,(n=e.formula2)==null?``:n);return`${this.titleStr} ${r}`}generateRuleErrorMessage(e,t){if(!e.operator)return this.titleStr;let{transformedFormula1:n,transformedFormula2:r}=W(this._lexerTreeBuilder,e,t);return`${this.localeService.t(nt[e.operator]).replace(Y,n==null?``:n).replace(X,r==null?``:r)}`}};n.BETWEEN,n.EQUAL,n.GREATER_THAN,n.GREATER_THAN_OR_EQUAL,n.LESS_THAN,n.LESS_THAN_OR_EQUAL,n.NOT_BETWEEN,n.NOT_EQUAL,n.BETWEEN,n.EQUAL,n.GREATER_THAN,n.GREATER_THAN_OR_EQUAL,n.LESS_THAN,n.LESS_THAN_OR_EQUAL,n.NOT_BETWEEN,n.NOT_EQUAL;const ot={[n.BETWEEN]:`dataValidation.errorMsg.between`,[n.EQUAL]:`dataValidation.errorMsg.equal`,[n.GREATER_THAN]:`dataValidation.errorMsg.greaterThan`,[n.GREATER_THAN_OR_EQUAL]:`dataValidation.errorMsg.greaterThanOrEqual`,[n.LESS_THAN]:`dataValidation.errorMsg.lessThan`,[n.LESS_THAN_OR_EQUAL]:`dataValidation.errorMsg.lessThanOrEqual`,[n.NOT_BETWEEN]:`dataValidation.errorMsg.notBetween`,[n.NOT_EQUAL]:`dataValidation.errorMsg.notEqual`,NONE:`dataValidation.errorMsg.legal`};function Z(e){return+e}var st=class extends w{constructor(...e){super(...e),N(this,`_customFormulaService`,this.injector.get(V)),N(this,`id`,a.DECIMAL),N(this,`_lexerTreeBuilder`,this.injector.get(A)),N(this,`title`,`dataValidation.decimal.title`),N(this,`order`,20),N(this,`operators`,[n.BETWEEN,n.EQUAL,n.GREATER_THAN,n.GREATER_THAN_OR_EQUAL,n.LESS_THAN,n.LESS_THAN_OR_EQUAL,n.NOT_BETWEEN,n.NOT_EQUAL]),N(this,`scopes`,[`sheet`])}_isFormulaOrNumber(e){return!y.isBlank(e)&&(x(e)||!Number.isNaN(+e))}async isValidType(e,t,n){let{value:r}=e;return!Number.isNaN(Z(r))}transform(e,t,n){let{value:r}=e;return{...e,value:Z(r)}}_parseNumber(e){return e==null?NaN:+e}async parseFormula(e,t,n,r,i){let a=await this._customFormulaService.getCellFormulaValue(t,n,e.uid,r,i),o=await this._customFormulaService.getCellFormula2Value(t,n,e.uid,r,i),{formula1:s,formula2:c}=e,l=z(String(a==null?void 0:a.v))&&z(String(o==null?void 0:o.v));return{formula1:this._parseNumber(x(s)?a==null?void 0:a.v:s),formula2:this._parseNumber(x(c)?o==null?void 0:o.v:c),isFormulaValid:l}}validatorFormula(e,t,n){let r=e.operator;if(!r)return{success:!0};let i=y.isDefine(e.formula1)&&this._isFormulaOrNumber(e.formula1),a=y.isDefine(e.formula2)&&this._isFormulaOrNumber(e.formula2),o=rt.includes(r),s=this.localeService.t(`dataValidation.validFail.number`);return o?{success:i&&a,formula1:i?void 0:s,formula2:a?void 0:s}:{success:i,formula1:i?``:s}}generateRuleErrorMessage(e,t){if(!e.operator)return this.localeService.t(ot.NONE).replace(`{TYPE}`,this.titleStr);let{transformedFormula1:n,transformedFormula2:r}=W(this._lexerTreeBuilder,e,t);return`${this.localeService.t(ot[e.operator]).replace(Y,n==null?``:n).replace(X,r==null?``:r)}`}};function ct(e){if(!e)return[];let t=new Set;for(let r=0,i=e.length;r<i;r++){let i=e[r];if(i)for(let e=0,r=i.length;e<r;e++){let r=i[e],a=H(r);if(a!=null){var n;if(typeof a!=`string`&&typeof(r==null?void 0:r.s)==`object`&&!((n=r.s)==null||(n=n.n)==null)&&n.pattern){t.add(S.format(r.s.n.pattern,a,{throws:!1}));continue}let e=typeof a==`string`?a:String(a);z(e)&&t.add(e)}}}return[...t]}const lt=[`if`,`indirect`,`choose`,`offset`];function ut(e,t){if(!x(e)||we(e.slice(1)))return!0;let n=t.sequenceNodesBuilder(e);return n&&n.some(e=>typeof e==`object`&&e.nodeType===Ee.FUNCTION&&lt.indexOf(e.token.toLowerCase())>-1)}function dt(e,t){let{formula1:n=``,ranges:r}=e;if(we(n.slice(1))){let e=Se(n.slice(1));if((!e.sheetName||e.sheetName===t)&&r.some(t=>v.intersects(t,e.range)))return!0}return!1}var ft=class extends w{constructor(...e){super(...e),N(this,`formulaService`,this.injector.get(K)),N(this,`_lexer`,this.injector.get(A)),N(this,`_univerInstanceService`,this.injector.get(f)),N(this,`_listCacheService`,this.injector.get(G)),N(this,`order`,50),N(this,`offsetFormulaByRange`,!1),N(this,`id`,a.LIST),N(this,`title`,`dataValidation.list.title`),N(this,`operators`,[]),N(this,`scopes`,[`sheet`]),N(this,`skipDefaultFontRender`,e=>e.renderMode!==r.TEXT)}validatorFormula(e,t,n){var r,i;let a=!y.isBlank(e.formula1),o=ut((r=e.formula1)==null?``:r,this._lexer),s=(i=this._univerInstanceService.getUnit(t,b.UNIVER_SHEET))==null||(i=i.getSheetBySheetId(n))==null?void 0:i.getName(),c=dt(e,s==null?``:s);return{success:!!(a&&o&&!c),formula1:a?o?c?this.localeService.t(`dataValidation.validFail.listIntersects`):void 0:this.localeService.t(`dataValidation.validFail.listInvalid`):this.localeService.t(`dataValidation.validFail.list`)}}getExtraStyle(e,t,{style:n}){var i;let o=(i=n.tb===ie.OVERFLOW?ie.CLIP:n.tb)==null?ie.WRAP:i;if(e.type===a.LIST&&(e.renderMode===r.ARROW||e.renderMode===r.TEXT)){let n=this.getListWithColorMap(e)[`${t==null?``:t}`];if(n)return{bg:{rgb:n},tb:o}}return{tb:o}}parseCellValue(e){return U(e.toString())}async parseFormula(e,t,n){var r;let i=await this.formulaService.getRuleFormulaResult(t,n,e.uid),a=L(i==null||(r=i[0])==null||(r=r.result)==null?void 0:r[0][0]);return{formula1:void 0,formula2:void 0,isFormulaValid:z(String(a))}}async isValidType(e,t,n){let{value:r,unitId:i,subUnitId:a}=e,{formula1:o=``}=n,s=x(o)?this._listCacheService.getOrCompute(i,a,n).list:U(o);return this.parseCellValue(r).every(e=>s.includes(e))}generateRuleName(){return this.localeService.t(`dataValidation.list.name`)}generateRuleErrorMessage(){return this.localeService.t(`dataValidation.list.error`)}_getUnitAndSubUnit(e,t){var n,r;let i=(n=e?this._univerInstanceService.getUniverSheetInstance(e):void 0)==null?this._univerInstanceService.getCurrentUnitForType(b.UNIVER_SHEET):n;if(!i)return null;let a=(r=t?i.getSheetBySheetId(t):void 0)==null?i.getActiveSheet():r;return a?{unitId:i.getUnitId(),subUnitId:a.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,t,n){var r;let{formula1:i=``}=e,a=this._getUnitAndSubUnit(t,n);if(!a)return[];let{unitId:o,subUnitId:s}=a,c=await this.formulaService.getRuleFormulaResult(o,s,e.uid);return x(i)?ct(c==null||(r=c[0])==null||(r=r.result)==null?void 0:r[0][0]):U(i)}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}},pt=class extends w{constructor(...e){super(...e),N(this,`id`,a.TEXT_LENGTH),N(this,`title`,`dataValidation.textLength.title`),N(this,`_lexerTreeBuilder`,this.injector.get(A)),N(this,`order`,30),N(this,`operators`,[n.BETWEEN,n.EQUAL,n.GREATER_THAN,n.GREATER_THAN_OR_EQUAL,n.LESS_THAN,n.LESS_THAN_OR_EQUAL,n.NOT_BETWEEN,n.NOT_EQUAL]),N(this,`scopes`,[`sheet`]),N(this,`_customFormulaService`,this.injector.get(V))}_isFormulaOrInt(e){return!y.isBlank(e)&&(x(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}validatorFormula(e,t,n){let r=e.operator;if(!r)return{success:!1};let i=y.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),a=y.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),o=rt.includes(r),s=this.localeService.t(`dataValidation.validFail.number`);return o?{success:i&&a,formula1:i?void 0:s,formula2:a?void 0:s}:{success:i,formula1:s}}_parseNumber(e){return e==null?NaN:+e}async parseFormula(e,t,n,r,i){let a=await this._customFormulaService.getCellFormulaValue(t,n,e.uid,r,i),o=await this._customFormulaService.getCellFormula2Value(t,n,e.uid,r,i),{formula1:s,formula2:c}=e,l=z(String(a==null?void 0:a.v))&&z(String(o==null?void 0:o.v));return{formula1:this._parseNumber(x(s)?a==null?void 0:a.v:s),formula2:this._parseNumber(x(c)?o==null?void 0:o.v:c),isFormulaValid:l}}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:n,transformedFormula2:r}=W(this._lexerTreeBuilder,e,t);return`${this.localeService.t(he[e.operator]).replace(Y,n==null?``:n).replace(X,r==null?``:r)}`}};function mt(e){var t,n;return e?e.p?!((t=(n=e.p.body)==null?void 0:n.dataStream)==null?``:t).slice(0,-2).trim():y.isBlank(e.v):!0}function ht(e,t,n,r,i=`command`,o=!0){let s=r.get(A),c=r.get(E),l=[],u=[],d=r.get(q),p=Ie(r.get(f),{unitId:e,subUnitId:t});if(!p)return{redoMutations:l,undoMutations:u};let{worksheet:m}=p,h=new ee,g=!1;function te(e,t){o&&e.forEach(e=>{_.foreach(e,(e,n)=>{let r=m.getCellRaw(e,n),i=Ke(r);(mt(r)||i===t)&&!(r!=null&&r.p)&&(g=!0,h.setValue(e,n,{v:t,p:null}))})})}if(n.forEach(n=>{switch(n.type){case`delete`:l.push({id:D.id,params:{unitId:e,subUnitId:t,ruleId:n.rule.uid,source:i}}),u.unshift({id:C.id,params:{unitId:e,subUnitId:t,rule:n.rule,index:n.index,source:i}});break;case`update`:{if(B(n.rule.type,c)){let r=n.oldRanges[0].startRow,a=n.oldRanges[0].startColumn,o=n.newRanges[0].startRow,c=n.newRanges[0].startColumn,d=o-r,f=c-a,p=x(n.rule.formula1)?s.moveFormulaRefOffset(n.rule.formula1,f,d):n.rule.formula1,m=x(n.rule.formula2)?s.moveFormulaRefOffset(n.rule.formula2,f,d):n.rule.formula2;p!==n.rule.formula1||m!==n.rule.formula2||!de(n.newRanges,n.oldRanges)?(l.push({id:O.id,params:{unitId:e,subUnitId:t,ruleId:n.ruleId,payload:{type:k.ALL,payload:{formula1:p,formula2:m,ranges:n.newRanges}}}}),u.unshift({id:O.id,params:{unitId:e,subUnitId:t,ruleId:n.ruleId,payload:{type:k.ALL,payload:{formula1:n.rule.formula1,formula2:n.rule.formula2,ranges:n.oldRanges}}}})):(l.push({id:O.id,params:{unitId:e,subUnitId:t,ruleId:n.ruleId,payload:{type:k.RANGE,payload:n.newRanges},source:i}}),u.unshift({id:O.id,params:{unitId:e,subUnitId:t,ruleId:n.ruleId,payload:{type:k.RANGE,payload:n.oldRanges},source:i}}))}else l.push({id:O.id,params:{unitId:e,subUnitId:t,ruleId:n.ruleId,payload:{type:k.RANGE,payload:n.newRanges},source:i}}),u.unshift({id:O.id,params:{unitId:e,subUnitId:t,ruleId:n.ruleId,payload:{type:k.RANGE,payload:n.oldRanges},source:i}});let r=d.getRuleById(e,t,n.ruleId);if(r&&r.type===a.CHECKBOX){let i=d.getValidator(a.CHECKBOX).parseFormulaSync(r,e,t);te(n.newRanges,i.formula2)}break}case`add`:if(l.push({id:C.id,params:{unitId:e,subUnitId:t,rule:n.rule,source:i}}),u.unshift({id:D.id,params:{unitId:e,subUnitId:t,ruleId:n.rule.uid,source:i}}),n.rule.type===a.CHECKBOX){let r=d.getValidator(a.CHECKBOX).parseFormulaSync(n.rule,e,t);te(n.rule.ranges,r.originFormula2)}break;default:break}}),g){let n={id:j.id,params:{unitId:e,subUnitId:t,cellValue:h.getData()}},i={id:j.id,params:Me(r,n.params)};l.push(n),u.push(i)}return{redoMutations:l,undoMutations:u}}const gt={type:t.COMMAND,id:`sheet.command.updateDataValidationRuleRange`,handler(e,t){if(!t)return!1;let{unitId:n,subUnitId:r,ranges:i,ruleId:a}=t,o=e.get(q),s=e.get(c),l=e.get(d);if(!o.getRuleById(n,r,a))return!1;let u=o.getRuleObjectMatrix(n,r).clone();u.updateRange(a,i);let{redoMutations:f,undoMutations:p}=ht(n,r,u.diff(o.getRules(n,r)),e);return l.pushUndoRedo({undoMutations:p,redoMutations:f,unitID:n}),pe(f,s),!0}},_t={type:t.COMMAND,id:`sheet.command.addDataValidation`,handler(e,t){if(!t)return!1;let{unitId:n,subUnitId:r,rule:i}=t,a=e.get(q),o=e.get(c),s=e.get(d),l=a.getRuleObjectMatrix(n,r).clone();l.addRule(i);let u=l.diff(a.getRules(n,r)),f=a.getValidator(i.type),p={unitId:n,subUnitId:r,rule:{...i,...f==null?void 0:f.normalizeFormula(i,n,r)}},{redoMutations:m,undoMutations:h}=ht(n,r,u,e);return m.push({id:C.id,params:p}),h.unshift({id:D.id,params:{unitId:n,subUnitId:r,ruleId:i.uid}}),s.pushUndoRedo({unitID:n,redoMutations:m,undoMutations:h}),pe(m,o),!0}},vt={type:t.COMMAND,id:`sheets.command.update-data-validation-setting`,handler(e,t){if(!t)return!1;let n=e.get(c),r=e.get(d),i=e.get(q),o=e.get(E),{unitId:s,subUnitId:l,ruleId:u,setting:p}=t,m=o.getValidatorItem(p.type);if(!m)return!1;let h=i.getRuleById(s,l,u);if(!h)return!1;let g={...h,...p};if(!m.validatorFormula(g,s,l).success)return!1;let te={unitId:s,subUnitId:l,ruleId:u,payload:{type:k.SETTING,payload:{...p,...m.normalizeFormula(g,s,l)}}},ne=[{id:O.id,params:te}],v={unitId:s,subUnitId:l,ruleId:u,payload:{type:k.SETTING,payload:ve(h)}},re=[{id:O.id,params:v}];if(p.type===a.CHECKBOX){let t=h.ranges,n=Ie(e.get(f),{unitId:s,subUnitId:l});if(n){let r=new ee,{worksheet:i}=n,{formula2:a=0,formula1:o=1}=h,{formula2:c=0,formula1:u=1}=p,d=!1;if(t.forEach(e=>{_.foreach(e,(e,t)=>{let n=i.getCellRaw(e,t),s=Ke(n);(mt(n)||s===String(a))&&!(n!=null&&n.p)?(r.setValue(e,t,{v:c,p:null}),d=!0):s===String(o)&&!(n!=null&&n.p)&&(r.setValue(e,t,{v:u,p:null}),d=!0)})}),d){let t={id:j.id,params:{unitId:s,subUnitId:l,cellValue:r.getData()}},n={id:j.id,params:Me(e,t.params)};ne.push(t),re.push(n)}}}return pe(ne,n).result?(r.pushUndoRedo({unitID:s,redoMutations:ne,undoMutations:re}),!0):!1}},yt={type:t.COMMAND,id:`sheets.command.update-data-validation-options`,handler(e,t){if(!t)return!1;let n=e.get(c),r=e.get(d),i=e.get(q),{unitId:a,subUnitId:o,ruleId:s,options:l}=t,u=i.getRuleById(a,o,s);if(!u)return!1;let f={unitId:a,subUnitId:o,ruleId:s,payload:{type:k.OPTIONS,payload:l}},p=[{id:O.id,params:f}],m={unitId:a,subUnitId:o,ruleId:s,payload:{type:k.OPTIONS,payload:_e(u)}},h=[{id:O.id,params:m}];return r.pushUndoRedo({unitID:a,redoMutations:p,undoMutations:h}),n.executeCommand(O.id,f),!0}},bt={type:t.COMMAND,id:`sheets.command.clear-range-data-validation`,handler(e,t){if(!t)return!1;let{unitId:n,subUnitId:r,ranges:i}=t,a=e.get(c),o=Ie(e.get(f),{unitId:n,subUnitId:r}),s=e.get(q);if(!o)return!1;let l=e.get(d),u=s.getRuleObjectMatrix(n,r).clone();u.removeRange(i);let{redoMutations:p,undoMutations:m}=ht(n,r,u.diff(s.getRules(n,r)),e);return l.pushUndoRedo({unitID:n,redoMutations:p,undoMutations:m}),pe(p,a).result}},xt={type:t.COMMAND,id:`sheet.command.remove-all-data-validation`,handler(e,t){if(!t)return!1;let{unitId:n,subUnitId:r}=t,i=e.get(c),a=e.get(q),o=e.get(d),s=[...a.getRules(n,r)],l={unitId:n,subUnitId:r,ruleId:s.map(e=>e.uid)},u=[{id:D.id,params:l}],f=[{id:C.id,params:{unitId:n,subUnitId:r,rule:s}}];return o.pushUndoRedo({redoMutations:u,undoMutations:f,unitID:n}),i.executeCommand(D.id,l),!0}},St=(e,t)=>{let n=e.get(q),{unitId:r,subUnitId:i,ruleId:a,source:o}=t;if(Array.isArray(a)){let e=a.map(e=>n.getRuleById(r,i,e)).filter(Boolean);return[{id:C.id,params:{unitId:r,subUnitId:i,rule:e,source:o}}]}return[{id:C.id,params:{unitId:r,subUnitId:i,rule:{...n.getRuleById(r,i,a)},index:n.getRuleIndex(r,i,a)}}]},Ct={type:t.COMMAND,id:`sheet.command.remove-data-validation-rule`,handler(e,t){if(!t)return!1;let{unitId:n,subUnitId:r,ruleId:i}=t,a=e.get(c),o=e.get(d),s=e.get(q),l=[{id:D.id,params:t}],u=[{id:C.id,params:{unitId:n,subUnitId:r,rule:{...s.getRuleById(n,r,i)},index:s.getRuleIndex(n,r,i)}}];return o.pushUndoRedo({undoMutations:u,redoMutations:l,unitID:t.unitId}),a.executeCommand(D.id,t),!0}},wt=`SHEET_DATA_VALIDATION_PLUGIN`;let Tt=class extends s{constructor(e,t,n){super(),this._univerInstanceService=e,this._permissionService=t,this._lexerTreeBuilder=n}getFormulaRefCheck(e){let t=this._lexerTreeBuilder.sequenceNodesBuilder(e);if(!t)return!0;for(let e=0;e<t.length;e++){let r=t[e];if(typeof r==`string`)continue;let{token:i}=r,a=Ce(i),o=this._univerInstanceService.getCurrentUnitForType(b.UNIVER_SHEET),s=o.getActiveSheet(),c=o.getUnitId();if(a.sheetName){if(s=o.getSheetBySheetName(a.sheetName),!s)return!1;let e=s==null?void 0:s.getSheetId();if(!this._permissionService.getPermissionPoint(new Fe(c,e).id))return!1}if(!s)return!1;let{startRow:l,endRow:u,startColumn:d,endColumn:f}=a.range;for(let e=l;e<=u;e++)for(let t=d;t<=f;t++){var n;let r=(n=s.getCell(e,t))==null||(n=n.selectionProtection)==null?void 0:n[0];if((r==null?void 0:r[Ve.View])===!1)return!1}}return!0}};Tt=F([P(0,f),P(1,u),P(2,p(A))],Tt);var Et=`@univerjs/sheets-data-validation`,Dt=`0.20.0`;const Ot=`sheets-data-validation.config`;Symbol(Ot);const kt={};let At=class extends s{constructor(e,t,n){super(),this._dataValidationModel=e,this._formulaRefRangeService=t,this._validatorRegistryService=n,N(this,`_disposableMap`,new Map),N(this,`registerRule`,(e,t,n)=>{B(n.type,this._validatorRegistryService)&&this.register(e,t,n)}),this._initRefRange()}_getIdWithUnitId(e,t,n){return`${e}_${t}_${n}`}register(e,t,n){let r=n.ranges,i=n.formula1,a=n.formula2,o=this._formulaRefRangeService.registerRangeFormula(e,t,r,[i==null?``:i,a==null?``:a],o=>{if(o.length===0)return{undos:[{id:C.id,params:{unitId:e,subUnitId:t,rule:n,source:`patched`}}],redos:[{id:D.id,params:{unitId:e,subUnitId:t,ruleId:n.uid,source:`patched`}}]};let s=[],c=[],l=o[0];s.push({id:O.id,params:{unitId:e,subUnitId:t,ruleId:n.uid,payload:{type:k.ALL,payload:{ranges:l.ranges,formula1:l.formulas[0],formula2:l.formulas[1]}},source:`patched`}}),c.push({id:O.id,params:{unitId:e,subUnitId:t,ruleId:n.uid,payload:{type:k.ALL,payload:{ranges:r,formula1:i,formula2:a}},source:`patched`}});for(let r=1;r<o.length;r++){let i=o[r],a=ce();s.push({id:C.id,params:{unitId:e,subUnitId:t,rule:{...n,uid:a,formula1:i.formulas[0],formula2:i.formulas[1],ranges:i.ranges},source:`patched`}}),c.push({id:D.id,params:{unitId:e,subUnitId:t,ruleId:a,source:`patched`}})}return{undos:c,redos:s}}),s=this._getIdWithUnitId(e,t,n.uid);this._disposableMap.set(s,o)}_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(me(()=>{this._disposableMap.forEach(e=>{e.dispose()}),this._disposableMap.clear()}))}};At=F([P(0,p(q)),P(1,p(He)),P(2,p(E))],At);let jt=class extends s{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,N(this,`_disposableMap`,new Map),N(this,`registerRule`,(e,t,n)=>{B(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,n){var r;let i=n.uid,a=this._getIdWithUnitId(e,t,i),o=(r=this._disposableMap.get(a))==null?new Set:r,s=(r,a)=>{let o=this._dataValidationModel.getRuleById(e,t,i);if(!o)return{redos:[],undos:[]};let s=o[r];if(!s||s===a)return{redos:[],undos:[]};let c={unitId:e,subUnitId:t,ruleId:n.uid,payload:{type:k.SETTING,payload:{type:o.type,formula1:o.formula1,formula2:o.formula2,[r]:a}},source:`patched`},l={unitId:e,subUnitId:t,ruleId:n.uid,payload:{type:k.SETTING,payload:{type:o.type,formula1:o.formula1,formula2:o.formula2}},source:`patched`};return{redos:[{id:O.id,params:c}],undos:[{id:O.id,params:l}]}},c=this._dataValidationFormulaService.getRuleFormulaInfo(e,t,i);if(c){let[n,r]=c;if(n){let r=this._formulaRefRangeService.registerFormula(e,t,n.text,e=>s(`formula1`,e));o.add(()=>r.dispose())}if(r){let n=this._formulaRefRangeService.registerFormula(e,t,r.text,e=>s(`formula2`,e));o.add(()=>n.dispose())}}}register(e,t,n){var r;let i=r=>{let i=[...n.ranges],a=i.map(e=>Le(e,r)).filter(e=>!!e).flat();if(de(a,i))return{redos:[],undos:[]};if(a.length){let r={unitId:e,subUnitId:t,ruleId:n.uid,payload:{type:k.RANGE,payload:a},source:`patched`};return{redos:[{id:O.id,params:r}],undos:[{id:O.id,params:{unitId:e,subUnitId:t,ruleId:n.uid,payload:{type:k.RANGE,payload:i},source:`patched`}}]}}else{let r={unitId:e,subUnitId:t,ruleId:n.uid};return{redos:[{id:D.id,params:r}],undos:St(this._injector,r)}}},a=[];n.ranges.forEach(n=>{let r=this._refRangeService.registerRefRange(n,i,e,t);a.push(()=>r.dispose())});let o=this._getIdWithUnitId(e,t,n.uid),s=(r=this._disposableMap.get(o))==null?new Set:r;s.add(()=>a.forEach(e=>e())),this._disposableMap.set(o,s)}_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(me(()=>{this._disposableMap.forEach(e=>{e.forEach(e=>e())}),this._disposableMap.clear()}))}};jt=F([P(0,p(q)),P(1,p(m)),P(2,p(ke)),P(3,p(K)),P(4,p(He)),P(5,p(E))],jt);let Mt=class extends s{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===Ae.id){var t;let n=e.params,r=n.unitId||this._univerInstanceService.getCurrentUnitForType(b.UNIVER_SHEET).getUnitId(),i=this._univerInstanceService.getUniverSheetInstance(r);if(!i)return{redos:[],undos:[]};let a=n.subUnitId||((t=i.getActiveSheet())==null?void 0:t.getSheetId());if(!a)return{redos:[],undos:[]};let o=this._sheetDataValidationModel.getRules(r,a);if(o.length===0)return{redos:[],undos:[]};let s={unitId:r,subUnitId:a,ruleId:o.map(e=>e.uid),source:`patched`},c={unitId:r,subUnitId:a,rule:[...o],source:`patched`};return{redos:[{id:D.id,params:s}],undos:[{id:C.id,params:c}]}}else if(e.id===Oe.id){let{unitId:t,subUnitId:n,targetSubUnitId:r}=e.params;if(!t||!n||!r)return{redos:[],undos:[]};let i=this._sheetDataValidationModel.getRules(t,n);if(i.length===0)return{redos:[],undos:[]};let a=i.map(e=>({...e,uid:ce(6)}));return{redos:[{id:C.id,params:{unitId:t,subUnitId:r,rule:a,source:`patched`}}],undos:[{id:D.id,params:{unitId:t,subUnitId:r,ruleId:a.map(e=>e.uid),source:`patched`}}]}}return{redos:[],undos:[]}}}))}};Mt=F([P(0,p(Ne)),P(1,p(f)),P(2,p(q))],Mt);var Nt=class extends w{constructor(...e){super(...e),N(this,`id`,a.ANY),N(this,`title`,`dataValidation.any.title`),N(this,`operators`,[]),N(this,`scopes`,[`sheet`]),N(this,`order`,0),N(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`)}},Pt=class extends w{constructor(...e){super(...e),N(this,`id`,a.CUSTOM),N(this,`title`,`dataValidation.custom.title`),N(this,`operators`,[]),N(this,`scopes`,[`sheet`]),N(this,`order`,60),N(this,`_customFormulaService`,this.injector.get(V)),N(this,`_lexerTreeBuilder`,this.injector.get(A))}validatorFormula(e,t,n){var r;let i=x(e.formula1),a=(r=e.formula1)==null?``:r,o=this._lexerTreeBuilder.checkIfAddBracket(a)===0&&a.startsWith(Te.EQUALS);return{success:i&&o,formula1:i&&o?``:this.localeService.t(`dataValidation.validFail.formula`)}}async parseFormula(e,t,n){return{formula1:void 0,formula2:void 0,isFormulaValid:!0}}async isValidType(t,n,r){let{column:i,row:a,unitId:o,subUnitId:s}=t,c=await this._customFormulaService.getCellFormulaValue(o,s,r.uid,a,i),l=c==null?void 0:c.v;return z(String(l))&&y.isDefine(l)&&l!==``?c.t===e.BOOLEAN?!!l:typeof l==`boolean`?l:typeof l==`number`?!!l:typeof l==`string`?z(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)}},Ft=class extends ft{constructor(...e){super(...e),N(this,`id`,a.LIST_MULTIPLE),N(this,`title`,`dataValidation.listMultiple.title`),N(this,`offsetFormulaByRange`,!1),N(this,`skipDefaultFontRender`,()=>!0)}},It=class extends w{constructor(...e){super(...e),N(this,`_customFormulaService`,this.injector.get(V)),N(this,`_lexerTreeBuilder`,this.injector.get(A)),N(this,`id`,a.WHOLE),N(this,`title`,`dataValidation.whole.title`),N(this,`order`,10),N(this,`operators`,[n.BETWEEN,n.EQUAL,n.GREATER_THAN,n.GREATER_THAN_OR_EQUAL,n.LESS_THAN,n.LESS_THAN_OR_EQUAL,n.NOT_BETWEEN,n.NOT_EQUAL]),N(this,`scopes`,[`sheet`])}_isFormulaOrInt(e){return!y.isBlank(e)&&(x(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}async isValidType(e,t,n){let{value:r}=e,i=Z(r);return!Number.isNaN(i)&&Number.isInteger(i)}transform(e,t,n){let{value:r}=e;return{...e,value:Z(r)}}_parseNumber(e){return e==null?NaN:+e}async parseFormula(e,t,n,r,i){let a=await this._customFormulaService.getCellFormulaValue(t,n,e.uid,r,i),o=await this._customFormulaService.getCellFormula2Value(t,n,e.uid,r,i),{formula1:s,formula2:c}=e,l=x(s)?a==null?void 0:a.v:s,u=x(c)?o==null?void 0:o.v:c,d=z(`${l}`)&&z(`${u}`);return{formula1:this._parseNumber(l),formula2:this._parseNumber(u),isFormulaValid:d}}validatorFormula(e,t,n){let r=e.operator;if(!r)return{success:!0};let i=y.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),a=y.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),o=rt.includes(r),s=this.localeService.t(`dataValidation.validFail.number`);return o?{success:i&&a,formula1:i?void 0:s,formula2:a?void 0:s}:{success:i,formula1:s}}generateRuleErrorMessage(e,t){if(!e.operator)return this.localeService.t(ot.NONE).replace(`{TYPE}`,this.titleStr);let{transformedFormula1:n,transformedFormula2:r}=W(this._lexerTreeBuilder,e,t);return`${this.localeService.t(ot[e.operator]).replace(Y,n==null?``:n).replace(X,r==null?``:r)}`}};let Lt=class extends re{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(){[Nt,st,It,pt,at,$e,ft,Ft,Pt].forEach(e=>{let t=this._injector.createInstance(e);this.disposeWithMe(this._dataValidatorRegistryService.register(t)),this.disposeWithMe(me(()=>this._injector.delete(e)))})}_initCommandInterceptor(){this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===De.id){var t;let e=this._univerInstanceService.getCurrentUnitForType(b.UNIVER_SHEET),n=e.getUnitId(),r=e.getActiveSheet();if(!r)throw Error(`No active sheet found`);let i=r.getSheetId(),a=(t=this._selectionManagerService.getCurrentSelections())==null?void 0:t.map(e=>e.range),o=this._sheetDataValidationModel.getRuleObjectMatrix(n,i).clone();a&&o.removeRange(a);let{redoMutations:s,undoMutations:c}=ht(n,i,o.diff(this._sheetDataValidationModel.getRules(n,i)),this._injector,`patched`);return{undos:c,redos:s}}return{undos:[],redos:[]}}})}};Lt=F([P(0,f),P(1,p(E)),P(2,p(m)),P(3,p(Pe)),P(4,p(Ne)),P(5,p(q))],Lt);let Q=class extends s{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 t=this._univerInstanceService.getCurrentUnitForType(b.UNIVER_SHEET),n=t==null?void 0:t.getActiveSheet(),r={};e.flat().forEach(e=>{r[e.unitId]||(r[e.unitId]={}),r[e.unitId][e.subUnitId]||(r[e.unitId][e.subUnitId]=[]);let t=this._univerInstanceService.getUnit(e.unitId,b.UNIVER_SHEET),n=t==null?void 0:t.getSheetBySheetId(e.subUnitId);n&&r[e.unitId][e.subUnitId].push(...e.ranges.map(e=>_.transformRange(e,n)))}),Object.entries(r).forEach(([e,r])=>{Object.entries(r).forEach(([r,i])=>{(t==null?void 0:t.getUnitId())===e&&(n==null?void 0:n.getSheetId())===r?this.validatorRanges(e,r,i):requestIdleCallback(()=>{this.validatorRanges(e,r,i)})})})};this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.pipe(ze(()=>this._lifecycleService.lifecycle$.pipe(Be(e=>e===g.Rendered)))).subscribe(e)),this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.pipe(Be(()=>this._lifecycleService.stage>=g.Rendered),ae(20)).subscribe(e))}async _validatorByCell(e,t,n,r){let a=e.getUnitId(),o=t.getSheetId();if(!y.isDefine(n)||!y.isDefine(r))throw Error(`row or col is not defined, row: ${n}, col: ${r}`);let s=n,c=r,l=t.getMergedCell(n,r);l&&(s=l.startRow,c=l.startColumn);let u=this._sheetDataValidationModel.getRuleByLocation(a,o,s,c);return u?new Promise(n=>{this._sheetDataValidationModel.validator(u,{unitId:a,subUnitId:o,row:s,col:c,worksheet:t,workbook:e},e=>{n(e)})}):i.VALID}async validatorCell(e,t,n,r){let i=this._univerInstanceService.getUnit(e,b.UNIVER_SHEET);if(!i)throw Error(`cannot find current workbook, unitId: ${e}`);let a=i.getSheetBySheetId(t);if(!a)throw Error(`cannot find current worksheet, sheetId: ${t}`);return this._validatorByCell(i,a,n,r)}async validatorRanges(e,t,n){if(!n.length)return Promise.resolve([]);let r=this._univerInstanceService.getUnit(e,b.UNIVER_SHEET);if(!r)throw Error(`cannot find current workbook, unitId: ${e}`);let a=r.getSheetBySheetId(t);if(!a)throw Error(`cannot find current worksheet, sheetId: ${t}`);let o=this._sheetDataValidationModel.getRules(e,t).map(e=>e.ranges).flat(),s=n.map(e=>o.map(t=>le(e,t))).flat().filter(Boolean),c=[],l=await Promise.all(s.map((e,t)=>{let n=[];for(let i=e.startRow;i<=e.endRow;i++)for(let o=e.startColumn;o<=e.endColumn;o++){n.push(this._validatorByCell(r,a,i,o));let e=a.getMergedCell(i,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:n,resultColIndex:r,row:a,col:o})=>{if(l[n][r]===i.VALIDATING){var s;l[n][r]=(s=this._dataValidationCacheService.getValue(e,t,a,o))==null?i.VALID:s}}),l}async validatorWorksheet(e,t){let n=this._univerInstanceService.getUnit(e,b.UNIVER_SHEET);if(!n)throw Error(`cannot find current workbook, unitId: ${e}`);let r=n.getSheetBySheetId(t);if(!r)throw Error(`cannot find current worksheet, sheetId: ${t}`);let i=this._sheetDataValidationModel.getRules(e,t);return await Promise.all(i.map(e=>Promise.all(e.ranges.map(e=>{let t=[];return _.foreach(e,(e,i)=>{t.push(this._validatorByCell(n,r,e,i))}),Promise.all(t)})))),this._dataValidationCacheService.ensureCache(e,t)}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,t,n){let r=this._sheetDataValidationModel.getRuleObjectMatrix(e,t),i=new Set;return n.forEach(e=>{_.foreach(e,(e,t)=>{let n=r.getValue(e,t);n&&i.add(n)})}),Array.from(i).map(n=>this._sheetDataValidationModel.getRuleById(e,t,n)).filter(Boolean)}getDataValidation(e,t,n){return this.getDataValidations(e,t,n)[0]}};Q=F([P(0,f),P(1,p(q)),P(2,p(I)),P(3,p(h))],Q);let $=class extends te{constructor(e=kt,t,n,r){super(),this._config=e,this._injector=t,this._commandService=n,this._configService=r;let{...i}=fe({},kt,this._config);this._configService.setConfig(Ot,i)}onStarting(){[[I],[G],[K],[V],[Q],[q],[Lt],[Tt],[Mt],[jt],[At]].forEach(e=>{this._injector.add(e)}),[_t,gt,vt,yt,Ct,xt,bt].forEach(e=>{this._commandService.registerCommand(e)}),this._injector.get(I),this._injector.get(Q),this._injector.get(Lt),this._injector.get(At),this._injector.get(jt)}onReady(){this._injector.get(Mt)}onRendered(){this._injector.get(Tt)}};N($,`pluginName`,wt),N($,`packageName`,Et),N($,`version`,Dt),N($,`type`,b.UNIVER_SHEET),$=F([o(Ue,ge),P(1,p(m)),P(2,c),P(3,l)],$);function Rt(e){let t=e.get(Pe).getCurrentSelections().map(e=>e.range);return{uid:ce(6),type:a.DECIMAL,operator:n.EQUAL,formula1:`100`,ranges:t==null?[{startColumn:0,endColumn:0,startRow:0,endRow:0}]:t}}const zt=`data-validation.custom-formula-input`,Bt=`data-validation.formula-input`,Vt=`data-validation.list-formula-input`,Ht=`data-validation.checkbox-formula-input`;export{_t as AddSheetDataValidationCommand,Bt as BASE_FORMULA_INPUT_NAME,Xe as CHECKBOX_FORMULA_1,Ze as CHECKBOX_FORMULA_2,Ht as CHECKBOX_FORMULA_INPUT_NAME,zt as CUSTOM_FORMULA_INPUT_NAME,$e as CheckboxValidator,bt as ClearRangeDataValidationCommand,wt as DATA_VALIDATION_PLUGIN_NAME,I as DataValidationCacheService,V as DataValidationCustomFormulaService,Tt as DataValidationFormulaController,K as DataValidationFormulaService,G as DataValidationListCacheService,at as DateValidator,Vt as LIST_FORMULA_INPUT_NAME,Ft as ListMultipleValidator,ft as ListValidator,xt as RemoveSheetAllDataValidationCommand,Ct as RemoveSheetDataValidationCommand,q as SheetDataValidationModel,Q as SheetsDataValidationValidatorService,$ as UniverSheetsDataValidationPlugin,yt as UpdateSheetDataValidationOptionsCommand,gt as UpdateSheetDataValidationRangeCommand,vt as UpdateSheetDataValidationSettingCommand,Rt as createDefaultNewRule,U as deserializeListOptions,Z as getCellValueNumber,H as getCellValueOrigin,Je as getDataValidationCellValue,ht as getDataValidationDiffMutations,R as getFormulaCellData,L as getFormulaResult,W as getTransformedFormula,z as isLegalFormulaResult,qe as serializeListOptions,J as transformCheckboxValue};
@@ -18,12 +18,13 @@ import type { IEventBase } from '@univerjs/core/facade';
18
18
  import type { DataValidationChangeType, IRuleChange } from '@univerjs/data-validation';
19
19
  import type { FWorkbook, FWorksheet } from '@univerjs/sheets/facade';
20
20
  import type { FDataValidation } from './f-data-validation';
21
+ import { FEventName } from '@univerjs/core/facade';
21
22
  /**
22
23
  * Event interface triggered when a data validation rule is changed
23
- * @interface ISheetDataValidationChangedEvent
24
+ * @interface ISheetDataValidationChangedEventParams
24
25
  * @augments {IEventBase}
25
26
  */
26
- export interface ISheetDataValidationChangedEvent extends IEventBase {
27
+ export interface ISheetDataValidationChangedEventParams extends IEventBase {
27
28
  /** The source of the rule change */
28
29
  origin: IRuleChange;
29
30
  /** The worksheet containing the validation rule */
@@ -39,10 +40,10 @@ export interface ISheetDataValidationChangedEvent extends IEventBase {
39
40
  }
40
41
  /**
41
42
  * Event interface triggered when a data validation status changes
42
- * @interface ISheetDataValidatorStatusChangedEvent
43
+ * @interface ISheetDataValidatorStatusChangedEventParams
43
44
  * @augments {IEventBase}
44
45
  */
45
- export interface ISheetDataValidatorStatusChangedEvent extends IEventBase {
46
+ export interface ISheetDataValidatorStatusChangedEventParams extends IEventBase {
46
47
  /** The worksheet containing the validation */
47
48
  worksheet: FWorksheet;
48
49
  /** The workbook instance */
@@ -58,10 +59,10 @@ export interface ISheetDataValidatorStatusChangedEvent extends IEventBase {
58
59
  }
59
60
  /**
60
61
  * Event interface triggered before adding a new data validation rule
61
- * @interface IBeforeSheetDataValidationAddEvent
62
+ * @interface IBeforeSheetDataValidationAddEventParams
62
63
  * @augments {IEventBase}
63
64
  */
64
- export interface IBeforeSheetDataValidationAddEvent extends IEventBase {
65
+ export interface IBeforeSheetDataValidationAddEventParams extends IEventBase {
65
66
  /** The worksheet to add the validation to */
66
67
  worksheet: FWorksheet;
67
68
  /** The workbook instance */
@@ -71,10 +72,10 @@ export interface IBeforeSheetDataValidationAddEvent extends IEventBase {
71
72
  }
72
73
  /**
73
74
  * Event interface triggered before deleting a data validation rule
74
- * @interface IBeforeSheetDataValidationDeleteEvent
75
+ * @interface IBeforeSheetDataValidationDeleteEventParams
75
76
  * @augments {IEventBase}
76
77
  */
77
- export interface IBeforeSheetDataValidationDeleteEvent extends IEventBase {
78
+ export interface IBeforeSheetDataValidationDeleteEventParams extends IEventBase {
78
79
  /** The worksheet containing the validation */
79
80
  worksheet: FWorksheet;
80
81
  /** The workbook instance */
@@ -86,10 +87,10 @@ export interface IBeforeSheetDataValidationDeleteEvent extends IEventBase {
86
87
  }
87
88
  /**
88
89
  * Event interface triggered before updating a data validation rule's criteria
89
- * @interface IBeforeSheetDataValidationCriteriaUpdateEvent
90
+ * @interface IBeforeSheetDataValidationCriteriaUpdateEventParams
90
91
  * @augments {IEventBase}
91
92
  */
92
- export interface IBeforeSheetDataValidationCriteriaUpdateEvent extends IEventBase {
93
+ export interface IBeforeSheetDataValidationCriteriaUpdateEventParams extends IEventBase {
93
94
  /** The worksheet containing the validation */
94
95
  worksheet: FWorksheet;
95
96
  /** The workbook instance */
@@ -103,10 +104,10 @@ export interface IBeforeSheetDataValidationCriteriaUpdateEvent extends IEventBas
103
104
  }
104
105
  /**
105
106
  * Event interface triggered before updating a data validation rule's ranges
106
- * @interface IBeforeSheetDataValidationRangeUpdateEvent
107
+ * @interface IBeforeSheetDataValidationRangeUpdateEventParams
107
108
  * @augments {IEventBase}
108
109
  */
109
- export interface IBeforeSheetDataValidationRangeUpdateEvent extends IEventBase {
110
+ export interface IBeforeSheetDataValidationRangeUpdateEventParams extends IEventBase {
110
111
  /** The worksheet containing the validation */
111
112
  worksheet: FWorksheet;
112
113
  /** The workbook instance */
@@ -120,10 +121,10 @@ export interface IBeforeSheetDataValidationRangeUpdateEvent extends IEventBase {
120
121
  }
121
122
  /**
122
123
  * Event interface triggered before updating a data validation rule's options
123
- * @interface IBeforeSheetDataValidationOptionsUpdateEvent
124
+ * @interface IBeforeSheetDataValidationOptionsUpdateEventParams
124
125
  * @augments {IEventBase}
125
126
  */
126
- export interface IBeforeSheetDataValidationOptionsUpdateEvent extends IEventBase {
127
+ export interface IBeforeSheetDataValidationOptionsUpdateEventParams extends IEventBase {
127
128
  /** The worksheet containing the validation */
128
129
  worksheet: FWorksheet;
129
130
  /** The workbook instance */
@@ -137,10 +138,10 @@ export interface IBeforeSheetDataValidationOptionsUpdateEvent extends IEventBase
137
138
  }
138
139
  /**
139
140
  * Event interface triggered before deleting all data validation rules
140
- * @interface IBeforeSheetDataValidationDeleteAllEvent
141
+ * @interface IBeforeSheetDataValidationDeleteAllEventParams
141
142
  * @augments {IEventBase}
142
143
  */
143
- export interface IBeforeSheetDataValidationDeleteAllEvent extends IEventBase {
144
+ export interface IBeforeSheetDataValidationDeleteAllEventParams extends IEventBase {
144
145
  /** The worksheet containing the validations */
145
146
  worksheet: FWorksheet;
146
147
  /** The workbook instance */
@@ -152,22 +153,22 @@ export interface IBeforeSheetDataValidationDeleteAllEvent extends IEventBase {
152
153
  * @ignore
153
154
  */
154
155
  export interface IDataValidationEventParamConfig {
155
- SheetDataValidationChanged: ISheetDataValidationChangedEvent;
156
- SheetDataValidatorStatusChanged: ISheetDataValidatorStatusChangedEvent;
157
- BeforeSheetDataValidationAdd: IBeforeSheetDataValidationAddEvent;
158
- BeforeSheetDataValidationDelete: IBeforeSheetDataValidationDeleteEvent;
159
- BeforeSheetDataValidationDeleteAll: IBeforeSheetDataValidationDeleteAllEvent;
160
- BeforeSheetDataValidationCriteriaUpdate: IBeforeSheetDataValidationCriteriaUpdateEvent;
161
- BeforeSheetDataValidationRangeUpdate: IBeforeSheetDataValidationRangeUpdateEvent;
162
- BeforeSheetDataValidationOptionsUpdate: IBeforeSheetDataValidationOptionsUpdateEvent;
156
+ SheetDataValidationChanged: ISheetDataValidationChangedEventParams;
157
+ SheetDataValidatorStatusChanged: ISheetDataValidatorStatusChangedEventParams;
158
+ BeforeSheetDataValidationAdd: IBeforeSheetDataValidationAddEventParams;
159
+ BeforeSheetDataValidationDelete: IBeforeSheetDataValidationDeleteEventParams;
160
+ BeforeSheetDataValidationDeleteAll: IBeforeSheetDataValidationDeleteAllEventParams;
161
+ BeforeSheetDataValidationCriteriaUpdate: IBeforeSheetDataValidationCriteriaUpdateEventParams;
162
+ BeforeSheetDataValidationRangeUpdate: IBeforeSheetDataValidationRangeUpdateEventParams;
163
+ BeforeSheetDataValidationOptionsUpdate: IBeforeSheetDataValidationOptionsUpdateEventParams;
163
164
  }
164
165
  /**
165
166
  * @ignore
166
167
  */
167
- interface IDataValidationEvent {
168
+ interface IFSheetsDataValidationEventNameMixin {
168
169
  /**
169
170
  * Event fired when a rule is added, deleted, or modified
170
- * @see {@link ISheetDataValidationChangedEvent}
171
+ * @see {@link ISheetDataValidationChangedEventParams}
171
172
  * @example
172
173
  * ```ts
173
174
  * const disposable = univerAPI.addEvent(univerAPI.Event.SheetDataValidationChanged, (params) => {
@@ -181,7 +182,7 @@ interface IDataValidationEvent {
181
182
  readonly SheetDataValidationChanged: 'SheetDataValidationChanged';
182
183
  /**
183
184
  * Event fired when a cell validator status is changed
184
- * @see {@link ISheetDataValidatorStatusChangedEvent}
185
+ * @see {@link ISheetDataValidatorStatusChangedEventParams}
185
186
  * @example
186
187
  * ```ts
187
188
  * const disposable = univerAPI.addEvent(univerAPI.Event.SheetDataValidatorStatusChanged, (params) => {
@@ -195,7 +196,7 @@ interface IDataValidationEvent {
195
196
  readonly SheetDataValidatorStatusChanged: 'SheetDataValidatorStatusChanged';
196
197
  /**
197
198
  * Event fired before a rule is added
198
- * @see {@link IBeforeSheetDataValidationAddEvent}
199
+ * @see {@link IBeforeSheetDataValidationAddEventParams}
199
200
  * @example
200
201
  * ```ts
201
202
  * const disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetDataValidationAdd, (params) => {
@@ -212,7 +213,7 @@ interface IDataValidationEvent {
212
213
  readonly BeforeSheetDataValidationAdd: 'BeforeSheetDataValidationAdd';
213
214
  /**
214
215
  * Event fired before a rule is deleted
215
- * @see {@link IBeforeSheetDataValidationDeleteEvent}
216
+ * @see {@link IBeforeSheetDataValidationDeleteEventParams}
216
217
  * @example
217
218
  * ```ts
218
219
  * const disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetDataValidationDelete, (params) => {
@@ -229,7 +230,7 @@ interface IDataValidationEvent {
229
230
  readonly BeforeSheetDataValidationDelete: 'BeforeSheetDataValidationDelete';
230
231
  /**
231
232
  * Event fired before all rules are deleted
232
- * @see {@link IBeforeSheetDataValidationDeleteAllEvent}
233
+ * @see {@link IBeforeSheetDataValidationDeleteAllEventParams}
233
234
  * @example
234
235
  * ```ts
235
236
  * const disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetDataValidationDeleteAll, (params) => {
@@ -246,7 +247,7 @@ interface IDataValidationEvent {
246
247
  readonly BeforeSheetDataValidationDeleteAll: 'BeforeSheetDataValidationDeleteAll';
247
248
  /**
248
249
  * Event fired before the criteria of a rule are updated
249
- * @see {@link IBeforeSheetDataValidationCriteriaUpdateEvent}
250
+ * @see {@link IBeforeSheetDataValidationCriteriaUpdateEventParams}
250
251
  * @example
251
252
  * ```ts
252
253
  * const disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetDataValidationCriteriaUpdate, (params) => {
@@ -263,7 +264,7 @@ interface IDataValidationEvent {
263
264
  readonly BeforeSheetDataValidationCriteriaUpdate: 'BeforeSheetDataValidationCriteriaUpdate';
264
265
  /**
265
266
  * Event fired before the range of a rule is updated
266
- * @see {@link IBeforeSheetDataValidationRangeUpdateEvent}
267
+ * @see {@link IBeforeSheetDataValidationRangeUpdateEventParams}
267
268
  * @example
268
269
  * ```ts
269
270
  * const disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetDataValidationRangeUpdate, (params) => {
@@ -280,7 +281,7 @@ interface IDataValidationEvent {
280
281
  readonly BeforeSheetDataValidationRangeUpdate: 'BeforeSheetDataValidationRangeUpdate';
281
282
  /**
282
283
  * Event fired before the options of a rule are updated
283
- * @see {@link IBeforeSheetDataValidationOptionsUpdateEvent}
284
+ * @see {@link IBeforeSheetDataValidationOptionsUpdateEventParams}
284
285
  * @example
285
286
  * ```ts
286
287
  * const disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetDataValidationOptionsUpdate, (params) => {
@@ -299,7 +300,7 @@ interface IDataValidationEvent {
299
300
  /**
300
301
  * @ignore
301
302
  */
302
- export declare class FDataValidationEvent implements IDataValidationEvent {
303
+ export declare class FSheetsDataValidationEventNameMixin extends FEventName implements IFSheetsDataValidationEventNameMixin {
303
304
  get SheetDataValidationChanged(): 'SheetDataValidationChanged';
304
305
  get SheetDataValidatorStatusChanged(): 'SheetDataValidatorStatusChanged';
305
306
  get BeforeSheetDataValidationAdd(): 'BeforeSheetDataValidationAdd';
@@ -312,20 +313,20 @@ export declare class FDataValidationEvent implements IDataValidationEvent {
312
313
  /**
313
314
  * @ignore
314
315
  */
315
- export interface IDataValidationEventConfig {
316
- SheetDataValidationChanged: ISheetDataValidationChangedEvent;
317
- SheetDataValidatorStatusChanged: ISheetDataValidatorStatusChangedEvent;
318
- BeforeSheetDataValidationAdd: IBeforeSheetDataValidationAddEvent;
319
- BeforeSheetDataValidationDelete: IBeforeSheetDataValidationDeleteEvent;
320
- BeforeSheetDataValidationDeleteAll: IBeforeSheetDataValidationDeleteAllEvent;
321
- BeforeSheetDataValidationCriteriaUpdate: IBeforeSheetDataValidationCriteriaUpdateEvent;
322
- BeforeSheetDataValidationRangeUpdate: IBeforeSheetDataValidationRangeUpdateEvent;
323
- BeforeSheetDataValidationOptionsUpdate: IBeforeSheetDataValidationOptionsUpdateEvent;
316
+ export interface ISheetsDataValidationEventParamConfig {
317
+ SheetDataValidationChanged: ISheetDataValidationChangedEventParams;
318
+ SheetDataValidatorStatusChanged: ISheetDataValidatorStatusChangedEventParams;
319
+ BeforeSheetDataValidationAdd: IBeforeSheetDataValidationAddEventParams;
320
+ BeforeSheetDataValidationDelete: IBeforeSheetDataValidationDeleteEventParams;
321
+ BeforeSheetDataValidationDeleteAll: IBeforeSheetDataValidationDeleteAllEventParams;
322
+ BeforeSheetDataValidationCriteriaUpdate: IBeforeSheetDataValidationCriteriaUpdateEventParams;
323
+ BeforeSheetDataValidationRangeUpdate: IBeforeSheetDataValidationRangeUpdateEventParams;
324
+ BeforeSheetDataValidationOptionsUpdate: IBeforeSheetDataValidationOptionsUpdateEventParams;
324
325
  }
325
326
  declare module '@univerjs/core/facade' {
326
- interface FEventName extends IDataValidationEvent {
327
+ interface FEventName extends IFSheetsDataValidationEventNameMixin {
327
328
  }
328
- interface IEventParamConfig extends IDataValidationEventParamConfig {
329
+ interface IEventParamConfig extends ISheetsDataValidationEventParamConfig {
329
330
  }
330
331
  }
331
332
  export {};
@@ -21,7 +21,7 @@ import { FDataValidation } from './f-data-validation';
21
21
  /**
22
22
  * @ignore
23
23
  */
24
- export interface IFRangeDataValidationMixin {
24
+ export interface IFRangeSheetsDataValidationMixin {
25
25
  /**
26
26
  * Set a data validation rule to current range. if rule is null, clear data validation rule.
27
27
  * @param {Nullable<FDataValidation>} rule data validation rule, build by `FUniver.newDataValidation`
@@ -158,7 +158,7 @@ export interface IFRangeDataValidationMixin {
158
158
  /**
159
159
  * @ignore
160
160
  */
161
- export declare class FRangeDataValidationMixin extends FRange implements IFRangeDataValidationMixin {
161
+ export declare class FRangeSheetsDataValidationMixin extends FRange implements IFRangeSheetsDataValidationMixin {
162
162
  setDataValidation(rule: Nullable<FDataValidation>): FRange;
163
163
  getDataValidation(): Nullable<FDataValidation>;
164
164
  getDataValidations(): FDataValidation[];
@@ -168,6 +168,6 @@ export declare class FRangeDataValidationMixin extends FRange implements IFRange
168
168
  private _createDataValidationError;
169
169
  }
170
170
  declare module '@univerjs/sheets/facade' {
171
- interface FRange extends IFRangeDataValidationMixin {
171
+ interface FRange extends IFRangeSheetsDataValidationMixin {
172
172
  }
173
173
  }
@@ -19,7 +19,7 @@ import { FDataValidationBuilder } from './f-data-validation-builder';
19
19
  /**
20
20
  * @ignore
21
21
  */
22
- export interface IFUnvierDataValidationMixin {
22
+ export interface IFUniverSheetsDataValidationMixin {
23
23
  /**
24
24
  * Creates a new instance of FDataValidationBuilder
25
25
  * @returns {FDataValidationBuilder} A new instance of the FDataValidationBuilder class
@@ -43,7 +43,7 @@ export interface IFUnvierDataValidationMixin {
43
43
  */
44
44
  newDataValidation(): FDataValidationBuilder;
45
45
  }
46
- export declare class FUnvierDataValidationMixin extends FUniver implements IFUnvierDataValidationMixin {
46
+ export declare class FUniverSheetsDataValidationMixin extends FUniver implements IFUniverSheetsDataValidationMixin {
47
47
  /**
48
48
  * @deprecated use `univerAPI.newDataValidation()` as instead.
49
49
  * @returns {FDataValidationBuilder} A new instance of the FDataValidationBuilder class
@@ -66,6 +66,6 @@ declare module '@univerjs/core/facade' {
66
66
  */
67
67
  function newDataValidation(): FDataValidationBuilder;
68
68
  }
69
- interface FUniver extends IFUnvierDataValidationMixin {
69
+ interface FUniver extends IFUniverSheetsDataValidationMixin {
70
70
  }
71
71
  }
@@ -34,7 +34,7 @@ export interface IDataValidationError {
34
34
  /**
35
35
  * @ignore
36
36
  */
37
- export interface IFWorkbookDataValidationMixin {
37
+ export interface IFWorkbookSheetsDataValidationMixin {
38
38
  /**
39
39
  * Get data validation validator status for current workbook.
40
40
  * @returns A promise that resolves to a matrix of validator status.
@@ -93,7 +93,7 @@ export interface IFWorkbookDataValidationMixin {
93
93
  /**
94
94
  * @ignore
95
95
  */
96
- export declare class FWorkbookDataValidationMixin extends FWorkbook implements IFWorkbookDataValidationMixin {
96
+ export declare class FWorkbookSheetsDataValidationMixin extends FWorkbook implements IFWorkbookSheetsDataValidationMixin {
97
97
  _dataValidationModel: SheetDataValidationModel;
98
98
  _initialize(): void;
99
99
  getValidatorStatus(): Promise<Record<string, ObjectMatrix<Nullable<DataValidationStatus>>>>;
@@ -111,6 +111,6 @@ export declare class FWorkbookDataValidationMixin extends FWorkbook implements I
111
111
  onBeforeDeleteAllDataValidation(callback: (params: IRemoveSheetAllDataValidationCommandParams, options: IExecutionOptions | undefined) => void | false): IDisposable;
112
112
  }
113
113
  declare module '@univerjs/sheets/facade' {
114
- interface FWorkbook extends IFWorkbookDataValidationMixin {
114
+ interface FWorkbook extends IFWorkbookSheetsDataValidationMixin {
115
115
  }
116
116
  }