@univerjs/sheets-data-validation 0.18.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/index.js +1 -1
- package/lib/es/index.js +1 -1
- package/lib/index.js +1 -1
- package/lib/umd/index.js +1 -1
- package/package.json +9 -9
package/lib/es/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&<.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.18.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&<.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};
|
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&<.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.18.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&<.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};
|