@univerjs/data-validation 0.2.11 → 0.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/cjs/index.js CHANGED
@@ -1 +1 @@
1
- "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);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const core=require("@univerjs/core"),rxjs=require("rxjs"),sheets=require("@univerjs/sheets");var DataValidatorRegistryScope=(DataValidatorRegistryScope2=>(DataValidatorRegistryScope2.SHEET="sheet",DataValidatorRegistryScope2))(DataValidatorRegistryScope||{});const _DataValidatorRegistryService=class _DataValidatorRegistryService{constructor(){__publicField(this,"_validatorByScopes",new Map);__publicField(this,"_validatorMap",new Map);__publicField(this,"_validatorsChange$",new rxjs.BehaviorSubject(void 0));__publicField(this,"validatorsChange$",this._validatorsChange$.asObservable())}_addValidatorToScope(validator,scope){this._validatorByScopes.has(scope)||this._validatorByScopes.set(scope,[]);const validators=this._validatorByScopes.get(scope);if(validators.findIndex(m=>m.id===validator.id)>-1)throw new Error(`Validator item with the same id ${validator.id} has already been added!`);validators.push(validator)}_removeValidatorFromScope(validator,scope){const validators=this._validatorByScopes.get(scope);if(!validators)return;const index=validators.findIndex(v=>v.id===validator.id);index>-1&&validators.splice(index,1)}register(validator){return this._validatorMap.set(validator.id,validator),Array.isArray(validator.scopes)?validator.scopes.forEach(scope=>{this._addValidatorToScope(validator,scope)}):this._addValidatorToScope(validator,validator.scopes),this._validatorsChange$.next(),core.toDisposable(()=>{this._validatorMap.delete(validator.id),Array.isArray(validator.scopes)?validator.scopes.forEach(scope=>{this._removeValidatorFromScope(validator,scope)}):this._removeValidatorFromScope(validator,validator.scopes),this._validatorsChange$.next()})}getValidatorItem(id){return this._validatorMap.get(id)}getValidatorsByScope(scope){return this._validatorByScopes.get(scope)}};__name(_DataValidatorRegistryService,"DataValidatorRegistryService");let DataValidatorRegistryService=_DataValidatorRegistryService;var UpdateRuleType=(UpdateRuleType2=>(UpdateRuleType2[UpdateRuleType2.SETTING=0]="SETTING",UpdateRuleType2[UpdateRuleType2.RANGE=1]="RANGE",UpdateRuleType2[UpdateRuleType2.OPTIONS=2]="OPTIONS",UpdateRuleType2))(UpdateRuleType||{});function getRuleSetting(rule){return{type:rule.type,operator:rule.operator,formula1:rule.formula1,formula2:rule.formula2,allowBlank:rule.allowBlank}}__name(getRuleSetting,"getRuleSetting");function getRuleOptions(rule){return{error:rule.error,errorStyle:rule.errorStyle,errorTitle:rule.errorTitle,imeMode:rule.imeMode,prompt:rule.prompt,promptTitle:rule.promptTitle,showDropDown:rule.showDropDown,showErrorMessage:rule.showErrorMessage,showInputMessage:rule.showInputMessage,renderMode:rule.renderMode,bizInfo:rule.bizInfo}}__name(getRuleOptions,"getRuleOptions");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");const _DataValidationManager=class _DataValidationManager extends core.Disposable{constructor(unitId,subUnitId){super();__publicField(this,"_dataValidations",[]);__publicField(this,"_dataValidationMap",new Map);__publicField(this,"_dataValidations$",new rxjs.BehaviorSubject(this._dataValidations));__publicField(this,"unitId");__publicField(this,"subUnitId");__publicField(this,"dataValidations$",this._dataValidations$.asObservable());this.unitId=unitId,this.subUnitId=subUnitId,this._notice(),this.disposeWithMe({dispose:__name(()=>{this._dataValidations$.complete()},"dispose")})}_notice(){this._dataValidations$.next(this._dataValidations)}getRuleById(id){return this._dataValidationMap.get(id)}getRuleIndex(id){return this._dataValidations.findIndex(rule=>rule.uid===id)}addRule(rule,index){const rules=(Array.isArray(rule)?rule:[rule]).filter(item=>!this._dataValidationMap.has(item.uid));typeof index=="number"&&index<this._dataValidations.length?this._dataValidations.splice(index,0,...rules):this._dataValidations.push(...rules),rules.forEach(item=>{this._dataValidationMap.set(item.uid,item)}),this._notice()}removeRule(ruleId){const index=this._dataValidations.findIndex(item=>item.uid===ruleId);index>-1&&(this._dataValidations.splice(index,1),this._dataValidationMap.delete(ruleId),this._notice())}updateRule(ruleId,payload){const oldRule=this._dataValidationMap.get(ruleId),index=this._dataValidations.findIndex(rule2=>ruleId===rule2.uid);if(!oldRule)throw new Error(`Data validation rule is not found, ruleId: ${ruleId}.`);const rule={...oldRule};switch(payload.type){case UpdateRuleType.RANGE:{rule.ranges=payload.payload;break}case UpdateRuleType.SETTING:{Object.assign(rule,getRuleSetting(payload.payload));break}case UpdateRuleType.OPTIONS:{Object.assign(rule,getRuleOptions(payload.payload));break}}return this._dataValidations[index]=rule,this._dataValidationMap.set(ruleId,rule),this._notice(),rule}getDataValidations(){return this._dataValidations}toJSON(){return this._dataValidations}validator(_value,_rule,_pos,_onComplete){return core.DataValidationStatus.VALID}};__name(_DataValidationManager,"DataValidationManager");let DataValidationManager=_DataValidationManager;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"),_a;exports.DataValidationModel=(_a=class extends core.Disposable{constructor(_logService){super();__publicField(this,"_model",new Map);__publicField(this,"_managerCreator",__name((unitId,subUnitId)=>new DataValidationManager(unitId,subUnitId),"_managerCreator"));__publicField(this,"_ruleChange$",new rxjs.Subject);__publicField(this,"_validStatusChange$",new rxjs.Subject);__publicField(this,"ruleChange$",this._ruleChange$.asObservable());__publicField(this,"ruleChangeDebounce$",this.ruleChange$.pipe(rxjs.debounceTime(20)));__publicField(this,"validStatusChange$",this._validStatusChange$.asObservable().pipe(rxjs.debounceTime(20)));this._logService=_logService,this.disposeWithMe({dispose:__name(()=>{this._ruleChange$.complete(),this._validStatusChange$.complete()},"dispose")})}setManagerCreator(creator){this._managerCreator=creator}ensureManager(unitId,subUnitId){this._model.has(unitId)||this._model.set(unitId,new Map);const unitMap=this._model.get(unitId);if(unitMap.has(subUnitId))return unitMap.get(subUnitId);const manager=this._managerCreator(unitId,subUnitId);return unitMap.set(subUnitId,manager),this.disposeWithMe(manager),manager}_addRuleSideEffect(unitId,subUnitId,rule,source){this.ensureManager(unitId,subUnitId).getRuleById(rule.uid)||this._ruleChange$.next({rule,type:"add",unitId,subUnitId,source})}addRule(unitId,subUnitId,rule,source,index){try{const manager=this.ensureManager(unitId,subUnitId);(Array.isArray(rule)?rule:[rule]).forEach(item=>{this._addRuleSideEffect(unitId,subUnitId,item,source)}),manager.addRule(rule,index)}catch(error){this._logService.error(error)}}updateRule(unitId,subUnitId,ruleId,payload,source){try{const rule=this.ensureManager(unitId,subUnitId).updateRule(ruleId,payload);this._ruleChange$.next({rule,type:"update",unitId,subUnitId,source})}catch(error){this._logService.error(error)}}removeRule(unitId,subUnitId,ruleId,source){try{const manager=this.ensureManager(unitId,subUnitId),oldRule=manager.getRuleById(ruleId);oldRule&&(manager.removeRule(ruleId),this._ruleChange$.next({rule:oldRule,type:"remove",unitId,subUnitId,source}))}catch(error){this._logService.error(error)}}getRuleById(unitId,subUnitId,ruleId){return this.ensureManager(unitId,subUnitId).getRuleById(ruleId)}getRuleIndex(unitId,subUnitId,ruleId){return this.ensureManager(unitId,subUnitId).getRuleIndex(ruleId)}getRules(unitId,subUnitId){return this.ensureManager(unitId,subUnitId).getDataValidations()}validator(rule,pos,value){const{unitId,subUnitId}=pos;return this.ensureManager(unitId,subUnitId).validator(value,rule,pos,(status,changed)=>{changed&&this._validStatusChange$.next({unitId,subUnitId,ruleId:rule.uid,status})})}getUnitRules(unitId){const unitMap=this._model.get(unitId);if(!unitMap)return[];const res=[];return unitMap.forEach(manager=>{res.push([manager.subUnitId,manager.getDataValidations()])}),res}deleteUnitRules(unitId){this._model.delete(unitId)}getSubUnitIds(unitId){var _a6,_b;return Array.from((_b=(_a6=this._model.get(unitId))==null?void 0:_a6.keys())!=null?_b:[])}},__name(_a,"DataValidationModel"),_a);exports.DataValidationModel=__decorateClass$4([__decorateParam$4(0,core.ILogService)],exports.DataValidationModel);const AddDataValidationMutation={type:core.CommandType.MUTATION,id:"data-validation.mutation.addRule",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,rule,index,source="command"}=params;return accessor.get(exports.DataValidationModel).addRule(unitId,subUnitId,rule,source,index),!0}},RemoveDataValidationMutation={type:core.CommandType.MUTATION,id:"data-validation.mutation.removeRule",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,ruleId,source="command"}=params,dataValidationModel=accessor.get(exports.DataValidationModel);return Array.isArray(ruleId)?ruleId.forEach(item=>{dataValidationModel.removeRule(unitId,subUnitId,item,source)}):dataValidationModel.removeRule(unitId,subUnitId,ruleId,source),!0}},UpdateDataValidationMutation={type:core.CommandType.MUTATION,id:"data-validation.mutation.updateRule",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,ruleId,payload,source="command"}=params;return accessor.get(exports.DataValidationModel).updateRule(unitId,subUnitId,ruleId,payload,source),!0}},AddDataValidationCommand={type:core.CommandType.COMMAND,id:"data-validation.command.addRule",async handler(accessor,params){if(accessor.get(core.ILogService).warn("[Deprecated] AddDataValidationCommand is deprecated, please use AddSheetDataValidationCommand in @univerjs/sheets-data-validation instead!"),!params)return!1;const{rule,unitId,subUnitId}=params,commandService=accessor.get(core.ICommandService),undoRedoService=accessor.get(core.IUndoRedoService),mutationParams={...params,rule:{...params.rule,ranges:[params.rule.range]}},redoMutations=[{id:AddDataValidationMutation.id,params:mutationParams}],undoMutations=[{id:RemoveDataValidationMutation.id,params:{unitId,subUnitId,ruleId:rule.uid}}];return undoRedoService.pushUndoRedo({unitID:unitId,redoMutations,undoMutations}),await commandService.executeCommand(AddDataValidationMutation.id,mutationParams),!0}},removeDataValidationUndoFactory=__name((accessor,redoParams)=>{const dataValidationModel=accessor.get(exports.DataValidationModel),{unitId,subUnitId,ruleId,source}=redoParams;if(Array.isArray(ruleId)){const rules=ruleId.map(id=>dataValidationModel.getRuleById(unitId,subUnitId,id)).filter(Boolean);return[{id:AddDataValidationMutation.id,params:{unitId,subUnitId,rule:rules,source}}]}return[{id:AddDataValidationMutation.id,params:{unitId,subUnitId,rule:{...dataValidationModel.getRuleById(unitId,subUnitId,ruleId)},index:dataValidationModel.getRuleIndex(unitId,subUnitId,ruleId)}}]},"removeDataValidationUndoFactory"),RemoveDataValidationCommand={type:core.CommandType.COMMAND,id:"data-validation.command.removeRule",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,ruleId}=params,commandService=accessor.get(core.ICommandService),undoRedoService=accessor.get(core.IUndoRedoService),dataValidationModel=accessor.get(exports.DataValidationModel),redoMutations=[{id:RemoveDataValidationMutation.id,params}],undoMutations=[{id:AddDataValidationMutation.id,params:{unitId,subUnitId,rule:{...dataValidationModel.getRuleById(unitId,subUnitId,ruleId)},index:dataValidationModel.getRuleIndex(unitId,subUnitId,ruleId)}}];return undoRedoService.pushUndoRedo({undoMutations,redoMutations,unitID:params.unitId}),commandService.executeCommand(RemoveDataValidationMutation.id,params),!0}},UpdateDataValidationOptionsCommand={type:core.CommandType.COMMAND,id:"data-validation.command.updateDataValidationSetting",handler(accessor,params){if(accessor.get(core.ILogService).warn("[Deprecated] UpdateDataValidationOptionsCommand is deprecated, please use UpdateSheetDataValidationOptionsCommand in @univerjs/sheets-data-validation instead!"),!params)return!1;const commandService=accessor.get(core.ICommandService),redoUndoService=accessor.get(core.IUndoRedoService),dataValidationModel=accessor.get(exports.DataValidationModel),{unitId,subUnitId,ruleId,options}=params,rule=dataValidationModel.getRuleById(unitId,subUnitId,ruleId);if(!rule)return!1;const mutationParams={unitId,subUnitId,ruleId,payload:{type:UpdateRuleType.OPTIONS,payload:options}},redoMutations=[{id:UpdateDataValidationMutation.id,params:mutationParams}],undoMutationParams={unitId,subUnitId,ruleId,payload:{type:UpdateRuleType.OPTIONS,payload:getRuleOptions(rule)}},undoMutations=[{id:UpdateDataValidationMutation.id,params:undoMutationParams}];return redoUndoService.pushUndoRedo({unitID:unitId,redoMutations,undoMutations}),commandService.executeCommand(UpdateDataValidationMutation.id,mutationParams),!0}},UpdateDataValidationSettingCommand={type:core.CommandType.COMMAND,id:"data-validation.command.updateDataValidationOptions",handler(accessor,params){if(accessor.get(core.ILogService).warn("[Deprecated] UpdateDataValidationSettingCommand is deprecated, please use UpdateSheetDataValidationSettingCommand in @univerjs/sheets-data-validation instead!"),!params)return!1;const commandService=accessor.get(core.ICommandService),redoUndoService=accessor.get(core.IUndoRedoService),dataValidationModel=accessor.get(exports.DataValidationModel),dataValidatorRegistryService=accessor.get(DataValidatorRegistryService),{unitId,subUnitId,ruleId,setting}=params,validator=dataValidatorRegistryService.getValidatorItem(setting.type);if(!validator)return!1;const rule=dataValidationModel.getRuleById(unitId,subUnitId,ruleId);if(!rule||!validator.validatorFormula({...rule,...setting},unitId,subUnitId).success)return!1;const mutationParams={unitId,subUnitId,ruleId,payload:{type:UpdateRuleType.SETTING,payload:setting}},redoMutations=[{id:UpdateDataValidationMutation.id,params:mutationParams}],undoMutationParams={unitId,subUnitId,ruleId,payload:{type:UpdateRuleType.SETTING,payload:getRuleSetting(rule)}},undoMutations=[{id:UpdateDataValidationMutation.id,params:undoMutationParams}];return redoUndoService.pushUndoRedo({unitID:unitId,redoMutations,undoMutations}),commandService.executeCommand(UpdateDataValidationMutation.id,mutationParams),!0}},RemoveAllDataValidationCommand={type:core.CommandType.COMMAND,id:"data-validation.command.removeAll",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId}=params,commandService=accessor.get(core.ICommandService),dataValidationModel=accessor.get(exports.DataValidationModel),undoRedoService=accessor.get(core.IUndoRedoService),currentRules=[...dataValidationModel.getRules(unitId,subUnitId)],redoParams={unitId,subUnitId,ruleId:currentRules.map(rule=>rule.uid)},redoMutations=[{id:RemoveDataValidationMutation.id,params:redoParams}],undoMutations=[{id:AddDataValidationMutation.id,params:{unitId,subUnitId,rule:currentRules}}];return undoRedoService.pushUndoRedo({redoMutations,undoMutations,unitID:unitId}),commandService.executeCommand(RemoveDataValidationMutation.id,redoParams),!0}};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");const DATA_VALIDATION_PLUGIN_NAME="SHEET_DATA_VALIDATION_PLUGIN";var _a2;exports.DataValidationResourceController=(_a2=class extends core.Disposable{constructor(_resourceManagerService,_univerInstanceService,_dataValidationModel){super(),this._resourceManagerService=_resourceManagerService,this._univerInstanceService=_univerInstanceService,this._dataValidationModel=_dataValidationModel,this._initSnapshot()}_initSnapshot(){const toJson=__name(unitID=>{const map=this._dataValidationModel.getUnitRules(unitID),resultMap={};return map?(map.forEach(([key,v])=>{resultMap[key]=v}),JSON.stringify(resultMap)):""},"toJson"),parseJson=__name(json=>{if(!json)return{};try{return JSON.parse(json)}catch{return{}}},"parseJson");this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:DATA_VALIDATION_PLUGIN_NAME,businesses:[core.UniverInstanceType.UNIVER_SHEET],toJson:__name(unitID=>toJson(unitID),"toJson"),parseJson:__name(json=>parseJson(json),"parseJson"),onUnLoad:__name(unitID=>{this._dataValidationModel.deleteUnitRules(unitID)},"onUnLoad"),onLoad:__name((unitID,value)=>{Object.keys(value).forEach(subunitId=>{value[subunitId].forEach(rule=>{this._dataValidationModel.addRule(unitID,subunitId,rule,"patched")})})},"onLoad")}))}},__name(_a2,"DataValidationResourceController"),_a2);exports.DataValidationResourceController=__decorateClass$3([core.OnLifecycle(core.LifecycleStages.Ready,exports.DataValidationResourceController),__decorateParam$3(0,core.IResourceManagerService),__decorateParam$3(1,core.IUniverInstanceService),__decorateParam$3(2,core.Inject(exports.DataValidationModel))],exports.DataValidationResourceController);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"),_a3;exports.DataValidationSheetController=(_a3=class extends core.Disposable{constructor(_sheetInterceptorService,_univerInstanceService,_dataValidationModel){super(),this._sheetInterceptorService=_sheetInterceptorService,this._univerInstanceService=_univerInstanceService,this._dataValidationModel=_dataValidationModel,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:__name(commandInfo=>{var _a6;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||((_a6=workbook.getActiveSheet())==null?void 0:_a6.getSheetId());if(!subUnitId)return{redos:[],undos:[]};const manager=this._dataValidationModel.ensureManager(unitId,subUnitId);if(!manager)return{redos:[],undos:[]};const rules=manager.getDataValidations(),ids=rules.map(i=>i.uid),redoParams={unitId,subUnitId,ruleId:ids,source:"patched"},undoParams={unitId,subUnitId,rule:[...rules],source:"patched"};return{redos:[{id:RemoveDataValidationMutation.id,params:redoParams}],undos:[{id:AddDataValidationMutation.id,params:undoParams}]}}return{redos:[],undos:[]}},"getMutations")}))}},__name(_a3,"DataValidationSheetController"),_a3);exports.DataValidationSheetController=__decorateClass$2([core.OnLifecycle(core.LifecycleStages.Ready,exports.DataValidationSheetController),__decorateParam$2(0,core.Inject(sheets.SheetInterceptorService)),__decorateParam$2(1,core.Inject(core.IUniverInstanceService)),__decorateParam$2(2,core.Inject(exports.DataValidationModel))],exports.DataValidationSheetController);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");const PLUGIN_NAME="UNIVER_DATA_VALIDATION_PLUGIN";var _a4;exports.UniverDataValidationPlugin=(_a4=class extends core.Plugin{constructor(_config,_injector,_commandService){super(),this._injector=_injector,this._commandService=_commandService}onStarting(){[[exports.DataValidationModel],[DataValidatorRegistryService],[exports.DataValidationResourceController],[exports.DataValidationSheetController]].forEach(d=>this._injector.add(d)),[AddDataValidationCommand,RemoveAllDataValidationCommand,UpdateDataValidationOptionsCommand,UpdateDataValidationSettingCommand,RemoveDataValidationCommand,AddDataValidationMutation,UpdateDataValidationMutation,RemoveDataValidationMutation].forEach(command=>{this._commandService.registerCommand(command)})}},__name(_a4,"UniverDataValidationPlugin"),__publicField(_a4,"pluginName",PLUGIN_NAME),__publicField(_a4,"type",core.UniverInstanceType.UNIVER_SHEET),_a4);exports.UniverDataValidationPlugin=__decorateClass$1([__decorateParam$1(1,core.Inject(core.Injector)),__decorateParam$1(2,core.ICommandService)],exports.UniverDataValidationPlugin);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 OperatorTitleMap={[core.DataValidationOperator.BETWEEN]:"dataValidation.ruleName.between",[core.DataValidationOperator.EQUAL]:"dataValidation.ruleName.equal",[core.DataValidationOperator.GREATER_THAN]:"dataValidation.ruleName.greaterThan",[core.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.ruleName.greaterThanOrEqual",[core.DataValidationOperator.LESS_THAN]:"dataValidation.ruleName.lessThan",[core.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.ruleName.lessThanOrEqual",[core.DataValidationOperator.NOT_BETWEEN]:"dataValidation.ruleName.notBetween",[core.DataValidationOperator.NOT_EQUAL]:"dataValidation.ruleName.notEqual"},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"},TextLengthErrorTitleMap={[core.DataValidationOperator.BETWEEN]:"dataValidation.textLength.errorMsg.between",[core.DataValidationOperator.EQUAL]:"dataValidation.textLength.errorMsg.equal",[core.DataValidationOperator.GREATER_THAN]:"dataValidation.textLength.errorMsg.greaterThan",[core.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.greaterThanOrEqual",[core.DataValidationOperator.LESS_THAN]:"dataValidation.textLength.errorMsg.lessThan",[core.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.lessThanOrEqual",[core.DataValidationOperator.NOT_BETWEEN]:"dataValidation.textLength.errorMsg.notBetween",[core.DataValidationOperator.NOT_EQUAL]:"dataValidation.textLength.errorMsg.notEqual"};var __defProp2=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__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");const FORMULA1="{FORMULA1}",FORMULA2="{FORMULA2}",operatorNameMap={[core.DataValidationOperator.BETWEEN]:"dataValidation.operators.between",[core.DataValidationOperator.EQUAL]:"dataValidation.operators.equal",[core.DataValidationOperator.GREATER_THAN]:"dataValidation.operators.greaterThan",[core.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.operators.greaterThanOrEqual",[core.DataValidationOperator.LESS_THAN]:"dataValidation.operators.lessThan",[core.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.operators.lessThanOrEqual",[core.DataValidationOperator.NOT_BETWEEN]:"dataValidation.operators.notBetween",[core.DataValidationOperator.NOT_EQUAL]:"dataValidation.operators.notEqual"};var _a5;exports.BaseDataValidator=(_a5=class{constructor(localeService,injector){__publicField(this,"canvasRender",null);__publicField(this,"dropdown");__publicField(this,"optionsInput");this.localeService=localeService,this.injector=injector}get operatorNames(){return this.operators.map(operator=>this.localeService.t(operatorNameMap[operator]))}get titleStr(){return this.localeService.t(this.title)}skipDefaultFontRender(rule,cellValue,pos){return!1}generateRuleName(rule){var _a6,_b;if(!rule.operator)return this.titleStr;const ruleName=this.localeService.t(OperatorTitleMap[rule.operator]).replace(FORMULA1,(_a6=rule.formula1)!=null?_a6:"").replace(FORMULA2,(_b=rule.formula2)!=null?_b:"");return`${this.titleStr} ${ruleName}`}generateRuleErrorMessage(rule){var _a6,_b;return rule.operator?`${this.localeService.t(OperatorErrorTitleMap[rule.operator]).replace(FORMULA1,(_a6=rule.formula1)!=null?_a6:"").replace(FORMULA2,(_b=rule.formula2)!=null?_b:"")}`:this.titleStr}getRuleFinalError(rule){return rule.showErrorMessage&&rule.error?rule.error:this.generateRuleErrorMessage(rule)}isEmptyCellValue(cellValue){return cellValue===""||cellValue===void 0||cellValue===null}async isValidType(cellInfo,formula,rule){return!0}transform(cellInfo,formula,rule){return cellInfo}async validatorIsEqual(cellInfo,formula,rule){return!0}async validatorIsNotEqual(cellInfo,formula,rule){return!0}async validatorIsBetween(cellInfo,formula,rule){return!0}async validatorIsNotBetween(cellInfo,formula,rule){return!0}async validatorIsGreaterThan(cellInfo,formula,rule){return!0}async validatorIsGreaterThanOrEqual(cellInfo,formula,rule){return!0}async validatorIsLessThan(cellInfo,formula,rule){return!0}async validatorIsLessThanOrEqual(cellInfo,formula,rule){return!0}async validator(cellInfo,rule){const{value:cellValue,unitId,subUnitId}=cellInfo,isEmpty=this.isEmptyCellValue(cellValue),{allowBlank=!0,operator}=rule;if(isEmpty)return allowBlank;const formulaInfo=await this.parseFormula(rule,unitId,subUnitId);if(!await this.isValidType(cellInfo,formulaInfo,rule))return!1;if(!core.Tools.isDefine(operator))return!0;const transformedCell=this.transform(cellInfo,formulaInfo,rule);switch(operator){case core.DataValidationOperator.BETWEEN:return this.validatorIsBetween(transformedCell,formulaInfo,rule);case core.DataValidationOperator.EQUAL:return this.validatorIsEqual(transformedCell,formulaInfo,rule);case core.DataValidationOperator.GREATER_THAN:return this.validatorIsGreaterThan(transformedCell,formulaInfo,rule);case core.DataValidationOperator.GREATER_THAN_OR_EQUAL:return this.validatorIsGreaterThanOrEqual(transformedCell,formulaInfo,rule);case core.DataValidationOperator.LESS_THAN:return this.validatorIsLessThan(transformedCell,formulaInfo,rule);case core.DataValidationOperator.LESS_THAN_OR_EQUAL:return this.validatorIsLessThanOrEqual(transformedCell,formulaInfo,rule);case core.DataValidationOperator.NOT_BETWEEN:return this.validatorIsNotBetween(transformedCell,formulaInfo,rule);case core.DataValidationOperator.NOT_EQUAL:return this.validatorIsNotEqual(transformedCell,formulaInfo,rule);default:throw new Error("Unknown operator.")}}},__name(_a5,"BaseDataValidator"),_a5);exports.BaseDataValidator=__decorateClass([__decorateParam(0,core.Inject(core.LocaleService)),__decorateParam(1,core.Inject(core.Injector))],exports.BaseDataValidator);const TWO_FORMULA_OPERATOR_COUNT=[core.DataValidationOperator.BETWEEN,core.DataValidationOperator.NOT_BETWEEN];exports.AddDataValidationCommand=AddDataValidationCommand;exports.AddDataValidationMutation=AddDataValidationMutation;exports.DataValidationManager=DataValidationManager;exports.DataValidatorRegistryScope=DataValidatorRegistryScope;exports.DataValidatorRegistryService=DataValidatorRegistryService;exports.RemoveAllDataValidationCommand=RemoveAllDataValidationCommand;exports.RemoveDataValidationCommand=RemoveDataValidationCommand;exports.RemoveDataValidationMutation=RemoveDataValidationMutation;exports.TWO_FORMULA_OPERATOR_COUNT=TWO_FORMULA_OPERATOR_COUNT;exports.TextLengthErrorTitleMap=TextLengthErrorTitleMap;exports.UpdateDataValidationMutation=UpdateDataValidationMutation;exports.UpdateDataValidationOptionsCommand=UpdateDataValidationOptionsCommand;exports.UpdateDataValidationSettingCommand=UpdateDataValidationSettingCommand;exports.UpdateRuleType=UpdateRuleType;exports.createDefaultNewRule=createDefaultNewRule;exports.getRuleOptions=getRuleOptions;exports.getRuleSetting=getRuleSetting;exports.removeDataValidationUndoFactory=removeDataValidationUndoFactory;
1
+ "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);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const core=require("@univerjs/core"),rxjs=require("rxjs"),sheets=require("@univerjs/sheets");var DataValidatorRegistryScope=(DataValidatorRegistryScope2=>(DataValidatorRegistryScope2.SHEET="sheet",DataValidatorRegistryScope2))(DataValidatorRegistryScope||{});const _DataValidatorRegistryService=class _DataValidatorRegistryService{constructor(){__publicField(this,"_validatorByScopes",new Map);__publicField(this,"_validatorMap",new Map);__publicField(this,"_validatorsChange$",new rxjs.BehaviorSubject(void 0));__publicField(this,"validatorsChange$",this._validatorsChange$.asObservable())}_addValidatorToScope(validator,scope){this._validatorByScopes.has(scope)||this._validatorByScopes.set(scope,[]);const validators=this._validatorByScopes.get(scope);if(validators.findIndex(m=>m.id===validator.id)>-1)throw new Error(`Validator item with the same id ${validator.id} has already been added!`);validators.push(validator)}_removeValidatorFromScope(validator,scope){const validators=this._validatorByScopes.get(scope);if(!validators)return;const index=validators.findIndex(v=>v.id===validator.id);index>-1&&validators.splice(index,1)}register(validator){return this._validatorMap.set(validator.id,validator),Array.isArray(validator.scopes)?validator.scopes.forEach(scope=>{this._addValidatorToScope(validator,scope)}):this._addValidatorToScope(validator,validator.scopes),this._validatorsChange$.next(),core.toDisposable(()=>{this._validatorMap.delete(validator.id),Array.isArray(validator.scopes)?validator.scopes.forEach(scope=>{this._removeValidatorFromScope(validator,scope)}):this._removeValidatorFromScope(validator,validator.scopes),this._validatorsChange$.next()})}getValidatorItem(id){return this._validatorMap.get(id)}getValidatorsByScope(scope){return this._validatorByScopes.get(scope)}};__name(_DataValidatorRegistryService,"DataValidatorRegistryService");let DataValidatorRegistryService=_DataValidatorRegistryService;var UpdateRuleType=(UpdateRuleType2=>(UpdateRuleType2[UpdateRuleType2.SETTING=0]="SETTING",UpdateRuleType2[UpdateRuleType2.RANGE=1]="RANGE",UpdateRuleType2[UpdateRuleType2.OPTIONS=2]="OPTIONS",UpdateRuleType2))(UpdateRuleType||{});function getRuleSetting(rule){return{type:rule.type,operator:rule.operator,formula1:rule.formula1,formula2:rule.formula2,allowBlank:rule.allowBlank}}__name(getRuleSetting,"getRuleSetting");function getRuleOptions(rule){return{error:rule.error,errorStyle:rule.errorStyle,errorTitle:rule.errorTitle,imeMode:rule.imeMode,prompt:rule.prompt,promptTitle:rule.promptTitle,showDropDown:rule.showDropDown,showErrorMessage:rule.showErrorMessage,showInputMessage:rule.showInputMessage,renderMode:rule.renderMode,bizInfo:rule.bizInfo}}__name(getRuleOptions,"getRuleOptions");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");const _DataValidationManager=class _DataValidationManager extends core.Disposable{constructor(unitId,subUnitId){super();__publicField(this,"_dataValidations",[]);__publicField(this,"_dataValidationMap",new Map);__publicField(this,"_dataValidations$",new rxjs.BehaviorSubject(this._dataValidations));__publicField(this,"unitId");__publicField(this,"subUnitId");__publicField(this,"dataValidations$",this._dataValidations$.asObservable());this.unitId=unitId,this.subUnitId=subUnitId,this._notice(),this.disposeWithMe({dispose:__name(()=>{this._dataValidations$.complete()},"dispose")})}_notice(){this._dataValidations$.next(this._dataValidations)}getRuleById(id){return this._dataValidationMap.get(id)}getRuleIndex(id){return this._dataValidations.findIndex(rule=>rule.uid===id)}addRule(rule,index){const rules=(Array.isArray(rule)?rule:[rule]).filter(item=>!this._dataValidationMap.has(item.uid));typeof index=="number"&&index<this._dataValidations.length?this._dataValidations.splice(index,0,...rules):this._dataValidations.push(...rules),rules.forEach(item=>{this._dataValidationMap.set(item.uid,item)}),this._notice()}removeRule(ruleId){const index=this._dataValidations.findIndex(item=>item.uid===ruleId);index>-1&&(this._dataValidations.splice(index,1),this._dataValidationMap.delete(ruleId),this._notice())}updateRule(ruleId,payload){const oldRule=this._dataValidationMap.get(ruleId),index=this._dataValidations.findIndex(rule2=>ruleId===rule2.uid);if(!oldRule)throw new Error(`Data validation rule is not found, ruleId: ${ruleId}.`);const rule={...oldRule};switch(payload.type){case UpdateRuleType.RANGE:{rule.ranges=payload.payload;break}case UpdateRuleType.SETTING:{Object.assign(rule,getRuleSetting(payload.payload));break}case UpdateRuleType.OPTIONS:{Object.assign(rule,getRuleOptions(payload.payload));break}}return this._dataValidations[index]=rule,this._dataValidationMap.set(ruleId,rule),this._notice(),rule}getDataValidations(){return this._dataValidations}toJSON(){return this._dataValidations}validator(_value,_rule,_pos,_onComplete){return core.DataValidationStatus.VALID}};__name(_DataValidationManager,"DataValidationManager");let DataValidationManager=_DataValidationManager;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"),_a;exports.DataValidationModel=(_a=class extends core.Disposable{constructor(_logService){super();__publicField(this,"_model",new Map);__publicField(this,"_managerCreator",__name((unitId,subUnitId)=>new DataValidationManager(unitId,subUnitId),"_managerCreator"));__publicField(this,"_ruleChange$",new rxjs.Subject);__publicField(this,"_validStatusChange$",new rxjs.Subject);__publicField(this,"ruleChange$",this._ruleChange$.asObservable());__publicField(this,"ruleChangeDebounce$",this.ruleChange$.pipe(rxjs.debounceTime(20)));__publicField(this,"validStatusChange$",this._validStatusChange$.asObservable().pipe(rxjs.debounceTime(20)));this._logService=_logService,this.disposeWithMe({dispose:__name(()=>{this._ruleChange$.complete(),this._validStatusChange$.complete()},"dispose")})}setManagerCreator(creator){this._managerCreator=creator}ensureManager(unitId,subUnitId){this._model.has(unitId)||this._model.set(unitId,new Map);const unitMap=this._model.get(unitId);if(unitMap.has(subUnitId))return unitMap.get(subUnitId);const manager=this._managerCreator(unitId,subUnitId);return unitMap.set(subUnitId,manager),this.disposeWithMe(manager),manager}_addRuleSideEffect(unitId,subUnitId,rule,source){this.ensureManager(unitId,subUnitId).getRuleById(rule.uid)||this._ruleChange$.next({rule,type:"add",unitId,subUnitId,source})}addRule(unitId,subUnitId,rule,source,index){try{const manager=this.ensureManager(unitId,subUnitId);(Array.isArray(rule)?rule:[rule]).forEach(item=>{this._addRuleSideEffect(unitId,subUnitId,item,source)}),manager.addRule(rule,index)}catch(error){this._logService.error(error)}}updateRule(unitId,subUnitId,ruleId,payload,source){try{const rule=this.ensureManager(unitId,subUnitId).updateRule(ruleId,payload);this._ruleChange$.next({rule,type:"update",unitId,subUnitId,source})}catch(error){this._logService.error(error)}}removeRule(unitId,subUnitId,ruleId,source){try{const manager=this.ensureManager(unitId,subUnitId),oldRule=manager.getRuleById(ruleId);oldRule&&(manager.removeRule(ruleId),this._ruleChange$.next({rule:oldRule,type:"remove",unitId,subUnitId,source}))}catch(error){this._logService.error(error)}}getRuleById(unitId,subUnitId,ruleId){return this.ensureManager(unitId,subUnitId).getRuleById(ruleId)}getRuleIndex(unitId,subUnitId,ruleId){return this.ensureManager(unitId,subUnitId).getRuleIndex(ruleId)}getRules(unitId,subUnitId){return this.ensureManager(unitId,subUnitId).getDataValidations()}validator(rule,pos,value){const{unitId,subUnitId}=pos;return this.ensureManager(unitId,subUnitId).validator(value,rule,pos,(status,changed)=>{changed&&this._validStatusChange$.next({unitId,subUnitId,ruleId:rule.uid,status})})}getUnitRules(unitId){const unitMap=this._model.get(unitId);if(!unitMap)return[];const res=[];return unitMap.forEach(manager=>{res.push([manager.subUnitId,manager.getDataValidations()])}),res}deleteUnitRules(unitId){this._model.delete(unitId)}getSubUnitIds(unitId){var _a6,_b;return Array.from((_b=(_a6=this._model.get(unitId))==null?void 0:_a6.keys())!=null?_b:[])}},__name(_a,"DataValidationModel"),_a);exports.DataValidationModel=__decorateClass$4([__decorateParam$4(0,core.ILogService)],exports.DataValidationModel);const AddDataValidationMutation={type:core.CommandType.MUTATION,id:"data-validation.mutation.addRule",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,rule,index,source="command"}=params;return accessor.get(exports.DataValidationModel).addRule(unitId,subUnitId,rule,source,index),!0}},RemoveDataValidationMutation={type:core.CommandType.MUTATION,id:"data-validation.mutation.removeRule",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,ruleId,source="command"}=params,dataValidationModel=accessor.get(exports.DataValidationModel);return Array.isArray(ruleId)?ruleId.forEach(item=>{dataValidationModel.removeRule(unitId,subUnitId,item,source)}):dataValidationModel.removeRule(unitId,subUnitId,ruleId,source),!0}},UpdateDataValidationMutation={type:core.CommandType.MUTATION,id:"data-validation.mutation.updateRule",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,ruleId,payload,source="command"}=params;return accessor.get(exports.DataValidationModel).updateRule(unitId,subUnitId,ruleId,payload,source),!0}},AddDataValidationCommand={type:core.CommandType.COMMAND,id:"data-validation.command.addRule",async handler(accessor,params){if(accessor.get(core.ILogService).warn("[Deprecated] AddDataValidationCommand is deprecated, please use AddSheetDataValidationCommand in @univerjs/sheets-data-validation instead!"),!params)return!1;const{rule,unitId,subUnitId}=params,commandService=accessor.get(core.ICommandService),undoRedoService=accessor.get(core.IUndoRedoService),mutationParams={...params,rule:{...params.rule,ranges:[params.rule.range]}},redoMutations=[{id:AddDataValidationMutation.id,params:mutationParams}],undoMutations=[{id:RemoveDataValidationMutation.id,params:{unitId,subUnitId,ruleId:rule.uid}}];return undoRedoService.pushUndoRedo({unitID:unitId,redoMutations,undoMutations}),await commandService.executeCommand(AddDataValidationMutation.id,mutationParams),!0}},removeDataValidationUndoFactory=__name((accessor,redoParams)=>{const dataValidationModel=accessor.get(exports.DataValidationModel),{unitId,subUnitId,ruleId,source}=redoParams;if(Array.isArray(ruleId)){const rules=ruleId.map(id=>dataValidationModel.getRuleById(unitId,subUnitId,id)).filter(Boolean);return[{id:AddDataValidationMutation.id,params:{unitId,subUnitId,rule:rules,source}}]}return[{id:AddDataValidationMutation.id,params:{unitId,subUnitId,rule:{...dataValidationModel.getRuleById(unitId,subUnitId,ruleId)},index:dataValidationModel.getRuleIndex(unitId,subUnitId,ruleId)}}]},"removeDataValidationUndoFactory"),RemoveDataValidationCommand={type:core.CommandType.COMMAND,id:"data-validation.command.removeRule",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,ruleId}=params,commandService=accessor.get(core.ICommandService),undoRedoService=accessor.get(core.IUndoRedoService),dataValidationModel=accessor.get(exports.DataValidationModel),redoMutations=[{id:RemoveDataValidationMutation.id,params}],undoMutations=[{id:AddDataValidationMutation.id,params:{unitId,subUnitId,rule:{...dataValidationModel.getRuleById(unitId,subUnitId,ruleId)},index:dataValidationModel.getRuleIndex(unitId,subUnitId,ruleId)}}];return undoRedoService.pushUndoRedo({undoMutations,redoMutations,unitID:params.unitId}),commandService.executeCommand(RemoveDataValidationMutation.id,params),!0}},UpdateDataValidationOptionsCommand={type:core.CommandType.COMMAND,id:"data-validation.command.updateDataValidationSetting",handler(accessor,params){if(accessor.get(core.ILogService).warn("[Deprecated] UpdateDataValidationOptionsCommand is deprecated, please use UpdateSheetDataValidationOptionsCommand in @univerjs/sheets-data-validation instead!"),!params)return!1;const commandService=accessor.get(core.ICommandService),redoUndoService=accessor.get(core.IUndoRedoService),dataValidationModel=accessor.get(exports.DataValidationModel),{unitId,subUnitId,ruleId,options}=params,rule=dataValidationModel.getRuleById(unitId,subUnitId,ruleId);if(!rule)return!1;const mutationParams={unitId,subUnitId,ruleId,payload:{type:UpdateRuleType.OPTIONS,payload:options}},redoMutations=[{id:UpdateDataValidationMutation.id,params:mutationParams}],undoMutationParams={unitId,subUnitId,ruleId,payload:{type:UpdateRuleType.OPTIONS,payload:getRuleOptions(rule)}},undoMutations=[{id:UpdateDataValidationMutation.id,params:undoMutationParams}];return redoUndoService.pushUndoRedo({unitID:unitId,redoMutations,undoMutations}),commandService.executeCommand(UpdateDataValidationMutation.id,mutationParams),!0}},UpdateDataValidationSettingCommand={type:core.CommandType.COMMAND,id:"data-validation.command.updateDataValidationOptions",handler(accessor,params){if(accessor.get(core.ILogService).warn("[Deprecated] UpdateDataValidationSettingCommand is deprecated, please use UpdateSheetDataValidationSettingCommand in @univerjs/sheets-data-validation instead!"),!params)return!1;const commandService=accessor.get(core.ICommandService),redoUndoService=accessor.get(core.IUndoRedoService),dataValidationModel=accessor.get(exports.DataValidationModel),dataValidatorRegistryService=accessor.get(DataValidatorRegistryService),{unitId,subUnitId,ruleId,setting}=params,validator=dataValidatorRegistryService.getValidatorItem(setting.type);if(!validator)return!1;const rule=dataValidationModel.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:UpdateRuleType.SETTING,payload:{...setting,...validator.normlizeFormula(newRule,unitId,subUnitId)}}},redoMutations=[{id:UpdateDataValidationMutation.id,params:mutationParams}],undoMutationParams={unitId,subUnitId,ruleId,payload:{type:UpdateRuleType.SETTING,payload:getRuleSetting(rule)}},undoMutations=[{id:UpdateDataValidationMutation.id,params:undoMutationParams}];return redoUndoService.pushUndoRedo({unitID:unitId,redoMutations,undoMutations}),commandService.executeCommand(UpdateDataValidationMutation.id,mutationParams),!0}},RemoveAllDataValidationCommand={type:core.CommandType.COMMAND,id:"data-validation.command.removeAll",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId}=params,commandService=accessor.get(core.ICommandService),dataValidationModel=accessor.get(exports.DataValidationModel),undoRedoService=accessor.get(core.IUndoRedoService),currentRules=[...dataValidationModel.getRules(unitId,subUnitId)],redoParams={unitId,subUnitId,ruleId:currentRules.map(rule=>rule.uid)},redoMutations=[{id:RemoveDataValidationMutation.id,params:redoParams}],undoMutations=[{id:AddDataValidationMutation.id,params:{unitId,subUnitId,rule:currentRules}}];return undoRedoService.pushUndoRedo({redoMutations,undoMutations,unitID:unitId}),commandService.executeCommand(RemoveDataValidationMutation.id,redoParams),!0}};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");const DATA_VALIDATION_PLUGIN_NAME="SHEET_DATA_VALIDATION_PLUGIN";var _a2;exports.DataValidationResourceController=(_a2=class extends core.Disposable{constructor(_resourceManagerService,_univerInstanceService,_dataValidationModel){super(),this._resourceManagerService=_resourceManagerService,this._univerInstanceService=_univerInstanceService,this._dataValidationModel=_dataValidationModel,this._initSnapshot()}_initSnapshot(){const toJson=__name(unitID=>{const map=this._dataValidationModel.getUnitRules(unitID),resultMap={};return map?(map.forEach(([key,v])=>{resultMap[key]=v}),JSON.stringify(resultMap)):""},"toJson"),parseJson=__name(json=>{if(!json)return{};try{return JSON.parse(json)}catch{return{}}},"parseJson");this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:DATA_VALIDATION_PLUGIN_NAME,businesses:[core.UniverInstanceType.UNIVER_SHEET],toJson:__name(unitID=>toJson(unitID),"toJson"),parseJson:__name(json=>parseJson(json),"parseJson"),onUnLoad:__name(unitID=>{this._dataValidationModel.deleteUnitRules(unitID)},"onUnLoad"),onLoad:__name((unitID,value)=>{Object.keys(value).forEach(subunitId=>{value[subunitId].forEach(rule=>{this._dataValidationModel.addRule(unitID,subunitId,rule,"patched")})})},"onLoad")}))}},__name(_a2,"DataValidationResourceController"),_a2);exports.DataValidationResourceController=__decorateClass$3([core.OnLifecycle(core.LifecycleStages.Ready,exports.DataValidationResourceController),__decorateParam$3(0,core.IResourceManagerService),__decorateParam$3(1,core.IUniverInstanceService),__decorateParam$3(2,core.Inject(exports.DataValidationModel))],exports.DataValidationResourceController);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"),_a3;exports.DataValidationSheetController=(_a3=class extends core.Disposable{constructor(_sheetInterceptorService,_univerInstanceService,_dataValidationModel){super(),this._sheetInterceptorService=_sheetInterceptorService,this._univerInstanceService=_univerInstanceService,this._dataValidationModel=_dataValidationModel,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:__name(commandInfo=>{var _a6;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||((_a6=workbook.getActiveSheet())==null?void 0:_a6.getSheetId());if(!subUnitId)return{redos:[],undos:[]};const manager=this._dataValidationModel.ensureManager(unitId,subUnitId);if(!manager)return{redos:[],undos:[]};const rules=manager.getDataValidations(),ids=rules.map(i=>i.uid),redoParams={unitId,subUnitId,ruleId:ids,source:"patched"},undoParams={unitId,subUnitId,rule:[...rules],source:"patched"};return{redos:[{id:RemoveDataValidationMutation.id,params:redoParams}],undos:[{id:AddDataValidationMutation.id,params:undoParams}]}}return{redos:[],undos:[]}},"getMutations")}))}},__name(_a3,"DataValidationSheetController"),_a3);exports.DataValidationSheetController=__decorateClass$2([core.OnLifecycle(core.LifecycleStages.Ready,exports.DataValidationSheetController),__decorateParam$2(0,core.Inject(sheets.SheetInterceptorService)),__decorateParam$2(1,core.Inject(core.IUniverInstanceService)),__decorateParam$2(2,core.Inject(exports.DataValidationModel))],exports.DataValidationSheetController);const PLUGIN_CONFIG_KEY="data-validation.config",defaultPluginConfig={};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");const PLUGIN_NAME="UNIVER_DATA_VALIDATION_PLUGIN";var _a4;exports.UniverDataValidationPlugin=(_a4=class extends core.Plugin{constructor(_config=defaultPluginConfig,_injector,_commandService,_configService){super(),this._config=_config,this._injector=_injector,this._commandService=_commandService,this._configService=_configService;const{...rest}=this._config;this._configService.setConfig(PLUGIN_CONFIG_KEY,rest)}onStarting(){[[exports.DataValidationModel],[DataValidatorRegistryService],[exports.DataValidationResourceController],[exports.DataValidationSheetController]].forEach(d=>this._injector.add(d)),[AddDataValidationCommand,RemoveAllDataValidationCommand,UpdateDataValidationOptionsCommand,UpdateDataValidationSettingCommand,RemoveDataValidationCommand,AddDataValidationMutation,UpdateDataValidationMutation,RemoveDataValidationMutation].forEach(command=>{this._commandService.registerCommand(command)})}},__name(_a4,"UniverDataValidationPlugin"),__publicField(_a4,"pluginName",PLUGIN_NAME),__publicField(_a4,"type",core.UniverInstanceType.UNIVER_SHEET),_a4);exports.UniverDataValidationPlugin=__decorateClass$1([__decorateParam$1(1,core.Inject(core.Injector)),__decorateParam$1(2,core.ICommandService),__decorateParam$1(3,core.IConfigService)],exports.UniverDataValidationPlugin);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 OperatorTitleMap={[core.DataValidationOperator.BETWEEN]:"dataValidation.ruleName.between",[core.DataValidationOperator.EQUAL]:"dataValidation.ruleName.equal",[core.DataValidationOperator.GREATER_THAN]:"dataValidation.ruleName.greaterThan",[core.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.ruleName.greaterThanOrEqual",[core.DataValidationOperator.LESS_THAN]:"dataValidation.ruleName.lessThan",[core.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.ruleName.lessThanOrEqual",[core.DataValidationOperator.NOT_BETWEEN]:"dataValidation.ruleName.notBetween",[core.DataValidationOperator.NOT_EQUAL]:"dataValidation.ruleName.notEqual"},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"},TextLengthErrorTitleMap={[core.DataValidationOperator.BETWEEN]:"dataValidation.textLength.errorMsg.between",[core.DataValidationOperator.EQUAL]:"dataValidation.textLength.errorMsg.equal",[core.DataValidationOperator.GREATER_THAN]:"dataValidation.textLength.errorMsg.greaterThan",[core.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.greaterThanOrEqual",[core.DataValidationOperator.LESS_THAN]:"dataValidation.textLength.errorMsg.lessThan",[core.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.lessThanOrEqual",[core.DataValidationOperator.NOT_BETWEEN]:"dataValidation.textLength.errorMsg.notBetween",[core.DataValidationOperator.NOT_EQUAL]:"dataValidation.textLength.errorMsg.notEqual"};var __defProp2=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__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");const FORMULA1="{FORMULA1}",FORMULA2="{FORMULA2}",operatorNameMap={[core.DataValidationOperator.BETWEEN]:"dataValidation.operators.between",[core.DataValidationOperator.EQUAL]:"dataValidation.operators.equal",[core.DataValidationOperator.GREATER_THAN]:"dataValidation.operators.greaterThan",[core.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.operators.greaterThanOrEqual",[core.DataValidationOperator.LESS_THAN]:"dataValidation.operators.lessThan",[core.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.operators.lessThanOrEqual",[core.DataValidationOperator.NOT_BETWEEN]:"dataValidation.operators.notBetween",[core.DataValidationOperator.NOT_EQUAL]:"dataValidation.operators.notEqual"};var _a5;exports.BaseDataValidator=(_a5=class{constructor(localeService,injector){__publicField(this,"canvasRender",null);__publicField(this,"dropdown");__publicField(this,"optionsInput");this.localeService=localeService,this.injector=injector}get operatorNames(){return this.operators.map(operator=>this.localeService.t(operatorNameMap[operator]))}get titleStr(){return this.localeService.t(this.title)}skipDefaultFontRender(rule,cellValue,pos){return!1}generateRuleName(rule){var _a6,_b;if(!rule.operator)return this.titleStr;const ruleName=this.localeService.t(OperatorTitleMap[rule.operator]).replace(FORMULA1,(_a6=rule.formula1)!=null?_a6:"").replace(FORMULA2,(_b=rule.formula2)!=null?_b:"");return`${this.titleStr} ${ruleName}`}generateRuleErrorMessage(rule){var _a6,_b;return rule.operator?`${this.localeService.t(OperatorErrorTitleMap[rule.operator]).replace(FORMULA1,(_a6=rule.formula1)!=null?_a6:"").replace(FORMULA2,(_b=rule.formula2)!=null?_b:"")}`:this.titleStr}getRuleFinalError(rule){return rule.showErrorMessage&&rule.error?rule.error:this.generateRuleErrorMessage(rule)}isEmptyCellValue(cellValue){return cellValue===""||cellValue===void 0||cellValue===null}normlizeFormula(rule,unitId,subUnitId){return{formula1:rule.formula1,formula2:rule.formula2}}async isValidType(cellInfo,formula,rule){return!0}transform(cellInfo,formula,rule){return cellInfo}async validatorIsEqual(cellInfo,formula,rule){return!0}async validatorIsNotEqual(cellInfo,formula,rule){return!0}async validatorIsBetween(cellInfo,formula,rule){return!0}async validatorIsNotBetween(cellInfo,formula,rule){return!0}async validatorIsGreaterThan(cellInfo,formula,rule){return!0}async validatorIsGreaterThanOrEqual(cellInfo,formula,rule){return!0}async validatorIsLessThan(cellInfo,formula,rule){return!0}async validatorIsLessThanOrEqual(cellInfo,formula,rule){return!0}async validator(cellInfo,rule){const{value:cellValue,unitId,subUnitId}=cellInfo,isEmpty=this.isEmptyCellValue(cellValue),{allowBlank=!0,operator}=rule;if(isEmpty)return allowBlank;const formulaInfo=await this.parseFormula(rule,unitId,subUnitId);if(!await this.isValidType(cellInfo,formulaInfo,rule))return!1;if(!core.Tools.isDefine(operator))return!0;const transformedCell=this.transform(cellInfo,formulaInfo,rule);switch(operator){case core.DataValidationOperator.BETWEEN:return this.validatorIsBetween(transformedCell,formulaInfo,rule);case core.DataValidationOperator.EQUAL:return this.validatorIsEqual(transformedCell,formulaInfo,rule);case core.DataValidationOperator.GREATER_THAN:return this.validatorIsGreaterThan(transformedCell,formulaInfo,rule);case core.DataValidationOperator.GREATER_THAN_OR_EQUAL:return this.validatorIsGreaterThanOrEqual(transformedCell,formulaInfo,rule);case core.DataValidationOperator.LESS_THAN:return this.validatorIsLessThan(transformedCell,formulaInfo,rule);case core.DataValidationOperator.LESS_THAN_OR_EQUAL:return this.validatorIsLessThanOrEqual(transformedCell,formulaInfo,rule);case core.DataValidationOperator.NOT_BETWEEN:return this.validatorIsNotBetween(transformedCell,formulaInfo,rule);case core.DataValidationOperator.NOT_EQUAL:return this.validatorIsNotEqual(transformedCell,formulaInfo,rule);default:throw new Error("Unknown operator.")}}},__name(_a5,"BaseDataValidator"),_a5);exports.BaseDataValidator=__decorateClass([__decorateParam(0,core.Inject(core.LocaleService)),__decorateParam(1,core.Inject(core.Injector))],exports.BaseDataValidator);const TWO_FORMULA_OPERATOR_COUNT=[core.DataValidationOperator.BETWEEN,core.DataValidationOperator.NOT_BETWEEN];exports.AddDataValidationCommand=AddDataValidationCommand;exports.AddDataValidationMutation=AddDataValidationMutation;exports.DataValidationManager=DataValidationManager;exports.DataValidatorRegistryScope=DataValidatorRegistryScope;exports.DataValidatorRegistryService=DataValidatorRegistryService;exports.RemoveAllDataValidationCommand=RemoveAllDataValidationCommand;exports.RemoveDataValidationCommand=RemoveDataValidationCommand;exports.RemoveDataValidationMutation=RemoveDataValidationMutation;exports.TWO_FORMULA_OPERATOR_COUNT=TWO_FORMULA_OPERATOR_COUNT;exports.TextLengthErrorTitleMap=TextLengthErrorTitleMap;exports.UpdateDataValidationMutation=UpdateDataValidationMutation;exports.UpdateDataValidationOptionsCommand=UpdateDataValidationOptionsCommand;exports.UpdateDataValidationSettingCommand=UpdateDataValidationSettingCommand;exports.UpdateRuleType=UpdateRuleType;exports.createDefaultNewRule=createDefaultNewRule;exports.getRuleOptions=getRuleOptions;exports.getRuleSetting=getRuleSetting;exports.removeDataValidationUndoFactory=removeDataValidationUndoFactory;
package/lib/es/index.js CHANGED
@@ -2,7 +2,7 @@ var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value;
3
3
  var __name = (target, value) => __defProp(target, "name", { value, configurable: !0 });
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key != "symbol" ? key + "" : key, value);
5
- import { toDisposable, Tools, DataValidationType, DataValidationOperator, Disposable, DataValidationStatus, ILogService, CommandType, ICommandService, IUndoRedoService, UniverInstanceType, OnLifecycle, LifecycleStages, Inject, IResourceManagerService, IUniverInstanceService, Plugin, Injector, LocaleService } from "@univerjs/core";
5
+ import { toDisposable, Tools, DataValidationType, DataValidationOperator, Disposable, DataValidationStatus, ILogService, CommandType, ICommandService, IUndoRedoService, UniverInstanceType, OnLifecycle, LifecycleStages, Inject, IResourceManagerService, IUniverInstanceService, Plugin, Injector, IConfigService, LocaleService } from "@univerjs/core";
6
6
  import { BehaviorSubject, Subject, debounceTime } from "rxjs";
7
7
  import { SheetsSelectionsService, RemoveSheetCommand, SheetInterceptorService } from "@univerjs/sheets";
8
8
  var DataValidatorRegistryScope = /* @__PURE__ */ ((DataValidatorRegistryScope2) => (DataValidatorRegistryScope2.SHEET = "sheet", DataValidatorRegistryScope2))(DataValidatorRegistryScope || {});
@@ -426,7 +426,10 @@ const AddDataValidationMutation = {
426
426
  if (!validator)
427
427
  return !1;
428
428
  const rule = dataValidationModel.getRuleById(unitId, subUnitId, ruleId);
429
- if (!rule || !validator.validatorFormula({ ...rule, ...setting }, unitId, subUnitId).success)
429
+ if (!rule)
430
+ return !1;
431
+ const newRule = { ...rule, ...setting };
432
+ if (!validator.validatorFormula(newRule, unitId, subUnitId).success)
430
433
  return !1;
431
434
  const mutationParams = {
432
435
  unitId,
@@ -434,7 +437,10 @@ const AddDataValidationMutation = {
434
437
  ruleId,
435
438
  payload: {
436
439
  type: UpdateRuleType.SETTING,
437
- payload: setting
440
+ payload: {
441
+ ...setting,
442
+ ...validator.normlizeFormula(newRule, unitId, subUnitId)
443
+ }
438
444
  }
439
445
  }, redoMutations = [{
440
446
  id: UpdateDataValidationMutation.id,
@@ -595,6 +601,7 @@ DataValidationSheetController = __decorateClass$2([
595
601
  __decorateParam$2(1, Inject(IUniverInstanceService)),
596
602
  __decorateParam$2(2, Inject(DataValidationModel))
597
603
  ], DataValidationSheetController);
604
+ const PLUGIN_CONFIG_KEY = "data-validation.config", defaultPluginConfig = {};
598
605
  var __defProp$1 = Object.defineProperty, __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor, __decorateClass$1 = /* @__PURE__ */ __name((decorators, target, key, kind) => {
599
606
  for (var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target, i = decorators.length - 1, decorator; i >= 0; i--)
600
607
  (decorator = decorators[i]) && (result = (kind ? decorator(target, key, result) : decorator(result)) || result);
@@ -603,8 +610,10 @@ var __defProp$1 = Object.defineProperty, __getOwnPropDesc$1 = Object.getOwnPrope
603
610
  const PLUGIN_NAME = "UNIVER_DATA_VALIDATION_PLUGIN";
604
611
  var _a4;
605
612
  let UniverDataValidationPlugin = (_a4 = class extends Plugin {
606
- constructor(_config, _injector, _commandService) {
607
- super(), this._injector = _injector, this._commandService = _commandService;
613
+ constructor(_config = defaultPluginConfig, _injector, _commandService, _configService) {
614
+ super(), this._config = _config, this._injector = _injector, this._commandService = _commandService, this._configService = _configService;
615
+ const { ...rest } = this._config;
616
+ this._configService.setConfig(PLUGIN_CONFIG_KEY, rest);
608
617
  }
609
618
  onStarting() {
610
619
  [
@@ -630,7 +639,8 @@ let UniverDataValidationPlugin = (_a4 = class extends Plugin {
630
639
  }, __name(_a4, "UniverDataValidationPlugin"), __publicField(_a4, "pluginName", PLUGIN_NAME), __publicField(_a4, "type", UniverInstanceType.UNIVER_SHEET), _a4);
631
640
  UniverDataValidationPlugin = __decorateClass$1([
632
641
  __decorateParam$1(1, Inject(Injector)),
633
- __decorateParam$1(2, ICommandService)
642
+ __decorateParam$1(2, ICommandService),
643
+ __decorateParam$1(3, IConfigService)
634
644
  ], UniverDataValidationPlugin);
635
645
  DataValidationOperator.BETWEEN + "", DataValidationOperator.EQUAL + "", DataValidationOperator.GREATER_THAN + "", DataValidationOperator.GREATER_THAN_OR_EQUAL + "", DataValidationOperator.LESS_THAN + "", DataValidationOperator.LESS_THAN_OR_EQUAL + "", DataValidationOperator.NOT_BETWEEN + "", DataValidationOperator.NOT_EQUAL + "";
636
646
  const OperatorTitleMap = {
@@ -710,6 +720,12 @@ let BaseDataValidator = (_a5 = class {
710
720
  isEmptyCellValue(cellValue) {
711
721
  return cellValue === "" || cellValue === void 0 || cellValue === null;
712
722
  }
723
+ normlizeFormula(rule, unitId, subUnitId) {
724
+ return {
725
+ formula1: rule.formula1,
726
+ formula2: rule.formula2
727
+ };
728
+ }
713
729
  async isValidType(cellInfo, formula, rule) {
714
730
  return !0;
715
731
  }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Copyright 2023-present DreamNum Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export declare const PLUGIN_CONFIG_KEY = "data-validation.config";
17
+ export declare const configSymbol: unique symbol;
18
+ export interface IUniverDataValidationConfig {
19
+ }
20
+ export declare const defaultPluginConfig: IUniverDataValidationConfig;
@@ -1,9 +1,12 @@
1
- import { ICommandService, Injector, Plugin, UniverInstanceType } from '@univerjs/core';
1
+ import { ICommandService, IConfigService, Injector, Plugin, UniverInstanceType } from '@univerjs/core';
2
+ import { IUniverDataValidationConfig } from './controllers/config.schema';
2
3
  export declare class UniverDataValidationPlugin extends Plugin {
4
+ private readonly _config;
3
5
  protected _injector: Injector;
4
6
  private _commandService;
7
+ private readonly _configService;
5
8
  static pluginName: string;
6
9
  static type: UniverInstanceType;
7
- constructor(_config: unknown, _injector: Injector, _commandService: ICommandService);
10
+ constructor(_config: Partial<IUniverDataValidationConfig>, _injector: Injector, _commandService: ICommandService, _configService: IConfigService);
8
11
  onStarting(): void;
9
12
  }
@@ -42,6 +42,10 @@ export declare abstract class BaseDataValidator<DataType = CellValue> {
42
42
  isEmptyCellValue(cellValue: Nullable<CellValue>): cellValue is null | undefined | void;
43
43
  abstract parseFormula(rule: IDataValidationRule, unitId: string, subUnitId: string): Promise<IFormulaResult>;
44
44
  abstract validatorFormula(rule: IDataValidationRule, unitId: string, subUnitId: string): IFormulaValidResult;
45
+ normlizeFormula(rule: IDataValidationRule, unitId: string, subUnitId: string): {
46
+ formula1: string | undefined;
47
+ formula2: string | undefined;
48
+ };
45
49
  isValidType(cellInfo: IValidatorCellInfo, formula: IFormulaResult, rule: IDataValidationRule): Promise<boolean>;
46
50
  transform(cellInfo: IValidatorCellInfo, formula: IFormulaResult, rule: IDataValidationRule): IValidatorCellInfo<DataType>;
47
51
  validatorIsEqual(cellInfo: IValidatorCellInfo<DataType>, formula: IFormulaResult, rule: IDataValidationRule): Promise<boolean>;
package/lib/umd/index.js CHANGED
@@ -1 +1 @@
1
- (function(global,factory){typeof exports=="object"&&typeof module<"u"?factory(exports,require("@univerjs/core"),require("rxjs"),require("@univerjs/sheets")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","rxjs","@univerjs/sheets"],factory):(global=typeof globalThis<"u"?globalThis:global||self,factory(global.UniverDataValidation={},global.UniverCore,global.rxjs,global.UniverSheets))})(this,function(exports2,core,rxjs,sheets){"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;var DataValidatorRegistryScope=(DataValidatorRegistryScope2=>(DataValidatorRegistryScope2.SHEET="sheet",DataValidatorRegistryScope2))(DataValidatorRegistryScope||{});const _DataValidatorRegistryService=class _DataValidatorRegistryService{constructor(){__publicField(this,"_validatorByScopes",new Map);__publicField(this,"_validatorMap",new Map);__publicField(this,"_validatorsChange$",new rxjs.BehaviorSubject(void 0));__publicField(this,"validatorsChange$",this._validatorsChange$.asObservable())}_addValidatorToScope(validator,scope){this._validatorByScopes.has(scope)||this._validatorByScopes.set(scope,[]);const validators=this._validatorByScopes.get(scope);if(validators.findIndex(m=>m.id===validator.id)>-1)throw new Error(`Validator item with the same id ${validator.id} has already been added!`);validators.push(validator)}_removeValidatorFromScope(validator,scope){const validators=this._validatorByScopes.get(scope);if(!validators)return;const index=validators.findIndex(v=>v.id===validator.id);index>-1&&validators.splice(index,1)}register(validator){return this._validatorMap.set(validator.id,validator),Array.isArray(validator.scopes)?validator.scopes.forEach(scope=>{this._addValidatorToScope(validator,scope)}):this._addValidatorToScope(validator,validator.scopes),this._validatorsChange$.next(),core.toDisposable(()=>{this._validatorMap.delete(validator.id),Array.isArray(validator.scopes)?validator.scopes.forEach(scope=>{this._removeValidatorFromScope(validator,scope)}):this._removeValidatorFromScope(validator,validator.scopes),this._validatorsChange$.next()})}getValidatorItem(id){return this._validatorMap.get(id)}getValidatorsByScope(scope){return this._validatorByScopes.get(scope)}};__name(_DataValidatorRegistryService,"DataValidatorRegistryService");let DataValidatorRegistryService=_DataValidatorRegistryService;var UpdateRuleType=(UpdateRuleType2=>(UpdateRuleType2[UpdateRuleType2.SETTING=0]="SETTING",UpdateRuleType2[UpdateRuleType2.RANGE=1]="RANGE",UpdateRuleType2[UpdateRuleType2.OPTIONS=2]="OPTIONS",UpdateRuleType2))(UpdateRuleType||{});function getRuleSetting(rule){return{type:rule.type,operator:rule.operator,formula1:rule.formula1,formula2:rule.formula2,allowBlank:rule.allowBlank}}__name(getRuleSetting,"getRuleSetting");function getRuleOptions(rule){return{error:rule.error,errorStyle:rule.errorStyle,errorTitle:rule.errorTitle,imeMode:rule.imeMode,prompt:rule.prompt,promptTitle:rule.promptTitle,showDropDown:rule.showDropDown,showErrorMessage:rule.showErrorMessage,showInputMessage:rule.showInputMessage,renderMode:rule.renderMode,bizInfo:rule.bizInfo}}__name(getRuleOptions,"getRuleOptions");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");const _DataValidationManager=class _DataValidationManager extends core.Disposable{constructor(unitId,subUnitId){super();__publicField(this,"_dataValidations",[]);__publicField(this,"_dataValidationMap",new Map);__publicField(this,"_dataValidations$",new rxjs.BehaviorSubject(this._dataValidations));__publicField(this,"unitId");__publicField(this,"subUnitId");__publicField(this,"dataValidations$",this._dataValidations$.asObservable());this.unitId=unitId,this.subUnitId=subUnitId,this._notice(),this.disposeWithMe({dispose:__name(()=>{this._dataValidations$.complete()},"dispose")})}_notice(){this._dataValidations$.next(this._dataValidations)}getRuleById(id){return this._dataValidationMap.get(id)}getRuleIndex(id){return this._dataValidations.findIndex(rule=>rule.uid===id)}addRule(rule,index){const rules=(Array.isArray(rule)?rule:[rule]).filter(item=>!this._dataValidationMap.has(item.uid));typeof index=="number"&&index<this._dataValidations.length?this._dataValidations.splice(index,0,...rules):this._dataValidations.push(...rules),rules.forEach(item=>{this._dataValidationMap.set(item.uid,item)}),this._notice()}removeRule(ruleId){const index=this._dataValidations.findIndex(item=>item.uid===ruleId);index>-1&&(this._dataValidations.splice(index,1),this._dataValidationMap.delete(ruleId),this._notice())}updateRule(ruleId,payload){const oldRule=this._dataValidationMap.get(ruleId),index=this._dataValidations.findIndex(rule2=>ruleId===rule2.uid);if(!oldRule)throw new Error(`Data validation rule is not found, ruleId: ${ruleId}.`);const rule={...oldRule};switch(payload.type){case UpdateRuleType.RANGE:{rule.ranges=payload.payload;break}case UpdateRuleType.SETTING:{Object.assign(rule,getRuleSetting(payload.payload));break}case UpdateRuleType.OPTIONS:{Object.assign(rule,getRuleOptions(payload.payload));break}}return this._dataValidations[index]=rule,this._dataValidationMap.set(ruleId,rule),this._notice(),rule}getDataValidations(){return this._dataValidations}toJSON(){return this._dataValidations}validator(_value,_rule,_pos,_onComplete){return core.DataValidationStatus.VALID}};__name(_DataValidationManager,"DataValidationManager");let DataValidationManager=_DataValidationManager;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");exports2.DataValidationModel=(_a=class extends core.Disposable{constructor(_logService){super();__publicField(this,"_model",new Map);__publicField(this,"_managerCreator",__name((unitId,subUnitId)=>new DataValidationManager(unitId,subUnitId),"_managerCreator"));__publicField(this,"_ruleChange$",new rxjs.Subject);__publicField(this,"_validStatusChange$",new rxjs.Subject);__publicField(this,"ruleChange$",this._ruleChange$.asObservable());__publicField(this,"ruleChangeDebounce$",this.ruleChange$.pipe(rxjs.debounceTime(20)));__publicField(this,"validStatusChange$",this._validStatusChange$.asObservable().pipe(rxjs.debounceTime(20)));this._logService=_logService,this.disposeWithMe({dispose:__name(()=>{this._ruleChange$.complete(),this._validStatusChange$.complete()},"dispose")})}setManagerCreator(creator){this._managerCreator=creator}ensureManager(unitId,subUnitId){this._model.has(unitId)||this._model.set(unitId,new Map);const unitMap=this._model.get(unitId);if(unitMap.has(subUnitId))return unitMap.get(subUnitId);const manager=this._managerCreator(unitId,subUnitId);return unitMap.set(subUnitId,manager),this.disposeWithMe(manager),manager}_addRuleSideEffect(unitId,subUnitId,rule,source){this.ensureManager(unitId,subUnitId).getRuleById(rule.uid)||this._ruleChange$.next({rule,type:"add",unitId,subUnitId,source})}addRule(unitId,subUnitId,rule,source,index){try{const manager=this.ensureManager(unitId,subUnitId);(Array.isArray(rule)?rule:[rule]).forEach(item=>{this._addRuleSideEffect(unitId,subUnitId,item,source)}),manager.addRule(rule,index)}catch(error){this._logService.error(error)}}updateRule(unitId,subUnitId,ruleId,payload,source){try{const rule=this.ensureManager(unitId,subUnitId).updateRule(ruleId,payload);this._ruleChange$.next({rule,type:"update",unitId,subUnitId,source})}catch(error){this._logService.error(error)}}removeRule(unitId,subUnitId,ruleId,source){try{const manager=this.ensureManager(unitId,subUnitId),oldRule=manager.getRuleById(ruleId);oldRule&&(manager.removeRule(ruleId),this._ruleChange$.next({rule:oldRule,type:"remove",unitId,subUnitId,source}))}catch(error){this._logService.error(error)}}getRuleById(unitId,subUnitId,ruleId){return this.ensureManager(unitId,subUnitId).getRuleById(ruleId)}getRuleIndex(unitId,subUnitId,ruleId){return this.ensureManager(unitId,subUnitId).getRuleIndex(ruleId)}getRules(unitId,subUnitId){return this.ensureManager(unitId,subUnitId).getDataValidations()}validator(rule,pos,value){const{unitId,subUnitId}=pos;return this.ensureManager(unitId,subUnitId).validator(value,rule,pos,(status,changed)=>{changed&&this._validStatusChange$.next({unitId,subUnitId,ruleId:rule.uid,status})})}getUnitRules(unitId){const unitMap=this._model.get(unitId);if(!unitMap)return[];const res=[];return unitMap.forEach(manager=>{res.push([manager.subUnitId,manager.getDataValidations()])}),res}deleteUnitRules(unitId){this._model.delete(unitId)}getSubUnitIds(unitId){var _a2,_b2;return Array.from((_b2=(_a2=this._model.get(unitId))==null?void 0:_a2.keys())!=null?_b2:[])}},__name(_a,"DataValidationModel"),_a),exports2.DataValidationModel=__decorateClass$4([__decorateParam$4(0,core.ILogService)],exports2.DataValidationModel);const AddDataValidationMutation={type:core.CommandType.MUTATION,id:"data-validation.mutation.addRule",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,rule,index,source="command"}=params;return accessor.get(exports2.DataValidationModel).addRule(unitId,subUnitId,rule,source,index),!0}},RemoveDataValidationMutation={type:core.CommandType.MUTATION,id:"data-validation.mutation.removeRule",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,ruleId,source="command"}=params,dataValidationModel=accessor.get(exports2.DataValidationModel);return Array.isArray(ruleId)?ruleId.forEach(item=>{dataValidationModel.removeRule(unitId,subUnitId,item,source)}):dataValidationModel.removeRule(unitId,subUnitId,ruleId,source),!0}},UpdateDataValidationMutation={type:core.CommandType.MUTATION,id:"data-validation.mutation.updateRule",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,ruleId,payload,source="command"}=params;return accessor.get(exports2.DataValidationModel).updateRule(unitId,subUnitId,ruleId,payload,source),!0}},AddDataValidationCommand={type:core.CommandType.COMMAND,id:"data-validation.command.addRule",async handler(accessor,params){if(accessor.get(core.ILogService).warn("[Deprecated] AddDataValidationCommand is deprecated, please use AddSheetDataValidationCommand in @univerjs/sheets-data-validation instead!"),!params)return!1;const{rule,unitId,subUnitId}=params,commandService=accessor.get(core.ICommandService),undoRedoService=accessor.get(core.IUndoRedoService),mutationParams={...params,rule:{...params.rule,ranges:[params.rule.range]}},redoMutations=[{id:AddDataValidationMutation.id,params:mutationParams}],undoMutations=[{id:RemoveDataValidationMutation.id,params:{unitId,subUnitId,ruleId:rule.uid}}];return undoRedoService.pushUndoRedo({unitID:unitId,redoMutations,undoMutations}),await commandService.executeCommand(AddDataValidationMutation.id,mutationParams),!0}},removeDataValidationUndoFactory=__name((accessor,redoParams)=>{const dataValidationModel=accessor.get(exports2.DataValidationModel),{unitId,subUnitId,ruleId,source}=redoParams;if(Array.isArray(ruleId)){const rules=ruleId.map(id=>dataValidationModel.getRuleById(unitId,subUnitId,id)).filter(Boolean);return[{id:AddDataValidationMutation.id,params:{unitId,subUnitId,rule:rules,source}}]}return[{id:AddDataValidationMutation.id,params:{unitId,subUnitId,rule:{...dataValidationModel.getRuleById(unitId,subUnitId,ruleId)},index:dataValidationModel.getRuleIndex(unitId,subUnitId,ruleId)}}]},"removeDataValidationUndoFactory"),RemoveDataValidationCommand={type:core.CommandType.COMMAND,id:"data-validation.command.removeRule",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,ruleId}=params,commandService=accessor.get(core.ICommandService),undoRedoService=accessor.get(core.IUndoRedoService),dataValidationModel=accessor.get(exports2.DataValidationModel),redoMutations=[{id:RemoveDataValidationMutation.id,params}],undoMutations=[{id:AddDataValidationMutation.id,params:{unitId,subUnitId,rule:{...dataValidationModel.getRuleById(unitId,subUnitId,ruleId)},index:dataValidationModel.getRuleIndex(unitId,subUnitId,ruleId)}}];return undoRedoService.pushUndoRedo({undoMutations,redoMutations,unitID:params.unitId}),commandService.executeCommand(RemoveDataValidationMutation.id,params),!0}},UpdateDataValidationOptionsCommand={type:core.CommandType.COMMAND,id:"data-validation.command.updateDataValidationSetting",handler(accessor,params){if(accessor.get(core.ILogService).warn("[Deprecated] UpdateDataValidationOptionsCommand is deprecated, please use UpdateSheetDataValidationOptionsCommand in @univerjs/sheets-data-validation instead!"),!params)return!1;const commandService=accessor.get(core.ICommandService),redoUndoService=accessor.get(core.IUndoRedoService),dataValidationModel=accessor.get(exports2.DataValidationModel),{unitId,subUnitId,ruleId,options}=params,rule=dataValidationModel.getRuleById(unitId,subUnitId,ruleId);if(!rule)return!1;const mutationParams={unitId,subUnitId,ruleId,payload:{type:UpdateRuleType.OPTIONS,payload:options}},redoMutations=[{id:UpdateDataValidationMutation.id,params:mutationParams}],undoMutationParams={unitId,subUnitId,ruleId,payload:{type:UpdateRuleType.OPTIONS,payload:getRuleOptions(rule)}},undoMutations=[{id:UpdateDataValidationMutation.id,params:undoMutationParams}];return redoUndoService.pushUndoRedo({unitID:unitId,redoMutations,undoMutations}),commandService.executeCommand(UpdateDataValidationMutation.id,mutationParams),!0}},UpdateDataValidationSettingCommand={type:core.CommandType.COMMAND,id:"data-validation.command.updateDataValidationOptions",handler(accessor,params){if(accessor.get(core.ILogService).warn("[Deprecated] UpdateDataValidationSettingCommand is deprecated, please use UpdateSheetDataValidationSettingCommand in @univerjs/sheets-data-validation instead!"),!params)return!1;const commandService=accessor.get(core.ICommandService),redoUndoService=accessor.get(core.IUndoRedoService),dataValidationModel=accessor.get(exports2.DataValidationModel),dataValidatorRegistryService=accessor.get(DataValidatorRegistryService),{unitId,subUnitId,ruleId,setting}=params,validator=dataValidatorRegistryService.getValidatorItem(setting.type);if(!validator)return!1;const rule=dataValidationModel.getRuleById(unitId,subUnitId,ruleId);if(!rule||!validator.validatorFormula({...rule,...setting},unitId,subUnitId).success)return!1;const mutationParams={unitId,subUnitId,ruleId,payload:{type:UpdateRuleType.SETTING,payload:setting}},redoMutations=[{id:UpdateDataValidationMutation.id,params:mutationParams}],undoMutationParams={unitId,subUnitId,ruleId,payload:{type:UpdateRuleType.SETTING,payload:getRuleSetting(rule)}},undoMutations=[{id:UpdateDataValidationMutation.id,params:undoMutationParams}];return redoUndoService.pushUndoRedo({unitID:unitId,redoMutations,undoMutations}),commandService.executeCommand(UpdateDataValidationMutation.id,mutationParams),!0}},RemoveAllDataValidationCommand={type:core.CommandType.COMMAND,id:"data-validation.command.removeAll",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId}=params,commandService=accessor.get(core.ICommandService),dataValidationModel=accessor.get(exports2.DataValidationModel),undoRedoService=accessor.get(core.IUndoRedoService),currentRules=[...dataValidationModel.getRules(unitId,subUnitId)],redoParams={unitId,subUnitId,ruleId:currentRules.map(rule=>rule.uid)},redoMutations=[{id:RemoveDataValidationMutation.id,params:redoParams}],undoMutations=[{id:AddDataValidationMutation.id,params:{unitId,subUnitId,rule:currentRules}}];return undoRedoService.pushUndoRedo({redoMutations,undoMutations,unitID:unitId}),commandService.executeCommand(RemoveDataValidationMutation.id,redoParams),!0}};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");const DATA_VALIDATION_PLUGIN_NAME="SHEET_DATA_VALIDATION_PLUGIN";exports2.DataValidationResourceController=(_b=class extends core.Disposable{constructor(_resourceManagerService,_univerInstanceService,_dataValidationModel){super(),this._resourceManagerService=_resourceManagerService,this._univerInstanceService=_univerInstanceService,this._dataValidationModel=_dataValidationModel,this._initSnapshot()}_initSnapshot(){const toJson=__name(unitID=>{const map=this._dataValidationModel.getUnitRules(unitID),resultMap={};return map?(map.forEach(([key,v])=>{resultMap[key]=v}),JSON.stringify(resultMap)):""},"toJson"),parseJson=__name(json=>{if(!json)return{};try{return JSON.parse(json)}catch{return{}}},"parseJson");this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:DATA_VALIDATION_PLUGIN_NAME,businesses:[core.UniverInstanceType.UNIVER_SHEET],toJson:__name(unitID=>toJson(unitID),"toJson"),parseJson:__name(json=>parseJson(json),"parseJson"),onUnLoad:__name(unitID=>{this._dataValidationModel.deleteUnitRules(unitID)},"onUnLoad"),onLoad:__name((unitID,value)=>{Object.keys(value).forEach(subunitId=>{value[subunitId].forEach(rule=>{this._dataValidationModel.addRule(unitID,subunitId,rule,"patched")})})},"onLoad")}))}},__name(_b,"DataValidationResourceController"),_b),exports2.DataValidationResourceController=__decorateClass$3([core.OnLifecycle(core.LifecycleStages.Ready,exports2.DataValidationResourceController),__decorateParam$3(0,core.IResourceManagerService),__decorateParam$3(1,core.IUniverInstanceService),__decorateParam$3(2,core.Inject(exports2.DataValidationModel))],exports2.DataValidationResourceController);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");exports2.DataValidationSheetController=(_c=class extends core.Disposable{constructor(_sheetInterceptorService,_univerInstanceService,_dataValidationModel){super(),this._sheetInterceptorService=_sheetInterceptorService,this._univerInstanceService=_univerInstanceService,this._dataValidationModel=_dataValidationModel,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 manager=this._dataValidationModel.ensureManager(unitId,subUnitId);if(!manager)return{redos:[],undos:[]};const rules=manager.getDataValidations(),ids=rules.map(i=>i.uid),redoParams={unitId,subUnitId,ruleId:ids,source:"patched"},undoParams={unitId,subUnitId,rule:[...rules],source:"patched"};return{redos:[{id:RemoveDataValidationMutation.id,params:redoParams}],undos:[{id:AddDataValidationMutation.id,params:undoParams}]}}return{redos:[],undos:[]}},"getMutations")}))}},__name(_c,"DataValidationSheetController"),_c),exports2.DataValidationSheetController=__decorateClass$2([core.OnLifecycle(core.LifecycleStages.Ready,exports2.DataValidationSheetController),__decorateParam$2(0,core.Inject(sheets.SheetInterceptorService)),__decorateParam$2(1,core.Inject(core.IUniverInstanceService)),__decorateParam$2(2,core.Inject(exports2.DataValidationModel))],exports2.DataValidationSheetController);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");const PLUGIN_NAME="UNIVER_DATA_VALIDATION_PLUGIN";exports2.UniverDataValidationPlugin=(_d=class extends core.Plugin{constructor(_config,_injector,_commandService){super(),this._injector=_injector,this._commandService=_commandService}onStarting(){[[exports2.DataValidationModel],[DataValidatorRegistryService],[exports2.DataValidationResourceController],[exports2.DataValidationSheetController]].forEach(d=>this._injector.add(d)),[AddDataValidationCommand,RemoveAllDataValidationCommand,UpdateDataValidationOptionsCommand,UpdateDataValidationSettingCommand,RemoveDataValidationCommand,AddDataValidationMutation,UpdateDataValidationMutation,RemoveDataValidationMutation].forEach(command=>{this._commandService.registerCommand(command)})}},__name(_d,"UniverDataValidationPlugin"),__publicField(_d,"pluginName",PLUGIN_NAME),__publicField(_d,"type",core.UniverInstanceType.UNIVER_SHEET),_d),exports2.UniverDataValidationPlugin=__decorateClass$1([__decorateParam$1(1,core.Inject(core.Injector)),__decorateParam$1(2,core.ICommandService)],exports2.UniverDataValidationPlugin),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 OperatorTitleMap={[core.DataValidationOperator.BETWEEN]:"dataValidation.ruleName.between",[core.DataValidationOperator.EQUAL]:"dataValidation.ruleName.equal",[core.DataValidationOperator.GREATER_THAN]:"dataValidation.ruleName.greaterThan",[core.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.ruleName.greaterThanOrEqual",[core.DataValidationOperator.LESS_THAN]:"dataValidation.ruleName.lessThan",[core.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.ruleName.lessThanOrEqual",[core.DataValidationOperator.NOT_BETWEEN]:"dataValidation.ruleName.notBetween",[core.DataValidationOperator.NOT_EQUAL]:"dataValidation.ruleName.notEqual"},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"},TextLengthErrorTitleMap={[core.DataValidationOperator.BETWEEN]:"dataValidation.textLength.errorMsg.between",[core.DataValidationOperator.EQUAL]:"dataValidation.textLength.errorMsg.equal",[core.DataValidationOperator.GREATER_THAN]:"dataValidation.textLength.errorMsg.greaterThan",[core.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.greaterThanOrEqual",[core.DataValidationOperator.LESS_THAN]:"dataValidation.textLength.errorMsg.lessThan",[core.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.lessThanOrEqual",[core.DataValidationOperator.NOT_BETWEEN]:"dataValidation.textLength.errorMsg.notBetween",[core.DataValidationOperator.NOT_EQUAL]:"dataValidation.textLength.errorMsg.notEqual"};var __defProp2=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__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");const FORMULA1="{FORMULA1}",FORMULA2="{FORMULA2}",operatorNameMap={[core.DataValidationOperator.BETWEEN]:"dataValidation.operators.between",[core.DataValidationOperator.EQUAL]:"dataValidation.operators.equal",[core.DataValidationOperator.GREATER_THAN]:"dataValidation.operators.greaterThan",[core.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.operators.greaterThanOrEqual",[core.DataValidationOperator.LESS_THAN]:"dataValidation.operators.lessThan",[core.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.operators.lessThanOrEqual",[core.DataValidationOperator.NOT_BETWEEN]:"dataValidation.operators.notBetween",[core.DataValidationOperator.NOT_EQUAL]:"dataValidation.operators.notEqual"};exports2.BaseDataValidator=(_e=class{constructor(localeService,injector){__publicField(this,"canvasRender",null);__publicField(this,"dropdown");__publicField(this,"optionsInput");this.localeService=localeService,this.injector=injector}get operatorNames(){return this.operators.map(operator=>this.localeService.t(operatorNameMap[operator]))}get titleStr(){return this.localeService.t(this.title)}skipDefaultFontRender(rule,cellValue,pos){return!1}generateRuleName(rule){var _a2,_b2;if(!rule.operator)return this.titleStr;const ruleName=this.localeService.t(OperatorTitleMap[rule.operator]).replace(FORMULA1,(_a2=rule.formula1)!=null?_a2:"").replace(FORMULA2,(_b2=rule.formula2)!=null?_b2:"");return`${this.titleStr} ${ruleName}`}generateRuleErrorMessage(rule){var _a2,_b2;return rule.operator?`${this.localeService.t(OperatorErrorTitleMap[rule.operator]).replace(FORMULA1,(_a2=rule.formula1)!=null?_a2:"").replace(FORMULA2,(_b2=rule.formula2)!=null?_b2:"")}`:this.titleStr}getRuleFinalError(rule){return rule.showErrorMessage&&rule.error?rule.error:this.generateRuleErrorMessage(rule)}isEmptyCellValue(cellValue){return cellValue===""||cellValue===void 0||cellValue===null}async isValidType(cellInfo,formula,rule){return!0}transform(cellInfo,formula,rule){return cellInfo}async validatorIsEqual(cellInfo,formula,rule){return!0}async validatorIsNotEqual(cellInfo,formula,rule){return!0}async validatorIsBetween(cellInfo,formula,rule){return!0}async validatorIsNotBetween(cellInfo,formula,rule){return!0}async validatorIsGreaterThan(cellInfo,formula,rule){return!0}async validatorIsGreaterThanOrEqual(cellInfo,formula,rule){return!0}async validatorIsLessThan(cellInfo,formula,rule){return!0}async validatorIsLessThanOrEqual(cellInfo,formula,rule){return!0}async validator(cellInfo,rule){const{value:cellValue,unitId,subUnitId}=cellInfo,isEmpty=this.isEmptyCellValue(cellValue),{allowBlank=!0,operator}=rule;if(isEmpty)return allowBlank;const formulaInfo=await this.parseFormula(rule,unitId,subUnitId);if(!await this.isValidType(cellInfo,formulaInfo,rule))return!1;if(!core.Tools.isDefine(operator))return!0;const transformedCell=this.transform(cellInfo,formulaInfo,rule);switch(operator){case core.DataValidationOperator.BETWEEN:return this.validatorIsBetween(transformedCell,formulaInfo,rule);case core.DataValidationOperator.EQUAL:return this.validatorIsEqual(transformedCell,formulaInfo,rule);case core.DataValidationOperator.GREATER_THAN:return this.validatorIsGreaterThan(transformedCell,formulaInfo,rule);case core.DataValidationOperator.GREATER_THAN_OR_EQUAL:return this.validatorIsGreaterThanOrEqual(transformedCell,formulaInfo,rule);case core.DataValidationOperator.LESS_THAN:return this.validatorIsLessThan(transformedCell,formulaInfo,rule);case core.DataValidationOperator.LESS_THAN_OR_EQUAL:return this.validatorIsLessThanOrEqual(transformedCell,formulaInfo,rule);case core.DataValidationOperator.NOT_BETWEEN:return this.validatorIsNotBetween(transformedCell,formulaInfo,rule);case core.DataValidationOperator.NOT_EQUAL:return this.validatorIsNotEqual(transformedCell,formulaInfo,rule);default:throw new Error("Unknown operator.")}}},__name(_e,"BaseDataValidator"),_e),exports2.BaseDataValidator=__decorateClass([__decorateParam(0,core.Inject(core.LocaleService)),__decorateParam(1,core.Inject(core.Injector))],exports2.BaseDataValidator);const TWO_FORMULA_OPERATOR_COUNT=[core.DataValidationOperator.BETWEEN,core.DataValidationOperator.NOT_BETWEEN];exports2.AddDataValidationCommand=AddDataValidationCommand,exports2.AddDataValidationMutation=AddDataValidationMutation,exports2.DataValidationManager=DataValidationManager,exports2.DataValidatorRegistryScope=DataValidatorRegistryScope,exports2.DataValidatorRegistryService=DataValidatorRegistryService,exports2.RemoveAllDataValidationCommand=RemoveAllDataValidationCommand,exports2.RemoveDataValidationCommand=RemoveDataValidationCommand,exports2.RemoveDataValidationMutation=RemoveDataValidationMutation,exports2.TWO_FORMULA_OPERATOR_COUNT=TWO_FORMULA_OPERATOR_COUNT,exports2.TextLengthErrorTitleMap=TextLengthErrorTitleMap,exports2.UpdateDataValidationMutation=UpdateDataValidationMutation,exports2.UpdateDataValidationOptionsCommand=UpdateDataValidationOptionsCommand,exports2.UpdateDataValidationSettingCommand=UpdateDataValidationSettingCommand,exports2.UpdateRuleType=UpdateRuleType,exports2.createDefaultNewRule=createDefaultNewRule,exports2.getRuleOptions=getRuleOptions,exports2.getRuleSetting=getRuleSetting,exports2.removeDataValidationUndoFactory=removeDataValidationUndoFactory,Object.defineProperty(exports2,Symbol.toStringTag,{value:"Module"})});
1
+ (function(global,factory){typeof exports=="object"&&typeof module<"u"?factory(exports,require("@univerjs/core"),require("rxjs"),require("@univerjs/sheets")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","rxjs","@univerjs/sheets"],factory):(global=typeof globalThis<"u"?globalThis:global||self,factory(global.UniverDataValidation={},global.UniverCore,global.rxjs,global.UniverSheets))})(this,function(exports2,core,rxjs,sheets){"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;var DataValidatorRegistryScope=(DataValidatorRegistryScope2=>(DataValidatorRegistryScope2.SHEET="sheet",DataValidatorRegistryScope2))(DataValidatorRegistryScope||{});const _DataValidatorRegistryService=class _DataValidatorRegistryService{constructor(){__publicField(this,"_validatorByScopes",new Map);__publicField(this,"_validatorMap",new Map);__publicField(this,"_validatorsChange$",new rxjs.BehaviorSubject(void 0));__publicField(this,"validatorsChange$",this._validatorsChange$.asObservable())}_addValidatorToScope(validator,scope){this._validatorByScopes.has(scope)||this._validatorByScopes.set(scope,[]);const validators=this._validatorByScopes.get(scope);if(validators.findIndex(m=>m.id===validator.id)>-1)throw new Error(`Validator item with the same id ${validator.id} has already been added!`);validators.push(validator)}_removeValidatorFromScope(validator,scope){const validators=this._validatorByScopes.get(scope);if(!validators)return;const index=validators.findIndex(v=>v.id===validator.id);index>-1&&validators.splice(index,1)}register(validator){return this._validatorMap.set(validator.id,validator),Array.isArray(validator.scopes)?validator.scopes.forEach(scope=>{this._addValidatorToScope(validator,scope)}):this._addValidatorToScope(validator,validator.scopes),this._validatorsChange$.next(),core.toDisposable(()=>{this._validatorMap.delete(validator.id),Array.isArray(validator.scopes)?validator.scopes.forEach(scope=>{this._removeValidatorFromScope(validator,scope)}):this._removeValidatorFromScope(validator,validator.scopes),this._validatorsChange$.next()})}getValidatorItem(id){return this._validatorMap.get(id)}getValidatorsByScope(scope){return this._validatorByScopes.get(scope)}};__name(_DataValidatorRegistryService,"DataValidatorRegistryService");let DataValidatorRegistryService=_DataValidatorRegistryService;var UpdateRuleType=(UpdateRuleType2=>(UpdateRuleType2[UpdateRuleType2.SETTING=0]="SETTING",UpdateRuleType2[UpdateRuleType2.RANGE=1]="RANGE",UpdateRuleType2[UpdateRuleType2.OPTIONS=2]="OPTIONS",UpdateRuleType2))(UpdateRuleType||{});function getRuleSetting(rule){return{type:rule.type,operator:rule.operator,formula1:rule.formula1,formula2:rule.formula2,allowBlank:rule.allowBlank}}__name(getRuleSetting,"getRuleSetting");function getRuleOptions(rule){return{error:rule.error,errorStyle:rule.errorStyle,errorTitle:rule.errorTitle,imeMode:rule.imeMode,prompt:rule.prompt,promptTitle:rule.promptTitle,showDropDown:rule.showDropDown,showErrorMessage:rule.showErrorMessage,showInputMessage:rule.showInputMessage,renderMode:rule.renderMode,bizInfo:rule.bizInfo}}__name(getRuleOptions,"getRuleOptions");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");const _DataValidationManager=class _DataValidationManager extends core.Disposable{constructor(unitId,subUnitId){super();__publicField(this,"_dataValidations",[]);__publicField(this,"_dataValidationMap",new Map);__publicField(this,"_dataValidations$",new rxjs.BehaviorSubject(this._dataValidations));__publicField(this,"unitId");__publicField(this,"subUnitId");__publicField(this,"dataValidations$",this._dataValidations$.asObservable());this.unitId=unitId,this.subUnitId=subUnitId,this._notice(),this.disposeWithMe({dispose:__name(()=>{this._dataValidations$.complete()},"dispose")})}_notice(){this._dataValidations$.next(this._dataValidations)}getRuleById(id){return this._dataValidationMap.get(id)}getRuleIndex(id){return this._dataValidations.findIndex(rule=>rule.uid===id)}addRule(rule,index){const rules=(Array.isArray(rule)?rule:[rule]).filter(item=>!this._dataValidationMap.has(item.uid));typeof index=="number"&&index<this._dataValidations.length?this._dataValidations.splice(index,0,...rules):this._dataValidations.push(...rules),rules.forEach(item=>{this._dataValidationMap.set(item.uid,item)}),this._notice()}removeRule(ruleId){const index=this._dataValidations.findIndex(item=>item.uid===ruleId);index>-1&&(this._dataValidations.splice(index,1),this._dataValidationMap.delete(ruleId),this._notice())}updateRule(ruleId,payload){const oldRule=this._dataValidationMap.get(ruleId),index=this._dataValidations.findIndex(rule2=>ruleId===rule2.uid);if(!oldRule)throw new Error(`Data validation rule is not found, ruleId: ${ruleId}.`);const rule={...oldRule};switch(payload.type){case UpdateRuleType.RANGE:{rule.ranges=payload.payload;break}case UpdateRuleType.SETTING:{Object.assign(rule,getRuleSetting(payload.payload));break}case UpdateRuleType.OPTIONS:{Object.assign(rule,getRuleOptions(payload.payload));break}}return this._dataValidations[index]=rule,this._dataValidationMap.set(ruleId,rule),this._notice(),rule}getDataValidations(){return this._dataValidations}toJSON(){return this._dataValidations}validator(_value,_rule,_pos,_onComplete){return core.DataValidationStatus.VALID}};__name(_DataValidationManager,"DataValidationManager");let DataValidationManager=_DataValidationManager;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");exports2.DataValidationModel=(_a=class extends core.Disposable{constructor(_logService){super();__publicField(this,"_model",new Map);__publicField(this,"_managerCreator",__name((unitId,subUnitId)=>new DataValidationManager(unitId,subUnitId),"_managerCreator"));__publicField(this,"_ruleChange$",new rxjs.Subject);__publicField(this,"_validStatusChange$",new rxjs.Subject);__publicField(this,"ruleChange$",this._ruleChange$.asObservable());__publicField(this,"ruleChangeDebounce$",this.ruleChange$.pipe(rxjs.debounceTime(20)));__publicField(this,"validStatusChange$",this._validStatusChange$.asObservable().pipe(rxjs.debounceTime(20)));this._logService=_logService,this.disposeWithMe({dispose:__name(()=>{this._ruleChange$.complete(),this._validStatusChange$.complete()},"dispose")})}setManagerCreator(creator){this._managerCreator=creator}ensureManager(unitId,subUnitId){this._model.has(unitId)||this._model.set(unitId,new Map);const unitMap=this._model.get(unitId);if(unitMap.has(subUnitId))return unitMap.get(subUnitId);const manager=this._managerCreator(unitId,subUnitId);return unitMap.set(subUnitId,manager),this.disposeWithMe(manager),manager}_addRuleSideEffect(unitId,subUnitId,rule,source){this.ensureManager(unitId,subUnitId).getRuleById(rule.uid)||this._ruleChange$.next({rule,type:"add",unitId,subUnitId,source})}addRule(unitId,subUnitId,rule,source,index){try{const manager=this.ensureManager(unitId,subUnitId);(Array.isArray(rule)?rule:[rule]).forEach(item=>{this._addRuleSideEffect(unitId,subUnitId,item,source)}),manager.addRule(rule,index)}catch(error){this._logService.error(error)}}updateRule(unitId,subUnitId,ruleId,payload,source){try{const rule=this.ensureManager(unitId,subUnitId).updateRule(ruleId,payload);this._ruleChange$.next({rule,type:"update",unitId,subUnitId,source})}catch(error){this._logService.error(error)}}removeRule(unitId,subUnitId,ruleId,source){try{const manager=this.ensureManager(unitId,subUnitId),oldRule=manager.getRuleById(ruleId);oldRule&&(manager.removeRule(ruleId),this._ruleChange$.next({rule:oldRule,type:"remove",unitId,subUnitId,source}))}catch(error){this._logService.error(error)}}getRuleById(unitId,subUnitId,ruleId){return this.ensureManager(unitId,subUnitId).getRuleById(ruleId)}getRuleIndex(unitId,subUnitId,ruleId){return this.ensureManager(unitId,subUnitId).getRuleIndex(ruleId)}getRules(unitId,subUnitId){return this.ensureManager(unitId,subUnitId).getDataValidations()}validator(rule,pos,value){const{unitId,subUnitId}=pos;return this.ensureManager(unitId,subUnitId).validator(value,rule,pos,(status,changed)=>{changed&&this._validStatusChange$.next({unitId,subUnitId,ruleId:rule.uid,status})})}getUnitRules(unitId){const unitMap=this._model.get(unitId);if(!unitMap)return[];const res=[];return unitMap.forEach(manager=>{res.push([manager.subUnitId,manager.getDataValidations()])}),res}deleteUnitRules(unitId){this._model.delete(unitId)}getSubUnitIds(unitId){var _a2,_b2;return Array.from((_b2=(_a2=this._model.get(unitId))==null?void 0:_a2.keys())!=null?_b2:[])}},__name(_a,"DataValidationModel"),_a),exports2.DataValidationModel=__decorateClass$4([__decorateParam$4(0,core.ILogService)],exports2.DataValidationModel);const AddDataValidationMutation={type:core.CommandType.MUTATION,id:"data-validation.mutation.addRule",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,rule,index,source="command"}=params;return accessor.get(exports2.DataValidationModel).addRule(unitId,subUnitId,rule,source,index),!0}},RemoveDataValidationMutation={type:core.CommandType.MUTATION,id:"data-validation.mutation.removeRule",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,ruleId,source="command"}=params,dataValidationModel=accessor.get(exports2.DataValidationModel);return Array.isArray(ruleId)?ruleId.forEach(item=>{dataValidationModel.removeRule(unitId,subUnitId,item,source)}):dataValidationModel.removeRule(unitId,subUnitId,ruleId,source),!0}},UpdateDataValidationMutation={type:core.CommandType.MUTATION,id:"data-validation.mutation.updateRule",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,ruleId,payload,source="command"}=params;return accessor.get(exports2.DataValidationModel).updateRule(unitId,subUnitId,ruleId,payload,source),!0}},AddDataValidationCommand={type:core.CommandType.COMMAND,id:"data-validation.command.addRule",async handler(accessor,params){if(accessor.get(core.ILogService).warn("[Deprecated] AddDataValidationCommand is deprecated, please use AddSheetDataValidationCommand in @univerjs/sheets-data-validation instead!"),!params)return!1;const{rule,unitId,subUnitId}=params,commandService=accessor.get(core.ICommandService),undoRedoService=accessor.get(core.IUndoRedoService),mutationParams={...params,rule:{...params.rule,ranges:[params.rule.range]}},redoMutations=[{id:AddDataValidationMutation.id,params:mutationParams}],undoMutations=[{id:RemoveDataValidationMutation.id,params:{unitId,subUnitId,ruleId:rule.uid}}];return undoRedoService.pushUndoRedo({unitID:unitId,redoMutations,undoMutations}),await commandService.executeCommand(AddDataValidationMutation.id,mutationParams),!0}},removeDataValidationUndoFactory=__name((accessor,redoParams)=>{const dataValidationModel=accessor.get(exports2.DataValidationModel),{unitId,subUnitId,ruleId,source}=redoParams;if(Array.isArray(ruleId)){const rules=ruleId.map(id=>dataValidationModel.getRuleById(unitId,subUnitId,id)).filter(Boolean);return[{id:AddDataValidationMutation.id,params:{unitId,subUnitId,rule:rules,source}}]}return[{id:AddDataValidationMutation.id,params:{unitId,subUnitId,rule:{...dataValidationModel.getRuleById(unitId,subUnitId,ruleId)},index:dataValidationModel.getRuleIndex(unitId,subUnitId,ruleId)}}]},"removeDataValidationUndoFactory"),RemoveDataValidationCommand={type:core.CommandType.COMMAND,id:"data-validation.command.removeRule",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId,ruleId}=params,commandService=accessor.get(core.ICommandService),undoRedoService=accessor.get(core.IUndoRedoService),dataValidationModel=accessor.get(exports2.DataValidationModel),redoMutations=[{id:RemoveDataValidationMutation.id,params}],undoMutations=[{id:AddDataValidationMutation.id,params:{unitId,subUnitId,rule:{...dataValidationModel.getRuleById(unitId,subUnitId,ruleId)},index:dataValidationModel.getRuleIndex(unitId,subUnitId,ruleId)}}];return undoRedoService.pushUndoRedo({undoMutations,redoMutations,unitID:params.unitId}),commandService.executeCommand(RemoveDataValidationMutation.id,params),!0}},UpdateDataValidationOptionsCommand={type:core.CommandType.COMMAND,id:"data-validation.command.updateDataValidationSetting",handler(accessor,params){if(accessor.get(core.ILogService).warn("[Deprecated] UpdateDataValidationOptionsCommand is deprecated, please use UpdateSheetDataValidationOptionsCommand in @univerjs/sheets-data-validation instead!"),!params)return!1;const commandService=accessor.get(core.ICommandService),redoUndoService=accessor.get(core.IUndoRedoService),dataValidationModel=accessor.get(exports2.DataValidationModel),{unitId,subUnitId,ruleId,options}=params,rule=dataValidationModel.getRuleById(unitId,subUnitId,ruleId);if(!rule)return!1;const mutationParams={unitId,subUnitId,ruleId,payload:{type:UpdateRuleType.OPTIONS,payload:options}},redoMutations=[{id:UpdateDataValidationMutation.id,params:mutationParams}],undoMutationParams={unitId,subUnitId,ruleId,payload:{type:UpdateRuleType.OPTIONS,payload:getRuleOptions(rule)}},undoMutations=[{id:UpdateDataValidationMutation.id,params:undoMutationParams}];return redoUndoService.pushUndoRedo({unitID:unitId,redoMutations,undoMutations}),commandService.executeCommand(UpdateDataValidationMutation.id,mutationParams),!0}},UpdateDataValidationSettingCommand={type:core.CommandType.COMMAND,id:"data-validation.command.updateDataValidationOptions",handler(accessor,params){if(accessor.get(core.ILogService).warn("[Deprecated] UpdateDataValidationSettingCommand is deprecated, please use UpdateSheetDataValidationSettingCommand in @univerjs/sheets-data-validation instead!"),!params)return!1;const commandService=accessor.get(core.ICommandService),redoUndoService=accessor.get(core.IUndoRedoService),dataValidationModel=accessor.get(exports2.DataValidationModel),dataValidatorRegistryService=accessor.get(DataValidatorRegistryService),{unitId,subUnitId,ruleId,setting}=params,validator=dataValidatorRegistryService.getValidatorItem(setting.type);if(!validator)return!1;const rule=dataValidationModel.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:UpdateRuleType.SETTING,payload:{...setting,...validator.normlizeFormula(newRule,unitId,subUnitId)}}},redoMutations=[{id:UpdateDataValidationMutation.id,params:mutationParams}],undoMutationParams={unitId,subUnitId,ruleId,payload:{type:UpdateRuleType.SETTING,payload:getRuleSetting(rule)}},undoMutations=[{id:UpdateDataValidationMutation.id,params:undoMutationParams}];return redoUndoService.pushUndoRedo({unitID:unitId,redoMutations,undoMutations}),commandService.executeCommand(UpdateDataValidationMutation.id,mutationParams),!0}},RemoveAllDataValidationCommand={type:core.CommandType.COMMAND,id:"data-validation.command.removeAll",handler(accessor,params){if(!params)return!1;const{unitId,subUnitId}=params,commandService=accessor.get(core.ICommandService),dataValidationModel=accessor.get(exports2.DataValidationModel),undoRedoService=accessor.get(core.IUndoRedoService),currentRules=[...dataValidationModel.getRules(unitId,subUnitId)],redoParams={unitId,subUnitId,ruleId:currentRules.map(rule=>rule.uid)},redoMutations=[{id:RemoveDataValidationMutation.id,params:redoParams}],undoMutations=[{id:AddDataValidationMutation.id,params:{unitId,subUnitId,rule:currentRules}}];return undoRedoService.pushUndoRedo({redoMutations,undoMutations,unitID:unitId}),commandService.executeCommand(RemoveDataValidationMutation.id,redoParams),!0}};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");const DATA_VALIDATION_PLUGIN_NAME="SHEET_DATA_VALIDATION_PLUGIN";exports2.DataValidationResourceController=(_b=class extends core.Disposable{constructor(_resourceManagerService,_univerInstanceService,_dataValidationModel){super(),this._resourceManagerService=_resourceManagerService,this._univerInstanceService=_univerInstanceService,this._dataValidationModel=_dataValidationModel,this._initSnapshot()}_initSnapshot(){const toJson=__name(unitID=>{const map=this._dataValidationModel.getUnitRules(unitID),resultMap={};return map?(map.forEach(([key,v])=>{resultMap[key]=v}),JSON.stringify(resultMap)):""},"toJson"),parseJson=__name(json=>{if(!json)return{};try{return JSON.parse(json)}catch{return{}}},"parseJson");this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:DATA_VALIDATION_PLUGIN_NAME,businesses:[core.UniverInstanceType.UNIVER_SHEET],toJson:__name(unitID=>toJson(unitID),"toJson"),parseJson:__name(json=>parseJson(json),"parseJson"),onUnLoad:__name(unitID=>{this._dataValidationModel.deleteUnitRules(unitID)},"onUnLoad"),onLoad:__name((unitID,value)=>{Object.keys(value).forEach(subunitId=>{value[subunitId].forEach(rule=>{this._dataValidationModel.addRule(unitID,subunitId,rule,"patched")})})},"onLoad")}))}},__name(_b,"DataValidationResourceController"),_b),exports2.DataValidationResourceController=__decorateClass$3([core.OnLifecycle(core.LifecycleStages.Ready,exports2.DataValidationResourceController),__decorateParam$3(0,core.IResourceManagerService),__decorateParam$3(1,core.IUniverInstanceService),__decorateParam$3(2,core.Inject(exports2.DataValidationModel))],exports2.DataValidationResourceController);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");exports2.DataValidationSheetController=(_c=class extends core.Disposable{constructor(_sheetInterceptorService,_univerInstanceService,_dataValidationModel){super(),this._sheetInterceptorService=_sheetInterceptorService,this._univerInstanceService=_univerInstanceService,this._dataValidationModel=_dataValidationModel,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 manager=this._dataValidationModel.ensureManager(unitId,subUnitId);if(!manager)return{redos:[],undos:[]};const rules=manager.getDataValidations(),ids=rules.map(i=>i.uid),redoParams={unitId,subUnitId,ruleId:ids,source:"patched"},undoParams={unitId,subUnitId,rule:[...rules],source:"patched"};return{redos:[{id:RemoveDataValidationMutation.id,params:redoParams}],undos:[{id:AddDataValidationMutation.id,params:undoParams}]}}return{redos:[],undos:[]}},"getMutations")}))}},__name(_c,"DataValidationSheetController"),_c),exports2.DataValidationSheetController=__decorateClass$2([core.OnLifecycle(core.LifecycleStages.Ready,exports2.DataValidationSheetController),__decorateParam$2(0,core.Inject(sheets.SheetInterceptorService)),__decorateParam$2(1,core.Inject(core.IUniverInstanceService)),__decorateParam$2(2,core.Inject(exports2.DataValidationModel))],exports2.DataValidationSheetController);const PLUGIN_CONFIG_KEY="data-validation.config",defaultPluginConfig={};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");const PLUGIN_NAME="UNIVER_DATA_VALIDATION_PLUGIN";exports2.UniverDataValidationPlugin=(_d=class extends core.Plugin{constructor(_config=defaultPluginConfig,_injector,_commandService,_configService){super(),this._config=_config,this._injector=_injector,this._commandService=_commandService,this._configService=_configService;const{...rest}=this._config;this._configService.setConfig(PLUGIN_CONFIG_KEY,rest)}onStarting(){[[exports2.DataValidationModel],[DataValidatorRegistryService],[exports2.DataValidationResourceController],[exports2.DataValidationSheetController]].forEach(d=>this._injector.add(d)),[AddDataValidationCommand,RemoveAllDataValidationCommand,UpdateDataValidationOptionsCommand,UpdateDataValidationSettingCommand,RemoveDataValidationCommand,AddDataValidationMutation,UpdateDataValidationMutation,RemoveDataValidationMutation].forEach(command=>{this._commandService.registerCommand(command)})}},__name(_d,"UniverDataValidationPlugin"),__publicField(_d,"pluginName",PLUGIN_NAME),__publicField(_d,"type",core.UniverInstanceType.UNIVER_SHEET),_d),exports2.UniverDataValidationPlugin=__decorateClass$1([__decorateParam$1(1,core.Inject(core.Injector)),__decorateParam$1(2,core.ICommandService),__decorateParam$1(3,core.IConfigService)],exports2.UniverDataValidationPlugin),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 OperatorTitleMap={[core.DataValidationOperator.BETWEEN]:"dataValidation.ruleName.between",[core.DataValidationOperator.EQUAL]:"dataValidation.ruleName.equal",[core.DataValidationOperator.GREATER_THAN]:"dataValidation.ruleName.greaterThan",[core.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.ruleName.greaterThanOrEqual",[core.DataValidationOperator.LESS_THAN]:"dataValidation.ruleName.lessThan",[core.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.ruleName.lessThanOrEqual",[core.DataValidationOperator.NOT_BETWEEN]:"dataValidation.ruleName.notBetween",[core.DataValidationOperator.NOT_EQUAL]:"dataValidation.ruleName.notEqual"},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"},TextLengthErrorTitleMap={[core.DataValidationOperator.BETWEEN]:"dataValidation.textLength.errorMsg.between",[core.DataValidationOperator.EQUAL]:"dataValidation.textLength.errorMsg.equal",[core.DataValidationOperator.GREATER_THAN]:"dataValidation.textLength.errorMsg.greaterThan",[core.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.greaterThanOrEqual",[core.DataValidationOperator.LESS_THAN]:"dataValidation.textLength.errorMsg.lessThan",[core.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.lessThanOrEqual",[core.DataValidationOperator.NOT_BETWEEN]:"dataValidation.textLength.errorMsg.notBetween",[core.DataValidationOperator.NOT_EQUAL]:"dataValidation.textLength.errorMsg.notEqual"};var __defProp2=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__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");const FORMULA1="{FORMULA1}",FORMULA2="{FORMULA2}",operatorNameMap={[core.DataValidationOperator.BETWEEN]:"dataValidation.operators.between",[core.DataValidationOperator.EQUAL]:"dataValidation.operators.equal",[core.DataValidationOperator.GREATER_THAN]:"dataValidation.operators.greaterThan",[core.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.operators.greaterThanOrEqual",[core.DataValidationOperator.LESS_THAN]:"dataValidation.operators.lessThan",[core.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.operators.lessThanOrEqual",[core.DataValidationOperator.NOT_BETWEEN]:"dataValidation.operators.notBetween",[core.DataValidationOperator.NOT_EQUAL]:"dataValidation.operators.notEqual"};exports2.BaseDataValidator=(_e=class{constructor(localeService,injector){__publicField(this,"canvasRender",null);__publicField(this,"dropdown");__publicField(this,"optionsInput");this.localeService=localeService,this.injector=injector}get operatorNames(){return this.operators.map(operator=>this.localeService.t(operatorNameMap[operator]))}get titleStr(){return this.localeService.t(this.title)}skipDefaultFontRender(rule,cellValue,pos){return!1}generateRuleName(rule){var _a2,_b2;if(!rule.operator)return this.titleStr;const ruleName=this.localeService.t(OperatorTitleMap[rule.operator]).replace(FORMULA1,(_a2=rule.formula1)!=null?_a2:"").replace(FORMULA2,(_b2=rule.formula2)!=null?_b2:"");return`${this.titleStr} ${ruleName}`}generateRuleErrorMessage(rule){var _a2,_b2;return rule.operator?`${this.localeService.t(OperatorErrorTitleMap[rule.operator]).replace(FORMULA1,(_a2=rule.formula1)!=null?_a2:"").replace(FORMULA2,(_b2=rule.formula2)!=null?_b2:"")}`:this.titleStr}getRuleFinalError(rule){return rule.showErrorMessage&&rule.error?rule.error:this.generateRuleErrorMessage(rule)}isEmptyCellValue(cellValue){return cellValue===""||cellValue===void 0||cellValue===null}normlizeFormula(rule,unitId,subUnitId){return{formula1:rule.formula1,formula2:rule.formula2}}async isValidType(cellInfo,formula,rule){return!0}transform(cellInfo,formula,rule){return cellInfo}async validatorIsEqual(cellInfo,formula,rule){return!0}async validatorIsNotEqual(cellInfo,formula,rule){return!0}async validatorIsBetween(cellInfo,formula,rule){return!0}async validatorIsNotBetween(cellInfo,formula,rule){return!0}async validatorIsGreaterThan(cellInfo,formula,rule){return!0}async validatorIsGreaterThanOrEqual(cellInfo,formula,rule){return!0}async validatorIsLessThan(cellInfo,formula,rule){return!0}async validatorIsLessThanOrEqual(cellInfo,formula,rule){return!0}async validator(cellInfo,rule){const{value:cellValue,unitId,subUnitId}=cellInfo,isEmpty=this.isEmptyCellValue(cellValue),{allowBlank=!0,operator}=rule;if(isEmpty)return allowBlank;const formulaInfo=await this.parseFormula(rule,unitId,subUnitId);if(!await this.isValidType(cellInfo,formulaInfo,rule))return!1;if(!core.Tools.isDefine(operator))return!0;const transformedCell=this.transform(cellInfo,formulaInfo,rule);switch(operator){case core.DataValidationOperator.BETWEEN:return this.validatorIsBetween(transformedCell,formulaInfo,rule);case core.DataValidationOperator.EQUAL:return this.validatorIsEqual(transformedCell,formulaInfo,rule);case core.DataValidationOperator.GREATER_THAN:return this.validatorIsGreaterThan(transformedCell,formulaInfo,rule);case core.DataValidationOperator.GREATER_THAN_OR_EQUAL:return this.validatorIsGreaterThanOrEqual(transformedCell,formulaInfo,rule);case core.DataValidationOperator.LESS_THAN:return this.validatorIsLessThan(transformedCell,formulaInfo,rule);case core.DataValidationOperator.LESS_THAN_OR_EQUAL:return this.validatorIsLessThanOrEqual(transformedCell,formulaInfo,rule);case core.DataValidationOperator.NOT_BETWEEN:return this.validatorIsNotBetween(transformedCell,formulaInfo,rule);case core.DataValidationOperator.NOT_EQUAL:return this.validatorIsNotEqual(transformedCell,formulaInfo,rule);default:throw new Error("Unknown operator.")}}},__name(_e,"BaseDataValidator"),_e),exports2.BaseDataValidator=__decorateClass([__decorateParam(0,core.Inject(core.LocaleService)),__decorateParam(1,core.Inject(core.Injector))],exports2.BaseDataValidator);const TWO_FORMULA_OPERATOR_COUNT=[core.DataValidationOperator.BETWEEN,core.DataValidationOperator.NOT_BETWEEN];exports2.AddDataValidationCommand=AddDataValidationCommand,exports2.AddDataValidationMutation=AddDataValidationMutation,exports2.DataValidationManager=DataValidationManager,exports2.DataValidatorRegistryScope=DataValidatorRegistryScope,exports2.DataValidatorRegistryService=DataValidatorRegistryService,exports2.RemoveAllDataValidationCommand=RemoveAllDataValidationCommand,exports2.RemoveDataValidationCommand=RemoveDataValidationCommand,exports2.RemoveDataValidationMutation=RemoveDataValidationMutation,exports2.TWO_FORMULA_OPERATOR_COUNT=TWO_FORMULA_OPERATOR_COUNT,exports2.TextLengthErrorTitleMap=TextLengthErrorTitleMap,exports2.UpdateDataValidationMutation=UpdateDataValidationMutation,exports2.UpdateDataValidationOptionsCommand=UpdateDataValidationOptionsCommand,exports2.UpdateDataValidationSettingCommand=UpdateDataValidationSettingCommand,exports2.UpdateRuleType=UpdateRuleType,exports2.createDefaultNewRule=createDefaultNewRule,exports2.getRuleOptions=getRuleOptions,exports2.getRuleSetting=getRuleSetting,exports2.removeDataValidationUndoFactory=removeDataValidationUndoFactory,Object.defineProperty(exports2,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/data-validation",
3
- "version": "0.2.11",
3
+ "version": "0.2.12",
4
4
  "private": false,
5
5
  "description": "Data validation library for Univer",
6
6
  "author": "DreamNum <developer@univer.ai>",
@@ -50,8 +50,8 @@
50
50
  ],
51
51
  "peerDependencies": {
52
52
  "rxjs": ">=7.0.0",
53
- "@univerjs/core": "0.2.11",
54
- "@univerjs/sheets": "0.2.11"
53
+ "@univerjs/sheets": "0.2.12",
54
+ "@univerjs/core": "0.2.12"
55
55
  },
56
56
  "dependencies": {
57
57
  "@univerjs/protocol": "0.1.39-alpha.15"
@@ -61,9 +61,9 @@
61
61
  "typescript": "^5.5.4",
62
62
  "vite": "^5.4.2",
63
63
  "vitest": "^2.0.5",
64
- "@univerjs/core": "0.2.11",
65
- "@univerjs/shared": "0.2.11",
66
- "@univerjs/sheets": "0.2.11"
64
+ "@univerjs/core": "0.2.12",
65
+ "@univerjs/shared": "0.2.12",
66
+ "@univerjs/sheets": "0.2.12"
67
67
  },
68
68
  "univerSpace": {
69
69
  ".": {