@univerjs/sheets-data-validation 0.5.5-experimental.20250122-3362a4a → 0.5.5-nightly.202501201336

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.
@@ -10,7 +10,6 @@ import { FDataValidation } from './f-data-validation';
10
10
  * const rule = FUniver.newDataValidation().requireValueInRange(range).build();
11
11
  * cell.setDataValidation(rule);
12
12
  * ```
13
- * @hideconstructor
14
13
  */
15
14
  export declare class FDataValidationBuilder {
16
15
  private _rule;
@@ -1,9 +1,6 @@
1
1
  import { DataValidationOperator, DataValidationType, IDataValidationRule, IDataValidationRuleOptions, Injector, Worksheet } from '@univerjs/core';
2
2
  import { FRange } from '@univerjs/sheets/facade';
3
3
  import { FDataValidationBuilder } from './f-data-validation-builder';
4
- /**
5
- * @hideconstructor
6
- */
7
4
  export declare class FDataValidation {
8
5
  rule: IDataValidationRule;
9
6
  private _worksheet;
@@ -16,9 +16,6 @@ export declare class FUnvierDataValidationMixin extends FUniver {
16
16
  * ```
17
17
  */
18
18
  newDataValidation(): FDataValidationBuilder;
19
- /**
20
- * @ignore
21
- */
22
19
  _initialize(injector: Injector): void;
23
20
  }
24
21
  declare module '@univerjs/core' {
package/lib/umd/facade.js CHANGED
@@ -1 +1 @@
1
- (function(global,factory){typeof exports=="object"&&typeof module<"u"?factory(exports,require("@univerjs/sheets-data-validation"),require("@univerjs/sheets/facade"),require("@univerjs/core"),require("@univerjs/data-validation"),require("@univerjs/engine-formula"),require("rxjs")):typeof define=="function"&&define.amd?define(["exports","@univerjs/sheets-data-validation","@univerjs/sheets/facade","@univerjs/core","@univerjs/data-validation","@univerjs/engine-formula","rxjs"],factory):(global=typeof globalThis<"u"?globalThis:global||self,factory(global.UniverSheetsDataValidationFacade={},global.UniverSheetsDataValidation,global.UniverSheetsFacade,global.UniverCore,global.UniverDataValidation,global.UniverEngineFormula,global.rxjs))})(this,function(exports2,sheetsDataValidation,facade,core,dataValidation,engineFormula,rxjs){"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);const _FDataValidationBuilder=class _FDataValidationBuilder{constructor(rule){__publicField(this,"_rule");this._rule=rule!=null?rule:{uid:core.generateRandomId(),ranges:void 0,type:core.DataValidationType.CUSTOM}}build(){return new FDataValidation(this._rule)}copy(){return new _FDataValidationBuilder({...this._rule,uid:core.generateRandomId()})}getAllowInvalid(){return this._rule.errorStyle!==core.DataValidationErrorStyle.STOP}getCriteriaType(){return this._rule.type}getCriteriaValues(){return[this._rule.operator,this._rule.formula1,this._rule.formula2]}getHelpText(){return this._rule.error}requireCheckbox(checkedValue,uncheckedValue){return this._rule.type=core.DataValidationType.CHECKBOX,this._rule.formula1=checkedValue,this._rule.formula2=uncheckedValue,this}requireDateAfter(date){return this._rule.type=core.DataValidationType.DATE,this._rule.formula1=date.toLocaleDateString(),this._rule.operator=core.DataValidationOperator.GREATER_THAN,this}requireDateBefore(date){return this._rule.type=core.DataValidationType.DATE,this._rule.formula1=date.toLocaleDateString(),this._rule.formula2=void 0,this._rule.operator=core.DataValidationOperator.LESS_THAN,this}requireDateBetween(start,end){return this._rule.type=core.DataValidationType.DATE,this._rule.formula1=start.toLocaleDateString(),this._rule.formula2=end.toLocaleDateString(),this._rule.operator=core.DataValidationOperator.BETWEEN,this}requireDateEqualTo(date){return this._rule.type=core.DataValidationType.DATE,this._rule.formula1=date.toLocaleDateString(),this._rule.formula2=void 0,this._rule.operator=core.DataValidationOperator.EQUAL,this}requireDateNotBetween(start,end){return this._rule.type=core.DataValidationType.DATE,this._rule.formula1=start.toLocaleDateString(),this._rule.formula2=end.toLocaleDateString(),this._rule.operator=core.DataValidationOperator.NOT_BETWEEN,this}requireDateOnOrAfter(date){return this._rule.type=core.DataValidationType.DATE,this._rule.formula1=date.toLocaleDateString(),this._rule.formula2=void 0,this._rule.operator=core.DataValidationOperator.GREATER_THAN_OR_EQUAL,this}requireDateOnOrBefore(date){return this._rule.type=core.DataValidationType.DATE,this._rule.formula1=date.toLocaleDateString(),this._rule.formula2=void 0,this._rule.operator=core.DataValidationOperator.LESS_THAN_OR_EQUAL,this}requireFormulaSatisfied(formula){return this._rule.type=core.DataValidationType.CUSTOM,this._rule.formula1=formula,this._rule.formula2=void 0,this}requireNumberBetween(start,end,isInteger){return this._rule.formula1=`${start}`,this._rule.formula2=`${end}`,this._rule.operator=core.DataValidationOperator.BETWEEN,this._rule.type=isInteger?core.DataValidationType.WHOLE:core.DataValidationType.DECIMAL,this}requireNumberEqualTo(num,isInteger){return this._rule.formula1=`${num}`,this._rule.formula2=void 0,this._rule.operator=core.DataValidationOperator.EQUAL,this._rule.type=isInteger?core.DataValidationType.WHOLE:core.DataValidationType.DECIMAL,this}requireNumberGreaterThan(num,isInteger){return this._rule.formula1=`${num}`,this._rule.formula2=void 0,this._rule.operator=core.DataValidationOperator.GREATER_THAN,this._rule.type=isInteger?core.DataValidationType.WHOLE:core.DataValidationType.DECIMAL,this}requireNumberGreaterThanOrEqualTo(num,isInteger){return this._rule.formula1=`${num}`,this._rule.formula2=void 0,this._rule.operator=core.DataValidationOperator.GREATER_THAN_OR_EQUAL,this._rule.type=isInteger?core.DataValidationType.WHOLE:core.DataValidationType.DECIMAL,this}requireNumberLessThan(num,isInteger){return this._rule.formula1=`${num}`,this._rule.formula2=void 0,this._rule.operator=core.DataValidationOperator.LESS_THAN,this._rule.type=isInteger?core.DataValidationType.WHOLE:core.DataValidationType.DECIMAL,this}requireNumberLessThanOrEqualTo(num,isInteger){return this._rule.formula1=`${num}`,this._rule.formula2=void 0,this._rule.operator=core.DataValidationOperator.LESS_THAN_OR_EQUAL,this._rule.type=isInteger?core.DataValidationType.WHOLE:core.DataValidationType.DECIMAL,this}requireNumberNotBetween(start,end,isInteger){return this._rule.formula1=`${start}`,this._rule.formula2=`${end}`,this._rule.operator=core.DataValidationOperator.NOT_BETWEEN,this._rule.type=isInteger?core.DataValidationType.WHOLE:core.DataValidationType.DECIMAL,this}requireNumberNotEqualTo(num,isInteger){return this._rule.formula1=`${num}`,this._rule.formula2=void 0,this._rule.operator=core.DataValidationOperator.NOT_EQUAL,this._rule.type=isInteger?core.DataValidationType.WHOLE:core.DataValidationType.DECIMAL,this}requireValueInList(values,multiple,showDropdown){return this._rule.type=multiple?core.DataValidationType.LIST_MULTIPLE:core.DataValidationType.LIST,this._rule.formula1=values.join(","),this._rule.formula2=void 0,this._rule.showDropDown=showDropdown!=null?showDropdown:!0,this}requireValueInRange(range,multiple,showDropdown){return this._rule.type=multiple?core.DataValidationType.LIST_MULTIPLE:core.DataValidationType.LIST,this._rule.formula1=`=${engineFormula.serializeRangeToRefString({unitId:range.getUnitId(),sheetName:range.getSheetName(),range:range.getRange()})}`,this._rule.formula2=void 0,this._rule.showDropDown=showDropdown!=null?showDropdown:!0,this}setAllowInvalid(allowInvalidData){return this._rule.errorStyle=allowInvalidData?core.DataValidationErrorStyle.WARNING:core.DataValidationErrorStyle.STOP,this}setAllowBlank(allowBlank){return this._rule.allowBlank=allowBlank,this}setOptions(options){return Object.assign(this._rule,options),this}};__name(_FDataValidationBuilder,"FDataValidationBuilder");let FDataValidationBuilder=_FDataValidationBuilder;const _FDataValidation=class _FDataValidation{constructor(rule,worksheet,_injector){__publicField(this,"rule");__publicField(this,"_worksheet");__publicField(this,"_injector");this._injector=_injector,this.rule=rule,this._worksheet=worksheet}getAllowInvalid(){return this.rule.errorStyle!==core.DataValidationErrorStyle.STOP}getCriteriaType(){return this.rule.type}getCriteriaValues(){return[this.rule.operator,this.rule.formula1,this.rule.formula2]}getHelpText(){return this.rule.error}copy(){return new FDataValidationBuilder(this.rule)}getApplied(){if(!this._worksheet)return!1;const currentRule=this._injector.get(dataValidation.DataValidationModel).getRuleById(this._worksheet.getUnitId(),this._worksheet.getSheetId(),this.rule.uid);return!!(currentRule&&currentRule.ranges.length)}getRanges(){if(!this.getApplied())return[];const workbook=this._injector.get(core.IUniverInstanceService).getUnit(this._worksheet.getUnitId());return this.rule.ranges.map(range=>this._injector.createInstance(facade.FRange,workbook,this._worksheet,range))}getUnitId(){var _a;return(_a=this._worksheet)==null?void 0:_a.getUnitId()}getSheetId(){var _a;return(_a=this._worksheet)==null?void 0:_a.getSheetId()}setCriteria(type,values,allowBlank=!0){if(this.getApplied()&&!this._injector.get(core.ICommandService).syncExecuteCommand(sheetsDataValidation.UpdateSheetDataValidationSettingCommand.id,{unitId:this.getUnitId(),subUnitId:this.getSheetId(),ruleId:this.rule.uid,setting:{operator:values[0],formula1:values[1],formula2:values[2],type:this.rule.type,allowBlank}}))throw new Error("setCriteria failed");return this.rule.operator=values[0],this.rule.formula1=values[1],this.rule.formula2=values[2],this.rule.type=type,this.rule.allowBlank=allowBlank,this}setOptions(options){if(this.getApplied()&&!this._injector.get(core.ICommandService).syncExecuteCommand(sheetsDataValidation.UpdateSheetDataValidationOptionsCommand.id,{unitId:this.getUnitId(),subUnitId:this.getSheetId(),ruleId:this.rule.uid,options:{...dataValidation.getRuleOptions(this.rule),...options}}))throw new Error("setOptions failed");return Object.assign(this.rule,options),this}setRanges(ranges){if(this.getApplied()&&!this._injector.get(core.ICommandService).syncExecuteCommand(sheetsDataValidation.UpdateSheetDataValidationRangeCommand.id,{unitId:this.getUnitId(),subUnitId:this.getSheetId(),ruleId:this.rule.uid,ranges:ranges.map(range=>range.getRange())}))throw new Error("setRanges failed");return this.rule.ranges=ranges.map(range=>range.getRange()),this}delete(){return this.getApplied()?this._injector.get(core.ICommandService).syncExecuteCommand(sheetsDataValidation.RemoveSheetDataValidationCommand.id,{unitId:this.getUnitId(),subUnitId:this.getSheetId(),ruleId:this.rule.uid}):!1}};__name(_FDataValidation,"FDataValidation");let FDataValidation=_FDataValidation;const _FRangeDataValidationMixin=class _FRangeDataValidationMixin extends facade.FRange{setDataValidation(rule){if(!rule)return this._commandService.syncExecuteCommand(sheetsDataValidation.ClearRangeDataValidationCommand.id,{unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),ranges:[this._range]}),this;const params={unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),rule:{...rule.rule,ranges:[this._range]}};return this._commandService.syncExecuteCommand(sheetsDataValidation.AddSheetDataValidationCommand.id,params),this}getDataValidation(){const rule=this._injector.get(sheetsDataValidation.SheetsDataValidationValidatorService).getDataValidation(this._workbook.getUnitId(),this._worksheet.getSheetId(),[this._range]);return rule&&new FDataValidation(rule,this._worksheet,this._injector)}getDataValidations(){return this._injector.get(sheetsDataValidation.SheetsDataValidationValidatorService).getDataValidations(this._workbook.getUnitId(),this._worksheet.getSheetId(),[this._range]).map(rule=>new FDataValidation(rule,this._worksheet,this._injector))}async getValidatorStatus(){return this._injector.get(sheetsDataValidation.SheetsDataValidationValidatorService).validatorRanges(this._workbook.getUnitId(),this._worksheet.getSheetId(),[this._range])}};__name(_FRangeDataValidationMixin,"FRangeDataValidationMixin");let FRangeDataValidationMixin=_FRangeDataValidationMixin;facade.FRange.extend(FRangeDataValidationMixin);const _FUnvierDataValidationMixin=class _FUnvierDataValidationMixin extends core.FUniver{static newDataValidation(){return new FDataValidationBuilder}newDataValidation(){return new FDataValidationBuilder}_initialize(injector){if(!injector.has(sheetsDataValidation.SheetDataValidationModel))return;const sheetDataValidationModel=injector.get(sheetsDataValidation.SheetDataValidationModel),commadnService=injector.get(core.ICommandService);this.disposeWithMe(sheetDataValidationModel.ruleChange$.subscribe(ruleChange=>{const{unitId,subUnitId,rule,oldRule,type}=ruleChange,target=this.getSheetTarget(unitId,subUnitId);if(!target)return;const{workbook,worksheet}=target,fRule=new FDataValidation(rule,worksheet.getSheet(),this._injector);this.fireEvent(this.Event.SheetDataValidationChanged,{origin:ruleChange,worksheet,workbook,changeType:type,oldRule,rule:fRule})})),this.disposeWithMe(sheetDataValidationModel.validStatusChange$.subscribe(statusChange=>{const{unitId,subUnitId,ruleId,status,row,col}=statusChange,target=this.getSheetTarget(unitId,subUnitId);if(!target)return;const{workbook,worksheet}=target,rule=worksheet.getDataValidation(ruleId);rule&&this.fireEvent(this.Event.SheetDataValidatorStatusChanged,{workbook,worksheet,row,column:col,rule,status})})),this.disposeWithMe(commadnService.beforeCommandExecuted(commandInfo=>{switch(commandInfo.id){case sheetsDataValidation.AddSheetDataValidationCommand.id:{const params=commandInfo.params,target=this.getSheetTarget(params.unitId,params.subUnitId);if(!target)return;const{workbook,worksheet}=target,eventParams={worksheet,workbook,rule:params.rule};if(this.fireEvent(this.Event.BeforeSheetDataValidationAdd,eventParams),eventParams.cancel)throw new core.CanceledError;break}case sheetsDataValidation.UpdateSheetDataValidationSettingCommand.id:{const params=commandInfo.params,target=this.getSheetTarget(params.unitId,params.subUnitId);if(!target)return;const{workbook,worksheet}=target,rule=worksheet.getDataValidation(params.ruleId);if(!rule)return;const eventParams={worksheet,workbook,rule,ruleId:params.ruleId,newCriteria:params.setting};if(this.fireEvent(this.Event.BeforeSheetDataValidationCriteriaUpdate,eventParams),eventParams.cancel)throw new core.CanceledError;break}case sheetsDataValidation.UpdateSheetDataValidationRangeCommand.id:{const params=commandInfo.params,target=this.getSheetTarget(params.unitId,params.subUnitId);if(!target)return;const{workbook,worksheet}=target,rule=worksheet.getDataValidation(params.ruleId);if(!rule)return;const eventParams={worksheet,workbook,rule,ruleId:params.ruleId,newRanges:params.ranges};if(this.fireEvent(this.Event.BeforeSheetDataValidationRangeUpdate,eventParams),eventParams.cancel)throw new core.CanceledError;break}case sheetsDataValidation.UpdateSheetDataValidationOptionsCommand.id:{const params=commandInfo.params,target=this.getSheetTarget(params.unitId,params.subUnitId);if(!target)return;const{workbook,worksheet}=target,rule=worksheet.getDataValidation(params.ruleId);if(!rule)return;const eventParams={worksheet,workbook,rule,ruleId:params.ruleId,newOptions:params.options};if(this.fireEvent(this.Event.BeforeSheetDataValidationOptionsUpdate,eventParams),eventParams.cancel)throw new core.CanceledError;break}case sheetsDataValidation.RemoveSheetDataValidationCommand.id:{const params=commandInfo.params,target=this.getSheetTarget(params.unitId,params.subUnitId);if(!target)return;const{workbook,worksheet}=target,rule=worksheet.getDataValidation(params.ruleId);if(!rule)return;const eventParams={worksheet,workbook,rule,ruleId:params.ruleId};if(this.fireEvent(this.Event.BeforeSheetDataValidationDelete,eventParams),eventParams.cancel)throw new core.CanceledError;break}case sheetsDataValidation.RemoveSheetAllDataValidationCommand.id:{const params=commandInfo.params,target=this.getSheetTarget(params.unitId,params.subUnitId);if(!target)return;const{workbook,worksheet}=target,eventParams={worksheet,workbook,rules:worksheet.getDataValidations()};if(this.fireEvent(this.Event.BeforeSheetDataValidationDeleteAll,eventParams),eventParams.cancel)throw new core.CanceledError;break}}}))}};__name(_FUnvierDataValidationMixin,"FUnvierDataValidationMixin");let FUnvierDataValidationMixin=_FUnvierDataValidationMixin;core.FUniver.extend(FUnvierDataValidationMixin);const _FWorkbookDataValidationMixin=class _FWorkbookDataValidationMixin extends facade.FWorkbook{_initialize(){Object.defineProperty(this,"_dataValidationModel",{get(){return this._injector.get(sheetsDataValidation.SheetDataValidationModel)}})}getValidatorStatus(){return this._injector.get(sheetsDataValidation.SheetsDataValidationValidatorService).validatorWorkbook(this._workbook.getUnitId())}onDataValidationChange(callback){return core.toDisposable(this._dataValidationModel.ruleChange$.pipe(rxjs.filter(change=>change.unitId===this._workbook.getUnitId())).subscribe(callback))}onDataValidationStatusChange(callback){return core.toDisposable(this._dataValidationModel.validStatusChange$.pipe(rxjs.filter(change=>change.unitId===this._workbook.getUnitId())).subscribe(callback))}onBeforeAddDataValidation(callback){return core.toDisposable(this._commandService.beforeCommandExecuted((commandInfo,options)=>{const params=commandInfo.params;if(commandInfo.id===sheetsDataValidation.AddSheetDataValidationCommand.id){if(params.unitId!==this._workbook.getUnitId())return;if(callback(params,options)===!1)throw new Error("Command is stopped by the hook onBeforeAddDataValidation")}}))}onBeforeUpdateDataValidationCriteria(callback){return core.toDisposable(this._commandService.beforeCommandExecuted((commandInfo,options)=>{const params=commandInfo.params;if(commandInfo.id===sheetsDataValidation.UpdateSheetDataValidationSettingCommand.id){if(params.unitId!==this._workbook.getUnitId())return;if(callback(params,options)===!1)throw new Error("Command is stopped by the hook onBeforeUpdateDataValidationCriteria")}}))}onBeforeUpdateDataValidationRange(callback){return core.toDisposable(this._commandService.beforeCommandExecuted((commandInfo,options)=>{const params=commandInfo.params;if(commandInfo.id===sheetsDataValidation.UpdateSheetDataValidationRangeCommand.id){if(params.unitId!==this._workbook.getUnitId())return;if(callback(params,options)===!1)throw new Error("Command is stopped by the hook onBeforeUpdateDataValidationRange")}}))}onBeforeUpdateDataValidationOptions(callback){return core.toDisposable(this._commandService.beforeCommandExecuted((commandInfo,options)=>{const params=commandInfo.params;if(commandInfo.id===sheetsDataValidation.UpdateSheetDataValidationOptionsCommand.id){if(params.unitId!==this._workbook.getUnitId())return;if(callback(params,options)===!1)throw new Error("Command is stopped by the hook onBeforeUpdateDataValidationOptions")}}))}onBeforeDeleteDataValidation(callback){return core.toDisposable(this._commandService.beforeCommandExecuted((commandInfo,options)=>{const params=commandInfo.params;if(commandInfo.id===sheetsDataValidation.RemoveSheetDataValidationCommand.id){if(params.unitId!==this._workbook.getUnitId())return;if(callback(params,options)===!1)throw new Error("Command is stopped by the hook onBeforeDeleteDataValidation")}}))}onBeforeDeleteAllDataValidation(callback){return core.toDisposable(this._commandService.beforeCommandExecuted((commandInfo,options)=>{const params=commandInfo.params;if(commandInfo.id===sheetsDataValidation.RemoveSheetAllDataValidationCommand.id){if(params.unitId!==this._workbook.getUnitId())return;if(callback(params,options)===!1)throw new Error("Command is stopped by the hook onBeforeDeleteAllDataValidation")}}))}};__name(_FWorkbookDataValidationMixin,"FWorkbookDataValidationMixin");let FWorkbookDataValidationMixin=_FWorkbookDataValidationMixin;facade.FWorkbook.extend(FWorkbookDataValidationMixin);const _FWorksheetDataValidationMixin=class _FWorksheetDataValidationMixin extends facade.FWorksheet{getDataValidations(){return this._injector.get(dataValidation.DataValidationModel).getRules(this._workbook.getUnitId(),this._worksheet.getSheetId()).map(rule=>new FDataValidation(rule,this._worksheet,this._injector))}getValidatorStatus(){return this._injector.get(sheetsDataValidation.SheetsDataValidationValidatorService).validatorWorksheet(this._workbook.getUnitId(),this._worksheet.getSheetId())}getValidatorStatusAsync(){return this.getValidatorStatus()}getDataValidation(ruleId){const rule=this._injector.get(dataValidation.DataValidationModel).getRuleById(this._workbook.getUnitId(),this._worksheet.getSheetId(),ruleId);return rule?new FDataValidation(rule,this._worksheet,this._injector):null}};__name(_FWorksheetDataValidationMixin,"FWorksheetDataValidationMixin");let FWorksheetDataValidationMixin=_FWorksheetDataValidationMixin;facade.FWorksheet.extend(FWorksheetDataValidationMixin);const _FDataValidationEvent=class _FDataValidationEvent{get SheetDataValidationChanged(){return"SheetDataValidationChanged"}get SheetDataValidatorStatusChanged(){return"SheetDataValidatorStatusChanged"}get BeforeSheetDataValidationAdd(){return"BeforeSheetDataValidationAdd"}get BeforeSheetDataValidationDelete(){return"BeforeSheetDataValidationDelete"}get BeforeSheetDataValidationDeleteAll(){return"BeforeSheetDataValidationDeleteAll"}get BeforeSheetDataValidationCriteriaUpdate(){return"BeforeSheetDataValidationCriteriaUpdate"}get BeforeSheetDataValidationRangeUpdate(){return"BeforeSheetDataValidationRangeUpdate"}get BeforeSheetDataValidationOptionsUpdate(){return"BeforeSheetDataValidationOptionsUpdate"}};__name(_FDataValidationEvent,"FDataValidationEvent");let FDataValidationEvent=_FDataValidationEvent;core.FEventName.extend(FDataValidationEvent),exports2.FDataValidation=FDataValidation,exports2.FDataValidationBuilder=FDataValidationBuilder,Object.defineProperty(exports2,Symbol.toStringTag,{value:"Module"})});
1
+ (function(u,i){typeof exports=="object"&&typeof module<"u"?i(exports,require("@univerjs/sheets-data-validation"),require("@univerjs/sheets/facade"),require("@univerjs/core"),require("@univerjs/data-validation"),require("@univerjs/engine-formula"),require("rxjs")):typeof define=="function"&&define.amd?define(["exports","@univerjs/sheets-data-validation","@univerjs/sheets/facade","@univerjs/core","@univerjs/data-validation","@univerjs/engine-formula","rxjs"],i):(u=typeof globalThis<"u"?globalThis:u||self,i(u.UniverSheetsDataValidationFacade={},u.UniverSheetsDataValidation,u.UniverSheetsFacade,u.UniverCore,u.UniverDataValidation,u.UniverEngineFormula,u.rxjs))})(this,function(u,i,m,a,D,v,E){"use strict";var U=Object.defineProperty;var A=(u,i,m)=>i in u?U(u,i,{enumerable:!0,configurable:!0,writable:!0,value:m}):u[i]=m;var S=(u,i,m)=>A(u,typeof i!="symbol"?i+"":i,m);class _{constructor(t){S(this,"_rule");this._rule=t!=null?t:{uid:a.generateRandomId(),ranges:void 0,type:a.DataValidationType.CUSTOM}}build(){return new g(this._rule)}copy(){return new _({...this._rule,uid:a.generateRandomId()})}getAllowInvalid(){return this._rule.errorStyle!==a.DataValidationErrorStyle.STOP}getCriteriaType(){return this._rule.type}getCriteriaValues(){return[this._rule.operator,this._rule.formula1,this._rule.formula2]}getHelpText(){return this._rule.error}requireCheckbox(t,e){return this._rule.type=a.DataValidationType.CHECKBOX,this._rule.formula1=t,this._rule.formula2=e,this}requireDateAfter(t){return this._rule.type=a.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.operator=a.DataValidationOperator.GREATER_THAN,this}requireDateBefore(t){return this._rule.type=a.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.formula2=void 0,this._rule.operator=a.DataValidationOperator.LESS_THAN,this}requireDateBetween(t,e){return this._rule.type=a.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.formula2=e.toLocaleDateString(),this._rule.operator=a.DataValidationOperator.BETWEEN,this}requireDateEqualTo(t){return this._rule.type=a.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.formula2=void 0,this._rule.operator=a.DataValidationOperator.EQUAL,this}requireDateNotBetween(t,e){return this._rule.type=a.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.formula2=e.toLocaleDateString(),this._rule.operator=a.DataValidationOperator.NOT_BETWEEN,this}requireDateOnOrAfter(t){return this._rule.type=a.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.formula2=void 0,this._rule.operator=a.DataValidationOperator.GREATER_THAN_OR_EQUAL,this}requireDateOnOrBefore(t){return this._rule.type=a.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.formula2=void 0,this._rule.operator=a.DataValidationOperator.LESS_THAN_OR_EQUAL,this}requireFormulaSatisfied(t){return this._rule.type=a.DataValidationType.CUSTOM,this._rule.formula1=t,this._rule.formula2=void 0,this}requireNumberBetween(t,e,r){return this._rule.formula1=`${t}`,this._rule.formula2=`${e}`,this._rule.operator=a.DataValidationOperator.BETWEEN,this._rule.type=r?a.DataValidationType.WHOLE:a.DataValidationType.DECIMAL,this}requireNumberEqualTo(t,e){return this._rule.formula1=`${t}`,this._rule.formula2=void 0,this._rule.operator=a.DataValidationOperator.EQUAL,this._rule.type=e?a.DataValidationType.WHOLE:a.DataValidationType.DECIMAL,this}requireNumberGreaterThan(t,e){return this._rule.formula1=`${t}`,this._rule.formula2=void 0,this._rule.operator=a.DataValidationOperator.GREATER_THAN,this._rule.type=e?a.DataValidationType.WHOLE:a.DataValidationType.DECIMAL,this}requireNumberGreaterThanOrEqualTo(t,e){return this._rule.formula1=`${t}`,this._rule.formula2=void 0,this._rule.operator=a.DataValidationOperator.GREATER_THAN_OR_EQUAL,this._rule.type=e?a.DataValidationType.WHOLE:a.DataValidationType.DECIMAL,this}requireNumberLessThan(t,e){return this._rule.formula1=`${t}`,this._rule.formula2=void 0,this._rule.operator=a.DataValidationOperator.LESS_THAN,this._rule.type=e?a.DataValidationType.WHOLE:a.DataValidationType.DECIMAL,this}requireNumberLessThanOrEqualTo(t,e){return this._rule.formula1=`${t}`,this._rule.formula2=void 0,this._rule.operator=a.DataValidationOperator.LESS_THAN_OR_EQUAL,this._rule.type=e?a.DataValidationType.WHOLE:a.DataValidationType.DECIMAL,this}requireNumberNotBetween(t,e,r){return this._rule.formula1=`${t}`,this._rule.formula2=`${e}`,this._rule.operator=a.DataValidationOperator.NOT_BETWEEN,this._rule.type=r?a.DataValidationType.WHOLE:a.DataValidationType.DECIMAL,this}requireNumberNotEqualTo(t,e){return this._rule.formula1=`${t}`,this._rule.formula2=void 0,this._rule.operator=a.DataValidationOperator.NOT_EQUAL,this._rule.type=e?a.DataValidationType.WHOLE:a.DataValidationType.DECIMAL,this}requireValueInList(t,e,r){return this._rule.type=e?a.DataValidationType.LIST_MULTIPLE:a.DataValidationType.LIST,this._rule.formula1=t.join(","),this._rule.formula2=void 0,this._rule.showDropDown=r!=null?r:!0,this}requireValueInRange(t,e,r){return this._rule.type=e?a.DataValidationType.LIST_MULTIPLE:a.DataValidationType.LIST,this._rule.formula1=`=${v.serializeRangeToRefString({unitId:t.getUnitId(),sheetName:t.getSheetName(),range:t.getRange()})}`,this._rule.formula2=void 0,this._rule.showDropDown=r!=null?r:!0,this}setAllowInvalid(t){return this._rule.errorStyle=t?a.DataValidationErrorStyle.WARNING:a.DataValidationErrorStyle.STOP,this}setAllowBlank(t){return this._rule.allowBlank=t,this}setOptions(t){return Object.assign(this._rule,t),this}}class g{constructor(t,e,r){S(this,"rule");S(this,"_worksheet");S(this,"_injector");this._injector=r,this.rule=t,this._worksheet=e}getAllowInvalid(){return this.rule.errorStyle!==a.DataValidationErrorStyle.STOP}getCriteriaType(){return this.rule.type}getCriteriaValues(){return[this.rule.operator,this.rule.formula1,this.rule.formula2]}getHelpText(){return this.rule.error}copy(){return new _(this.rule)}getApplied(){if(!this._worksheet)return!1;const e=this._injector.get(D.DataValidationModel).getRuleById(this._worksheet.getUnitId(),this._worksheet.getSheetId(),this.rule.uid);return!!(e&&e.ranges.length)}getRanges(){if(!this.getApplied())return[];const t=this._injector.get(a.IUniverInstanceService).getUnit(this._worksheet.getUnitId());return this.rule.ranges.map(e=>this._injector.createInstance(m.FRange,t,this._worksheet,e))}getUnitId(){var t;return(t=this._worksheet)==null?void 0:t.getUnitId()}getSheetId(){var t;return(t=this._worksheet)==null?void 0:t.getSheetId()}setCriteria(t,e,r=!0){if(this.getApplied()&&!this._injector.get(a.ICommandService).syncExecuteCommand(i.UpdateSheetDataValidationSettingCommand.id,{unitId:this.getUnitId(),subUnitId:this.getSheetId(),ruleId:this.rule.uid,setting:{operator:e[0],formula1:e[1],formula2:e[2],type:this.rule.type,allowBlank:r}}))throw new Error("setCriteria failed");return this.rule.operator=e[0],this.rule.formula1=e[1],this.rule.formula2=e[2],this.rule.type=t,this.rule.allowBlank=r,this}setOptions(t){if(this.getApplied()&&!this._injector.get(a.ICommandService).syncExecuteCommand(i.UpdateSheetDataValidationOptionsCommand.id,{unitId:this.getUnitId(),subUnitId:this.getSheetId(),ruleId:this.rule.uid,options:{...D.getRuleOptions(this.rule),...t}}))throw new Error("setOptions failed");return Object.assign(this.rule,t),this}setRanges(t){if(this.getApplied()&&!this._injector.get(a.ICommandService).syncExecuteCommand(i.UpdateSheetDataValidationRangeCommand.id,{unitId:this.getUnitId(),subUnitId:this.getSheetId(),ruleId:this.rule.uid,ranges:t.map(o=>o.getRange())}))throw new Error("setRanges failed");return this.rule.ranges=t.map(e=>e.getRange()),this}delete(){return this.getApplied()?this._injector.get(a.ICommandService).syncExecuteCommand(i.RemoveSheetDataValidationCommand.id,{unitId:this.getUnitId(),subUnitId:this.getSheetId(),ruleId:this.rule.uid}):!1}}class w extends m.FRange{setDataValidation(t){if(!t)return this._commandService.syncExecuteCommand(i.ClearRangeDataValidationCommand.id,{unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),ranges:[this._range]}),this;const e={unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),rule:{...t.rule,ranges:[this._range]}};return this._commandService.syncExecuteCommand(i.AddSheetDataValidationCommand.id,e),this}getDataValidation(){const e=this._injector.get(i.SheetsDataValidationValidatorService).getDataValidation(this._workbook.getUnitId(),this._worksheet.getSheetId(),[this._range]);return e&&new g(e,this._worksheet,this._injector)}getDataValidations(){return this._injector.get(i.SheetsDataValidationValidatorService).getDataValidations(this._workbook.getUnitId(),this._worksheet.getSheetId(),[this._range]).map(e=>new g(e,this._worksheet,this._injector))}async getValidatorStatus(){return this._injector.get(i.SheetsDataValidationValidatorService).validatorRanges(this._workbook.getUnitId(),this._worksheet.getSheetId(),[this._range])}}m.FRange.extend(w);class T extends a.FUniver{static newDataValidation(){return new _}newDataValidation(){return new _}_initialize(t){if(!t.has(i.SheetDataValidationModel))return;const e=t.get(i.SheetDataValidationModel),r=t.get(a.ICommandService);this.disposeWithMe(e.ruleChange$.subscribe(o=>{const{unitId:n,subUnitId:s,rule:p,oldRule:l,type:d}=o,h=this.getSheetTarget(n,s);if(!h)return;const{workbook:c,worksheet:V}=h,I=new g(p,V.getSheet(),this._injector);this.fireEvent(this.Event.SheetDataValidationChanged,{origin:o,worksheet:V,workbook:c,changeType:d,oldRule:l,rule:I})})),this.disposeWithMe(e.validStatusChange$.subscribe(o=>{const{unitId:n,subUnitId:s,ruleId:p,status:l,row:d,col:h}=o,c=this.getSheetTarget(n,s);if(!c)return;const{workbook:V,worksheet:I}=c,k=I.getDataValidation(p);k&&this.fireEvent(this.Event.SheetDataValidatorStatusChanged,{workbook:V,worksheet:I,row:d,column:h,rule:k,status:l})})),this.disposeWithMe(r.beforeCommandExecuted(o=>{switch(o.id){case i.AddSheetDataValidationCommand.id:{const n=o.params,s=this.getSheetTarget(n.unitId,n.subUnitId);if(!s)return;const{workbook:p,worksheet:l}=s,d={worksheet:l,workbook:p,rule:n.rule};if(this.fireEvent(this.Event.BeforeSheetDataValidationAdd,d),d.cancel)throw new a.CanceledError;break}case i.UpdateSheetDataValidationSettingCommand.id:{const n=o.params,s=this.getSheetTarget(n.unitId,n.subUnitId);if(!s)return;const{workbook:p,worksheet:l}=s,d=l.getDataValidation(n.ruleId);if(!d)return;const h={worksheet:l,workbook:p,rule:d,ruleId:n.ruleId,newCriteria:n.setting};if(this.fireEvent(this.Event.BeforeSheetDataValidationCriteriaUpdate,h),h.cancel)throw new a.CanceledError;break}case i.UpdateSheetDataValidationRangeCommand.id:{const n=o.params,s=this.getSheetTarget(n.unitId,n.subUnitId);if(!s)return;const{workbook:p,worksheet:l}=s,d=l.getDataValidation(n.ruleId);if(!d)return;const h={worksheet:l,workbook:p,rule:d,ruleId:n.ruleId,newRanges:n.ranges};if(this.fireEvent(this.Event.BeforeSheetDataValidationRangeUpdate,h),h.cancel)throw new a.CanceledError;break}case i.UpdateSheetDataValidationOptionsCommand.id:{const n=o.params,s=this.getSheetTarget(n.unitId,n.subUnitId);if(!s)return;const{workbook:p,worksheet:l}=s,d=l.getDataValidation(n.ruleId);if(!d)return;const h={worksheet:l,workbook:p,rule:d,ruleId:n.ruleId,newOptions:n.options};if(this.fireEvent(this.Event.BeforeSheetDataValidationOptionsUpdate,h),h.cancel)throw new a.CanceledError;break}case i.RemoveSheetDataValidationCommand.id:{const n=o.params,s=this.getSheetTarget(n.unitId,n.subUnitId);if(!s)return;const{workbook:p,worksheet:l}=s,d=l.getDataValidation(n.ruleId);if(!d)return;const h={worksheet:l,workbook:p,rule:d,ruleId:n.ruleId};if(this.fireEvent(this.Event.BeforeSheetDataValidationDelete,h),h.cancel)throw new a.CanceledError;break}case i.RemoveSheetAllDataValidationCommand.id:{const n=o.params,s=this.getSheetTarget(n.unitId,n.subUnitId);if(!s)return;const{workbook:p,worksheet:l}=s,d={worksheet:l,workbook:p,rules:l.getDataValidations()};if(this.fireEvent(this.Event.BeforeSheetDataValidationDeleteAll,d),d.cancel)throw new a.CanceledError;break}}}))}}a.FUniver.extend(T);class b extends m.FWorkbook{_initialize(){Object.defineProperty(this,"_dataValidationModel",{get(){return this._injector.get(i.SheetDataValidationModel)}})}getValidatorStatus(){return this._injector.get(i.SheetsDataValidationValidatorService).validatorWorkbook(this._workbook.getUnitId())}onDataValidationChange(t){return a.toDisposable(this._dataValidationModel.ruleChange$.pipe(E.filter(e=>e.unitId===this._workbook.getUnitId())).subscribe(t))}onDataValidationStatusChange(t){return a.toDisposable(this._dataValidationModel.validStatusChange$.pipe(E.filter(e=>e.unitId===this._workbook.getUnitId())).subscribe(t))}onBeforeAddDataValidation(t){return a.toDisposable(this._commandService.beforeCommandExecuted((e,r)=>{const o=e.params;if(e.id===i.AddSheetDataValidationCommand.id){if(o.unitId!==this._workbook.getUnitId())return;if(t(o,r)===!1)throw new Error("Command is stopped by the hook onBeforeAddDataValidation")}}))}onBeforeUpdateDataValidationCriteria(t){return a.toDisposable(this._commandService.beforeCommandExecuted((e,r)=>{const o=e.params;if(e.id===i.UpdateSheetDataValidationSettingCommand.id){if(o.unitId!==this._workbook.getUnitId())return;if(t(o,r)===!1)throw new Error("Command is stopped by the hook onBeforeUpdateDataValidationCriteria")}}))}onBeforeUpdateDataValidationRange(t){return a.toDisposable(this._commandService.beforeCommandExecuted((e,r)=>{const o=e.params;if(e.id===i.UpdateSheetDataValidationRangeCommand.id){if(o.unitId!==this._workbook.getUnitId())return;if(t(o,r)===!1)throw new Error("Command is stopped by the hook onBeforeUpdateDataValidationRange")}}))}onBeforeUpdateDataValidationOptions(t){return a.toDisposable(this._commandService.beforeCommandExecuted((e,r)=>{const o=e.params;if(e.id===i.UpdateSheetDataValidationOptionsCommand.id){if(o.unitId!==this._workbook.getUnitId())return;if(t(o,r)===!1)throw new Error("Command is stopped by the hook onBeforeUpdateDataValidationOptions")}}))}onBeforeDeleteDataValidation(t){return a.toDisposable(this._commandService.beforeCommandExecuted((e,r)=>{const o=e.params;if(e.id===i.RemoveSheetDataValidationCommand.id){if(o.unitId!==this._workbook.getUnitId())return;if(t(o,r)===!1)throw new Error("Command is stopped by the hook onBeforeDeleteDataValidation")}}))}onBeforeDeleteAllDataValidation(t){return a.toDisposable(this._commandService.beforeCommandExecuted((e,r)=>{const o=e.params;if(e.id===i.RemoveSheetAllDataValidationCommand.id){if(o.unitId!==this._workbook.getUnitId())return;if(t(o,r)===!1)throw new Error("Command is stopped by the hook onBeforeDeleteAllDataValidation")}}))}}m.FWorkbook.extend(b);class y extends m.FWorksheet{getDataValidations(){return this._injector.get(D.DataValidationModel).getRules(this._workbook.getUnitId(),this._worksheet.getSheetId()).map(e=>new g(e,this._worksheet,this._injector))}getValidatorStatus(){return this._injector.get(i.SheetsDataValidationValidatorService).validatorWorksheet(this._workbook.getUnitId(),this._worksheet.getSheetId())}getValidatorStatusAsync(){return this.getValidatorStatus()}getDataValidation(t){const r=this._injector.get(D.DataValidationModel).getRuleById(this._workbook.getUnitId(),this._worksheet.getSheetId(),t);return r?new g(r,this._worksheet,this._injector):null}}m.FWorksheet.extend(y);class C{get SheetDataValidationChanged(){return"SheetDataValidationChanged"}get SheetDataValidatorStatusChanged(){return"SheetDataValidatorStatusChanged"}get BeforeSheetDataValidationAdd(){return"BeforeSheetDataValidationAdd"}get BeforeSheetDataValidationDelete(){return"BeforeSheetDataValidationDelete"}get BeforeSheetDataValidationDeleteAll(){return"BeforeSheetDataValidationDeleteAll"}get BeforeSheetDataValidationCriteriaUpdate(){return"BeforeSheetDataValidationCriteriaUpdate"}get BeforeSheetDataValidationRangeUpdate(){return"BeforeSheetDataValidationRangeUpdate"}get BeforeSheetDataValidationOptionsUpdate(){return"BeforeSheetDataValidationOptionsUpdate"}}a.FEventName.extend(C),u.FDataValidation=g,u.FDataValidationBuilder=_,Object.defineProperty(u,Symbol.toStringTag,{value:"Module"})});
package/lib/umd/index.js CHANGED
@@ -1 +1 @@
1
- (function(global,factory){typeof exports=="object"&&typeof module<"u"?factory(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"],factory):(global=typeof globalThis<"u"?globalThis:global||self,factory(global.UniverSheetsDataValidation={},global.UniverCore,global.UniverDataValidation,global.UniverSheets,global.rxjs,global.UniverSheetsFormula,global.UniverEngineFormula))})(this,function(exports2,core,dataValidation,sheets,rxjs,sheetsFormula,engineFormula){"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$a=Object.defineProperty,__getOwnPropDesc$a=Object.getOwnPropertyDescriptor,__decorateClass$a=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$a(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$a(target,key,result),result},"__decorateClass$a"),__decorateParam$a=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$a");exports2.DataValidationCacheService=(_a=class extends core.Disposable{constructor(_commandService,_univerInstanceService){super();__publicField(this,"_cacheMatrix",new Map);__publicField(this,"_dirtyRanges$",new rxjs.Subject);__publicField(this,"dirtyRanges$",this._dirtyRanges$.asObservable());this._commandService=_commandService,this._univerInstanceService=_univerInstanceService,this._initDirtyRanges(),this._initSheetRemove()}_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.markRangeDirty(unitId,subUnitId,[range])}}}))}_initSheetRemove(){this.disposeWithMe(this._commandService.onCommandExecuted(commandInfo=>{var _a2;if(commandInfo.id===sheets.RemoveSheetMutation.id){const{unitId,subUnitId}=commandInfo.params;(_a2=this._cacheMatrix.get(unitId))==null||_a2.delete(subUnitId)}})),this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(univerInstance=>{univerInstance.type===core.UniverInstanceType.UNIVER_SHEET&&this._cacheMatrix.delete(univerInstance.getUnitId())}))}_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)}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})}_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)}},__name(_a,"DataValidationCacheService"),_a),exports2.DataValidationCacheService=__decorateClass$a([__decorateParam$a(0,core.Inject(core.ICommandService)),__decorateParam$a(1,core.Inject(core.IUniverInstanceService))],exports2.DataValidationCacheService);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");function shouldOffsetFormulaByRange(type,validatorRegistryService){var _a2;const validator=validatorRegistryService.getValidatorItem(type);return(_a2=validator==null?void 0:validator.offsetFormulaByRange)!=null?_a2:!1}__name(shouldOffsetFormulaByRange,"shouldOffsetFormulaByRange");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.DataValidationCustomFormulaService=(_b=class extends core.Disposable{constructor(_instanceSrv,_registerOtherFormulaService,_dataValidationModel,_dataValidationCacheService,_validatorRegistryService){super();__publicField(this,"_ruleFormulaMap",new Map);__publicField(this,"_ruleFormulaMap2",new Map);this._instanceSrv=_instanceSrv,this._registerOtherFormulaService=_registerOtherFormulaService,this._dataValidationModel=_dataValidationModel,this._dataValidationCacheService=_dataValidationCacheService,this._validatorRegistryService=_validatorRegistryService,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],{ruleFormulaMap}=this._ensureMaps(unitId,subUnitId);results.forEach(result=>{var _a2,_b2;const ruleInfo=ruleFormulaMap.get((_a2=result.extra)==null?void 0:_a2.ruleId),rule=this._dataValidationModel.getRuleById(unitId,subUnitId,(_b2=result.extra)==null?void 0:_b2.ruleId);rule&&ruleInfo&&this._dataValidationCacheService.markRangeDirty(unitId,subUnitId,rule.ranges)})}}}))}_ensureMaps(unitId,subUnitId){let ruleFormulaUnitMap=this._ruleFormulaMap.get(unitId),ruleFormulaUnitMap2=this._ruleFormulaMap2.get(unitId);ruleFormulaUnitMap||(ruleFormulaUnitMap=new Map,this._ruleFormulaMap.set(unitId,ruleFormulaUnitMap)),ruleFormulaUnitMap2||(ruleFormulaUnitMap2=new Map,this._ruleFormulaMap2.set(unitId,ruleFormulaUnitMap2));let ruleFormulaMap=ruleFormulaUnitMap.get(subUnitId);ruleFormulaMap||(ruleFormulaMap=new Map,ruleFormulaUnitMap.set(subUnitId,ruleFormulaMap));let ruleFormulaMap2=ruleFormulaUnitMap2.get(subUnitId);return ruleFormulaMap2||(ruleFormulaMap2=new Map,ruleFormulaUnitMap2.set(subUnitId,ruleFormulaMap2)),{ruleFormulaMap,ruleFormulaMap2}}_registerFormula(unitId,subUnitId,ruleId,formulaString,ranges){return this._registerOtherFormulaService.registerFormulaWithRange(unitId,subUnitId,formulaString,ranges,{ruleId})}deleteByRuleId(unitId,subUnitId,ruleId){const{ruleFormulaMap,ruleFormulaMap2}=this._ensureMaps(unitId,subUnitId),rule=this._dataValidationModel.getRuleById(unitId,subUnitId,ruleId),formulaInfo=ruleFormulaMap.get(ruleId);if(!rule||!formulaInfo)return;const current=ruleFormulaMap.get(ruleId);current&&(ruleFormulaMap.delete(ruleId),this._registerOtherFormulaService.deleteFormula(unitId,subUnitId,[current.formulaId]));const current2=ruleFormulaMap2.get(ruleId);current2&&(ruleFormulaMap2.delete(ruleId),this._registerOtherFormulaService.deleteFormula(unitId,subUnitId,[current2.formulaId]))}_addFormulaByRange(unitId,subUnitId,ruleId,formula,formula2,ranges){const{ruleFormulaMap,ruleFormulaMap2}=this._ensureMaps(unitId,subUnitId),originRow=ranges[0].startRow,originCol=ranges[0].startColumn;if(formula&&core.isFormulaString(formula)){const formulaId=this._registerFormula(unitId,subUnitId,ruleId,formula,ranges);ruleFormulaMap.set(ruleId,{formula,originCol,originRow,formulaId})}if(formula2&&core.isFormulaString(formula2)){const formulaId2=this._registerFormula(unitId,subUnitId,ruleId,formula2,ranges);ruleFormulaMap2.set(ruleId,{formula:formula2,originCol,originRow,formulaId:formulaId2})}}addRule(unitId,subUnitId,rule){if(shouldOffsetFormulaByRange(rule.type,this._validatorRegistryService)){const{ranges,formula1,formula2,uid:ruleId}=rule;this._addFormulaByRange(unitId,subUnitId,ruleId,formula1,formula2,ranges)}}async getCellFormulaValue(unitId,subUnitId,ruleId,row,column){var _a2,_b2;const{ruleFormulaMap}=this._ensureMaps(unitId,subUnitId),current=ruleFormulaMap.get(ruleId);if(!current)return Promise.resolve(void 0);const result=await this._registerOtherFormulaService.getFormulaValue(unitId,subUnitId,current.formulaId),{originRow,originCol}=current,offsetRow=row-originRow,offsetCol=column-originCol;return getFormulaCellData((_b2=(_a2=result==null?void 0:result.result)==null?void 0:_a2[offsetRow])==null?void 0:_b2[offsetCol])}async getCellFormula2Value(unitId,subUnitId,ruleId,row,column){var _a2,_b2;const{ruleFormulaMap2}=this._ensureMaps(unitId,subUnitId),current=ruleFormulaMap2.get(ruleId);if(!current)return Promise.resolve(void 0);const result=await this._registerOtherFormulaService.getFormulaValue(unitId,subUnitId,current.formulaId),{originRow,originCol}=current,offsetRow=row-originRow,offsetCol=column-originCol;return getFormulaCellData((_b2=(_a2=result==null?void 0:result.result)==null?void 0:_a2[offsetRow])==null?void 0:_b2[offsetCol])}getCellFormulaValueSync(unitId,subUnitId,ruleId,row,column){var _a2,_b2;const{ruleFormulaMap}=this._ensureMaps(unitId,subUnitId),current=ruleFormulaMap.get(ruleId);if(!current)return;const result=this._registerOtherFormulaService.getFormulaValueSync(unitId,subUnitId,current.formulaId),{originRow,originCol}=current,offsetRow=row-originRow,offsetCol=column-originCol;return getFormulaCellData((_b2=(_a2=result==null?void 0:result.result)==null?void 0:_a2[offsetRow])==null?void 0:_b2[offsetCol])}getCellFormula2ValueSync(unitId,subUnitId,ruleId,row,column){var _a2,_b2;const{ruleFormulaMap2}=this._ensureMaps(unitId,subUnitId),current=ruleFormulaMap2.get(ruleId);if(!current)return;const result=this._registerOtherFormulaService.getFormulaValueSync(unitId,subUnitId,current.formulaId),{originRow,originCol}=current,offsetRow=row-originRow,offsetCol=column-originCol;return getFormulaCellData((_b2=(_a2=result==null?void 0:result.result)==null?void 0:_a2[offsetRow])==null?void 0:_b2[offsetCol])}getRuleFormulaInfo(unitId,subUnitId,ruleId){const{ruleFormulaMap}=this._ensureMaps(unitId,subUnitId);return ruleFormulaMap.get(ruleId)}},__name(_b,"DataValidationCustomFormulaService"),_b),exports2.DataValidationCustomFormulaService=__decorateClass$9([__decorateParam$9(0,core.IUniverInstanceService),__decorateParam$9(1,core.Inject(sheetsFormula.RegisterOtherFormulaService)),__decorateParam$9(2,core.Inject(dataValidation.DataValidationModel)),__decorateParam$9(3,core.Inject(exports2.DataValidationCacheService)),__decorateParam$9(4,core.Inject(dataValidation.DataValidatorRegistryService))],exports2.DataValidationCustomFormulaService);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");exports2.DataValidationFormulaService=(_c=class extends core.Disposable{constructor(_instanceService,_registerOtherFormulaService,_dataValidationCacheService,_dataValidationModel,_validatorRegistryService){super();__publicField(this,"_formulaRuleMap",new Map);this._instanceService=_instanceService,this._registerOtherFormulaService=_registerOtherFormulaService,this._dataValidationCacheService=_dataValidationCacheService,this._dataValidationModel=_dataValidationModel,this._validatorRegistryService=_validatorRegistryService,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}_registerSingleFormula(unitId,subUnitId,formula,ruleId){const ranges=[{startColumn:0,endColumn:0,startRow:0,endRow:0}];return this._registerOtherFormulaService.registerFormulaWithRange(unitId,subUnitId,formula,ranges,{ruleId})}addRule(unitId,subUnitId,rule){if(!shouldOffsetFormulaByRange(rule.type,this._validatorRegistryService)&&rule.type!==core.DataValidationType.CHECKBOX){const{formula1,formula2,uid:ruleId}=rule,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._registerSingleFormula(unitId,subUnitId,formula1,ruleId);item[0]={id,text:formula1}}if(isFormula2Legal){const id=this._registerSingleFormula(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)}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$8([__decorateParam$8(0,core.IUniverInstanceService),__decorateParam$8(1,core.Inject(sheetsFormula.RegisterOtherFormulaService)),__decorateParam$8(2,core.Inject(exports2.DataValidationCacheService)),__decorateParam$8(3,core.Inject(dataValidation.DataValidationModel)),__decorateParam$8(4,core.Inject(dataValidation.DataValidatorRegistryService))],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 _RuleMatrix=class _RuleMatrix{constructor(value,_unitId,_subUnitId,_univerInstanceService,_disableTree=!1){__publicField(this,"_map");__publicField(this,"_tree",new core.RBush);__publicField(this,"_dirty",!0);__publicField(this,"_buildTree",__name(()=>{if(!this._dirty||this._disableTree)return;this._tree.clear();const items=[];this._map.forEach((ranges,ruleId)=>{ranges.forEach(range=>{items.push({minX:range.startRow,maxX:range.endRow,minY:range.startColumn,maxY:range.endColumn,ruleId})})}),this._tree.load(items),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(ruleId,_ranges){if(!this._worksheet)return;const ranges=core.Rectangle.mergeRanges(_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()}addRule(rule){this._addRule(rule.uid,rule.ranges)}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(ruleId){this._map.delete(ruleId),this._dirty=!0,this._debonceBuildTree()}removeRule(rule){this._removeRule(rule.uid)}updateRange(ruleId,_newRanges){this._removeRule(ruleId),this._addRule(ruleId,_newRanges)}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 result=this._tree.search({minX:row,maxX:row,minY:col,maxY:col});return result.length>0?result[0].ruleId:void 0}};__name(_RuleMatrix,"RuleMatrix");let RuleMatrix=_RuleMatrix;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.SheetDataValidationModel=(_d=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),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),newRule={...oldRule,...payload.payload};payload.type===dataValidation.UpdateRuleType.RANGE?ruleMatrix.updateRange(ruleId,payload.payload):payload.type===dataValidation.UpdateRuleType.ALL&&ruleMatrix.updateRange(ruleId,payload.payload.ranges),this._dataValidationCacheService.removeRule(unitId,subUnitId,oldRule),this._dataValidationCacheService.addRule(unitId,subUnitId,newRule),this._dataValidationFormulaService.removeRule(unitId,subUnitId,oldRule.uid),this._dataValidationFormulaService.addRule(unitId,subUnitId,newRule),this._dataValidationCustomFormulaService.deleteByRuleId(unitId,subUnitId,ruleId),this._dataValidationCustomFormulaService.addRule(unitId,subUnitId,newRule)}_removeRule(unitId,subUnitId,oldRule){this._ensureRuleMatrix(unitId,subUnitId).removeRule(oldRule),this._dataValidationCacheService.removeRule(unitId,subUnitId,oldRule),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,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);if(validator){const cache=this._dataValidationCacheService.ensureCache(unitId,subUnitId),current=cache.getValue(row,col);return current==null?(cache.setValue(row,col,core.DataValidationStatus.VALIDATING),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;realStatus===core.DataValidationStatus.VALID?cache.realDeleteValue(row,col):cache.setValue(row,col,realStatus);const now=cache.getValue(row,col);onCompete(realStatus,current!==now)}),core.DataValidationStatus.VALIDATING):(onCompete(current!=null?current:core.DataValidationStatus.VALID,!1),current!=null?current:core.DataValidationStatus.VALID)}else return onCompete(core.DataValidationStatus.VALID,!1),core.DataValidationStatus.VALID}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(_d,"SheetDataValidationModel"),_d),exports2.SheetDataValidationModel=__decorateClass$7([__decorateParam$7(0,core.Inject(dataValidation.DataValidationModel)),__decorateParam$7(1,core.IUniverInstanceService),__decorateParam$7(2,core.Inject(dataValidation.DataValidatorRegistryService)),__decorateParam$7(3,core.Inject(exports2.DataValidationCacheService)),__decorateParam$7(4,core.Inject(exports2.DataValidationFormulaService)),__decorateParam$7(5,core.Inject(exports2.DataValidationCustomFormulaService)),__decorateParam$7(6,core.ICommandService)],exports2.SheetDataValidationModel);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,"offsetFormulaByRange",!1);__publicField(this,"_formulaService",this.injector.get(exports2.DataValidationFormulaService));__publicField(this,"skipDefaultFontRender",__name((rule,cellValue,pos)=>{const{unitId,subUnitId}=pos,{formula1,formula2}=this.parseFormulaSync(rule,unitId,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,_c2,_d2;const{formula1=CHECKBOX_FORMULA_1,formula2=CHECKBOX_FORMULA_2}=rule,results=await this._formulaService.getRuleFormulaResult(unitId,subUnitId,rule.uid),originFormula1=core.isFormulaString(formula1)?getFormulaResult((_b2=(_a2=results==null?void 0:results[0])==null?void 0:_a2.result)==null?void 0:_b2[0][0]):formula1,originFormula2=core.isFormulaString(formula2)?getFormulaResult((_d2=(_c2=results==null?void 0:results[1])==null?void 0:_c2.result)==null?void 0:_d2[0][0]):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,_c2,_d2;const{formula1=CHECKBOX_FORMULA_1,formula2=CHECKBOX_FORMULA_2}=rule,results=this._formulaService.getRuleFormulaResultSync(unitId,subUnitId,rule.uid),originFormula1=core.isFormulaString(formula1)?getFormulaResult((_b2=(_a2=results==null?void 0:results[0])==null?void 0:_a2.result)==null?void 0:_b2[0][0]):formula1,originFormula2=core.isFormulaString(formula2)?getFormulaResult((_d2=(_c2=results==null?void 0:results[1])==null?void 0:_c2.result)==null?void 0:_d2[0][0]):formula2,isFormulaValid=isLegalFormulaResult(String(originFormula1))&&isLegalFormulaResult(String(originFormula2));return{formula1:transformCheckboxValue(originFormula1),formula2:transformCheckboxValue(originFormula2),originFormula1,originFormula2,isFormulaValid}}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;const 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="{FORMULA1}",FORMULA2="{FORMULA2}";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 getTransformedFormula(lexerTreeBuilder,rule,position){const{formula1,formula2}=rule,originStartRow=rule.ranges[0].startRow,originStartColumn=rule.ranges[0].startColumn,offsetRow=position.row-originStartRow,offsetColumn=position.col-originStartColumn,transformedFormula1=core.isFormulaString(formula1)?lexerTreeBuilder.moveFormulaRefOffset(formula1,offsetColumn,offsetRow,!0):formula1,transformedFormula2=core.isFormulaString(formula2)?lexerTreeBuilder.moveFormulaRefOffset(formula2,offsetColumn,offsetRow,!0):formula2;return{transformedFormula1,transformedFormula2}}__name(getTransformedFormula,"getTransformedFormula");const 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(core.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,"_customFormulaService",this.injector.get(exports2.DataValidationCustomFormulaService));__publicField(this,"_lexerTreeBuilder",this.injector.get(engineFormula.LexerTreeBuilder))}async parseFormula(rule,unitId,subUnitId,row,column){const formulaResult1=await this._customFormulaService.getCellFormulaValue(unitId,subUnitId,rule.uid,row,column),formulaResult2=await this._customFormulaService.getCellFormula2Value(unitId,subUnitId,rule.uid,row,column),{formula1,formula2}=rule,isFormulaValid=isLegalFormulaResult(String(formulaResult1==null?void 0:formulaResult1.v))&&isLegalFormulaResult(String(formulaResult2==null?void 0:formulaResult2.v));return{formula1:transformDate2SerialNumber(core.isFormulaString(formula1)?formulaResult1==null?void 0:formulaResult1.v:formula1),formula2:transformDate2SerialNumber(core.isFormulaString(formula2)?formulaResult2==null?void 0:formulaResult2.v:formula2),isFormulaValid}}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 core.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)}}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,(_a2=rule.formula1)!=null?_a2:"").replace(FORMULA2,(_b2=rule.formula2)!=null?_b2:"");return`${this.titleStr} ${ruleName}`}generateRuleErrorMessage(rule,pos){if(!rule.operator)return this.titleStr;const{transformedFormula1,transformedFormula2}=getTransformedFormula(this._lexerTreeBuilder,rule,pos);return`${this.localeService.t(DateOperatorErrorTitleMap[rule.operator]).replace(FORMULA1,transformedFormula1!=null?transformedFormula1:"").replace(FORMULA2,transformedFormula2!=null?transformedFormula2:"")}`}};__name(_DateValidator,"DateValidator");let DateValidator=_DateValidator;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+"",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 OperatorErrorTitleMap={[core.DataValidationOperator.BETWEEN]:"dataValidation.errorMsg.between",[core.DataValidationOperator.EQUAL]:"dataValidation.errorMsg.equal",[core.DataValidationOperator.GREATER_THAN]:"dataValidation.errorMsg.greaterThan",[core.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.errorMsg.greaterThanOrEqual",[core.DataValidationOperator.LESS_THAN]:"dataValidation.errorMsg.lessThan",[core.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.errorMsg.lessThanOrEqual",[core.DataValidationOperator.NOT_BETWEEN]:"dataValidation.errorMsg.notBetween",[core.DataValidationOperator.NOT_EQUAL]:"dataValidation.errorMsg.notEqual"};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,"_customFormulaService",this.injector.get(exports2.DataValidationCustomFormulaService));__publicField(this,"id",core.DataValidationType.DECIMAL);__publicField(this,"_lexerTreeBuilder",this.injector.get(engineFormula.LexerTreeBuilder));__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,row,column){const formulaResult1=await this._customFormulaService.getCellFormulaValue(unitId,subUnitId,rule.uid,row,column),formulaResult2=await this._customFormulaService.getCellFormula2Value(unitId,subUnitId,rule.uid,row,column),{formula1,formula2}=rule,isFormulaValid=isLegalFormulaResult(String(formulaResult1==null?void 0:formulaResult1.v))&&isLegalFormulaResult(String(formulaResult2==null?void 0:formulaResult2.v));return{formula1:this._parseNumber(core.isFormulaString(formula1)?formulaResult1==null?void 0:formulaResult1.v:formula1),formula2:this._parseNumber(core.isFormulaString(formula2)?formulaResult2==null?void 0:formulaResult2.v: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}}generateRuleErrorMessage(rule,position){if(!rule.operator)return this.titleStr;const{transformedFormula1,transformedFormula2}=getTransformedFormula(this._lexerTreeBuilder,rule,position);return`${this.localeService.t(OperatorErrorTitleMap[rule.operator]).replace(FORMULA1,transformedFormula1!=null?transformedFormula1:"").replace(FORMULA2,transformedFormula2!=null?transformedFormula2:"")}`}};__name(_DecimalValidator,"DecimalValidator");let DecimalValidator=_DecimalValidator;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,"offsetFormulaByRange",!1);__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 results=await this.formulaService.getRuleFormulaResult(unitId,subUnitId,rule.uid),formulaResult1=getFormulaResult((_b2=(_a2=results==null?void 0:results[0])==null?void 0:_a2.result)==null?void 0:_b2[0][0]);return{formula1:void 0,formula2:void 0,isFormulaValid:isLegalFormulaResult(String(formulaResult1))}}async isValidType(cellInfo,formula,rule){var _a2,_b2;const{value,unitId,subUnitId}=cellInfo,{formula1=""}=rule,results=await this.formulaService.getRuleFormulaResult(unitId,subUnitId,rule.uid),formula1Result=core.isFormulaString(formula1)?getRuleFormulaResultSet((_b2=(_a2=results==null?void 0:results[0])==null?void 0:_a2.result)==null?void 0:_b2[0][0]):deserializeListOptions(formula1);return this.parseCellValue(value).every(i=>formula1Result.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,_d2;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((_d2=(_c2=results==null?void 0:results[0])==null?void 0:_c2.result)==null?void 0:_d2[0][0]):deserializeListOptions(formula1)}async getListAsync(rule,currentUnitId,currentSubUnitId){var _a2,_b2,_c2,_d2;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((_d2=(_c2=results==null?void 0:results[0])==null?void 0:_c2.result)==null?void 0:_d2[0][0]):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 _TextLengthValidator=class _TextLengthValidator extends dataValidation.BaseDataValidator{constructor(){super(...arguments);__publicField(this,"id",core.DataValidationType.TEXT_LENGTH);__publicField(this,"title","dataValidation.textLength.title");__publicField(this,"_lexerTreeBuilder",this.injector.get(engineFormula.LexerTreeBuilder));__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,"_customFormulaService",this.injector.get(exports2.DataValidationCustomFormulaService))}_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}async parseFormula(rule,unitId,subUnitId,row,column){const formulaResult1=await this._customFormulaService.getCellFormulaValue(unitId,subUnitId,rule.uid,row,column),formulaResult2=await this._customFormulaService.getCellFormula2Value(unitId,subUnitId,rule.uid,row,column),{formula1,formula2}=rule,isFormulaValid=isLegalFormulaResult(String(formulaResult1==null?void 0:formulaResult1.v))&&isLegalFormulaResult(String(formulaResult2==null?void 0:formulaResult2.v));return{formula1:this._parseNumber(core.isFormulaString(formula1)?formulaResult1==null?void 0:formulaResult1.v:formula1),formula2:this._parseNumber(core.isFormulaString(formula2)?formulaResult2==null?void 0:formulaResult2.v: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"}generateRuleErrorMessage(rule,pos){if(!rule.operator)return this.titleStr;const{transformedFormula1,transformedFormula2}=getTransformedFormula(this._lexerTreeBuilder,rule,pos);return`${this.localeService.t(dataValidation.TextLengthErrorTitleMap[rule.operator]).replace(FORMULA1,transformedFormula1!=null?transformedFormula1:"").replace(FORMULA2,transformedFormula2!=null?transformedFormula2:"")}`}};__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),validatorRegistryService=accessor.get(dataValidation.DataValidatorRegistryService),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;let setRangeValue=!1;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)&&!(cellData!=null&&cellData.p)&&(setRangeValue=!0,redoMatrix.setValue(row,column,{v:defaultValue,p:null}))})})}if(__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(shouldOffsetFormulaByRange(diff.rule.type,validatorRegistryService)){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=core.isFormulaString(diff.rule.formula1)?lexerTreeBuilder.moveFormulaRefOffset(diff.rule.formula1,columnDiff,rowDiff):diff.rule.formula1,newFormula2=core.isFormulaString(diff.rule.formula2)?lexerTreeBuilder.moveFormulaRefOffset(diff.rule.formula2,columnDiff,rowDiff):diff.rule.formula2;newFormula!==diff.rule.formula1||newFormula2!==diff.rule.formula2||!core.isRangesEqual(diff.newRanges,diff.oldRanges)?(redoMutations.push({id:dataValidation.UpdateDataValidationMutation.id,params:{unitId,subUnitId,ruleId:diff.ruleId,payload:{type:dataValidation.UpdateRuleType.ALL,payload:{formula1:newFormula,formula2:newFormula2,ranges:diff.newRanges}}}}),undoMutations.unshift({id:dataValidation.UpdateDataValidationMutation.id,params:{unitId,subUnitId,ruleId:diff.ruleId,payload:{type:dataValidation.UpdateRuleType.ALL,payload:{formula1:diff.rule.formula1,formula2:diff.rule.formula2,ranges:diff.oldRanges}}}})):(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}}))}else 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}});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}}}),setRangeValue){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{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)),validator=sheetDataValidationModel.getValidator(rule.type),mutationParams={unitId,subUnitId,rule:{...rule,...validator==null?void 0:validator.normalizeFormula(rule,unitId,subUnitId)}},{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;let setted=!1;if(ranges.forEach(range=>{core.Range.foreach(range,(row,column)=>{const cellData=worksheet.getCellRaw(row,column),value=getStringCellValue(cellData);(isBlankCell(cellData)||value===String(oldFormula2))&&!(cellData!=null&&cellData.p)?(redoMatrix.setValue(row,column,{v:formula2,p:null}),setted=!0):value===String(oldFormula1)&&!(cellData!=null&&cellData.p)&&(redoMatrix.setValue(row,column,{v:formula1,p:null}),setted=!0)})}),setted){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}},SHEETS_DATA_VALIDATION_PLUGIN_CONFIG_KEY="sheets-data-validation.config",defaultPluginConfig={};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");let DataValidationFormulaRefRangeController=(_e=class extends core.Disposable{constructor(_dataValidationModel,_formulaRefRangeService,_validatorRegistryService){super();__publicField(this,"_disposableMap",new Map);__publicField(this,"registerRule",__name((unitId,subUnitId,rule)=>{shouldOffsetFormulaByRange(rule.type,this._validatorRegistryService)&&this.register(unitId,subUnitId,rule)},"registerRule"));this._dataValidationModel=_dataValidationModel,this._formulaRefRangeService=_formulaRefRangeService,this._validatorRegistryService=_validatorRegistryService,this._initRefRange()}_getIdWithUnitId(unitID,subUnitId,ruleId){return`${unitID}_${subUnitId}_${ruleId}`}register(unitId,subUnitId,rule){const oldRanges=rule.ranges,oldFormula1=rule.formula1,oldFormula2=rule.formula2,disposable=this._formulaRefRangeService.registerRangeFormula(unitId,subUnitId,oldRanges,[oldFormula1!=null?oldFormula1:"",oldFormula2!=null?oldFormula2:""],res=>{if(res.length===0)return{undos:[{id:dataValidation.AddDataValidationMutation.id,params:{unitId,subUnitId,rule,source:"patched"}}],redos:[{id:dataValidation.RemoveDataValidationMutation.id,params:{unitId,subUnitId,ruleId:rule.uid,source:"patched"}}]};const redos=[],undos=[],first=res[0];redos.push({id:dataValidation.UpdateDataValidationMutation.id,params:{unitId,subUnitId,ruleId:rule.uid,payload:{type:dataValidation.UpdateRuleType.ALL,payload:{ranges:first.ranges,formula1:first.formulas[0],formula2:first.formulas[1]}},source:"patched"}}),undos.push({id:dataValidation.UpdateDataValidationMutation.id,params:{unitId,subUnitId,ruleId:rule.uid,payload:{type:dataValidation.UpdateRuleType.ALL,payload:{ranges:oldRanges,formula1:oldFormula1,formula2:oldFormula2}},source:"patched"}});for(let i=1;i<res.length;i++){const item=res[i],id2=core.generateRandomId();redos.push({id:dataValidation.AddDataValidationMutation.id,params:{unitId,subUnitId,rule:{...rule,uid:id2,formula1:item.formulas[0],formula2:item.formulas[1],ranges:item.ranges},source:"patched"}}),undos.push({id:dataValidation.RemoveDataValidationMutation.id,params:{unitId,subUnitId,ruleId:id2,source:"patched"}})}return{undos,redos}}),id=this._getIdWithUnitId(unitId,subUnitId,rule.uid);this._disposableMap.set(id,disposable)}_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.dispose();break}case"update":{const rule2=option.rule,disposeSet=this._disposableMap.get(this._getIdWithUnitId(unitId,subUnitId,rule2.uid));disposeSet&&disposeSet.dispose(),this.registerRule(option.unitId,option.subUnitId,rule2);break}}})),this.disposeWithMe(core.toDisposable(()=>{this._disposableMap.forEach(item=>{item.dispose()}),this._disposableMap.clear()}))}},__name(_e,"DataValidationFormulaRefRangeController"),_e);DataValidationFormulaRefRangeController=__decorateClass$6([__decorateParam$6(0,core.Inject(exports2.SheetDataValidationModel)),__decorateParam$6(1,core.Inject(sheetsFormula.FormulaRefRangeService)),__decorateParam$6(2,core.Inject(dataValidation.DataValidatorRegistryService))],DataValidationFormulaRefRangeController);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$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");exports2.DataValidationFormulaController=(_f=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(_f,"DataValidationFormulaController"),_f),exports2.DataValidationFormulaController=__decorateClass$5([__decorateParam$5(0,core.IUniverInstanceService),__decorateParam$5(1,core.IPermissionService),__decorateParam$5(2,core.Inject(engineFormula.LexerTreeBuilder))],exports2.DataValidationFormulaController);var __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");let DataValidationRefRangeController=(_g=class extends core.Disposable{constructor(_dataValidationModel,_injector,_refRangeService,_dataValidationFormulaService,_formulaRefRangeService,_validatorRegistryService){super();__publicField(this,"_disposableMap",new Map);__publicField(this,"registerRule",__name((unitId,subUnitId,rule)=>{shouldOffsetFormulaByRange(rule.type,this._validatorRegistryService)||(this.register(unitId,subUnitId,rule),this.registerFormula(unitId,subUnitId,rule))},"registerRule"));this._dataValidationModel=_dataValidationModel,this._injector=_injector,this._refRangeService=_refRangeService,this._dataValidationFormulaService=_dataValidationFormulaService,this._formulaRefRangeService=_formulaRefRangeService,this._validatorRegistryService=_validatorRegistryService,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}},source:"patched"},undoParams={unitId,subUnitId,ruleId:rule.uid,payload:{type:dataValidation.UpdateRuleType.SETTING,payload:{type:oldRule.type,formula1:oldRule.formula1,formula2:oldRule.formula2}},source:"patched"},redos=[{id:dataValidation.UpdateDataValidationMutation.id,params:redoParams}],undos=[{id:dataValidation.UpdateDataValidationMutation.id,params:undoParams}];return{redos,undos}},"handleFormulaChange"),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(_g,"DataValidationRefRangeController"),_g);DataValidationRefRangeController=__decorateClass$4([__decorateParam$4(0,core.Inject(exports2.SheetDataValidationModel)),__decorateParam$4(1,core.Inject(core.Injector)),__decorateParam$4(2,core.Inject(sheets.RefRangeService)),__decorateParam$4(3,core.Inject(exports2.DataValidationFormulaService)),__decorateParam$4(4,core.Inject(sheetsFormula.FormulaRefRangeService)),__decorateParam$4(5,core.Inject(dataValidation.DataValidatorRegistryService))],DataValidationRefRangeController);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 SheetDataValidationSheetController=(_h=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(_h,"SheetDataValidationSheetController"),_h);SheetDataValidationSheetController=__decorateClass$3([__decorateParam$3(0,core.Inject(sheets.SheetInterceptorService)),__decorateParam$3(1,core.Inject(core.IUniverInstanceService)),__decorateParam$3(2,core.Inject(exports2.SheetDataValidationModel))],SheetDataValidationSheetController);const _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"]);__publicField(this,"offsetFormulaByRange",!1)}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));__publicField(this,"_lexerTreeBuilder",this.injector.get(engineFormula.LexerTreeBuilder))}validatorFormula(rule,unitId,subUnitId){var _a2;const success=core.isFormulaString(rule.formula1),formulaText=(_a2=rule.formula1)!=null?_a2:"",valid=this._lexerTreeBuilder.checkIfAddBracket(formulaText)===0&&formulaText.startsWith(engineFormula.operatorToken.EQUALS);return{success:success&&valid,formula1:success&&valid?"":this.localeService.t("dataValidation.validFail.formula")}}async parseFormula(_rule,_unitId,_subUnitId){return{formula1:void 0,formula2:void 0,isFormulaValid:!0}}async isValidType(cellInfo,_formula,_rule){const{column,row,unitId,subUnitId}=cellInfo,cellData=await this._customFormulaService.getCellFormulaValue(unitId,subUnitId,_rule.uid,row,column),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,"offsetFormulaByRange",!1);__publicField(this,"skipDefaultFontRender",__name(()=>!0,"skipDefaultFontRender"))}};__name(_ListMultipleValidator,"ListMultipleValidator");let ListMultipleValidator=_ListMultipleValidator;const _WholeValidator=class _WholeValidator extends dataValidation.BaseDataValidator{constructor(){super(...arguments);__publicField(this,"_customFormulaService",this.injector.get(exports2.DataValidationCustomFormulaService));__publicField(this,"_lexerTreeBuilder",this.injector.get(engineFormula.LexerTreeBuilder));__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,row,column){const res1=await this._customFormulaService.getCellFormulaValue(unitId,subUnitId,rule.uid,row,column),res2=await this._customFormulaService.getCellFormula2Value(unitId,subUnitId,rule.uid,row,column),{formula1,formula2}=rule,formula1Result=core.isFormulaString(formula1)?res1==null?void 0:res1.v:formula1,formula2Result=core.isFormulaString(formula2)?res2==null?void 0:res2.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}}generateRuleErrorMessage(rule,position){if(!rule.operator)return this.titleStr;const{transformedFormula1,transformedFormula2}=getTransformedFormula(this._lexerTreeBuilder,rule,position);return`${this.localeService.t(OperatorErrorTitleMap[rule.operator]).replace(FORMULA1,transformedFormula1!=null?transformedFormula1:"").replace(FORMULA2,transformedFormula2!=null?transformedFormula2:"")}`}};__name(_WholeValidator,"WholeValidator");let WholeValidator=_WholeValidator;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 DataValidationController=(_i=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(_i,"DataValidationController"),_i);DataValidationController=__decorateClass$2([__decorateParam$2(0,core.IUniverInstanceService),__decorateParam$2(1,core.Inject(dataValidation.DataValidatorRegistryService)),__decorateParam$2(2,core.Inject(core.Injector)),__decorateParam$2(3,core.Inject(sheets.SheetsSelectionsService)),__decorateParam$2(4,core.Inject(sheets.SheetInterceptorService)),__decorateParam$2(5,core.Inject(exports2.SheetDataValidationModel))],DataValidationController);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 _validatorByCell(workbook,worksheet,row,col){const unitId=workbook.getUnitId(),subUnitId=worksheet.getSheetId();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}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}`);return this._validatorByCell(workbook,worksheet,row,col)}validatorRanges(unitId,subUnitId,ranges){if(!ranges.length)return Promise.resolve([]);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}`);return Promise.all(ranges.map(range=>{const promises=[];return core.Range.foreach(range,(row,col)=>{promises.push(this._validatorByCell(workbook,worksheet,row,col))}),Promise.all(promises)}))}async validatorWorksheet(unitId,subUnitId){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}`);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._validatorByCell(workbook,worksheet,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}=core.merge({},defaultPluginConfig,this._config);this._configService.setConfig(SHEETS_DATA_VALIDATION_PLUGIN_CONFIG_KEY,rest)}onStarting(){[[exports2.DataValidationCacheService],[exports2.DataValidationFormulaService],[exports2.DataValidationCustomFormulaService],[exports2.SheetsDataValidationValidatorService],[exports2.SheetDataValidationModel],[DataValidationController],[exports2.DataValidationFormulaController],[SheetDataValidationSheetController],[DataValidationRefRangeController],[DataValidationFormulaRefRangeController]].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(DataValidationFormulaRefRangeController),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,r){typeof exports=="object"&&typeof module<"u"?r(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"],r):(m=typeof globalThis<"u"?globalThis:m||self,r(m.UniverSheetsDataValidation={},m.UniverCore,m.UniverDataValidation,m.UniverSheets,m.rxjs,m.UniverSheetsFormula,m.UniverEngineFormula))})(this,function(m,r,g,D,A,K,T){"use strict";var bt=Object.defineProperty;var Lt=(m,r,g)=>r in m?bt(m,r,{enumerable:!0,configurable:!0,writable:!0,value:g}):m[r]=g;var f=(m,r,g)=>Lt(m,typeof r!="symbol"?r+"":r,g);const ve="SHEET_DATA_VALIDATION_PLUGIN";var $e=Object.defineProperty,He=Object.getOwnPropertyDescriptor,We=(s,o,e,t)=>{for(var a=t>1?void 0:t?He(o,e):o,i=s.length-1,n;i>=0;i--)(n=s[i])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&$e(o,e,a),a},Re=(s,o)=>(e,t)=>o(e,t,s);m.DataValidationCacheService=class extends r.Disposable{constructor(e,t){super();f(this,"_cacheMatrix",new Map);f(this,"_dirtyRanges$",new A.Subject);f(this,"dirtyRanges$",this._dirtyRanges$.asObservable());this._commandService=e,this._univerInstanceService=t,this._initDirtyRanges(),this._initSheetRemove()}_initDirtyRanges(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===D.SetRangeValuesMutation.id){const{cellValue:t,unitId:a,subUnitId:i}=e.params;if(t){const n=new r.ObjectMatrix(t).getDataRange();if(n.endRow===-1)return;this.markRangeDirty(a,i,[n])}}}))}_initSheetRemove(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{var t;if(e.id===D.RemoveSheetMutation.id){const{unitId:a,subUnitId:i}=e.params;(t=this._cacheMatrix.get(a))==null||t.delete(i)}})),this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(e=>{e.type===r.UniverInstanceType.UNIVER_SHEET&&this._cacheMatrix.delete(e.getUnitId())}))}_ensureCache(e,t){let a=this._cacheMatrix.get(e);a||(a=new Map,this._cacheMatrix.set(e,a));let i=a.get(t);return i||(i=new r.ObjectMatrix,a.set(t,i)),i}ensureCache(e,t){return this._ensureCache(e,t)}addRule(e,t,a){this.markRangeDirty(e,t,a.ranges)}removeRule(e,t,a){this._deleteRange(e,t,a.ranges)}markRangeDirty(e,t,a){const i=this._ensureCache(e,t);a.forEach(n=>{r.Range.foreach(n,(l,u)=>{i.setValue(l,u,void 0)})}),this._dirtyRanges$.next({unitId:e,subUnitId:t,ranges:a})}_deleteRange(e,t,a){const i=this._ensureCache(e,t);a.forEach(n=>{r.Range.foreach(n,(l,u)=>{i.realDeleteValue(l,u)})}),this._dirtyRanges$.next({unitId:e,subUnitId:t,ranges:a})}getValue(e,t,a,i){return this._ensureCache(e,t).getValue(a,i)}},m.DataValidationCacheService=We([Re(0,r.Inject(r.ICommandService)),Re(1,r.Inject(r.IUniverInstanceService))],m.DataValidationCacheService);function w(s){var o,e;return(e=(o=s==null?void 0:s[0])==null?void 0:o[0])==null?void 0:e.v}function j(s){var o;return(o=s==null?void 0:s[0])==null?void 0:o[0]}function y(s){return!T.ERROR_TYPE_SET.has(s)}function P(s,o){var t;const e=o.getValidatorItem(s);return(t=e==null?void 0:e.offsetFormulaByRange)!=null?t:!1}var xe=Object.defineProperty,qe=Object.getOwnPropertyDescriptor,Qe=(s,o,e,t)=>{for(var a=t>1?void 0:t?qe(o,e):o,i=s.length-1,n;i>=0;i--)(n=s[i])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&xe(o,e,a),a},$=(s,o)=>(e,t)=>o(e,t,s);m.DataValidationCustomFormulaService=class extends r.Disposable{constructor(e,t,a,i,n){super();f(this,"_ruleFormulaMap",new Map);f(this,"_ruleFormulaMap2",new Map);this._instanceSrv=e,this._registerOtherFormulaService=t,this._dataValidationModel=a,this._dataValidationCacheService=i,this._validatorRegistryService=n,this._initFormulaResultHandler()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(e=>{for(const t in e){const a=e[t];if(this._instanceSrv.getUnitType(t)===r.UniverInstanceType.UNIVER_SHEET)for(const n in a){const l=a[n],{ruleFormulaMap:u}=this._ensureMaps(t,n);l.forEach(d=>{var p,_;const c=u.get((p=d.extra)==null?void 0:p.ruleId),h=this._dataValidationModel.getRuleById(t,n,(_=d.extra)==null?void 0:_.ruleId);h&&c&&this._dataValidationCacheService.markRangeDirty(t,n,h.ranges)})}}}))}_ensureMaps(e,t){let a=this._ruleFormulaMap.get(e),i=this._ruleFormulaMap2.get(e);a||(a=new Map,this._ruleFormulaMap.set(e,a)),i||(i=new Map,this._ruleFormulaMap2.set(e,i));let n=a.get(t);n||(n=new Map,a.set(t,n));let l=i.get(t);return l||(l=new Map,i.set(t,l)),{ruleFormulaMap:n,ruleFormulaMap2:l}}_registerFormula(e,t,a,i,n){return this._registerOtherFormulaService.registerFormulaWithRange(e,t,i,n,{ruleId:a})}deleteByRuleId(e,t,a){const{ruleFormulaMap:i,ruleFormulaMap2:n}=this._ensureMaps(e,t),l=this._dataValidationModel.getRuleById(e,t,a),u=i.get(a);if(!l||!u)return;const d=i.get(a);d&&(i.delete(a),this._registerOtherFormulaService.deleteFormula(e,t,[d.formulaId]));const c=n.get(a);c&&(n.delete(a),this._registerOtherFormulaService.deleteFormula(e,t,[c.formulaId]))}_addFormulaByRange(e,t,a,i,n,l){const{ruleFormulaMap:u,ruleFormulaMap2:d}=this._ensureMaps(e,t),c=l[0].startRow,h=l[0].startColumn;if(i&&r.isFormulaString(i)){const p=this._registerFormula(e,t,a,i,l);u.set(a,{formula:i,originCol:h,originRow:c,formulaId:p})}if(n&&r.isFormulaString(n)){const p=this._registerFormula(e,t,a,n,l);d.set(a,{formula:n,originCol:h,originRow:c,formulaId:p})}}addRule(e,t,a){if(P(a.type,this._validatorRegistryService)){const{ranges:i,formula1:n,formula2:l,uid:u}=a;this._addFormulaByRange(e,t,u,n,l,i)}}async getCellFormulaValue(e,t,a,i,n){var v,R;const{ruleFormulaMap:l}=this._ensureMaps(e,t),u=l.get(a);if(!u)return Promise.resolve(void 0);const d=await this._registerOtherFormulaService.getFormulaValue(e,t,u.formulaId),{originRow:c,originCol:h}=u,p=i-c,_=n-h;return j((R=(v=d==null?void 0:d.result)==null?void 0:v[p])==null?void 0:R[_])}async getCellFormula2Value(e,t,a,i,n){var v,R;const{ruleFormulaMap2:l}=this._ensureMaps(e,t),u=l.get(a);if(!u)return Promise.resolve(void 0);const d=await this._registerOtherFormulaService.getFormulaValue(e,t,u.formulaId),{originRow:c,originCol:h}=u,p=i-c,_=n-h;return j((R=(v=d==null?void 0:d.result)==null?void 0:v[p])==null?void 0:R[_])}getCellFormulaValueSync(e,t,a,i,n){var v,R;const{ruleFormulaMap:l}=this._ensureMaps(e,t),u=l.get(a);if(!u)return;const d=this._registerOtherFormulaService.getFormulaValueSync(e,t,u.formulaId),{originRow:c,originCol:h}=u,p=i-c,_=n-h;return j((R=(v=d==null?void 0:d.result)==null?void 0:v[p])==null?void 0:R[_])}getCellFormula2ValueSync(e,t,a,i,n){var v,R;const{ruleFormulaMap2:l}=this._ensureMaps(e,t),u=l.get(a);if(!u)return;const d=this._registerOtherFormulaService.getFormulaValueSync(e,t,u.formulaId),{originRow:c,originCol:h}=u,p=i-c,_=n-h;return j((R=(v=d==null?void 0:d.result)==null?void 0:v[p])==null?void 0:R[_])}getRuleFormulaInfo(e,t,a){const{ruleFormulaMap:i}=this._ensureMaps(e,t);return i.get(a)}},m.DataValidationCustomFormulaService=Qe([$(0,r.IUniverInstanceService),$(1,r.Inject(K.RegisterOtherFormulaService)),$(2,r.Inject(g.DataValidationModel)),$(3,r.Inject(m.DataValidationCacheService)),$(4,r.Inject(g.DataValidatorRegistryService))],m.DataValidationCustomFormulaService);var Ge=Object.defineProperty,ke=Object.getOwnPropertyDescriptor,Ye=(s,o,e,t)=>{for(var a=t>1?void 0:t?ke(o,e):o,i=s.length-1,n;i>=0;i--)(n=s[i])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&Ge(o,e,a),a},H=(s,o)=>(e,t)=>o(e,t,s);m.DataValidationFormulaService=class extends r.Disposable{constructor(e,t,a,i,n){super();f(this,"_formulaRuleMap",new Map);this._instanceService=e,this._registerOtherFormulaService=t,this._dataValidationCacheService=a,this._dataValidationModel=i,this._validatorRegistryService=n,this._initFormulaResultHandler()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(e=>{for(const t in e){const a=e[t];if(this._instanceService.getUnitType(t)===r.UniverInstanceType.UNIVER_SHEET)for(const n in a){const l=a[n],u=this._ensureRuleFormulaMap(t,n);l.forEach(d=>{var c,h;if(u.get((c=d.extra)==null?void 0:c.ruleId)){const p=this._dataValidationModel.getRuleById(t,n,(h=d.extra)==null?void 0:h.ruleId);p&&this._dataValidationCacheService.markRangeDirty(t,n,p.ranges)}})}}}))}_ensureRuleFormulaMap(e,t){let a=this._formulaRuleMap.get(e);a||(a=new Map,this._formulaRuleMap.set(e,a));let i=a.get(t);return i||(i=new Map,a.set(t,i)),i}_registerSingleFormula(e,t,a,i){const n=[{startColumn:0,endColumn:0,startRow:0,endRow:0}];return this._registerOtherFormulaService.registerFormulaWithRange(e,t,a,n,{ruleId:i})}addRule(e,t,a){if(!P(a.type,this._validatorRegistryService)&&a.type!==r.DataValidationType.CHECKBOX){const{formula1:i,formula2:n,uid:l}=a,u=r.isFormulaString(i),d=r.isFormulaString(n);if(!u&&!d)return;const c=this._ensureRuleFormulaMap(e,t),h=[void 0,void 0];if(u){const p=this._registerSingleFormula(e,t,i,l);h[0]={id:p,text:i}}if(d){const p=this._registerSingleFormula(e,t,n,l);h[1]={id:p,text:n}}c.set(l,h)}}removeRule(e,t,a){const n=this._ensureRuleFormulaMap(e,t).get(a);if(!n)return;const[l,u]=n,d=[l==null?void 0:l.id,u==null?void 0:u.id].filter(Boolean);d.length&&this._registerOtherFormulaService.deleteFormula(e,t,d)}getRuleFormulaResult(e,t,a){const n=this._ensureRuleFormulaMap(e,t).get(a);if(!n)return Promise.resolve(null);const l=async u=>u&&this._registerOtherFormulaService.getFormulaValue(e,t,u.id);return Promise.all([l(n[0]),l(n[1])])}getRuleFormulaResultSync(e,t,a){const n=this._ensureRuleFormulaMap(e,t).get(a);if(n)return n.map(l=>{if(l)return this._registerOtherFormulaService.getFormulaValueSync(e,t,l.id)})}getRuleFormulaInfo(e,t,a){return this._ensureRuleFormulaMap(e,t).get(a)}},m.DataValidationFormulaService=Ye([H(0,r.IUniverInstanceService),H(1,r.Inject(K.RegisterOtherFormulaService)),H(2,r.Inject(m.DataValidationCacheService)),H(3,r.Inject(g.DataValidationModel)),H(4,r.Inject(g.DataValidatorRegistryService))],m.DataValidationFormulaService);function U(s){return r.getOriginCellValue(s)}function Ve(s){var o;return String((o=U(s))!=null?o:"")}class ue{constructor(o,e,t,a,i=!1){f(this,"_map");f(this,"_tree",new r.RBush);f(this,"_dirty",!0);f(this,"_buildTree",()=>{if(!this._dirty||this._disableTree)return;this._tree.clear();const o=[];this._map.forEach((e,t)=>{e.forEach(a=>{o.push({minX:a.startRow,maxX:a.endRow,minY:a.startColumn,maxY:a.endColumn,ruleId:t})})}),this._tree.load(o),this._dirty=!1});f(this,"_debonceBuildTree",r.debounce(this._buildTree,0));this._unitId=e,this._subUnitId=t,this._univerInstanceService=a,this._disableTree=i,this._map=o,this._buildTree()}get _worksheet(){var o;return(o=this._univerInstanceService.getUnit(this._unitId,r.UniverInstanceType.UNIVER_SHEET))==null?void 0:o.getSheetBySheetId(this._subUnitId)}_addRule(o,e){if(!this._worksheet)return;const t=r.Rectangle.mergeRanges(e.map(a=>r.Range.transformRange(a,this._worksheet)));this._map.forEach((a,i)=>{const n=r.Rectangle.subtractMulti(a,t);n.length===0?this._map.delete(i):this._map.set(i,n)}),this._dirty=!0,this._map.set(o,t),this._debonceBuildTree()}addRule(o){this._addRule(o.uid,o.ranges)}removeRange(o){if(!this._worksheet)return;const e=o.map(t=>r.Range.transformRange(t,this._worksheet));this._map.forEach((t,a)=>{const i=r.Rectangle.subtractMulti(t,e);i.length===0?this._map.delete(a):this._map.set(a,i)}),this._dirty=!0,this._debonceBuildTree()}_removeRule(o){this._map.delete(o),this._dirty=!0,this._debonceBuildTree()}removeRule(o){this._removeRule(o.uid)}updateRange(o,e){this._removeRule(o),this._addRule(o,e)}addRangeRules(o){o.forEach(({id:e,ranges:t})=>{if(!t.length)return;let a=this._map.get(e);a?(this._map.set(e,r.Rectangle.mergeRanges([...a,...t])),a=this._map.get(e)):(a=t,this._map.set(e,a)),this._map.forEach((i,n)=>{if(n===e)return;const l=r.Rectangle.subtractMulti(i,t);l.length===0?this._map.delete(n):this._map.set(n,l)})}),this._dirty=!0,this._debonceBuildTree()}diff(o){const e=[];let t=0;return o.forEach((a,i)=>{var u;const n=(u=this._map.get(a.uid))!=null?u:[],l=a.ranges;n.length!==0&&(n.length!==l.length||n.some((d,c)=>!r.Rectangle.equals(d,l[c])))&&e.push({type:"update",ruleId:a.uid,oldRanges:l,newRanges:r.Rectangle.sort(n),rule:a}),n.length===0&&(e.push({type:"delete",rule:a,index:i-t}),t++)}),e}diffWithAddition(o,e){const t=[];let a=0;return o.forEach((i,n)=>{var d;const l=(d=this._map.get(i.uid))!=null?d:[],u=i.ranges;l.length!==0&&(l.length!==u.length||l.some((c,h)=>!r.Rectangle.equals(c,u[h])))&&t.push({type:"update",ruleId:i.uid,oldRanges:u,newRanges:r.Rectangle.sort(l),rule:i}),l.length===0&&(t.push({type:"delete",rule:i,index:n-a}),a++)}),Array.from(e).forEach(i=>{var l;const n=(l=this._map.get(i.uid))!=null?l:[];t.push({type:"add",rule:{...i,ranges:r.Rectangle.sort(n)}})}),t}clone(){return new ue(new Map(r.Tools.deepClone(Array.from(this._map.entries()))),this._unitId,this._subUnitId,this._univerInstanceService,!0)}getValue(o,e){this._dirty&&this._buildTree();const t=this._tree.search({minX:o,maxX:o,minY:e,maxY:e});return t.length>0?t[0].ruleId:void 0}}var Xe=Object.defineProperty,Ke=Object.getOwnPropertyDescriptor,ze=(s,o,e,t)=>{for(var a=t>1?void 0:t?Ke(o,e):o,i=s.length-1,n;i>=0;i--)(n=s[i])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&Xe(o,e,a),a},N=(s,o)=>(e,t)=>o(e,t,s);m.SheetDataValidationModel=class extends r.Disposable{constructor(e,t,a,i,n,l,u){super();f(this,"_ruleMatrixMap",new Map);f(this,"_validStatusChange$",new A.Subject);f(this,"_ruleChange$",new A.Subject);f(this,"ruleChange$",this._ruleChange$.asObservable());f(this,"validStatusChange$",this._validStatusChange$.asObservable());this._dataValidationModel=e,this._univerInstanceService=t,this._dataValidatorRegistryService=a,this._dataValidationCacheService=i,this._dataValidationFormulaService=n,this._dataValidationCustomFormulaService=l,this._commandService=u,this._initRuleUpdateListener(),this.disposeWithMe(()=>{this._ruleChange$.complete(),this._validStatusChange$.complete()}),this._initUniverInstanceListener()}_initUniverInstanceListener(){this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(e=>{this._ruleMatrixMap.delete(e.getUnitId())})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===D.RemoveSheetMutation.id){const{unitId:t,subUnitId:a}=e.params,i=this._ruleMatrixMap.get(t);i&&i.delete(a)}}))}_initRuleUpdateListener(){const e=this._dataValidationModel.getAll();for(const[t,a]of e)for(const[i,n]of a)for(const l of n)this._addRule(t,i,l),this._ruleChange$.next({type:"add",unitId:t,subUnitId:i,rule:l,source:"patched"});this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(t=>{switch(t.type){case"add":this._addRule(t.unitId,t.subUnitId,t.rule);break;case"update":this._updateRule(t.unitId,t.subUnitId,t.rule.uid,t.oldRule,t.updatePayload);break;case"remove":this._removeRule(t.unitId,t.subUnitId,t.rule);break}this._ruleChange$.next(t)}))}_ensureRuleMatrix(e,t){let a=this._ruleMatrixMap.get(e);a||(a=new Map,this._ruleMatrixMap.set(e,a));let i=a.get(t);return i||(i=new ue(new Map,e,t,this._univerInstanceService),a.set(t,i)),i}_addRuleSideEffect(e,t,a){this._ensureRuleMatrix(e,t).addRule(a),this._dataValidationCacheService.addRule(e,t,a),this._dataValidationFormulaService.addRule(e,t,a),this._dataValidationCustomFormulaService.addRule(e,t,a)}_addRule(e,t,a){(Array.isArray(a)?a:[a]).forEach(n=>{this._addRuleSideEffect(e,t,n)})}_updateRule(e,t,a,i,n){const l=this._ensureRuleMatrix(e,t),u={...i,...n.payload};n.type===g.UpdateRuleType.RANGE?l.updateRange(a,n.payload):n.type===g.UpdateRuleType.ALL&&l.updateRange(a,n.payload.ranges),this._dataValidationCacheService.removeRule(e,t,i),this._dataValidationCacheService.addRule(e,t,u),this._dataValidationFormulaService.removeRule(e,t,i.uid),this._dataValidationFormulaService.addRule(e,t,u),this._dataValidationCustomFormulaService.deleteByRuleId(e,t,a),this._dataValidationCustomFormulaService.addRule(e,t,u)}_removeRule(e,t,a){this._ensureRuleMatrix(e,t).removeRule(a),this._dataValidationCacheService.removeRule(e,t,a),this._dataValidationCustomFormulaService.deleteByRuleId(e,t,a.uid)}getValidator(e){return this._dataValidatorRegistryService.getValidatorItem(e)}getRuleIdByLocation(e,t,a,i){return this._ensureRuleMatrix(e,t).getValue(a,i)}getRuleByLocation(e,t,a,i){const n=this.getRuleIdByLocation(e,t,a,i);if(n)return this._dataValidationModel.getRuleById(e,t,n)}validator(e,t,a){const{col:i,row:n,unitId:l,subUnitId:u,worksheet:d}=t,c=(R,V)=>{a&&a(R,V),V&&this._validStatusChange$.next({unitId:l,subUnitId:u,ruleId:e.uid,status:R,row:n,col:i})},h=d.getCellValueOnly(n,i),p=this.getValidator(e.type),_=d.getCellRaw(n,i),v=U(_);if(p){const R=this._dataValidationCacheService.ensureCache(l,u),V=R.getValue(n,i);return V==null?(R.setValue(n,i,r.DataValidationStatus.VALIDATING),p.validator({value:v,unitId:l,subUnitId:u,row:n,column:i,worksheet:t.worksheet,workbook:t.workbook,interceptValue:U(h),t:_==null?void 0:_.t},e).then(S=>{const M=S?r.DataValidationStatus.VALID:r.DataValidationStatus.INVALID;M===r.DataValidationStatus.VALID?R.realDeleteValue(n,i):R.setValue(n,i,M);const O=R.getValue(n,i);c(M,V!==O)}),r.DataValidationStatus.VALIDATING):(c(V!=null?V:r.DataValidationStatus.VALID,!1),V!=null?V:r.DataValidationStatus.VALID)}else return c(r.DataValidationStatus.VALID,!1),r.DataValidationStatus.VALID}getRuleObjectMatrix(e,t){return this._ensureRuleMatrix(e,t)}getRuleById(e,t,a){return this._dataValidationModel.getRuleById(e,t,a)}getRuleIndex(e,t,a){return this._dataValidationModel.getRuleIndex(e,t,a)}getRules(e,t){return[...this._dataValidationModel.getRules(e,t)]}getUnitRules(e){return this._dataValidationModel.getUnitRules(e)}deleteUnitRules(e){return this._dataValidationModel.deleteUnitRules(e)}getSubUnitIds(e){return this._dataValidationModel.getSubUnitIds(e)}getAll(){return this._dataValidationModel.getAll()}},m.SheetDataValidationModel=ze([N(0,r.Inject(g.DataValidationModel)),N(1,r.IUniverInstanceService),N(2,r.Inject(g.DataValidatorRegistryService)),N(3,r.Inject(m.DataValidationCacheService)),N(4,r.Inject(m.DataValidationFormulaService)),N(5,r.Inject(m.DataValidationCustomFormulaService)),N(6,r.ICommandService)],m.SheetDataValidationModel);const W=1,x=0;function De(s,o){return r.Tools.isBlank(s)?o.t("dataValidation.validFail.value"):r.isFormulaString(s)?o.t("dataValidation.validFail.primitive"):""}const q=s=>r.Tools.isDefine(s)&&String(s).toLowerCase()==="true"?"1":String(s).toLowerCase()==="false"?"0":s;class Me extends g.BaseDataValidator{constructor(){super(...arguments);f(this,"id",r.DataValidationType.CHECKBOX);f(this,"title","dataValidation.checkbox.title");f(this,"operators",[]);f(this,"scopes",["sheet"]);f(this,"offsetFormulaByRange",!1);f(this,"_formulaService",this.injector.get(m.DataValidationFormulaService));f(this,"skipDefaultFontRender",(e,t,a)=>{const{unitId:i,subUnitId:n}=a,{formula1:l,formula2:u}=this.parseFormulaSync(e,i,n),d=`${t!=null?t:""}`;return!d||d===`${l}`||d===`${u}`})}validatorFormula(e,t,a){const{formula1:i,formula2:n}=e,l=i===n;if(r.Tools.isBlank(i)&&r.Tools.isBlank(n))return{success:!0};if(l)return{success:!1,formula1:this.localeService.t("dataValidation.validFail.checkboxEqual"),formula2:this.localeService.t("dataValidation.validFail.checkboxEqual")};const u=De(i,this.localeService),d=De(n,this.localeService);return{success:!u&&!d,formula1:u,formula2:d}}async parseFormula(e,t,a){var h,p,_,v;const{formula1:i=W,formula2:n=x}=e,l=await this._formulaService.getRuleFormulaResult(t,a,e.uid),u=r.isFormulaString(i)?w((p=(h=l==null?void 0:l[0])==null?void 0:h.result)==null?void 0:p[0][0]):i,d=r.isFormulaString(n)?w((v=(_=l==null?void 0:l[1])==null?void 0:_.result)==null?void 0:v[0][0]):n,c=y(String(u))&&y(String(d));return{formula1:q(u),formula2:q(d),originFormula1:u,originFormula2:d,isFormulaValid:c}}getExtraStyle(e,t){return{tb:r.WrapStrategy.CLIP}}parseFormulaSync(e,t,a){var h,p,_,v;const{formula1:i=W,formula2:n=x}=e,l=this._formulaService.getRuleFormulaResultSync(t,a,e.uid),u=r.isFormulaString(i)?w((p=(h=l==null?void 0:l[0])==null?void 0:h.result)==null?void 0:p[0][0]):i,d=r.isFormulaString(n)?w((v=(_=l==null?void 0:l[1])==null?void 0:_.result)==null?void 0:v[0][0]):n,c=y(String(u))&&y(String(d));return{formula1:q(u),formula2:q(d),originFormula1:u,originFormula2:d,isFormulaValid:c}}async isValidType(e,t,a){const{value:i,unitId:n,subUnitId:l}=e,{formula1:u,formula2:d,originFormula1:c,originFormula2:h}=await this.parseFormula(a,n,l);return!r.Tools.isDefine(u)||!r.Tools.isDefine(d)?!0:r.Tools.isDefine(i)&&(String(i)===String(u)||String(i)===String(d)||String(i)===String(c!=null?c:"")||String(i)===String(h!=null?h:""))}generateRuleErrorMessage(e){return this.localeService.t("dataValidation.checkbox.error")}}const Ze={[r.DataValidationOperator.BETWEEN]:"dataValidation.date.operators.between",[r.DataValidationOperator.EQUAL]:"dataValidation.date.operators.equal",[r.DataValidationOperator.GREATER_THAN]:"dataValidation.date.operators.greaterThan",[r.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.operators.greaterThanOrEqual",[r.DataValidationOperator.LESS_THAN]:"dataValidation.date.operators.lessThan",[r.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.operators.lessThanOrEqual",[r.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.operators.notBetween",[r.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.operators.notEqual"};r.DataValidationOperator.BETWEEN+"",r.DataValidationOperator.EQUAL+"",r.DataValidationOperator.GREATER_THAN+"",r.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",r.DataValidationOperator.LESS_THAN+"",r.DataValidationOperator.LESS_THAN_OR_EQUAL+"",r.DataValidationOperator.NOT_BETWEEN+"",r.DataValidationOperator.NOT_EQUAL+"";const Je={[r.DataValidationOperator.BETWEEN]:"dataValidation.date.ruleName.between",[r.DataValidationOperator.EQUAL]:"dataValidation.date.ruleName.equal",[r.DataValidationOperator.GREATER_THAN]:"dataValidation.date.ruleName.greaterThan",[r.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.ruleName.greaterThanOrEqual",[r.DataValidationOperator.LESS_THAN]:"dataValidation.date.ruleName.lessThan",[r.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.ruleName.lessThanOrEqual",[r.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.ruleName.notBetween",[r.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.ruleName.notEqual"},et={[r.DataValidationOperator.BETWEEN]:"dataValidation.date.errorMsg.between",[r.DataValidationOperator.EQUAL]:"dataValidation.date.errorMsg.equal",[r.DataValidationOperator.GREATER_THAN]:"dataValidation.date.errorMsg.greaterThan",[r.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.errorMsg.greaterThanOrEqual",[r.DataValidationOperator.LESS_THAN]:"dataValidation.date.errorMsg.lessThan",[r.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.errorMsg.lessThanOrEqual",[r.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.errorMsg.notBetween",[r.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.errorMsg.notEqual"},z=[r.DataValidationOperator.BETWEEN,r.DataValidationOperator.NOT_BETWEEN],Q="{FORMULA1}",G="{FORMULA2}";function tt(s){return s.filter(Boolean).join(",")}function k(s){return s.split(",").filter(Boolean)}function at(s){const o=U(s);return o==null?"":o.toString()}function Z(s,o,e){const{formula1:t,formula2:a}=o,i=o.ranges[0].startRow,n=o.ranges[0].startColumn,l=e.row-i,u=e.col-n,d=r.isFormulaString(t)?s.moveFormulaRefOffset(t,u,l,!0):t,c=r.isFormulaString(a)?s.moveFormulaRefOffset(a,u,l,!0):a;return{transformedFormula1:d,transformedFormula2:c}}const de=s=>{var e,t;if(s==null||typeof s=="boolean")return;if(typeof s=="number"||!Number.isNaN(+s))return+s;const o=(e=r.numfmt.parseDate(s))==null?void 0:e.v;return r.Tools.isDefine(o)?o:(t=r.numfmt.parseDate(r.dayjs(s).format("YYYY-MM-DD HH:mm:ss")))==null?void 0:t.v};class ye extends g.BaseDataValidator{constructor(){super(...arguments);f(this,"id",r.DataValidationType.DATE);f(this,"title","dataValidation.date.title");f(this,"operators",[r.DataValidationOperator.BETWEEN,r.DataValidationOperator.EQUAL,r.DataValidationOperator.GREATER_THAN,r.DataValidationOperator.GREATER_THAN_OR_EQUAL,r.DataValidationOperator.LESS_THAN,r.DataValidationOperator.LESS_THAN_OR_EQUAL,r.DataValidationOperator.NOT_BETWEEN,r.DataValidationOperator.NOT_EQUAL]);f(this,"scopes",["sheet"]);f(this,"_customFormulaService",this.injector.get(m.DataValidationCustomFormulaService));f(this,"_lexerTreeBuilder",this.injector.get(T.LexerTreeBuilder))}async parseFormula(e,t,a,i,n){const l=await this._customFormulaService.getCellFormulaValue(t,a,e.uid,i,n),u=await this._customFormulaService.getCellFormula2Value(t,a,e.uid,i,n),{formula1:d,formula2:c}=e,h=y(String(l==null?void 0:l.v))&&y(String(u==null?void 0:u.v));return{formula1:de(r.isFormulaString(d)?l==null?void 0:l.v:d),formula2:de(r.isFormulaString(c)?u==null?void 0:u.v:c),isFormulaValid:h}}async isValidType(e){const{interceptValue:t,value:a}=e;return typeof a=="number"&&typeof t=="string"?!0:typeof t=="string"?!!r.numfmt.parseDate(t):!1}_validatorSingleFormula(e){return!r.Tools.isBlank(e)&&(r.isFormulaString(e)||!Number.isNaN(+e)||!!(e&&r.numfmt.parseDate(e)))}validatorFormula(e,t,a){const i=e.operator;if(!i)return{success:!1};const n=this._validatorSingleFormula(e.formula1),l=this.localeService.t("dataValidation.validFail.date");if(z.includes(i)){const d=this._validatorSingleFormula(e.formula2);return{success:n&&d,formula1:n?void 0:l,formula2:d?void 0:l}}return{success:n,formula1:n?void 0:l}}normalizeFormula(e,t,a){const{formula1:i,formula2:n,bizInfo:l}=e,u=d=>{var h;if(!d)return d;let c;if(!Number.isNaN(+d))c=r.numfmt.dateFromSerial(+d);else{const p=(h=r.numfmt.parseDate(d))==null?void 0:h.v;if(p==null)return"";c=r.numfmt.dateFromSerial(p)}return r.dayjs(`${c[0]}/${c[1]}/${c[2]} ${c[3]}:${c[4]}:${c[5]}`).format(l!=null&&l.showTime?"YYYY-MM-DD HH:mm:ss":"YYYY-MM-DD")};return{formula1:r.isFormulaString(i)?i:u(`${i}`),formula2:r.isFormulaString(n)?n:u(`${n}`)}}transform(e,t,a){const{value:i}=e;return{...e,value:de(i)}}get operatorNames(){return this.operators.map(e=>this.localeService.t(Ze[e]))}generateRuleName(e){var a,i;if(!e.operator)return this.titleStr;const t=this.localeService.t(Je[e.operator]).replace(Q,(a=e.formula1)!=null?a:"").replace(G,(i=e.formula2)!=null?i:"");return`${this.titleStr} ${t}`}generateRuleErrorMessage(e,t){if(!e.operator)return this.titleStr;const{transformedFormula1:a,transformedFormula2:i}=Z(this._lexerTreeBuilder,e,t);return`${this.localeService.t(et[e.operator]).replace(Q,a!=null?a:"").replace(G,i!=null?i:"")}`}}r.DataValidationOperator.BETWEEN+"",r.DataValidationOperator.EQUAL+"",r.DataValidationOperator.GREATER_THAN+"",r.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",r.DataValidationOperator.LESS_THAN+"",r.DataValidationOperator.LESS_THAN_OR_EQUAL+"",r.DataValidationOperator.NOT_BETWEEN+"",r.DataValidationOperator.NOT_EQUAL+"",r.DataValidationOperator.BETWEEN+"",r.DataValidationOperator.EQUAL+"",r.DataValidationOperator.GREATER_THAN+"",r.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",r.DataValidationOperator.LESS_THAN+"",r.DataValidationOperator.LESS_THAN_OR_EQUAL+"",r.DataValidationOperator.NOT_BETWEEN+"",r.DataValidationOperator.NOT_EQUAL+"";const Te={[r.DataValidationOperator.BETWEEN]:"dataValidation.errorMsg.between",[r.DataValidationOperator.EQUAL]:"dataValidation.errorMsg.equal",[r.DataValidationOperator.GREATER_THAN]:"dataValidation.errorMsg.greaterThan",[r.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.errorMsg.greaterThanOrEqual",[r.DataValidationOperator.LESS_THAN]:"dataValidation.errorMsg.lessThan",[r.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.errorMsg.lessThanOrEqual",[r.DataValidationOperator.NOT_BETWEEN]:"dataValidation.errorMsg.notBetween",[r.DataValidationOperator.NOT_EQUAL]:"dataValidation.errorMsg.notEqual"};function J(s){let o=s;return typeof s=="string"?((s.startsWith("¥")||s.startsWith("$"))&&(o=s.slice(1)),+o):+s}class it extends g.BaseDataValidator{constructor(){super(...arguments);f(this,"_customFormulaService",this.injector.get(m.DataValidationCustomFormulaService));f(this,"id",r.DataValidationType.DECIMAL);f(this,"_lexerTreeBuilder",this.injector.get(T.LexerTreeBuilder));f(this,"title","dataValidation.decimal.title");f(this,"operators",[r.DataValidationOperator.BETWEEN,r.DataValidationOperator.EQUAL,r.DataValidationOperator.GREATER_THAN,r.DataValidationOperator.GREATER_THAN_OR_EQUAL,r.DataValidationOperator.LESS_THAN,r.DataValidationOperator.LESS_THAN_OR_EQUAL,r.DataValidationOperator.NOT_BETWEEN,r.DataValidationOperator.NOT_EQUAL]);f(this,"scopes",["sheet"])}_isFormulaOrNumber(e){return!r.Tools.isBlank(e)&&(r.isFormulaString(e)||!Number.isNaN(+e))}async isValidType(e,t,a){const{value:i}=e;return!Number.isNaN(J(i))}transform(e,t,a){const{value:i}=e;return{...e,value:J(i)}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a,i,n){const l=await this._customFormulaService.getCellFormulaValue(t,a,e.uid,i,n),u=await this._customFormulaService.getCellFormula2Value(t,a,e.uid,i,n),{formula1:d,formula2:c}=e,h=y(String(l==null?void 0:l.v))&&y(String(u==null?void 0:u.v));return{formula1:this._parseNumber(r.isFormulaString(d)?l==null?void 0:l.v:d),formula2:this._parseNumber(r.isFormulaString(c)?u==null?void 0:u.v:c),isFormulaValid:h}}validatorFormula(e,t,a){const i=e.operator;if(!i)return{success:!1};const n=r.Tools.isDefine(e.formula1)&&this._isFormulaOrNumber(e.formula1),l=r.Tools.isDefine(e.formula2)&&this._isFormulaOrNumber(e.formula2),u=z.includes(i),d=this.localeService.t("dataValidation.validFail.number");return u?{success:n&&l,formula1:n?void 0:d,formula2:l?void 0:d}:{success:n,formula1:n?"":d}}generateRuleErrorMessage(e,t){if(!e.operator)return this.titleStr;const{transformedFormula1:a,transformedFormula2:i}=Z(this._lexerTreeBuilder,e,t);return`${this.localeService.t(Te[e.operator]).replace(Q,a!=null?a:"").replace(G,i!=null?i:"")}`}}function ce(s){if(!s)return[];const o=new Set;return s.forEach(e=>{e.forEach(t=>{var i,n;const a=U(t);if(a!=null){if(typeof a!="string"&&typeof(t==null?void 0:t.s)=="object"&&((n=(i=t.s)==null?void 0:i.n)!=null&&n.pattern)){o.add(r.numfmt.format(t.s.n.pattern,a,{throws:!1}));return}y(a.toString())&&o.add(a.toString())}})}),[...o]}const rt=["if","indirect","choose","offset"];function nt(s,o){if(!r.isFormulaString(s)||T.isReferenceString(s.slice(1)))return!0;const t=o.sequenceNodesBuilder(s);return t&&t.some(a=>typeof a=="object"&&a.nodeType===T.sequenceNodeType.FUNCTION&&rt.indexOf(a.token.toLowerCase())>-1)}function st(s,o){const{formula1:e="",ranges:t}=s;if(T.isReferenceString(e.slice(1))){const i=T.deserializeRangeWithSheet(e.slice(1));if((!i.sheetName||i.sheetName===o)&&t.some(n=>r.Rectangle.intersects(n,i.range)))return!0}return!1}class me extends g.BaseDataValidator{constructor(){super(...arguments);f(this,"formulaService",this.injector.get(m.DataValidationFormulaService));f(this,"_lexer",this.injector.get(T.LexerTreeBuilder));f(this,"_univerInstanceService",this.injector.get(r.IUniverInstanceService));f(this,"offsetFormulaByRange",!1);f(this,"id",r.DataValidationType.LIST);f(this,"title","dataValidation.list.title");f(this,"operators",[]);f(this,"scopes",["sheet"]);f(this,"skipDefaultFontRender",e=>e.renderMode!==r.DataValidationRenderMode.TEXT)}validatorFormula(e,t,a){var d,c,h;const i=!r.Tools.isBlank(e.formula1),n=nt((d=e.formula1)!=null?d:"",this._lexer),l=(h=(c=this._univerInstanceService.getUnit(t,r.UniverInstanceType.UNIVER_SHEET))==null?void 0:c.getSheetBySheetId(a))==null?void 0:h.getName(),u=st(e,l!=null?l:"");return{success:!!(i&&n&&!u),formula1:i?n?u?this.localeService.t("dataValidation.validFail.listIntersects"):void 0:this.localeService.t("dataValidation.validFail.listInvalid"):this.localeService.t("dataValidation.validFail.list")}}getExtraStyle(e,t,{style:a}){var n;const i=(n=a.tb!==r.WrapStrategy.OVERFLOW?a.tb:r.WrapStrategy.CLIP)!=null?n:r.WrapStrategy.WRAP;if(e.type===r.DataValidationType.LIST&&(e.renderMode===r.DataValidationRenderMode.ARROW||e.renderMode===r.DataValidationRenderMode.TEXT)){const l=this.getListWithColorMap(e),u=`${t!=null?t:""}`,d=l[u];if(d)return{bg:{rgb:d},tb:i}}return{tb:i}}parseCellValue(e){const t=e.toString();return k(t)}async parseFormula(e,t,a){var u,d;const i=await this.formulaService.getRuleFormulaResult(t,a,e.uid),n=w((d=(u=i==null?void 0:i[0])==null?void 0:u.result)==null?void 0:d[0][0]);return{formula1:void 0,formula2:void 0,isFormulaValid:y(String(n))}}async isValidType(e,t,a){var p,_;const{value:i,unitId:n,subUnitId:l}=e,{formula1:u=""}=a,d=await this.formulaService.getRuleFormulaResult(n,l,a.uid),c=r.isFormulaString(u)?ce((_=(p=d==null?void 0:d[0])==null?void 0:p.result)==null?void 0:_[0][0]):k(u);return this.parseCellValue(i).every(v=>c.includes(v))}generateRuleName(){return this.localeService.t("dataValidation.list.name")}generateRuleErrorMessage(){return this.localeService.t("dataValidation.list.error")}getList(e,t,a){var p,_,v,R;const{formula1:i=""}=e,n=this.injector.get(r.IUniverInstanceService),l=(p=t?n.getUniverSheetInstance(t):void 0)!=null?p:n.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET);if(!l)return[];const u=(_=a?l.getSheetBySheetId(a):void 0)!=null?_:l.getActiveSheet();if(!u)return[];const d=l.getUnitId(),c=u.getSheetId(),h=this.formulaService.getRuleFormulaResultSync(d,c,e.uid);return r.isFormulaString(i)?ce((R=(v=h==null?void 0:h[0])==null?void 0:v.result)==null?void 0:R[0][0]):k(i)}async getListAsync(e,t,a){var p,_,v,R;const{formula1:i=""}=e,n=this.injector.get(r.IUniverInstanceService),l=(p=t?n.getUniverSheetInstance(t):void 0)!=null?p:n.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET);if(!l)return[];const u=(_=a?l.getSheetBySheetId(a):void 0)!=null?_:l.getActiveSheet();if(!u)return[];const d=l.getUnitId(),c=u.getSheetId(),h=await this.formulaService.getRuleFormulaResult(d,c,e.uid);return r.isFormulaString(i)?ce((R=(v=h==null?void 0:h[0])==null?void 0:v.result)==null?void 0:R[0][0]):k(i)}getListWithColor(e,t,a){const i=this.getList(e,t,a),n=(e.formula2||"").split(",");return i.map((l,u)=>({label:l,color:n[u]}))}getListWithColorMap(e,t,a){const i=this.getListWithColor(e,t,a),n={};return i.forEach(l=>{l.color&&(n[l.label]=l.color)}),n}}class ot extends g.BaseDataValidator{constructor(){super(...arguments);f(this,"id",r.DataValidationType.TEXT_LENGTH);f(this,"title","dataValidation.textLength.title");f(this,"_lexerTreeBuilder",this.injector.get(T.LexerTreeBuilder));f(this,"operators",[r.DataValidationOperator.BETWEEN,r.DataValidationOperator.EQUAL,r.DataValidationOperator.GREATER_THAN,r.DataValidationOperator.GREATER_THAN_OR_EQUAL,r.DataValidationOperator.LESS_THAN,r.DataValidationOperator.LESS_THAN_OR_EQUAL,r.DataValidationOperator.NOT_BETWEEN,r.DataValidationOperator.NOT_EQUAL]);f(this,"scopes",["sheet"]);f(this,"_customFormulaService",this.injector.get(m.DataValidationCustomFormulaService))}_isFormulaOrInt(e){return!r.Tools.isBlank(e)&&(r.isFormulaString(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}validatorFormula(e,t,a){const i=e.operator;if(!i)return{success:!1};const n=r.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),l=r.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),u=z.includes(i),d=this.localeService.t("dataValidation.validFail.number");return u?{success:n&&l,formula1:n?void 0:d,formula2:l?void 0:d}:{success:n,formula1:d}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a,i,n){const l=await this._customFormulaService.getCellFormulaValue(t,a,e.uid,i,n),u=await this._customFormulaService.getCellFormula2Value(t,a,e.uid,i,n),{formula1:d,formula2:c}=e,h=y(String(l==null?void 0:l.v))&&y(String(u==null?void 0:u.v));return{formula1:this._parseNumber(r.isFormulaString(d)?l==null?void 0:l.v:d),formula2:this._parseNumber(r.isFormulaString(c)?u==null?void 0:u.v:c),isFormulaValid:h}}transform(e,t,a){return{...e,value:e.value.toString().length}}async isValidType(e,t,a){const{value:i}=e;return typeof i=="string"||typeof i=="number"}generateRuleErrorMessage(e,t){if(!e.operator)return this.titleStr;const{transformedFormula1:a,transformedFormula2:i}=Z(this._lexerTreeBuilder,e,t);return`${this.localeService.t(g.TextLengthErrorTitleMap[e.operator]).replace(Q,a!=null?a:"").replace(G,i!=null?i:"")}`}}function Oe(s){var e,t;return s?s.p?!((t=(e=s.p.body)==null?void 0:e.dataStream)!=null?t:"").slice(0,-2).trim():r.Tools.isBlank(s.v):!0}function Y(s,o,e,t,a="command",i=!0){const n=t.get(T.LexerTreeBuilder),l=t.get(g.DataValidatorRegistryService),u=[],d=[],c=t.get(m.SheetDataValidationModel),h=t.get(r.IUniverInstanceService),p=D.getSheetCommandTarget(h,{unitId:s,subUnitId:o});if(!p)return{redoMutations:u,undoMutations:d};const{worksheet:_}=p,v=new r.ObjectMatrix;let R=!1;function V(S,M){i&&S.forEach(O=>{r.Range.foreach(O,(I,E)=>{const F=_.getCellRaw(I,E),B=Ve(F);(Oe(F)||B===M)&&!(F!=null&&F.p)&&(R=!0,v.setValue(I,E,{v:M,p:null}))})})}if(e.forEach(S=>{switch(S.type){case"delete":u.push({id:g.RemoveDataValidationMutation.id,params:{unitId:s,subUnitId:o,ruleId:S.rule.uid,source:a}}),d.unshift({id:g.AddDataValidationMutation.id,params:{unitId:s,subUnitId:o,rule:S.rule,index:S.index,source:a}});break;case"update":{if(P(S.rule.type,l)){const O=S.oldRanges[0].startRow,I=S.oldRanges[0].startColumn,E=S.newRanges[0].startRow,F=S.newRanges[0].startColumn,B=E-O,ne=F-I,se=r.isFormulaString(S.rule.formula1)?n.moveFormulaRefOffset(S.rule.formula1,ne,B):S.rule.formula1,oe=r.isFormulaString(S.rule.formula2)?n.moveFormulaRefOffset(S.rule.formula2,ne,B):S.rule.formula2;se!==S.rule.formula1||oe!==S.rule.formula2||!r.isRangesEqual(S.newRanges,S.oldRanges)?(u.push({id:g.UpdateDataValidationMutation.id,params:{unitId:s,subUnitId:o,ruleId:S.ruleId,payload:{type:g.UpdateRuleType.ALL,payload:{formula1:se,formula2:oe,ranges:S.newRanges}}}}),d.unshift({id:g.UpdateDataValidationMutation.id,params:{unitId:s,subUnitId:o,ruleId:S.ruleId,payload:{type:g.UpdateRuleType.ALL,payload:{formula1:S.rule.formula1,formula2:S.rule.formula2,ranges:S.oldRanges}}}})):(u.push({id:g.UpdateDataValidationMutation.id,params:{unitId:s,subUnitId:o,ruleId:S.ruleId,payload:{type:g.UpdateRuleType.RANGE,payload:S.newRanges},source:a}}),d.unshift({id:g.UpdateDataValidationMutation.id,params:{unitId:s,subUnitId:o,ruleId:S.ruleId,payload:{type:g.UpdateRuleType.RANGE,payload:S.oldRanges},source:a}}))}else u.push({id:g.UpdateDataValidationMutation.id,params:{unitId:s,subUnitId:o,ruleId:S.ruleId,payload:{type:g.UpdateRuleType.RANGE,payload:S.newRanges},source:a}}),d.unshift({id:g.UpdateDataValidationMutation.id,params:{unitId:s,subUnitId:o,ruleId:S.ruleId,payload:{type:g.UpdateRuleType.RANGE,payload:S.oldRanges},source:a}});const M=c.getRuleById(s,o,S.ruleId);if(M&&M.type===r.DataValidationType.CHECKBOX){const I=c.getValidator(r.DataValidationType.CHECKBOX).parseFormulaSync(M,s,o);V(S.newRanges,I.formula2)}break}case"add":{if(u.push({id:g.AddDataValidationMutation.id,params:{unitId:s,subUnitId:o,rule:S.rule,source:a}}),d.unshift({id:g.RemoveDataValidationMutation.id,params:{unitId:s,subUnitId:o,ruleId:S.rule.uid,source:a}}),S.rule.type===r.DataValidationType.CHECKBOX){const O=c.getValidator(r.DataValidationType.CHECKBOX).parseFormulaSync(S.rule,s,o);V(S.rule.ranges,O.originFormula2)}break}}}),R){const S={id:D.SetRangeValuesMutation.id,params:{unitId:s,subUnitId:o,cellValue:v.getData()}},M={id:D.SetRangeValuesMutation.id,params:D.SetRangeValuesUndoMutationFactory(t,S.params)};u.push(S),d.push(M)}return{redoMutations:u,undoMutations:d}}const Ie={type:r.CommandType.COMMAND,id:"sheet.command.updateDataValidationRuleRange",handler(s,o){if(!o)return!1;const{unitId:e,subUnitId:t,ranges:a,ruleId:i}=o,n=s.get(m.SheetDataValidationModel),l=s.get(r.ICommandService),u=s.get(r.IUndoRedoService);if(!n.getRuleById(e,t,i))return!1;const c=n.getRuleObjectMatrix(e,t).clone();c.updateRange(i,a);const h=c.diff(n.getRules(e,t)),{redoMutations:p,undoMutations:_}=Y(e,t,h,s);return u.pushUndoRedo({undoMutations:_,redoMutations:p,unitID:e}),r.sequenceExecute(p,l),!0}},Fe={type:r.CommandType.COMMAND,id:"sheet.command.addDataValidation",handler(s,o){if(!o)return!1;const{unitId:e,subUnitId:t,rule:a}=o,i=s.get(m.SheetDataValidationModel),n=s.get(r.ICommandService),l=s.get(r.IUndoRedoService),u=i.getRuleObjectMatrix(e,t).clone();u.addRule(a);const d=u.diff(i.getRules(e,t)),c=i.getValidator(a.type),h={unitId:e,subUnitId:t,rule:{...a,...c==null?void 0:c.normalizeFormula(a,e,t)}},{redoMutations:p,undoMutations:_}=Y(e,t,d,s);return p.push({id:g.AddDataValidationMutation.id,params:h}),_.unshift({id:g.RemoveDataValidationMutation.id,params:{unitId:e,subUnitId:t,ruleId:a.uid}}),l.pushUndoRedo({unitID:e,redoMutations:p,undoMutations:_}),r.sequenceExecute(p,n),!0}},Ee={type:r.CommandType.COMMAND,id:"sheets.command.update-data-validation-setting",handler(s,o){if(!o)return!1;const e=s.get(r.ICommandService),t=s.get(r.IUndoRedoService),a=s.get(m.SheetDataValidationModel),i=s.get(g.DataValidatorRegistryService),{unitId:n,subUnitId:l,ruleId:u,setting:d}=o,c=i.getValidatorItem(d.type);if(!c)return!1;const h=a.getRuleById(n,l,u);if(!h)return!1;const p={...h,...d};if(!c.validatorFormula(p,n,l).success)return!1;const _={unitId:n,subUnitId:l,ruleId:u,payload:{type:g.UpdateRuleType.SETTING,payload:{...d,...c.normalizeFormula(p,n,l)}}},v=[{id:g.UpdateDataValidationMutation.id,params:_}],R={unitId:n,subUnitId:l,ruleId:u,payload:{type:g.UpdateRuleType.SETTING,payload:g.getRuleSetting(h)}},V=[{id:g.UpdateDataValidationMutation.id,params:R}];if(d.type===r.DataValidationType.CHECKBOX){const M=h.ranges,O=s.get(r.IUniverInstanceService),I=D.getSheetCommandTarget(O,{unitId:n,subUnitId:l});if(I){const E=new r.ObjectMatrix,{worksheet:F}=I,{formula2:B=x,formula1:ne=W}=h,{formula2:se=x,formula1:oe=W}=d;let _e=!1;if(M.forEach(le=>{r.Range.foreach(le,(X,Se)=>{const C=F.getCellRaw(X,Se),Pe=Ve(C);(Oe(C)||Pe===String(B))&&!(C!=null&&C.p)?(E.setValue(X,Se,{v:se,p:null}),_e=!0):Pe===String(ne)&&!(C!=null&&C.p)&&(E.setValue(X,Se,{v:oe,p:null}),_e=!0)})}),_e){const le={id:D.SetRangeValuesMutation.id,params:{unitId:n,subUnitId:l,cellValue:E.getData()}},X={id:D.SetRangeValuesMutation.id,params:D.SetRangeValuesUndoMutationFactory(s,le.params)};v.push(le),V.push(X)}}}return r.sequenceExecute(v,e).result?(t.pushUndoRedo({unitID:n,redoMutations:v,undoMutations:V}),!0):!1}},Ce={type:r.CommandType.COMMAND,id:"sheets.command.update-data-validation-options",handler(s,o){if(!o)return!1;const e=s.get(r.ICommandService),t=s.get(r.IUndoRedoService),a=s.get(m.SheetDataValidationModel),{unitId:i,subUnitId:n,ruleId:l,options:u}=o,d=a.getRuleById(i,n,l);if(!d)return!1;const c={unitId:i,subUnitId:n,ruleId:l,payload:{type:g.UpdateRuleType.OPTIONS,payload:u}},h=[{id:g.UpdateDataValidationMutation.id,params:c}],p={unitId:i,subUnitId:n,ruleId:l,payload:{type:g.UpdateRuleType.OPTIONS,payload:g.getRuleOptions(d)}},_=[{id:g.UpdateDataValidationMutation.id,params:p}];return t.pushUndoRedo({unitID:i,redoMutations:h,undoMutations:_}),e.executeCommand(g.UpdateDataValidationMutation.id,c),!0}},Ne={type:r.CommandType.COMMAND,id:"sheets.command.clear-range-data-validation",handler(s,o){if(!o)return!1;const{unitId:e,subUnitId:t,ranges:a}=o,i=s.get(r.ICommandService),n=s.get(r.IUniverInstanceService),l=D.getSheetCommandTarget(n,{unitId:e,subUnitId:t}),u=s.get(m.SheetDataValidationModel);if(!l)return!1;const d=s.get(r.IUndoRedoService),c=u.getRuleObjectMatrix(e,t).clone();c.removeRange(a);const h=c.diff(u.getRules(e,t)),{redoMutations:p,undoMutations:_}=Y(e,t,h,s);return d.pushUndoRedo({unitID:e,redoMutations:p,undoMutations:_}),r.sequenceExecute(p,i).result}},Ae={type:r.CommandType.COMMAND,id:"sheet.command.remove-all-data-validation",handler(s,o){if(!o)return!1;const{unitId:e,subUnitId:t}=o,a=s.get(r.ICommandService),i=s.get(m.SheetDataValidationModel),n=s.get(r.IUndoRedoService),l=[...i.getRules(e,t)],u={unitId:e,subUnitId:t,ruleId:l.map(h=>h.uid)},d=[{id:g.RemoveDataValidationMutation.id,params:u}],c=[{id:g.AddDataValidationMutation.id,params:{unitId:e,subUnitId:t,rule:l}}];return n.pushUndoRedo({redoMutations:d,undoMutations:c,unitID:e}),a.executeCommand(g.RemoveDataValidationMutation.id,u),!0}},lt=(s,o)=>{const e=s.get(m.SheetDataValidationModel),{unitId:t,subUnitId:a,ruleId:i,source:n}=o;if(Array.isArray(i)){const u=i.map(d=>e.getRuleById(t,a,d)).filter(Boolean);return[{id:g.AddDataValidationMutation.id,params:{unitId:t,subUnitId:a,rule:u,source:n}}]}return[{id:g.AddDataValidationMutation.id,params:{unitId:t,subUnitId:a,rule:{...e.getRuleById(t,a,i)},index:e.getRuleIndex(t,a,i)}}]},we={type:r.CommandType.COMMAND,id:"sheet.command.remove-data-validation-rule",handler(s,o){if(!o)return!1;const{unitId:e,subUnitId:t,ruleId:a}=o,i=s.get(r.ICommandService),n=s.get(r.IUndoRedoService),l=s.get(m.SheetDataValidationModel),u=[{id:g.RemoveDataValidationMutation.id,params:o}],d=[{id:g.AddDataValidationMutation.id,params:{unitId:e,subUnitId:t,rule:{...l.getRuleById(e,t,a)},index:l.getRuleIndex(e,t,a)}}];return n.pushUndoRedo({undoMutations:d,redoMutations:u,unitID:o.unitId}),i.executeCommand(g.RemoveDataValidationMutation.id,o),!0}},ut="sheets-data-validation.config",Ue={};var dt=Object.defineProperty,ct=Object.getOwnPropertyDescriptor,mt=(s,o,e,t)=>{for(var a=t>1?void 0:t?ct(o,e):o,i=s.length-1,n;i>=0;i--)(n=s[i])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&dt(o,e,a),a},he=(s,o)=>(e,t)=>o(e,t,s);let ee=class extends r.Disposable{constructor(o,e,t){super();f(this,"_disposableMap",new Map);f(this,"registerRule",(o,e,t)=>{P(t.type,this._validatorRegistryService)&&this.register(o,e,t)});this._dataValidationModel=o,this._formulaRefRangeService=e,this._validatorRegistryService=t,this._initRefRange()}_getIdWithUnitId(o,e,t){return`${o}_${e}_${t}`}register(o,e,t){const a=t.ranges,i=t.formula1,n=t.formula2,l=this._formulaRefRangeService.registerRangeFormula(o,e,a,[i!=null?i:"",n!=null?n:""],d=>{if(d.length===0)return{undos:[{id:g.AddDataValidationMutation.id,params:{unitId:o,subUnitId:e,rule:t,source:"patched"}}],redos:[{id:g.RemoveDataValidationMutation.id,params:{unitId:o,subUnitId:e,ruleId:t.uid,source:"patched"}}]};const c=[],h=[],p=d[0];c.push({id:g.UpdateDataValidationMutation.id,params:{unitId:o,subUnitId:e,ruleId:t.uid,payload:{type:g.UpdateRuleType.ALL,payload:{ranges:p.ranges,formula1:p.formulas[0],formula2:p.formulas[1]}},source:"patched"}}),h.push({id:g.UpdateDataValidationMutation.id,params:{unitId:o,subUnitId:e,ruleId:t.uid,payload:{type:g.UpdateRuleType.ALL,payload:{ranges:a,formula1:i,formula2:n}},source:"patched"}});for(let _=1;_<d.length;_++){const v=d[_],R=r.generateRandomId();c.push({id:g.AddDataValidationMutation.id,params:{unitId:o,subUnitId:e,rule:{...t,uid:R,formula1:v.formulas[0],formula2:v.formulas[1],ranges:v.ranges},source:"patched"}}),h.push({id:g.RemoveDataValidationMutation.id,params:{unitId:o,subUnitId:e,ruleId:R,source:"patched"}})}return{undos:h,redos:c}}),u=this._getIdWithUnitId(o,e,t.uid);this._disposableMap.set(u,l)}_initRefRange(){const o=this._dataValidationModel.getAll();for(const[e,t]of o)for(const[a,i]of t)for(const n of i)this.registerRule(e,a,n);this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(e=>{const{unitId:t,subUnitId:a,rule:i}=e;switch(e.type){case"add":{const n=e.rule;this.registerRule(e.unitId,e.subUnitId,n);break}case"remove":{const n=this._disposableMap.get(this._getIdWithUnitId(t,a,i.uid));n&&n.dispose();break}case"update":{const n=e.rule,l=this._disposableMap.get(this._getIdWithUnitId(t,a,n.uid));l&&l.dispose(),this.registerRule(e.unitId,e.subUnitId,n);break}}})),this.disposeWithMe(r.toDisposable(()=>{this._disposableMap.forEach(e=>{e.dispose()}),this._disposableMap.clear()}))}};ee=mt([he(0,r.Inject(m.SheetDataValidationModel)),he(1,r.Inject(K.FormulaRefRangeService)),he(2,r.Inject(g.DataValidatorRegistryService))],ee);var be=(s=>(s[s.View=0]="View",s[s.Edit=1]="Edit",s[s.ManageCollaborator=2]="ManageCollaborator",s[s.Print=3]="Print",s[s.Duplicate=4]="Duplicate",s[s.Comment=5]="Comment",s[s.Copy=6]="Copy",s[s.Share=7]="Share",s[s.Export=8]="Export",s[s.MoveWorksheet=9]="MoveWorksheet",s[s.DeleteWorksheet=10]="DeleteWorksheet",s[s.HideWorksheet=11]="HideWorksheet",s[s.RenameWorksheet=12]="RenameWorksheet",s[s.CreateWorksheet=13]="CreateWorksheet",s[s.SetWorksheetStyle=14]="SetWorksheetStyle",s[s.EditWorksheetCell=15]="EditWorksheetCell",s[s.InsertHyperlink=16]="InsertHyperlink",s[s.Sort=17]="Sort",s[s.Filter=18]="Filter",s[s.PivotTable=19]="PivotTable",s[s.FloatImg=20]="FloatImg",s[s.History=21]="History",s[s.RwHgtClWdt=22]="RwHgtClWdt",s[s.ViemRwHgtClWdt=23]="ViemRwHgtClWdt",s[s.ViewFilter=24]="ViewFilter",s[s.MoveSheet=25]="MoveSheet",s[s.DeleteSheet=26]="DeleteSheet",s[s.HideSheet=27]="HideSheet",s[s.CopySheet=28]="CopySheet",s[s.RenameSheet=29]="RenameSheet",s[s.CreateSheet=30]="CreateSheet",s[s.SelectProtectedCells=31]="SelectProtectedCells",s[s.SelectUnProtectedCells=32]="SelectUnProtectedCells",s[s.SetCellStyle=33]="SetCellStyle",s[s.SetCellValue=34]="SetCellValue",s[s.SetRowStyle=35]="SetRowStyle",s[s.SetColumnStyle=36]="SetColumnStyle",s[s.InsertRow=37]="InsertRow",s[s.InsertColumn=38]="InsertColumn",s[s.DeleteRow=39]="DeleteRow",s[s.DeleteColumn=40]="DeleteColumn",s[s.EditExtraObject=41]="EditExtraObject",s[s.Delete=42]="Delete",s[s.RecoverHistory=43]="RecoverHistory",s[s.ViewHistory=44]="ViewHistory",s[s.CreatePermissionObject=45]="CreatePermissionObject",s[s.UNRECOGNIZED=-1]="UNRECOGNIZED",s))(be||{}),ht=Object.defineProperty,pt=Object.getOwnPropertyDescriptor,gt=(s,o,e,t)=>{for(var a=t>1?void 0:t?pt(o,e):o,i=s.length-1,n;i>=0;i--)(n=s[i])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&ht(o,e,a),a},pe=(s,o)=>(e,t)=>o(e,t,s);m.DataValidationFormulaController=class extends r.Disposable{constructor(o,e,t){super(),this._univerInstanceService=o,this._permissionService=e,this._lexerTreeBuilder=t}getFormulaRefCheck(o){var t,a;const e=this._lexerTreeBuilder.sequenceNodesBuilder(o);if(!e)return!0;for(let i=0;i<e.length;i++){const n=e[i];if(typeof n=="string")continue;const{token:l}=n,u=T.deserializeRangeWithSheetWithCache(l),d=this._univerInstanceService.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET);let c=d.getActiveSheet();const h=d.getUnitId();if(u.sheetName){if(c=d.getSheetBySheetName(u.sheetName),!c)return!1;const V=c==null?void 0:c.getSheetId();if(!this._permissionService.getPermissionPoint(new D.WorksheetViewPermission(h,V).id))return!1}if(!c)return!1;const{startRow:p,endRow:_,startColumn:v,endColumn:R}=u.range;for(let V=p;V<=_;V++)for(let S=v;S<=R;S++){const M=(a=(t=c.getCell(V,S))==null?void 0:t.selectionProtection)==null?void 0:a[0];if((M==null?void 0:M[be.View])===!1)return!1}}return!0}},m.DataValidationFormulaController=gt([pe(0,r.IUniverInstanceService),pe(1,r.IPermissionService),pe(2,r.Inject(T.LexerTreeBuilder))],m.DataValidationFormulaController);var ft=Object.defineProperty,_t=Object.getOwnPropertyDescriptor,St=(s,o,e,t)=>{for(var a=t>1?void 0:t?_t(o,e):o,i=s.length-1,n;i>=0;i--)(n=s[i])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&ft(o,e,a),a},b=(s,o)=>(e,t)=>o(e,t,s);let te=class extends r.Disposable{constructor(o,e,t,a,i,n){super();f(this,"_disposableMap",new Map);f(this,"registerRule",(o,e,t)=>{P(t.type,this._validatorRegistryService)||(this.register(o,e,t),this.registerFormula(o,e,t))});this._dataValidationModel=o,this._injector=e,this._refRangeService=t,this._dataValidationFormulaService=a,this._formulaRefRangeService=i,this._validatorRegistryService=n,this._initRefRange()}_getIdWithUnitId(o,e,t){return`${o}_${e}_${t}`}registerFormula(o,e,t){var d;const a=t.uid,i=this._getIdWithUnitId(o,e,a),n=(d=this._disposableMap.get(i))!=null?d:new Set,l=(c,h)=>{const p=this._dataValidationModel.getRuleById(o,e,a);if(!p)return{redos:[],undos:[]};const _=p[c];if(!_||_===h)return{redos:[],undos:[]};const v={unitId:o,subUnitId:e,ruleId:t.uid,payload:{type:g.UpdateRuleType.SETTING,payload:{type:p.type,formula1:p.formula1,formula2:p.formula2,[c]:h}},source:"patched"},R={unitId:o,subUnitId:e,ruleId:t.uid,payload:{type:g.UpdateRuleType.SETTING,payload:{type:p.type,formula1:p.formula1,formula2:p.formula2}},source:"patched"},V=[{id:g.UpdateDataValidationMutation.id,params:v}],S=[{id:g.UpdateDataValidationMutation.id,params:R}];return{redos:V,undos:S}},u=this._dataValidationFormulaService.getRuleFormulaInfo(o,e,a);if(u){const[c,h]=u;if(c){const p=this._formulaRefRangeService.registerFormula(o,e,c.text,_=>l("formula1",_));n.add(()=>p.dispose())}if(h){const p=this._formulaRefRangeService.registerFormula(o,e,h.text,_=>l("formula2",_));n.add(()=>p.dispose())}}}register(o,e,t){var u;const a=d=>{const c=[...t.ranges],p=c.map(v=>D.handleCommonDefaultRangeChangeWithEffectRefCommands(v,d)).filter(v=>!!v).flat();if(r.isRangesEqual(p,c))return{redos:[],undos:[]};if(p.length){const v={unitId:o,subUnitId:e,ruleId:t.uid,payload:{type:g.UpdateRuleType.RANGE,payload:p},source:"patched"},R=[{id:g.UpdateDataValidationMutation.id,params:v}],V=[{id:g.UpdateDataValidationMutation.id,params:{unitId:o,subUnitId:e,ruleId:t.uid,payload:{type:g.UpdateRuleType.RANGE,payload:c},source:"patched"}}];return{redos:R,undos:V}}else{const v={unitId:o,subUnitId:e,ruleId:t.uid},R=[{id:g.RemoveDataValidationMutation.id,params:v}],V=lt(this._injector,v);return{redos:R,undos:V}}},i=[];t.ranges.forEach(d=>{const c=this._refRangeService.registerRefRange(d,a,o,e);i.push(()=>c.dispose())});const n=this._getIdWithUnitId(o,e,t.uid),l=(u=this._disposableMap.get(n))!=null?u:new Set;l.add(()=>i.forEach(d=>d())),this._disposableMap.set(n,l)}_initRefRange(){const o=this._dataValidationModel.getAll();for(const[e,t]of o)for(const[a,i]of t)for(const n of i)this.registerRule(e,a,n);this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(e=>{const{unitId:t,subUnitId:a,rule:i}=e;switch(e.type){case"add":{const n=e.rule;this.registerRule(e.unitId,e.subUnitId,n);break}case"remove":{const n=this._disposableMap.get(this._getIdWithUnitId(t,a,i.uid));n&&n.forEach(l=>l());break}case"update":{const n=e.rule,l=this._disposableMap.get(this._getIdWithUnitId(t,a,n.uid));l&&l.forEach(u=>u()),this.registerRule(e.unitId,e.subUnitId,n);break}}})),this.disposeWithMe(r.toDisposable(()=>{this._disposableMap.forEach(e=>{e.forEach(t=>t())}),this._disposableMap.clear()}))}};te=St([b(0,r.Inject(m.SheetDataValidationModel)),b(1,r.Inject(r.Injector)),b(2,r.Inject(D.RefRangeService)),b(3,r.Inject(m.DataValidationFormulaService)),b(4,r.Inject(K.FormulaRefRangeService)),b(5,r.Inject(g.DataValidatorRegistryService))],te);var vt=Object.defineProperty,Rt=Object.getOwnPropertyDescriptor,Vt=(s,o,e,t)=>{for(var a=t>1?void 0:t?Rt(o,e):o,i=s.length-1,n;i>=0;i--)(n=s[i])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&vt(o,e,a),a},ge=(s,o)=>(e,t)=>o(e,t,s);let ae=class extends r.Disposable{constructor(s,o,e){super(),this._sheetInterceptorService=s,this._univerInstanceService=o,this._sheetDataValidationModel=e,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:s=>{var o;if(s.id===D.RemoveSheetCommand.id){const e=s.params,t=e.unitId||this._univerInstanceService.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET).getUnitId(),a=this._univerInstanceService.getUniverSheetInstance(t);if(!a)return{redos:[],undos:[]};const i=e.subUnitId||((o=a.getActiveSheet())==null?void 0:o.getSheetId());if(!i)return{redos:[],undos:[]};const n=this._sheetDataValidationModel.getRules(t,i);if(n.length===0)return{redos:[],undos:[]};const l=n.map(c=>c.uid),u={unitId:t,subUnitId:i,ruleId:l,source:"patched"},d={unitId:t,subUnitId:i,rule:[...n],source:"patched"};return{redos:[{id:g.RemoveDataValidationMutation.id,params:u}],undos:[{id:g.AddDataValidationMutation.id,params:d}]}}return{redos:[],undos:[]}}}))}};ae=Vt([ge(0,r.Inject(D.SheetInterceptorService)),ge(1,r.Inject(r.IUniverInstanceService)),ge(2,r.Inject(m.SheetDataValidationModel))],ae);class Dt extends g.BaseDataValidator{constructor(){super(...arguments);f(this,"id",r.DataValidationType.ANY);f(this,"title","dataValidation.any.title");f(this,"operators",[]);f(this,"scopes",["sheet"]);f(this,"offsetFormulaByRange",!1)}async parseFormula(e,t,a){return{formula1:e.formula1,formula2:e.formula2,isFormulaValid:!0}}validatorFormula(e,t,a){return{success:!0}}async isValidType(e,t,a){return!0}generateRuleErrorMessage(e){return this.localeService.t("dataValidation.any.error")}}class Mt extends g.BaseDataValidator{constructor(){super(...arguments);f(this,"id",r.DataValidationType.CUSTOM);f(this,"title","dataValidation.custom.title");f(this,"operators",[]);f(this,"scopes",["sheet"]);f(this,"_customFormulaService",this.injector.get(m.DataValidationCustomFormulaService));f(this,"_lexerTreeBuilder",this.injector.get(T.LexerTreeBuilder))}validatorFormula(e,t,a){var d;const i=r.isFormulaString(e.formula1),n=(d=e.formula1)!=null?d:"",u=this._lexerTreeBuilder.checkIfAddBracket(n)===0&&n.startsWith(T.operatorToken.EQUALS);return{success:i&&u,formula1:i&&u?"":this.localeService.t("dataValidation.validFail.formula")}}async parseFormula(e,t,a){return{formula1:void 0,formula2:void 0,isFormulaValid:!0}}async isValidType(e,t,a){const{column:i,row:n,unitId:l,subUnitId:u}=e,d=await this._customFormulaService.getCellFormulaValue(l,u,a.uid,n,i),c=d==null?void 0:d.v;return y(String(c))&&r.Tools.isDefine(c)&&c!==""?d.t===r.CellValueType.BOOLEAN?!!c:typeof c=="boolean"?c:typeof c=="number"?!!c:typeof c=="string"?y(c):!!c:!1}generateRuleErrorMessage(e){return this.localeService.t("dataValidation.custom.error")}generateRuleName(e){var t;return this.localeService.t("dataValidation.custom.ruleName").replace("{FORMULA1}",(t=e.formula1)!=null?t:"")}}class Le extends me{constructor(){super(...arguments);f(this,"id",r.DataValidationType.LIST_MULTIPLE);f(this,"title","dataValidation.listMultiple.title");f(this,"offsetFormulaByRange",!1);f(this,"skipDefaultFontRender",()=>!0)}}class yt extends g.BaseDataValidator{constructor(){super(...arguments);f(this,"_customFormulaService",this.injector.get(m.DataValidationCustomFormulaService));f(this,"_lexerTreeBuilder",this.injector.get(T.LexerTreeBuilder));f(this,"id",r.DataValidationType.WHOLE);f(this,"title","dataValidation.whole.title");f(this,"operators",[r.DataValidationOperator.BETWEEN,r.DataValidationOperator.EQUAL,r.DataValidationOperator.GREATER_THAN,r.DataValidationOperator.GREATER_THAN_OR_EQUAL,r.DataValidationOperator.LESS_THAN,r.DataValidationOperator.LESS_THAN_OR_EQUAL,r.DataValidationOperator.NOT_BETWEEN,r.DataValidationOperator.NOT_EQUAL]);f(this,"scopes",["sheet"])}_isFormulaOrInt(e){return!r.Tools.isBlank(e)&&(r.isFormulaString(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}async isValidType(e,t,a){const{value:i}=e,n=J(i);return!Number.isNaN(n)&&Number.isInteger(n)}transform(e,t,a){const{value:i}=e;return{...e,value:J(i)}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a,i,n){const l=await this._customFormulaService.getCellFormulaValue(t,a,e.uid,i,n),u=await this._customFormulaService.getCellFormula2Value(t,a,e.uid,i,n),{formula1:d,formula2:c}=e,h=r.isFormulaString(d)?l==null?void 0:l.v:d,p=r.isFormulaString(c)?u==null?void 0:u.v:c,_=y(`${h}`)&&y(`${p}`);return{formula1:this._parseNumber(h),formula2:this._parseNumber(p),isFormulaValid:_}}validatorFormula(e,t,a){const i=e.operator;if(!i)return{success:!1};const n=r.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),l=r.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),u=z.includes(i),d=this.localeService.t("dataValidation.validFail.number");return u?{success:n&&l,formula1:n?void 0:d,formula2:l?void 0:d}:{success:n,formula1:d}}generateRuleErrorMessage(e,t){if(!e.operator)return this.titleStr;const{transformedFormula1:a,transformedFormula2:i}=Z(this._lexerTreeBuilder,e,t);return`${this.localeService.t(Te[e.operator]).replace(Q,a!=null?a:"").replace(G,i!=null?i:"")}`}}var Tt=Object.defineProperty,Ot=Object.getOwnPropertyDescriptor,It=(s,o,e,t)=>{for(var a=t>1?void 0:t?Ot(o,e):o,i=s.length-1,n;i>=0;i--)(n=s[i])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&Tt(o,e,a),a},L=(s,o)=>(e,t)=>o(e,t,s);let ie=class extends r.RxDisposable{constructor(s,o,e,t,a,i){super(),this._univerInstanceService=s,this._dataValidatorRegistryService=o,this._injector=e,this._selectionManagerService=t,this._sheetInterceptorService=a,this._sheetDataValidationModel=i,this._init()}_init(){this._registerValidators(),this._initCommandInterceptor()}_registerValidators(){[Dt,it,yt,ot,ye,Me,me,Le,Mt].forEach(s=>{const o=this._injector.createInstance(s);this.disposeWithMe(this._dataValidatorRegistryService.register(o)),this.disposeWithMe(r.toDisposable(()=>this._injector.delete(s)))})}_initCommandInterceptor(){this._sheetInterceptorService.interceptCommand({getMutations:s=>{var o;if(s.id===D.ClearSelectionAllCommand.id){const e=this._univerInstanceService.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET),t=e.getUnitId(),a=e.getActiveSheet();if(!a)throw new Error("No active sheet found");const i=a.getSheetId(),n=(o=this._selectionManagerService.getCurrentSelections())==null?void 0:o.map(h=>h.range),l=this._sheetDataValidationModel.getRuleObjectMatrix(t,i).clone();n&&l.removeRange(n);const u=l.diff(this._sheetDataValidationModel.getRules(t,i)),{redoMutations:d,undoMutations:c}=Y(t,i,u,this._injector,"patched");return{undos:c,redos:d}}return{undos:[],redos:[]}}})}};ie=It([L(0,r.IUniverInstanceService),L(1,r.Inject(g.DataValidatorRegistryService)),L(2,r.Inject(r.Injector)),L(3,r.Inject(D.SheetsSelectionsService)),L(4,r.Inject(D.SheetInterceptorService)),L(5,r.Inject(m.SheetDataValidationModel))],ie);var Ft=Object.defineProperty,Et=Object.getOwnPropertyDescriptor,Ct=(s,o,e,t)=>{for(var a=t>1?void 0:t?Et(o,e):o,i=s.length-1,n;i>=0;i--)(n=s[i])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&Ft(o,e,a),a},re=(s,o)=>(e,t)=>o(e,t,s);m.SheetsDataValidationValidatorService=class extends r.Disposable{constructor(o,e,t,a){super(),this._univerInstanceService=o,this._sheetDataValidationModel=e,this._dataValidationCacheService=t,this._lifecycleService=a,this._initRecalculate()}_initRecalculate(){const o=e=>{if(e.length===0)return;const t=this._univerInstanceService.getCurrentUnitForType(r.UniverInstanceType.UNIVER_SHEET),a=t==null?void 0:t.getActiveSheet(),i={};e.flat().forEach(n=>{i[n.unitId]||(i[n.unitId]={}),i[n.unitId][n.subUnitId]||(i[n.unitId][n.subUnitId]=[]);const l=this._univerInstanceService.getUnit(n.unitId,r.UniverInstanceType.UNIVER_SHEET),u=l==null?void 0:l.getSheetBySheetId(n.subUnitId);u&&i[n.unitId][n.subUnitId].push(...n.ranges.map(d=>r.Range.transformRange(d,u)))}),Object.entries(i).forEach(([n,l])=>{Object.entries(l).forEach(([u,d])=>{(t==null?void 0:t.getUnitId())===n&&(a==null?void 0:a.getSheetId())===u?this.validatorRanges(n,u,d):requestIdleCallback(()=>{this.validatorRanges(n,u,d)})})})};this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.pipe(A.bufferWhen(()=>this._lifecycleService.lifecycle$.pipe(A.filter(e=>e===r.LifecycleStages.Rendered)))).subscribe(o)),this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.pipe(A.filter(()=>this._lifecycleService.stage>=r.LifecycleStages.Rendered),r.bufferDebounceTime(20)).subscribe(o))}async _validatorByCell(o,e,t,a){const i=o.getUnitId(),n=e.getSheetId();if(!r.Tools.isDefine(t)||!r.Tools.isDefine(a))throw new Error(`row or col is not defined, row: ${t}, col: ${a}`);const l=this._sheetDataValidationModel.getRuleByLocation(i,n,t,a);return l?new Promise(u=>{this._sheetDataValidationModel.validator(l,{unitId:i,subUnitId:n,row:t,col:a,worksheet:e,workbook:o},d=>{u(d)})}):r.DataValidationStatus.VALID}async validatorCell(o,e,t,a){const i=this._univerInstanceService.getUnit(o,r.UniverInstanceType.UNIVER_SHEET);if(!i)throw new Error(`cannot find current workbook, unitId: ${o}`);const n=i.getSheetBySheetId(e);if(!n)throw new Error(`cannot find current worksheet, sheetId: ${e}`);return this._validatorByCell(i,n,t,a)}validatorRanges(o,e,t){if(!t.length)return Promise.resolve([]);const a=this._univerInstanceService.getUnit(o,r.UniverInstanceType.UNIVER_SHEET);if(!a)throw new Error(`cannot find current workbook, unitId: ${o}`);const i=a.getSheetBySheetId(e);if(!i)throw new Error(`cannot find current worksheet, sheetId: ${e}`);return Promise.all(t.map(n=>{const l=[];return r.Range.foreach(n,(u,d)=>{l.push(this._validatorByCell(a,i,u,d))}),Promise.all(l)}))}async validatorWorksheet(o,e){const t=this._univerInstanceService.getUnit(o,r.UniverInstanceType.UNIVER_SHEET);if(!t)throw new Error(`cannot find current workbook, unitId: ${o}`);const a=t.getSheetBySheetId(e);if(!a)throw new Error(`cannot find current worksheet, sheetId: ${e}`);const i=this._sheetDataValidationModel.getRules(o,e);return await Promise.all(i.map(n=>Promise.all(n.ranges.map(l=>{const u=[];return r.Range.foreach(l,(d,c)=>{u.push(this._validatorByCell(t,a,d,c))}),u})))),this._dataValidationCacheService.ensureCache(o,e)}async validatorWorkbook(o){const e=this._sheetDataValidationModel.getSubUnitIds(o),t=await Promise.all(e.map(i=>this.validatorWorksheet(o,i))),a={};return t.forEach((i,n)=>{a[e[n]]=i}),a}getDataValidations(o,e,t){const a=this._sheetDataValidationModel.getRuleObjectMatrix(o,e),i=new Set;return t.forEach(l=>{r.Range.foreach(l,(u,d)=>{const c=a.getValue(u,d);c&&i.add(c)})}),Array.from(i).map(l=>this._sheetDataValidationModel.getRuleById(o,e,l)).filter(Boolean)}getDataValidation(o,e,t){return this.getDataValidations(o,e,t)[0]}},m.SheetsDataValidationValidatorService=Ct([re(0,r.IUniverInstanceService),re(1,r.Inject(m.SheetDataValidationModel)),re(2,r.Inject(m.DataValidationCacheService)),re(3,r.Inject(r.LifecycleService))],m.SheetsDataValidationValidatorService);var Be=Object.defineProperty,Nt=Object.getOwnPropertyDescriptor,At=(s,o,e)=>o in s?Be(s,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[o]=e,wt=(s,o,e,t)=>{for(var a=t>1?void 0:t?Nt(o,e):o,i=s.length-1,n;i>=0;i--)(n=s[i])&&(a=(t?n(o,e,a):n(a))||a);return t&&a&&Be(o,e,a),a},fe=(s,o)=>(e,t)=>o(e,t,s),je=(s,o,e)=>At(s,typeof o!="symbol"?o+"":o,e);m.UniverSheetsDataValidationPlugin=class extends r.Plugin{constructor(o=Ue,e,t,a){super(),this._config=o,this._injector=e,this._commandService=t,this._configService=a;const{...i}=r.merge({},Ue,this._config);this._configService.setConfig(ut,i)}onStarting(){[[m.DataValidationCacheService],[m.DataValidationFormulaService],[m.DataValidationCustomFormulaService],[m.SheetsDataValidationValidatorService],[m.SheetDataValidationModel],[ie],[m.DataValidationFormulaController],[ae],[te],[ee]].forEach(o=>{this._injector.add(o)}),[Fe,Ie,Ee,Ce,we,Ae,Ne].forEach(o=>{this._commandService.registerCommand(o)}),this._injector.get(m.DataValidationCacheService),this._injector.get(m.SheetsDataValidationValidatorService),this._injector.get(ee),this._injector.get(te)}onReady(){this._injector.get(ae)}onRendered(){this._injector.get(ie),this._injector.get(m.DataValidationFormulaController)}},je(m.UniverSheetsDataValidationPlugin,"pluginName",ve),je(m.UniverSheetsDataValidationPlugin,"type",r.UniverInstanceType.UNIVER_SHEET),m.UniverSheetsDataValidationPlugin=wt([r.DependentOn(g.UniverDataValidationPlugin),fe(1,r.Inject(r.Injector)),fe(2,r.ICommandService),fe(3,r.IConfigService)],m.UniverSheetsDataValidationPlugin);function Ut(s){const e=s.get(D.SheetsSelectionsService).getCurrentSelections().map(i=>i.range);return{uid:r.Tools.generateRandomId(6),type:r.DataValidationType.DECIMAL,operator:r.DataValidationOperator.EQUAL,formula1:"100",ranges:e!=null?e:[{startColumn:0,endColumn:0,startRow:0,endRow:0}]}}m.AddSheetDataValidationCommand=Fe,m.CHECKBOX_FORMULA_1=W,m.CHECKBOX_FORMULA_2=x,m.CheckboxValidator=Me,m.ClearRangeDataValidationCommand=Ne,m.DATA_VALIDATION_PLUGIN_NAME=ve,m.DateValidator=ye,m.ListMultipleValidator=Le,m.ListValidator=me,m.RemoveSheetAllDataValidationCommand=Ae,m.RemoveSheetDataValidationCommand=we,m.UpdateSheetDataValidationOptionsCommand=Ce,m.UpdateSheetDataValidationRangeCommand=Ie,m.UpdateSheetDataValidationSettingCommand=Ee,m.createDefaultNewRule=Ut,m.deserializeListOptions=k,m.getCellValueOrigin=U,m.getDataValidationCellValue=at,m.getDataValidationDiffMutations=Y,m.getFormulaCellData=j,m.getFormulaResult=w,m.isLegalFormulaResult=y,m.serializeListOptions=tt,m.transformCheckboxValue=q,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.5.5-experimental.20250122-3362a4a",
3
+ "version": "0.5.5-nightly.202501201336",
4
4
  "private": false,
5
5
  "description": "Data validation for Univer Sheets",
6
6
  "author": "DreamNum <developer@univer.ai>",
@@ -54,11 +54,11 @@
54
54
  },
55
55
  "dependencies": {
56
56
  "@univerjs/protocol": "0.1.40",
57
- "@univerjs/data-validation": "0.5.5-experimental.20250122-3362a4a",
58
- "@univerjs/engine-formula": "0.5.5-experimental.20250122-3362a4a",
59
- "@univerjs/core": "0.5.5-experimental.20250122-3362a4a",
60
- "@univerjs/sheets": "0.5.5-experimental.20250122-3362a4a",
61
- "@univerjs/sheets-formula": "0.5.5-experimental.20250122-3362a4a"
57
+ "@univerjs/core": "0.5.5-nightly.202501201336",
58
+ "@univerjs/data-validation": "0.5.5-nightly.202501201336",
59
+ "@univerjs/engine-formula": "0.5.5-nightly.202501201336",
60
+ "@univerjs/sheets-formula": "0.5.5-nightly.202501201336",
61
+ "@univerjs/sheets": "0.5.5-nightly.202501201336"
62
62
  },
63
63
  "devDependencies": {
64
64
  "less": "^4.2.1",