@univerjs/sheets-data-validation 0.4.2 → 0.5.0-alpha.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/facade.js +1 -0
- package/lib/cjs/index.js +1 -1
- package/lib/es/facade.js +641 -0
- package/lib/es/index.js +2094 -2200
- package/lib/types/facade/f-data-validation-builder.d.ts +247 -0
- package/lib/types/facade/f-data-validation.d.ts +88 -0
- package/lib/types/facade/f-range.d.ts +33 -0
- package/lib/types/facade/f-univer.d.ts +6 -0
- package/lib/types/facade/f-workbook.d.ts +64 -0
- package/lib/types/facade/f-worksheet.d.ts +20 -0
- package/lib/types/facade/index.d.ts +21 -0
- package/lib/types/services/dv-custom-formula.service.d.ts +4 -14
- package/lib/types/services/dv-formula.service.d.ts +4 -3
- package/lib/types/validators/checkbox-validator.d.ts +3 -6
- package/lib/types/validators/decimal-validator.d.ts +1 -5
- package/lib/types/validators/whole-validator.d.ts +1 -5
- package/lib/umd/facade.js +1 -0
- package/lib/umd/index.js +1 -1
- package/package.json +25 -15
package/lib/umd/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(global2,factory){typeof exports=="object"&&typeof module<"u"?factory(exports,require("@univerjs/core"),require("@univerjs/data-validation"),require("@univerjs/sheets"),require("rxjs"),require("@univerjs/engine-formula"),require("@univerjs/sheets-formula")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/data-validation","@univerjs/sheets","rxjs","@univerjs/engine-formula","@univerjs/sheets-formula"],factory):(global2=typeof globalThis<"u"?globalThis:global2||self,factory(global2.UniverSheetsDataValidation={},global2.UniverCore,global2.UniverDataValidation,global2.UniverSheets,global2.rxjs,global2.UniverEngineFormula,global2.UniverSheetsFormula))})(this,function(exports2,core,dataValidation,sheets,rxjs,engineFormula,sheetsFormula){"use strict";var __defProp=Object.defineProperty;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var __publicField=(obj,key,value)=>__defNormalProp(obj,typeof key!="symbol"?key+"":key,value);var _a,_b,_c,_d,_e,_f,_g,_h,_i,_j,_k;const DATA_VALIDATION_PLUGIN_NAME="SHEET_DATA_VALIDATION_PLUGIN";var __defProp$9=Object.defineProperty,__getOwnPropDesc$9=Object.getOwnPropertyDescriptor,__decorateClass$9=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$9(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$9(target,key,result),result},"__decorateClass$9"),__decorateParam$9=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$9");exports2.DataValidationCacheService=(_a=class extends core.Disposable{constructor(_commandService){super();__publicField(this,"_cacheMatrix",new Map);__publicField(this,"_dirtyRanges$",new rxjs.Subject);__publicField(this,"dirtyRanges$",this._dirtyRanges$.asObservable());this._commandService=_commandService,this._initDirtyRanges()}_initDirtyRanges(){this.disposeWithMe(this._commandService.onCommandExecuted(commandInfo=>{if(commandInfo.id===sheets.SetRangeValuesMutation.id){const{cellValue,unitId,subUnitId}=commandInfo.params;if(cellValue){const range=new core.ObjectMatrix(cellValue).getDataRange();if(range.endRow===-1)return;this._dirtyRanges$.next({unitId,subUnitId,ranges:[range]})}}}))}_ensureCache(unitId,subUnitId){let unitMap=this._cacheMatrix.get(unitId);unitMap||(unitMap=new Map,this._cacheMatrix.set(unitId,unitMap));let cacheMatrix=unitMap.get(subUnitId);return cacheMatrix||(cacheMatrix=new core.ObjectMatrix,unitMap.set(subUnitId,cacheMatrix)),cacheMatrix}ensureCache(unitId,subUnitId){return this._ensureCache(unitId,subUnitId)}addRule(unitId,subUnitId,rule){this.markRangeDirty(unitId,subUnitId,rule.ranges)}removeRule(unitId,subUnitId,rule){this._deleteRange(unitId,subUnitId,rule.ranges)}updateRuleRanges(unitId,subUnitId,ruleId,newRanges,oldRanges){const cache=this._ensureCache(unitId,subUnitId);oldRanges.forEach(range=>{core.Range.foreach(range,(row,col)=>{const item=cache.getValue(row,col);item&&(item.temp=!0)})}),newRanges.forEach(range=>{core.Range.foreach(range,(row,col)=>{const item=cache.getValue(row,col);item&&item.ruleId===ruleId?item.temp=!1:cache.setValue(row,col,void 0)})}),oldRanges.forEach(range=>{core.Range.foreach(range,(row,col)=>{const item=cache.getValue(row,col);item&&item.temp===!0&&cache.realDeleteValue(row,col)})}),this._dirtyRanges$.next({unitId,subUnitId,ranges:[...oldRanges,...newRanges]})}markRangeDirty(unitId,subUnitId,ranges){const cache=this._ensureCache(unitId,subUnitId);ranges.forEach(range=>{core.Range.foreach(range,(row,col)=>{cache.setValue(row,col,void 0)})}),this._dirtyRanges$.next({unitId,subUnitId,ranges})}markCellDirty(unitId,subUnitId,row,col){this._ensureCache(unitId,subUnitId).setValue(row,col,void 0),this._dirtyRanges$.next({unitId,subUnitId,ranges:[{startRow:row,startColumn:col,endRow:row,endColumn:col}]})}_deleteRange(unitId,subUnitId,ranges){const cache=this._ensureCache(unitId,subUnitId);ranges.forEach(range=>{core.Range.foreach(range,(row,col)=>{cache.realDeleteValue(row,col)})}),this._dirtyRanges$.next({unitId,subUnitId,ranges})}getValue(unitId,subUnitId,row,col){return this._ensureCache(unitId,subUnitId).getValue(row,col)}setValue(unitId,subUnitId,row,col,value){return this._ensureCache(unitId,subUnitId).setValue(row,col,value)}},__name(_a,"DataValidationCacheService"),_a),exports2.DataValidationCacheService=__decorateClass$9([__decorateParam$9(0,core.Inject(core.ICommandService))],exports2.DataValidationCacheService);var __defProp$8=Object.defineProperty,__getOwnPropDesc$8=Object.getOwnPropertyDescriptor,__decorateClass$8=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$8(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$8(target,key,result),result},"__decorateClass$8"),__decorateParam$8=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$8");function transformFormula(lexerTreeBuilder,formula,originRow,originCol,targetRow,targetCol){return lexerTreeBuilder.moveFormulaRefOffset(formula,targetCol-originCol,targetRow-originRow)}__name(transformFormula,"transformFormula"),exports2.DataValidationCustomFormulaService=(_b=class extends core.Disposable{constructor(_instanceSrv,_registerOtherFormulaService,_lexerTreeBuilder,_dataValidationModel,_dataValidationCacheService,_injector){super();__publicField(this,"_formulaMap",new Map);__publicField(this,"_ruleFormulaMap",new Map);__publicField(this,"_formulaCellMap",new Map);this._instanceSrv=_instanceSrv,this._registerOtherFormulaService=_registerOtherFormulaService,this._lexerTreeBuilder=_lexerTreeBuilder,this._dataValidationModel=_dataValidationModel,this._dataValidationCacheService=_dataValidationCacheService,this._injector=_injector,this._initFormulaResultHandler()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(resultMap=>{for(const unitId in resultMap){const unitMap=resultMap[unitId];if(this._instanceSrv.getUnitType(unitId)===core.UniverInstanceType.UNIVER_SHEET)for(const subUnitId in unitMap){const results=unitMap[subUnitId],{formulaCellMap,ruleFormulaMap}=this._ensureMaps(unitId,subUnitId);results.forEach(result=>{var _a2,_b2;const ruleInfo=ruleFormulaMap.get((_a2=result.extra)==null?void 0:_a2.ruleId),cellInfo=formulaCellMap.get(result.formulaId),rule=this._dataValidationModel.getRuleById(unitId,subUnitId,(_b2=result.extra)==null?void 0:_b2.ruleId);rule&&ruleInfo&&!ruleInfo.isTransformable&&this._dataValidationCacheService.markRangeDirty(unitId,subUnitId,rule.ranges),cellInfo&&this._dataValidationCacheService.markCellDirty(unitId,subUnitId,cellInfo.row,cellInfo.column)})}}}))}_ensureMaps(unitId,subUnitId){let formulaUnitMap=this._formulaMap.get(unitId),ruleFormulaUnitMap=this._ruleFormulaMap.get(unitId),formulaCellUnitMap=this._formulaCellMap.get(unitId);(!formulaUnitMap||!ruleFormulaUnitMap||!formulaCellUnitMap)&&(formulaUnitMap=new Map,ruleFormulaUnitMap=new Map,formulaCellUnitMap=new Map,this._formulaMap.set(unitId,formulaUnitMap),this._ruleFormulaMap.set(unitId,ruleFormulaUnitMap),this._formulaCellMap.set(unitId,formulaCellUnitMap));let formulaMap=formulaUnitMap.get(subUnitId),ruleFormulaMap=ruleFormulaUnitMap.get(subUnitId),formulaCellMap=formulaCellUnitMap.get(subUnitId);return(!formulaMap||!ruleFormulaMap||!formulaCellMap)&&(formulaMap=new core.ObjectMatrix,formulaUnitMap.set(subUnitId,formulaMap),ruleFormulaMap=new Map,ruleFormulaUnitMap.set(subUnitId,ruleFormulaMap),formulaCellMap=new Map,formulaCellUnitMap.set(subUnitId,formulaCellMap)),{formulaMap,ruleFormulaMap,formulaCellMap}}_registerFormula(unitId,subUnitId,ruleId,formulaString){return this._registerOtherFormulaService.registerFormula(unitId,subUnitId,formulaString,{ruleId})}deleteByRuleId(unitId,subUnitId,ruleId){const{formulaMap,formulaCellMap,ruleFormulaMap}=this._ensureMaps(unitId,subUnitId),rule=this._dataValidationModel.getRuleById(unitId,subUnitId,ruleId),formulaIdList=new Set,formulaInfo=ruleFormulaMap.get(ruleId);!rule||!formulaInfo||(ruleFormulaMap.delete(ruleId),rule.ranges.forEach(range=>{core.Range.foreach(range,(row,col)=>{const value=formulaMap.getValue(row,col);if(value&&value.ruleId===ruleId){const{formulaId}=value;formulaMap.realDeleteValue(row,col),formulaIdList.add(formulaId),formulaCellMap.delete(formulaId)}})}),this._registerOtherFormulaService.deleteFormula(unitId,subUnitId,Array.from(formulaIdList.values())))}_addFormulaByRange(unitId,subUnitId,ruleId,formula,ranges){const{formulaMap,ruleFormulaMap,formulaCellMap}=this._ensureMaps(unitId,subUnitId);if(!formula)return;const originRow=ranges[0].startRow,originCol=ranges[0].startColumn;let originFormulaId;ranges.forEach(range=>{core.Range.foreach(range,(row,column)=>{const relativeFormula=transformFormula(this._lexerTreeBuilder,formula,originRow,originCol,row,column),formulaId=this._registerFormula(unitId,subUnitId,ruleId,relativeFormula);formulaMap.setValue(row,column,{formulaId,ruleId}),formulaCellMap.set(formulaId,{row,column})})}),ruleFormulaMap.set(ruleId,{formula,originCol,originRow,formulaId:originFormulaId,isTransformable:!0})}addRule(unitId,subUnitId,rule){const{ranges,formula1,uid:ruleId,type}=rule;type!==core.DataValidationType.CUSTOM||!formula1||!core.isFormulaString(formula1)||this._addFormulaByRange(unitId,subUnitId,ruleId,formula1,ranges)}updateRuleRanges(unitId,subUnitId,ruleId,oldRanges,newRanges){const{formulaMap,ruleFormulaMap,formulaCellMap}=this._ensureMaps(unitId,subUnitId),info=ruleFormulaMap.get(ruleId);if(!info)return;const{formula,originCol,originRow,isTransformable,formulaId}=info,deleteFormulaIdList=new Set;oldRanges.forEach(range=>{core.Range.foreach(range,(row,col)=>{const value=formulaMap.getValue(row,col);value&&value.ruleId===ruleId&&(value.temp=!0)})}),newRanges.forEach(range=>{core.Range.foreach(range,(row,col)=>{var _a2;const oldValue=(_a2=formulaMap.getValue(row,col))!=null?_a2:{};if(oldValue.ruleId!==ruleId){const oldRuleFormula=ruleFormulaMap.get(oldValue.ruleId);if(oldRuleFormula!=null&&oldRuleFormula.isTransformable&&deleteFormulaIdList.add(oldValue.formulaId),isTransformable){const relativeText=transformFormula(this._lexerTreeBuilder,formula,originRow,originCol,row,col),formulaId2=this._registerFormula(unitId,subUnitId,ruleId,relativeText);formulaMap.setValue(row,col,{ruleId,formulaId:formulaId2}),formulaCellMap.set(formulaId2,{row,column:col})}else formulaMap.setValue(row,col,{ruleId,formulaId})}else oldValue.temp=!1})}),oldRanges.forEach(range=>{core.Range.foreach(range,(row,col)=>{const value=formulaMap.getValue(row,col);value&&value.ruleId===ruleId&&value.temp===!0&&(formulaMap.realDeleteValue(row,col),isTransformable&&deleteFormulaIdList.add(value.formulaId))})}),deleteFormulaIdList.forEach(formulaId2=>{formulaCellMap.delete(formulaId2)}),this._registerOtherFormulaService.deleteFormula(unitId,subUnitId,Array.from(deleteFormulaIdList.values()))}updateRuleFormula(unitId,subUnitId,ruleId,ranges,formula){const{ruleFormulaMap}=this._ensureMaps(unitId,subUnitId),current=ruleFormulaMap.get(ruleId);(!current||current.formula!==formula)&&this._addFormulaByRange(unitId,subUnitId,ruleId,formula,ranges)}getCellFormulaValue(unitId,subUnitId,row,col){const{formulaMap}=this._ensureMaps(unitId,subUnitId),current=formulaMap.getValue(row,col);return current?this._registerOtherFormulaService.getFormulaValue(unitId,subUnitId,current.formulaId):Promise.resolve(void 0)}getRuleFormulaInfo(unitId,subUnitId,ruleId){const{ruleFormulaMap}=this._ensureMaps(unitId,subUnitId);return ruleFormulaMap.get(ruleId)}},__name(_b,"DataValidationCustomFormulaService"),_b),exports2.DataValidationCustomFormulaService=__decorateClass$8([__decorateParam$8(0,core.IUniverInstanceService),__decorateParam$8(1,core.Inject(sheetsFormula.RegisterOtherFormulaService)),__decorateParam$8(2,core.Inject(engineFormula.LexerTreeBuilder)),__decorateParam$8(3,core.Inject(dataValidation.DataValidationModel)),__decorateParam$8(4,core.Inject(exports2.DataValidationCacheService)),__decorateParam$8(5,core.Inject(core.Injector))],exports2.DataValidationCustomFormulaService);var __defProp$7=Object.defineProperty,__getOwnPropDesc$7=Object.getOwnPropertyDescriptor,__decorateClass$7=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$7(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$7(target,key,result),result},"__decorateClass$7"),__decorateParam$7=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$7");exports2.DataValidationFormulaService=(_c=class extends core.Disposable{constructor(_instanceService,_registerOtherFormulaService,_dataValidationCacheService,_dataValidationModel){super();__publicField(this,"_formulaRuleMap",new Map);this._instanceService=_instanceService,this._registerOtherFormulaService=_registerOtherFormulaService,this._dataValidationCacheService=_dataValidationCacheService,this._dataValidationModel=_dataValidationModel,this._initFormulaResultHandler()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(resultMap=>{for(const unitId in resultMap){const unitMap=resultMap[unitId];if(this._instanceService.getUnitType(unitId)===core.UniverInstanceType.UNIVER_SHEET)for(const subUnitId in unitMap){const results=unitMap[subUnitId],formulaMap=this._ensureRuleFormulaMap(unitId,subUnitId);results.forEach(result=>{var _a2,_b2;if(formulaMap.get((_a2=result.extra)==null?void 0:_a2.ruleId)){const rule=this._dataValidationModel.getRuleById(unitId,subUnitId,(_b2=result.extra)==null?void 0:_b2.ruleId);rule&&this._dataValidationCacheService.markRangeDirty(unitId,subUnitId,rule.ranges)}})}}}))}_ensureRuleFormulaMap(unitId,subUnitId){let unitMap=this._formulaRuleMap.get(unitId);unitMap||(unitMap=new Map,this._formulaRuleMap.set(unitId,unitMap));let subUnitMap=unitMap.get(subUnitId);return subUnitMap||(subUnitMap=new Map,unitMap.set(subUnitId,subUnitMap)),subUnitMap}addRule(unitId,subUnitId,ruleId,formula1,formula2){const isFormula1Legal=core.isFormulaString(formula1),isFormula2Legal=core.isFormulaString(formula2);if(!isFormula1Legal&&!isFormula2Legal)return;const formulaRuleMap=this._ensureRuleFormulaMap(unitId,subUnitId),item=[void 0,void 0];if(isFormula1Legal){const id=this._registerOtherFormulaService.registerFormula(unitId,subUnitId,formula1,{ruleId});item[0]={id,text:formula1}}if(isFormula2Legal){const id=this._registerOtherFormulaService.registerFormula(unitId,subUnitId,formula2,{ruleId});item[1]={id,text:formula2}}formulaRuleMap.set(ruleId,item)}removeRule(unitId,subUnitId,ruleId){const item=this._ensureRuleFormulaMap(unitId,subUnitId).get(ruleId);if(!item)return;const[formula1,formula2]=item,idList=[formula1==null?void 0:formula1.id,formula2==null?void 0:formula2.id].filter(Boolean);idList.length&&this._registerOtherFormulaService.deleteFormula(unitId,subUnitId,idList)}updateRuleFormulaText(unitId,subUnitId,ruleId,formula1,formula2){const item=this._ensureRuleFormulaMap(unitId,subUnitId).get(ruleId);if(!item){this.addRule(unitId,subUnitId,ruleId,formula1,formula2);return}const[oldFormula1,oldFormula2]=item;if((oldFormula1==null?void 0:oldFormula1.text)!==formula1)if(oldFormula1&&this._registerOtherFormulaService.deleteFormula(unitId,subUnitId,[oldFormula1.id]),core.isFormulaString(formula1)){const formulaId=this._registerOtherFormulaService.registerFormula(unitId,subUnitId,formula1,{ruleId});item[0]={text:formula1,id:formulaId}}else item[0]=void 0;if((oldFormula2==null?void 0:oldFormula2.text)!==formula2)if(oldFormula2&&this._registerOtherFormulaService.deleteFormula(unitId,subUnitId,[oldFormula2.id]),core.isFormulaString(formula2)){const formulaId=this._registerOtherFormulaService.registerFormula(unitId,subUnitId,formula2,{ruleId});item[1]={text:formula2,id:formulaId}}else item[1]=void 0}getRuleFormulaResult(unitId,subUnitId,ruleId){const formulaInfo=this._ensureRuleFormulaMap(unitId,subUnitId).get(ruleId);if(!formulaInfo)return Promise.resolve(null);const getResult=__name(async info=>info&&this._registerOtherFormulaService.getFormulaValue(unitId,subUnitId,info.id),"getResult");return Promise.all([getResult(formulaInfo[0]),getResult(formulaInfo[1])])}getRuleFormulaResultSync(unitId,subUnitId,ruleId){const formulaInfo=this._ensureRuleFormulaMap(unitId,subUnitId).get(ruleId);if(formulaInfo)return formulaInfo.map(i=>{if(i)return this._registerOtherFormulaService.getFormulaValueSync(unitId,subUnitId,i.id)})}getRuleFormulaInfo(unitId,subUnitId,ruleId){return this._ensureRuleFormulaMap(unitId,subUnitId).get(ruleId)}},__name(_c,"DataValidationFormulaService"),_c),exports2.DataValidationFormulaService=__decorateClass$7([__decorateParam$7(0,core.IUniverInstanceService),__decorateParam$7(1,core.Inject(sheetsFormula.RegisterOtherFormulaService)),__decorateParam$7(2,core.Inject(exports2.DataValidationCacheService)),__decorateParam$7(3,core.Inject(dataValidation.DataValidationModel))],exports2.DataValidationFormulaService);function getCellValueOrigin(cell){return core.getOriginCellValue(cell)}__name(getCellValueOrigin,"getCellValueOrigin");function getStringCellValue(cell){var _a2;return String((_a2=getCellValueOrigin(cell))!=null?_a2:"")}__name(getStringCellValue,"getStringCellValue");const Interval=(_d=class{constructor(low,high){this.low=low,this.high=high}clone(){return new _d(this.low,this.high)}get max(){return this.clone()}less_than(other_interval){return this.low<other_interval.low||this.low===other_interval.low&&this.high<other_interval.high}equal_to(other_interval){return this.low===other_interval.low&&this.high===other_interval.high}intersect(other_interval){return!this.not_intersect(other_interval)}not_intersect(other_interval){return this.high<other_interval.low||other_interval.high<this.low}merge(other_interval){return new _d(this.low===void 0?other_interval.low:this.low<other_interval.low?this.low:other_interval.low,this.high===void 0?other_interval.high:this.high>other_interval.high?this.high:other_interval.high)}output(){return[this.low,this.high]}static comparable_max(interval1,interval2){return interval1.merge(interval2)}static comparable_less_than(val1,val2){return val1<val2}},__name(_d,"Interval"),_d),RB_TREE_COLOR_RED=0,RB_TREE_COLOR_BLACK=1,_Node=class _Node{constructor(key=void 0,value=void 0,left=null,right=null,parent=null,color=RB_TREE_COLOR_BLACK){if(this.left=left,this.right=right,this.parent=parent,this.color=color,this.item={key,value},key&&key instanceof Array&&key.length===2&&!Number.isNaN(key[0])&&!Number.isNaN(key[1])){let[low,high]=key;low>high&&([low,high]=[high,low]),this.item.key=new Interval(low,high)}this.max=this.item.key?this.item.key.max:void 0}isNil(){return this.item.key===void 0&&this.item.value===void 0&&this.left===null&&this.right===null&&this.color===RB_TREE_COLOR_BLACK}_value_less_than(other_node){return this.item.value&&other_node.item.value&&this.item.value.less_than?this.item.value.less_than(other_node.item.value):this.item.value<other_node.item.value}less_than(other_node){return this.item.value===this.item.key&&other_node.item.value===other_node.item.key?this.item.key.less_than(other_node.item.key):this.item.key.less_than(other_node.item.key)||this.item.key.equal_to(other_node.item.key)&&this._value_less_than(other_node)}_value_equal(other_node){return this.item.value&&other_node.item.value&&this.item.value.equal_to?this.item.value.equal_to(other_node.item.value):this.item.value===other_node.item.value}equal_to(other_node){return this.item.value===this.item.key&&other_node.item.value===other_node.item.key?this.item.key.equal_to(other_node.item.key):this.item.key.equal_to(other_node.item.key)&&this._value_equal(other_node)}intersect(other_node){return this.item.key.intersect(other_node.item.key)}copy_data(other_node){this.item.key=other_node.item.key,this.item.value=other_node.item.value}update_max(){if(this.max=this.item.key?this.item.key.max:void 0,this.right&&this.right.max){const comparable_max=this.item.key.constructor.comparable_max;this.max=comparable_max(this.max,this.right.max)}if(this.left&&this.left.max){const comparable_max=this.item.key.constructor.comparable_max;this.max=comparable_max(this.max,this.left.max)}}not_intersect_left_subtree(search_node){const comparable_less_than=this.item.key.constructor.comparable_less_than;let high=this.left.max.high!==void 0?this.left.max.high:this.left.max;return comparable_less_than(high,search_node.item.key.low)}not_intersect_right_subtree(search_node){const comparable_less_than=this.item.key.constructor.comparable_less_than;let low=this.right.max.low!==void 0?this.right.max.low:this.right.item.key.low;return comparable_less_than(search_node.item.key.high,low)}};__name(_Node,"Node");let Node=_Node;const _IntervalTree=class _IntervalTree{constructor(){this.root=null,this.nil_node=new Node}get size(){let count=0;return this.tree_walk(this.root,()=>count++),count}get keys(){let res=[];return this.tree_walk(this.root,node=>res.push(node.item.key.output?node.item.key.output():node.item.key)),res}get values(){let res=[];return this.tree_walk(this.root,node=>res.push(node.item.value)),res}get items(){let res=[];return this.tree_walk(this.root,node=>res.push({key:node.item.key.output?node.item.key.output():node.item.key,value:node.item.value})),res}isEmpty(){return this.root==null||this.root===this.nil_node}clear(){this.root=null}insert(key,value=key){if(key===void 0)return;let insert_node=new Node(key,value,this.nil_node,this.nil_node,null,RB_TREE_COLOR_RED);return this.tree_insert(insert_node),this.recalc_max(insert_node),insert_node}exist(key,value=key){let search_node=new Node(key,value);return!!this.tree_search(this.root,search_node)}remove(key,value=key){let search_node=new Node(key,value),delete_node=this.tree_search(this.root,search_node);return delete_node&&this.tree_delete(delete_node),delete_node}search(interval,outputMapperFn=(value,key)=>value===key?key.output():value){let search_node=new Node(interval),resp_nodes=[];return this.tree_search_interval(this.root,search_node,resp_nodes),resp_nodes.map(node=>outputMapperFn(node.item.value,node.item.key))}intersect_any(interval){let search_node=new Node(interval);return this.tree_find_any_interval(this.root,search_node)}forEach(visitor){this.tree_walk(this.root,node=>visitor(node.item.key,node.item.value))}map(callback){const tree=new _IntervalTree;return this.tree_walk(this.root,node=>tree.insert(node.item.key,callback(node.item.value,node.item.key))),tree}*iterate(interval,outputMapperFn=(value,key)=>value===key?key.output():value){let node;for(interval?node=this.tree_search_nearest_forward(this.root,new Node(interval)):this.root&&(node=this.local_minimum(this.root));node;)yield outputMapperFn(node.item.value,node.item.key),node=this.tree_successor(node)}recalc_max(node){let node_current=node;for(;node_current.parent!=null;)node_current.parent.update_max(),node_current=node_current.parent}tree_insert(insert_node){let current_node=this.root,parent_node=null;if(this.root==null||this.root===this.nil_node)this.root=insert_node;else{for(;current_node!==this.nil_node;)parent_node=current_node,insert_node.less_than(current_node)?current_node=current_node.left:current_node=current_node.right;insert_node.parent=parent_node,insert_node.less_than(parent_node)?parent_node.left=insert_node:parent_node.right=insert_node}this.insert_fixup(insert_node)}insert_fixup(insert_node){let current_node,uncle_node;for(current_node=insert_node;current_node!==this.root&¤t_node.parent.color===RB_TREE_COLOR_RED;)current_node.parent===current_node.parent.parent.left?(uncle_node=current_node.parent.parent.right,uncle_node.color===RB_TREE_COLOR_RED?(current_node.parent.color=RB_TREE_COLOR_BLACK,uncle_node.color=RB_TREE_COLOR_BLACK,current_node.parent.parent.color=RB_TREE_COLOR_RED,current_node=current_node.parent.parent):(current_node===current_node.parent.right&&(current_node=current_node.parent,this.rotate_left(current_node)),current_node.parent.color=RB_TREE_COLOR_BLACK,current_node.parent.parent.color=RB_TREE_COLOR_RED,this.rotate_right(current_node.parent.parent))):(uncle_node=current_node.parent.parent.left,uncle_node.color===RB_TREE_COLOR_RED?(current_node.parent.color=RB_TREE_COLOR_BLACK,uncle_node.color=RB_TREE_COLOR_BLACK,current_node.parent.parent.color=RB_TREE_COLOR_RED,current_node=current_node.parent.parent):(current_node===current_node.parent.left&&(current_node=current_node.parent,this.rotate_right(current_node)),current_node.parent.color=RB_TREE_COLOR_BLACK,current_node.parent.parent.color=RB_TREE_COLOR_RED,this.rotate_left(current_node.parent.parent)));this.root.color=RB_TREE_COLOR_BLACK}tree_delete(delete_node){let cut_node,fix_node;delete_node.left===this.nil_node||delete_node.right===this.nil_node?cut_node=delete_node:cut_node=this.tree_successor(delete_node),cut_node.left!==this.nil_node?fix_node=cut_node.left:fix_node=cut_node.right,fix_node.parent=cut_node.parent,cut_node===this.root?this.root=fix_node:(cut_node===cut_node.parent.left?cut_node.parent.left=fix_node:cut_node.parent.right=fix_node,cut_node.parent.update_max()),this.recalc_max(fix_node),cut_node!==delete_node&&(delete_node.copy_data(cut_node),delete_node.update_max(),this.recalc_max(delete_node)),cut_node.color===RB_TREE_COLOR_BLACK&&this.delete_fixup(fix_node)}delete_fixup(fix_node){let current_node=fix_node,brother_node;for(;current_node!==this.root&¤t_node.parent!=null&¤t_node.color===RB_TREE_COLOR_BLACK;)current_node===current_node.parent.left?(brother_node=current_node.parent.right,brother_node.color===RB_TREE_COLOR_RED&&(brother_node.color=RB_TREE_COLOR_BLACK,current_node.parent.color=RB_TREE_COLOR_RED,this.rotate_left(current_node.parent),brother_node=current_node.parent.right),brother_node.left.color===RB_TREE_COLOR_BLACK&&brother_node.right.color===RB_TREE_COLOR_BLACK?(brother_node.color=RB_TREE_COLOR_RED,current_node=current_node.parent):(brother_node.right.color===RB_TREE_COLOR_BLACK&&(brother_node.color=RB_TREE_COLOR_RED,brother_node.left.color=RB_TREE_COLOR_BLACK,this.rotate_right(brother_node),brother_node=current_node.parent.right),brother_node.color=current_node.parent.color,current_node.parent.color=RB_TREE_COLOR_BLACK,brother_node.right.color=RB_TREE_COLOR_BLACK,this.rotate_left(current_node.parent),current_node=this.root)):(brother_node=current_node.parent.left,brother_node.color===RB_TREE_COLOR_RED&&(brother_node.color=RB_TREE_COLOR_BLACK,current_node.parent.color=RB_TREE_COLOR_RED,this.rotate_right(current_node.parent),brother_node=current_node.parent.left),brother_node.left.color===RB_TREE_COLOR_BLACK&&brother_node.right.color===RB_TREE_COLOR_BLACK?(brother_node.color=RB_TREE_COLOR_RED,current_node=current_node.parent):(brother_node.left.color===RB_TREE_COLOR_BLACK&&(brother_node.color=RB_TREE_COLOR_RED,brother_node.right.color=RB_TREE_COLOR_BLACK,this.rotate_left(brother_node),brother_node=current_node.parent.left),brother_node.color=current_node.parent.color,current_node.parent.color=RB_TREE_COLOR_BLACK,brother_node.left.color=RB_TREE_COLOR_BLACK,this.rotate_right(current_node.parent),current_node=this.root));current_node.color=RB_TREE_COLOR_BLACK}tree_search(node,search_node){if(!(node==null||node===this.nil_node))return search_node.equal_to(node)?node:search_node.less_than(node)?this.tree_search(node.left,search_node):this.tree_search(node.right,search_node)}tree_search_nearest_forward(node,search_node){let best,curr=node;for(;curr&&curr!==this.nil_node;)curr.less_than(search_node)?curr.intersect(search_node)?(best=curr,curr=curr.left):curr=curr.right:((!best||curr.less_than(best))&&(best=curr),curr=curr.left);return best||null}tree_search_interval(node,search_node,res){node!=null&&node!==this.nil_node&&(node.left!==this.nil_node&&!node.not_intersect_left_subtree(search_node)&&this.tree_search_interval(node.left,search_node,res),node.intersect(search_node)&&res.push(node),node.right!==this.nil_node&&!node.not_intersect_right_subtree(search_node)&&this.tree_search_interval(node.right,search_node,res))}tree_find_any_interval(node,search_node){let found=!1;return node!=null&&node!==this.nil_node&&(node.left!==this.nil_node&&!node.not_intersect_left_subtree(search_node)&&(found=this.tree_find_any_interval(node.left,search_node)),found||(found=node.intersect(search_node)),!found&&node.right!==this.nil_node&&!node.not_intersect_right_subtree(search_node)&&(found=this.tree_find_any_interval(node.right,search_node))),found}local_minimum(node){let node_min=node;for(;node_min.left!=null&&node_min.left!==this.nil_node;)node_min=node_min.left;return node_min}local_maximum(node){let node_max=node;for(;node_max.right!=null&&node_max.right!==this.nil_node;)node_max=node_max.right;return node_max}tree_successor(node){let node_successor,current_node,parent_node;if(node.right!==this.nil_node)node_successor=this.local_minimum(node.right);else{for(current_node=node,parent_node=node.parent;parent_node!=null&&parent_node.right===current_node;)current_node=parent_node,parent_node=parent_node.parent;node_successor=parent_node}return node_successor}rotate_left(x){let y=x.right;x.right=y.left,y.left!==this.nil_node&&(y.left.parent=x),y.parent=x.parent,x===this.root?this.root=y:x===x.parent.left?x.parent.left=y:x.parent.right=y,y.left=x,x.parent=y,x!=null&&x!==this.nil_node&&x.update_max(),y=x.parent,y!=null&&y!==this.nil_node&&y.update_max()}rotate_right(y){let x=y.left;y.left=x.right,x.right!==this.nil_node&&(x.right.parent=y),x.parent=y.parent,y===this.root?this.root=x:y===y.parent.left?y.parent.left=x:y.parent.right=x,x.right=y,y.parent=x,y!==null&&y!==this.nil_node&&y.update_max(),x=y.parent,x!=null&&x!==this.nil_node&&x.update_max()}tree_walk(node,action){node!=null&&node!==this.nil_node&&(this.tree_walk(node.left,action),action(node),this.tree_walk(node.right,action))}testRedBlackProperty(){let res=!0;return this.tree_walk(this.root,function(node){node.color===RB_TREE_COLOR_RED&&(node.left.color===RB_TREE_COLOR_BLACK&&node.right.color===RB_TREE_COLOR_BLACK||(res=!1))}),res}testBlackHeightProperty(node){let height=0,heightLeft=0,heightRight=0;if(node.color===RB_TREE_COLOR_BLACK&&height++,node.left!==this.nil_node?heightLeft=this.testBlackHeightProperty(node.left):heightLeft=1,node.right!==this.nil_node?heightRight=this.testBlackHeightProperty(node.right):heightRight=1,heightLeft!==heightRight)throw new Error("Red-black height property violated");return height+=heightLeft,height}};__name(_IntervalTree,"IntervalTree");let IntervalTree=_IntervalTree;const _RuleMatrix=class _RuleMatrix{constructor(value,_unitId,_subUnitId,_univerInstanceService,_disableTree=!1){__publicField(this,"_map");__publicField(this,"_tree",new Map);__publicField(this,"_dirty",!0);__publicField(this,"_buildTree",__name(()=>{if(!this._dirty||this._disableTree)return;const map=new Map;this._map.forEach((ranges,ruleId)=>{ranges.forEach(range=>{for(let col=range.startColumn;col<=range.endColumn;col++){let items=map.get(col);items||(items=[],map.set(col,items)),items.push({startRow:range.startRow,endRow:range.endRow,ruleId})}})});const treeMap=new Map;map.forEach((items,col)=>{const tree=new IntervalTree;items.forEach(item=>{tree.insert([item.startRow,item.endRow],item.ruleId)}),treeMap.set(col,tree)}),this._tree=treeMap,this._dirty=!1},"_buildTree"));__publicField(this,"_debonceBuildTree",core.debounce(this._buildTree,0));this._unitId=_unitId,this._subUnitId=_subUnitId,this._univerInstanceService=_univerInstanceService,this._disableTree=_disableTree,this._map=value,this._buildTree()}get _worksheet(){var _a2;return(_a2=this._univerInstanceService.getUnit(this._unitId,core.UniverInstanceType.UNIVER_SHEET))==null?void 0:_a2.getSheetBySheetId(this._subUnitId)}addRule(rule){if(!this._worksheet)return;const ruleId=rule.uid,ranges=rule.ranges.map(range=>core.Range.transformRange(range,this._worksheet));this._map.forEach((value,key)=>{const newRanges=core.Rectangle.subtractMulti(value,ranges);newRanges.length===0?this._map.delete(key):this._map.set(key,newRanges)}),this._dirty=!0,this._map.set(ruleId,ranges),this._debonceBuildTree()}removeRange(_ranges){if(!this._worksheet)return;const ranges=_ranges.map(range=>core.Range.transformRange(range,this._worksheet));this._map.forEach((value,key)=>{const newRanges=core.Rectangle.subtractMulti(value,ranges);newRanges.length===0?this._map.delete(key):this._map.set(key,newRanges)}),this._dirty=!0,this._debonceBuildTree()}removeRule(rule){this._map.delete(rule.uid),this._dirty=!0,this._debonceBuildTree()}updateRange(ruleId,_newRanges){if(!this._worksheet)return;this._map.delete(ruleId);const ranges=_newRanges.map(range=>core.Range.transformRange(range,this._worksheet));this._map.forEach((value,key)=>{const newRanges=core.Rectangle.subtractMulti(value,ranges);newRanges.length===0?this._map.delete(key):this._map.set(key,newRanges)}),this._map.set(ruleId,ranges),this._dirty=!0,this._debonceBuildTree()}addRangeRules(rules){rules.forEach(({id:ruleId,ranges})=>{if(!ranges.length)return;let current=this._map.get(ruleId);current?(this._map.set(ruleId,core.Rectangle.mergeRanges([...current,...ranges])),current=this._map.get(ruleId)):(current=ranges,this._map.set(ruleId,current)),this._map.forEach((value,key)=>{if(key===ruleId)return;const newRanges=core.Rectangle.subtractMulti(value,ranges);newRanges.length===0?this._map.delete(key):this._map.set(key,newRanges)})}),this._dirty=!0,this._debonceBuildTree()}diff(rules){const mutations=[];let deleteIndex=0;return rules.forEach((rule,index)=>{var _a2;const newRanges=(_a2=this._map.get(rule.uid))!=null?_a2:[],oldRanges=rule.ranges;newRanges.length!==0&&(newRanges.length!==oldRanges.length||newRanges.some((range,i)=>!core.Rectangle.equals(range,oldRanges[i])))&&mutations.push({type:"update",ruleId:rule.uid,oldRanges,newRanges:core.Rectangle.sort(newRanges),rule}),newRanges.length===0&&(mutations.push({type:"delete",rule,index:index-deleteIndex}),deleteIndex++)}),mutations}diffWithAddition(rules,additionRules){const mutations=[];let deleteIndex=0;return rules.forEach((rule,index)=>{var _a2;const newRanges=(_a2=this._map.get(rule.uid))!=null?_a2:[],oldRanges=rule.ranges;newRanges.length!==0&&(newRanges.length!==oldRanges.length||newRanges.some((range,i)=>!core.Rectangle.equals(range,oldRanges[i])))&&mutations.push({type:"update",ruleId:rule.uid,oldRanges,newRanges:core.Rectangle.sort(newRanges),rule}),newRanges.length===0&&(mutations.push({type:"delete",rule,index:index-deleteIndex}),deleteIndex++)}),Array.from(additionRules).forEach(rule=>{var _a2;const newRanges=(_a2=this._map.get(rule.uid))!=null?_a2:[];mutations.push({type:"add",rule:{...rule,ranges:core.Rectangle.sort(newRanges)}})}),mutations}clone(){return new _RuleMatrix(new Map(core.Tools.deepClone(Array.from(this._map.entries()))),this._unitId,this._subUnitId,this._univerInstanceService,!0)}getValue(row,col){this._dirty&&this._buildTree();const tree=this._tree.get(col);if(!tree)return;const result=tree.search([row,row]);return result.length>0?result[0]:void 0}};__name(_RuleMatrix,"RuleMatrix");let RuleMatrix=_RuleMatrix;var __defProp$6=Object.defineProperty,__getOwnPropDesc$6=Object.getOwnPropertyDescriptor,__decorateClass$6=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$6(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$6(target,key,result),result},"__decorateClass$6"),__decorateParam$6=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$6");exports2.SheetDataValidationModel=(_e=class extends core.Disposable{constructor(_dataValidationModel,_univerInstanceService,_dataValidatorRegistryService,_dataValidationCacheService,_dataValidationFormulaService,_dataValidationCustomFormulaService,_commandService){super();__publicField(this,"_ruleMatrixMap",new Map);__publicField(this,"_validStatusChange$",new rxjs.Subject);__publicField(this,"_ruleChange$",new rxjs.Subject);__publicField(this,"ruleChange$",this._ruleChange$.asObservable());__publicField(this,"validStatusChange$",this._validStatusChange$.asObservable());this._dataValidationModel=_dataValidationModel,this._univerInstanceService=_univerInstanceService,this._dataValidatorRegistryService=_dataValidatorRegistryService,this._dataValidationCacheService=_dataValidationCacheService,this._dataValidationFormulaService=_dataValidationFormulaService,this._dataValidationCustomFormulaService=_dataValidationCustomFormulaService,this._commandService=_commandService,this._initRuleUpdateListener(),this.disposeWithMe(()=>{this._ruleChange$.complete(),this._validStatusChange$.complete()}),this._initUniverInstanceListener()}_initUniverInstanceListener(){this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(unit=>{this._ruleMatrixMap.delete(unit.getUnitId())})),this.disposeWithMe(this._commandService.onCommandExecuted(command=>{if(command.id===sheets.RemoveSheetMutation.id){const{unitId,subUnitId}=command.params,subUnitMap=this._ruleMatrixMap.get(unitId);subUnitMap&&subUnitMap.delete(subUnitId)}}))}_initRuleUpdateListener(){const allRules=this._dataValidationModel.getAll();for(const[unitId,subUnitMap]of allRules)for(const[subUnitId,rules]of subUnitMap)for(const rule of rules)this._addRule(unitId,subUnitId,rule),this._ruleChange$.next({type:"add",unitId,subUnitId,rule,source:"patched"});this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(ruleChange=>{switch(ruleChange.type){case"add":this._addRule(ruleChange.unitId,ruleChange.subUnitId,ruleChange.rule);break;case"update":this._updateRule(ruleChange.unitId,ruleChange.subUnitId,ruleChange.rule.uid,ruleChange.oldRule,ruleChange.updatePayload);break;case"remove":this._removeRule(ruleChange.unitId,ruleChange.subUnitId,ruleChange.rule);break}this._ruleChange$.next(ruleChange)}))}_ensureRuleMatrix(unitId,subUnitId){let unitMap=this._ruleMatrixMap.get(unitId);unitMap||(unitMap=new Map,this._ruleMatrixMap.set(unitId,unitMap));let matrix=unitMap.get(subUnitId);return matrix||(matrix=new RuleMatrix(new Map,unitId,subUnitId,this._univerInstanceService),unitMap.set(subUnitId,matrix)),matrix}_addRuleSideEffect(unitId,subUnitId,rule){this._ensureRuleMatrix(unitId,subUnitId).addRule(rule),this._dataValidationCacheService.addRule(unitId,subUnitId,rule),this._dataValidationFormulaService.addRule(unitId,subUnitId,rule.uid,rule.formula1,rule.formula2),rule.type===core.DataValidationType.CUSTOM&&this._dataValidationCustomFormulaService.addRule(unitId,subUnitId,rule)}_addRule(unitId,subUnitId,rule){(Array.isArray(rule)?rule:[rule]).forEach(item=>{this._addRuleSideEffect(unitId,subUnitId,item)})}_updateRule(unitId,subUnitId,ruleId,oldRule,payload){const ruleMatrix=this._ensureRuleMatrix(unitId,subUnitId);payload.type===dataValidation.UpdateRuleType.RANGE?(ruleMatrix.updateRange(ruleId,payload.payload),this._dataValidationCacheService.updateRuleRanges(unitId,subUnitId,ruleId,payload.payload,oldRule.ranges),oldRule.type===core.DataValidationType.CUSTOM&&this._dataValidationCustomFormulaService.updateRuleRanges(unitId,subUnitId,ruleId,oldRule.ranges,payload.payload)):payload.type===dataValidation.UpdateRuleType.SETTING&&(this._dataValidationCacheService.markRangeDirty(unitId,subUnitId,oldRule.ranges),this._dataValidationFormulaService.updateRuleFormulaText(unitId,subUnitId,ruleId,payload.payload.formula1,payload.payload.formula2),oldRule.type===core.DataValidationType.CUSTOM?this._dataValidationCustomFormulaService.updateRuleFormula(unitId,subUnitId,ruleId,oldRule.ranges,payload.payload.formula1):payload.payload.type===core.DataValidationType.CUSTOM&&this._dataValidationCustomFormulaService.addRule(unitId,subUnitId,{...oldRule,...payload.payload}))}_removeRule(unitId,subUnitId,oldRule){this._ensureRuleMatrix(unitId,subUnitId).removeRule(oldRule),this._dataValidationCacheService.removeRule(unitId,subUnitId,oldRule),oldRule.type===core.DataValidationType.CUSTOM&&this._dataValidationCustomFormulaService.deleteByRuleId(unitId,subUnitId,oldRule.uid)}getValidator(type){return this._dataValidatorRegistryService.getValidatorItem(type)}getRuleIdByLocation(unitId,subUnitId,row,col){return this._ensureRuleMatrix(unitId,subUnitId).getValue(row,col)}getRuleByLocation(unitId,subUnitId,row,col){const ruleId=this.getRuleIdByLocation(unitId,subUnitId,row,col);if(ruleId)return this._dataValidationModel.getRuleById(unitId,subUnitId,ruleId)}validator(rule,pos,_onCompete){const{col,row,unitId,subUnitId,worksheet}=pos,ruleId=rule.uid,formula1=rule.formula1,formula2=rule.formula2,onCompete=__name((status,changed)=>{_onCompete&&_onCompete(status,changed),changed&&this._validStatusChange$.next({unitId,subUnitId,ruleId:rule.uid,status,row,col})},"onCompete"),cell=worksheet.getCellValueOnly(row,col),validator=this.getValidator(rule.type),cellRaw=worksheet.getCellRaw(row,col),cellValue=getCellValueOrigin(cellRaw),interceptValue=getCellValueOrigin(cell);if(validator){const cache=this._dataValidationCacheService.ensureCache(unitId,subUnitId),current=cache.getValue(row,col);return!current||current.value!==cellValue||current.interceptValue!==interceptValue||current.ruleId!==ruleId||current.formula1!==formula1||current.formula2!==formula2?(cache.setValue(row,col,{value:cellValue,interceptValue,status:core.DataValidationStatus.VALIDATING,ruleId,formula1:formula1||"",formula2:formula2||""}),validator.validator({value:cellValue,unitId,subUnitId,row,column:col,worksheet:pos.worksheet,workbook:pos.workbook,interceptValue:getCellValueOrigin(cell),t:cellRaw==null?void 0:cellRaw.t},rule).then(status=>{const realStatus=status?core.DataValidationStatus.VALID:core.DataValidationStatus.INVALID;cache.setValue(row,col,{value:cellValue,status:realStatus,ruleId,interceptValue,formula1:formula1||"",formula2:formula2||""}),onCompete(realStatus,!0)}),core.DataValidationStatus.VALIDATING):(onCompete(current.status,!1),current.status)}else return onCompete(core.DataValidationStatus.VALID,!1),core.DataValidationStatus.VALID}getRuleErrorMsg(unitId,subUnitId,ruleId){const rule=this._dataValidationModel.getRuleById(unitId,subUnitId,ruleId);if(!rule)return"";const validator=this._dataValidatorRegistryService.getValidatorItem(rule.type);return rule.error?rule.error:validator?validator.getRuleFinalError(rule):""}getRuleObjectMatrix(unitId,subUnitId){return this._ensureRuleMatrix(unitId,subUnitId)}getRuleById(unitId,subUnitId,ruleId){return this._dataValidationModel.getRuleById(unitId,subUnitId,ruleId)}getRuleIndex(unitId,subUnitId,ruleId){return this._dataValidationModel.getRuleIndex(unitId,subUnitId,ruleId)}getRules(unitId,subUnitId){return[...this._dataValidationModel.getRules(unitId,subUnitId)]}getUnitRules(unitId){return this._dataValidationModel.getUnitRules(unitId)}deleteUnitRules(unitId){return this._dataValidationModel.deleteUnitRules(unitId)}getSubUnitIds(unitId){return this._dataValidationModel.getSubUnitIds(unitId)}getAll(){return this._dataValidationModel.getAll()}},__name(_e,"SheetDataValidationModel"),_e),exports2.SheetDataValidationModel=__decorateClass$6([__decorateParam$6(0,core.Inject(dataValidation.DataValidationModel)),__decorateParam$6(1,core.IUniverInstanceService),__decorateParam$6(2,core.Inject(dataValidation.DataValidatorRegistryService)),__decorateParam$6(3,core.Inject(exports2.DataValidationCacheService)),__decorateParam$6(4,core.Inject(exports2.DataValidationFormulaService)),__decorateParam$6(5,core.Inject(exports2.DataValidationCustomFormulaService)),__decorateParam$6(6,core.ICommandService)],exports2.SheetDataValidationModel);function getFormulaResult(result){var _a2,_b2;return(_b2=(_a2=result==null?void 0:result[0])==null?void 0:_a2[0])==null?void 0:_b2.v}__name(getFormulaResult,"getFormulaResult");function getFormulaCellData(result){var _a2;return(_a2=result==null?void 0:result[0])==null?void 0:_a2[0]}__name(getFormulaCellData,"getFormulaCellData");function isLegalFormulaResult(res){return!engineFormula.ERROR_TYPE_SET.has(res)}__name(isLegalFormulaResult,"isLegalFormulaResult");const CHECKBOX_FORMULA_1=1,CHECKBOX_FORMULA_2=0;function getFailMessage(formula,localeService){return core.Tools.isBlank(formula)?localeService.t("dataValidation.validFail.value"):core.isFormulaString(formula)?localeService.t("dataValidation.validFail.primitive"):""}__name(getFailMessage,"getFailMessage");const transformCheckboxValue=__name(value=>core.Tools.isDefine(value)&&String(value).toLowerCase()==="true"?"1":String(value).toLowerCase()==="false"?"0":value,"transformCheckboxValue"),_CheckboxValidator=class _CheckboxValidator extends dataValidation.BaseDataValidator{constructor(){super(...arguments);__publicField(this,"id",core.DataValidationType.CHECKBOX);__publicField(this,"title","dataValidation.checkbox.title");__publicField(this,"operators",[]);__publicField(this,"scopes",["sheet"]);__publicField(this,"_formulaService",this.injector.get(exports2.DataValidationFormulaService));__publicField(this,"skipDefaultFontRender",__name((rule,cellValue,pos)=>{const{formula1,formula2}=this.parseFormulaSync(rule,pos.unitId,pos.subUnitId),valueStr=`${cellValue!=null?cellValue:""}`;return!valueStr||valueStr===`${formula1}`||valueStr===`${formula2}`},"skipDefaultFontRender"))}validatorFormula(rule,unitId,subUnitId){const{formula1,formula2}=rule,isEqual=formula1===formula2;if(core.Tools.isBlank(formula1)&&core.Tools.isBlank(formula2))return{success:!0};if(isEqual)return{success:!1,formula1:this.localeService.t("dataValidation.validFail.checkboxEqual"),formula2:this.localeService.t("dataValidation.validFail.checkboxEqual")};const error1=getFailMessage(formula1,this.localeService),error2=getFailMessage(formula2,this.localeService);return{success:!error1&&!error2,formula1:error1,formula2:error2}}async parseFormula(rule,unitId,subUnitId){var _a2,_b2;const{formula1=CHECKBOX_FORMULA_1,formula2=CHECKBOX_FORMULA_2}=rule,results=await this._formulaService.getRuleFormulaResult(unitId,subUnitId,rule.uid),originFormula1=core.isFormulaString(formula1)?getFormulaResult((_a2=results==null?void 0:results[0])==null?void 0:_a2.result):formula1,originFormula2=core.isFormulaString(formula2)?getFormulaResult((_b2=results==null?void 0:results[1])==null?void 0:_b2.result):formula2,isFormulaValid=isLegalFormulaResult(String(originFormula1))&&isLegalFormulaResult(String(originFormula2));return{formula1:transformCheckboxValue(originFormula1),formula2:transformCheckboxValue(originFormula2),originFormula1,originFormula2,isFormulaValid}}getExtraStyle(rule,value){return{tb:core.WrapStrategy.CLIP}}parseFormulaSync(rule,unitId,subUnitId){var _a2,_b2;const{formula1=CHECKBOX_FORMULA_1,formula2=CHECKBOX_FORMULA_2}=rule,results=this._formulaService.getRuleFormulaResultSync(unitId,subUnitId,rule.uid),originFormula1=core.isFormulaString(formula1)?getFormulaResult((_a2=results==null?void 0:results[0])==null?void 0:_a2.result):formula1,originFormula2=core.isFormulaString(formula2)?getFormulaResult((_b2=results==null?void 0:results[1])==null?void 0:_b2.result):formula2;return{formula1:transformCheckboxValue(originFormula1),formula2:transformCheckboxValue(originFormula2),originFormula1,originFormula2}}async isValidType(cellInfo,formula,rule){const{value,unitId,subUnitId}=cellInfo,{formula1,formula2,originFormula1,originFormula2}=await this.parseFormula(rule,unitId,subUnitId);return!core.Tools.isDefine(formula1)||!core.Tools.isDefine(formula2)?!0:core.Tools.isDefine(value)&&(String(value)===String(formula1)||String(value)===String(formula2)||String(value)===String(originFormula1!=null?originFormula1:"")||String(value)===String(originFormula2!=null?originFormula2:""))}generateRuleErrorMessage(rule){return this.localeService.t("dataValidation.checkbox.error")}};__name(_CheckboxValidator,"CheckboxValidator");let CheckboxValidator=_CheckboxValidator;var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function getDefaultExportFromCjs(x){return x&&x.__esModule&&Object.prototype.hasOwnProperty.call(x,"default")?x.default:x}__name(getDefaultExportFromCjs,"getDefaultExportFromCjs");var dayjs_min={exports:{}};(function(module2,exports3){(function(t,e){module2.exports=e()})(commonjsGlobal,function(){var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",c="month",f="quarter",h="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:__name(function(t2){var e2=["th","st","nd","rd"],n2=t2%100;return"["+t2+(e2[(n2-20)%10]||e2[n2]||e2[0])+"]"},"ordinal")},m=__name(function(t2,e2,n2){var r2=String(t2);return!r2||r2.length>=e2?t2:""+Array(e2+1-r2.length).join(n2)+t2},"m"),v={s:m,z:__name(function(t2){var e2=-t2.utcOffset(),n2=Math.abs(e2),r2=Math.floor(n2/60),i2=n2%60;return(e2<=0?"+":"-")+m(r2,2,"0")+":"+m(i2,2,"0")},"z"),m:__name(function t2(e2,n2){if(e2.date()<n2.date())return-t2(n2,e2);var r2=12*(n2.year()-e2.year())+(n2.month()-e2.month()),i2=e2.clone().add(r2,c),s2=n2-i2<0,u2=e2.clone().add(r2+(s2?-1:1),c);return+(-(r2+(n2-i2)/(s2?i2-u2:u2-i2))||0)},"t"),a:__name(function(t2){return t2<0?Math.ceil(t2)||0:Math.floor(t2)},"a"),p:__name(function(t2){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t2]||String(t2||"").toLowerCase().replace(/s$/,"")},"p"),u:__name(function(t2){return t2===void 0},"u")},g="en",D={};D[g]=M;var p="$isDayjsObject",S=__name(function(t2){return t2 instanceof _||!(!t2||!t2[p])},"S"),w=__name(function t2(e2,n2,r2){var i2;if(!e2)return g;if(typeof e2=="string"){var s2=e2.toLowerCase();D[s2]&&(i2=s2),n2&&(D[s2]=n2,i2=s2);var u2=e2.split("-");if(!i2&&u2.length>1)return t2(u2[0])}else{var a2=e2.name;D[a2]=e2,i2=a2}return!r2&&i2&&(g=i2),i2||!r2&&g},"t"),O=__name(function(t2,e2){if(S(t2))return t2.clone();var n2=typeof e2=="object"?e2:{};return n2.date=t2,n2.args=arguments,new _(n2)},"O"),b=v;b.l=w,b.i=S,b.w=function(t2,e2){return O(t2,{locale:e2.$L,utc:e2.$u,x:e2.$x,$offset:e2.$offset})};var _=function(){function M2(t2){this.$L=w(t2.locale,null,!0),this.parse(t2),this.$x=this.$x||t2.x||{},this[p]=!0}__name(M2,"M");var m2=M2.prototype;return m2.parse=function(t2){this.$d=function(t3){var e2=t3.date,n2=t3.utc;if(e2===null)return new Date(NaN);if(b.u(e2))return new Date;if(e2 instanceof Date)return new Date(e2);if(typeof e2=="string"&&!/Z$/i.test(e2)){var r2=e2.match($);if(r2){var i2=r2[2]-1||0,s2=(r2[7]||"0").substring(0,3);return n2?new Date(Date.UTC(r2[1],i2,r2[3]||1,r2[4]||0,r2[5]||0,r2[6]||0,s2)):new Date(r2[1],i2,r2[3]||1,r2[4]||0,r2[5]||0,r2[6]||0,s2)}}return new Date(e2)}(t2),this.init()},m2.init=function(){var t2=this.$d;this.$y=t2.getFullYear(),this.$M=t2.getMonth(),this.$D=t2.getDate(),this.$W=t2.getDay(),this.$H=t2.getHours(),this.$m=t2.getMinutes(),this.$s=t2.getSeconds(),this.$ms=t2.getMilliseconds()},m2.$utils=function(){return b},m2.isValid=function(){return this.$d.toString()!==l},m2.isSame=function(t2,e2){var n2=O(t2);return this.startOf(e2)<=n2&&n2<=this.endOf(e2)},m2.isAfter=function(t2,e2){return O(t2)<this.startOf(e2)},m2.isBefore=function(t2,e2){return this.endOf(e2)<O(t2)},m2.$g=function(t2,e2,n2){return b.u(t2)?this[e2]:this.set(n2,t2)},m2.unix=function(){return Math.floor(this.valueOf()/1e3)},m2.valueOf=function(){return this.$d.getTime()},m2.startOf=function(t2,e2){var n2=this,r2=!!b.u(e2)||e2,f2=b.p(t2),l2=__name(function(t3,e3){var i2=b.w(n2.$u?Date.UTC(n2.$y,e3,t3):new Date(n2.$y,e3,t3),n2);return r2?i2:i2.endOf(a)},"l"),$2=__name(function(t3,e3){return b.w(n2.toDate()[t3].apply(n2.toDate("s"),(r2?[0,0,0,0]:[23,59,59,999]).slice(e3)),n2)},"$"),y2=this.$W,M3=this.$M,m3=this.$D,v2="set"+(this.$u?"UTC":"");switch(f2){case h:return r2?l2(1,0):l2(31,11);case c:return r2?l2(1,M3):l2(0,M3+1);case o:var g2=this.$locale().weekStart||0,D2=(y2<g2?y2+7:y2)-g2;return l2(r2?m3-D2:m3+(6-D2),M3);case a:case d:return $2(v2+"Hours",0);case u:return $2(v2+"Minutes",1);case s:return $2(v2+"Seconds",2);case i:return $2(v2+"Milliseconds",3);default:return this.clone()}},m2.endOf=function(t2){return this.startOf(t2,!1)},m2.$set=function(t2,e2){var n2,o2=b.p(t2),f2="set"+(this.$u?"UTC":""),l2=(n2={},n2[a]=f2+"Date",n2[d]=f2+"Date",n2[c]=f2+"Month",n2[h]=f2+"FullYear",n2[u]=f2+"Hours",n2[s]=f2+"Minutes",n2[i]=f2+"Seconds",n2[r]=f2+"Milliseconds",n2)[o2],$2=o2===a?this.$D+(e2-this.$W):e2;if(o2===c||o2===h){var y2=this.clone().set(d,1);y2.$d[l2]($2),y2.init(),this.$d=y2.set(d,Math.min(this.$D,y2.daysInMonth())).$d}else l2&&this.$d[l2]($2);return this.init(),this},m2.set=function(t2,e2){return this.clone().$set(t2,e2)},m2.get=function(t2){return this[b.p(t2)]()},m2.add=function(r2,f2){var d2,l2=this;r2=Number(r2);var $2=b.p(f2),y2=__name(function(t2){var e2=O(l2);return b.w(e2.date(e2.date()+Math.round(t2*r2)),l2)},"y");if($2===c)return this.set(c,this.$M+r2);if($2===h)return this.set(h,this.$y+r2);if($2===a)return y2(1);if($2===o)return y2(7);var M3=(d2={},d2[s]=e,d2[u]=n,d2[i]=t,d2)[$2]||1,m3=this.$d.getTime()+r2*M3;return b.w(m3,this)},m2.subtract=function(t2,e2){return this.add(-1*t2,e2)},m2.format=function(t2){var e2=this,n2=this.$locale();if(!this.isValid())return n2.invalidDate||l;var r2=t2||"YYYY-MM-DDTHH:mm:ssZ",i2=b.z(this),s2=this.$H,u2=this.$m,a2=this.$M,o2=n2.weekdays,c2=n2.months,f2=n2.meridiem,h2=__name(function(t3,n3,i3,s3){return t3&&(t3[n3]||t3(e2,r2))||i3[n3].slice(0,s3)},"h"),d2=__name(function(t3){return b.s(s2%12||12,t3,"0")},"d"),$2=f2||function(t3,e3,n3){var r3=t3<12?"AM":"PM";return n3?r3.toLowerCase():r3};return r2.replace(y,function(t3,r3){return r3||function(t4){switch(t4){case"YY":return String(e2.$y).slice(-2);case"YYYY":return b.s(e2.$y,4,"0");case"M":return a2+1;case"MM":return b.s(a2+1,2,"0");case"MMM":return h2(n2.monthsShort,a2,c2,3);case"MMMM":return h2(c2,a2);case"D":return e2.$D;case"DD":return b.s(e2.$D,2,"0");case"d":return String(e2.$W);case"dd":return h2(n2.weekdaysMin,e2.$W,o2,2);case"ddd":return h2(n2.weekdaysShort,e2.$W,o2,3);case"dddd":return o2[e2.$W];case"H":return String(s2);case"HH":return b.s(s2,2,"0");case"h":return d2(1);case"hh":return d2(2);case"a":return $2(s2,u2,!0);case"A":return $2(s2,u2,!1);case"m":return String(u2);case"mm":return b.s(u2,2,"0");case"s":return String(e2.$s);case"ss":return b.s(e2.$s,2,"0");case"SSS":return b.s(e2.$ms,3,"0");case"Z":return i2}return null}(t3)||i2.replace(":","")})},m2.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m2.diff=function(r2,d2,l2){var $2,y2=this,M3=b.p(d2),m3=O(r2),v2=(m3.utcOffset()-this.utcOffset())*e,g2=this-m3,D2=__name(function(){return b.m(y2,m3)},"D");switch(M3){case h:$2=D2()/12;break;case c:$2=D2();break;case f:$2=D2()/3;break;case o:$2=(g2-v2)/6048e5;break;case a:$2=(g2-v2)/864e5;break;case u:$2=g2/n;break;case s:$2=g2/e;break;case i:$2=g2/t;break;default:$2=g2}return l2?$2:b.a($2)},m2.daysInMonth=function(){return this.endOf(c).$D},m2.$locale=function(){return D[this.$L]},m2.locale=function(t2,e2){if(!t2)return this.$L;var n2=this.clone(),r2=w(t2,e2,!0);return r2&&(n2.$L=r2),n2},m2.clone=function(){return b.w(this.$d,this)},m2.toDate=function(){return new Date(this.valueOf())},m2.toJSON=function(){return this.isValid()?this.toISOString():null},m2.toISOString=function(){return this.$d.toISOString()},m2.toString=function(){return this.$d.toUTCString()},M2}(),k=_.prototype;return O.prototype=k,[["$ms",r],["$s",i],["$m",s],["$H",u],["$W",a],["$M",c],["$y",h],["$D",d]].forEach(function(t2){k[t2[1]]=function(e2){return this.$g(e2,t2[0],t2[1])}}),O.extend=function(t2,e2){return t2.$i||(t2(e2,_,O),t2.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t2){return O(1e3*t2)},O.en=D[g],O.Ls=D,O.p={},O})})(dayjs_min);var dayjs_minExports=dayjs_min.exports;const dayjs=getDefaultExportFromCjs(dayjs_minExports),DateOperatorNameMap={[core.DataValidationOperator.BETWEEN]:"dataValidation.date.operators.between",[core.DataValidationOperator.EQUAL]:"dataValidation.date.operators.equal",[core.DataValidationOperator.GREATER_THAN]:"dataValidation.date.operators.greaterThan",[core.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.operators.greaterThanOrEqual",[core.DataValidationOperator.LESS_THAN]:"dataValidation.date.operators.lessThan",[core.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.operators.lessThanOrEqual",[core.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.operators.notBetween",[core.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.operators.notEqual"};core.DataValidationOperator.BETWEEN+"",core.DataValidationOperator.EQUAL+"",core.DataValidationOperator.GREATER_THAN+"",core.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",core.DataValidationOperator.LESS_THAN+"",core.DataValidationOperator.LESS_THAN_OR_EQUAL+"",core.DataValidationOperator.NOT_BETWEEN+"",core.DataValidationOperator.NOT_EQUAL+"";const DateOperatorTitleMap={[core.DataValidationOperator.BETWEEN]:"dataValidation.date.ruleName.between",[core.DataValidationOperator.EQUAL]:"dataValidation.date.ruleName.equal",[core.DataValidationOperator.GREATER_THAN]:"dataValidation.date.ruleName.greaterThan",[core.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.ruleName.greaterThanOrEqual",[core.DataValidationOperator.LESS_THAN]:"dataValidation.date.ruleName.lessThan",[core.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.ruleName.lessThanOrEqual",[core.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.ruleName.notBetween",[core.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.ruleName.notEqual"},DateOperatorErrorTitleMap={[core.DataValidationOperator.BETWEEN]:"dataValidation.date.errorMsg.between",[core.DataValidationOperator.EQUAL]:"dataValidation.date.errorMsg.equal",[core.DataValidationOperator.GREATER_THAN]:"dataValidation.date.errorMsg.greaterThan",[core.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.errorMsg.greaterThanOrEqual",[core.DataValidationOperator.LESS_THAN]:"dataValidation.date.errorMsg.lessThan",[core.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.errorMsg.lessThanOrEqual",[core.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.errorMsg.notBetween",[core.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.errorMsg.notEqual"},TWO_FORMULA_OPERATOR_COUNT=[core.DataValidationOperator.BETWEEN,core.DataValidationOperator.NOT_BETWEEN],FORMULA1$1="{FORMULA1}",FORMULA2$1="{FORMULA2}",transformDate2SerialNumber=__name(value=>{var _a2,_b2;if(value==null||typeof value=="boolean")return;if(typeof value=="number"||!Number.isNaN(+value))return+value;const v=(_a2=core.numfmt.parseDate(value))==null?void 0:_a2.v;return core.Tools.isDefine(v)?v:(_b2=core.numfmt.parseDate(dayjs(value).format("YYYY-MM-DD HH:mm:ss")))==null?void 0:_b2.v},"transformDate2SerialNumber"),_DateValidator=class _DateValidator extends dataValidation.BaseDataValidator{constructor(){super(...arguments);__publicField(this,"id",core.DataValidationType.DATE);__publicField(this,"title","dataValidation.date.title");__publicField(this,"operators",[core.DataValidationOperator.BETWEEN,core.DataValidationOperator.EQUAL,core.DataValidationOperator.GREATER_THAN,core.DataValidationOperator.GREATER_THAN_OR_EQUAL,core.DataValidationOperator.LESS_THAN,core.DataValidationOperator.LESS_THAN_OR_EQUAL,core.DataValidationOperator.NOT_BETWEEN,core.DataValidationOperator.NOT_EQUAL]);__publicField(this,"scopes",["sheet"]);__publicField(this,"_formulaService",this.injector.get(exports2.DataValidationFormulaService))}async parseFormula(rule,unitId,subUnitId){var _a2,_b2;const results=await this._formulaService.getRuleFormulaResult(unitId,subUnitId,rule.uid),{formula1,formula2}=rule,formulaResult1=getFormulaResult((_a2=results==null?void 0:results[0])==null?void 0:_a2.result),formulaResult2=getFormulaResult((_b2=results==null?void 0:results[1])==null?void 0:_b2.result),isFormulaValid=isLegalFormulaResult(String(formulaResult1))&&isLegalFormulaResult(String(formulaResult2));return{formula1:transformDate2SerialNumber(core.isFormulaString(formula1)?formulaResult1:formula1),formula2:transformDate2SerialNumber(core.isFormulaString(formula2)?formulaResult2:formula2),isFormulaValid}}parseFormulaSync(rule,unitId,subUnitId){var _a2,_b2;const results=this._formulaService.getRuleFormulaResultSync(unitId,subUnitId,rule.uid),{formula1,formula2}=rule;return{formula1:transformDate2SerialNumber(core.isFormulaString(formula1)?getFormulaResult((_a2=results==null?void 0:results[0])==null?void 0:_a2.result):formula1),formula2:transformDate2SerialNumber(core.isFormulaString(formula2)?getFormulaResult((_b2=results==null?void 0:results[1])==null?void 0:_b2.result):formula2)}}async isValidType(info){const{interceptValue,value}=info;return typeof value=="number"&&typeof interceptValue=="string"?!0:typeof interceptValue=="string"?!!core.numfmt.parseDate(interceptValue):!1}_validatorSingleFormula(formula){return!core.Tools.isBlank(formula)&&(core.isFormulaString(formula)||!Number.isNaN(+formula)||!!(formula&&core.numfmt.parseDate(formula)))}validatorFormula(rule,unitId,subUnitId){const operator=rule.operator;if(!operator)return{success:!1};const formula1Success=this._validatorSingleFormula(rule.formula1),errorMsg=this.localeService.t("dataValidation.validFail.date");if(TWO_FORMULA_OPERATOR_COUNT.includes(operator)){const formula2Success=this._validatorSingleFormula(rule.formula2);return{success:formula1Success&&formula2Success,formula1:formula1Success?void 0:errorMsg,formula2:formula2Success?void 0:errorMsg}}return{success:formula1Success,formula1:formula1Success?void 0:errorMsg}}normalizeFormula(rule,_unitId,_subUnitId){const{formula1,formula2,bizInfo}=rule,normlizeSingleFormula=__name(formula=>{var _a2;if(!formula)return formula;let date;if(!Number.isNaN(+formula))date=core.numfmt.dateFromSerial(+formula);else{const res=(_a2=core.numfmt.parseDate(formula))==null?void 0:_a2.v;if(res==null)return"";date=core.numfmt.dateFromSerial(res)}return dayjs(`${date[0]}/${date[1]}/${date[2]} ${date[3]}:${date[4]}:${date[5]}`).format(bizInfo!=null&&bizInfo.showTime?"YYYY-MM-DD HH:mm:ss":"YYYY-MM-DD")},"normlizeSingleFormula");return{formula1:core.isFormulaString(formula1)?formula1:normlizeSingleFormula(`${formula1}`),formula2:core.isFormulaString(formula2)?formula2:normlizeSingleFormula(`${formula2}`)}}transform(cellInfo,_formula,_rule){const{value}=cellInfo;return{...cellInfo,value:transformDate2SerialNumber(value)}}async validatorIsEqual(cellInfo,formula,rule){const{formula1}=formula,{value:cellValue}=cellInfo;return Number.isNaN(formula1)?!0:cellValue===formula1}async validatorIsNotEqual(cellInfo,formula,_rule){const{formula1}=formula;return Number.isNaN(formula1)?!0:cellInfo.value!==formula1}async validatorIsBetween(cellInfo,formula,_rule){const{formula1,formula2}=formula;if(Number.isNaN(formula1)||Number.isNaN(formula2))return!0;const start=Math.min(formula1,formula2),end=Math.max(formula1,formula2);return cellInfo.value>=start&&cellInfo.value<=end}async validatorIsNotBetween(cellInfo,formula,_rule){const{formula1,formula2}=formula;if(Number.isNaN(formula1)||Number.isNaN(formula2))return!0;const start=Math.min(formula1,formula2),end=Math.max(formula1,formula2);return cellInfo.value<start||cellInfo.value>end}async validatorIsGreaterThan(cellInfo,formula,_rule){const{formula1}=formula;return Number.isNaN(formula1)?!0:cellInfo.value>formula1}async validatorIsGreaterThanOrEqual(cellInfo,formula,_rule){const{formula1}=formula;return Number.isNaN(formula1)?!0:cellInfo.value>=formula1}async validatorIsLessThan(cellInfo,formula,_rule){const{formula1}=formula;return Number.isNaN(formula1)?!0:cellInfo.value<formula1}async validatorIsLessThanOrEqual(cellInfo,formula,_rule){const{formula1}=formula;return Number.isNaN(formula1)?!0:cellInfo.value<=formula1}get operatorNames(){return this.operators.map(operator=>this.localeService.t(DateOperatorNameMap[operator]))}generateRuleName(rule){var _a2,_b2;if(!rule.operator)return this.titleStr;const ruleName=this.localeService.t(DateOperatorTitleMap[rule.operator]).replace(FORMULA1$1,(_a2=rule.formula1)!=null?_a2:"").replace(FORMULA2$1,(_b2=rule.formula2)!=null?_b2:"");return`${this.titleStr} ${ruleName}`}generateRuleErrorMessage(rule){var _a2,_b2;return rule.operator?`${this.localeService.t(DateOperatorErrorTitleMap[rule.operator]).replace(FORMULA1$1,(_a2=rule.formula1)!=null?_a2:"").replace(FORMULA2$1,(_b2=rule.formula2)!=null?_b2:"")}`:this.titleStr}};__name(_DateValidator,"DateValidator");let DateValidator=_DateValidator;function getCellValueNumber(cellValue){let str=cellValue;return typeof cellValue=="string"?((cellValue.startsWith("¥")||cellValue.startsWith("$"))&&(str=cellValue.slice(1)),+str):+cellValue}__name(getCellValueNumber,"getCellValueNumber");const _DecimalValidator=class _DecimalValidator extends dataValidation.BaseDataValidator{constructor(){super(...arguments);__publicField(this,"_formulaService",this.injector.get(exports2.DataValidationFormulaService));__publicField(this,"id",core.DataValidationType.DECIMAL);__publicField(this,"title","dataValidation.decimal.title");__publicField(this,"operators",[core.DataValidationOperator.BETWEEN,core.DataValidationOperator.EQUAL,core.DataValidationOperator.GREATER_THAN,core.DataValidationOperator.GREATER_THAN_OR_EQUAL,core.DataValidationOperator.LESS_THAN,core.DataValidationOperator.LESS_THAN_OR_EQUAL,core.DataValidationOperator.NOT_BETWEEN,core.DataValidationOperator.NOT_EQUAL]);__publicField(this,"scopes",["sheet"])}_isFormulaOrNumber(formula){return!core.Tools.isBlank(formula)&&(core.isFormulaString(formula)||!Number.isNaN(+formula))}async isValidType(cellInfo,formula,rule){const{value:cellValue}=cellInfo;return!Number.isNaN(getCellValueNumber(cellValue))}transform(cellInfo,formula,rule){const{value:cellValue}=cellInfo;return{...cellInfo,value:getCellValueNumber(cellValue)}}_parseNumber(formula){return formula==null?Number.NaN:+formula}async parseFormula(rule,unitId,subUnitId){var _a2,_b2;const formulaInfo=await this._formulaService.getRuleFormulaResult(unitId,subUnitId,rule.uid),{formula1,formula2}=rule,formulaResult1=getFormulaResult((_a2=formulaInfo==null?void 0:formulaInfo[0])==null?void 0:_a2.result),formulaResult2=getFormulaResult((_b2=formulaInfo==null?void 0:formulaInfo[1])==null?void 0:_b2.result),isFormulaValid=isLegalFormulaResult(String(formulaResult1))&&isLegalFormulaResult(String(formulaResult2));return{formula1:this._parseNumber(core.isFormulaString(formula1)?formulaResult1:formula1),formula2:this._parseNumber(core.isFormulaString(formula2)?formulaResult2:formula2),isFormulaValid}}validatorFormula(rule,unitId,subUnitId){const operator=rule.operator;if(!operator)return{success:!1};const formula1Success=core.Tools.isDefine(rule.formula1)&&this._isFormulaOrNumber(rule.formula1),formula2Success=core.Tools.isDefine(rule.formula2)&&this._isFormulaOrNumber(rule.formula2),isTwoFormula=TWO_FORMULA_OPERATOR_COUNT.includes(operator),errorMsg=this.localeService.t("dataValidation.validFail.number");return isTwoFormula?{success:formula1Success&&formula2Success,formula1:formula1Success?void 0:errorMsg,formula2:formula2Success?void 0:errorMsg}:{success:formula1Success,formula1:formula1Success?"":errorMsg}}async validatorIsEqual(cellInfo,formula,rule){const{formula1}=formula,{value:cellValue}=cellInfo;return Number.isNaN(formula1)?!0:cellValue===formula1}async validatorIsNotEqual(cellInfo,formula,_rule){const{formula1}=formula;return Number.isNaN(formula1)?!0:cellInfo.value!==formula1}async validatorIsBetween(cellInfo,formula,_rule){const{formula1,formula2}=formula;if(Number.isNaN(formula1)||Number.isNaN(formula2))return!0;const start=Math.min(formula1,formula2),end=Math.max(formula1,formula2);return cellInfo.value>=start&&cellInfo.value<=end}async validatorIsNotBetween(cellInfo,formula,_rule){const{formula1,formula2}=formula;if(Number.isNaN(formula1)||Number.isNaN(formula2))return!0;const start=Math.min(formula1,formula2),end=Math.max(formula1,formula2);return cellInfo.value<start||cellInfo.value>end}async validatorIsGreaterThan(cellInfo,formula,_rule){const{formula1}=formula;return Number.isNaN(formula1)?!0:cellInfo.value>formula1}async validatorIsGreaterThanOrEqual(cellInfo,formula,_rule){const{formula1}=formula;return Number.isNaN(formula1)?!0:cellInfo.value>=formula1}async validatorIsLessThan(cellInfo,formula,_rule){const{formula1}=formula;return Number.isNaN(formula1)?!0:cellInfo.value<formula1}async validatorIsLessThanOrEqual(cellInfo,formula,_rule){const{formula1}=formula;return Number.isNaN(formula1)?!0:cellInfo.value<=formula1}};__name(_DecimalValidator,"DecimalValidator");let DecimalValidator=_DecimalValidator;function serializeListOptions(options){return options.filter(Boolean).join(",")}__name(serializeListOptions,"serializeListOptions");function deserializeListOptions(optionsStr){return optionsStr.split(",").filter(Boolean)}__name(deserializeListOptions,"deserializeListOptions");function getDataValidationCellValue(cellData){const cellValue=getCellValueOrigin(cellData);return cellValue==null?"":cellValue.toString()}__name(getDataValidationCellValue,"getDataValidationCellValue");function getRuleFormulaResultSet(result){if(!result)return[];const resultSet=new Set;return result.forEach(row=>{row.forEach(cell=>{var _a2,_b2;const value=getCellValueOrigin(cell);if(value!=null){if(typeof value!="string"&&typeof(cell==null?void 0:cell.s)=="object"&&((_b2=(_a2=cell.s)==null?void 0:_a2.n)!=null&&_b2.pattern)){resultSet.add(core.numfmt.format(cell.s.n.pattern,value,{throws:!1}));return}isLegalFormulaResult(value.toString())&&resultSet.add(value.toString())}})}),[...resultSet]}__name(getRuleFormulaResultSet,"getRuleFormulaResultSet");const supportedFormula=["if","indirect","choose","offset"];function isValidListFormula(formula,lexer){if(!core.isFormulaString(formula)||engineFormula.isReferenceString(formula.slice(1)))return!0;const nodes=lexer.sequenceNodesBuilder(formula);return nodes&&nodes.some(node=>typeof node=="object"&&node.nodeType===engineFormula.sequenceNodeType.FUNCTION&&supportedFormula.indexOf(node.token.toLowerCase())>-1)}__name(isValidListFormula,"isValidListFormula");function isRuleIntersects(rule,sheetName){const{formula1="",ranges}=rule;if(engineFormula.isReferenceString(formula1.slice(1))){const refRange=engineFormula.deserializeRangeWithSheet(formula1.slice(1));if((!refRange.sheetName||refRange.sheetName===sheetName)&&ranges.some(range=>core.Rectangle.intersects(range,refRange.range)))return!0}return!1}__name(isRuleIntersects,"isRuleIntersects");const _ListValidator=class _ListValidator extends dataValidation.BaseDataValidator{constructor(){super(...arguments);__publicField(this,"formulaService",this.injector.get(exports2.DataValidationFormulaService));__publicField(this,"_lexer",this.injector.get(engineFormula.LexerTreeBuilder));__publicField(this,"_univerInstanceService",this.injector.get(core.IUniverInstanceService));__publicField(this,"id",core.DataValidationType.LIST);__publicField(this,"title","dataValidation.list.title");__publicField(this,"operators",[]);__publicField(this,"scopes",["sheet"]);__publicField(this,"skipDefaultFontRender",__name(rule=>rule.renderMode!==core.DataValidationRenderMode.TEXT,"skipDefaultFontRender"))}validatorFormula(rule,unitId,subUnitId){var _a2,_b2,_c2;const success=!core.Tools.isBlank(rule.formula1),valid=isValidListFormula((_a2=rule.formula1)!=null?_a2:"",this._lexer),sheetName=(_c2=(_b2=this._univerInstanceService.getUnit(unitId,core.UniverInstanceType.UNIVER_SHEET))==null?void 0:_b2.getSheetBySheetId(subUnitId))==null?void 0:_c2.getName(),isIntersects=isRuleIntersects(rule,sheetName!=null?sheetName:"");return{success:!!(success&&valid&&!isIntersects),formula1:success?valid?isIntersects?this.localeService.t("dataValidation.validFail.listIntersects"):void 0:this.localeService.t("dataValidation.validFail.listInvalid"):this.localeService.t("dataValidation.validFail.list")}}getExtraStyle(rule,value,{style:defaultStyle}){var _a2;const tb=(_a2=defaultStyle.tb!==core.WrapStrategy.OVERFLOW?defaultStyle.tb:core.WrapStrategy.CLIP)!=null?_a2:core.WrapStrategy.WRAP;if(rule.type===core.DataValidationType.LIST&&(rule.renderMode===core.DataValidationRenderMode.ARROW||rule.renderMode===core.DataValidationRenderMode.TEXT)){const colorMap=this.getListWithColorMap(rule),valueStr=`${value!=null?value:""}`,color=colorMap[valueStr];if(color)return{bg:{rgb:color},tb}}return{tb}}parseCellValue(cellValue){const cellString=cellValue.toString();return deserializeListOptions(cellString)}async parseFormula(rule,unitId,subUnitId){var _a2,_b2;const{formula1=""}=rule,results=await this.formulaService.getRuleFormulaResult(unitId,subUnitId,rule.uid),formulaResult1=getFormulaResult((_a2=results==null?void 0:results[0])==null?void 0:_a2.result),isFormulaValid=isLegalFormulaResult(String(formulaResult1));return{formula1:core.isFormulaString(formula1)?getRuleFormulaResultSet((_b2=results==null?void 0:results[0])==null?void 0:_b2.result):deserializeListOptions(formula1),formula2:void 0,isFormulaValid}}async isValidType(cellInfo,formula,rule){const{value}=cellInfo,{formula1=[]}=formula;return this.parseCellValue(value).every(i=>formula1.includes(i))}generateRuleName(){return this.localeService.t("dataValidation.list.name")}generateRuleErrorMessage(){return this.localeService.t("dataValidation.list.error")}getList(rule,currentUnitId,currentSubUnitId){var _a2,_b2,_c2;const{formula1=""}=rule,univerInstanceService=this.injector.get(core.IUniverInstanceService),workbook=(_a2=currentUnitId?univerInstanceService.getUniverSheetInstance(currentUnitId):void 0)!=null?_a2:univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_SHEET);if(!workbook)return[];const worksheet=(_b2=currentSubUnitId?workbook.getSheetBySheetId(currentSubUnitId):void 0)!=null?_b2:workbook.getActiveSheet();if(!worksheet)return[];const unitId=workbook.getUnitId(),subUnitId=worksheet.getSheetId(),results=this.formulaService.getRuleFormulaResultSync(unitId,subUnitId,rule.uid);return core.isFormulaString(formula1)?getRuleFormulaResultSet((_c2=results==null?void 0:results[0])==null?void 0:_c2.result):deserializeListOptions(formula1)}async getListAsync(rule,currentUnitId,currentSubUnitId){var _a2,_b2,_c2;const{formula1=""}=rule,univerInstanceService=this.injector.get(core.IUniverInstanceService),workbook=(_a2=currentUnitId?univerInstanceService.getUniverSheetInstance(currentUnitId):void 0)!=null?_a2:univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_SHEET);if(!workbook)return[];const worksheet=(_b2=currentSubUnitId?workbook.getSheetBySheetId(currentSubUnitId):void 0)!=null?_b2:workbook.getActiveSheet();if(!worksheet)return[];const unitId=workbook.getUnitId(),subUnitId=worksheet.getSheetId(),results=await this.formulaService.getRuleFormulaResult(unitId,subUnitId,rule.uid);return core.isFormulaString(formula1)?getRuleFormulaResultSet((_c2=results==null?void 0:results[0])==null?void 0:_c2.result):deserializeListOptions(formula1)}getListWithColor(rule,currentUnitId,currentSubUnitId){const list=this.getList(rule,currentUnitId,currentSubUnitId),colorList=(rule.formula2||"").split(",");return list.map((label,i)=>({label,color:colorList[i]}))}getListWithColorMap(rule,currentUnitId,currentSubUnitId){const list=this.getListWithColor(rule,currentUnitId,currentSubUnitId),map={};return list.forEach(item=>{item.color&&(map[item.label]=item.color)}),map}};__name(_ListValidator,"ListValidator");let ListValidator=_ListValidator;const FORMULA1="{FORMULA1}",FORMULA2="{FORMULA2}",_TextLengthValidator=class _TextLengthValidator extends dataValidation.BaseDataValidator{constructor(){super(...arguments);__publicField(this,"id",core.DataValidationType.TEXT_LENGTH);__publicField(this,"title","dataValidation.textLength.title");__publicField(this,"operators",[core.DataValidationOperator.BETWEEN,core.DataValidationOperator.EQUAL,core.DataValidationOperator.GREATER_THAN,core.DataValidationOperator.GREATER_THAN_OR_EQUAL,core.DataValidationOperator.LESS_THAN,core.DataValidationOperator.LESS_THAN_OR_EQUAL,core.DataValidationOperator.NOT_BETWEEN,core.DataValidationOperator.NOT_EQUAL]);__publicField(this,"scopes",["sheet"]);__publicField(this,"_formulaService",this.injector.get(exports2.DataValidationFormulaService))}_isFormulaOrInt(formula){return!core.Tools.isBlank(formula)&&(core.isFormulaString(formula)||!Number.isNaN(+formula)&&Number.isInteger(+formula))}validatorFormula(rule,unitId,subUnitId){const operator=rule.operator;if(!operator)return{success:!1};const formula1Success=core.Tools.isDefine(rule.formula1)&&this._isFormulaOrInt(rule.formula1),formula2Success=core.Tools.isDefine(rule.formula2)&&this._isFormulaOrInt(rule.formula2),isTwoFormula=TWO_FORMULA_OPERATOR_COUNT.includes(operator),errorMsg=this.localeService.t("dataValidation.validFail.number");return isTwoFormula?{success:formula1Success&&formula2Success,formula1:formula1Success?void 0:errorMsg,formula2:formula2Success?void 0:errorMsg}:{success:formula1Success,formula1:errorMsg}}_parseNumber(formula){return formula==null?Number.NaN:+formula}_isValidFormula(formula){return!Number.isNaN(formula)}async parseFormula(rule,unitId,subUnitId){var _a2,_b2;const formulaInfo=await this._formulaService.getRuleFormulaResult(unitId,subUnitId,rule.uid),{formula1,formula2}=rule,formulaResult1=getFormulaResult((_a2=formulaInfo==null?void 0:formulaInfo[0])==null?void 0:_a2.result),formulaResult2=getFormulaResult((_b2=formulaInfo==null?void 0:formulaInfo[1])==null?void 0:_b2.result),isFormulaValid=isLegalFormulaResult(String(formulaResult1))&&isLegalFormulaResult(String(formulaResult2));return{formula1:this._parseNumber(core.isFormulaString(formula1)?formulaResult1:formula1),formula2:this._parseNumber(core.isFormulaString(formula2)?formulaResult2:formula2),isFormulaValid}}transform(cellInfo,_formula,_rule){return{...cellInfo,value:cellInfo.value.toString().length}}async isValidType(cellInfo,formula,rule){const{value:cellValue}=cellInfo;return typeof cellValue=="string"||typeof cellValue=="number"}async validatorIsEqual(cellInfo,formula,rule){const{formula1}=formula;return core.Tools.isDefine(formula1)?cellInfo.value===formula1:!1}async validatorIsNotEqual(cellInfo,formula,rule){const{formula1}=formula;return core.Tools.isDefine(formula1)?cellInfo.value!==formula1:!1}async validatorIsBetween(cellInfo,formula,rule){const{formula1,formula2}=formula,{value:cellValue}=cellInfo;if(!this._isValidFormula(formula1)||!this._isValidFormula(formula2))return!1;const max=Math.max(formula1,formula2),min=Math.min(formula1,formula2);return cellValue>=min&&cellValue<=max}async validatorIsNotBetween(cellInfo,formula,rule){const{formula1,formula2}=formula,{value:cellValue}=cellInfo;if(!this._isValidFormula(formula1)||!this._isValidFormula(formula2))return!1;const max=Math.max(formula1,formula2),min=Math.min(formula1,formula2);return cellValue<min||cellValue>max}async validatorIsGreaterThan(cellInfo,formula,rule){const{formula1}=formula,{value:cellValue}=cellInfo;return this._isValidFormula(formula1)?cellValue>formula1:!1}async validatorIsGreaterThanOrEqual(cellInfo,formula,rule){const{formula1}=formula,{value:cellValue}=cellInfo;return this._isValidFormula(formula1)?cellValue>=formula1:!1}async validatorIsLessThan(cellInfo,formula,rule){const{formula1}=formula,{value:cellValue}=cellInfo;return this._isValidFormula(formula1)?cellValue<formula1:!1}async validatorIsLessThanOrEqual(cellInfo,formula,rule){const{formula1}=formula,{value:cellValue}=cellInfo;return this._isValidFormula(formula1)?cellValue<=formula1:!1}generateRuleErrorMessage(rule){var _a2,_b2;return rule.operator?`${this.localeService.t(dataValidation.TextLengthErrorTitleMap[rule.operator]).replace(FORMULA1,(_a2=rule.formula1)!=null?_a2:"").replace(FORMULA2,(_b2=rule.formula2)!=null?_b2:"")}`:this.titleStr}};__name(_TextLengthValidator,"TextLengthValidator");let TextLengthValidator=_TextLengthValidator;function isBlankCell(cellData){var _a2,_b2;return cellData?cellData.p?!((_b2=(_a2=cellData.p.body)==null?void 0:_a2.dataStream)!=null?_b2:"").slice(0,-2).trim():core.Tools.isBlank(cellData.v):!0}__name(isBlankCell,"isBlankCell");function getDataValidationDiffMutations(unitId,subUnitId,diffs,accessor,source="command",fillDefaultValue=!0){const lexerTreeBuilder=accessor.get(engineFormula.LexerTreeBuilder),redoMutations=[],undoMutations=[],sheetDataValidationModel=accessor.get(exports2.SheetDataValidationModel),univerInstanceService=accessor.get(core.IUniverInstanceService),target=sheets.getSheetCommandTarget(univerInstanceService,{unitId,subUnitId});if(!target)return{redoMutations,undoMutations};const{worksheet}=target,redoMatrix=new core.ObjectMatrix;function setRangesDefaultValue(ranges,defaultValue){fillDefaultValue&&ranges.forEach(range=>{core.Range.foreach(range,(row,column)=>{const cellData=worksheet.getCellRaw(row,column),value=getStringCellValue(cellData);(isBlankCell(cellData)||value===defaultValue)&&redoMatrix.setValue(row,column,{v:defaultValue,p:null})})})}__name(setRangesDefaultValue,"setRangesDefaultValue"),diffs.forEach(diff=>{switch(diff.type){case"delete":redoMutations.push({id:dataValidation.RemoveDataValidationMutation.id,params:{unitId,subUnitId,ruleId:diff.rule.uid,source}}),undoMutations.unshift({id:dataValidation.AddDataValidationMutation.id,params:{unitId,subUnitId,rule:diff.rule,index:diff.index,source}});break;case"update":{if(redoMutations.push({id:dataValidation.UpdateDataValidationMutation.id,params:{unitId,subUnitId,ruleId:diff.ruleId,payload:{type:dataValidation.UpdateRuleType.RANGE,payload:diff.newRanges},source}}),undoMutations.unshift({id:dataValidation.UpdateDataValidationMutation.id,params:{unitId,subUnitId,ruleId:diff.ruleId,payload:{type:dataValidation.UpdateRuleType.RANGE,payload:diff.oldRanges},source}}),diff.rule.type===core.DataValidationType.CUSTOM){const originRow=diff.oldRanges[0].startRow,originColumn=diff.oldRanges[0].startColumn,newRow=diff.newRanges[0].startRow,newColumn=diff.newRanges[0].startColumn,rowDiff=newRow-originRow,columnDiff=newColumn-originColumn,newFormula=lexerTreeBuilder.moveFormulaRefOffset(diff.rule.formula1,columnDiff,rowDiff);newFormula!==diff.rule.formula1&&(redoMutations.push({id:dataValidation.UpdateDataValidationMutation.id,params:{unitId,subUnitId,ruleId:diff.ruleId,payload:{type:dataValidation.UpdateRuleType.SETTING,payload:{...dataValidation.getRuleSetting(diff.rule),formula1:newFormula}}}}),undoMutations.unshift({id:dataValidation.UpdateDataValidationMutation.id,params:{unitId,subUnitId,ruleId:diff.ruleId,payload:{type:dataValidation.UpdateRuleType.SETTING,payload:dataValidation.getRuleSetting(diff.rule)}}}))}const rule=sheetDataValidationModel.getRuleById(unitId,subUnitId,diff.ruleId);if(rule&&rule.type===core.DataValidationType.CHECKBOX){const formula=sheetDataValidationModel.getValidator(core.DataValidationType.CHECKBOX).parseFormulaSync(rule,unitId,subUnitId);setRangesDefaultValue(diff.newRanges,formula.formula2)}break}case"add":{if(redoMutations.push({id:dataValidation.AddDataValidationMutation.id,params:{unitId,subUnitId,rule:diff.rule,source}}),undoMutations.unshift({id:dataValidation.RemoveDataValidationMutation.id,params:{unitId,subUnitId,ruleId:diff.rule.uid,source}}),diff.rule.type===core.DataValidationType.CHECKBOX){const formula=sheetDataValidationModel.getValidator(core.DataValidationType.CHECKBOX).parseFormulaSync(diff.rule,unitId,subUnitId);setRangesDefaultValue(diff.rule.ranges,formula.originFormula2)}break}}});const redoSetRangeValues={id:sheets.SetRangeValuesMutation.id,params:{unitId,subUnitId,cellValue:redoMatrix.getData()}},undoSetRangeValues={id:sheets.SetRangeValuesMutation.id,params:sheets.SetRangeValuesUndoMutationFactory(accessor,redoSetRangeValues.params)};return redoMutations.push(redoSetRangeValues),undoMutations.push(undoSetRangeValues),{redoMutations,undoMutations}}__name(getDataValidationDiffMutations,"getDataValidationDiffMutations");const UpdateSheetDataValidationRangeCommand={type:core.CommandType.COMMAND,id:"sheet.command.updateDataValidationRuleRange",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,ranges,ruleId}=params,sheetDataValidationModel=accessor.get(exports2.SheetDataValidationModel),commandService=accessor.get(core.ICommandService),undoRedoService=accessor.get(core.IUndoRedoService);if(!sheetDataValidationModel.getRuleById(unitId,subUnitId,ruleId))return!1;const matrix=sheetDataValidationModel.getRuleObjectMatrix(unitId,subUnitId).clone();matrix.updateRange(ruleId,ranges);const diffs=matrix.diff(sheetDataValidationModel.getRules(unitId,subUnitId)),{redoMutations,undoMutations}=getDataValidationDiffMutations(unitId,subUnitId,diffs,accessor);return undoRedoService.pushUndoRedo({undoMutations,redoMutations,unitID:unitId}),core.sequenceExecute(redoMutations,commandService),!0}},AddSheetDataValidationCommand={type:core.CommandType.COMMAND,id:"sheet.command.addDataValidation",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,rule}=params,sheetDataValidationModel=accessor.get(exports2.SheetDataValidationModel),commandService=accessor.get(core.ICommandService),undoRedoService=accessor.get(core.IUndoRedoService),matrix=sheetDataValidationModel.getRuleObjectMatrix(unitId,subUnitId).clone();matrix.addRule(rule);const diffs=matrix.diff(sheetDataValidationModel.getRules(unitId,subUnitId)),mutationParams={unitId,subUnitId,rule},{redoMutations,undoMutations}=getDataValidationDiffMutations(unitId,subUnitId,diffs,accessor);return redoMutations.push({id:dataValidation.AddDataValidationMutation.id,params:mutationParams}),undoMutations.unshift({id:dataValidation.RemoveDataValidationMutation.id,params:{unitId,subUnitId,ruleId:rule.uid}}),undoRedoService.pushUndoRedo({unitID:unitId,redoMutations,undoMutations}),core.sequenceExecute(redoMutations,commandService),!0}},UpdateSheetDataValidationSettingCommand={type:core.CommandType.COMMAND,id:"sheets.command.update-data-validation-setting",handler(accessor,params){if(!params)return!1;const commandService=accessor.get(core.ICommandService),redoUndoService=accessor.get(core.IUndoRedoService),sheetDataValidationModel=accessor.get(exports2.SheetDataValidationModel),dataValidatorRegistryService=accessor.get(dataValidation.DataValidatorRegistryService),{unitId,subUnitId,ruleId,setting}=params,validator=dataValidatorRegistryService.getValidatorItem(setting.type);if(!validator)return!1;const rule=sheetDataValidationModel.getRuleById(unitId,subUnitId,ruleId);if(!rule)return!1;const newRule={...rule,...setting};if(!validator.validatorFormula(newRule,unitId,subUnitId).success)return!1;const mutationParams={unitId,subUnitId,ruleId,payload:{type:dataValidation.UpdateRuleType.SETTING,payload:{...setting,...validator.normalizeFormula(newRule,unitId,subUnitId)}}},redoMutations=[{id:dataValidation.UpdateDataValidationMutation.id,params:mutationParams}],undoMutationParams={unitId,subUnitId,ruleId,payload:{type:dataValidation.UpdateRuleType.SETTING,payload:dataValidation.getRuleSetting(rule)}},undoMutations=[{id:dataValidation.UpdateDataValidationMutation.id,params:undoMutationParams}];if(setting.type===core.DataValidationType.CHECKBOX){const ranges=rule.ranges,univerInstanceService=accessor.get(core.IUniverInstanceService),target=sheets.getSheetCommandTarget(univerInstanceService,{unitId,subUnitId});if(target){const redoMatrix=new core.ObjectMatrix,{worksheet}=target,{formula2:oldFormula2=CHECKBOX_FORMULA_2,formula1:oldFormula1=CHECKBOX_FORMULA_1}=rule,{formula2=CHECKBOX_FORMULA_2,formula1=CHECKBOX_FORMULA_1}=setting;ranges.forEach(range=>{core.Range.foreach(range,(row,column)=>{const cellData=worksheet.getCellRaw(row,column),value=getStringCellValue(cellData);isBlankCell(cellData)||value===String(oldFormula2)?redoMatrix.setValue(row,column,{v:formula2,p:null}):value===String(oldFormula1)&&redoMatrix.setValue(row,column,{v:formula1,p:null})})});const redoSetRangeValues={id:sheets.SetRangeValuesMutation.id,params:{unitId,subUnitId,cellValue:redoMatrix.getData()}},undoSetRangeValues={id:sheets.SetRangeValuesMutation.id,params:sheets.SetRangeValuesUndoMutationFactory(accessor,redoSetRangeValues.params)};redoMutations.push(redoSetRangeValues),undoMutations.push(undoSetRangeValues)}}return core.sequenceExecute(redoMutations,commandService).result?(redoUndoService.pushUndoRedo({unitID:unitId,redoMutations,undoMutations}),!0):!1}},UpdateSheetDataValidationOptionsCommand={type:core.CommandType.COMMAND,id:"sheets.command.update-data-validation-options",handler(accessor,params){if(!params)return!1;const commandService=accessor.get(core.ICommandService),redoUndoService=accessor.get(core.IUndoRedoService),sheetDataValidationModel=accessor.get(exports2.SheetDataValidationModel),{unitId,subUnitId,ruleId,options}=params,rule=sheetDataValidationModel.getRuleById(unitId,subUnitId,ruleId);if(!rule)return!1;const mutationParams={unitId,subUnitId,ruleId,payload:{type:dataValidation.UpdateRuleType.OPTIONS,payload:options}},redoMutations=[{id:dataValidation.UpdateDataValidationMutation.id,params:mutationParams}],undoMutationParams={unitId,subUnitId,ruleId,payload:{type:dataValidation.UpdateRuleType.OPTIONS,payload:dataValidation.getRuleOptions(rule)}},undoMutations=[{id:dataValidation.UpdateDataValidationMutation.id,params:undoMutationParams}];return redoUndoService.pushUndoRedo({unitID:unitId,redoMutations,undoMutations}),commandService.executeCommand(dataValidation.UpdateDataValidationMutation.id,mutationParams),!0}},ClearRangeDataValidationCommand={type:core.CommandType.COMMAND,id:"sheets.command.clear-range-data-validation",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,ranges}=params,commandService=accessor.get(core.ICommandService),univerInstanceService=accessor.get(core.IUniverInstanceService),target=sheets.getSheetCommandTarget(univerInstanceService,{unitId,subUnitId}),sheetDataValidationModel=accessor.get(exports2.SheetDataValidationModel);if(!target)return!1;const undoRedoService=accessor.get(core.IUndoRedoService),matrix=sheetDataValidationModel.getRuleObjectMatrix(unitId,subUnitId).clone();matrix.removeRange(ranges);const diffs=matrix.diff(sheetDataValidationModel.getRules(unitId,subUnitId)),{redoMutations,undoMutations}=getDataValidationDiffMutations(unitId,subUnitId,diffs,accessor);return undoRedoService.pushUndoRedo({unitID:unitId,redoMutations,undoMutations}),core.sequenceExecute(redoMutations,commandService).result}},RemoveSheetAllDataValidationCommand={type:core.CommandType.COMMAND,id:"sheet.command.remove-all-data-validation",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId}=params,commandService=accessor.get(core.ICommandService),sheetDataValidationModel=accessor.get(exports2.SheetDataValidationModel),undoRedoService=accessor.get(core.IUndoRedoService),currentRules=[...sheetDataValidationModel.getRules(unitId,subUnitId)],redoParams={unitId,subUnitId,ruleId:currentRules.map(rule=>rule.uid)},redoMutations=[{id:dataValidation.RemoveDataValidationMutation.id,params:redoParams}],undoMutations=[{id:dataValidation.AddDataValidationMutation.id,params:{unitId,subUnitId,rule:currentRules}}];return undoRedoService.pushUndoRedo({redoMutations,undoMutations,unitID:unitId}),commandService.executeCommand(dataValidation.RemoveDataValidationMutation.id,redoParams),!0}},removeDataValidationUndoFactory=__name((accessor,redoParams)=>{const sheetDataValidationModel=accessor.get(exports2.SheetDataValidationModel),{unitId,subUnitId,ruleId,source}=redoParams;if(Array.isArray(ruleId)){const rules=ruleId.map(id=>sheetDataValidationModel.getRuleById(unitId,subUnitId,id)).filter(Boolean);return[{id:dataValidation.AddDataValidationMutation.id,params:{unitId,subUnitId,rule:rules,source}}]}return[{id:dataValidation.AddDataValidationMutation.id,params:{unitId,subUnitId,rule:{...sheetDataValidationModel.getRuleById(unitId,subUnitId,ruleId)},index:sheetDataValidationModel.getRuleIndex(unitId,subUnitId,ruleId)}}]},"removeDataValidationUndoFactory"),RemoveSheetDataValidationCommand={type:core.CommandType.COMMAND,id:"sheet.command.remove-data-validation-rule",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,ruleId}=params,commandService=accessor.get(core.ICommandService),undoRedoService=accessor.get(core.IUndoRedoService),sheetDataValidationModel=accessor.get(exports2.SheetDataValidationModel),redoMutations=[{id:dataValidation.RemoveDataValidationMutation.id,params}],undoMutations=[{id:dataValidation.AddDataValidationMutation.id,params:{unitId,subUnitId,rule:{...sheetDataValidationModel.getRuleById(unitId,subUnitId,ruleId)},index:sheetDataValidationModel.getRuleIndex(unitId,subUnitId,ruleId)}}];return undoRedoService.pushUndoRedo({undoMutations,redoMutations,unitID:params.unitId}),commandService.executeCommand(dataValidation.RemoveDataValidationMutation.id,params),!0}},PLUGIN_CONFIG_KEY="sheets-data-validation.config",defaultPluginConfig={},_AnyValidator=class _AnyValidator extends dataValidation.BaseDataValidator{constructor(){super(...arguments);__publicField(this,"id",core.DataValidationType.ANY);__publicField(this,"title","dataValidation.any.title");__publicField(this,"operators",[]);__publicField(this,"scopes",["sheet"])}async parseFormula(rule,unitId,subUnitId){return{formula1:rule.formula1,formula2:rule.formula2,isFormulaValid:!0}}validatorFormula(rule,unitId,subUnitId){return{success:!0}}async isValidType(cellInfo,formula,rule){return!0}generateRuleErrorMessage(rule){return this.localeService.t("dataValidation.any.error")}};__name(_AnyValidator,"AnyValidator");let AnyValidator=_AnyValidator;const _CustomFormulaValidator=class _CustomFormulaValidator extends dataValidation.BaseDataValidator{constructor(){super(...arguments);__publicField(this,"id",core.DataValidationType.CUSTOM);__publicField(this,"title","dataValidation.custom.title");__publicField(this,"operators",[]);__publicField(this,"scopes",["sheet"]);__publicField(this,"_customFormulaService",this.injector.get(exports2.DataValidationCustomFormulaService))}validatorFormula(rule,unitId,subUnitId){const success=core.isFormulaString(rule.formula1);return{success,formula1:success?"":this.localeService.t("dataValidation.validFail.formula")}}async parseFormula(_rule,_unitId,_subUnitId){return{formula1:void 0,formula2:void 0,isFormulaValid:!1}}async isValidType(cellInfo,_formula,_rule){const{column,row,unitId,subUnitId}=cellInfo,result=await this._customFormulaService.getCellFormulaValue(unitId,subUnitId,row,column),cellData=getFormulaCellData(result==null?void 0:result.result),formulaResult=cellData==null?void 0:cellData.v;return isLegalFormulaResult(String(formulaResult))&&core.Tools.isDefine(formulaResult)&&formulaResult!==""?cellData.t===core.CellValueType.BOOLEAN?!!formulaResult:typeof formulaResult=="boolean"?formulaResult:typeof formulaResult=="number"?!!formulaResult:typeof formulaResult=="string"?isLegalFormulaResult(formulaResult):!!formulaResult:!1}generateRuleErrorMessage(rule){return this.localeService.t("dataValidation.custom.error")}generateRuleName(rule){var _a2;return this.localeService.t("dataValidation.custom.ruleName").replace("{FORMULA1}",(_a2=rule.formula1)!=null?_a2:"")}};__name(_CustomFormulaValidator,"CustomFormulaValidator");let CustomFormulaValidator=_CustomFormulaValidator;const _ListMultipleValidator=class _ListMultipleValidator extends ListValidator{constructor(){super(...arguments);__publicField(this,"id",core.DataValidationType.LIST_MULTIPLE);__publicField(this,"title","dataValidation.listMultiple.title");__publicField(this,"skipDefaultFontRender",__name(()=>!0,"skipDefaultFontRender"))}};__name(_ListMultipleValidator,"ListMultipleValidator");let ListMultipleValidator=_ListMultipleValidator;const _WholeValidator=class _WholeValidator extends dataValidation.BaseDataValidator{constructor(){super(...arguments);__publicField(this,"_formulaService",this.injector.get(exports2.DataValidationFormulaService));__publicField(this,"id",core.DataValidationType.WHOLE);__publicField(this,"title","dataValidation.whole.title");__publicField(this,"operators",[core.DataValidationOperator.BETWEEN,core.DataValidationOperator.EQUAL,core.DataValidationOperator.GREATER_THAN,core.DataValidationOperator.GREATER_THAN_OR_EQUAL,core.DataValidationOperator.LESS_THAN,core.DataValidationOperator.LESS_THAN_OR_EQUAL,core.DataValidationOperator.NOT_BETWEEN,core.DataValidationOperator.NOT_EQUAL]);__publicField(this,"scopes",["sheet"])}_isFormulaOrInt(formula){return!core.Tools.isBlank(formula)&&(core.isFormulaString(formula)||!Number.isNaN(+formula)&&Number.isInteger(+formula))}async isValidType(cellInfo,formula,rule){const{value:cellValue}=cellInfo,num=getCellValueNumber(cellValue);return!Number.isNaN(num)&&Number.isInteger(num)}transform(cellInfo,formula,rule){const{value:cellValue}=cellInfo;return{...cellInfo,value:getCellValueNumber(cellValue)}}_parseNumber(formula){return formula==null?Number.NaN:+formula}async parseFormula(rule,unitId,subUnitId){var _a2,_b2,_c2,_d2,_e2,_f2,_g2,_h2;const formulaInfo=await this._formulaService.getRuleFormulaResult(unitId,subUnitId,rule.uid),{formula1,formula2}=rule,formula1Result=core.isFormulaString(formula1)?(_d2=(_c2=(_b2=(_a2=formulaInfo==null?void 0:formulaInfo[0])==null?void 0:_a2.result)==null?void 0:_b2[0])==null?void 0:_c2[0])==null?void 0:_d2.v:formula1,formula2Result=core.isFormulaString(formula2)?(_h2=(_g2=(_f2=(_e2=formulaInfo==null?void 0:formulaInfo[1])==null?void 0:_e2.result)==null?void 0:_f2[0])==null?void 0:_g2[0])==null?void 0:_h2.v:formula2,isFormulaValid=isLegalFormulaResult(`${formula1Result}`)&&isLegalFormulaResult(`${formula2Result}`);return{formula1:this._parseNumber(formula1Result),formula2:this._parseNumber(formula2Result),isFormulaValid}}validatorFormula(rule,unitId,subUnitId){const operator=rule.operator;if(!operator)return{success:!1};const formula1Success=core.Tools.isDefine(rule.formula1)&&this._isFormulaOrInt(rule.formula1),formula2Success=core.Tools.isDefine(rule.formula2)&&this._isFormulaOrInt(rule.formula2),isTwoFormula=TWO_FORMULA_OPERATOR_COUNT.includes(operator),errorMsg=this.localeService.t("dataValidation.validFail.number");return isTwoFormula?{success:formula1Success&&formula2Success,formula1:formula1Success?void 0:errorMsg,formula2:formula2Success?void 0:errorMsg}:{success:formula1Success,formula1:errorMsg}}async validatorIsEqual(cellInfo,formula,rule){const{formula1}=formula,{value:cellValue}=cellInfo;return Number.isNaN(formula1)?!0:cellValue===formula1}async validatorIsNotEqual(cellInfo,formula,_rule){const{formula1}=formula;return Number.isNaN(formula1)?!0:cellInfo.value!==formula1}async validatorIsBetween(cellInfo,formula,_rule){const{formula1,formula2}=formula;if(Number.isNaN(formula1)||Number.isNaN(formula2))return!0;const start=Math.min(formula1,formula2),end=Math.max(formula1,formula2);return cellInfo.value>=start&&cellInfo.value<=end}async validatorIsNotBetween(cellInfo,formula,_rule){const{formula1,formula2}=formula;if(Number.isNaN(formula1)||Number.isNaN(formula2))return!0;const start=Math.min(formula1,formula2),end=Math.max(formula1,formula2);return cellInfo.value<start||cellInfo.value>end}async validatorIsGreaterThan(cellInfo,formula,_rule){const{formula1}=formula;return Number.isNaN(formula1)?!0:cellInfo.value>formula1}async validatorIsGreaterThanOrEqual(cellInfo,formula,_rule){const{formula1}=formula;return Number.isNaN(formula1)?!0:cellInfo.value>=formula1}async validatorIsLessThan(cellInfo,formula,_rule){const{formula1}=formula;return Number.isNaN(formula1)?!0:cellInfo.value<formula1}async validatorIsLessThanOrEqual(cellInfo,formula,_rule){const{formula1}=formula;return Number.isNaN(formula1)?!0:cellInfo.value<=formula1}};__name(_WholeValidator,"WholeValidator");let WholeValidator=_WholeValidator;var __defProp$5=Object.defineProperty,__getOwnPropDesc$5=Object.getOwnPropertyDescriptor,__decorateClass$5=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$5(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$5(target,key,result),result},"__decorateClass$5"),__decorateParam$5=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$5");let DataValidationController=(_f=class extends core.RxDisposable{constructor(_univerInstanceService,_dataValidatorRegistryService,_injector,_selectionManagerService,_sheetInterceptorService,_sheetDataValidationModel){super(),this._univerInstanceService=_univerInstanceService,this._dataValidatorRegistryService=_dataValidatorRegistryService,this._injector=_injector,this._selectionManagerService=_selectionManagerService,this._sheetInterceptorService=_sheetInterceptorService,this._sheetDataValidationModel=_sheetDataValidationModel,this._init()}_init(){this._registerValidators(),this._initCommandInterceptor()}_registerValidators(){[AnyValidator,DecimalValidator,WholeValidator,TextLengthValidator,DateValidator,CheckboxValidator,ListValidator,ListMultipleValidator,CustomFormulaValidator].forEach(Validator=>{const validator=this._injector.createInstance(Validator);this.disposeWithMe(this._dataValidatorRegistryService.register(validator)),this.disposeWithMe(core.toDisposable(()=>this._injector.delete(Validator)))})}_initCommandInterceptor(){this._sheetInterceptorService.interceptCommand({getMutations:__name(commandInfo=>{var _a2;if(commandInfo.id===sheets.ClearSelectionAllCommand.id){const workbook=this._univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_SHEET),unitId=workbook.getUnitId(),worksheet=workbook.getActiveSheet();if(!worksheet)throw new Error("No active sheet found");const subUnitId=worksheet.getSheetId(),selections=(_a2=this._selectionManagerService.getCurrentSelections())==null?void 0:_a2.map(s=>s.range),ruleMatrix=this._sheetDataValidationModel.getRuleObjectMatrix(unitId,subUnitId).clone();selections&&ruleMatrix.removeRange(selections);const diffs=ruleMatrix.diff(this._sheetDataValidationModel.getRules(unitId,subUnitId)),{redoMutations,undoMutations}=getDataValidationDiffMutations(unitId,subUnitId,diffs,this._injector,"patched");return{undos:undoMutations,redos:redoMutations}}return{undos:[],redos:[]}},"getMutations")})}},__name(_f,"DataValidationController"),_f);DataValidationController=__decorateClass$5([__decorateParam$5(0,core.IUniverInstanceService),__decorateParam$5(1,core.Inject(dataValidation.DataValidatorRegistryService)),__decorateParam$5(2,core.Inject(core.Injector)),__decorateParam$5(3,core.Inject(sheets.SheetsSelectionsService)),__decorateParam$5(4,core.Inject(sheets.SheetInterceptorService)),__decorateParam$5(5,core.Inject(exports2.SheetDataValidationModel))],DataValidationController);var R=(E=>(E[E.View=0]="View",E[E.Edit=1]="Edit",E[E.ManageCollaborator=2]="ManageCollaborator",E[E.Print=3]="Print",E[E.Duplicate=4]="Duplicate",E[E.Comment=5]="Comment",E[E.Copy=6]="Copy",E[E.Share=7]="Share",E[E.Export=8]="Export",E[E.MoveWorksheet=9]="MoveWorksheet",E[E.DeleteWorksheet=10]="DeleteWorksheet",E[E.HideWorksheet=11]="HideWorksheet",E[E.RenameWorksheet=12]="RenameWorksheet",E[E.CreateWorksheet=13]="CreateWorksheet",E[E.SetWorksheetStyle=14]="SetWorksheetStyle",E[E.EditWorksheetCell=15]="EditWorksheetCell",E[E.InsertHyperlink=16]="InsertHyperlink",E[E.Sort=17]="Sort",E[E.Filter=18]="Filter",E[E.PivotTable=19]="PivotTable",E[E.FloatImg=20]="FloatImg",E[E.History=21]="History",E[E.RwHgtClWdt=22]="RwHgtClWdt",E[E.ViemRwHgtClWdt=23]="ViemRwHgtClWdt",E[E.ViewFilter=24]="ViewFilter",E[E.MoveSheet=25]="MoveSheet",E[E.DeleteSheet=26]="DeleteSheet",E[E.HideSheet=27]="HideSheet",E[E.CopySheet=28]="CopySheet",E[E.RenameSheet=29]="RenameSheet",E[E.CreateSheet=30]="CreateSheet",E[E.SelectProtectedCells=31]="SelectProtectedCells",E[E.SelectUnProtectedCells=32]="SelectUnProtectedCells",E[E.SetCellStyle=33]="SetCellStyle",E[E.SetCellValue=34]="SetCellValue",E[E.SetRowStyle=35]="SetRowStyle",E[E.SetColumnStyle=36]="SetColumnStyle",E[E.InsertRow=37]="InsertRow",E[E.InsertColumn=38]="InsertColumn",E[E.DeleteRow=39]="DeleteRow",E[E.DeleteColumn=40]="DeleteColumn",E[E.EditExtraObject=41]="EditExtraObject",E[E.Delete=42]="Delete",E[E.RecoverHistory=43]="RecoverHistory",E[E.ViewHistory=44]="ViewHistory",E[E.CreatePermissionObject=45]="CreatePermissionObject",E[E.UNRECOGNIZED=-1]="UNRECOGNIZED",E))(R||{}),__defProp$4=Object.defineProperty,__getOwnPropDesc$4=Object.getOwnPropertyDescriptor,__decorateClass$4=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$4(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$4(target,key,result),result},"__decorateClass$4"),__decorateParam$4=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$4");exports2.DataValidationFormulaController=(_g=class extends core.Disposable{constructor(_univerInstanceService,_permissionService,_lexerTreeBuilder){super(),this._univerInstanceService=_univerInstanceService,this._permissionService=_permissionService,this._lexerTreeBuilder=_lexerTreeBuilder}getFormulaRefCheck(formulaString){var _a2,_b2;const sequenceNodes=this._lexerTreeBuilder.sequenceNodesBuilder(formulaString);if(!sequenceNodes)return!0;for(let i=0;i<sequenceNodes.length;i++){const node=sequenceNodes[i];if(typeof node=="string")continue;const{token}=node,sequenceGrid=engineFormula.deserializeRangeWithSheetWithCache(token),workbook=this._univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_SHEET);let targetSheet=workbook.getActiveSheet();const unitId=workbook.getUnitId();if(sequenceGrid.sheetName){if(targetSheet=workbook.getSheetBySheetName(sequenceGrid.sheetName),!targetSheet)return!1;const subUnitId=targetSheet==null?void 0:targetSheet.getSheetId();if(!this._permissionService.getPermissionPoint(new sheets.WorksheetViewPermission(unitId,subUnitId).id))return!1}if(!targetSheet)return!1;const{startRow,endRow,startColumn,endColumn}=sequenceGrid.range;for(let i2=startRow;i2<=endRow;i2++)for(let j=startColumn;j<=endColumn;j++){const permission=(_b2=(_a2=targetSheet.getCell(i2,j))==null?void 0:_a2.selectionProtection)==null?void 0:_b2[0];if((permission==null?void 0:permission[R.View])===!1)return!1}}return!0}},__name(_g,"DataValidationFormulaController"),_g),exports2.DataValidationFormulaController=__decorateClass$4([__decorateParam$4(0,core.IUniverInstanceService),__decorateParam$4(1,core.IPermissionService),__decorateParam$4(2,core.Inject(engineFormula.LexerTreeBuilder))],exports2.DataValidationFormulaController);var __defProp$3=Object.defineProperty,__getOwnPropDesc$3=Object.getOwnPropertyDescriptor,__decorateClass$3=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$3(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$3(target,key,result),result},"__decorateClass$3"),__decorateParam$3=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$3");let DataValidationRefRangeController=(_h=class extends core.Disposable{constructor(_dataValidationModel,_injector,_refRangeService,_dataValidationCustomFormulaService,_dataValidationFormulaService,_formulaRefRangeService){super();__publicField(this,"_disposableMap",new Map);__publicField(this,"registerRule",__name((unitId,subUnitId,rule)=>{this.register(unitId,subUnitId,rule),this.registerFormula(unitId,subUnitId,rule)},"registerRule"));this._dataValidationModel=_dataValidationModel,this._injector=_injector,this._refRangeService=_refRangeService,this._dataValidationCustomFormulaService=_dataValidationCustomFormulaService,this._dataValidationFormulaService=_dataValidationFormulaService,this._formulaRefRangeService=_formulaRefRangeService,this._initRefRange()}_getIdWithUnitId(unitID,subUnitId,ruleId){return`${unitID}_${subUnitId}_${ruleId}`}registerFormula(unitId,subUnitId,rule){var _a2;const ruleId=rule.uid,id=this._getIdWithUnitId(unitId,subUnitId,ruleId),disposeSet=(_a2=this._disposableMap.get(id))!=null?_a2:new Set,handleFormulaChange=__name((type,formulaString)=>{const oldRule=this._dataValidationModel.getRuleById(unitId,subUnitId,ruleId);if(!oldRule)return{redos:[],undos:[]};const oldFormula=oldRule[type];if(!oldFormula||oldFormula===formulaString)return{redos:[],undos:[]};const redoParams={unitId,subUnitId,ruleId:rule.uid,payload:{type:dataValidation.UpdateRuleType.SETTING,payload:{type:oldRule.type,formula1:oldRule.formula1,formula2:oldRule.formula2,[type]:formulaString}}},undoParams={unitId,subUnitId,ruleId:rule.uid,payload:{type:dataValidation.UpdateRuleType.SETTING,payload:{type:oldRule.type,formula1:oldRule.formula1,formula2:oldRule.formula2}}},redos=[{id:dataValidation.UpdateDataValidationMutation.id,params:redoParams}],undos=[{id:dataValidation.UpdateDataValidationMutation.id,params:undoParams}];return{redos,undos}},"handleFormulaChange");if(rule.type===core.DataValidationType.CUSTOM){const currentFormula=this._dataValidationCustomFormulaService.getRuleFormulaInfo(unitId,subUnitId,ruleId);if(currentFormula){const disposable=this._formulaRefRangeService.registerFormula(unitId,subUnitId,currentFormula.formula,newFormulaString=>handleFormulaChange("formula1",newFormulaString));disposeSet.add(()=>disposable.dispose())}}else{const currentFormula=this._dataValidationFormulaService.getRuleFormulaInfo(unitId,subUnitId,ruleId);if(currentFormula){const[formula1,formula2]=currentFormula;if(formula1){const disposable=this._formulaRefRangeService.registerFormula(unitId,subUnitId,formula1.text,newFormulaString=>handleFormulaChange("formula1",newFormulaString));disposeSet.add(()=>disposable.dispose())}if(formula2){const disposable=this._formulaRefRangeService.registerFormula(unitId,subUnitId,formula2.text,newFormulaString=>handleFormulaChange("formula2",newFormulaString));disposeSet.add(()=>disposable.dispose())}}}}register(unitId,subUnitId,rule){var _a2;const handleRangeChange=__name(commandInfo=>{const oldRanges=[...rule.ranges],resultRanges=oldRanges.map(range=>sheets.handleCommonDefaultRangeChangeWithEffectRefCommands(range,commandInfo)).filter(range=>!!range).flat();if(core.isRangesEqual(resultRanges,oldRanges))return{redos:[],undos:[]};if(resultRanges.length){const redoParams={unitId,subUnitId,ruleId:rule.uid,payload:{type:dataValidation.UpdateRuleType.RANGE,payload:resultRanges},source:"patched"},redos=[{id:dataValidation.UpdateDataValidationMutation.id,params:redoParams}],undos=[{id:dataValidation.UpdateDataValidationMutation.id,params:{unitId,subUnitId,ruleId:rule.uid,payload:{type:dataValidation.UpdateRuleType.RANGE,payload:oldRanges},source:"patched"}}];return{redos,undos}}else{const redoParams={unitId,subUnitId,ruleId:rule.uid},redos=[{id:dataValidation.RemoveDataValidationMutation.id,params:redoParams}],undos=removeDataValidationUndoFactory(this._injector,redoParams);return{redos,undos}}},"handleRangeChange"),disposeList=[];rule.ranges.forEach(range=>{const disposable=this._refRangeService.registerRefRange(range,handleRangeChange,unitId,subUnitId);disposeList.push(()=>disposable.dispose())});const id=this._getIdWithUnitId(unitId,subUnitId,rule.uid),current=(_a2=this._disposableMap.get(id))!=null?_a2:new Set;current.add(()=>disposeList.forEach(dispose=>dispose())),this._disposableMap.set(id,current)}_initRefRange(){const allRules=this._dataValidationModel.getAll();for(const[unitId,subUnitMap]of allRules)for(const[subUnitId,rules]of subUnitMap)for(const rule of rules)this.registerRule(unitId,subUnitId,rule);this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(option=>{const{unitId,subUnitId,rule}=option;switch(option.type){case"add":{const rule2=option.rule;this.registerRule(option.unitId,option.subUnitId,rule2);break}case"remove":{const disposeSet=this._disposableMap.get(this._getIdWithUnitId(unitId,subUnitId,rule.uid));disposeSet&&disposeSet.forEach(dispose=>dispose());break}case"update":{const rule2=option.rule,disposeSet=this._disposableMap.get(this._getIdWithUnitId(unitId,subUnitId,rule2.uid));disposeSet&&disposeSet.forEach(dispose=>dispose()),this.registerRule(option.unitId,option.subUnitId,rule2);break}}})),this.disposeWithMe(core.toDisposable(()=>{this._disposableMap.forEach(item=>{item.forEach(dispose=>dispose())}),this._disposableMap.clear()}))}},__name(_h,"DataValidationRefRangeController"),_h);DataValidationRefRangeController=__decorateClass$3([__decorateParam$3(0,core.Inject(exports2.SheetDataValidationModel)),__decorateParam$3(1,core.Inject(core.Injector)),__decorateParam$3(2,core.Inject(sheets.RefRangeService)),__decorateParam$3(3,core.Inject(exports2.DataValidationCustomFormulaService)),__decorateParam$3(4,core.Inject(exports2.DataValidationFormulaService)),__decorateParam$3(5,core.Inject(sheetsFormula.FormulaRefRangeService))],DataValidationRefRangeController);var __defProp$2=Object.defineProperty,__getOwnPropDesc$2=Object.getOwnPropertyDescriptor,__decorateClass$2=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$2(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$2(target,key,result),result},"__decorateClass$2"),__decorateParam$2=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$2");let SheetDataValidationSheetController=(_i=class extends core.Disposable{constructor(_sheetInterceptorService,_univerInstanceService,_sheetDataValidationModel){super(),this._sheetInterceptorService=_sheetInterceptorService,this._univerInstanceService=_univerInstanceService,this._sheetDataValidationModel=_sheetDataValidationModel,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:__name(commandInfo=>{var _a2;if(commandInfo.id===sheets.RemoveSheetCommand.id){const params=commandInfo.params,unitId=params.unitId||this._univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_SHEET).getUnitId(),workbook=this._univerInstanceService.getUniverSheetInstance(unitId);if(!workbook)return{redos:[],undos:[]};const subUnitId=params.subUnitId||((_a2=workbook.getActiveSheet())==null?void 0:_a2.getSheetId());if(!subUnitId)return{redos:[],undos:[]};const rules=this._sheetDataValidationModel.getRules(unitId,subUnitId);if(rules.length===0)return{redos:[],undos:[]};const ids=rules.map(i=>i.uid),redoParams={unitId,subUnitId,ruleId:ids,source:"patched"},undoParams={unitId,subUnitId,rule:[...rules],source:"patched"};return{redos:[{id:dataValidation.RemoveDataValidationMutation.id,params:redoParams}],undos:[{id:dataValidation.AddDataValidationMutation.id,params:undoParams}]}}return{redos:[],undos:[]}},"getMutations")}))}},__name(_i,"SheetDataValidationSheetController"),_i);SheetDataValidationSheetController=__decorateClass$2([__decorateParam$2(0,core.Inject(sheets.SheetInterceptorService)),__decorateParam$2(1,core.Inject(core.IUniverInstanceService)),__decorateParam$2(2,core.Inject(exports2.SheetDataValidationModel))],SheetDataValidationSheetController);var __defProp$1=Object.defineProperty,__getOwnPropDesc$1=Object.getOwnPropertyDescriptor,__decorateClass$1=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$1(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$1(target,key,result),result},"__decorateClass$1"),__decorateParam$1=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$1");exports2.SheetsDataValidationValidatorService=(_j=class extends core.Disposable{constructor(_univerInstanceService,_sheetDataValidationModel,_dataValidationCacheService,_lifecycleService){super(),this._univerInstanceService=_univerInstanceService,this._sheetDataValidationModel=_sheetDataValidationModel,this._dataValidationCacheService=_dataValidationCacheService,this._lifecycleService=_lifecycleService,this._initRecalculate()}_initRecalculate(){const handleDirtyRanges=__name(ranges=>{if(ranges.length===0)return;const workbook=this._univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_SHEET),worksheet=workbook==null?void 0:workbook.getActiveSheet(),map={};ranges.flat().forEach(range=>{map[range.unitId]||(map[range.unitId]={}),map[range.unitId][range.subUnitId]||(map[range.unitId][range.subUnitId]=[]);const workbook2=this._univerInstanceService.getUnit(range.unitId,core.UniverInstanceType.UNIVER_SHEET),worksheet2=workbook2==null?void 0:workbook2.getSheetBySheetId(range.subUnitId);worksheet2&&map[range.unitId][range.subUnitId].push(...range.ranges.map(range2=>core.Range.transformRange(range2,worksheet2)))}),Object.entries(map).forEach(([unitId,subUnitMap])=>{Object.entries(subUnitMap).forEach(([subUnitId,ranges2])=>{(workbook==null?void 0:workbook.getUnitId())===unitId&&(worksheet==null?void 0:worksheet.getSheetId())===subUnitId?this.validatorRanges(unitId,subUnitId,ranges2):requestIdleCallback(()=>{this.validatorRanges(unitId,subUnitId,ranges2)})})})},"handleDirtyRanges");this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.pipe(rxjs.bufferWhen(()=>this._lifecycleService.lifecycle$.pipe(rxjs.filter(stage=>stage===core.LifecycleStages.Rendered)))).subscribe(handleDirtyRanges)),this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.pipe(rxjs.filter(()=>this._lifecycleService.stage>=core.LifecycleStages.Rendered),core.bufferDebounceTime(20)).subscribe(handleDirtyRanges))}async validatorCell(unitId,subUnitId,row,col){const workbook=this._univerInstanceService.getUnit(unitId,core.UniverInstanceType.UNIVER_SHEET);if(!workbook)throw new Error(`cannot find current workbook, unitId: ${unitId}`);const worksheet=workbook.getSheetBySheetId(subUnitId);if(!worksheet)throw new Error(`cannot find current worksheet, sheetId: ${subUnitId}`);if(!core.Tools.isDefine(row)||!core.Tools.isDefine(col))throw new Error(`row or col is not defined, row: ${row}, col: ${col}`);const rule=this._sheetDataValidationModel.getRuleByLocation(unitId,subUnitId,row,col);return rule?new Promise(resolve=>{this._sheetDataValidationModel.validator(rule,{unitId,subUnitId,row,col,worksheet,workbook},status=>{resolve(status)})}):core.DataValidationStatus.VALID}validatorRanges(unitId,subUnitId,ranges){return Promise.all(ranges.map(range=>{const promises=[];return core.Range.foreach(range,(row,col)=>{promises.push(this.validatorCell(unitId,subUnitId,row,col))}),promises}))}async validatorWorksheet(unitId,subUnitId){const rules=this._sheetDataValidationModel.getRules(unitId,subUnitId);return await Promise.all(rules.map(rule=>Promise.all(rule.ranges.map(range=>{const promises=[];return core.Range.foreach(range,(row,col)=>{promises.push(this.validatorCell(unitId,subUnitId,row,col))}),promises})))),this._dataValidationCacheService.ensureCache(unitId,subUnitId)}async validatorWorkbook(unitId){const sheetIds=this._sheetDataValidationModel.getSubUnitIds(unitId),results=await Promise.all(sheetIds.map(id=>this.validatorWorksheet(unitId,id))),map={};return results.forEach((result,i)=>{map[sheetIds[i]]=result}),map}getDataValidations(unitId,subUnitId,ranges){const ruleMatrix=this._sheetDataValidationModel.getRuleObjectMatrix(unitId,subUnitId),ruleIdSet=new Set;return ranges.forEach(range=>{core.Range.foreach(range,(row,col)=>{const ruleId=ruleMatrix.getValue(row,col);ruleId&&ruleIdSet.add(ruleId)})}),Array.from(ruleIdSet).map(id=>this._sheetDataValidationModel.getRuleById(unitId,subUnitId,id)).filter(Boolean)}getDataValidation(unitId,subUnitId,ranges){return this.getDataValidations(unitId,subUnitId,ranges)[0]}},__name(_j,"SheetsDataValidationValidatorService"),_j),exports2.SheetsDataValidationValidatorService=__decorateClass$1([__decorateParam$1(0,core.IUniverInstanceService),__decorateParam$1(1,core.Inject(exports2.SheetDataValidationModel)),__decorateParam$1(2,core.Inject(exports2.DataValidationCacheService)),__decorateParam$1(3,core.Inject(core.LifecycleService))],exports2.SheetsDataValidationValidatorService);var __defProp2=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__defNormalProp2=__name((obj,key,value)=>key in obj?__defProp2(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value,"__defNormalProp"),__decorateClass=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp2(target,key,result),result},"__decorateClass"),__decorateParam=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam"),__publicField2=__name((obj,key,value)=>__defNormalProp2(obj,typeof key!="symbol"?key+"":key,value),"__publicField");exports2.UniverSheetsDataValidationPlugin=(_k=class extends core.Plugin{constructor(_config=defaultPluginConfig,_injector,_commandService,_configService){super(),this._config=_config,this._injector=_injector,this._commandService=_commandService,this._configService=_configService;const{...rest}=this._config;this._configService.setConfig(PLUGIN_CONFIG_KEY,rest)}onStarting(){[[exports2.DataValidationCacheService],[exports2.DataValidationFormulaService],[exports2.DataValidationCustomFormulaService],[exports2.SheetsDataValidationValidatorService],[exports2.SheetDataValidationModel],[DataValidationController],[DataValidationRefRangeController],[exports2.DataValidationFormulaController],[SheetDataValidationSheetController]].forEach(dep=>{this._injector.add(dep)}),[AddSheetDataValidationCommand,UpdateSheetDataValidationRangeCommand,UpdateSheetDataValidationSettingCommand,UpdateSheetDataValidationOptionsCommand,RemoveSheetDataValidationCommand,RemoveSheetAllDataValidationCommand,ClearRangeDataValidationCommand].forEach(command=>{this._commandService.registerCommand(command)}),this._injector.get(exports2.DataValidationCacheService),this._injector.get(exports2.SheetsDataValidationValidatorService),this._injector.get(DataValidationRefRangeController)}onReady(){this._injector.get(SheetDataValidationSheetController)}onRendered(){this._injector.get(DataValidationController),this._injector.get(exports2.DataValidationFormulaController)}},__name(_k,"UniverSheetsDataValidationPlugin"),_k),__publicField2(exports2.UniverSheetsDataValidationPlugin,"pluginName",DATA_VALIDATION_PLUGIN_NAME),__publicField2(exports2.UniverSheetsDataValidationPlugin,"type",core.UniverInstanceType.UNIVER_SHEET),exports2.UniverSheetsDataValidationPlugin=__decorateClass([core.DependentOn(dataValidation.UniverDataValidationPlugin),__decorateParam(1,core.Inject(core.Injector)),__decorateParam(2,core.ICommandService),__decorateParam(3,core.IConfigService)],exports2.UniverSheetsDataValidationPlugin);function createDefaultNewRule(accessor){const currentRanges=accessor.get(sheets.SheetsSelectionsService).getCurrentSelections().map(s=>s.range);return{uid:core.Tools.generateRandomId(6),type:core.DataValidationType.DECIMAL,operator:core.DataValidationOperator.EQUAL,formula1:"100",ranges:currentRanges!=null?currentRanges:[{startColumn:0,endColumn:0,startRow:0,endRow:0}]}}__name(createDefaultNewRule,"createDefaultNewRule"),exports2.AddSheetDataValidationCommand=AddSheetDataValidationCommand,exports2.CHECKBOX_FORMULA_1=CHECKBOX_FORMULA_1,exports2.CHECKBOX_FORMULA_2=CHECKBOX_FORMULA_2,exports2.CheckboxValidator=CheckboxValidator,exports2.ClearRangeDataValidationCommand=ClearRangeDataValidationCommand,exports2.DATA_VALIDATION_PLUGIN_NAME=DATA_VALIDATION_PLUGIN_NAME,exports2.DateValidator=DateValidator,exports2.ListMultipleValidator=ListMultipleValidator,exports2.ListValidator=ListValidator,exports2.RemoveSheetAllDataValidationCommand=RemoveSheetAllDataValidationCommand,exports2.RemoveSheetDataValidationCommand=RemoveSheetDataValidationCommand,exports2.UpdateSheetDataValidationOptionsCommand=UpdateSheetDataValidationOptionsCommand,exports2.UpdateSheetDataValidationRangeCommand=UpdateSheetDataValidationRangeCommand,exports2.UpdateSheetDataValidationSettingCommand=UpdateSheetDataValidationSettingCommand,exports2.createDefaultNewRule=createDefaultNewRule,exports2.deserializeListOptions=deserializeListOptions,exports2.getCellValueOrigin=getCellValueOrigin,exports2.getDataValidationCellValue=getDataValidationCellValue,exports2.getDataValidationDiffMutations=getDataValidationDiffMutations,exports2.getFormulaCellData=getFormulaCellData,exports2.getFormulaResult=getFormulaResult,exports2.isLegalFormulaResult=isLegalFormulaResult,exports2.serializeListOptions=serializeListOptions,exports2.transformCheckboxValue=transformCheckboxValue,Object.defineProperty(exports2,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(m,s){typeof exports=="object"&&typeof module<"u"?s(exports,require("@univerjs/core"),require("@univerjs/data-validation"),require("@univerjs/sheets"),require("rxjs"),require("@univerjs/sheets-formula"),require("@univerjs/engine-formula")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/data-validation","@univerjs/sheets","rxjs","@univerjs/sheets-formula","@univerjs/engine-formula"],s):(m=typeof globalThis<"u"?globalThis:m||self,s(m.UniverSheetsDataValidation={},m.UniverCore,m.UniverDataValidation,m.UniverSheets,m.rxjs,m.UniverSheetsFormula,m.UniverEngineFormula))})(this,function(m,s,g,$,it,Nt,Q){"use strict";var ia=Object.defineProperty;var ra=(m,s,g)=>s in m?ia(m,s,{enumerable:!0,configurable:!0,writable:!0,value:g}):m[s]=g;var S=(m,s,g)=>ra(m,typeof s!="symbol"?s+"":s,g);const At="SHEET_DATA_VALIDATION_PLUGIN";var ie=Object.defineProperty,re=Object.getOwnPropertyDescriptor,ne=(o,r,t,e)=>{for(var i=e>1?void 0:e?re(r,t):r,a=o.length-1,n;a>=0;a--)(n=o[a])&&(i=(e?n(r,t,i):n(i))||i);return e&&i&&ie(r,t,i),i},se=(o,r)=>(t,e)=>r(t,e,o);m.DataValidationCacheService=class extends s.Disposable{constructor(t){super();S(this,"_cacheMatrix",new Map);S(this,"_dirtyRanges$",new it.Subject);S(this,"dirtyRanges$",this._dirtyRanges$.asObservable());this._commandService=t,this._initDirtyRanges()}_initDirtyRanges(){this.disposeWithMe(this._commandService.onCommandExecuted(t=>{if(t.id===$.SetRangeValuesMutation.id){const{cellValue:e,unitId:i,subUnitId:a}=t.params;if(e){const n=new s.ObjectMatrix(e).getDataRange();if(n.endRow===-1)return;this._dirtyRanges$.next({unitId:i,subUnitId:a,ranges:[n]})}}}))}_ensureCache(t,e){let i=this._cacheMatrix.get(t);i||(i=new Map,this._cacheMatrix.set(t,i));let a=i.get(e);return a||(a=new s.ObjectMatrix,i.set(e,a)),a}ensureCache(t,e){return this._ensureCache(t,e)}addRule(t,e,i){this.markRangeDirty(t,e,i.ranges)}removeRule(t,e,i){this._deleteRange(t,e,i.ranges)}updateRuleRanges(t,e,i,a,n){const l=this._ensureCache(t,e);n.forEach(u=>{s.Range.foreach(u,(d,c)=>{const h=l.getValue(d,c);h&&(h.temp=!0)})}),a.forEach(u=>{s.Range.foreach(u,(d,c)=>{const h=l.getValue(d,c);h&&h.ruleId===i?h.temp=!1:l.setValue(d,c,void 0)})}),n.forEach(u=>{s.Range.foreach(u,(d,c)=>{const h=l.getValue(d,c);h&&h.temp===!0&&l.realDeleteValue(d,c)})}),this._dirtyRanges$.next({unitId:t,subUnitId:e,ranges:[...n,...a]})}markRangeDirty(t,e,i){const a=this._ensureCache(t,e);i.forEach(n=>{s.Range.foreach(n,(l,u)=>{a.setValue(l,u,void 0)})}),this._dirtyRanges$.next({unitId:t,subUnitId:e,ranges:i})}markCellDirty(t,e,i,a){this._ensureCache(t,e).setValue(i,a,void 0),this._dirtyRanges$.next({unitId:t,subUnitId:e,ranges:[{startRow:i,startColumn:a,endRow:i,endColumn:a}]})}_deleteRange(t,e,i){const a=this._ensureCache(t,e);i.forEach(n=>{s.Range.foreach(n,(l,u)=>{a.realDeleteValue(l,u)})}),this._dirtyRanges$.next({unitId:t,subUnitId:e,ranges:i})}getValue(t,e,i,a){return this._ensureCache(t,e).getValue(i,a)}setValue(t,e,i,a,n){return this._ensureCache(t,e).setValue(i,a,n)}},m.DataValidationCacheService=ne([se(0,s.Inject(s.ICommandService))],m.DataValidationCacheService);function W(o){var r,t;return(t=(r=o==null?void 0:o[0])==null?void 0:r[0])==null?void 0:t.v}function $t(o){var r;return(r=o==null?void 0:o[0])==null?void 0:r[0]}function P(o){return!Q.ERROR_TYPE_SET.has(o)}var oe=Object.defineProperty,le=Object.getOwnPropertyDescriptor,ue=(o,r,t,e)=>{for(var i=e>1?void 0:e?le(r,t):r,a=o.length-1,n;a>=0;a--)(n=o[a])&&(i=(e?n(r,t,i):n(i))||i);return e&&i&&oe(r,t,i),i},gt=(o,r)=>(t,e)=>r(t,e,o);m.DataValidationCustomFormulaService=class extends s.Disposable{constructor(t,e,i,a){super();S(this,"_ruleFormulaMap",new Map);this._instanceSrv=t,this._registerOtherFormulaService=e,this._dataValidationModel=i,this._dataValidationCacheService=a,this._initFormulaResultHandler()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(t=>{for(const e in t){const i=t[e];if(this._instanceSrv.getUnitType(e)===s.UniverInstanceType.UNIVER_SHEET)for(const n in i){const l=i[n],{ruleFormulaMap:u}=this._ensureMaps(e,n);l.forEach(d=>{var f,R;const c=u.get((f=d.extra)==null?void 0:f.ruleId),h=this._dataValidationModel.getRuleById(e,n,(R=d.extra)==null?void 0:R.ruleId);h&&c&&!c.isTransformable&&this._dataValidationCacheService.markRangeDirty(e,n,h.ranges)})}}}))}_ensureMaps(t,e){let i=this._ruleFormulaMap.get(t);i||(i=new Map,this._ruleFormulaMap.set(t,i));let a=i.get(e);return a||(a=new Map,i.set(e,a)),{ruleFormulaMap:a}}_registerFormula(t,e,i,a,n){return this._registerOtherFormulaService.registerFormulaWithRange(t,e,a,n,{ruleId:i})}deleteByRuleId(t,e,i){const{ruleFormulaMap:a}=this._ensureMaps(t,e),n=this._dataValidationModel.getRuleById(t,e,i),l=a.get(i);if(!n||!l)return;const u=a.get(i);u&&(a.delete(i),this._registerOtherFormulaService.deleteFormula(t,e,[u.formulaId]))}_addFormulaByRange(t,e,i,a,n){const{ruleFormulaMap:l}=this._ensureMaps(t,e);if(!a)return;const u=n[0].startRow,d=n[0].startColumn,c=this._registerFormula(t,e,i,a,n);l.set(i,{formula:a,originCol:d,originRow:u,formulaId:c,isTransformable:!0})}addRule(t,e,i){const{ranges:a,formula1:n,uid:l,type:u}=i;u!==s.DataValidationType.CUSTOM||!n||!s.isFormulaString(n)||this._addFormulaByRange(t,e,l,n,a)}async getCellFormulaValue(t,e,i,a,n){var V,O;const{ruleFormulaMap:l}=this._ensureMaps(t,e),u=l.get(i);if(!u)return Promise.resolve(void 0);const d=await this._registerOtherFormulaService.getFormulaValue(t,e,u.formulaId),{originRow:c,originCol:h}=u,f=a-c,R=n-h;return $t((O=(V=d==null?void 0:d.result)==null?void 0:V[f])==null?void 0:O[R])}getRuleFormulaInfo(t,e,i){const{ruleFormulaMap:a}=this._ensureMaps(t,e);return a.get(i)}},m.DataValidationCustomFormulaService=ue([gt(0,s.IUniverInstanceService),gt(1,s.Inject(Nt.RegisterOtherFormulaService)),gt(2,s.Inject(g.DataValidationModel)),gt(3,s.Inject(m.DataValidationCacheService))],m.DataValidationCustomFormulaService);var de=Object.defineProperty,ce=Object.getOwnPropertyDescriptor,he=(o,r,t,e)=>{for(var i=e>1?void 0:e?ce(r,t):r,a=o.length-1,n;a>=0;a--)(n=o[a])&&(i=(e?n(r,t,i):n(i))||i);return e&&i&&de(r,t,i),i},_t=(o,r)=>(t,e)=>r(t,e,o);m.DataValidationFormulaService=class extends s.Disposable{constructor(t,e,i,a){super();S(this,"_formulaRuleMap",new Map);this._instanceService=t,this._registerOtherFormulaService=e,this._dataValidationCacheService=i,this._dataValidationModel=a,this._initFormulaResultHandler()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(t=>{for(const e in t){const i=t[e];if(this._instanceService.getUnitType(e)===s.UniverInstanceType.UNIVER_SHEET)for(const n in i){const l=i[n],u=this._ensureRuleFormulaMap(e,n);l.forEach(d=>{var c,h;if(u.get((c=d.extra)==null?void 0:c.ruleId)){const f=this._dataValidationModel.getRuleById(e,n,(h=d.extra)==null?void 0:h.ruleId);f&&this._dataValidationCacheService.markRangeDirty(e,n,f.ranges)}})}}}))}_ensureRuleFormulaMap(t,e){let i=this._formulaRuleMap.get(t);i||(i=new Map,this._formulaRuleMap.set(t,i));let a=i.get(e);return a||(a=new Map,i.set(e,a)),a}_registerSingleFormula(t,e,i,a){const n=[{startColumn:0,endColumn:0,startRow:0,endRow:0}];return this._registerOtherFormulaService.registerFormulaWithRange(t,e,i,n,{ruleId:a})}addRule(t,e,i,a,n,l){const u=s.isFormulaString(a),d=s.isFormulaString(n);if(!u&&!d)return;const c=this._ensureRuleFormulaMap(t,e),h=[void 0,void 0];if(u){const f=this._registerSingleFormula(t,e,a,i);h[0]={id:f,text:a}}if(d){const f=this._registerSingleFormula(t,e,n,i);h[1]={id:f,text:n}}c.set(i,h)}removeRule(t,e,i){const n=this._ensureRuleFormulaMap(t,e).get(i);if(!n)return;const[l,u]=n,d=[l==null?void 0:l.id,u==null?void 0:u.id].filter(Boolean);d.length&&this._registerOtherFormulaService.deleteFormula(t,e,d)}updateRuleFormulaText(t,e,i,a,n,l){const d=this._ensureRuleFormulaMap(t,e).get(i);if(!d){this.addRule(t,e,i,a,n,l);return}const[c,h]=d;if((c==null?void 0:c.text)!==a)if(c&&this._registerOtherFormulaService.deleteFormula(t,e,[c.id]),s.isFormulaString(a)){const f=this._registerSingleFormula(t,e,a,i);d[0]={text:a,id:f}}else d[0]=void 0;if((h==null?void 0:h.text)!==n)if(h&&this._registerOtherFormulaService.deleteFormula(t,e,[h.id]),s.isFormulaString(n)){const f=this._registerSingleFormula(t,e,n,i);d[1]={text:n,id:f}}else d[1]=void 0}getRuleFormulaResult(t,e,i){const n=this._ensureRuleFormulaMap(t,e).get(i);if(!n)return Promise.resolve(null);const l=async u=>u&&this._registerOtherFormulaService.getFormulaValue(t,e,u.id);return Promise.all([l(n[0]),l(n[1])])}getRuleFormulaResultSync(t,e,i){const n=this._ensureRuleFormulaMap(t,e).get(i);if(n)return n.map(l=>{if(l)return this._registerOtherFormulaService.getFormulaValueSync(t,e,l.id)})}getRuleFormulaInfo(t,e,i){return this._ensureRuleFormulaMap(t,e).get(i)}},m.DataValidationFormulaService=he([_t(0,s.IUniverInstanceService),_t(1,s.Inject(Nt.RegisterOtherFormulaService)),_t(2,s.Inject(m.DataValidationCacheService)),_t(3,s.Inject(g.DataValidationModel))],m.DataValidationFormulaService);function K(o){return s.getOriginCellValue(o)}function Lt(o){var r;return String((r=K(o))!=null?r:"")}const me=class Ut{constructor(r,t){this.low=r,this.high=t}clone(){return new Ut(this.low,this.high)}get max(){return this.clone()}less_than(r){return this.low<r.low||this.low===r.low&&this.high<r.high}equal_to(r){return this.low===r.low&&this.high===r.high}intersect(r){return!this.not_intersect(r)}not_intersect(r){return this.high<r.low||r.high<this.low}merge(r){return new Ut(this.low===void 0?r.low:this.low<r.low?this.low:r.low,this.high===void 0?r.high:this.high>r.high?this.high:r.high)}output(){return[this.low,this.high]}static comparable_max(r,t){return r.merge(t)}static comparable_less_than(r,t){return r<t}},H=0,C=1;class Z{constructor(r=void 0,t=void 0,e=null,i=null,a=null,n=C){if(this.left=e,this.right=i,this.parent=a,this.color=n,this.item={key:r,value:t},r&&r instanceof Array&&r.length===2&&!Number.isNaN(r[0])&&!Number.isNaN(r[1])){let[l,u]=r;l>u&&([l,u]=[u,l]),this.item.key=new me(l,u)}this.max=this.item.key?this.item.key.max:void 0}isNil(){return this.item.key===void 0&&this.item.value===void 0&&this.left===null&&this.right===null&&this.color===C}_value_less_than(r){return this.item.value&&r.item.value&&this.item.value.less_than?this.item.value.less_than(r.item.value):this.item.value<r.item.value}less_than(r){return this.item.value===this.item.key&&r.item.value===r.item.key?this.item.key.less_than(r.item.key):this.item.key.less_than(r.item.key)||this.item.key.equal_to(r.item.key)&&this._value_less_than(r)}_value_equal(r){return this.item.value&&r.item.value&&this.item.value.equal_to?this.item.value.equal_to(r.item.value):this.item.value===r.item.value}equal_to(r){return this.item.value===this.item.key&&r.item.value===r.item.key?this.item.key.equal_to(r.item.key):this.item.key.equal_to(r.item.key)&&this._value_equal(r)}intersect(r){return this.item.key.intersect(r.item.key)}copy_data(r){this.item.key=r.item.key,this.item.value=r.item.value}update_max(){if(this.max=this.item.key?this.item.key.max:void 0,this.right&&this.right.max){const r=this.item.key.constructor.comparable_max;this.max=r(this.max,this.right.max)}if(this.left&&this.left.max){const r=this.item.key.constructor.comparable_max;this.max=r(this.max,this.left.max)}}not_intersect_left_subtree(r){const t=this.item.key.constructor.comparable_less_than;let e=this.left.max.high!==void 0?this.left.max.high:this.left.max;return t(e,r.item.key.low)}not_intersect_right_subtree(r){const t=this.item.key.constructor.comparable_less_than;let e=this.right.max.low!==void 0?this.right.max.low:this.right.item.key.low;return t(r.item.key.high,e)}}class Ot{constructor(){this.root=null,this.nil_node=new Z}get size(){let r=0;return this.tree_walk(this.root,()=>r++),r}get keys(){let r=[];return this.tree_walk(this.root,t=>r.push(t.item.key.output?t.item.key.output():t.item.key)),r}get values(){let r=[];return this.tree_walk(this.root,t=>r.push(t.item.value)),r}get items(){let r=[];return this.tree_walk(this.root,t=>r.push({key:t.item.key.output?t.item.key.output():t.item.key,value:t.item.value})),r}isEmpty(){return this.root==null||this.root===this.nil_node}clear(){this.root=null}insert(r,t=r){if(r===void 0)return;let e=new Z(r,t,this.nil_node,this.nil_node,null,H);return this.tree_insert(e),this.recalc_max(e),e}exist(r,t=r){let e=new Z(r,t);return!!this.tree_search(this.root,e)}remove(r,t=r){let e=new Z(r,t),i=this.tree_search(this.root,e);return i&&this.tree_delete(i),i}search(r,t=(e,i)=>e===i?i.output():e){let e=new Z(r),i=[];return this.tree_search_interval(this.root,e,i),i.map(a=>t(a.item.value,a.item.key))}intersect_any(r){let t=new Z(r);return this.tree_find_any_interval(this.root,t)}forEach(r){this.tree_walk(this.root,t=>r(t.item.key,t.item.value))}map(r){const t=new Ot;return this.tree_walk(this.root,e=>t.insert(e.item.key,r(e.item.value,e.item.key))),t}*iterate(r,t=(e,i)=>e===i?i.output():e){let e;for(r?e=this.tree_search_nearest_forward(this.root,new Z(r)):this.root&&(e=this.local_minimum(this.root));e;)yield t(e.item.value,e.item.key),e=this.tree_successor(e)}recalc_max(r){let t=r;for(;t.parent!=null;)t.parent.update_max(),t=t.parent}tree_insert(r){let t=this.root,e=null;if(this.root==null||this.root===this.nil_node)this.root=r;else{for(;t!==this.nil_node;)e=t,r.less_than(t)?t=t.left:t=t.right;r.parent=e,r.less_than(e)?e.left=r:e.right=r}this.insert_fixup(r)}insert_fixup(r){let t,e;for(t=r;t!==this.root&&t.parent.color===H;)t.parent===t.parent.parent.left?(e=t.parent.parent.right,e.color===H?(t.parent.color=C,e.color=C,t.parent.parent.color=H,t=t.parent.parent):(t===t.parent.right&&(t=t.parent,this.rotate_left(t)),t.parent.color=C,t.parent.parent.color=H,this.rotate_right(t.parent.parent))):(e=t.parent.parent.left,e.color===H?(t.parent.color=C,e.color=C,t.parent.parent.color=H,t=t.parent.parent):(t===t.parent.left&&(t=t.parent,this.rotate_right(t)),t.parent.color=C,t.parent.parent.color=H,this.rotate_left(t.parent.parent)));this.root.color=C}tree_delete(r){let t,e;r.left===this.nil_node||r.right===this.nil_node?t=r:t=this.tree_successor(r),t.left!==this.nil_node?e=t.left:e=t.right,e.parent=t.parent,t===this.root?this.root=e:(t===t.parent.left?t.parent.left=e:t.parent.right=e,t.parent.update_max()),this.recalc_max(e),t!==r&&(r.copy_data(t),r.update_max(),this.recalc_max(r)),t.color===C&&this.delete_fixup(e)}delete_fixup(r){let t=r,e;for(;t!==this.root&&t.parent!=null&&t.color===C;)t===t.parent.left?(e=t.parent.right,e.color===H&&(e.color=C,t.parent.color=H,this.rotate_left(t.parent),e=t.parent.right),e.left.color===C&&e.right.color===C?(e.color=H,t=t.parent):(e.right.color===C&&(e.color=H,e.left.color=C,this.rotate_right(e),e=t.parent.right),e.color=t.parent.color,t.parent.color=C,e.right.color=C,this.rotate_left(t.parent),t=this.root)):(e=t.parent.left,e.color===H&&(e.color=C,t.parent.color=H,this.rotate_right(t.parent),e=t.parent.left),e.left.color===C&&e.right.color===C?(e.color=H,t=t.parent):(e.left.color===C&&(e.color=H,e.right.color=C,this.rotate_left(e),e=t.parent.left),e.color=t.parent.color,t.parent.color=C,e.left.color=C,this.rotate_right(t.parent),t=this.root));t.color=C}tree_search(r,t){if(!(r==null||r===this.nil_node))return t.equal_to(r)?r:t.less_than(r)?this.tree_search(r.left,t):this.tree_search(r.right,t)}tree_search_nearest_forward(r,t){let e,i=r;for(;i&&i!==this.nil_node;)i.less_than(t)?i.intersect(t)?(e=i,i=i.left):i=i.right:((!e||i.less_than(e))&&(e=i),i=i.left);return e||null}tree_search_interval(r,t,e){r!=null&&r!==this.nil_node&&(r.left!==this.nil_node&&!r.not_intersect_left_subtree(t)&&this.tree_search_interval(r.left,t,e),r.intersect(t)&&e.push(r),r.right!==this.nil_node&&!r.not_intersect_right_subtree(t)&&this.tree_search_interval(r.right,t,e))}tree_find_any_interval(r,t){let e=!1;return r!=null&&r!==this.nil_node&&(r.left!==this.nil_node&&!r.not_intersect_left_subtree(t)&&(e=this.tree_find_any_interval(r.left,t)),e||(e=r.intersect(t)),!e&&r.right!==this.nil_node&&!r.not_intersect_right_subtree(t)&&(e=this.tree_find_any_interval(r.right,t))),e}local_minimum(r){let t=r;for(;t.left!=null&&t.left!==this.nil_node;)t=t.left;return t}local_maximum(r){let t=r;for(;t.right!=null&&t.right!==this.nil_node;)t=t.right;return t}tree_successor(r){let t,e,i;if(r.right!==this.nil_node)t=this.local_minimum(r.right);else{for(e=r,i=r.parent;i!=null&&i.right===e;)e=i,i=i.parent;t=i}return t}rotate_left(r){let t=r.right;r.right=t.left,t.left!==this.nil_node&&(t.left.parent=r),t.parent=r.parent,r===this.root?this.root=t:r===r.parent.left?r.parent.left=t:r.parent.right=t,t.left=r,r.parent=t,r!=null&&r!==this.nil_node&&r.update_max(),t=r.parent,t!=null&&t!==this.nil_node&&t.update_max()}rotate_right(r){let t=r.left;r.left=t.right,t.right!==this.nil_node&&(t.right.parent=r),t.parent=r.parent,r===this.root?this.root=t:r===r.parent.left?r.parent.left=t:r.parent.right=t,t.right=r,r.parent=t,r!==null&&r!==this.nil_node&&r.update_max(),t=r.parent,t!=null&&t!==this.nil_node&&t.update_max()}tree_walk(r,t){r!=null&&r!==this.nil_node&&(this.tree_walk(r.left,t),t(r),this.tree_walk(r.right,t))}testRedBlackProperty(){let r=!0;return this.tree_walk(this.root,function(t){t.color===H&&(t.left.color===C&&t.right.color===C||(r=!1))}),r}testBlackHeightProperty(r){let t=0,e=0,i=0;if(r.color===C&&t++,r.left!==this.nil_node?e=this.testBlackHeightProperty(r.left):e=1,r.right!==this.nil_node?i=this.testBlackHeightProperty(r.right):i=1,e!==i)throw new Error("Red-black height property violated");return t+=e,t}}class Ft{constructor(r,t,e,i,a=!1){S(this,"_map");S(this,"_tree",new Map);S(this,"_dirty",!0);S(this,"_buildTree",()=>{if(!this._dirty||this._disableTree)return;const r=new Map;this._map.forEach((e,i)=>{e.forEach(a=>{for(let n=a.startColumn;n<=a.endColumn;n++){let l=r.get(n);l||(l=[],r.set(n,l)),l.push({startRow:a.startRow,endRow:a.endRow,ruleId:i})}})});const t=new Map;r.forEach((e,i)=>{const a=new Ot;e.forEach(n=>{a.insert([n.startRow,n.endRow],n.ruleId)}),t.set(i,a)}),this._tree=t,this._dirty=!1});S(this,"_debonceBuildTree",s.debounce(this._buildTree,0));this._unitId=t,this._subUnitId=e,this._univerInstanceService=i,this._disableTree=a,this._map=r,this._buildTree()}get _worksheet(){var r;return(r=this._univerInstanceService.getUnit(this._unitId,s.UniverInstanceType.UNIVER_SHEET))==null?void 0:r.getSheetBySheetId(this._subUnitId)}addRule(r){if(!this._worksheet)return;const t=r.uid,e=r.ranges.map(i=>s.Range.transformRange(i,this._worksheet));this._map.forEach((i,a)=>{const n=s.Rectangle.subtractMulti(i,e);n.length===0?this._map.delete(a):this._map.set(a,n)}),this._dirty=!0,this._map.set(t,e),this._debonceBuildTree()}removeRange(r){if(!this._worksheet)return;const t=r.map(e=>s.Range.transformRange(e,this._worksheet));this._map.forEach((e,i)=>{const a=s.Rectangle.subtractMulti(e,t);a.length===0?this._map.delete(i):this._map.set(i,a)}),this._dirty=!0,this._debonceBuildTree()}removeRule(r){this._map.delete(r.uid),this._dirty=!0,this._debonceBuildTree()}updateRange(r,t){if(!this._worksheet)return;this._map.delete(r);const e=t.map(i=>s.Range.transformRange(i,this._worksheet));this._map.forEach((i,a)=>{const n=s.Rectangle.subtractMulti(i,e);n.length===0?this._map.delete(a):this._map.set(a,n)}),this._map.set(r,e),this._dirty=!0,this._debonceBuildTree()}addRangeRules(r){r.forEach(({id:t,ranges:e})=>{if(!e.length)return;let i=this._map.get(t);i?(this._map.set(t,s.Rectangle.mergeRanges([...i,...e])),i=this._map.get(t)):(i=e,this._map.set(t,i)),this._map.forEach((a,n)=>{if(n===t)return;const l=s.Rectangle.subtractMulti(a,e);l.length===0?this._map.delete(n):this._map.set(n,l)})}),this._dirty=!0,this._debonceBuildTree()}diff(r){const t=[];let e=0;return r.forEach((i,a)=>{var u;const n=(u=this._map.get(i.uid))!=null?u:[],l=i.ranges;n.length!==0&&(n.length!==l.length||n.some((d,c)=>!s.Rectangle.equals(d,l[c])))&&t.push({type:"update",ruleId:i.uid,oldRanges:l,newRanges:s.Rectangle.sort(n),rule:i}),n.length===0&&(t.push({type:"delete",rule:i,index:a-e}),e++)}),t}diffWithAddition(r,t){const e=[];let i=0;return r.forEach((a,n)=>{var d;const l=(d=this._map.get(a.uid))!=null?d:[],u=a.ranges;l.length!==0&&(l.length!==u.length||l.some((c,h)=>!s.Rectangle.equals(c,u[h])))&&e.push({type:"update",ruleId:a.uid,oldRanges:u,newRanges:s.Rectangle.sort(l),rule:a}),l.length===0&&(e.push({type:"delete",rule:a,index:n-i}),i++)}),Array.from(t).forEach(a=>{var l;const n=(l=this._map.get(a.uid))!=null?l:[];e.push({type:"add",rule:{...a,ranges:s.Rectangle.sort(n)}})}),e}clone(){return new Ft(new Map(s.Tools.deepClone(Array.from(this._map.entries()))),this._unitId,this._subUnitId,this._univerInstanceService,!0)}getValue(r,t){this._dirty&&this._buildTree();const e=this._tree.get(t);if(!e)return;const i=e.search([r,r]);return i.length>0?i[0]:void 0}}var fe=Object.defineProperty,pe=Object.getOwnPropertyDescriptor,ge=(o,r,t,e)=>{for(var i=e>1?void 0:e?pe(r,t):r,a=o.length-1,n;a>=0;a--)(n=o[a])&&(i=(e?n(r,t,i):n(i))||i);return e&&i&&fe(r,t,i),i},J=(o,r)=>(t,e)=>r(t,e,o);m.SheetDataValidationModel=class extends s.Disposable{constructor(t,e,i,a,n,l,u){super();S(this,"_ruleMatrixMap",new Map);S(this,"_validStatusChange$",new it.Subject);S(this,"_ruleChange$",new it.Subject);S(this,"ruleChange$",this._ruleChange$.asObservable());S(this,"validStatusChange$",this._validStatusChange$.asObservable());this._dataValidationModel=t,this._univerInstanceService=e,this._dataValidatorRegistryService=i,this._dataValidationCacheService=a,this._dataValidationFormulaService=n,this._dataValidationCustomFormulaService=l,this._commandService=u,this._initRuleUpdateListener(),this.disposeWithMe(()=>{this._ruleChange$.complete(),this._validStatusChange$.complete()}),this._initUniverInstanceListener()}_initUniverInstanceListener(){this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(t=>{this._ruleMatrixMap.delete(t.getUnitId())})),this.disposeWithMe(this._commandService.onCommandExecuted(t=>{if(t.id===$.RemoveSheetMutation.id){const{unitId:e,subUnitId:i}=t.params,a=this._ruleMatrixMap.get(e);a&&a.delete(i)}}))}_initRuleUpdateListener(){const t=this._dataValidationModel.getAll();for(const[e,i]of t)for(const[a,n]of i)for(const l of n)this._addRule(e,a,l),this._ruleChange$.next({type:"add",unitId:e,subUnitId:a,rule:l,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(t,e){let i=this._ruleMatrixMap.get(t);i||(i=new Map,this._ruleMatrixMap.set(t,i));let a=i.get(e);return a||(a=new Ft(new Map,t,e,this._univerInstanceService),i.set(e,a)),a}_addRuleSideEffect(t,e,i){this._ensureRuleMatrix(t,e).addRule(i),this._dataValidationCacheService.addRule(t,e,i),this._dataValidationFormulaService.addRule(t,e,i.uid,i.formula1,i.formula2,i.ranges),i.type===s.DataValidationType.CUSTOM&&this._dataValidationCustomFormulaService.addRule(t,e,i)}_addRule(t,e,i){(Array.isArray(i)?i:[i]).forEach(n=>{this._addRuleSideEffect(t,e,n)})}_updateRule(t,e,i,a,n){const l=this._ensureRuleMatrix(t,e);n.type===g.UpdateRuleType.RANGE?(l.updateRange(i,n.payload),this._dataValidationCacheService.updateRuleRanges(t,e,i,n.payload,a.ranges),a.type===s.DataValidationType.CUSTOM&&(this._dataValidationCustomFormulaService.deleteByRuleId(t,e,i),this._dataValidationCustomFormulaService.addRule(t,e,{...a,ranges:n.payload}))):n.type===g.UpdateRuleType.SETTING&&(this._dataValidationCacheService.markRangeDirty(t,e,a.ranges),this._dataValidationFormulaService.updateRuleFormulaText(t,e,i,n.payload.formula1,n.payload.formula2,a.ranges),a.type===s.DataValidationType.CUSTOM?(this._dataValidationCustomFormulaService.deleteByRuleId(t,e,i),this._dataValidationCustomFormulaService.addRule(t,e,{...a,...n.payload})):n.payload.type===s.DataValidationType.CUSTOM&&this._dataValidationCustomFormulaService.addRule(t,e,{...a,...n.payload}))}_removeRule(t,e,i){this._ensureRuleMatrix(t,e).removeRule(i),this._dataValidationCacheService.removeRule(t,e,i),i.type===s.DataValidationType.CUSTOM&&this._dataValidationCustomFormulaService.deleteByRuleId(t,e,i.uid)}getValidator(t){return this._dataValidatorRegistryService.getValidatorItem(t)}getRuleIdByLocation(t,e,i,a){return this._ensureRuleMatrix(t,e).getValue(i,a)}getRuleByLocation(t,e,i,a){const n=this.getRuleIdByLocation(t,e,i,a);if(n)return this._dataValidationModel.getRuleById(t,e,n)}validator(t,e,i){const{col:a,row:n,unitId:l,subUnitId:u,worksheet:d}=e,c=t.uid,h=t.formula1,f=t.formula2,R=(U,w)=>{i&&i(U,w),w&&this._validStatusChange$.next({unitId:l,subUnitId:u,ruleId:t.uid,status:U,row:n,col:a})},V=d.getCellValueOnly(n,a),O=this.getValidator(t.type),I=d.getCellRaw(n,a),M=K(I),b=K(V);if(O){const U=this._dataValidationCacheService.ensureCache(l,u),w=U.getValue(n,a);return!w||w.value!==M||w.interceptValue!==b||w.ruleId!==c||w.formula1!==h||w.formula2!==f?(U.setValue(n,a,{value:M,interceptValue:b,status:s.DataValidationStatus.VALIDATING,ruleId:c,formula1:h||"",formula2:f||""}),O.validator({value:M,unitId:l,subUnitId:u,row:n,column:a,worksheet:e.worksheet,workbook:e.workbook,interceptValue:K(V),t:I==null?void 0:I.t},t).then(B=>{const x=B?s.DataValidationStatus.VALID:s.DataValidationStatus.INVALID;U.setValue(n,a,{value:M,status:x,ruleId:c,interceptValue:b,formula1:h||"",formula2:f||""}),R(x,!0)}),s.DataValidationStatus.VALIDATING):(R(w.status,!1),w.status)}else return R(s.DataValidationStatus.VALID,!1),s.DataValidationStatus.VALID}getRuleErrorMsg(t,e,i){const a=this._dataValidationModel.getRuleById(t,e,i);if(!a)return"";const n=this._dataValidatorRegistryService.getValidatorItem(a.type);return a.error?a.error:n?n.getRuleFinalError(a):""}getRuleObjectMatrix(t,e){return this._ensureRuleMatrix(t,e)}getRuleById(t,e,i){return this._dataValidationModel.getRuleById(t,e,i)}getRuleIndex(t,e,i){return this._dataValidationModel.getRuleIndex(t,e,i)}getRules(t,e){return[...this._dataValidationModel.getRules(t,e)]}getUnitRules(t){return this._dataValidationModel.getUnitRules(t)}deleteUnitRules(t){return this._dataValidationModel.deleteUnitRules(t)}getSubUnitIds(t){return this._dataValidationModel.getSubUnitIds(t)}getAll(){return this._dataValidationModel.getAll()}},m.SheetDataValidationModel=ge([J(0,s.Inject(g.DataValidationModel)),J(1,s.IUniverInstanceService),J(2,s.Inject(g.DataValidatorRegistryService)),J(3,s.Inject(m.DataValidationCacheService)),J(4,s.Inject(m.DataValidationFormulaService)),J(5,s.Inject(m.DataValidationCustomFormulaService)),J(6,s.ICommandService)],m.SheetDataValidationModel);const lt=1,ut=0;function Bt(o,r){return s.Tools.isBlank(o)?r.t("dataValidation.validFail.value"):s.isFormulaString(o)?r.t("dataValidation.validFail.primitive"):""}const dt=o=>s.Tools.isDefine(o)&&String(o).toLowerCase()==="true"?"1":String(o).toLowerCase()==="false"?"0":o;class jt extends g.BaseDataValidator{constructor(){super(...arguments);S(this,"id",s.DataValidationType.CHECKBOX);S(this,"title","dataValidation.checkbox.title");S(this,"operators",[]);S(this,"scopes",["sheet"]);S(this,"_formulaService",this.injector.get(m.DataValidationFormulaService));S(this,"skipDefaultFontRender",(t,e,i)=>{const{unitId:a,subUnitId:n}=i,{formula1:l,formula2:u}=this.parseFormulaSync(t,a,n),d=`${e!=null?e:""}`;return!d||d===`${l}`||d===`${u}`})}validatorFormula(t,e,i){const{formula1:a,formula2:n}=t,l=a===n;if(s.Tools.isBlank(a)&&s.Tools.isBlank(n))return{success:!0};if(l)return{success:!1,formula1:this.localeService.t("dataValidation.validFail.checkboxEqual"),formula2:this.localeService.t("dataValidation.validFail.checkboxEqual")};const u=Bt(a,this.localeService),d=Bt(n,this.localeService);return{success:!u&&!d,formula1:u,formula2:d}}async parseFormula(t,e,i){var h,f,R,V;const{formula1:a=lt,formula2:n=ut}=t,l=await this._formulaService.getRuleFormulaResult(e,i,t.uid),u=s.isFormulaString(a)?W((f=(h=l==null?void 0:l[0])==null?void 0:h.result)==null?void 0:f[0][0]):a,d=s.isFormulaString(n)?W((V=(R=l==null?void 0:l[1])==null?void 0:R.result)==null?void 0:V[0][0]):n,c=P(String(u))&&P(String(d));return{formula1:dt(u),formula2:dt(d),originFormula1:u,originFormula2:d,isFormulaValid:c}}getExtraStyle(t,e){return{tb:s.WrapStrategy.CLIP}}parseFormulaSync(t,e,i){var h,f,R,V;const{formula1:a=lt,formula2:n=ut}=t,l=this._formulaService.getRuleFormulaResultSync(e,i,t.uid),u=s.isFormulaString(a)?W((f=(h=l==null?void 0:l[0])==null?void 0:h.result)==null?void 0:f[0][0]):a,d=s.isFormulaString(n)?W((V=(R=l==null?void 0:l[1])==null?void 0:R.result)==null?void 0:V[0][0]):n,c=P(String(u))&&P(String(d));return{formula1:dt(u),formula2:dt(d),originFormula1:u,originFormula2:d,isFormulaValid:c}}async isValidType(t,e,i){const{value:a,unitId:n,subUnitId:l}=t,{formula1:u,formula2:d,originFormula1:c,originFormula2:h}=await this.parseFormula(i,n,l);return!s.Tools.isDefine(u)||!s.Tools.isDefine(d)?!0:s.Tools.isDefine(a)&&(String(a)===String(u)||String(a)===String(d)||String(a)===String(c!=null?c:"")||String(a)===String(h!=null?h:""))}generateRuleErrorMessage(t){return this.localeService.t("dataValidation.checkbox.error")}}var _e=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ve(o){return o&&o.__esModule&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o}var Pt={exports:{}};(function(o,r){(function(t,e){o.exports=e()})(_e,function(){var t=1e3,e=6e4,i=36e5,a="millisecond",n="second",l="minute",u="hour",d="day",c="week",h="month",f="quarter",R="year",V="date",O="Invalid Date",I=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,M=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,b={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(y){var _=["th","st","nd","rd"],p=y%100;return"["+y+(_[(p-20)%10]||_[p]||_[0])+"]"}},U=function(y,_,p){var D=String(y);return!D||D.length>=_?y:""+Array(_+1-D.length).join(p)+y},w={s:U,z:function(y){var _=-y.utcOffset(),p=Math.abs(_),D=Math.floor(p/60),v=p%60;return(_<=0?"+":"-")+U(D,2,"0")+":"+U(v,2,"0")},m:function y(_,p){if(_.date()<p.date())return-y(p,_);var D=12*(p.year()-_.year())+(p.month()-_.month()),v=_.clone().add(D,h),T=p-v<0,N=_.clone().add(D+(T?-1:1),h);return+(-(D+(p-v)/(T?v-N:N-v))||0)},a:function(y){return y<0?Math.ceil(y)||0:Math.floor(y)},p:function(y){return{M:h,y:R,w:c,d,D:V,h:u,m:l,s:n,ms:a,Q:f}[y]||String(y||"").toLowerCase().replace(/s$/,"")},u:function(y){return y===void 0}},B="en",x={};x[B]=b;var X="$isDayjsObject",tt=function(y){return y instanceof st||!(!y||!y[X])},Y=function y(_,p,D){var v;if(!_)return B;if(typeof _=="string"){var T=_.toLowerCase();x[T]&&(v=T),p&&(x[T]=p,v=T);var N=_.split("-");if(!v&&N.length>1)return y(N[0])}else{var E=_.name;x[E]=_,v=E}return!D&&v&&(B=v),v||!D&&B},L=function(y,_){if(tt(y))return y.clone();var p=typeof _=="object"?_:{};return p.date=y,p.args=arguments,new st(p)},F=w;F.l=Y,F.i=tt,F.w=function(y,_){return L(y,{locale:_.$L,utc:_.$u,x:_.$x,$offset:_.$offset})};var st=function(){function y(p){this.$L=Y(p.locale,null,!0),this.parse(p),this.$x=this.$x||p.x||{},this[X]=!0}var _=y.prototype;return _.parse=function(p){this.$d=function(D){var v=D.date,T=D.utc;if(v===null)return new Date(NaN);if(F.u(v))return new Date;if(v instanceof Date)return new Date(v);if(typeof v=="string"&&!/Z$/i.test(v)){var N=v.match(I);if(N){var E=N[2]-1||0,A=(N[7]||"0").substring(0,3);return T?new Date(Date.UTC(N[1],E,N[3]||1,N[4]||0,N[5]||0,N[6]||0,A)):new Date(N[1],E,N[3]||1,N[4]||0,N[5]||0,N[6]||0,A)}}return new Date(v)}(p),this.init()},_.init=function(){var p=this.$d;this.$y=p.getFullYear(),this.$M=p.getMonth(),this.$D=p.getDate(),this.$W=p.getDay(),this.$H=p.getHours(),this.$m=p.getMinutes(),this.$s=p.getSeconds(),this.$ms=p.getMilliseconds()},_.$utils=function(){return F},_.isValid=function(){return this.$d.toString()!==O},_.isSame=function(p,D){var v=L(p);return this.startOf(D)<=v&&v<=this.endOf(D)},_.isAfter=function(p,D){return L(p)<this.startOf(D)},_.isBefore=function(p,D){return this.endOf(D)<L(p)},_.$g=function(p,D,v){return F.u(p)?this[D]:this.set(v,p)},_.unix=function(){return Math.floor(this.valueOf()/1e3)},_.valueOf=function(){return this.$d.getTime()},_.startOf=function(p,D){var v=this,T=!!F.u(D)||D,N=F.p(p),E=function(at,q){var z=F.w(v.$u?Date.UTC(v.$y,q,at):new Date(v.$y,q,at),v);return T?z:z.endOf(d)},A=function(at,q){return F.w(v.toDate()[at].apply(v.toDate("s"),(T?[0,0,0,0]:[23,59,59,999]).slice(q)),v)},j=this.$W,k=this.$M,G=this.$D,ot="set"+(this.$u?"UTC":"");switch(N){case R:return T?E(1,0):E(31,11);case h:return T?E(1,k):E(0,k+1);case c:var et=this.$locale().weekStart||0,ft=(j<et?j+7:j)-et;return E(T?G-ft:G+(6-ft),k);case d:case V:return A(ot+"Hours",0);case u:return A(ot+"Minutes",1);case l:return A(ot+"Seconds",2);case n:return A(ot+"Milliseconds",3);default:return this.clone()}},_.endOf=function(p){return this.startOf(p,!1)},_.$set=function(p,D){var v,T=F.p(p),N="set"+(this.$u?"UTC":""),E=(v={},v[d]=N+"Date",v[V]=N+"Date",v[h]=N+"Month",v[R]=N+"FullYear",v[u]=N+"Hours",v[l]=N+"Minutes",v[n]=N+"Seconds",v[a]=N+"Milliseconds",v)[T],A=T===d?this.$D+(D-this.$W):D;if(T===h||T===R){var j=this.clone().set(V,1);j.$d[E](A),j.init(),this.$d=j.set(V,Math.min(this.$D,j.daysInMonth())).$d}else E&&this.$d[E](A);return this.init(),this},_.set=function(p,D){return this.clone().$set(p,D)},_.get=function(p){return this[F.p(p)]()},_.add=function(p,D){var v,T=this;p=Number(p);var N=F.p(D),E=function(k){var G=L(T);return F.w(G.date(G.date()+Math.round(k*p)),T)};if(N===h)return this.set(h,this.$M+p);if(N===R)return this.set(R,this.$y+p);if(N===d)return E(1);if(N===c)return E(7);var A=(v={},v[l]=e,v[u]=i,v[n]=t,v)[N]||1,j=this.$d.getTime()+p*A;return F.w(j,this)},_.subtract=function(p,D){return this.add(-1*p,D)},_.format=function(p){var D=this,v=this.$locale();if(!this.isValid())return v.invalidDate||O;var T=p||"YYYY-MM-DDTHH:mm:ssZ",N=F.z(this),E=this.$H,A=this.$m,j=this.$M,k=v.weekdays,G=v.months,ot=v.meridiem,et=function(q,z,pt,Tt){return q&&(q[z]||q(D,T))||pt[z].slice(0,Tt)},ft=function(q){return F.s(E%12||12,q,"0")},at=ot||function(q,z,pt){var Tt=q<12?"AM":"PM";return pt?Tt.toLowerCase():Tt};return T.replace(M,function(q,z){return z||function(pt){switch(pt){case"YY":return String(D.$y).slice(-2);case"YYYY":return F.s(D.$y,4,"0");case"M":return j+1;case"MM":return F.s(j+1,2,"0");case"MMM":return et(v.monthsShort,j,G,3);case"MMMM":return et(G,j);case"D":return D.$D;case"DD":return F.s(D.$D,2,"0");case"d":return String(D.$W);case"dd":return et(v.weekdaysMin,D.$W,k,2);case"ddd":return et(v.weekdaysShort,D.$W,k,3);case"dddd":return k[D.$W];case"H":return String(E);case"HH":return F.s(E,2,"0");case"h":return ft(1);case"hh":return ft(2);case"a":return at(E,A,!0);case"A":return at(E,A,!1);case"m":return String(A);case"mm":return F.s(A,2,"0");case"s":return String(D.$s);case"ss":return F.s(D.$s,2,"0");case"SSS":return F.s(D.$ms,3,"0");case"Z":return N}return null}(q)||N.replace(":","")})},_.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},_.diff=function(p,D,v){var T,N=this,E=F.p(D),A=L(p),j=(A.utcOffset()-this.utcOffset())*e,k=this-A,G=function(){return F.m(N,A)};switch(E){case R:T=G()/12;break;case h:T=G();break;case f:T=G()/3;break;case c:T=(k-j)/6048e5;break;case d:T=(k-j)/864e5;break;case u:T=k/i;break;case l:T=k/e;break;case n:T=k/t;break;default:T=k}return v?T:F.a(T)},_.daysInMonth=function(){return this.endOf(h).$D},_.$locale=function(){return x[this.$L]},_.locale=function(p,D){if(!p)return this.$L;var v=this.clone(),T=Y(p,D,!0);return T&&(v.$L=T),v},_.clone=function(){return F.w(this.$d,this)},_.toDate=function(){return new Date(this.valueOf())},_.toJSON=function(){return this.isValid()?this.toISOString():null},_.toISOString=function(){return this.$d.toISOString()},_.toString=function(){return this.$d.toUTCString()},y}(),Mt=st.prototype;return L.prototype=Mt,[["$ms",a],["$s",n],["$m",l],["$H",u],["$W",d],["$M",h],["$y",R],["$D",V]].forEach(function(y){Mt[y[1]]=function(_){return this.$g(_,y[0],y[1])}}),L.extend=function(y,_){return y.$i||(y(_,st,L),y.$i=!0),L},L.locale=Y,L.isDayjs=tt,L.unix=function(y){return L(1e3*y)},L.en=x[B],L.Ls=x,L.p={},L})})(Pt);var Se=Pt.exports;const Ht=ve(Se),Re={[s.DataValidationOperator.BETWEEN]:"dataValidation.date.operators.between",[s.DataValidationOperator.EQUAL]:"dataValidation.date.operators.equal",[s.DataValidationOperator.GREATER_THAN]:"dataValidation.date.operators.greaterThan",[s.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.operators.greaterThanOrEqual",[s.DataValidationOperator.LESS_THAN]:"dataValidation.date.operators.lessThan",[s.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.operators.lessThanOrEqual",[s.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.operators.notBetween",[s.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.operators.notEqual"};s.DataValidationOperator.BETWEEN+"",s.DataValidationOperator.EQUAL+"",s.DataValidationOperator.GREATER_THAN+"",s.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",s.DataValidationOperator.LESS_THAN+"",s.DataValidationOperator.LESS_THAN_OR_EQUAL+"",s.DataValidationOperator.NOT_BETWEEN+"",s.DataValidationOperator.NOT_EQUAL+"";const Ve={[s.DataValidationOperator.BETWEEN]:"dataValidation.date.ruleName.between",[s.DataValidationOperator.EQUAL]:"dataValidation.date.ruleName.equal",[s.DataValidationOperator.GREATER_THAN]:"dataValidation.date.ruleName.greaterThan",[s.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.ruleName.greaterThanOrEqual",[s.DataValidationOperator.LESS_THAN]:"dataValidation.date.ruleName.lessThan",[s.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.ruleName.lessThanOrEqual",[s.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.ruleName.notBetween",[s.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.ruleName.notEqual"},De={[s.DataValidationOperator.BETWEEN]:"dataValidation.date.errorMsg.between",[s.DataValidationOperator.EQUAL]:"dataValidation.date.errorMsg.equal",[s.DataValidationOperator.GREATER_THAN]:"dataValidation.date.errorMsg.greaterThan",[s.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.errorMsg.greaterThanOrEqual",[s.DataValidationOperator.LESS_THAN]:"dataValidation.date.errorMsg.lessThan",[s.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.errorMsg.lessThanOrEqual",[s.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.errorMsg.notBetween",[s.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.errorMsg.notEqual"},vt=[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.NOT_BETWEEN],xt="{FORMULA1}",kt="{FORMULA2}",ct=o=>{var t,e;if(o==null||typeof o=="boolean")return;if(typeof o=="number"||!Number.isNaN(+o))return+o;const r=(t=s.numfmt.parseDate(o))==null?void 0:t.v;return s.Tools.isDefine(r)?r:(e=s.numfmt.parseDate(Ht(o).format("YYYY-MM-DD HH:mm:ss")))==null?void 0:e.v};class Wt extends g.BaseDataValidator{constructor(){super(...arguments);S(this,"id",s.DataValidationType.DATE);S(this,"title","dataValidation.date.title");S(this,"operators",[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.EQUAL,s.DataValidationOperator.GREATER_THAN,s.DataValidationOperator.GREATER_THAN_OR_EQUAL,s.DataValidationOperator.LESS_THAN,s.DataValidationOperator.LESS_THAN_OR_EQUAL,s.DataValidationOperator.NOT_BETWEEN,s.DataValidationOperator.NOT_EQUAL]);S(this,"scopes",["sheet"]);S(this,"_formulaService",this.injector.get(m.DataValidationFormulaService))}async parseFormula(t,e,i){var h,f,R,V;const a=await this._formulaService.getRuleFormulaResult(e,i,t.uid),{formula1:n,formula2:l}=t,u=W((f=(h=a==null?void 0:a[0])==null?void 0:h.result)==null?void 0:f[0][0]),d=W((V=(R=a==null?void 0:a[1])==null?void 0:R.result)==null?void 0:V[0][0]),c=P(String(u))&&P(String(d));return{formula1:ct(s.isFormulaString(n)?u:n),formula2:ct(s.isFormulaString(l)?d:l),isFormulaValid:c}}parseFormulaSync(t,e,i){var u,d,c,h;const a=this._formulaService.getRuleFormulaResultSync(e,i,t.uid),{formula1:n,formula2:l}=t;return{formula1:ct(s.isFormulaString(n)?W((d=(u=a==null?void 0:a[0])==null?void 0:u.result)==null?void 0:d[0][0]):n),formula2:ct(s.isFormulaString(l)?W((h=(c=a==null?void 0:a[1])==null?void 0:c.result)==null?void 0:h[0][0]):l)}}async isValidType(t){const{interceptValue:e,value:i}=t;return typeof i=="number"&&typeof e=="string"?!0:typeof e=="string"?!!s.numfmt.parseDate(e):!1}_validatorSingleFormula(t){return!s.Tools.isBlank(t)&&(s.isFormulaString(t)||!Number.isNaN(+t)||!!(t&&s.numfmt.parseDate(t)))}validatorFormula(t,e,i){const a=t.operator;if(!a)return{success:!1};const n=this._validatorSingleFormula(t.formula1),l=this.localeService.t("dataValidation.validFail.date");if(vt.includes(a)){const d=this._validatorSingleFormula(t.formula2);return{success:n&&d,formula1:n?void 0:l,formula2:d?void 0:l}}return{success:n,formula1:n?void 0:l}}normalizeFormula(t,e,i){const{formula1:a,formula2:n,bizInfo:l}=t,u=d=>{var h;if(!d)return d;let c;if(!Number.isNaN(+d))c=s.numfmt.dateFromSerial(+d);else{const f=(h=s.numfmt.parseDate(d))==null?void 0:h.v;if(f==null)return"";c=s.numfmt.dateFromSerial(f)}return Ht(`${c[0]}/${c[1]}/${c[2]} ${c[3]}:${c[4]}:${c[5]}`).format(l!=null&&l.showTime?"YYYY-MM-DD HH:mm:ss":"YYYY-MM-DD")};return{formula1:s.isFormulaString(a)?a:u(`${a}`),formula2:s.isFormulaString(n)?n:u(`${n}`)}}transform(t,e,i){const{value:a}=t;return{...t,value:ct(a)}}async validatorIsEqual(t,e,i){const{formula1:a}=e,{value:n}=t;return Number.isNaN(a)?!0:n===a}async validatorIsNotEqual(t,e,i){const{formula1:a}=e;return Number.isNaN(a)?!0:t.value!==a}async validatorIsBetween(t,e,i){const{formula1:a,formula2:n}=e;if(Number.isNaN(a)||Number.isNaN(n))return!0;const l=Math.min(a,n),u=Math.max(a,n);return t.value>=l&&t.value<=u}async validatorIsNotBetween(t,e,i){const{formula1:a,formula2:n}=e;if(Number.isNaN(a)||Number.isNaN(n))return!0;const l=Math.min(a,n),u=Math.max(a,n);return t.value<l||t.value>u}async validatorIsGreaterThan(t,e,i){const{formula1:a}=e;return Number.isNaN(a)?!0:t.value>a}async validatorIsGreaterThanOrEqual(t,e,i){const{formula1:a}=e;return Number.isNaN(a)?!0:t.value>=a}async validatorIsLessThan(t,e,i){const{formula1:a}=e;return Number.isNaN(a)?!0:t.value<a}async validatorIsLessThanOrEqual(t,e,i){const{formula1:a}=e;return Number.isNaN(a)?!0:t.value<=a}get operatorNames(){return this.operators.map(t=>this.localeService.t(Re[t]))}generateRuleName(t){var i,a;if(!t.operator)return this.titleStr;const e=this.localeService.t(Ve[t.operator]).replace(xt,(i=t.formula1)!=null?i:"").replace(kt,(a=t.formula2)!=null?a:"");return`${this.titleStr} ${e}`}generateRuleErrorMessage(t){var i,a;return t.operator?`${this.localeService.t(De[t.operator]).replace(xt,(i=t.formula1)!=null?i:"").replace(kt,(a=t.formula2)!=null?a:"")}`:this.titleStr}}function St(o){let r=o;return typeof o=="string"?((o.startsWith("¥")||o.startsWith("$"))&&(r=o.slice(1)),+r):+o}class ye extends g.BaseDataValidator{constructor(){super(...arguments);S(this,"_formulaService",this.injector.get(m.DataValidationFormulaService));S(this,"id",s.DataValidationType.DECIMAL);S(this,"title","dataValidation.decimal.title");S(this,"operators",[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.EQUAL,s.DataValidationOperator.GREATER_THAN,s.DataValidationOperator.GREATER_THAN_OR_EQUAL,s.DataValidationOperator.LESS_THAN,s.DataValidationOperator.LESS_THAN_OR_EQUAL,s.DataValidationOperator.NOT_BETWEEN,s.DataValidationOperator.NOT_EQUAL]);S(this,"scopes",["sheet"])}_isFormulaOrNumber(t){return!s.Tools.isBlank(t)&&(s.isFormulaString(t)||!Number.isNaN(+t))}async isValidType(t,e,i){const{value:a}=t;return!Number.isNaN(St(a))}transform(t,e,i){const{value:a}=t;return{...t,value:St(a)}}_parseNumber(t){return t==null?Number.NaN:+t}async parseFormula(t,e,i){var f,R,V,O;const a=await this._formulaService.getRuleFormulaResult(e,i,t.uid),{formula1:n,formula2:l}=t,u=W((R=(f=a==null?void 0:a[0])==null?void 0:f.result)==null?void 0:R[0][0]),d=W((O=(V=a==null?void 0:a[1])==null?void 0:V.result)==null?void 0:O[0][0]),c=P(String(u))&&P(String(d));return{formula1:this._parseNumber(s.isFormulaString(n)?u:n),formula2:this._parseNumber(s.isFormulaString(l)?d:l),isFormulaValid:c}}validatorFormula(t,e,i){const a=t.operator;if(!a)return{success:!1};const n=s.Tools.isDefine(t.formula1)&&this._isFormulaOrNumber(t.formula1),l=s.Tools.isDefine(t.formula2)&&this._isFormulaOrNumber(t.formula2),u=vt.includes(a),d=this.localeService.t("dataValidation.validFail.number");return u?{success:n&&l,formula1:n?void 0:d,formula2:l?void 0:d}:{success:n,formula1:n?"":d}}async validatorIsEqual(t,e,i){const{formula1:a}=e,{value:n}=t;return Number.isNaN(a)?!0:n===a}async validatorIsNotEqual(t,e,i){const{formula1:a}=e;return Number.isNaN(a)?!0:t.value!==a}async validatorIsBetween(t,e,i){const{formula1:a,formula2:n}=e;if(Number.isNaN(a)||Number.isNaN(n))return!0;const l=Math.min(a,n),u=Math.max(a,n);return t.value>=l&&t.value<=u}async validatorIsNotBetween(t,e,i){const{formula1:a,formula2:n}=e;if(Number.isNaN(a)||Number.isNaN(n))return!0;const l=Math.min(a,n),u=Math.max(a,n);return t.value<l||t.value>u}async validatorIsGreaterThan(t,e,i){const{formula1:a}=e;return Number.isNaN(a)?!0:t.value>a}async validatorIsGreaterThanOrEqual(t,e,i){const{formula1:a}=e;return Number.isNaN(a)?!0:t.value>=a}async validatorIsLessThan(t,e,i){const{formula1:a}=e;return Number.isNaN(a)?!0:t.value<a}async validatorIsLessThanOrEqual(t,e,i){const{formula1:a}=e;return Number.isNaN(a)?!0:t.value<=a}}function Me(o){return o.filter(Boolean).join(",")}function ht(o){return o.split(",").filter(Boolean)}function Te(o){const r=K(o);return r==null?"":r.toString()}function Ct(o){if(!o)return[];const r=new Set;return o.forEach(t=>{t.forEach(e=>{var a,n;const i=K(e);if(i!=null){if(typeof i!="string"&&typeof(e==null?void 0:e.s)=="object"&&((n=(a=e.s)==null?void 0:a.n)!=null&&n.pattern)){r.add(s.numfmt.format(e.s.n.pattern,i,{throws:!1}));return}P(i.toString())&&r.add(i.toString())}})}),[...r]}const Ne=["if","indirect","choose","offset"];function Oe(o,r){if(!s.isFormulaString(o)||Q.isReferenceString(o.slice(1)))return!0;const e=r.sequenceNodesBuilder(o);return e&&e.some(i=>typeof i=="object"&&i.nodeType===Q.sequenceNodeType.FUNCTION&&Ne.indexOf(i.token.toLowerCase())>-1)}function Fe(o,r){const{formula1:t="",ranges:e}=o;if(Q.isReferenceString(t.slice(1))){const a=Q.deserializeRangeWithSheet(t.slice(1));if((!a.sheetName||a.sheetName===r)&&e.some(n=>s.Rectangle.intersects(n,a.range)))return!0}return!1}class It extends g.BaseDataValidator{constructor(){super(...arguments);S(this,"formulaService",this.injector.get(m.DataValidationFormulaService));S(this,"_lexer",this.injector.get(Q.LexerTreeBuilder));S(this,"_univerInstanceService",this.injector.get(s.IUniverInstanceService));S(this,"id",s.DataValidationType.LIST);S(this,"title","dataValidation.list.title");S(this,"operators",[]);S(this,"scopes",["sheet"]);S(this,"skipDefaultFontRender",t=>t.renderMode!==s.DataValidationRenderMode.TEXT)}validatorFormula(t,e,i){var d,c,h;const a=!s.Tools.isBlank(t.formula1),n=Oe((d=t.formula1)!=null?d:"",this._lexer),l=(h=(c=this._univerInstanceService.getUnit(e,s.UniverInstanceType.UNIVER_SHEET))==null?void 0:c.getSheetBySheetId(i))==null?void 0:h.getName(),u=Fe(t,l!=null?l:"");return{success:!!(a&&n&&!u),formula1:a?n?u?this.localeService.t("dataValidation.validFail.listIntersects"):void 0:this.localeService.t("dataValidation.validFail.listInvalid"):this.localeService.t("dataValidation.validFail.list")}}getExtraStyle(t,e,{style:i}){var n;const a=(n=i.tb!==s.WrapStrategy.OVERFLOW?i.tb:s.WrapStrategy.CLIP)!=null?n:s.WrapStrategy.WRAP;if(t.type===s.DataValidationType.LIST&&(t.renderMode===s.DataValidationRenderMode.ARROW||t.renderMode===s.DataValidationRenderMode.TEXT)){const l=this.getListWithColorMap(t),u=`${e!=null?e:""}`,d=l[u];if(d)return{bg:{rgb:d},tb:a}}return{tb:a}}parseCellValue(t){const e=t.toString();return ht(e)}async parseFormula(t,e,i){var d,c,h,f;const{formula1:a=""}=t,n=await this.formulaService.getRuleFormulaResult(e,i,t.uid),l=W((c=(d=n==null?void 0:n[0])==null?void 0:d.result)==null?void 0:c[0][0]),u=P(String(l));return{formula1:s.isFormulaString(a)?Ct((f=(h=n==null?void 0:n[0])==null?void 0:h.result)==null?void 0:f[0][0]):ht(a),formula2:void 0,isFormulaValid:u}}async isValidType(t,e,i){const{value:a}=t,{formula1:n=[]}=e;return this.parseCellValue(a).every(u=>n.includes(u))}generateRuleName(){return this.localeService.t("dataValidation.list.name")}generateRuleErrorMessage(){return this.localeService.t("dataValidation.list.error")}getList(t,e,i){var f,R,V,O;const{formula1:a=""}=t,n=this.injector.get(s.IUniverInstanceService),l=(f=e?n.getUniverSheetInstance(e):void 0)!=null?f:n.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!l)return[];const u=(R=i?l.getSheetBySheetId(i):void 0)!=null?R:l.getActiveSheet();if(!u)return[];const d=l.getUnitId(),c=u.getSheetId(),h=this.formulaService.getRuleFormulaResultSync(d,c,t.uid);return s.isFormulaString(a)?Ct((O=(V=h==null?void 0:h[0])==null?void 0:V.result)==null?void 0:O[0][0]):ht(a)}async getListAsync(t,e,i){var f,R,V,O;const{formula1:a=""}=t,n=this.injector.get(s.IUniverInstanceService),l=(f=e?n.getUniverSheetInstance(e):void 0)!=null?f:n.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);if(!l)return[];const u=(R=i?l.getSheetBySheetId(i):void 0)!=null?R:l.getActiveSheet();if(!u)return[];const d=l.getUnitId(),c=u.getSheetId(),h=await this.formulaService.getRuleFormulaResult(d,c,t.uid);return s.isFormulaString(a)?Ct((O=(V=h==null?void 0:h[0])==null?void 0:V.result)==null?void 0:O[0][0]):ht(a)}getListWithColor(t,e,i){const a=this.getList(t,e,i),n=(t.formula2||"").split(",");return a.map((l,u)=>({label:l,color:n[u]}))}getListWithColorMap(t,e,i){const a=this.getListWithColor(t,e,i),n={};return a.forEach(l=>{l.color&&(n[l.label]=l.color)}),n}}const Ce="{FORMULA1}",Ie="{FORMULA2}";class we extends g.BaseDataValidator{constructor(){super(...arguments);S(this,"id",s.DataValidationType.TEXT_LENGTH);S(this,"title","dataValidation.textLength.title");S(this,"operators",[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.EQUAL,s.DataValidationOperator.GREATER_THAN,s.DataValidationOperator.GREATER_THAN_OR_EQUAL,s.DataValidationOperator.LESS_THAN,s.DataValidationOperator.LESS_THAN_OR_EQUAL,s.DataValidationOperator.NOT_BETWEEN,s.DataValidationOperator.NOT_EQUAL]);S(this,"scopes",["sheet"]);S(this,"_formulaService",this.injector.get(m.DataValidationFormulaService))}_isFormulaOrInt(t){return!s.Tools.isBlank(t)&&(s.isFormulaString(t)||!Number.isNaN(+t)&&Number.isInteger(+t))}validatorFormula(t,e,i){const a=t.operator;if(!a)return{success:!1};const n=s.Tools.isDefine(t.formula1)&&this._isFormulaOrInt(t.formula1),l=s.Tools.isDefine(t.formula2)&&this._isFormulaOrInt(t.formula2),u=vt.includes(a),d=this.localeService.t("dataValidation.validFail.number");return u?{success:n&&l,formula1:n?void 0:d,formula2:l?void 0:d}:{success:n,formula1:d}}_parseNumber(t){return t==null?Number.NaN:+t}_isValidFormula(t){return!Number.isNaN(t)}async parseFormula(t,e,i){var h,f,R,V;const a=await this._formulaService.getRuleFormulaResult(e,i,t.uid),{formula1:n,formula2:l}=t,u=W((f=(h=a==null?void 0:a[0])==null?void 0:h.result)==null?void 0:f[0][0]),d=W((V=(R=a==null?void 0:a[1])==null?void 0:R.result)==null?void 0:V[0][0]),c=P(String(u))&&P(String(d));return{formula1:this._parseNumber(s.isFormulaString(n)?u:n),formula2:this._parseNumber(s.isFormulaString(l)?d:l),isFormulaValid:c}}transform(t,e,i){return{...t,value:t.value.toString().length}}async isValidType(t,e,i){const{value:a}=t;return typeof a=="string"||typeof a=="number"}async validatorIsEqual(t,e,i){const{formula1:a}=e;return s.Tools.isDefine(a)?t.value===a:!1}async validatorIsNotEqual(t,e,i){const{formula1:a}=e;return s.Tools.isDefine(a)?t.value!==a:!1}async validatorIsBetween(t,e,i){const{formula1:a,formula2:n}=e,{value:l}=t;if(!this._isValidFormula(a)||!this._isValidFormula(n))return!1;const u=Math.max(a,n),d=Math.min(a,n);return l>=d&&l<=u}async validatorIsNotBetween(t,e,i){const{formula1:a,formula2:n}=e,{value:l}=t;if(!this._isValidFormula(a)||!this._isValidFormula(n))return!1;const u=Math.max(a,n),d=Math.min(a,n);return l<d||l>u}async validatorIsGreaterThan(t,e,i){const{formula1:a}=e,{value:n}=t;return this._isValidFormula(a)?n>a:!1}async validatorIsGreaterThanOrEqual(t,e,i){const{formula1:a}=e,{value:n}=t;return this._isValidFormula(a)?n>=a:!1}async validatorIsLessThan(t,e,i){const{formula1:a}=e,{value:n}=t;return this._isValidFormula(a)?n<a:!1}async validatorIsLessThanOrEqual(t,e,i){const{formula1:a}=e,{value:n}=t;return this._isValidFormula(a)?n<=a:!1}generateRuleErrorMessage(t){var i,a;return t.operator?`${this.localeService.t(g.TextLengthErrorTitleMap[t.operator]).replace(Ce,(i=t.formula1)!=null?i:"").replace(Ie,(a=t.formula2)!=null?a:"")}`:this.titleStr}}function qt(o){var t,e;return o?o.p?!((e=(t=o.p.body)==null?void 0:t.dataStream)!=null?e:"").slice(0,-2).trim():s.Tools.isBlank(o.v):!0}function mt(o,r,t,e,i="command",a=!0){const n=e.get(Q.LexerTreeBuilder),l=[],u=[],d=e.get(m.SheetDataValidationModel),c=e.get(s.IUniverInstanceService),h=$.getSheetCommandTarget(c,{unitId:o,subUnitId:r});if(!h)return{redoMutations:l,undoMutations:u};const{worksheet:f}=h,R=new s.ObjectMatrix;function V(M,b){a&&M.forEach(U=>{s.Range.foreach(U,(w,B)=>{const x=f.getCellRaw(w,B),X=Lt(x);(qt(x)||X===b)&&R.setValue(w,B,{v:b,p:null})})})}t.forEach(M=>{switch(M.type){case"delete":l.push({id:g.RemoveDataValidationMutation.id,params:{unitId:o,subUnitId:r,ruleId:M.rule.uid,source:i}}),u.unshift({id:g.AddDataValidationMutation.id,params:{unitId:o,subUnitId:r,rule:M.rule,index:M.index,source:i}});break;case"update":{if(l.push({id:g.UpdateDataValidationMutation.id,params:{unitId:o,subUnitId:r,ruleId:M.ruleId,payload:{type:g.UpdateRuleType.RANGE,payload:M.newRanges},source:i}}),u.unshift({id:g.UpdateDataValidationMutation.id,params:{unitId:o,subUnitId:r,ruleId:M.ruleId,payload:{type:g.UpdateRuleType.RANGE,payload:M.oldRanges},source:i}}),M.rule.type===s.DataValidationType.CUSTOM){const U=M.oldRanges[0].startRow,w=M.oldRanges[0].startColumn,B=M.newRanges[0].startRow,x=M.newRanges[0].startColumn,X=B-U,tt=x-w,Y=n.moveFormulaRefOffset(M.rule.formula1,tt,X);Y!==M.rule.formula1&&(l.push({id:g.UpdateDataValidationMutation.id,params:{unitId:o,subUnitId:r,ruleId:M.ruleId,payload:{type:g.UpdateRuleType.SETTING,payload:{...g.getRuleSetting(M.rule),formula1:Y}}}}),u.unshift({id:g.UpdateDataValidationMutation.id,params:{unitId:o,subUnitId:r,ruleId:M.ruleId,payload:{type:g.UpdateRuleType.SETTING,payload:g.getRuleSetting(M.rule)}}}))}const b=d.getRuleById(o,r,M.ruleId);if(b&&b.type===s.DataValidationType.CHECKBOX){const w=d.getValidator(s.DataValidationType.CHECKBOX).parseFormulaSync(b,o,r);V(M.newRanges,w.formula2)}break}case"add":{if(l.push({id:g.AddDataValidationMutation.id,params:{unitId:o,subUnitId:r,rule:M.rule,source:i}}),u.unshift({id:g.RemoveDataValidationMutation.id,params:{unitId:o,subUnitId:r,ruleId:M.rule.uid,source:i}}),M.rule.type===s.DataValidationType.CHECKBOX){const U=d.getValidator(s.DataValidationType.CHECKBOX).parseFormulaSync(M.rule,o,r);V(M.rule.ranges,U.originFormula2)}break}}});const O={id:$.SetRangeValuesMutation.id,params:{unitId:o,subUnitId:r,cellValue:R.getData()}},I={id:$.SetRangeValuesMutation.id,params:$.SetRangeValuesUndoMutationFactory(e,O.params)};return l.push(O),u.push(I),{redoMutations:l,undoMutations:u}}const Gt={type:s.CommandType.COMMAND,id:"sheet.command.updateDataValidationRuleRange",handler(o,r){if(!r)return!1;const{unitId:t,subUnitId:e,ranges:i,ruleId:a}=r,n=o.get(m.SheetDataValidationModel),l=o.get(s.ICommandService),u=o.get(s.IUndoRedoService);if(!n.getRuleById(t,e,a))return!1;const c=n.getRuleObjectMatrix(t,e).clone();c.updateRange(a,i);const h=c.diff(n.getRules(t,e)),{redoMutations:f,undoMutations:R}=mt(t,e,h,o);return u.pushUndoRedo({undoMutations:R,redoMutations:f,unitID:t}),s.sequenceExecute(f,l),!0}},Qt={type:s.CommandType.COMMAND,id:"sheet.command.addDataValidation",handler(o,r){if(!r)return!1;const{unitId:t,subUnitId:e,rule:i}=r,a=o.get(m.SheetDataValidationModel),n=o.get(s.ICommandService),l=o.get(s.IUndoRedoService),u=a.getRuleObjectMatrix(t,e).clone();u.addRule(i);const d=u.diff(a.getRules(t,e)),c={unitId:t,subUnitId:e,rule:i},{redoMutations:h,undoMutations:f}=mt(t,e,d,o);return h.push({id:g.AddDataValidationMutation.id,params:c}),f.unshift({id:g.RemoveDataValidationMutation.id,params:{unitId:t,subUnitId:e,ruleId:i.uid}}),l.pushUndoRedo({unitID:t,redoMutations:h,undoMutations:f}),s.sequenceExecute(h,n),!0}},Yt={type:s.CommandType.COMMAND,id:"sheets.command.update-data-validation-setting",handler(o,r){if(!r)return!1;const t=o.get(s.ICommandService),e=o.get(s.IUndoRedoService),i=o.get(m.SheetDataValidationModel),a=o.get(g.DataValidatorRegistryService),{unitId:n,subUnitId:l,ruleId:u,setting:d}=r,c=a.getValidatorItem(d.type);if(!c)return!1;const h=i.getRuleById(n,l,u);if(!h)return!1;const f={...h,...d};if(!c.validatorFormula(f,n,l).success)return!1;const R={unitId:n,subUnitId:l,ruleId:u,payload:{type:g.UpdateRuleType.SETTING,payload:{...d,...c.normalizeFormula(f,n,l)}}},V=[{id:g.UpdateDataValidationMutation.id,params:R}],O={unitId:n,subUnitId:l,ruleId:u,payload:{type:g.UpdateRuleType.SETTING,payload:g.getRuleSetting(h)}},I=[{id:g.UpdateDataValidationMutation.id,params:O}];if(d.type===s.DataValidationType.CHECKBOX){const b=h.ranges,U=o.get(s.IUniverInstanceService),w=$.getSheetCommandTarget(U,{unitId:n,subUnitId:l});if(w){const B=new s.ObjectMatrix,{worksheet:x}=w,{formula2:X=ut,formula1:tt=lt}=h,{formula2:Y=ut,formula1:L=lt}=d;b.forEach(Mt=>{s.Range.foreach(Mt,(y,_)=>{const p=x.getCellRaw(y,_),D=Lt(p);qt(p)||D===String(X)?B.setValue(y,_,{v:Y,p:null}):D===String(tt)&&B.setValue(y,_,{v:L,p:null})})});const F={id:$.SetRangeValuesMutation.id,params:{unitId:n,subUnitId:l,cellValue:B.getData()}},st={id:$.SetRangeValuesMutation.id,params:$.SetRangeValuesUndoMutationFactory(o,F.params)};V.push(F),I.push(st)}}return s.sequenceExecute(V,t).result?(e.pushUndoRedo({unitID:n,redoMutations:V,undoMutations:I}),!0):!1}},Xt={type:s.CommandType.COMMAND,id:"sheets.command.update-data-validation-options",handler(o,r){if(!r)return!1;const t=o.get(s.ICommandService),e=o.get(s.IUndoRedoService),i=o.get(m.SheetDataValidationModel),{unitId:a,subUnitId:n,ruleId:l,options:u}=r,d=i.getRuleById(a,n,l);if(!d)return!1;const c={unitId:a,subUnitId:n,ruleId:l,payload:{type:g.UpdateRuleType.OPTIONS,payload:u}},h=[{id:g.UpdateDataValidationMutation.id,params:c}],f={unitId:a,subUnitId:n,ruleId:l,payload:{type:g.UpdateRuleType.OPTIONS,payload:g.getRuleOptions(d)}},R=[{id:g.UpdateDataValidationMutation.id,params:f}];return e.pushUndoRedo({unitID:a,redoMutations:h,undoMutations:R}),t.executeCommand(g.UpdateDataValidationMutation.id,c),!0}},zt={type:s.CommandType.COMMAND,id:"sheets.command.clear-range-data-validation",handler(o,r){if(!r)return!1;const{unitId:t,subUnitId:e,ranges:i}=r,a=o.get(s.ICommandService),n=o.get(s.IUniverInstanceService),l=$.getSheetCommandTarget(n,{unitId:t,subUnitId:e}),u=o.get(m.SheetDataValidationModel);if(!l)return!1;const d=o.get(s.IUndoRedoService),c=u.getRuleObjectMatrix(t,e).clone();c.removeRange(i);const h=c.diff(u.getRules(t,e)),{redoMutations:f,undoMutations:R}=mt(t,e,h,o);return d.pushUndoRedo({unitID:t,redoMutations:f,undoMutations:R}),s.sequenceExecute(f,a).result}},Kt={type:s.CommandType.COMMAND,id:"sheet.command.remove-all-data-validation",handler(o,r){if(!r)return!1;const{unitId:t,subUnitId:e}=r,i=o.get(s.ICommandService),a=o.get(m.SheetDataValidationModel),n=o.get(s.IUndoRedoService),l=[...a.getRules(t,e)],u={unitId:t,subUnitId:e,ruleId:l.map(h=>h.uid)},d=[{id:g.RemoveDataValidationMutation.id,params:u}],c=[{id:g.AddDataValidationMutation.id,params:{unitId:t,subUnitId:e,rule:l}}];return n.pushUndoRedo({redoMutations:d,undoMutations:c,unitID:t}),i.executeCommand(g.RemoveDataValidationMutation.id,u),!0}},Ee=(o,r)=>{const t=o.get(m.SheetDataValidationModel),{unitId:e,subUnitId:i,ruleId:a,source:n}=r;if(Array.isArray(a)){const u=a.map(d=>t.getRuleById(e,i,d)).filter(Boolean);return[{id:g.AddDataValidationMutation.id,params:{unitId:e,subUnitId:i,rule:u,source:n}}]}return[{id:g.AddDataValidationMutation.id,params:{unitId:e,subUnitId:i,rule:{...t.getRuleById(e,i,a)},index:t.getRuleIndex(e,i,a)}}]},Zt={type:s.CommandType.COMMAND,id:"sheet.command.remove-data-validation-rule",handler(o,r){if(!r)return!1;const{unitId:t,subUnitId:e,ruleId:i}=r,a=o.get(s.ICommandService),n=o.get(s.IUndoRedoService),l=o.get(m.SheetDataValidationModel),u=[{id:g.RemoveDataValidationMutation.id,params:r}],d=[{id:g.AddDataValidationMutation.id,params:{unitId:t,subUnitId:e,rule:{...l.getRuleById(t,e,i)},index:l.getRuleIndex(t,e,i)}}];return n.pushUndoRedo({undoMutations:d,redoMutations:u,unitID:r.unitId}),a.executeCommand(g.RemoveDataValidationMutation.id,r),!0}},be="sheets-data-validation.config",Ue={};class Ae extends g.BaseDataValidator{constructor(){super(...arguments);S(this,"id",s.DataValidationType.ANY);S(this,"title","dataValidation.any.title");S(this,"operators",[]);S(this,"scopes",["sheet"])}async parseFormula(t,e,i){return{formula1:t.formula1,formula2:t.formula2,isFormulaValid:!0}}validatorFormula(t,e,i){return{success:!0}}async isValidType(t,e,i){return!0}generateRuleErrorMessage(t){return this.localeService.t("dataValidation.any.error")}}class $e extends g.BaseDataValidator{constructor(){super(...arguments);S(this,"id",s.DataValidationType.CUSTOM);S(this,"title","dataValidation.custom.title");S(this,"operators",[]);S(this,"scopes",["sheet"]);S(this,"_customFormulaService",this.injector.get(m.DataValidationCustomFormulaService))}validatorFormula(t,e,i){const a=s.isFormulaString(t.formula1);return{success:a,formula1:a?"":this.localeService.t("dataValidation.validFail.formula")}}async parseFormula(t,e,i){return{formula1:void 0,formula2:void 0,isFormulaValid:!0}}async isValidType(t,e,i){const{column:a,row:n,unitId:l,subUnitId:u}=t,d=await this._customFormulaService.getCellFormulaValue(l,u,i.uid,n,a),c=d==null?void 0:d.v;return P(String(c))&&s.Tools.isDefine(c)&&c!==""?d.t===s.CellValueType.BOOLEAN?!!c:typeof c=="boolean"?c:typeof c=="number"?!!c:typeof c=="string"?P(c):!!c:!1}generateRuleErrorMessage(t){return this.localeService.t("dataValidation.custom.error")}generateRuleName(t){var e;return this.localeService.t("dataValidation.custom.ruleName").replace("{FORMULA1}",(e=t.formula1)!=null?e:"")}}class Jt extends It{constructor(){super(...arguments);S(this,"id",s.DataValidationType.LIST_MULTIPLE);S(this,"title","dataValidation.listMultiple.title");S(this,"skipDefaultFontRender",()=>!0)}}class Le extends g.BaseDataValidator{constructor(){super(...arguments);S(this,"_formulaService",this.injector.get(m.DataValidationFormulaService));S(this,"id",s.DataValidationType.WHOLE);S(this,"title","dataValidation.whole.title");S(this,"operators",[s.DataValidationOperator.BETWEEN,s.DataValidationOperator.EQUAL,s.DataValidationOperator.GREATER_THAN,s.DataValidationOperator.GREATER_THAN_OR_EQUAL,s.DataValidationOperator.LESS_THAN,s.DataValidationOperator.LESS_THAN_OR_EQUAL,s.DataValidationOperator.NOT_BETWEEN,s.DataValidationOperator.NOT_EQUAL]);S(this,"scopes",["sheet"])}_isFormulaOrInt(t){return!s.Tools.isBlank(t)&&(s.isFormulaString(t)||!Number.isNaN(+t)&&Number.isInteger(+t))}async isValidType(t,e,i){const{value:a}=t,n=St(a);return!Number.isNaN(n)&&Number.isInteger(n)}transform(t,e,i){const{value:a}=t;return{...t,value:St(a)}}_parseNumber(t){return t==null?Number.NaN:+t}async parseFormula(t,e,i){var f,R,V,O,I,M,b,U,w,B;const a=await this._formulaService.getRuleFormulaResult(e,i,t.uid),{formula1:n,formula2:l}=t,u=s.isFormulaString(n)?(I=(O=(V=(R=(f=a==null?void 0:a[0])==null?void 0:f.result)==null?void 0:R[0])==null?void 0:V[0])==null?void 0:O[0][0])==null?void 0:I.v:n,d=s.isFormulaString(l)?(B=(w=(U=(b=(M=a==null?void 0:a[1])==null?void 0:M.result)==null?void 0:b[0])==null?void 0:U[0])==null?void 0:w[0][0])==null?void 0:B.v:l,c=P(`${u}`)&&P(`${d}`);return{formula1:this._parseNumber(u),formula2:this._parseNumber(d),isFormulaValid:c}}validatorFormula(t,e,i){const a=t.operator;if(!a)return{success:!1};const n=s.Tools.isDefine(t.formula1)&&this._isFormulaOrInt(t.formula1),l=s.Tools.isDefine(t.formula2)&&this._isFormulaOrInt(t.formula2),u=vt.includes(a),d=this.localeService.t("dataValidation.validFail.number");return u?{success:n&&l,formula1:n?void 0:d,formula2:l?void 0:d}:{success:n,formula1:d}}async validatorIsEqual(t,e,i){const{formula1:a}=e,{value:n}=t;return Number.isNaN(a)?!0:n===a}async validatorIsNotEqual(t,e,i){const{formula1:a}=e;return Number.isNaN(a)?!0:t.value!==a}async validatorIsBetween(t,e,i){const{formula1:a,formula2:n}=e;if(Number.isNaN(a)||Number.isNaN(n))return!0;const l=Math.min(a,n),u=Math.max(a,n);return t.value>=l&&t.value<=u}async validatorIsNotBetween(t,e,i){const{formula1:a,formula2:n}=e;if(Number.isNaN(a)||Number.isNaN(n))return!0;const l=Math.min(a,n),u=Math.max(a,n);return t.value<l||t.value>u}async validatorIsGreaterThan(t,e,i){const{formula1:a}=e;return Number.isNaN(a)?!0:t.value>a}async validatorIsGreaterThanOrEqual(t,e,i){const{formula1:a}=e;return Number.isNaN(a)?!0:t.value>=a}async validatorIsLessThan(t,e,i){const{formula1:a}=e;return Number.isNaN(a)?!0:t.value<a}async validatorIsLessThanOrEqual(t,e,i){const{formula1:a}=e;return Number.isNaN(a)?!0:t.value<=a}}var Be=Object.defineProperty,je=Object.getOwnPropertyDescriptor,Pe=(o,r,t,e)=>{for(var i=e>1?void 0:e?je(r,t):r,a=o.length-1,n;a>=0;a--)(n=o[a])&&(i=(e?n(r,t,i):n(i))||i);return e&&i&&Be(r,t,i),i},rt=(o,r)=>(t,e)=>r(t,e,o);let Rt=class extends s.RxDisposable{constructor(o,r,t,e,i,a){super(),this._univerInstanceService=o,this._dataValidatorRegistryService=r,this._injector=t,this._selectionManagerService=e,this._sheetInterceptorService=i,this._sheetDataValidationModel=a,this._init()}_init(){this._registerValidators(),this._initCommandInterceptor()}_registerValidators(){[Ae,ye,Le,we,Wt,jt,It,Jt,$e].forEach(o=>{const r=this._injector.createInstance(o);this.disposeWithMe(this._dataValidatorRegistryService.register(r)),this.disposeWithMe(s.toDisposable(()=>this._injector.delete(o)))})}_initCommandInterceptor(){this._sheetInterceptorService.interceptCommand({getMutations:o=>{var r;if(o.id===$.ClearSelectionAllCommand.id){const t=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET),e=t.getUnitId(),i=t.getActiveSheet();if(!i)throw new Error("No active sheet found");const a=i.getSheetId(),n=(r=this._selectionManagerService.getCurrentSelections())==null?void 0:r.map(h=>h.range),l=this._sheetDataValidationModel.getRuleObjectMatrix(e,a).clone();n&&l.removeRange(n);const u=l.diff(this._sheetDataValidationModel.getRules(e,a)),{redoMutations:d,undoMutations:c}=mt(e,a,u,this._injector,"patched");return{undos:c,redos:d}}return{undos:[],redos:[]}}})}};Rt=Pe([rt(0,s.IUniverInstanceService),rt(1,s.Inject(g.DataValidatorRegistryService)),rt(2,s.Inject(s.Injector)),rt(3,s.Inject($.SheetsSelectionsService)),rt(4,s.Inject($.SheetInterceptorService)),rt(5,s.Inject(m.SheetDataValidationModel))],Rt);var te=(o=>(o[o.View=0]="View",o[o.Edit=1]="Edit",o[o.ManageCollaborator=2]="ManageCollaborator",o[o.Print=3]="Print",o[o.Duplicate=4]="Duplicate",o[o.Comment=5]="Comment",o[o.Copy=6]="Copy",o[o.Share=7]="Share",o[o.Export=8]="Export",o[o.MoveWorksheet=9]="MoveWorksheet",o[o.DeleteWorksheet=10]="DeleteWorksheet",o[o.HideWorksheet=11]="HideWorksheet",o[o.RenameWorksheet=12]="RenameWorksheet",o[o.CreateWorksheet=13]="CreateWorksheet",o[o.SetWorksheetStyle=14]="SetWorksheetStyle",o[o.EditWorksheetCell=15]="EditWorksheetCell",o[o.InsertHyperlink=16]="InsertHyperlink",o[o.Sort=17]="Sort",o[o.Filter=18]="Filter",o[o.PivotTable=19]="PivotTable",o[o.FloatImg=20]="FloatImg",o[o.History=21]="History",o[o.RwHgtClWdt=22]="RwHgtClWdt",o[o.ViemRwHgtClWdt=23]="ViemRwHgtClWdt",o[o.ViewFilter=24]="ViewFilter",o[o.MoveSheet=25]="MoveSheet",o[o.DeleteSheet=26]="DeleteSheet",o[o.HideSheet=27]="HideSheet",o[o.CopySheet=28]="CopySheet",o[o.RenameSheet=29]="RenameSheet",o[o.CreateSheet=30]="CreateSheet",o[o.SelectProtectedCells=31]="SelectProtectedCells",o[o.SelectUnProtectedCells=32]="SelectUnProtectedCells",o[o.SetCellStyle=33]="SetCellStyle",o[o.SetCellValue=34]="SetCellValue",o[o.SetRowStyle=35]="SetRowStyle",o[o.SetColumnStyle=36]="SetColumnStyle",o[o.InsertRow=37]="InsertRow",o[o.InsertColumn=38]="InsertColumn",o[o.DeleteRow=39]="DeleteRow",o[o.DeleteColumn=40]="DeleteColumn",o[o.EditExtraObject=41]="EditExtraObject",o[o.Delete=42]="Delete",o[o.RecoverHistory=43]="RecoverHistory",o[o.ViewHistory=44]="ViewHistory",o[o.CreatePermissionObject=45]="CreatePermissionObject",o[o.UNRECOGNIZED=-1]="UNRECOGNIZED",o))(te||{}),He=Object.defineProperty,xe=Object.getOwnPropertyDescriptor,ke=(o,r,t,e)=>{for(var i=e>1?void 0:e?xe(r,t):r,a=o.length-1,n;a>=0;a--)(n=o[a])&&(i=(e?n(r,t,i):n(i))||i);return e&&i&&He(r,t,i),i},wt=(o,r)=>(t,e)=>r(t,e,o);m.DataValidationFormulaController=class extends s.Disposable{constructor(r,t,e){super(),this._univerInstanceService=r,this._permissionService=t,this._lexerTreeBuilder=e}getFormulaRefCheck(r){var e,i;const t=this._lexerTreeBuilder.sequenceNodesBuilder(r);if(!t)return!0;for(let a=0;a<t.length;a++){const n=t[a];if(typeof n=="string")continue;const{token:l}=n,u=Q.deserializeRangeWithSheetWithCache(l),d=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET);let c=d.getActiveSheet();const h=d.getUnitId();if(u.sheetName){if(c=d.getSheetBySheetName(u.sheetName),!c)return!1;const I=c==null?void 0:c.getSheetId();if(!this._permissionService.getPermissionPoint(new $.WorksheetViewPermission(h,I).id))return!1}if(!c)return!1;const{startRow:f,endRow:R,startColumn:V,endColumn:O}=u.range;for(let I=f;I<=R;I++)for(let M=V;M<=O;M++){const b=(i=(e=c.getCell(I,M))==null?void 0:e.selectionProtection)==null?void 0:i[0];if((b==null?void 0:b[te.View])===!1)return!1}}return!0}},m.DataValidationFormulaController=ke([wt(0,s.IUniverInstanceService),wt(1,s.IPermissionService),wt(2,s.Inject(Q.LexerTreeBuilder))],m.DataValidationFormulaController);var We=Object.defineProperty,qe=Object.getOwnPropertyDescriptor,Ge=(o,r,t,e)=>{for(var i=e>1?void 0:e?qe(r,t):r,a=o.length-1,n;a>=0;a--)(n=o[a])&&(i=(e?n(r,t,i):n(i))||i);return e&&i&&We(r,t,i),i},nt=(o,r)=>(t,e)=>r(t,e,o);let Vt=class extends s.Disposable{constructor(r,t,e,i,a,n){super();S(this,"_disposableMap",new Map);S(this,"registerRule",(r,t,e)=>{this.register(r,t,e),this.registerFormula(r,t,e)});this._dataValidationModel=r,this._injector=t,this._refRangeService=e,this._dataValidationCustomFormulaService=i,this._dataValidationFormulaService=a,this._formulaRefRangeService=n,this._initRefRange()}_getIdWithUnitId(r,t,e){return`${r}_${t}_${e}`}registerFormula(r,t,e){var u;const i=e.uid,a=this._getIdWithUnitId(r,t,i),n=(u=this._disposableMap.get(a))!=null?u:new Set,l=(d,c)=>{const h=this._dataValidationModel.getRuleById(r,t,i);if(!h)return{redos:[],undos:[]};const f=h[d];if(!f||f===c)return{redos:[],undos:[]};const R={unitId:r,subUnitId:t,ruleId:e.uid,payload:{type:g.UpdateRuleType.SETTING,payload:{type:h.type,formula1:h.formula1,formula2:h.formula2,[d]:c}}},V={unitId:r,subUnitId:t,ruleId:e.uid,payload:{type:g.UpdateRuleType.SETTING,payload:{type:h.type,formula1:h.formula1,formula2:h.formula2}}},O=[{id:g.UpdateDataValidationMutation.id,params:R}],I=[{id:g.UpdateDataValidationMutation.id,params:V}];return{redos:O,undos:I}};if(e.type===s.DataValidationType.CUSTOM){const d=this._dataValidationCustomFormulaService.getRuleFormulaInfo(r,t,i);if(d){const c=this._formulaRefRangeService.registerFormula(r,t,d.formula,h=>l("formula1",h));n.add(()=>c.dispose())}}else{const d=this._dataValidationFormulaService.getRuleFormulaInfo(r,t,i);if(d){const[c,h]=d;if(c){const f=this._formulaRefRangeService.registerFormula(r,t,c.text,R=>l("formula1",R));n.add(()=>f.dispose())}if(h){const f=this._formulaRefRangeService.registerFormula(r,t,h.text,R=>l("formula2",R));n.add(()=>f.dispose())}}}}register(r,t,e){var u;const i=d=>{const c=[...e.ranges],f=c.map(V=>$.handleCommonDefaultRangeChangeWithEffectRefCommands(V,d)).filter(V=>!!V).flat();if(s.isRangesEqual(f,c))return{redos:[],undos:[]};if(f.length){const V={unitId:r,subUnitId:t,ruleId:e.uid,payload:{type:g.UpdateRuleType.RANGE,payload:f},source:"patched"},O=[{id:g.UpdateDataValidationMutation.id,params:V}],I=[{id:g.UpdateDataValidationMutation.id,params:{unitId:r,subUnitId:t,ruleId:e.uid,payload:{type:g.UpdateRuleType.RANGE,payload:c},source:"patched"}}];return{redos:O,undos:I}}else{const V={unitId:r,subUnitId:t,ruleId:e.uid},O=[{id:g.RemoveDataValidationMutation.id,params:V}],I=Ee(this._injector,V);return{redos:O,undos:I}}},a=[];e.ranges.forEach(d=>{const c=this._refRangeService.registerRefRange(d,i,r,t);a.push(()=>c.dispose())});const n=this._getIdWithUnitId(r,t,e.uid),l=(u=this._disposableMap.get(n))!=null?u:new Set;l.add(()=>a.forEach(d=>d())),this._disposableMap.set(n,l)}_initRefRange(){const r=this._dataValidationModel.getAll();for(const[t,e]of r)for(const[i,a]of e)for(const n of a)this.registerRule(t,i,n);this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(t=>{const{unitId:e,subUnitId:i,rule:a}=t;switch(t.type){case"add":{const n=t.rule;this.registerRule(t.unitId,t.subUnitId,n);break}case"remove":{const n=this._disposableMap.get(this._getIdWithUnitId(e,i,a.uid));n&&n.forEach(l=>l());break}case"update":{const n=t.rule,l=this._disposableMap.get(this._getIdWithUnitId(e,i,n.uid));l&&l.forEach(u=>u()),this.registerRule(t.unitId,t.subUnitId,n);break}}})),this.disposeWithMe(s.toDisposable(()=>{this._disposableMap.forEach(t=>{t.forEach(e=>e())}),this._disposableMap.clear()}))}};Vt=Ge([nt(0,s.Inject(m.SheetDataValidationModel)),nt(1,s.Inject(s.Injector)),nt(2,s.Inject($.RefRangeService)),nt(3,s.Inject(m.DataValidationCustomFormulaService)),nt(4,s.Inject(m.DataValidationFormulaService)),nt(5,s.Inject(Nt.FormulaRefRangeService))],Vt);var Qe=Object.defineProperty,Ye=Object.getOwnPropertyDescriptor,Xe=(o,r,t,e)=>{for(var i=e>1?void 0:e?Ye(r,t):r,a=o.length-1,n;a>=0;a--)(n=o[a])&&(i=(e?n(r,t,i):n(i))||i);return e&&i&&Qe(r,t,i),i},Et=(o,r)=>(t,e)=>r(t,e,o);let Dt=class extends s.Disposable{constructor(o,r,t){super(),this._sheetInterceptorService=o,this._univerInstanceService=r,this._sheetDataValidationModel=t,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:o=>{var r;if(o.id===$.RemoveSheetCommand.id){const t=o.params,e=t.unitId||this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET).getUnitId(),i=this._univerInstanceService.getUniverSheetInstance(e);if(!i)return{redos:[],undos:[]};const a=t.subUnitId||((r=i.getActiveSheet())==null?void 0:r.getSheetId());if(!a)return{redos:[],undos:[]};const n=this._sheetDataValidationModel.getRules(e,a);if(n.length===0)return{redos:[],undos:[]};const l=n.map(c=>c.uid),u={unitId:e,subUnitId:a,ruleId:l,source:"patched"},d={unitId:e,subUnitId:a,rule:[...n],source:"patched"};return{redos:[{id:g.RemoveDataValidationMutation.id,params:u}],undos:[{id:g.AddDataValidationMutation.id,params:d}]}}return{redos:[],undos:[]}}}))}};Dt=Xe([Et(0,s.Inject($.SheetInterceptorService)),Et(1,s.Inject(s.IUniverInstanceService)),Et(2,s.Inject(m.SheetDataValidationModel))],Dt);var ze=Object.defineProperty,Ke=Object.getOwnPropertyDescriptor,Ze=(o,r,t,e)=>{for(var i=e>1?void 0:e?Ke(r,t):r,a=o.length-1,n;a>=0;a--)(n=o[a])&&(i=(e?n(r,t,i):n(i))||i);return e&&i&&ze(r,t,i),i},yt=(o,r)=>(t,e)=>r(t,e,o);m.SheetsDataValidationValidatorService=class extends s.Disposable{constructor(r,t,e,i){super(),this._univerInstanceService=r,this._sheetDataValidationModel=t,this._dataValidationCacheService=e,this._lifecycleService=i,this._initRecalculate()}_initRecalculate(){const r=t=>{if(t.length===0)return;const e=this._univerInstanceService.getCurrentUnitForType(s.UniverInstanceType.UNIVER_SHEET),i=e==null?void 0:e.getActiveSheet(),a={};t.flat().forEach(n=>{a[n.unitId]||(a[n.unitId]={}),a[n.unitId][n.subUnitId]||(a[n.unitId][n.subUnitId]=[]);const l=this._univerInstanceService.getUnit(n.unitId,s.UniverInstanceType.UNIVER_SHEET),u=l==null?void 0:l.getSheetBySheetId(n.subUnitId);u&&a[n.unitId][n.subUnitId].push(...n.ranges.map(d=>s.Range.transformRange(d,u)))}),Object.entries(a).forEach(([n,l])=>{Object.entries(l).forEach(([u,d])=>{(e==null?void 0:e.getUnitId())===n&&(i==null?void 0:i.getSheetId())===u?this.validatorRanges(n,u,d):requestIdleCallback(()=>{this.validatorRanges(n,u,d)})})})};this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.pipe(it.bufferWhen(()=>this._lifecycleService.lifecycle$.pipe(it.filter(t=>t===s.LifecycleStages.Rendered)))).subscribe(r)),this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.pipe(it.filter(()=>this._lifecycleService.stage>=s.LifecycleStages.Rendered),s.bufferDebounceTime(20)).subscribe(r))}async validatorCell(r,t,e,i){const a=this._univerInstanceService.getUnit(r,s.UniverInstanceType.UNIVER_SHEET);if(!a)throw new Error(`cannot find current workbook, unitId: ${r}`);const n=a.getSheetBySheetId(t);if(!n)throw new Error(`cannot find current worksheet, sheetId: ${t}`);if(!s.Tools.isDefine(e)||!s.Tools.isDefine(i))throw new Error(`row or col is not defined, row: ${e}, col: ${i}`);const l=this._sheetDataValidationModel.getRuleByLocation(r,t,e,i);return l?new Promise(u=>{this._sheetDataValidationModel.validator(l,{unitId:r,subUnitId:t,row:e,col:i,worksheet:n,workbook:a},d=>{u(d)})}):s.DataValidationStatus.VALID}validatorRanges(r,t,e){return Promise.all(e.map(i=>{const a=[];return s.Range.foreach(i,(n,l)=>{a.push(this.validatorCell(r,t,n,l))}),a}))}async validatorWorksheet(r,t){const e=this._sheetDataValidationModel.getRules(r,t);return await Promise.all(e.map(i=>Promise.all(i.ranges.map(a=>{const n=[];return s.Range.foreach(a,(l,u)=>{n.push(this.validatorCell(r,t,l,u))}),n})))),this._dataValidationCacheService.ensureCache(r,t)}async validatorWorkbook(r){const t=this._sheetDataValidationModel.getSubUnitIds(r),e=await Promise.all(t.map(a=>this.validatorWorksheet(r,a))),i={};return e.forEach((a,n)=>{i[t[n]]=a}),i}getDataValidations(r,t,e){const i=this._sheetDataValidationModel.getRuleObjectMatrix(r,t),a=new Set;return e.forEach(l=>{s.Range.foreach(l,(u,d)=>{const c=i.getValue(u,d);c&&a.add(c)})}),Array.from(a).map(l=>this._sheetDataValidationModel.getRuleById(r,t,l)).filter(Boolean)}getDataValidation(r,t,e){return this.getDataValidations(r,t,e)[0]}},m.SheetsDataValidationValidatorService=Ze([yt(0,s.IUniverInstanceService),yt(1,s.Inject(m.SheetDataValidationModel)),yt(2,s.Inject(m.DataValidationCacheService)),yt(3,s.Inject(s.LifecycleService))],m.SheetsDataValidationValidatorService);var ee=Object.defineProperty,Je=Object.getOwnPropertyDescriptor,ta=(o,r,t)=>r in o?ee(o,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[r]=t,ea=(o,r,t,e)=>{for(var i=e>1?void 0:e?Je(r,t):r,a=o.length-1,n;a>=0;a--)(n=o[a])&&(i=(e?n(r,t,i):n(i))||i);return e&&i&&ee(r,t,i),i},bt=(o,r)=>(t,e)=>r(t,e,o),ae=(o,r,t)=>ta(o,typeof r!="symbol"?r+"":r,t);m.UniverSheetsDataValidationPlugin=class extends s.Plugin{constructor(r=Ue,t,e,i){super(),this._config=r,this._injector=t,this._commandService=e,this._configService=i;const{...a}=this._config;this._configService.setConfig(be,a)}onStarting(){[[m.DataValidationCacheService],[m.DataValidationFormulaService],[m.DataValidationCustomFormulaService],[m.SheetsDataValidationValidatorService],[m.SheetDataValidationModel],[Rt],[Vt],[m.DataValidationFormulaController],[Dt]].forEach(r=>{this._injector.add(r)}),[Qt,Gt,Yt,Xt,Zt,Kt,zt].forEach(r=>{this._commandService.registerCommand(r)}),this._injector.get(m.DataValidationCacheService),this._injector.get(m.SheetsDataValidationValidatorService),this._injector.get(Vt)}onReady(){this._injector.get(Dt)}onRendered(){this._injector.get(Rt),this._injector.get(m.DataValidationFormulaController)}},ae(m.UniverSheetsDataValidationPlugin,"pluginName",At),ae(m.UniverSheetsDataValidationPlugin,"type",s.UniverInstanceType.UNIVER_SHEET),m.UniverSheetsDataValidationPlugin=ea([s.DependentOn(g.UniverDataValidationPlugin),bt(1,s.Inject(s.Injector)),bt(2,s.ICommandService),bt(3,s.IConfigService)],m.UniverSheetsDataValidationPlugin);function aa(o){const t=o.get($.SheetsSelectionsService).getCurrentSelections().map(a=>a.range);return{uid:s.Tools.generateRandomId(6),type:s.DataValidationType.DECIMAL,operator:s.DataValidationOperator.EQUAL,formula1:"100",ranges:t!=null?t:[{startColumn:0,endColumn:0,startRow:0,endRow:0}]}}m.AddSheetDataValidationCommand=Qt,m.CHECKBOX_FORMULA_1=lt,m.CHECKBOX_FORMULA_2=ut,m.CheckboxValidator=jt,m.ClearRangeDataValidationCommand=zt,m.DATA_VALIDATION_PLUGIN_NAME=At,m.DateValidator=Wt,m.ListMultipleValidator=Jt,m.ListValidator=It,m.RemoveSheetAllDataValidationCommand=Kt,m.RemoveSheetDataValidationCommand=Zt,m.UpdateSheetDataValidationOptionsCommand=Xt,m.UpdateSheetDataValidationRangeCommand=Gt,m.UpdateSheetDataValidationSettingCommand=Yt,m.createDefaultNewRule=aa,m.deserializeListOptions=ht,m.getCellValueOrigin=K,m.getDataValidationCellValue=Te,m.getDataValidationDiffMutations=mt,m.getFormulaCellData=$t,m.getFormulaResult=W,m.isLegalFormulaResult=P,m.serializeListOptions=Me,m.transformCheckboxValue=dt,Object.defineProperty(m,Symbol.toStringTag,{value:"Module"})});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@univerjs/sheets-data-validation",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0-alpha.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Data validation for Univer Sheets",
|
|
6
6
|
"author": "DreamNum <developer@univer.ai>",
|
|
@@ -31,10 +31,14 @@
|
|
|
31
31
|
"require": "./lib/cjs/*",
|
|
32
32
|
"types": "./lib/types/index.d.ts"
|
|
33
33
|
},
|
|
34
|
+
"./facade": {
|
|
35
|
+
"import": "./lib/es/facade.js",
|
|
36
|
+
"require": "./lib/cjs/facade.js",
|
|
37
|
+
"types": "./lib/types/facade/index.d.ts"
|
|
38
|
+
},
|
|
34
39
|
"./lib/*": "./lib/*"
|
|
35
40
|
},
|
|
36
|
-
"main": "./lib/
|
|
37
|
-
"module": "./lib/es/index.js",
|
|
41
|
+
"main": "./lib/es/index.js",
|
|
38
42
|
"types": "./lib/types/index.d.ts",
|
|
39
43
|
"publishConfig": {
|
|
40
44
|
"access": "public"
|
|
@@ -50,24 +54,24 @@
|
|
|
50
54
|
},
|
|
51
55
|
"dependencies": {
|
|
52
56
|
"@flatten-js/interval-tree": "^1.1.3",
|
|
53
|
-
"@univerjs/icons": "^0.
|
|
57
|
+
"@univerjs/icons": "^0.2.5",
|
|
54
58
|
"@univerjs/protocol": "0.1.39-alpha.38",
|
|
55
59
|
"dayjs": "^1.11.13",
|
|
56
|
-
"@univerjs/core": "0.
|
|
57
|
-
"@univerjs/
|
|
58
|
-
"@univerjs/
|
|
59
|
-
"@univerjs/
|
|
60
|
-
"@univerjs/sheets
|
|
60
|
+
"@univerjs/core": "0.5.0-alpha.0",
|
|
61
|
+
"@univerjs/data-validation": "0.5.0-alpha.0",
|
|
62
|
+
"@univerjs/engine-formula": "0.5.0-alpha.0",
|
|
63
|
+
"@univerjs/sheets-formula": "0.5.0-alpha.0",
|
|
64
|
+
"@univerjs/sheets": "0.5.0-alpha.0"
|
|
61
65
|
},
|
|
62
66
|
"devDependencies": {
|
|
63
67
|
"less": "^4.2.0",
|
|
64
68
|
"rxjs": "^7.8.1",
|
|
65
69
|
"typescript": "^5.6.3",
|
|
66
|
-
"vite": "^5.4.
|
|
67
|
-
"vitest": "^2.1.
|
|
68
|
-
"@univerjs-infra/shared": "0.
|
|
70
|
+
"vite": "^5.4.10",
|
|
71
|
+
"vitest": "^2.1.4",
|
|
72
|
+
"@univerjs-infra/shared": "0.5.0-alpha.0"
|
|
69
73
|
},
|
|
70
|
-
"
|
|
74
|
+
"space": {
|
|
71
75
|
".": {
|
|
72
76
|
"import": "./lib/es/index.js",
|
|
73
77
|
"require": "./lib/cjs/index.js",
|
|
@@ -78,6 +82,11 @@
|
|
|
78
82
|
"require": "./lib/cjs/*",
|
|
79
83
|
"types": "./lib/types/index.d.ts"
|
|
80
84
|
},
|
|
85
|
+
"./facade": {
|
|
86
|
+
"import": "./lib/es/facade.js",
|
|
87
|
+
"require": "./lib/cjs/facade.js",
|
|
88
|
+
"types": "./lib/types/facade/index.d.ts"
|
|
89
|
+
},
|
|
81
90
|
"./lib/*": "./lib/*"
|
|
82
91
|
},
|
|
83
92
|
"scripts": {
|
|
@@ -85,7 +94,8 @@
|
|
|
85
94
|
"test": "vitest run",
|
|
86
95
|
"test:watch": "vitest",
|
|
87
96
|
"coverage": "vitest run --coverage",
|
|
88
|
-
"build": "
|
|
97
|
+
"build": "tsx build.ts",
|
|
89
98
|
"lint:types": "tsc --noEmit"
|
|
90
|
-
}
|
|
99
|
+
},
|
|
100
|
+
"module": "./lib/es/index.js"
|
|
91
101
|
}
|