@univerjs/sheets-data-validation 0.17.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/facade.js +1 -1
- package/lib/cjs/index.js +1 -1
- package/lib/es/facade.js +1 -1628
- package/lib/es/index.js +1 -2640
- package/lib/facade.js +1 -1628
- package/lib/index.js +1 -2640
- package/lib/types/commands/commands/data-validation.command.d.ts +19 -4
- package/lib/types/common/date-text-map.d.ts +15 -0
- package/lib/types/controllers/dv-formula-ref-range.controller.d.ts +17 -1
- package/lib/types/controllers/dv-formula.controller.d.ts +15 -0
- package/lib/types/controllers/dv-ref-range.controller.d.ts +17 -1
- package/lib/types/controllers/dv-sheet.controller.d.ts +15 -0
- package/lib/types/controllers/dv.controller.d.ts +15 -0
- package/lib/types/facade/f-data-validation-builder.d.ts +18 -2
- package/lib/types/facade/f-data-validation.d.ts +16 -1
- package/lib/types/facade/f-event.d.ts +20 -5
- package/lib/types/facade/f-range.d.ts +18 -2
- package/lib/types/facade/f-univer.d.ts +16 -1
- package/lib/types/facade/f-workbook.d.ts +20 -3
- package/lib/types/facade/f-worksheet.d.ts +18 -2
- package/lib/types/models/rule-matrix.d.ts +17 -2
- package/lib/types/models/sheet-data-validation-model.d.ts +24 -7
- package/lib/types/plugin.d.ts +16 -1
- package/lib/types/services/dv-cache.service.d.ts +18 -2
- package/lib/types/services/dv-custom-formula.service.d.ts +21 -5
- package/lib/types/services/dv-formula.service.d.ts +19 -2
- package/lib/types/services/dv-list-cache.service.d.ts +18 -2
- package/lib/types/services/dv-validator-service.d.ts +17 -1
- package/lib/types/types/const/operator-text-map.d.ts +15 -0
- package/lib/types/types/const/two-formula-operators.d.ts +15 -0
- package/lib/types/utils/create.d.ts +18 -2
- package/lib/types/utils/formula.d.ts +18 -3
- package/lib/types/utils/get-cell-data-origin.d.ts +17 -2
- package/lib/types/validators/any-validator.d.ts +18 -2
- package/lib/types/validators/checkbox-validator.d.ts +19 -2
- package/lib/types/validators/custom-validator.d.ts +18 -2
- package/lib/types/validators/date-validator.d.ts +20 -3
- package/lib/types/validators/decimal-validator.d.ts +23 -6
- package/lib/types/validators/list-multiple-validator.d.ts +15 -0
- package/lib/types/validators/list-validator.d.ts +18 -2
- package/lib/types/validators/text-length-validator.d.ts +23 -6
- package/lib/types/validators/util.d.ts +18 -3
- package/lib/types/validators/whole-validator.d.ts +23 -6
- package/lib/umd/facade.js +1 -1
- package/lib/umd/index.js +1 -1
- package/package.json +11 -10
package/lib/cjs/facade.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var C=Object.defineProperty;var b=(V,t,e)=>t in V?C(V,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):V[t]=e;var v=(V,t,e)=>b(V,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("@univerjs/core"),s=require("@univerjs/sheets-data-validation"),f=require("@univerjs/sheets/facade"),I=require("@univerjs/data-validation"),T=require("@univerjs/engine-formula"),k=require("@univerjs/core/facade"),y=require("rxjs");class S{constructor(t){v(this,"_rule");this._rule=t!=null?t:{uid:r.generateRandomId(),ranges:void 0,type:r.DataValidationType.CUSTOM}}build(){return new _(this._rule)}copy(){return new S({...this._rule,uid:r.generateRandomId()})}getAllowInvalid(){return this._rule.errorStyle!==r.DataValidationErrorStyle.STOP}getCriteriaType(){return this._rule.type}getCriteriaValues(){return[this._rule.operator,this._rule.formula1,this._rule.formula2]}getHelpText(){return this._rule.error}requireCheckbox(t,e){return this._rule.type=r.DataValidationType.CHECKBOX,this._rule.formula1=t,this._rule.formula2=e,this}requireDateAfter(t){return this._rule.type=r.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.operator=r.DataValidationOperator.GREATER_THAN,this}requireDateBefore(t){return this._rule.type=r.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.formula2=void 0,this._rule.operator=r.DataValidationOperator.LESS_THAN,this}requireDateBetween(t,e){return this._rule.type=r.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.formula2=e.toLocaleDateString(),this._rule.operator=r.DataValidationOperator.BETWEEN,this}requireDateEqualTo(t){return this._rule.type=r.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.formula2=void 0,this._rule.operator=r.DataValidationOperator.EQUAL,this}requireDateNotBetween(t,e){return this._rule.type=r.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.formula2=e.toLocaleDateString(),this._rule.operator=r.DataValidationOperator.NOT_BETWEEN,this}requireDateOnOrAfter(t){return this._rule.type=r.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.formula2=void 0,this._rule.operator=r.DataValidationOperator.GREATER_THAN_OR_EQUAL,this}requireDateOnOrBefore(t){return this._rule.type=r.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.formula2=void 0,this._rule.operator=r.DataValidationOperator.LESS_THAN_OR_EQUAL,this}requireFormulaSatisfied(t){return this._rule.type=r.DataValidationType.CUSTOM,this._rule.formula1=t,this._rule.formula2=void 0,this}requireNumberBetween(t,e,i){return this._rule.formula1=`${t}`,this._rule.formula2=`${e}`,this._rule.operator=r.DataValidationOperator.BETWEEN,this._rule.type=i?r.DataValidationType.WHOLE:r.DataValidationType.DECIMAL,this}requireNumberEqualTo(t,e){return this._rule.formula1=`${t}`,this._rule.formula2=void 0,this._rule.operator=r.DataValidationOperator.EQUAL,this._rule.type=e?r.DataValidationType.WHOLE:r.DataValidationType.DECIMAL,this}requireNumberGreaterThan(t,e){return this._rule.formula1=`${t}`,this._rule.formula2=void 0,this._rule.operator=r.DataValidationOperator.GREATER_THAN,this._rule.type=e?r.DataValidationType.WHOLE:r.DataValidationType.DECIMAL,this}requireNumberGreaterThanOrEqualTo(t,e){return this._rule.formula1=`${t}`,this._rule.formula2=void 0,this._rule.operator=r.DataValidationOperator.GREATER_THAN_OR_EQUAL,this._rule.type=e?r.DataValidationType.WHOLE:r.DataValidationType.DECIMAL,this}requireNumberLessThan(t,e){return this._rule.formula1=`${t}`,this._rule.formula2=void 0,this._rule.operator=r.DataValidationOperator.LESS_THAN,this._rule.type=e?r.DataValidationType.WHOLE:r.DataValidationType.DECIMAL,this}requireNumberLessThanOrEqualTo(t,e){return this._rule.formula1=`${t}`,this._rule.formula2=void 0,this._rule.operator=r.DataValidationOperator.LESS_THAN_OR_EQUAL,this._rule.type=e?r.DataValidationType.WHOLE:r.DataValidationType.DECIMAL,this}requireNumberNotBetween(t,e,i){return this._rule.formula1=`${t}`,this._rule.formula2=`${e}`,this._rule.operator=r.DataValidationOperator.NOT_BETWEEN,this._rule.type=i?r.DataValidationType.WHOLE:r.DataValidationType.DECIMAL,this}requireNumberNotEqualTo(t,e){return this._rule.formula1=`${t}`,this._rule.formula2=void 0,this._rule.operator=r.DataValidationOperator.NOT_EQUAL,this._rule.type=e?r.DataValidationType.WHOLE:r.DataValidationType.DECIMAL,this}requireValueInList(t,e,i){return this._rule.type=e?r.DataValidationType.LIST_MULTIPLE:r.DataValidationType.LIST,this._rule.formula1=t.join(","),this._rule.formula2=void 0,this._rule.showDropDown=i!=null?i:!0,this}requireValueInRange(t,e,i){return this._rule.type=e?r.DataValidationType.LIST_MULTIPLE:r.DataValidationType.LIST,this._rule.formula1=`=${T.serializeRangeToRefString({unitId:t.getUnitId(),sheetName:t.getSheetName(),range:t.getRange()})}`,this._rule.formula2=void 0,this._rule.showDropDown=i!=null?i:!0,this}setAllowInvalid(t){return this._rule.errorStyle=t?r.DataValidationErrorStyle.WARNING:r.DataValidationErrorStyle.STOP,this}setAllowBlank(t){return this._rule.allowBlank=t,this}setOptions(t){return Object.assign(this._rule,t),this}}class _{constructor(t,e,i){v(this,"rule");v(this,"_worksheet");v(this,"_injector");this._injector=i,this.rule=t,this._worksheet=e}getAllowInvalid(){return this.rule.errorStyle!==r.DataValidationErrorStyle.STOP}getCriteriaType(){return this.rule.type}getCriteriaValues(){return[this.rule.operator,this.rule.formula1,this.rule.formula2]}getHelpText(){return this.rule.error}copy(){return new S(this.rule)}getApplied(){if(!this._worksheet)return!1;const e=this._injector.get(I.DataValidationModel).getRuleById(this._worksheet.getUnitId(),this._worksheet.getSheetId(),this.rule.uid);return!!(e&&e.ranges.length)}getRanges(){if(!this.getApplied())return[];const t=this._injector.get(r.IUniverInstanceService).getUnit(this._worksheet.getUnitId());return this.rule.ranges.map(e=>this._injector.createInstance(f.FRange,t,this._worksheet,e))}getUnitId(){var t;return(t=this._worksheet)==null?void 0:t.getUnitId()}getSheetId(){var t;return(t=this._worksheet)==null?void 0:t.getSheetId()}setCriteria(t,e,i=!0){if(this.getApplied()&&!this._injector.get(r.ICommandService).syncExecuteCommand(s.UpdateSheetDataValidationSettingCommand.id,{unitId:this.getUnitId(),subUnitId:this.getSheetId(),ruleId:this.rule.uid,setting:{operator:e[0],formula1:e[1],formula2:e[2],type:this.rule.type,allowBlank:i}}))throw new Error("setCriteria failed");return this.rule.operator=e[0],this.rule.formula1=e[1],this.rule.formula2=e[2],this.rule.type=t,this.rule.allowBlank=i,this}setOptions(t){if(this.getApplied()&&!this._injector.get(r.ICommandService).syncExecuteCommand(s.UpdateSheetDataValidationOptionsCommand.id,{unitId:this.getUnitId(),subUnitId:this.getSheetId(),ruleId:this.rule.uid,options:{...I.getRuleOptions(this.rule),...t}}))throw new Error("setOptions failed");return Object.assign(this.rule,t),this}setRanges(t){if(this.getApplied()&&!this._injector.get(r.ICommandService).syncExecuteCommand(s.UpdateSheetDataValidationRangeCommand.id,{unitId:this.getUnitId(),subUnitId:this.getSheetId(),ruleId:this.rule.uid,ranges:t.map(a=>a.getRange())}))throw new Error("setRanges failed");return this.rule.ranges=t.map(e=>e.getRange()),this}delete(){return this.getApplied()?this._injector.get(r.ICommandService).syncExecuteCommand(s.RemoveSheetDataValidationCommand.id,{unitId:this.getUnitId(),subUnitId:this.getSheetId(),ruleId:this.rule.uid}):!1}}class U extends f.FRange{setDataValidation(t){if(!t)return this._commandService.syncExecuteCommand(s.ClearRangeDataValidationCommand.id,{unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),ranges:[this._range]}),this;const e={unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),rule:{...t.rule,ranges:[this._range]}};return this._commandService.syncExecuteCommand(s.AddSheetDataValidationCommand.id,e),this}getDataValidation(){const e=this._injector.get(s.SheetsDataValidationValidatorService).getDataValidation(this._workbook.getUnitId(),this._worksheet.getSheetId(),[this._range]);return e&&new _(e,this._worksheet,this._injector)}getDataValidations(){return this._injector.get(s.SheetsDataValidationValidatorService).getDataValidations(this._workbook.getUnitId(),this._worksheet.getSheetId(),[this._range]).map(e=>new _(e,this._worksheet,this._injector))}async getValidatorStatus(){return this._injector.get(s.SheetsDataValidationValidatorService).validatorRanges(this._workbook.getUnitId(),this._worksheet.getSheetId(),[this._range])}async getDataValidationErrorAsync(){const t=this._workbook.getUnitId(),e=this._worksheet.getSheetId();return this._collectValidationErrorsForRange(t,e,[this._range])}async _collectValidationErrorsForRange(t,e,i){if(!i.length)return[];const a=this._injector.get(s.SheetsDataValidationValidatorService),o=this._worksheet,u=o.getName(),l=[];for(const n of i){const h=[];for(let c=n.startRow;c<=n.endRow;c++)for(let d=n.startColumn;d<=n.endColumn;d++)h.push((async()=>{var g;try{if(await a.validatorCell(t,e,c,d)!==r.DataValidationStatus.VALID){const p=this._injector.get(s.SheetDataValidationModel).getRuleByLocation(t,e,c,d);if(p){const E=((g=o.getCell(c,d))==null?void 0:g.v)||null,w=this._createDataValidationError(u,c,d,p,E);l.push(w)}}}catch(m){console.warn(`Failed to validate cell [${c}, ${d}]:`,m)}})());await Promise.all(h)}return l}_createDataValidationError(t,e,i,a,o){return{sheetName:t,row:e,column:i,ruleId:a.uid,inputValue:o,rule:a}}}f.FRange.extend(U);class A extends k.FUniver{static newDataValidation(){return new S}newDataValidation(){return new S}_initialize(t){const e=t.get(r.ICommandService);this.disposeWithMe(this.registerEventHandler(this.Event.SheetDataValidationChanged,()=>t.has(s.SheetDataValidationModel)?t.get(s.SheetDataValidationModel).ruleChange$.subscribe(a=>{const{unitId:o,subUnitId:u,rule:l,oldRule:n,type:h}=a,c=this.getSheetTarget(o,u);if(!c)return;const{workbook:d,worksheet:g}=c,m=new _(l,g.getSheet(),this._injector);this.fireEvent(this.Event.SheetDataValidationChanged,{origin:a,worksheet:g,workbook:d,changeType:h,oldRule:n,rule:m})}):{dispose:()=>{}})),this.disposeWithMe(this.registerEventHandler(this.Event.SheetDataValidatorStatusChanged,()=>t.has(s.SheetDataValidationModel)?t.get(s.SheetDataValidationModel).validStatusChange$.subscribe(a=>{const{unitId:o,subUnitId:u,ruleId:l,status:n,row:h,col:c}=a,d=this.getSheetTarget(o,u);if(!d)return;const{workbook:g,worksheet:m}=d,D=m.getDataValidation(l);D&&this.fireEvent(this.Event.SheetDataValidatorStatusChanged,{workbook:g,worksheet:m,row:h,column:c,rule:D,status:n})}):{dispose:()=>{}})),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeSheetDataValidationAdd,()=>e.beforeCommandExecuted(i=>{if(i.id===s.AddSheetDataValidationCommand.id){const a=i.params,o=this.getSheetTarget(a.unitId,a.subUnitId);if(!o)return;const{workbook:u,worksheet:l}=o,n={worksheet:l,workbook:u,rule:a.rule};if(this.fireEvent(this.Event.BeforeSheetDataValidationAdd,n),n.cancel)throw new r.CanceledError}}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeSheetDataValidationCriteriaUpdate,()=>e.beforeCommandExecuted(i=>{if(i.id===s.UpdateSheetDataValidationSettingCommand.id){const a=i.params,o=this.getSheetTarget(a.unitId,a.subUnitId);if(!o)return;const{workbook:u,worksheet:l}=o,n=l.getDataValidation(a.ruleId);if(!n)return;const h={worksheet:l,workbook:u,rule:n,ruleId:a.ruleId,newCriteria:a.setting};if(this.fireEvent(this.Event.BeforeSheetDataValidationCriteriaUpdate,h),h.cancel)throw new r.CanceledError}}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeSheetDataValidationRangeUpdate,()=>e.beforeCommandExecuted(i=>{if(i.id===s.UpdateSheetDataValidationRangeCommand.id){const a=i.params,o=this.getSheetTarget(a.unitId,a.subUnitId);if(!o)return;const{workbook:u,worksheet:l}=o,n=l.getDataValidation(a.ruleId);if(!n)return;const h={worksheet:l,workbook:u,rule:n,ruleId:a.ruleId,newRanges:a.ranges};if(this.fireEvent(this.Event.BeforeSheetDataValidationRangeUpdate,h),h.cancel)throw new r.CanceledError}}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeSheetDataValidationOptionsUpdate,()=>e.beforeCommandExecuted(i=>{if(i.id===s.UpdateSheetDataValidationOptionsCommand.id){const a=i.params,o=this.getSheetTarget(a.unitId,a.subUnitId);if(!o)return;const{workbook:u,worksheet:l}=o,n=l.getDataValidation(a.ruleId);if(!n)return;const h={worksheet:l,workbook:u,rule:n,ruleId:a.ruleId,newOptions:a.options};if(this.fireEvent(this.Event.BeforeSheetDataValidationOptionsUpdate,h),h.cancel)throw new r.CanceledError}}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeSheetDataValidationDelete,()=>e.beforeCommandExecuted(i=>{if(i.id===s.RemoveSheetDataValidationCommand.id){const a=i.params,o=this.getSheetTarget(a.unitId,a.subUnitId);if(!o)return;const{workbook:u,worksheet:l}=o,n=l.getDataValidation(a.ruleId);if(!n)return;const h={worksheet:l,workbook:u,rule:n,ruleId:a.ruleId};if(this.fireEvent(this.Event.BeforeSheetDataValidationDelete,h),h.cancel)throw new r.CanceledError}}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeSheetDataValidationDeleteAll,()=>e.beforeCommandExecuted(i=>{if(i.id===s.RemoveSheetAllDataValidationCommand.id){const a=i.params,o=this.getSheetTarget(a.unitId,a.subUnitId);if(!o)return;const{workbook:u,worksheet:l}=o,n={worksheet:l,workbook:u,rules:l.getDataValidations()};if(this.fireEvent(this.Event.BeforeSheetDataValidationDeleteAll,n),n.cancel)throw new r.CanceledError}})))}}k.FUniver.extend(A);class R extends f.FWorkbook{_initialize(){Object.defineProperty(this,"_dataValidationModel",{get(){return this._injector.get(s.SheetDataValidationModel)}})}getValidatorStatus(){return this._injector.get(s.SheetsDataValidationValidatorService).validatorWorkbook(this._workbook.getUnitId())}async getAllDataValidationErrorAsync(){const t=this._workbook.getUnitId(),e=this._dataValidationModel.getSubUnitIds(t),i=[];for(const a of e){const o=await this._collectValidationErrorsForSheet(t,a);i.push(...o)}return i}async _collectValidationErrorsForSheet(t,e){const i=this._dataValidationModel.getRules(t,e);if(!i.length)return[];const a=i.flatMap(o=>o.ranges);return this._collectValidationErrorsForRange(t,e,a)}async _collectValidationErrorsForRange(t,e,i){if(!i.length)return[];const a=this._injector.get(s.SheetsDataValidationValidatorService),u=this._workbook.getSheetBySheetId(e);if(!u)throw new Error(`Cannot find worksheet with sheetId: ${e}`);const l=u.getName(),n=[];for(const h of i){const c=[];for(let d=h.startRow;d<=h.endRow;d++)for(let g=h.startColumn;g<=h.endColumn;g++)c.push((async()=>{var m;try{if(await a.validatorCell(t,e,d,g)!==r.DataValidationStatus.VALID){const p=this._dataValidationModel.getRuleByLocation(t,e,d,g);if(p){const E=((m=u.getCell(d,g))==null?void 0:m.v)||null,w=this._createDataValidationError(l,d,g,p,E);n.push(w)}}}catch(D){console.warn(`Failed to validate cell [${d}, ${g}]:`,D)}})());await Promise.all(c)}return n}_createDataValidationError(t,e,i,a,o){return{sheetName:t,row:e,column:i,ruleId:a.uid,inputValue:o,rule:a}}onDataValidationChange(t){return r.toDisposable(this._dataValidationModel.ruleChange$.pipe(y.filter(e=>e.unitId===this._workbook.getUnitId())).subscribe(t))}onDataValidationStatusChange(t){return r.toDisposable(this._dataValidationModel.validStatusChange$.pipe(y.filter(e=>e.unitId===this._workbook.getUnitId())).subscribe(t))}onBeforeAddDataValidation(t){return r.toDisposable(this._commandService.beforeCommandExecuted((e,i)=>{const a=e.params;if(e.id===s.AddSheetDataValidationCommand.id){if(a.unitId!==this._workbook.getUnitId())return;if(t(a,i)===!1)throw new Error("Command is stopped by the hook onBeforeAddDataValidation")}}))}onBeforeUpdateDataValidationCriteria(t){return r.toDisposable(this._commandService.beforeCommandExecuted((e,i)=>{const a=e.params;if(e.id===s.UpdateSheetDataValidationSettingCommand.id){if(a.unitId!==this._workbook.getUnitId())return;if(t(a,i)===!1)throw new Error("Command is stopped by the hook onBeforeUpdateDataValidationCriteria")}}))}onBeforeUpdateDataValidationRange(t){return r.toDisposable(this._commandService.beforeCommandExecuted((e,i)=>{const a=e.params;if(e.id===s.UpdateSheetDataValidationRangeCommand.id){if(a.unitId!==this._workbook.getUnitId())return;if(t(a,i)===!1)throw new Error("Command is stopped by the hook onBeforeUpdateDataValidationRange")}}))}onBeforeUpdateDataValidationOptions(t){return r.toDisposable(this._commandService.beforeCommandExecuted((e,i)=>{const a=e.params;if(e.id===s.UpdateSheetDataValidationOptionsCommand.id){if(a.unitId!==this._workbook.getUnitId())return;if(t(a,i)===!1)throw new Error("Command is stopped by the hook onBeforeUpdateDataValidationOptions")}}))}onBeforeDeleteDataValidation(t){return r.toDisposable(this._commandService.beforeCommandExecuted((e,i)=>{const a=e.params;if(e.id===s.RemoveSheetDataValidationCommand.id){if(a.unitId!==this._workbook.getUnitId())return;if(t(a,i)===!1)throw new Error("Command is stopped by the hook onBeforeDeleteDataValidation")}}))}onBeforeDeleteAllDataValidation(t){return r.toDisposable(this._commandService.beforeCommandExecuted((e,i)=>{const a=e.params;if(e.id===s.RemoveSheetAllDataValidationCommand.id){if(a.unitId!==this._workbook.getUnitId())return;if(t(a,i)===!1)throw new Error("Command is stopped by the hook onBeforeDeleteAllDataValidation")}}))}}f.FWorkbook.extend(R);class M extends f.FWorksheet{getDataValidations(){return this._injector.get(I.DataValidationModel).getRules(this._workbook.getUnitId(),this._worksheet.getSheetId()).map(e=>new _(e,this._worksheet,this._injector))}getValidatorStatus(){return this._injector.get(s.SheetsDataValidationValidatorService).validatorWorksheet(this._workbook.getUnitId(),this._worksheet.getSheetId())}getValidatorStatusAsync(){return this.getValidatorStatus()}getDataValidation(t){const i=this._injector.get(I.DataValidationModel).getRuleById(this._workbook.getUnitId(),this._worksheet.getSheetId(),t);return i?new _(i,this._worksheet,this._injector):null}async getAllDataValidationErrorAsync(){const t=this._workbook.getUnitId(),e=this._worksheet.getSheetId();return this._collectValidationErrorsForSheet(t,e)}async _collectValidationErrorsForSheet(t,e){const a=this._injector.get(I.DataValidationModel).getRules(t,e);if(!a.length)return[];const o=a.flatMap(u=>u.ranges);return this._collectValidationErrorsForRange(t,e,o)}async _collectValidationErrorsForRange(t,e,i){if(!i.length)return[];const a=this._injector.get(s.SheetsDataValidationValidatorService),o=this._worksheet,u=o.getName(),l=[];for(const n of i){const h=[];for(let c=n.startRow;c<=n.endRow;c++)for(let d=n.startColumn;d<=n.endColumn;d++)h.push((async()=>{var g;try{if(await a.validatorCell(t,e,c,d)!==r.DataValidationStatus.VALID){const p=this._injector.get(s.SheetDataValidationModel).getRuleByLocation(t,e,c,d);if(p){const E=((g=o.getCell(c,d))==null?void 0:g.v)||null,w=this._createDataValidationError(u,c,d,p,E);l.push(w)}}}catch(m){console.warn(`Failed to validate cell [${c}, ${d}]:`,m)}})());await Promise.all(h)}return l}_createDataValidationError(t,e,i,a,o){return{sheetName:t,row:e,column:i,ruleId:a.uid,inputValue:o,rule:a}}}f.FWorksheet.extend(M);class O{get SheetDataValidationChanged(){return"SheetDataValidationChanged"}get SheetDataValidatorStatusChanged(){return"SheetDataValidatorStatusChanged"}get BeforeSheetDataValidationAdd(){return"BeforeSheetDataValidationAdd"}get BeforeSheetDataValidationDelete(){return"BeforeSheetDataValidationDelete"}get BeforeSheetDataValidationDeleteAll(){return"BeforeSheetDataValidationDeleteAll"}get BeforeSheetDataValidationCriteriaUpdate(){return"BeforeSheetDataValidationCriteriaUpdate"}get BeforeSheetDataValidationRangeUpdate(){return"BeforeSheetDataValidationRangeUpdate"}get BeforeSheetDataValidationOptionsUpdate(){return"BeforeSheetDataValidationOptionsUpdate"}}k.FEventName.extend(O);exports.FDataValidation=_;exports.FDataValidationBuilder=S;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@univerjs/core`),t=require(`@univerjs/sheets-data-validation`),n=require(`@univerjs/sheets/facade`),r=require(`@univerjs/data-validation`),i=require(`@univerjs/engine-formula`),a=require(`@univerjs/core/facade`),o=require(`rxjs`);function s(e){"@babel/helpers - typeof";return s=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},s(e)}function c(e,t){if(s(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(s(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function l(e){var t=c(e,`string`);return s(t)==`symbol`?t:t+``}function u(e,t,n){return(t=l(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d=class t{constructor(t){u(this,`_rule`,void 0),this._rule=t==null?{uid:(0,e.generateRandomId)(),ranges:void 0,type:e.DataValidationType.CUSTOM}:t}build(){return new f(this._rule)}copy(){return new t({...this._rule,uid:(0,e.generateRandomId)()})}getAllowInvalid(){return this._rule.errorStyle!==e.DataValidationErrorStyle.STOP}getCriteriaType(){return this._rule.type}getCriteriaValues(){return[this._rule.operator,this._rule.formula1,this._rule.formula2]}getHelpText(){return this._rule.error}requireCheckbox(t,n){return this._rule.type=e.DataValidationType.CHECKBOX,this._rule.formula1=t,this._rule.formula2=n,this}requireDateAfter(t){return this._rule.type=e.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.operator=e.DataValidationOperator.GREATER_THAN,this}requireDateBefore(t){return this._rule.type=e.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.formula2=void 0,this._rule.operator=e.DataValidationOperator.LESS_THAN,this}requireDateBetween(t,n){return this._rule.type=e.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.formula2=n.toLocaleDateString(),this._rule.operator=e.DataValidationOperator.BETWEEN,this}requireDateEqualTo(t){return this._rule.type=e.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.formula2=void 0,this._rule.operator=e.DataValidationOperator.EQUAL,this}requireDateNotBetween(t,n){return this._rule.type=e.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.formula2=n.toLocaleDateString(),this._rule.operator=e.DataValidationOperator.NOT_BETWEEN,this}requireDateOnOrAfter(t){return this._rule.type=e.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.formula2=void 0,this._rule.operator=e.DataValidationOperator.GREATER_THAN_OR_EQUAL,this}requireDateOnOrBefore(t){return this._rule.type=e.DataValidationType.DATE,this._rule.formula1=t.toLocaleDateString(),this._rule.formula2=void 0,this._rule.operator=e.DataValidationOperator.LESS_THAN_OR_EQUAL,this}requireFormulaSatisfied(t){return this._rule.type=e.DataValidationType.CUSTOM,this._rule.formula1=t,this._rule.formula2=void 0,this}requireNumberBetween(t,n,r){return this._rule.formula1=`${t}`,this._rule.formula2=`${n}`,this._rule.operator=e.DataValidationOperator.BETWEEN,this._rule.type=r?e.DataValidationType.WHOLE:e.DataValidationType.DECIMAL,this}requireNumberEqualTo(t,n){return this._rule.formula1=`${t}`,this._rule.formula2=void 0,this._rule.operator=e.DataValidationOperator.EQUAL,this._rule.type=n?e.DataValidationType.WHOLE:e.DataValidationType.DECIMAL,this}requireNumberGreaterThan(t,n){return this._rule.formula1=`${t}`,this._rule.formula2=void 0,this._rule.operator=e.DataValidationOperator.GREATER_THAN,this._rule.type=n?e.DataValidationType.WHOLE:e.DataValidationType.DECIMAL,this}requireNumberGreaterThanOrEqualTo(t,n){return this._rule.formula1=`${t}`,this._rule.formula2=void 0,this._rule.operator=e.DataValidationOperator.GREATER_THAN_OR_EQUAL,this._rule.type=n?e.DataValidationType.WHOLE:e.DataValidationType.DECIMAL,this}requireNumberLessThan(t,n){return this._rule.formula1=`${t}`,this._rule.formula2=void 0,this._rule.operator=e.DataValidationOperator.LESS_THAN,this._rule.type=n?e.DataValidationType.WHOLE:e.DataValidationType.DECIMAL,this}requireNumberLessThanOrEqualTo(t,n){return this._rule.formula1=`${t}`,this._rule.formula2=void 0,this._rule.operator=e.DataValidationOperator.LESS_THAN_OR_EQUAL,this._rule.type=n?e.DataValidationType.WHOLE:e.DataValidationType.DECIMAL,this}requireNumberNotBetween(t,n,r){return this._rule.formula1=`${t}`,this._rule.formula2=`${n}`,this._rule.operator=e.DataValidationOperator.NOT_BETWEEN,this._rule.type=r?e.DataValidationType.WHOLE:e.DataValidationType.DECIMAL,this}requireNumberNotEqualTo(t,n){return this._rule.formula1=`${t}`,this._rule.formula2=void 0,this._rule.operator=e.DataValidationOperator.NOT_EQUAL,this._rule.type=n?e.DataValidationType.WHOLE:e.DataValidationType.DECIMAL,this}requireValueInList(t,n,r){return this._rule.type=n?e.DataValidationType.LIST_MULTIPLE:e.DataValidationType.LIST,this._rule.formula1=t.join(`,`),this._rule.formula2=void 0,this._rule.showDropDown=r==null?!0:r,this}requireValueInRange(t,n,r){return this._rule.type=n?e.DataValidationType.LIST_MULTIPLE:e.DataValidationType.LIST,this._rule.formula1=`=${(0,i.serializeRangeToRefString)({unitId:t.getUnitId(),sheetName:t.getSheetName(),range:t.getRange()})}`,this._rule.formula2=void 0,this._rule.showDropDown=r==null?!0:r,this}setAllowInvalid(t){return this._rule.errorStyle=t?e.DataValidationErrorStyle.WARNING:e.DataValidationErrorStyle.STOP,this}setAllowBlank(e){return this._rule.allowBlank=e,this}setOptions(e){return Object.assign(this._rule,e),this}},f=class{constructor(e,t,n){u(this,`rule`,void 0),u(this,`_worksheet`,void 0),u(this,`_injector`,void 0),this._injector=n,this.rule=e,this._worksheet=t}getAllowInvalid(){return this.rule.errorStyle!==e.DataValidationErrorStyle.STOP}getCriteriaType(){return this.rule.type}getCriteriaValues(){return[this.rule.operator,this.rule.formula1,this.rule.formula2]}getHelpText(){return this.rule.error}copy(){return new d(this.rule)}getApplied(){if(!this._worksheet)return!1;let e=this._injector.get(r.DataValidationModel).getRuleById(this._worksheet.getUnitId(),this._worksheet.getSheetId(),this.rule.uid);return!!(e&&e.ranges.length)}getRanges(){if(!this.getApplied())return[];let t=this._injector.get(e.IUniverInstanceService).getUnit(this._worksheet.getUnitId());return this.rule.ranges.map(e=>this._injector.createInstance(n.FRange,t,this._worksheet,e))}getUnitId(){var e;return(e=this._worksheet)==null?void 0:e.getUnitId()}getSheetId(){var e;return(e=this._worksheet)==null?void 0:e.getSheetId()}setCriteria(n,r,i=!0){if(this.getApplied()&&!this._injector.get(e.ICommandService).syncExecuteCommand(t.UpdateSheetDataValidationSettingCommand.id,{unitId:this.getUnitId(),subUnitId:this.getSheetId(),ruleId:this.rule.uid,setting:{operator:r[0],formula1:r[1],formula2:r[2],type:this.rule.type,allowBlank:i}}))throw Error(`setCriteria failed`);return this.rule.operator=r[0],this.rule.formula1=r[1],this.rule.formula2=r[2],this.rule.type=n,this.rule.allowBlank=i,this}setOptions(n){if(this.getApplied()&&!this._injector.get(e.ICommandService).syncExecuteCommand(t.UpdateSheetDataValidationOptionsCommand.id,{unitId:this.getUnitId(),subUnitId:this.getSheetId(),ruleId:this.rule.uid,options:{...(0,r.getRuleOptions)(this.rule),...n}}))throw Error(`setOptions failed`);return Object.assign(this.rule,n),this}setRanges(n){if(this.getApplied()&&!this._injector.get(e.ICommandService).syncExecuteCommand(t.UpdateSheetDataValidationRangeCommand.id,{unitId:this.getUnitId(),subUnitId:this.getSheetId(),ruleId:this.rule.uid,ranges:n.map(e=>e.getRange())}))throw Error(`setRanges failed`);return this.rule.ranges=n.map(e=>e.getRange()),this}delete(){return this.getApplied()?this._injector.get(e.ICommandService).syncExecuteCommand(t.RemoveSheetDataValidationCommand.id,{unitId:this.getUnitId(),subUnitId:this.getSheetId(),ruleId:this.rule.uid}):!1}},p=class extends n.FRange{setDataValidation(e){if(!e)return this._commandService.syncExecuteCommand(t.ClearRangeDataValidationCommand.id,{unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),ranges:[this._range]}),this;let n={unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),rule:{...e.rule,ranges:[this._range]}};return this._commandService.syncExecuteCommand(t.AddSheetDataValidationCommand.id,n),this}getDataValidation(){let e=this._injector.get(t.SheetsDataValidationValidatorService).getDataValidation(this._workbook.getUnitId(),this._worksheet.getSheetId(),[this._range]);return e&&new f(e,this._worksheet,this._injector)}getDataValidations(){return this._injector.get(t.SheetsDataValidationValidatorService).getDataValidations(this._workbook.getUnitId(),this._worksheet.getSheetId(),[this._range]).map(e=>new f(e,this._worksheet,this._injector))}async getValidatorStatus(){return this._injector.get(t.SheetsDataValidationValidatorService).validatorRanges(this._workbook.getUnitId(),this._worksheet.getSheetId(),[this._range])}async getDataValidationErrorAsync(){let e=this._workbook.getUnitId(),t=this._worksheet.getSheetId();return this._collectValidationErrorsForRange(e,t,[this._range])}async _collectValidationErrorsForRange(n,r,i){if(!i.length)return[];let a=this._injector.get(t.SheetsDataValidationValidatorService),o=this._worksheet,s=o.getName(),c=[];for(let l of i){let i=[];for(let u=l.startRow;u<=l.endRow;u++)for(let d=l.startColumn;d<=l.endColumn;d++)i.push((async()=>{try{if(await a.validatorCell(n,r,u,d)!==e.DataValidationStatus.VALID){let e=this._injector.get(t.SheetDataValidationModel).getRuleByLocation(n,r,u,d);if(e){var i;let t=((i=o.getCell(u,d))==null?void 0:i.v)||null,n=this._createDataValidationError(s,u,d,e,t);c.push(n)}}}catch(e){console.warn(`Failed to validate cell [${u}, ${d}]:`,e)}})());await Promise.all(i)}return c}_createDataValidationError(e,t,n,r,i){return{sheetName:e,row:t,column:n,ruleId:r.uid,inputValue:i,rule:r}}};n.FRange.extend(p);var m=class extends a.FUniver{static newDataValidation(){return new d}newDataValidation(){return new d}_initialize(n){let r=n.get(e.ICommandService);this.disposeWithMe(this.registerEventHandler(this.Event.SheetDataValidationChanged,()=>n.has(t.SheetDataValidationModel)?n.get(t.SheetDataValidationModel).ruleChange$.subscribe(e=>{let{unitId:t,subUnitId:n,rule:r,oldRule:i,type:a}=e,o=this.getSheetTarget(t,n);if(!o)return;let{workbook:s,worksheet:c}=o,l=new f(r,c.getSheet(),this._injector);this.fireEvent(this.Event.SheetDataValidationChanged,{origin:e,worksheet:c,workbook:s,changeType:a,oldRule:i,rule:l})}):{dispose:()=>{}})),this.disposeWithMe(this.registerEventHandler(this.Event.SheetDataValidatorStatusChanged,()=>n.has(t.SheetDataValidationModel)?n.get(t.SheetDataValidationModel).validStatusChange$.subscribe(e=>{let{unitId:t,subUnitId:n,ruleId:r,status:i,row:a,col:o}=e,s=this.getSheetTarget(t,n);if(!s)return;let{workbook:c,worksheet:l}=s,u=l.getDataValidation(r);u&&this.fireEvent(this.Event.SheetDataValidatorStatusChanged,{workbook:c,worksheet:l,row:a,column:o,rule:u,status:i})}):{dispose:()=>{}})),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeSheetDataValidationAdd,()=>r.beforeCommandExecuted(n=>{if(n.id===t.AddSheetDataValidationCommand.id){let t=n.params,r=this.getSheetTarget(t.unitId,t.subUnitId);if(!r)return;let{workbook:i,worksheet:a}=r,o={worksheet:a,workbook:i,rule:t.rule};if(this.fireEvent(this.Event.BeforeSheetDataValidationAdd,o),o.cancel)throw new e.CanceledError}}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeSheetDataValidationCriteriaUpdate,()=>r.beforeCommandExecuted(n=>{if(n.id===t.UpdateSheetDataValidationSettingCommand.id){let t=n.params,r=this.getSheetTarget(t.unitId,t.subUnitId);if(!r)return;let{workbook:i,worksheet:a}=r,o=a.getDataValidation(t.ruleId);if(!o)return;let s={worksheet:a,workbook:i,rule:o,ruleId:t.ruleId,newCriteria:t.setting};if(this.fireEvent(this.Event.BeforeSheetDataValidationCriteriaUpdate,s),s.cancel)throw new e.CanceledError}}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeSheetDataValidationRangeUpdate,()=>r.beforeCommandExecuted(n=>{if(n.id===t.UpdateSheetDataValidationRangeCommand.id){let t=n.params,r=this.getSheetTarget(t.unitId,t.subUnitId);if(!r)return;let{workbook:i,worksheet:a}=r,o=a.getDataValidation(t.ruleId);if(!o)return;let s={worksheet:a,workbook:i,rule:o,ruleId:t.ruleId,newRanges:t.ranges};if(this.fireEvent(this.Event.BeforeSheetDataValidationRangeUpdate,s),s.cancel)throw new e.CanceledError}}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeSheetDataValidationOptionsUpdate,()=>r.beforeCommandExecuted(n=>{if(n.id===t.UpdateSheetDataValidationOptionsCommand.id){let t=n.params,r=this.getSheetTarget(t.unitId,t.subUnitId);if(!r)return;let{workbook:i,worksheet:a}=r,o=a.getDataValidation(t.ruleId);if(!o)return;let s={worksheet:a,workbook:i,rule:o,ruleId:t.ruleId,newOptions:t.options};if(this.fireEvent(this.Event.BeforeSheetDataValidationOptionsUpdate,s),s.cancel)throw new e.CanceledError}}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeSheetDataValidationDelete,()=>r.beforeCommandExecuted(n=>{if(n.id===t.RemoveSheetDataValidationCommand.id){let t=n.params,r=this.getSheetTarget(t.unitId,t.subUnitId);if(!r)return;let{workbook:i,worksheet:a}=r,o=a.getDataValidation(t.ruleId);if(!o)return;let s={worksheet:a,workbook:i,rule:o,ruleId:t.ruleId};if(this.fireEvent(this.Event.BeforeSheetDataValidationDelete,s),s.cancel)throw new e.CanceledError}}))),this.disposeWithMe(this.registerEventHandler(this.Event.BeforeSheetDataValidationDeleteAll,()=>r.beforeCommandExecuted(n=>{if(n.id===t.RemoveSheetAllDataValidationCommand.id){let t=n.params,r=this.getSheetTarget(t.unitId,t.subUnitId);if(!r)return;let{workbook:i,worksheet:a}=r,o={worksheet:a,workbook:i,rules:a.getDataValidations()};if(this.fireEvent(this.Event.BeforeSheetDataValidationDeleteAll,o),o.cancel)throw new e.CanceledError}})))}};a.FUniver.extend(m);var h=class extends n.FWorkbook{_initialize(){Object.defineProperty(this,`_dataValidationModel`,{get(){return this._injector.get(t.SheetDataValidationModel)}})}getValidatorStatus(){return this._injector.get(t.SheetsDataValidationValidatorService).validatorWorkbook(this._workbook.getUnitId())}async getAllDataValidationErrorAsync(){let e=this._workbook.getUnitId(),t=this._dataValidationModel.getSubUnitIds(e),n=[];for(let r of t){let t=await this._collectValidationErrorsForSheet(e,r);n.push(...t)}return n}async _collectValidationErrorsForSheet(e,t){let n=this._dataValidationModel.getRules(e,t);if(!n.length)return[];let r=n.flatMap(e=>e.ranges);return this._collectValidationErrorsForRange(e,t,r)}async _collectValidationErrorsForRange(n,r,i){if(!i.length)return[];let a=this._injector.get(t.SheetsDataValidationValidatorService),o=this._workbook.getSheetBySheetId(r);if(!o)throw Error(`Cannot find worksheet with sheetId: ${r}`);let s=o.getName(),c=[];for(let t of i){let i=[];for(let l=t.startRow;l<=t.endRow;l++)for(let u=t.startColumn;u<=t.endColumn;u++)i.push((async()=>{try{if(await a.validatorCell(n,r,l,u)!==e.DataValidationStatus.VALID){let e=this._dataValidationModel.getRuleByLocation(n,r,l,u);if(e){var t;let n=((t=o.getCell(l,u))==null?void 0:t.v)||null,r=this._createDataValidationError(s,l,u,e,n);c.push(r)}}}catch(e){console.warn(`Failed to validate cell [${l}, ${u}]:`,e)}})());await Promise.all(i)}return c}_createDataValidationError(e,t,n,r,i){return{sheetName:e,row:t,column:n,ruleId:r.uid,inputValue:i,rule:r}}onDataValidationChange(t){return(0,e.toDisposable)(this._dataValidationModel.ruleChange$.pipe((0,o.filter)(e=>e.unitId===this._workbook.getUnitId())).subscribe(t))}onDataValidationStatusChange(t){return(0,e.toDisposable)(this._dataValidationModel.validStatusChange$.pipe((0,o.filter)(e=>e.unitId===this._workbook.getUnitId())).subscribe(t))}onBeforeAddDataValidation(n){return(0,e.toDisposable)(this._commandService.beforeCommandExecuted((e,r)=>{let i=e.params;if(e.id===t.AddSheetDataValidationCommand.id){if(i.unitId!==this._workbook.getUnitId())return;if(n(i,r)===!1)throw Error(`Command is stopped by the hook onBeforeAddDataValidation`)}}))}onBeforeUpdateDataValidationCriteria(n){return(0,e.toDisposable)(this._commandService.beforeCommandExecuted((e,r)=>{let i=e.params;if(e.id===t.UpdateSheetDataValidationSettingCommand.id){if(i.unitId!==this._workbook.getUnitId())return;if(n(i,r)===!1)throw Error(`Command is stopped by the hook onBeforeUpdateDataValidationCriteria`)}}))}onBeforeUpdateDataValidationRange(n){return(0,e.toDisposable)(this._commandService.beforeCommandExecuted((e,r)=>{let i=e.params;if(e.id===t.UpdateSheetDataValidationRangeCommand.id){if(i.unitId!==this._workbook.getUnitId())return;if(n(i,r)===!1)throw Error(`Command is stopped by the hook onBeforeUpdateDataValidationRange`)}}))}onBeforeUpdateDataValidationOptions(n){return(0,e.toDisposable)(this._commandService.beforeCommandExecuted((e,r)=>{let i=e.params;if(e.id===t.UpdateSheetDataValidationOptionsCommand.id){if(i.unitId!==this._workbook.getUnitId())return;if(n(i,r)===!1)throw Error(`Command is stopped by the hook onBeforeUpdateDataValidationOptions`)}}))}onBeforeDeleteDataValidation(n){return(0,e.toDisposable)(this._commandService.beforeCommandExecuted((e,r)=>{let i=e.params;if(e.id===t.RemoveSheetDataValidationCommand.id){if(i.unitId!==this._workbook.getUnitId())return;if(n(i,r)===!1)throw Error(`Command is stopped by the hook onBeforeDeleteDataValidation`)}}))}onBeforeDeleteAllDataValidation(n){return(0,e.toDisposable)(this._commandService.beforeCommandExecuted((e,r)=>{let i=e.params;if(e.id===t.RemoveSheetAllDataValidationCommand.id){if(i.unitId!==this._workbook.getUnitId())return;if(n(i,r)===!1)throw Error(`Command is stopped by the hook onBeforeDeleteAllDataValidation`)}}))}};n.FWorkbook.extend(h);var g=class extends n.FWorksheet{getDataValidations(){return this._injector.get(r.DataValidationModel).getRules(this._workbook.getUnitId(),this._worksheet.getSheetId()).map(e=>new f(e,this._worksheet,this._injector))}getValidatorStatus(){return this._injector.get(t.SheetsDataValidationValidatorService).validatorWorksheet(this._workbook.getUnitId(),this._worksheet.getSheetId())}getValidatorStatusAsync(){return this.getValidatorStatus()}getDataValidation(e){let t=this._injector.get(r.DataValidationModel).getRuleById(this._workbook.getUnitId(),this._worksheet.getSheetId(),e);return t?new f(t,this._worksheet,this._injector):null}async getAllDataValidationErrorAsync(){let e=this._workbook.getUnitId(),t=this._worksheet.getSheetId();return this._collectValidationErrorsForSheet(e,t)}async _collectValidationErrorsForSheet(e,t){let n=this._injector.get(r.DataValidationModel).getRules(e,t);if(!n.length)return[];let i=n.flatMap(e=>e.ranges);return this._collectValidationErrorsForRange(e,t,i)}async _collectValidationErrorsForRange(n,r,i){if(!i.length)return[];let a=this._injector.get(t.SheetsDataValidationValidatorService),o=this._worksheet,s=o.getName(),c=[];for(let l of i){let i=[];for(let u=l.startRow;u<=l.endRow;u++)for(let d=l.startColumn;d<=l.endColumn;d++)i.push((async()=>{try{if(await a.validatorCell(n,r,u,d)!==e.DataValidationStatus.VALID){let e=this._injector.get(t.SheetDataValidationModel).getRuleByLocation(n,r,u,d);if(e){var i;let t=((i=o.getCell(u,d))==null?void 0:i.v)||null,n=this._createDataValidationError(s,u,d,e,t);c.push(n)}}}catch(e){console.warn(`Failed to validate cell [${u}, ${d}]:`,e)}})());await Promise.all(i)}return c}_createDataValidationError(e,t,n,r,i){return{sheetName:e,row:t,column:n,ruleId:r.uid,inputValue:i,rule:r}}};n.FWorksheet.extend(g);var _=class{get SheetDataValidationChanged(){return`SheetDataValidationChanged`}get SheetDataValidatorStatusChanged(){return`SheetDataValidatorStatusChanged`}get BeforeSheetDataValidationAdd(){return`BeforeSheetDataValidationAdd`}get BeforeSheetDataValidationDelete(){return`BeforeSheetDataValidationDelete`}get BeforeSheetDataValidationDeleteAll(){return`BeforeSheetDataValidationDeleteAll`}get BeforeSheetDataValidationCriteriaUpdate(){return`BeforeSheetDataValidationCriteriaUpdate`}get BeforeSheetDataValidationRangeUpdate(){return`BeforeSheetDataValidationRangeUpdate`}get BeforeSheetDataValidationOptionsUpdate(){return`BeforeSheetDataValidationOptionsUpdate`}};a.FEventName.extend(_),exports.FDataValidation=f,exports.FDataValidationBuilder=d;
|
package/lib/cjs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Pe=Object.defineProperty;var He=(n,s,e)=>s in n?Pe(n,s,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[s]=e;var p=(n,s,e)=>He(n,typeof s!="symbol"?s+"":s,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("@univerjs/core"),g=require("@univerjs/data-validation"),M=require("@univerjs/engine-formula"),R=require("@univerjs/sheets"),B=require("rxjs"),fe=require("@univerjs/sheets-formula");var We=Object.getOwnPropertyDescriptor,$e=(n,s,e,t)=>{for(var a=t>1?void 0:t?We(s,e):s,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=i(a)||a);return a},ce=(n,s)=>(e,t)=>s(e,t,n);exports.DataValidationCacheService=class extends o.Disposable{constructor(e,t,a){super();p(this,"_cacheMatrix",new Map);p(this,"_dirtyRanges$",new B.Subject);p(this,"dirtyRanges$",this._dirtyRanges$.asObservable());this._commandService=e,this._univerInstanceService=t,this._sheetDataValidationModel=a,this._initDirtyRanges(),this._initSheetRemove()}_initDirtyRanges(){this.disposeWithMe(this._commandService.onCommandExecuted((e,t)=>{if(e.id===R.SetRangeValuesMutation.id&&!(t!=null&&t.onlyLocal)){const{cellValue:a,unitId:r,subUnitId:i}=e.params;if(a){const l=new o.ObjectMatrix(a).getDataRange();if(l.endRow===-1)return;const c=this._sheetDataValidationModel.getRules(r,i).map(h=>h.ranges).flat().map(h=>o.getIntersectRange(h,l)).filter(Boolean);c.length&&this.markRangeDirty(r,i,c,!0)}}}))}_initSheetRemove(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{var t;if(e.id===R.RemoveSheetMutation.id){const{unitId:a,subUnitId:r}=e.params;(t=this._cacheMatrix.get(a))==null||t.delete(r)}})),this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(e=>{e.type===o.UniverInstanceType.UNIVER_SHEET&&this._cacheMatrix.delete(e.getUnitId())}))}_ensureCache(e,t){let a=this._cacheMatrix.get(e);a||(a=new Map,this._cacheMatrix.set(e,a));let r=a.get(t);return r||(r=new o.ObjectMatrix,a.set(t,r)),r}ensureCache(e,t){return this._ensureCache(e,t)}addRule(e,t,a){this.markRangeDirty(e,t,a.ranges)}removeRule(e,t,a){this._deleteRange(e,t,a.ranges)}markRangeDirty(e,t,a,r){const i=this._ensureCache(e,t);a.forEach(l=>{o.Range.foreach(l,(d,u)=>{i.getValue(d,u)!==void 0&&i.setValue(d,u,void 0)})}),this._dirtyRanges$.next({unitId:e,subUnitId:t,ranges:a,isSetRange:r})}_deleteRange(e,t,a){const r=this._ensureCache(e,t);a.forEach(i=>{o.Range.foreach(i,(l,d)=>{r.realDeleteValue(l,d)})}),this._dirtyRanges$.next({unitId:e,subUnitId:t,ranges:a})}getValue(e,t,a,r){return this._ensureCache(e,t).getValue(a,r)}};exports.DataValidationCacheService=$e([ce(0,o.Inject(o.ICommandService)),ce(1,o.Inject(o.IUniverInstanceService)),ce(2,o.Inject(g.DataValidationModel))],exports.DataValidationCacheService);function L(n){var s,e;return(e=(s=n==null?void 0:n[0])==null?void 0:s[0])==null?void 0:e.v}function P(n){var s;return(s=n==null?void 0:n[0])==null?void 0:s[0]}function E(n){return!M.ERROR_TYPE_SET.has(n)}function Y(n,s){var t;const e=s.getValidatorItem(n);return(t=e==null?void 0:e.offsetFormulaByRange)!=null?t:!1}var ke=Object.getOwnPropertyDescriptor,qe=(n,s,e,t)=>{for(var a=t>1?void 0:t?ke(s,e):s,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=i(a)||a);return a},j=(n,s)=>(e,t)=>s(e,t,n);exports.DataValidationCustomFormulaService=class extends o.Disposable{constructor(e,t,a,r,i){super();p(this,"_ruleFormulaMap",new Map);p(this,"_ruleFormulaMap2",new Map);this._instanceSrv=e,this._registerOtherFormulaService=t,this._dataValidationModel=a,this._dataValidationCacheService=r,this._validatorRegistryService=i,this._initFormulaResultHandler(),this._initDirtyRanges()}dispose(){super.dispose(),this._ruleFormulaMap.clear(),this._ruleFormulaMap2.clear()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(e=>{for(const t in e){const a=e[t];if(this._instanceSrv.getUnitType(t)===o.UniverInstanceType.UNIVER_SHEET)for(const i in a){const l=a[i],{ruleFormulaMap:d}=this._ensureMaps(t,i);l.forEach(u=>{var m,S;const c=d.get((m=u.extra)==null?void 0:m.ruleId),h=this._dataValidationModel.getRuleById(t,i,(S=u.extra)==null?void 0:S.ruleId);h&&c&&this._dataValidationCacheService.markRangeDirty(t,i,h.ranges)})}}}))}_ensureMaps(e,t){let a=this._ruleFormulaMap.get(e),r=this._ruleFormulaMap2.get(e);a||(a=new Map,this._ruleFormulaMap.set(e,a)),r||(r=new Map,this._ruleFormulaMap2.set(e,r));let i=a.get(t);i||(i=new Map,a.set(t,i));let l=r.get(t);return l||(l=new Map,r.set(t,l)),{ruleFormulaMap:i,ruleFormulaMap2:l}}_registerFormula(e,t,a,r,i){return this._registerOtherFormulaService.registerFormulaWithRange(e,t,r,i,{ruleId:a},M.OtherFormulaBizType.DATA_VALIDATION_CUSTOM,a)}_handleDirtyRanges(e,t,a){this._dataValidationModel.getRules(e,t).forEach(i=>{const l=i.ranges;o.Rectangle.doAnyRangesIntersect(l,a)&&this.makeRuleDirty(e,t,i.uid)})}_initDirtyRanges(){this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.subscribe(e=>{e.isSetRange&&this._handleDirtyRanges(e.unitId,e.subUnitId,e.ranges)}))}deleteByRuleId(e,t,a){const{ruleFormulaMap:r,ruleFormulaMap2:i}=this._ensureMaps(e,t),l=this._dataValidationModel.getRuleById(e,t,a),d=r.get(a);if(!l||!d)return;const u=r.get(a);u&&(r.delete(a),this._registerOtherFormulaService.deleteFormula(e,t,[u.formulaId]));const c=i.get(a);c&&(i.delete(a),this._registerOtherFormulaService.deleteFormula(e,t,[c.formulaId]))}_addFormulaByRange(e,t,a,r,i,l){const{ruleFormulaMap:d,ruleFormulaMap2:u}=this._ensureMaps(e,t),c=l[0].startRow,h=l[0].startColumn;if(r&&o.isFormulaString(r)){const m=this._registerFormula(e,t,a,r,l);d.set(a,{formula:r,originCol:h,originRow:c,formulaId:m})}if(i&&o.isFormulaString(i)){const m=this._registerFormula(e,t,a,i,l);u.set(a,{formula:i,originCol:h,originRow:c,formulaId:m})}}addRule(e,t,a){if(Y(a.type,this._validatorRegistryService)){const{ranges:r,formula1:i,formula2:l,uid:d}=a;this._addFormulaByRange(e,t,d,i,l,r)}}async getCellFormulaValue(e,t,a,r,i){var v,_;const{ruleFormulaMap:l}=this._ensureMaps(e,t),d=l.get(a);if(!d)return Promise.resolve(void 0);const u=await this._registerOtherFormulaService.getFormulaValue(e,t,d.formulaId),{originRow:c,originCol:h}=d,m=r-c,S=i-h;return P((_=(v=u==null?void 0:u.result)==null?void 0:v[m])==null?void 0:_[S])}async getCellFormula2Value(e,t,a,r,i){var v,_;const{ruleFormulaMap2:l}=this._ensureMaps(e,t),d=l.get(a);if(!d)return Promise.resolve(void 0);const u=await this._registerOtherFormulaService.getFormulaValue(e,t,d.formulaId),{originRow:c,originCol:h}=d,m=r-c,S=i-h;return P((_=(v=u==null?void 0:u.result)==null?void 0:v[m])==null?void 0:_[S])}getCellFormulaValueSync(e,t,a,r,i){var v,_;const{ruleFormulaMap:l}=this._ensureMaps(e,t),d=l.get(a);if(!d)return;const u=this._registerOtherFormulaService.getFormulaValueSync(e,t,d.formulaId),{originRow:c,originCol:h}=d,m=r-c,S=i-h;return P((_=(v=u==null?void 0:u.result)==null?void 0:v[m])==null?void 0:_[S])}getCellFormula2ValueSync(e,t,a,r,i){var v,_;const{ruleFormulaMap2:l}=this._ensureMaps(e,t),d=l.get(a);if(!d)return;const u=this._registerOtherFormulaService.getFormulaValueSync(e,t,d.formulaId),{originRow:c,originCol:h}=d,m=r-c,S=i-h;return P((_=(v=u==null?void 0:u.result)==null?void 0:v[m])==null?void 0:_[S])}getRuleFormulaInfo(e,t,a){const{ruleFormulaMap:r}=this._ensureMaps(e,t);return r.get(a)}makeRuleDirty(e,t,a){var l,d,u,c;const r=(d=(l=this._ruleFormulaMap.get(e))==null?void 0:l.get(t))==null?void 0:d.get(a),i=(c=(u=this._ruleFormulaMap2.get(e))==null?void 0:u.get(t))==null?void 0:c.get(a);r&&this._registerOtherFormulaService.markFormulaDirty(e,t,r.formulaId),i&&this._registerOtherFormulaService.markFormulaDirty(e,t,i.formulaId)}};exports.DataValidationCustomFormulaService=qe([j(0,o.IUniverInstanceService),j(1,o.Inject(M.RegisterOtherFormulaService)),j(2,o.Inject(g.DataValidationModel)),j(3,o.Inject(exports.DataValidationCacheService)),j(4,o.Inject(g.DataValidatorRegistryService))],exports.DataValidationCustomFormulaService);function N(n){return o.getOriginCellValue(n)}function ye(n){var s;return String((s=N(n))!=null?s:"")}function Qe(n){return n.filter(Boolean).join(",")}function W(n){return n.split(",").filter(Boolean)}function Ge(n){const s=N(n);return s==null?"":s.toString()}function X(n,s,e){const{formula1:t,formula2:a}=s,r=s.ranges[0].startRow,i=s.ranges[0].startColumn,l=e.row-r,d=e.col-i,u=o.isFormulaString(t)?n.moveFormulaRefOffset(t,d,l,!0):t,c=o.isFormulaString(a)?n.moveFormulaRefOffset(a,d,l,!0):a;return{transformedFormula1:u,transformedFormula2:c}}var Ye=Object.getOwnPropertyDescriptor,Xe=(n,s,e,t)=>{for(var a=t>1?void 0:t?Ye(s,e):s,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=i(a)||a);return a},Re=(n,s)=>(e,t)=>s(e,t,n);exports.DataValidationListCacheService=class extends o.Disposable{constructor(e,t){super();p(this,"_cache",new Map);this._injector=e,this._dataValidationModel=t,this._initRuleChangeListener()}_initRuleChangeListener(){this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(e=>{(e.type==="remove"||e.type==="update")&&this.markRuleDirty(e.unitId,e.subUnitId,e.rule.uid)}))}getOrCompute(e,t,a){const r=this.getCache(e,t,a.uid);if(r)return r;const l=this._injector.get(exports.DataValidationFormulaService).getRuleFormulaResultSync(e,t,a.uid);return this.computeAndCache(e,t,a,l)}_ensureCache(e,t){let a=this._cache.get(e);a||(a=new Map,this._cache.set(e,a));let r=a.get(t);return r||(r=new Map,a.set(t,r)),r}getCache(e,t,a){var r,i;return(i=(r=this._cache.get(e))==null?void 0:r.get(t))==null?void 0:i.get(a)}setCache(e,t,a,r){this._ensureCache(e,t).set(a,r)}markRuleDirty(e,t,a){var r,i;(i=(r=this._cache.get(e))==null?void 0:r.get(t))==null||i.delete(a)}clear(){this._cache.clear()}computeAndCache(e,t,a,r){var v,_,V;const{formula1:i="",formula2:l=""}=a,d=o.isFormulaString(i)?this._getRuleFormulaResultSet((V=(_=(v=r==null?void 0:r[0])==null?void 0:v.result)==null?void 0:_[0])==null?void 0:V[0]):W(i),u=l.split(","),c=d.map((f,D)=>({label:f,color:u[D]||""})),h={};for(const f of c)f.color&&(h[f.label]=f.color);const m=new Set(d),S={list:d,listWithColor:c,colorMap:h,set:m};return this.setCache(e,t,a.uid,S),S}_getRuleFormulaResultSet(e){var a,r;if(!e)return[];const t=new Set;for(let i=0,l=e.length;i<l;i++){const d=e[i];if(d)for(let u=0,c=d.length;u<c;u++){const h=d[u],m=N(h);if(m!=null){if(typeof m!="string"&&typeof(h==null?void 0:h.s)=="object"&&((r=(a=h.s)==null?void 0:a.n)!=null&&r.pattern)){t.add(o.numfmt.format(h.s.n.pattern,m,{throws:!1}));continue}const S=typeof m=="string"?m:String(m);E(S)&&t.add(S)}}}return[...t]}};exports.DataValidationListCacheService=Xe([Re(0,o.Inject(o.Injector)),Re(1,o.Inject(g.DataValidationModel))],exports.DataValidationListCacheService);var Ke=Object.getOwnPropertyDescriptor,ze=(n,s,e,t)=>{for(var a=t>1?void 0:t?Ke(s,e):s,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=i(a)||a);return a},U=(n,s)=>(e,t)=>s(e,t,n);exports.DataValidationFormulaService=class extends o.Disposable{constructor(e,t,a,r,i,l){super();p(this,"_formulaRuleMap",new Map);this._instanceService=e,this._registerOtherFormulaService=t,this._dataValidationCacheService=a,this._dataValidationModel=r,this._validatorRegistryService=i,this._listCacheService=l,this._initFormulaResultHandler()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(e=>{for(const t in e){const a=e[t];if(this._instanceService.getUnitType(t)===o.UniverInstanceType.UNIVER_SHEET)for(const i in a){const l=a[i],d=this._ensureRuleFormulaMap(t,i);l.forEach(u=>{var h;const c=(h=u.extra)==null?void 0:h.ruleId;if(c&&d.get(c)){const m=this._dataValidationModel.getRuleById(t,i,c);m&&(this._listCacheService.markRuleDirty(t,i,c),this._dataValidationCacheService.markRangeDirty(t,i,m.ranges))}})}}}))}_ensureRuleFormulaMap(e,t){let a=this._formulaRuleMap.get(e);a||(a=new Map,this._formulaRuleMap.set(e,a));let r=a.get(t);return r||(r=new Map,a.set(t,r)),r}_registerSingleFormula(e,t,a,r){const i=[{startColumn:0,endColumn:0,startRow:0,endRow:0}];return this._registerOtherFormulaService.registerFormulaWithRange(e,t,a,i,{ruleId:r},M.OtherFormulaBizType.DATA_VALIDATION,r)}addRule(e,t,a){if(!Y(a.type,this._validatorRegistryService)&&a.type!==o.DataValidationType.CHECKBOX){const{formula1:r,formula2:i,uid:l}=a,d=o.isFormulaString(r),u=o.isFormulaString(i);if(!d&&!u)return;const c=this._ensureRuleFormulaMap(e,t),h=[void 0,void 0];if(d){const m=this._registerSingleFormula(e,t,r,l);h[0]={id:m,text:r}}if(u){const m=this._registerSingleFormula(e,t,i,l);h[1]={id:m,text:i}}c.set(l,h)}}removeRule(e,t,a){const i=this._ensureRuleFormulaMap(e,t).get(a);if(!i)return;const[l,d]=i,u=[l==null?void 0:l.id,d==null?void 0:d.id].filter(Boolean);u.length&&this._registerOtherFormulaService.deleteFormula(e,t,u)}getRuleFormulaResult(e,t,a){const i=this._ensureRuleFormulaMap(e,t).get(a);if(!i)return Promise.resolve(null);const l=async d=>d&&this._registerOtherFormulaService.getFormulaValue(e,t,d.id);return Promise.all([l(i[0]),l(i[1])])}getRuleFormulaResultSync(e,t,a){const i=this._ensureRuleFormulaMap(e,t).get(a);if(i)return i.map(l=>{if(l)return this._registerOtherFormulaService.getFormulaValueSync(e,t,l.id)})}getRuleFormulaInfo(e,t,a){return this._ensureRuleFormulaMap(e,t).get(a)}};exports.DataValidationFormulaService=ze([U(0,o.IUniverInstanceService),U(1,o.Inject(M.RegisterOtherFormulaService)),U(2,o.Inject(exports.DataValidationCacheService)),U(3,o.Inject(g.DataValidationModel)),U(4,o.Inject(g.DataValidatorRegistryService)),U(5,o.Inject(exports.DataValidationListCacheService))],exports.DataValidationFormulaService);class ve{constructor(s,e,t,a,r=!1){p(this,"_map");p(this,"_tree",new o.RBush);p(this,"_dirty",!0);p(this,"_buildTree",()=>{if(!this._dirty||this._disableTree)return;this._tree.clear();const s=[];this._map.forEach((e,t)=>{e.forEach(a=>{s.push({minX:a.startRow,maxX:a.endRow,minY:a.startColumn,maxY:a.endColumn,ruleId:t})})}),this._tree.load(s),this._dirty=!1});p(this,"_debonceBuildTree",o.debounce(this._buildTree,0));this._unitId=e,this._subUnitId=t,this._univerInstanceService=a,this._disableTree=r,this._map=s,this._buildTree()}get _worksheet(){var s;return(s=this._univerInstanceService.getUnit(this._unitId,o.UniverInstanceType.UNIVER_SHEET))==null?void 0:s.getSheetBySheetId(this._subUnitId)}_addRule(s,e){if(!this._worksheet)return;const t=o.Rectangle.mergeRanges(e.map(a=>o.Range.transformRange(a,this._worksheet)));this._map.forEach((a,r)=>{const i=o.Rectangle.subtractMulti(a,t);i.length===0?this._map.delete(r):this._map.set(r,i)}),this._dirty=!0,this._map.set(s,t),this._debonceBuildTree()}addRule(s){this._addRule(s.uid,s.ranges)}removeRange(s){if(!this._worksheet)return;const e=s.map(t=>o.Range.transformRange(t,this._worksheet));this._map.forEach((t,a)=>{const r=o.Rectangle.subtractMulti(t,e);r.length===0?this._map.delete(a):this._map.set(a,r)}),this._dirty=!0,this._debonceBuildTree()}_removeRule(s){this._map.delete(s),this._dirty=!0,this._debonceBuildTree()}removeRule(s){this._removeRule(s.uid)}updateRange(s,e){this._removeRule(s),this._addRule(s,e)}addRangeRules(s){s.forEach(({id:e,ranges:t})=>{if(!t.length)return;let a=this._map.get(e);a?(this._map.set(e,o.Rectangle.mergeRanges([...a,...t])),a=this._map.get(e)):(a=t,this._map.set(e,a)),this._map.forEach((r,i)=>{if(i===e)return;const l=o.Rectangle.subtractMulti(r,t);l.length===0?this._map.delete(i):this._map.set(i,l)})}),this._dirty=!0,this._debonceBuildTree()}diff(s){const e=[];let t=0;return s.forEach((a,r)=>{var d;const i=(d=this._map.get(a.uid))!=null?d:[],l=a.ranges;i.length!==0&&(i.length!==l.length||i.some((u,c)=>!o.Rectangle.equals(u,l[c])))&&e.push({type:"update",ruleId:a.uid,oldRanges:l,newRanges:o.Rectangle.sort(i),rule:a}),i.length===0&&(e.push({type:"delete",rule:a,index:r-t}),t++)}),e}diffWithAddition(s,e){const t=[];let a=0;return s.forEach((r,i)=>{var u;const l=(u=this._map.get(r.uid))!=null?u:[],d=r.ranges;l.length!==0&&(l.length!==d.length||l.some((c,h)=>!o.Rectangle.equals(c,d[h])))&&t.push({type:"update",ruleId:r.uid,oldRanges:d,newRanges:o.Rectangle.sort(l),rule:r}),l.length===0&&(t.push({type:"delete",rule:r,index:i-a}),a++)}),Array.from(e).forEach(r=>{var l;const i=(l=this._map.get(r.uid))!=null?l:[];t.push({type:"add",rule:{...r,ranges:o.Rectangle.sort(i)}})}),t}clone(){return new ve(new Map(o.Tools.deepClone(Array.from(this._map.entries()))),this._unitId,this._subUnitId,this._univerInstanceService,!0)}getValue(s,e){this._dirty&&this._buildTree();const t=this._tree.search({minX:s,maxX:s,minY:e,maxY:e});return t.length>0?t[0].ruleId:void 0}}var Ze=Object.getOwnPropertyDescriptor,Je=(n,s,e,t)=>{for(var a=t>1?void 0:t?Ze(s,e):s,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=i(a)||a);return a},I=(n,s)=>(e,t)=>s(e,t,n);exports.SheetDataValidationModel=class extends o.Disposable{constructor(e,t,a,r,i,l,d){super();p(this,"_ruleMatrixMap",new Map);p(this,"_validStatusChange$",new B.Subject);p(this,"_ruleChange$",new B.Subject);p(this,"ruleChange$",this._ruleChange$.asObservable());p(this,"validStatusChange$",this._validStatusChange$.asObservable());this._dataValidationModel=e,this._univerInstanceService=t,this._dataValidatorRegistryService=a,this._dataValidationCacheService=r,this._dataValidationFormulaService=i,this._dataValidationCustomFormulaService=l,this._commandService=d,this._initRuleUpdateListener(),this.disposeWithMe(()=>{this._ruleChange$.complete(),this._validStatusChange$.complete()}),this._initUniverInstanceListener()}_initUniverInstanceListener(){this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(e=>{this._ruleMatrixMap.delete(e.getUnitId())})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===R.RemoveSheetMutation.id){const{unitId:t,subUnitId:a}=e.params,r=this._ruleMatrixMap.get(t);r&&r.delete(a)}}))}_initRuleUpdateListener(){const e=this._dataValidationModel.getAll();for(const[t,a]of e)for(const[r,i]of a)for(const l of i)this._addRule(t,r,l),this._ruleChange$.next({type:"add",unitId:t,subUnitId:r,rule:l,source:"patched"});this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(t=>{switch(t.type){case"add":this._addRule(t.unitId,t.subUnitId,t.rule);break;case"update":this._updateRule(t.unitId,t.subUnitId,t.rule.uid,t.oldRule,t.updatePayload);break;case"remove":this._removeRule(t.unitId,t.subUnitId,t.rule);break}this._ruleChange$.next(t)}))}_ensureRuleMatrix(e,t){let a=this._ruleMatrixMap.get(e);a||(a=new Map,this._ruleMatrixMap.set(e,a));let r=a.get(t);return r||(r=new ve(new Map,e,t,this._univerInstanceService),a.set(t,r)),r}_addRuleSideEffect(e,t,a){this._ensureRuleMatrix(e,t).addRule(a),this._dataValidationCacheService.addRule(e,t,a),this._dataValidationFormulaService.addRule(e,t,a),this._dataValidationCustomFormulaService.addRule(e,t,a)}_addRule(e,t,a){(Array.isArray(a)?a:[a]).forEach(i=>{this._addRuleSideEffect(e,t,i)})}_updateRule(e,t,a,r,i){const l=this._ensureRuleMatrix(e,t),d={...r,...i.payload};i.type===g.UpdateRuleType.RANGE?l.updateRange(a,i.payload):i.type===g.UpdateRuleType.ALL&&l.updateRange(a,i.payload.ranges),this._dataValidationCacheService.removeRule(e,t,r),this._dataValidationCacheService.addRule(e,t,d),this._dataValidationFormulaService.removeRule(e,t,r.uid),this._dataValidationFormulaService.addRule(e,t,d),this._dataValidationCustomFormulaService.deleteByRuleId(e,t,a),this._dataValidationCustomFormulaService.addRule(e,t,d)}_removeRule(e,t,a){this._ensureRuleMatrix(e,t).removeRule(a),this._dataValidationCacheService.removeRule(e,t,a),this._dataValidationCustomFormulaService.deleteByRuleId(e,t,a.uid)}getValidator(e){return this._dataValidatorRegistryService.getValidatorItem(e)}getRuleIdByLocation(e,t,a,r){return this._ensureRuleMatrix(e,t).getValue(a,r)}getRuleByLocation(e,t,a,r){const i=this.getRuleIdByLocation(e,t,a,r);if(i)return this._dataValidationModel.getRuleById(e,t,i)}validator(e,t,a){const{col:r,row:i,unitId:l,subUnitId:d,worksheet:u}=t,c=(_,V)=>{a&&a(_,V),V&&this._validStatusChange$.next({unitId:l,subUnitId:d,ruleId:e.uid,status:_,row:i,col:r})},h=u.getCellValueOnly(i,r),m=this.getValidator(e.type),S=u.getCellRaw(i,r),v=N(S);if(m){const _=this._dataValidationCacheService.ensureCache(l,d),V=_.getValue(i,r);return V==null?(_.setValue(i,r,o.DataValidationStatus.VALIDATING),m.validator({value:v,unitId:l,subUnitId:d,row:i,column:r,worksheet:t.worksheet,workbook:t.workbook,interceptValue:N(h),t:S==null?void 0:S.t},e).then(f=>{const D=f?o.DataValidationStatus.VALID:o.DataValidationStatus.INVALID,y=_.getValue(i,r);D===o.DataValidationStatus.VALID?_.realDeleteValue(i,r):_.setValue(i,r,D),c(D,V!==y)}),o.DataValidationStatus.VALIDATING):(c(V!=null?V:o.DataValidationStatus.VALID,!1),V!=null?V:o.DataValidationStatus.VALID)}else return c(o.DataValidationStatus.VALID,!1),o.DataValidationStatus.VALID}getRuleObjectMatrix(e,t){return this._ensureRuleMatrix(e,t)}getRuleById(e,t,a){return this._dataValidationModel.getRuleById(e,t,a)}getRuleIndex(e,t,a){return this._dataValidationModel.getRuleIndex(e,t,a)}getRules(e,t){return[...this._dataValidationModel.getRules(e,t)]}getUnitRules(e){return this._dataValidationModel.getUnitRules(e)}deleteUnitRules(e){return this._dataValidationModel.deleteUnitRules(e)}getSubUnitIds(e){return this._dataValidationModel.getSubUnitIds(e)}getAll(){return this._dataValidationModel.getAll()}};exports.SheetDataValidationModel=Je([I(0,o.Inject(g.DataValidationModel)),I(1,o.IUniverInstanceService),I(2,o.Inject(g.DataValidatorRegistryService)),I(3,o.Inject(exports.DataValidationCacheService)),I(4,o.Inject(exports.DataValidationFormulaService)),I(5,o.Inject(exports.DataValidationCustomFormulaService)),I(6,o.ICommandService)],exports.SheetDataValidationModel);const $=1,k=0;function De(n,s){return o.Tools.isBlank(n)?s.t("dataValidation.validFail.value"):o.isFormulaString(n)?s.t("dataValidation.validFail.primitive"):""}const H=n=>o.Tools.isDefine(n)&&String(n).toLowerCase()==="true"?"1":String(n).toLowerCase()==="false"?"0":n;class Te extends g.BaseDataValidator{constructor(){super(...arguments);p(this,"id",o.DataValidationType.CHECKBOX);p(this,"title","dataValidation.checkbox.title");p(this,"operators",[]);p(this,"scopes",["sheet"]);p(this,"order",41);p(this,"offsetFormulaByRange",!1);p(this,"_formulaService",this.injector.get(exports.DataValidationFormulaService));p(this,"skipDefaultFontRender",(e,t,a)=>{const{unitId:r,subUnitId:i}=a,{formula1:l,formula2:d}=this.parseFormulaSync(e,r,i),u=`${t!=null?t:""}`;return!u||u===`${l}`||u===`${d}`})}validatorFormula(e,t,a){const{formula1:r,formula2:i}=e,l=r===i;if(o.Tools.isBlank(r)&&o.Tools.isBlank(i))return{success:!0};if(l)return{success:!1,formula1:this.localeService.t("dataValidation.validFail.checkboxEqual"),formula2:this.localeService.t("dataValidation.validFail.checkboxEqual")};const d=De(r,this.localeService),u=De(i,this.localeService);return{success:!d&&!u,formula1:d,formula2:u}}async parseFormula(e,t,a){var h,m,S,v;const{formula1:r=$,formula2:i=k}=e,l=await this._formulaService.getRuleFormulaResult(t,a,e.uid),d=o.isFormulaString(r)?L((m=(h=l==null?void 0:l[0])==null?void 0:h.result)==null?void 0:m[0][0]):r,u=o.isFormulaString(i)?L((v=(S=l==null?void 0:l[1])==null?void 0:S.result)==null?void 0:v[0][0]):i,c=E(String(d))&&E(String(u));return{formula1:H(d),formula2:H(u),originFormula1:d,originFormula2:u,isFormulaValid:c}}getExtraStyle(e,t){return{tb:o.WrapStrategy.CLIP}}parseFormulaSync(e,t,a){var h,m,S,v;const{formula1:r=$,formula2:i=k}=e,l=this._formulaService.getRuleFormulaResultSync(t,a,e.uid),d=o.isFormulaString(r)?L((m=(h=l==null?void 0:l[0])==null?void 0:h.result)==null?void 0:m[0][0]):r,u=o.isFormulaString(i)?L((v=(S=l==null?void 0:l[1])==null?void 0:S.result)==null?void 0:v[0][0]):i,c=E(String(d))&&E(String(u));return{formula1:H(d),formula2:H(u),originFormula1:d,originFormula2:u,isFormulaValid:c}}async isValidType(e,t,a){const{value:r,unitId:i,subUnitId:l}=e,{formula1:d,formula2:u,originFormula1:c,originFormula2:h}=await this.parseFormula(a,i,l);return!o.Tools.isDefine(d)||!o.Tools.isDefine(u)?!0:o.Tools.isDefine(r)&&(String(r)===String(d)||String(r)===String(u)||String(r)===String(c!=null?c:"")||String(r)===String(h!=null?h:""))}generateRuleErrorMessage(e){return this.localeService.t("dataValidation.checkbox.error")}generateRuleName(e){return this.titleStr}}const et={[o.DataValidationOperator.BETWEEN]:"dataValidation.date.operators.between",[o.DataValidationOperator.EQUAL]:"dataValidation.date.operators.equal",[o.DataValidationOperator.GREATER_THAN]:"dataValidation.date.operators.greaterThan",[o.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.operators.greaterThanOrEqual",[o.DataValidationOperator.LESS_THAN]:"dataValidation.date.operators.lessThan",[o.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.operators.lessThanOrEqual",[o.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.operators.notBetween",[o.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.operators.notEqual"};o.DataValidationOperator.BETWEEN+"",o.DataValidationOperator.EQUAL+"",o.DataValidationOperator.GREATER_THAN+"",o.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",o.DataValidationOperator.LESS_THAN+"",o.DataValidationOperator.LESS_THAN_OR_EQUAL+"",o.DataValidationOperator.NOT_BETWEEN+"",o.DataValidationOperator.NOT_EQUAL+"";const Me={[o.DataValidationOperator.BETWEEN]:"dataValidation.date.ruleName.between",[o.DataValidationOperator.EQUAL]:"dataValidation.date.ruleName.equal",[o.DataValidationOperator.GREATER_THAN]:"dataValidation.date.ruleName.greaterThan",[o.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.ruleName.greaterThanOrEqual",[o.DataValidationOperator.LESS_THAN]:"dataValidation.date.ruleName.lessThan",[o.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.ruleName.lessThanOrEqual",[o.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.ruleName.notBetween",[o.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.ruleName.notEqual",NONE:"dataValidation.date.ruleName.legal"},tt={[o.DataValidationOperator.BETWEEN]:"dataValidation.date.errorMsg.between",[o.DataValidationOperator.EQUAL]:"dataValidation.date.errorMsg.equal",[o.DataValidationOperator.GREATER_THAN]:"dataValidation.date.errorMsg.greaterThan",[o.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.date.errorMsg.greaterThanOrEqual",[o.DataValidationOperator.LESS_THAN]:"dataValidation.date.errorMsg.lessThan",[o.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.date.errorMsg.lessThanOrEqual",[o.DataValidationOperator.NOT_BETWEEN]:"dataValidation.date.errorMsg.notBetween",[o.DataValidationOperator.NOT_EQUAL]:"dataValidation.date.errorMsg.notEqual",NONE:"dataValidation.date.errorMsg.legal"},se=[o.DataValidationOperator.BETWEEN,o.DataValidationOperator.NOT_BETWEEN],q="{FORMULA1}",Q="{FORMULA2}",he=n=>{var e,t;if(n==null||typeof n=="boolean")return;if(typeof n=="number"||!Number.isNaN(+n))return+n;const s=(e=o.numfmt.parseDate(n))==null?void 0:e.v;return o.Tools.isDefine(s)?s:(t=o.numfmt.parseDate(o.dayjs(n).format("YYYY-MM-DD HH:mm:ss")))==null?void 0:t.v};class Ce extends g.BaseDataValidator{constructor(){super(...arguments);p(this,"id",o.DataValidationType.DATE);p(this,"title","dataValidation.date.title");p(this,"order",40);p(this,"operators",[o.DataValidationOperator.BETWEEN,o.DataValidationOperator.EQUAL,o.DataValidationOperator.GREATER_THAN,o.DataValidationOperator.GREATER_THAN_OR_EQUAL,o.DataValidationOperator.LESS_THAN,o.DataValidationOperator.LESS_THAN_OR_EQUAL,o.DataValidationOperator.NOT_BETWEEN,o.DataValidationOperator.NOT_EQUAL]);p(this,"scopes",["sheet"]);p(this,"_customFormulaService",this.injector.get(exports.DataValidationCustomFormulaService));p(this,"_lexerTreeBuilder",this.injector.get(M.LexerTreeBuilder))}async parseFormula(e,t,a,r,i){const l=await this._customFormulaService.getCellFormulaValue(t,a,e.uid,r,i),d=await this._customFormulaService.getCellFormula2Value(t,a,e.uid,r,i),{formula1:u,formula2:c}=e,h=E(String(l==null?void 0:l.v))&&E(String(d==null?void 0:d.v));return{formula1:he(o.isFormulaString(u)?l==null?void 0:l.v:u),formula2:he(o.isFormulaString(c)?d==null?void 0:d.v:c),isFormulaValid:h}}async isValidType(e){const{interceptValue:t,value:a}=e;return typeof a=="number"&&typeof t=="string"||typeof t=="string"?!!o.numfmt.parseDate(t):!1}_validatorSingleFormula(e){return!o.Tools.isBlank(e)&&(o.isFormulaString(e)||!Number.isNaN(+e)||!!(e&&o.numfmt.parseDate(e)))}validatorFormula(e,t,a){const r=e.operator;if(!r)return{success:!0};const i=this._validatorSingleFormula(e.formula1),l=this.localeService.t("dataValidation.validFail.date");if(se.includes(r)){const u=this._validatorSingleFormula(e.formula2);return{success:i&&u,formula1:i?void 0:l,formula2:u?void 0:l}}return{success:i,formula1:i?void 0:l}}normalizeFormula(e,t,a){const{formula1:r,formula2:i,bizInfo:l}=e,d=u=>{var h;if(!u)return u;let c;if(!Number.isNaN(+u))c=o.numfmt.dateFromSerial(+u);else{const m=(h=o.numfmt.parseDate(u))==null?void 0:h.v;if(m==null)return"";c=o.numfmt.dateFromSerial(m)}return o.dayjs(`${c[0]}/${c[1]}/${c[2]} ${c[3]}:${c[4]}:${c[5]}`).format(l!=null&&l.showTime?"YYYY-MM-DD HH:mm:ss":"YYYY-MM-DD")};return{formula1:o.isFormulaString(r)?r:d(`${r}`),formula2:o.isFormulaString(i)?i:d(`${i}`)}}transform(e,t,a){const{value:r}=e;return{...e,value:he(r)}}get operatorNames(){return this.operators.map(e=>this.localeService.t(et[e]))}generateRuleName(e){var a,r;if(!e.operator)return this.localeService.t(Me.NONE);const t=this.localeService.t(Me[e.operator]).replace(q,(a=e.formula1)!=null?a:"").replace(Q,(r=e.formula2)!=null?r:"");return`${this.titleStr} ${t}`}generateRuleErrorMessage(e,t){if(!e.operator)return this.titleStr;const{transformedFormula1:a,transformedFormula2:r}=X(this._lexerTreeBuilder,e,t);return`${this.localeService.t(tt[e.operator]).replace(q,a!=null?a:"").replace(Q,r!=null?r:"")}`}}o.DataValidationOperator.BETWEEN+"",o.DataValidationOperator.EQUAL+"",o.DataValidationOperator.GREATER_THAN+"",o.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",o.DataValidationOperator.LESS_THAN+"",o.DataValidationOperator.LESS_THAN_OR_EQUAL+"",o.DataValidationOperator.NOT_BETWEEN+"",o.DataValidationOperator.NOT_EQUAL+"";o.DataValidationOperator.BETWEEN+"",o.DataValidationOperator.EQUAL+"",o.DataValidationOperator.GREATER_THAN+"",o.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",o.DataValidationOperator.LESS_THAN+"",o.DataValidationOperator.LESS_THAN_OR_EQUAL+"",o.DataValidationOperator.NOT_BETWEEN+"",o.DataValidationOperator.NOT_EQUAL+"";const ae={[o.DataValidationOperator.BETWEEN]:"dataValidation.errorMsg.between",[o.DataValidationOperator.EQUAL]:"dataValidation.errorMsg.equal",[o.DataValidationOperator.GREATER_THAN]:"dataValidation.errorMsg.greaterThan",[o.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.errorMsg.greaterThanOrEqual",[o.DataValidationOperator.LESS_THAN]:"dataValidation.errorMsg.lessThan",[o.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.errorMsg.lessThanOrEqual",[o.DataValidationOperator.NOT_BETWEEN]:"dataValidation.errorMsg.notBetween",[o.DataValidationOperator.NOT_EQUAL]:"dataValidation.errorMsg.notEqual",NONE:"dataValidation.errorMsg.legal"};function G(n){return+n}class at extends g.BaseDataValidator{constructor(){super(...arguments);p(this,"_customFormulaService",this.injector.get(exports.DataValidationCustomFormulaService));p(this,"id",o.DataValidationType.DECIMAL);p(this,"_lexerTreeBuilder",this.injector.get(M.LexerTreeBuilder));p(this,"title","dataValidation.decimal.title");p(this,"order",20);p(this,"operators",[o.DataValidationOperator.BETWEEN,o.DataValidationOperator.EQUAL,o.DataValidationOperator.GREATER_THAN,o.DataValidationOperator.GREATER_THAN_OR_EQUAL,o.DataValidationOperator.LESS_THAN,o.DataValidationOperator.LESS_THAN_OR_EQUAL,o.DataValidationOperator.NOT_BETWEEN,o.DataValidationOperator.NOT_EQUAL]);p(this,"scopes",["sheet"])}_isFormulaOrNumber(e){return!o.Tools.isBlank(e)&&(o.isFormulaString(e)||!Number.isNaN(+e))}async isValidType(e,t,a){const{value:r}=e;return!Number.isNaN(G(r))}transform(e,t,a){const{value:r}=e;return{...e,value:G(r)}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a,r,i){const l=await this._customFormulaService.getCellFormulaValue(t,a,e.uid,r,i),d=await this._customFormulaService.getCellFormula2Value(t,a,e.uid,r,i),{formula1:u,formula2:c}=e,h=E(String(l==null?void 0:l.v))&&E(String(d==null?void 0:d.v));return{formula1:this._parseNumber(o.isFormulaString(u)?l==null?void 0:l.v:u),formula2:this._parseNumber(o.isFormulaString(c)?d==null?void 0:d.v:c),isFormulaValid:h}}validatorFormula(e,t,a){const r=e.operator;if(!r)return{success:!0};const i=o.Tools.isDefine(e.formula1)&&this._isFormulaOrNumber(e.formula1),l=o.Tools.isDefine(e.formula2)&&this._isFormulaOrNumber(e.formula2),d=se.includes(r),u=this.localeService.t("dataValidation.validFail.number");return d?{success:i&&l,formula1:i?void 0:u,formula2:l?void 0:u}:{success:i,formula1:i?"":u}}generateRuleErrorMessage(e,t){if(!e.operator)return this.localeService.t(ae.NONE).replace("{TYPE}",this.titleStr);const{transformedFormula1:a,transformedFormula2:r}=X(this._lexerTreeBuilder,e,t);return`${this.localeService.t(ae[e.operator]).replace(q,a!=null?a:"").replace(Q,r!=null?r:"")}`}}function rt(n){var e,t;if(!n)return[];const s=new Set;for(let a=0,r=n.length;a<r;a++){const i=n[a];if(i)for(let l=0,d=i.length;l<d;l++){const u=i[l],c=N(u);if(c!=null){if(typeof c!="string"&&typeof(u==null?void 0:u.s)=="object"&&((t=(e=u.s)==null?void 0:e.n)!=null&&t.pattern)){s.add(o.numfmt.format(u.s.n.pattern,c,{throws:!1}));continue}const h=typeof c=="string"?c:String(c);E(h)&&s.add(h)}}}return[...s]}const it=["if","indirect","choose","offset"];function ot(n,s){if(!o.isFormulaString(n)||M.isReferenceString(n.slice(1)))return!0;const t=s.sequenceNodesBuilder(n);return t&&t.some(a=>typeof a=="object"&&a.nodeType===M.sequenceNodeType.FUNCTION&&it.indexOf(a.token.toLowerCase())>-1)}function nt(n,s){const{formula1:e="",ranges:t}=n;if(M.isReferenceString(e.slice(1))){const r=M.deserializeRangeWithSheet(e.slice(1));if((!r.sheetName||r.sheetName===s)&&t.some(i=>o.Rectangle.intersects(i,r.range)))return!0}return!1}class _e extends g.BaseDataValidator{constructor(){super(...arguments);p(this,"formulaService",this.injector.get(exports.DataValidationFormulaService));p(this,"_lexer",this.injector.get(M.LexerTreeBuilder));p(this,"_univerInstanceService",this.injector.get(o.IUniverInstanceService));p(this,"_listCacheService",this.injector.get(exports.DataValidationListCacheService));p(this,"order",50);p(this,"offsetFormulaByRange",!1);p(this,"id",o.DataValidationType.LIST);p(this,"title","dataValidation.list.title");p(this,"operators",[]);p(this,"scopes",["sheet"]);p(this,"skipDefaultFontRender",e=>e.renderMode!==o.DataValidationRenderMode.TEXT)}validatorFormula(e,t,a){var u,c,h;const r=!o.Tools.isBlank(e.formula1),i=ot((u=e.formula1)!=null?u:"",this._lexer),l=(h=(c=this._univerInstanceService.getUnit(t,o.UniverInstanceType.UNIVER_SHEET))==null?void 0:c.getSheetBySheetId(a))==null?void 0:h.getName(),d=nt(e,l!=null?l:"");return{success:!!(r&&i&&!d),formula1:r?i?d?this.localeService.t("dataValidation.validFail.listIntersects"):void 0:this.localeService.t("dataValidation.validFail.listInvalid"):this.localeService.t("dataValidation.validFail.list")}}getExtraStyle(e,t,{style:a}){var i;const r=(i=a.tb!==o.WrapStrategy.OVERFLOW?a.tb:o.WrapStrategy.CLIP)!=null?i:o.WrapStrategy.WRAP;if(e.type===o.DataValidationType.LIST&&(e.renderMode===o.DataValidationRenderMode.ARROW||e.renderMode===o.DataValidationRenderMode.TEXT)){const l=this.getListWithColorMap(e),d=`${t!=null?t:""}`,u=l[d];if(u)return{bg:{rgb:u},tb:r}}return{tb:r}}parseCellValue(e){const t=e.toString();return W(t)}async parseFormula(e,t,a){var d,u;const r=await this.formulaService.getRuleFormulaResult(t,a,e.uid),i=L((u=(d=r==null?void 0:r[0])==null?void 0:d.result)==null?void 0:u[0][0]);return{formula1:void 0,formula2:void 0,isFormulaValid:E(String(i))}}async isValidType(e,t,a){const{value:r,unitId:i,subUnitId:l}=e,{formula1:d=""}=a,u=o.isFormulaString(d)?this._listCacheService.getOrCompute(i,l,a).list:W(d);return this.parseCellValue(r).every(h=>u.includes(h))}generateRuleName(){return this.localeService.t("dataValidation.list.name")}generateRuleErrorMessage(){return this.localeService.t("dataValidation.list.error")}_getUnitAndSubUnit(e,t){var i,l;const a=(i=e?this._univerInstanceService.getUniverSheetInstance(e):void 0)!=null?i:this._univerInstanceService.getCurrentUnitForType(o.UniverInstanceType.UNIVER_SHEET);if(!a)return null;const r=(l=t?a.getSheetBySheetId(t):void 0)!=null?l:a.getActiveSheet();return r?{unitId:a.getUnitId(),subUnitId:r.getSheetId()}:null}getList(e,t,a){const r=this._getUnitAndSubUnit(t,a);if(!r)return[];const{unitId:i,subUnitId:l}=r;return this._listCacheService.getOrCompute(i,l,e).list}async getListAsync(e,t,a){var c,h;const{formula1:r=""}=e,i=this._getUnitAndSubUnit(t,a);if(!i)return[];const{unitId:l,subUnitId:d}=i,u=await this.formulaService.getRuleFormulaResult(l,d,e.uid);return o.isFormulaString(r)?rt((h=(c=u==null?void 0:u[0])==null?void 0:c.result)==null?void 0:h[0][0]):W(r)}getListWithColor(e,t,a){const r=this._getUnitAndSubUnit(t,a);if(!r)return[];const{unitId:i,subUnitId:l}=r;return this._listCacheService.getOrCompute(i,l,e).listWithColor}getListWithColorMap(e,t,a){const r=this._getUnitAndSubUnit(t,a);if(!r)return{};const{unitId:i,subUnitId:l}=r;return this._listCacheService.getOrCompute(i,l,e).colorMap}}class st extends g.BaseDataValidator{constructor(){super(...arguments);p(this,"id",o.DataValidationType.TEXT_LENGTH);p(this,"title","dataValidation.textLength.title");p(this,"_lexerTreeBuilder",this.injector.get(M.LexerTreeBuilder));p(this,"order",30);p(this,"operators",[o.DataValidationOperator.BETWEEN,o.DataValidationOperator.EQUAL,o.DataValidationOperator.GREATER_THAN,o.DataValidationOperator.GREATER_THAN_OR_EQUAL,o.DataValidationOperator.LESS_THAN,o.DataValidationOperator.LESS_THAN_OR_EQUAL,o.DataValidationOperator.NOT_BETWEEN,o.DataValidationOperator.NOT_EQUAL]);p(this,"scopes",["sheet"]);p(this,"_customFormulaService",this.injector.get(exports.DataValidationCustomFormulaService))}_isFormulaOrInt(e){return!o.Tools.isBlank(e)&&(o.isFormulaString(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}validatorFormula(e,t,a){const r=e.operator;if(!r)return{success:!1};const i=o.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),l=o.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),d=se.includes(r),u=this.localeService.t("dataValidation.validFail.number");return d?{success:i&&l,formula1:i?void 0:u,formula2:l?void 0:u}:{success:i,formula1:u}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a,r,i){const l=await this._customFormulaService.getCellFormulaValue(t,a,e.uid,r,i),d=await this._customFormulaService.getCellFormula2Value(t,a,e.uid,r,i),{formula1:u,formula2:c}=e,h=E(String(l==null?void 0:l.v))&&E(String(d==null?void 0:d.v));return{formula1:this._parseNumber(o.isFormulaString(u)?l==null?void 0:l.v:u),formula2:this._parseNumber(o.isFormulaString(c)?d==null?void 0:d.v:c),isFormulaValid:h}}transform(e,t,a){return{...e,value:e.value.toString().length}}async isValidType(e,t,a){const{value:r}=e;return typeof r=="string"||typeof r=="number"}generateRuleErrorMessage(e,t){if(!e.operator)return this.titleStr;const{transformedFormula1:a,transformedFormula2:r}=X(this._lexerTreeBuilder,e,t);return`${this.localeService.t(g.TextLengthErrorTitleMap[e.operator]).replace(q,a!=null?a:"").replace(Q,r!=null?r:"")}`}}function Oe(n){var e,t;return n?n.p?!((t=(e=n.p.body)==null?void 0:e.dataStream)!=null?t:"").slice(0,-2).trim():o.Tools.isBlank(n.v):!0}function K(n,s,e,t,a="command",r=!0){const i=t.get(M.LexerTreeBuilder),l=t.get(g.DataValidatorRegistryService),d=[],u=[],c=t.get(exports.SheetDataValidationModel),h=t.get(o.IUniverInstanceService),m=R.getSheetCommandTarget(h,{unitId:n,subUnitId:s});if(!m)return{redoMutations:d,undoMutations:u};const{worksheet:S}=m,v=new o.ObjectMatrix;let _=!1;function V(f,D){r&&f.forEach(y=>{o.Range.foreach(y,(T,O)=>{const C=S.getCellRaw(T,O),A=ye(C);(Oe(C)||A===D)&&!(C!=null&&C.p)&&(_=!0,v.setValue(T,O,{v:D,p:null}))})})}if(e.forEach(f=>{switch(f.type){case"delete":d.push({id:g.RemoveDataValidationMutation.id,params:{unitId:n,subUnitId:s,ruleId:f.rule.uid,source:a}}),u.unshift({id:g.AddDataValidationMutation.id,params:{unitId:n,subUnitId:s,rule:f.rule,index:f.index,source:a}});break;case"update":{if(Y(f.rule.type,l)){const y=f.oldRanges[0].startRow,T=f.oldRanges[0].startColumn,O=f.newRanges[0].startRow,C=f.newRanges[0].startColumn,A=O-y,z=C-T,Z=o.isFormulaString(f.rule.formula1)?i.moveFormulaRefOffset(f.rule.formula1,z,A):f.rule.formula1,J=o.isFormulaString(f.rule.formula2)?i.moveFormulaRefOffset(f.rule.formula2,z,A):f.rule.formula2;Z!==f.rule.formula1||J!==f.rule.formula2||!o.isRangesEqual(f.newRanges,f.oldRanges)?(d.push({id:g.UpdateDataValidationMutation.id,params:{unitId:n,subUnitId:s,ruleId:f.ruleId,payload:{type:g.UpdateRuleType.ALL,payload:{formula1:Z,formula2:J,ranges:f.newRanges}}}}),u.unshift({id:g.UpdateDataValidationMutation.id,params:{unitId:n,subUnitId:s,ruleId:f.ruleId,payload:{type:g.UpdateRuleType.ALL,payload:{formula1:f.rule.formula1,formula2:f.rule.formula2,ranges:f.oldRanges}}}})):(d.push({id:g.UpdateDataValidationMutation.id,params:{unitId:n,subUnitId:s,ruleId:f.ruleId,payload:{type:g.UpdateRuleType.RANGE,payload:f.newRanges},source:a}}),u.unshift({id:g.UpdateDataValidationMutation.id,params:{unitId:n,subUnitId:s,ruleId:f.ruleId,payload:{type:g.UpdateRuleType.RANGE,payload:f.oldRanges},source:a}}))}else d.push({id:g.UpdateDataValidationMutation.id,params:{unitId:n,subUnitId:s,ruleId:f.ruleId,payload:{type:g.UpdateRuleType.RANGE,payload:f.newRanges},source:a}}),u.unshift({id:g.UpdateDataValidationMutation.id,params:{unitId:n,subUnitId:s,ruleId:f.ruleId,payload:{type:g.UpdateRuleType.RANGE,payload:f.oldRanges},source:a}});const D=c.getRuleById(n,s,f.ruleId);if(D&&D.type===o.DataValidationType.CHECKBOX){const T=c.getValidator(o.DataValidationType.CHECKBOX).parseFormulaSync(D,n,s);V(f.newRanges,T.formula2)}break}case"add":{if(d.push({id:g.AddDataValidationMutation.id,params:{unitId:n,subUnitId:s,rule:f.rule,source:a}}),u.unshift({id:g.RemoveDataValidationMutation.id,params:{unitId:n,subUnitId:s,ruleId:f.rule.uid,source:a}}),f.rule.type===o.DataValidationType.CHECKBOX){const y=c.getValidator(o.DataValidationType.CHECKBOX).parseFormulaSync(f.rule,n,s);V(f.rule.ranges,y.originFormula2)}break}}}),_){const f={id:R.SetRangeValuesMutation.id,params:{unitId:n,subUnitId:s,cellValue:v.getData()}},D={id:R.SetRangeValuesMutation.id,params:R.SetRangeValuesUndoMutationFactory(t,f.params)};d.push(f),u.push(D)}return{redoMutations:d,undoMutations:u}}const Fe={type:o.CommandType.COMMAND,id:"sheet.command.updateDataValidationRuleRange",handler(n,s){if(!s)return!1;const{unitId:e,subUnitId:t,ranges:a,ruleId:r}=s,i=n.get(exports.SheetDataValidationModel),l=n.get(o.ICommandService),d=n.get(o.IUndoRedoService);if(!i.getRuleById(e,t,r))return!1;const c=i.getRuleObjectMatrix(e,t).clone();c.updateRange(r,a);const h=c.diff(i.getRules(e,t)),{redoMutations:m,undoMutations:S}=K(e,t,h,n);return d.pushUndoRedo({undoMutations:S,redoMutations:m,unitID:e}),o.sequenceExecute(m,l),!0}},Ie={type:o.CommandType.COMMAND,id:"sheet.command.addDataValidation",handler(n,s){if(!s)return!1;const{unitId:e,subUnitId:t,rule:a}=s,r=n.get(exports.SheetDataValidationModel),i=n.get(o.ICommandService),l=n.get(o.IUndoRedoService),d=r.getRuleObjectMatrix(e,t).clone();d.addRule(a);const u=d.diff(r.getRules(e,t)),c=r.getValidator(a.type),h={unitId:e,subUnitId:t,rule:{...a,...c==null?void 0:c.normalizeFormula(a,e,t)}},{redoMutations:m,undoMutations:S}=K(e,t,u,n);return m.push({id:g.AddDataValidationMutation.id,params:h}),S.unshift({id:g.RemoveDataValidationMutation.id,params:{unitId:e,subUnitId:t,ruleId:a.uid}}),l.pushUndoRedo({unitID:e,redoMutations:m,undoMutations:S}),o.sequenceExecute(m,i),!0}},Ne={type:o.CommandType.COMMAND,id:"sheets.command.update-data-validation-setting",handler(n,s){if(!s)return!1;const e=n.get(o.ICommandService),t=n.get(o.IUndoRedoService),a=n.get(exports.SheetDataValidationModel),r=n.get(g.DataValidatorRegistryService),{unitId:i,subUnitId:l,ruleId:d,setting:u}=s,c=r.getValidatorItem(u.type);if(!c)return!1;const h=a.getRuleById(i,l,d);if(!h)return!1;const m={...h,...u};if(!c.validatorFormula(m,i,l).success)return!1;const S={unitId:i,subUnitId:l,ruleId:d,payload:{type:g.UpdateRuleType.SETTING,payload:{...u,...c.normalizeFormula(m,i,l)}}},v=[{id:g.UpdateDataValidationMutation.id,params:S}],_={unitId:i,subUnitId:l,ruleId:d,payload:{type:g.UpdateRuleType.SETTING,payload:g.getRuleSetting(h)}},V=[{id:g.UpdateDataValidationMutation.id,params:_}];if(u.type===o.DataValidationType.CHECKBOX){const D=h.ranges,y=n.get(o.IUniverInstanceService),T=R.getSheetCommandTarget(y,{unitId:i,subUnitId:l});if(T){const O=new o.ObjectMatrix,{worksheet:C}=T,{formula2:A=k,formula1:z=$}=h,{formula2:Z=k,formula1:J=$}=u;let de=!1;if(D.forEach(ee=>{o.Range.foreach(ee,(x,ue)=>{const F=C.getCellRaw(x,ue),Ve=ye(F);(Oe(F)||Ve===String(A))&&!(F!=null&&F.p)?(O.setValue(x,ue,{v:Z,p:null}),de=!0):Ve===String(z)&&!(F!=null&&F.p)&&(O.setValue(x,ue,{v:J,p:null}),de=!0)})}),de){const ee={id:R.SetRangeValuesMutation.id,params:{unitId:i,subUnitId:l,cellValue:O.getData()}},x={id:R.SetRangeValuesMutation.id,params:R.SetRangeValuesUndoMutationFactory(n,ee.params)};v.push(ee),V.push(x)}}}return o.sequenceExecute(v,e).result?(t.pushUndoRedo({unitID:i,redoMutations:v,undoMutations:V}),!0):!1}},Ae={type:o.CommandType.COMMAND,id:"sheets.command.update-data-validation-options",handler(n,s){if(!s)return!1;const e=n.get(o.ICommandService),t=n.get(o.IUndoRedoService),a=n.get(exports.SheetDataValidationModel),{unitId:r,subUnitId:i,ruleId:l,options:d}=s,u=a.getRuleById(r,i,l);if(!u)return!1;const c={unitId:r,subUnitId:i,ruleId:l,payload:{type:g.UpdateRuleType.OPTIONS,payload:d}},h=[{id:g.UpdateDataValidationMutation.id,params:c}],m={unitId:r,subUnitId:i,ruleId:l,payload:{type:g.UpdateRuleType.OPTIONS,payload:g.getRuleOptions(u)}},S=[{id:g.UpdateDataValidationMutation.id,params:m}];return t.pushUndoRedo({unitID:r,redoMutations:h,undoMutations:S}),e.executeCommand(g.UpdateDataValidationMutation.id,c),!0}},Ue={type:o.CommandType.COMMAND,id:"sheets.command.clear-range-data-validation",handler(n,s){if(!s)return!1;const{unitId:e,subUnitId:t,ranges:a}=s,r=n.get(o.ICommandService),i=n.get(o.IUniverInstanceService),l=R.getSheetCommandTarget(i,{unitId:e,subUnitId:t}),d=n.get(exports.SheetDataValidationModel);if(!l)return!1;const u=n.get(o.IUndoRedoService),c=d.getRuleObjectMatrix(e,t).clone();c.removeRange(a);const h=c.diff(d.getRules(e,t)),{redoMutations:m,undoMutations:S}=K(e,t,h,n);return u.pushUndoRedo({unitID:e,redoMutations:m,undoMutations:S}),o.sequenceExecute(m,r).result}},we={type:o.CommandType.COMMAND,id:"sheet.command.remove-all-data-validation",handler(n,s){if(!s)return!1;const{unitId:e,subUnitId:t}=s,a=n.get(o.ICommandService),r=n.get(exports.SheetDataValidationModel),i=n.get(o.IUndoRedoService),l=[...r.getRules(e,t)],d={unitId:e,subUnitId:t,ruleId:l.map(h=>h.uid)},u=[{id:g.RemoveDataValidationMutation.id,params:d}],c=[{id:g.AddDataValidationMutation.id,params:{unitId:e,subUnitId:t,rule:l}}];return i.pushUndoRedo({redoMutations:u,undoMutations:c,unitID:e}),a.executeCommand(g.RemoveDataValidationMutation.id,d),!0}},lt=(n,s)=>{const e=n.get(exports.SheetDataValidationModel),{unitId:t,subUnitId:a,ruleId:r,source:i}=s;if(Array.isArray(r)){const d=r.map(u=>e.getRuleById(t,a,u)).filter(Boolean);return[{id:g.AddDataValidationMutation.id,params:{unitId:t,subUnitId:a,rule:d,source:i}}]}return[{id:g.AddDataValidationMutation.id,params:{unitId:t,subUnitId:a,rule:{...e.getRuleById(t,a,r)},index:e.getRuleIndex(t,a,r)}}]},be={type:o.CommandType.COMMAND,id:"sheet.command.remove-data-validation-rule",handler(n,s){if(!s)return!1;const{unitId:e,subUnitId:t,ruleId:a}=s,r=n.get(o.ICommandService),i=n.get(o.IUndoRedoService),l=n.get(exports.SheetDataValidationModel),d=[{id:g.RemoveDataValidationMutation.id,params:s}],u=[{id:g.AddDataValidationMutation.id,params:{unitId:e,subUnitId:t,rule:{...l.getRuleById(e,t,a)},index:l.getRuleIndex(e,t,a)}}];return i.pushUndoRedo({undoMutations:u,redoMutations:d,unitID:s.unitId}),r.executeCommand(g.RemoveDataValidationMutation.id,s),!0}},Le="SHEET_DATA_VALIDATION_PLUGIN";var Be=(n=>(n[n.View=0]="View",n[n.Edit=1]="Edit",n[n.ManageCollaborator=2]="ManageCollaborator",n[n.Print=3]="Print",n[n.Duplicate=4]="Duplicate",n[n.Comment=5]="Comment",n[n.Copy=6]="Copy",n[n.Share=7]="Share",n[n.Export=8]="Export",n[n.MoveWorksheet=9]="MoveWorksheet",n[n.DeleteWorksheet=10]="DeleteWorksheet",n[n.HideWorksheet=11]="HideWorksheet",n[n.RenameWorksheet=12]="RenameWorksheet",n[n.CreateWorksheet=13]="CreateWorksheet",n[n.SetWorksheetStyle=14]="SetWorksheetStyle",n[n.EditWorksheetCell=15]="EditWorksheetCell",n[n.InsertHyperlink=16]="InsertHyperlink",n[n.Sort=17]="Sort",n[n.Filter=18]="Filter",n[n.PivotTable=19]="PivotTable",n[n.FloatImg=20]="FloatImg",n[n.History=21]="History",n[n.RwHgtClWdt=22]="RwHgtClWdt",n[n.ViemRwHgtClWdt=23]="ViemRwHgtClWdt",n[n.ViewFilter=24]="ViewFilter",n[n.MoveSheet=25]="MoveSheet",n[n.DeleteSheet=26]="DeleteSheet",n[n.HideSheet=27]="HideSheet",n[n.CopySheet=28]="CopySheet",n[n.RenameSheet=29]="RenameSheet",n[n.CreateSheet=30]="CreateSheet",n[n.SelectProtectedCells=31]="SelectProtectedCells",n[n.SelectUnProtectedCells=32]="SelectUnProtectedCells",n[n.SetCellStyle=33]="SetCellStyle",n[n.SetCellValue=34]="SetCellValue",n[n.SetRowStyle=35]="SetRowStyle",n[n.SetColumnStyle=36]="SetColumnStyle",n[n.InsertRow=37]="InsertRow",n[n.InsertColumn=38]="InsertColumn",n[n.DeleteRow=39]="DeleteRow",n[n.DeleteColumn=40]="DeleteColumn",n[n.EditExtraObject=41]="EditExtraObject",n[n.Delete=42]="Delete",n[n.RecoverHistory=43]="RecoverHistory",n[n.ViewHistory=44]="ViewHistory",n[n.CreatePermissionObject=45]="CreatePermissionObject",n[n.UNRECOGNIZED=-1]="UNRECOGNIZED",n))(Be||{}),dt=Object.getOwnPropertyDescriptor,ut=(n,s,e,t)=>{for(var a=t>1?void 0:t?dt(s,e):s,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=i(a)||a);return a},me=(n,s)=>(e,t)=>s(e,t,n);exports.DataValidationFormulaController=class extends o.Disposable{constructor(s,e,t){super(),this._univerInstanceService=s,this._permissionService=e,this._lexerTreeBuilder=t}getFormulaRefCheck(s){var t,a;const e=this._lexerTreeBuilder.sequenceNodesBuilder(s);if(!e)return!0;for(let r=0;r<e.length;r++){const i=e[r];if(typeof i=="string")continue;const{token:l}=i,d=M.deserializeRangeWithSheetWithCache(l),u=this._univerInstanceService.getCurrentUnitForType(o.UniverInstanceType.UNIVER_SHEET);let c=u.getActiveSheet();const h=u.getUnitId();if(d.sheetName){if(c=u.getSheetBySheetName(d.sheetName),!c)return!1;const V=c==null?void 0:c.getSheetId();if(!this._permissionService.getPermissionPoint(new R.WorksheetViewPermission(h,V).id))return!1}if(!c)return!1;const{startRow:m,endRow:S,startColumn:v,endColumn:_}=d.range;for(let V=m;V<=S;V++)for(let f=v;f<=_;f++){const D=(a=(t=c.getCell(V,f))==null?void 0:t.selectionProtection)==null?void 0:a[0];if((D==null?void 0:D[Be.View])===!1)return!1}}return!0}};exports.DataValidationFormulaController=ut([me(0,o.IUniverInstanceService),me(1,o.IPermissionService),me(2,o.Inject(M.LexerTreeBuilder))],exports.DataValidationFormulaController);const ct="@univerjs/sheets-data-validation",ht="0.17.0",xe={name:ct,version:ht},mt="sheets-data-validation.config",Ee={};var pt=Object.getOwnPropertyDescriptor,gt=(n,s,e,t)=>{for(var a=t>1?void 0:t?pt(s,e):s,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=i(a)||a);return a},pe=(n,s)=>(e,t)=>s(e,t,n);let re=class extends o.Disposable{constructor(s,e,t){super();p(this,"_disposableMap",new Map);p(this,"registerRule",(s,e,t)=>{Y(t.type,this._validatorRegistryService)&&this.register(s,e,t)});this._dataValidationModel=s,this._formulaRefRangeService=e,this._validatorRegistryService=t,this._initRefRange()}_getIdWithUnitId(s,e,t){return`${s}_${e}_${t}`}register(s,e,t){const a=t.ranges,r=t.formula1,i=t.formula2,l=this._formulaRefRangeService.registerRangeFormula(s,e,a,[r!=null?r:"",i!=null?i:""],u=>{if(u.length===0)return{undos:[{id:g.AddDataValidationMutation.id,params:{unitId:s,subUnitId:e,rule:t,source:"patched"}}],redos:[{id:g.RemoveDataValidationMutation.id,params:{unitId:s,subUnitId:e,ruleId:t.uid,source:"patched"}}]};const c=[],h=[],m=u[0];c.push({id:g.UpdateDataValidationMutation.id,params:{unitId:s,subUnitId:e,ruleId:t.uid,payload:{type:g.UpdateRuleType.ALL,payload:{ranges:m.ranges,formula1:m.formulas[0],formula2:m.formulas[1]}},source:"patched"}}),h.push({id:g.UpdateDataValidationMutation.id,params:{unitId:s,subUnitId:e,ruleId:t.uid,payload:{type:g.UpdateRuleType.ALL,payload:{ranges:a,formula1:r,formula2:i}},source:"patched"}});for(let S=1;S<u.length;S++){const v=u[S],_=o.generateRandomId();c.push({id:g.AddDataValidationMutation.id,params:{unitId:s,subUnitId:e,rule:{...t,uid:_,formula1:v.formulas[0],formula2:v.formulas[1],ranges:v.ranges},source:"patched"}}),h.push({id:g.RemoveDataValidationMutation.id,params:{unitId:s,subUnitId:e,ruleId:_,source:"patched"}})}return{undos:h,redos:c}}),d=this._getIdWithUnitId(s,e,t.uid);this._disposableMap.set(d,l)}_initRefRange(){const s=this._dataValidationModel.getAll();for(const[e,t]of s)for(const[a,r]of t)for(const i of r)this.registerRule(e,a,i);this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(e=>{const{unitId:t,subUnitId:a,rule:r}=e;switch(e.type){case"add":{const i=e.rule;this.registerRule(e.unitId,e.subUnitId,i);break}case"remove":{const i=this._disposableMap.get(this._getIdWithUnitId(t,a,r.uid));i&&i.dispose();break}case"update":{const i=e.rule,l=this._disposableMap.get(this._getIdWithUnitId(t,a,i.uid));l&&l.dispose(),this.registerRule(e.unitId,e.subUnitId,i);break}}})),this.disposeWithMe(o.toDisposable(()=>{this._disposableMap.forEach(e=>{e.dispose()}),this._disposableMap.clear()}))}};re=gt([pe(0,o.Inject(exports.SheetDataValidationModel)),pe(1,o.Inject(fe.FormulaRefRangeService)),pe(2,o.Inject(g.DataValidatorRegistryService))],re);var St=Object.getOwnPropertyDescriptor,ft=(n,s,e,t)=>{for(var a=t>1?void 0:t?St(s,e):s,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=i(a)||a);return a},w=(n,s)=>(e,t)=>s(e,t,n);let ie=class extends o.Disposable{constructor(s,e,t,a,r,i){super();p(this,"_disposableMap",new Map);p(this,"registerRule",(s,e,t)=>{Y(t.type,this._validatorRegistryService)||(this.register(s,e,t),this.registerFormula(s,e,t))});this._dataValidationModel=s,this._injector=e,this._refRangeService=t,this._dataValidationFormulaService=a,this._formulaRefRangeService=r,this._validatorRegistryService=i,this._initRefRange()}_getIdWithUnitId(s,e,t){return`${s}_${e}_${t}`}registerFormula(s,e,t){var u;const a=t.uid,r=this._getIdWithUnitId(s,e,a),i=(u=this._disposableMap.get(r))!=null?u:new Set,l=(c,h)=>{const m=this._dataValidationModel.getRuleById(s,e,a);if(!m)return{redos:[],undos:[]};const S=m[c];if(!S||S===h)return{redos:[],undos:[]};const v={unitId:s,subUnitId:e,ruleId:t.uid,payload:{type:g.UpdateRuleType.SETTING,payload:{type:m.type,formula1:m.formula1,formula2:m.formula2,[c]:h}},source:"patched"},_={unitId:s,subUnitId:e,ruleId:t.uid,payload:{type:g.UpdateRuleType.SETTING,payload:{type:m.type,formula1:m.formula1,formula2:m.formula2}},source:"patched"},V=[{id:g.UpdateDataValidationMutation.id,params:v}],f=[{id:g.UpdateDataValidationMutation.id,params:_}];return{redos:V,undos:f}},d=this._dataValidationFormulaService.getRuleFormulaInfo(s,e,a);if(d){const[c,h]=d;if(c){const m=this._formulaRefRangeService.registerFormula(s,e,c.text,S=>l("formula1",S));i.add(()=>m.dispose())}if(h){const m=this._formulaRefRangeService.registerFormula(s,e,h.text,S=>l("formula2",S));i.add(()=>m.dispose())}}}register(s,e,t){var d;const a=u=>{const c=[...t.ranges],m=c.map(v=>R.handleCommonDefaultRangeChangeWithEffectRefCommands(v,u)).filter(v=>!!v).flat();if(o.isRangesEqual(m,c))return{redos:[],undos:[]};if(m.length){const v={unitId:s,subUnitId:e,ruleId:t.uid,payload:{type:g.UpdateRuleType.RANGE,payload:m},source:"patched"},_=[{id:g.UpdateDataValidationMutation.id,params:v}],V=[{id:g.UpdateDataValidationMutation.id,params:{unitId:s,subUnitId:e,ruleId:t.uid,payload:{type:g.UpdateRuleType.RANGE,payload:c},source:"patched"}}];return{redos:_,undos:V}}else{const v={unitId:s,subUnitId:e,ruleId:t.uid},_=[{id:g.RemoveDataValidationMutation.id,params:v}],V=lt(this._injector,v);return{redos:_,undos:V}}},r=[];t.ranges.forEach(u=>{const c=this._refRangeService.registerRefRange(u,a,s,e);r.push(()=>c.dispose())});const i=this._getIdWithUnitId(s,e,t.uid),l=(d=this._disposableMap.get(i))!=null?d:new Set;l.add(()=>r.forEach(u=>u())),this._disposableMap.set(i,l)}_initRefRange(){const s=this._dataValidationModel.getAll();for(const[e,t]of s)for(const[a,r]of t)for(const i of r)this.registerRule(e,a,i);this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(e=>{const{unitId:t,subUnitId:a,rule:r}=e;switch(e.type){case"add":{const i=e.rule;this.registerRule(e.unitId,e.subUnitId,i);break}case"remove":{const i=this._disposableMap.get(this._getIdWithUnitId(t,a,r.uid));i&&i.forEach(l=>l());break}case"update":{const i=e.rule,l=this._disposableMap.get(this._getIdWithUnitId(t,a,i.uid));l&&l.forEach(d=>d()),this.registerRule(e.unitId,e.subUnitId,i);break}}})),this.disposeWithMe(o.toDisposable(()=>{this._disposableMap.forEach(e=>{e.forEach(t=>t())}),this._disposableMap.clear()}))}};ie=ft([w(0,o.Inject(exports.SheetDataValidationModel)),w(1,o.Inject(o.Injector)),w(2,o.Inject(R.RefRangeService)),w(3,o.Inject(exports.DataValidationFormulaService)),w(4,o.Inject(fe.FormulaRefRangeService)),w(5,o.Inject(g.DataValidatorRegistryService))],ie);var vt=Object.getOwnPropertyDescriptor,_t=(n,s,e,t)=>{for(var a=t>1?void 0:t?vt(s,e):s,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=i(a)||a);return a},ge=(n,s)=>(e,t)=>s(e,t,n);let oe=class extends o.Disposable{constructor(n,s,e){super(),this._sheetInterceptorService=n,this._univerInstanceService=s,this._sheetDataValidationModel=e,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:n=>{var s;if(n.id===R.RemoveSheetCommand.id){const e=n.params,t=e.unitId||this._univerInstanceService.getCurrentUnitForType(o.UniverInstanceType.UNIVER_SHEET).getUnitId(),a=this._univerInstanceService.getUniverSheetInstance(t);if(!a)return{redos:[],undos:[]};const r=e.subUnitId||((s=a.getActiveSheet())==null?void 0:s.getSheetId());if(!r)return{redos:[],undos:[]};const i=this._sheetDataValidationModel.getRules(t,r);if(i.length===0)return{redos:[],undos:[]};const l=i.map(c=>c.uid),d={unitId:t,subUnitId:r,ruleId:l,source:"patched"},u={unitId:t,subUnitId:r,rule:[...i],source:"patched"};return{redos:[{id:g.RemoveDataValidationMutation.id,params:d}],undos:[{id:g.AddDataValidationMutation.id,params:u}]}}else if(n.id===R.CopySheetCommand.id){const e=n.params,{unitId:t,subUnitId:a,targetSubUnitId:r}=e;if(!t||!a||!r)return{redos:[],undos:[]};const i=this._sheetDataValidationModel.getRules(t,a);if(i.length===0)return{redos:[],undos:[]};const l=i.map(d=>({...d,uid:o.generateRandomId(6)}));return{redos:[{id:g.AddDataValidationMutation.id,params:{unitId:t,subUnitId:r,rule:l,source:"patched"}}],undos:[{id:g.RemoveDataValidationMutation.id,params:{unitId:t,subUnitId:r,ruleId:l.map(d=>d.uid),source:"patched"}}]}}return{redos:[],undos:[]}}}))}};oe=_t([ge(0,o.Inject(R.SheetInterceptorService)),ge(1,o.Inject(o.IUniverInstanceService)),ge(2,o.Inject(exports.SheetDataValidationModel))],oe);class Vt extends g.BaseDataValidator{constructor(){super(...arguments);p(this,"id",o.DataValidationType.ANY);p(this,"title","dataValidation.any.title");p(this,"operators",[]);p(this,"scopes",["sheet"]);p(this,"order",0);p(this,"offsetFormulaByRange",!1)}async parseFormula(e,t,a){return{formula1:e.formula1,formula2:e.formula2,isFormulaValid:!0}}validatorFormula(e,t,a){return{success:!0}}async isValidType(e,t,a){return!0}generateRuleErrorMessage(e){return this.localeService.t("dataValidation.any.error")}}class Rt extends g.BaseDataValidator{constructor(){super(...arguments);p(this,"id",o.DataValidationType.CUSTOM);p(this,"title","dataValidation.custom.title");p(this,"operators",[]);p(this,"scopes",["sheet"]);p(this,"order",60);p(this,"_customFormulaService",this.injector.get(exports.DataValidationCustomFormulaService));p(this,"_lexerTreeBuilder",this.injector.get(M.LexerTreeBuilder))}validatorFormula(e,t,a){var u;const r=o.isFormulaString(e.formula1),i=(u=e.formula1)!=null?u:"",d=this._lexerTreeBuilder.checkIfAddBracket(i)===0&&i.startsWith(M.operatorToken.EQUALS);return{success:r&&d,formula1:r&&d?"":this.localeService.t("dataValidation.validFail.formula")}}async parseFormula(e,t,a){return{formula1:void 0,formula2:void 0,isFormulaValid:!0}}async isValidType(e,t,a){const{column:r,row:i,unitId:l,subUnitId:d}=e,u=await this._customFormulaService.getCellFormulaValue(l,d,a.uid,i,r),c=u==null?void 0:u.v;return E(String(c))&&o.Tools.isDefine(c)&&c!==""?u.t===o.CellValueType.BOOLEAN?!!c:typeof c=="boolean"?c:typeof c=="number"?!!c:typeof c=="string"?E(c):!!c:!1}generateRuleErrorMessage(e){return this.localeService.t("dataValidation.custom.error")}generateRuleName(e){var t;return this.localeService.t("dataValidation.custom.ruleName").replace("{FORMULA1}",(t=e.formula1)!=null?t:"")}}class je extends _e{constructor(){super(...arguments);p(this,"id",o.DataValidationType.LIST_MULTIPLE);p(this,"title","dataValidation.listMultiple.title");p(this,"offsetFormulaByRange",!1);p(this,"skipDefaultFontRender",()=>!0)}}class Dt extends g.BaseDataValidator{constructor(){super(...arguments);p(this,"_customFormulaService",this.injector.get(exports.DataValidationCustomFormulaService));p(this,"_lexerTreeBuilder",this.injector.get(M.LexerTreeBuilder));p(this,"id",o.DataValidationType.WHOLE);p(this,"title","dataValidation.whole.title");p(this,"order",10);p(this,"operators",[o.DataValidationOperator.BETWEEN,o.DataValidationOperator.EQUAL,o.DataValidationOperator.GREATER_THAN,o.DataValidationOperator.GREATER_THAN_OR_EQUAL,o.DataValidationOperator.LESS_THAN,o.DataValidationOperator.LESS_THAN_OR_EQUAL,o.DataValidationOperator.NOT_BETWEEN,o.DataValidationOperator.NOT_EQUAL]);p(this,"scopes",["sheet"])}_isFormulaOrInt(e){return!o.Tools.isBlank(e)&&(o.isFormulaString(e)||!Number.isNaN(+e)&&Number.isInteger(+e))}async isValidType(e,t,a){const{value:r}=e,i=G(r);return!Number.isNaN(i)&&Number.isInteger(i)}transform(e,t,a){const{value:r}=e;return{...e,value:G(r)}}_parseNumber(e){return e==null?Number.NaN:+e}async parseFormula(e,t,a,r,i){const l=await this._customFormulaService.getCellFormulaValue(t,a,e.uid,r,i),d=await this._customFormulaService.getCellFormula2Value(t,a,e.uid,r,i),{formula1:u,formula2:c}=e,h=o.isFormulaString(u)?l==null?void 0:l.v:u,m=o.isFormulaString(c)?d==null?void 0:d.v:c,S=E(`${h}`)&&E(`${m}`);return{formula1:this._parseNumber(h),formula2:this._parseNumber(m),isFormulaValid:S}}validatorFormula(e,t,a){const r=e.operator;if(!r)return{success:!0};const i=o.Tools.isDefine(e.formula1)&&this._isFormulaOrInt(e.formula1),l=o.Tools.isDefine(e.formula2)&&this._isFormulaOrInt(e.formula2),d=se.includes(r),u=this.localeService.t("dataValidation.validFail.number");return d?{success:i&&l,formula1:i?void 0:u,formula2:l?void 0:u}:{success:i,formula1:u}}generateRuleErrorMessage(e,t){if(!e.operator)return this.localeService.t(ae.NONE).replace("{TYPE}",this.titleStr);const{transformedFormula1:a,transformedFormula2:r}=X(this._lexerTreeBuilder,e,t);return`${this.localeService.t(ae[e.operator]).replace(q,a!=null?a:"").replace(Q,r!=null?r:"")}`}}var Mt=Object.getOwnPropertyDescriptor,Et=(n,s,e,t)=>{for(var a=t>1?void 0:t?Mt(s,e):s,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=i(a)||a);return a},b=(n,s)=>(e,t)=>s(e,t,n);let ne=class extends o.RxDisposable{constructor(n,s,e,t,a,r){super(),this._univerInstanceService=n,this._dataValidatorRegistryService=s,this._injector=e,this._selectionManagerService=t,this._sheetInterceptorService=a,this._sheetDataValidationModel=r,this._init()}_init(){this._registerValidators(),this._initCommandInterceptor()}_registerValidators(){[Vt,at,Dt,st,Ce,Te,_e,je,Rt].forEach(n=>{const s=this._injector.createInstance(n);this.disposeWithMe(this._dataValidatorRegistryService.register(s)),this.disposeWithMe(o.toDisposable(()=>this._injector.delete(n)))})}_initCommandInterceptor(){this._sheetInterceptorService.interceptCommand({getMutations:n=>{var s;if(n.id===R.ClearSelectionAllCommand.id){const e=this._univerInstanceService.getCurrentUnitForType(o.UniverInstanceType.UNIVER_SHEET),t=e.getUnitId(),a=e.getActiveSheet();if(!a)throw new Error("No active sheet found");const r=a.getSheetId(),i=(s=this._selectionManagerService.getCurrentSelections())==null?void 0:s.map(h=>h.range),l=this._sheetDataValidationModel.getRuleObjectMatrix(t,r).clone();i&&l.removeRange(i);const d=l.diff(this._sheetDataValidationModel.getRules(t,r)),{redoMutations:u,undoMutations:c}=K(t,r,d,this._injector,"patched");return{undos:c,redos:u}}return{undos:[],redos:[]}}})}};ne=Et([b(0,o.IUniverInstanceService),b(1,o.Inject(g.DataValidatorRegistryService)),b(2,o.Inject(o.Injector)),b(3,o.Inject(R.SheetsSelectionsService)),b(4,o.Inject(R.SheetInterceptorService)),b(5,o.Inject(exports.SheetDataValidationModel))],ne);var yt=Object.getOwnPropertyDescriptor,Tt=(n,s,e,t)=>{for(var a=t>1?void 0:t?yt(s,e):s,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=i(a)||a);return a},te=(n,s)=>(e,t)=>s(e,t,n);exports.SheetsDataValidationValidatorService=class extends o.Disposable{constructor(s,e,t,a){super(),this._univerInstanceService=s,this._sheetDataValidationModel=e,this._dataValidationCacheService=t,this._lifecycleService=a,this._initRecalculate()}_initRecalculate(){const s=e=>{if(e.length===0)return;const t=this._univerInstanceService.getCurrentUnitForType(o.UniverInstanceType.UNIVER_SHEET),a=t==null?void 0:t.getActiveSheet(),r={};e.flat().forEach(i=>{r[i.unitId]||(r[i.unitId]={}),r[i.unitId][i.subUnitId]||(r[i.unitId][i.subUnitId]=[]);const l=this._univerInstanceService.getUnit(i.unitId,o.UniverInstanceType.UNIVER_SHEET),d=l==null?void 0:l.getSheetBySheetId(i.subUnitId);d&&r[i.unitId][i.subUnitId].push(...i.ranges.map(u=>o.Range.transformRange(u,d)))}),Object.entries(r).forEach(([i,l])=>{Object.entries(l).forEach(([d,u])=>{(t==null?void 0:t.getUnitId())===i&&(a==null?void 0:a.getSheetId())===d?this.validatorRanges(i,d,u):requestIdleCallback(()=>{this.validatorRanges(i,d,u)})})})};this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.pipe(B.bufferWhen(()=>this._lifecycleService.lifecycle$.pipe(B.filter(e=>e===o.LifecycleStages.Rendered)))).subscribe(s)),this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.pipe(B.filter(()=>this._lifecycleService.stage>=o.LifecycleStages.Rendered),o.bufferDebounceTime(20)).subscribe(s))}async _validatorByCell(s,e,t,a){const r=s.getUnitId(),i=e.getSheetId();if(!o.Tools.isDefine(t)||!o.Tools.isDefine(a))throw new Error(`row or col is not defined, row: ${t}, col: ${a}`);let l=t,d=a;const u=e.getMergedCell(t,a);u&&(l=u.startRow,d=u.startColumn);const c=this._sheetDataValidationModel.getRuleByLocation(r,i,l,d);return c?new Promise(h=>{this._sheetDataValidationModel.validator(c,{unitId:r,subUnitId:i,row:l,col:d,worksheet:e,workbook:s},m=>{h(m)})}):o.DataValidationStatus.VALID}async validatorCell(s,e,t,a){const r=this._univerInstanceService.getUnit(s,o.UniverInstanceType.UNIVER_SHEET);if(!r)throw new Error(`cannot find current workbook, unitId: ${s}`);const i=r.getSheetBySheetId(e);if(!i)throw new Error(`cannot find current worksheet, sheetId: ${e}`);return this._validatorByCell(r,i,t,a)}async validatorRanges(s,e,t){if(!t.length)return Promise.resolve([]);const a=this._univerInstanceService.getUnit(s,o.UniverInstanceType.UNIVER_SHEET);if(!a)throw new Error(`cannot find current workbook, unitId: ${s}`);const r=a.getSheetBySheetId(e);if(!r)throw new Error(`cannot find current worksheet, sheetId: ${e}`);const l=this._sheetDataValidationModel.getRules(s,e).map(h=>h.ranges).flat(),d=t.map(h=>l.map(m=>o.getIntersectRange(h,m))).flat().filter(Boolean),u=[],c=await Promise.all(d.map((h,m)=>{const S=[];for(let v=h.startRow;v<=h.endRow;v++)for(let _=h.startColumn;_<=h.endColumn;_++){S.push(this._validatorByCell(a,r,v,_));const V=r.getMergedCell(v,_);V&&u.push({resultRowIndex:m,resultColIndex:S.length-1,row:V.startRow,col:V.startColumn})}return Promise.all(S)}));return u.length&&u.forEach(({resultRowIndex:h,resultColIndex:m,row:S,col:v})=>{var _;c[h][m]===o.DataValidationStatus.VALIDATING&&(c[h][m]=(_=this._dataValidationCacheService.getValue(s,e,S,v))!=null?_:o.DataValidationStatus.VALID)}),c}async validatorWorksheet(s,e){const t=this._univerInstanceService.getUnit(s,o.UniverInstanceType.UNIVER_SHEET);if(!t)throw new Error(`cannot find current workbook, unitId: ${s}`);const a=t.getSheetBySheetId(e);if(!a)throw new Error(`cannot find current worksheet, sheetId: ${e}`);const r=this._sheetDataValidationModel.getRules(s,e);return await Promise.all(r.map(i=>Promise.all(i.ranges.map(l=>{const d=[];return o.Range.foreach(l,(u,c)=>{d.push(this._validatorByCell(t,a,u,c))}),Promise.all(d)})))),this._dataValidationCacheService.ensureCache(s,e)}async validatorWorkbook(s){const e=this._sheetDataValidationModel.getSubUnitIds(s),t=await Promise.all(e.map(r=>this.validatorWorksheet(s,r))),a={};return t.forEach((r,i)=>{a[e[i]]=r}),a}getDataValidations(s,e,t){const a=this._sheetDataValidationModel.getRuleObjectMatrix(s,e),r=new Set;return t.forEach(l=>{o.Range.foreach(l,(d,u)=>{const c=a.getValue(d,u);c&&r.add(c)})}),Array.from(r).map(l=>this._sheetDataValidationModel.getRuleById(s,e,l)).filter(Boolean)}getDataValidation(s,e,t){return this.getDataValidations(s,e,t)[0]}};exports.SheetsDataValidationValidatorService=Tt([te(0,o.IUniverInstanceService),te(1,o.Inject(exports.SheetDataValidationModel)),te(2,o.Inject(exports.DataValidationCacheService)),te(3,o.Inject(o.LifecycleService))],exports.SheetsDataValidationValidatorService);var Ct=Object.defineProperty,Ot=Object.getOwnPropertyDescriptor,Ft=(n,s,e)=>s in n?Ct(n,s,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[s]=e,It=(n,s,e,t)=>{for(var a=t>1?void 0:t?Ot(s,e):s,r=n.length-1,i;r>=0;r--)(i=n[r])&&(a=i(a)||a);return a},Se=(n,s)=>(e,t)=>s(e,t,n),le=(n,s,e)=>Ft(n,typeof s!="symbol"?s+"":s,e);exports.UniverSheetsDataValidationPlugin=class extends o.Plugin{constructor(s=Ee,e,t,a){super(),this._config=s,this._injector=e,this._commandService=t,this._configService=a;const{...r}=o.merge({},Ee,this._config);this._configService.setConfig(mt,r)}onStarting(){[[exports.DataValidationCacheService],[exports.DataValidationListCacheService],[exports.DataValidationFormulaService],[exports.DataValidationCustomFormulaService],[exports.SheetsDataValidationValidatorService],[exports.SheetDataValidationModel],[ne],[exports.DataValidationFormulaController],[oe],[ie],[re]].forEach(s=>{this._injector.add(s)}),[Ie,Fe,Ne,Ae,be,we,Ue].forEach(s=>{this._commandService.registerCommand(s)}),this._injector.get(exports.DataValidationCacheService),this._injector.get(exports.SheetsDataValidationValidatorService),this._injector.get(ne),this._injector.get(re),this._injector.get(ie)}onReady(){this._injector.get(oe)}onRendered(){this._injector.get(exports.DataValidationFormulaController)}};le(exports.UniverSheetsDataValidationPlugin,"pluginName",Le);le(exports.UniverSheetsDataValidationPlugin,"packageName",xe.name);le(exports.UniverSheetsDataValidationPlugin,"version",xe.version);le(exports.UniverSheetsDataValidationPlugin,"type",o.UniverInstanceType.UNIVER_SHEET);exports.UniverSheetsDataValidationPlugin=It([o.DependentOn(fe.UniverSheetsFormulaPlugin,g.UniverDataValidationPlugin),Se(1,o.Inject(o.Injector)),Se(2,o.ICommandService),Se(3,o.IConfigService)],exports.UniverSheetsDataValidationPlugin);function Nt(n){const e=n.get(R.SheetsSelectionsService).getCurrentSelections().map(r=>r.range);return{uid:o.generateRandomId(6),type:o.DataValidationType.DECIMAL,operator:o.DataValidationOperator.EQUAL,formula1:"100",ranges:e!=null?e:[{startColumn:0,endColumn:0,startRow:0,endRow:0}]}}const At="data-validation.custom-formula-input",Ut="data-validation.formula-input",wt="data-validation.list-formula-input",bt="data-validation.checkbox-formula-input";exports.AddSheetDataValidationCommand=Ie;exports.BASE_FORMULA_INPUT_NAME=Ut;exports.CHECKBOX_FORMULA_1=$;exports.CHECKBOX_FORMULA_2=k;exports.CHECKBOX_FORMULA_INPUT_NAME=bt;exports.CUSTOM_FORMULA_INPUT_NAME=At;exports.CheckboxValidator=Te;exports.ClearRangeDataValidationCommand=Ue;exports.DATA_VALIDATION_PLUGIN_NAME=Le;exports.DateValidator=Ce;exports.LIST_FORMULA_INPUT_NAME=wt;exports.ListMultipleValidator=je;exports.ListValidator=_e;exports.RemoveSheetAllDataValidationCommand=we;exports.RemoveSheetDataValidationCommand=be;exports.UpdateSheetDataValidationOptionsCommand=Ae;exports.UpdateSheetDataValidationRangeCommand=Fe;exports.UpdateSheetDataValidationSettingCommand=Ne;exports.createDefaultNewRule=Nt;exports.deserializeListOptions=W;exports.getCellValueNumber=G;exports.getCellValueOrigin=N;exports.getDataValidationCellValue=Ge;exports.getDataValidationDiffMutations=K;exports.getFormulaCellData=P;exports.getFormulaResult=L;exports.getTransformedFormula=X;exports.isLegalFormulaResult=E;exports.serializeListOptions=Qe;exports.transformCheckboxValue=H;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@univerjs/core`),t=require(`@univerjs/data-validation`),n=require(`@univerjs/engine-formula`),r=require(`@univerjs/sheets`),i=require(`rxjs`),a=require(`@univerjs/protocol`),o=require(`@univerjs/sheets-formula`);function s(e){"@babel/helpers - typeof";return s=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},s(e)}function c(e,t){if(s(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(s(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function l(e){var t=c(e,`string`);return s(t)==`symbol`?t:t+``}function u(e,t,n){return(t=l(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(e,t){return function(n,r){t(n,r,e)}}function f(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let p=class extends e.Disposable{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._sheetDataValidationModel=n,u(this,`_cacheMatrix`,new Map),u(this,`_dirtyRanges$`,new i.Subject),u(this,`dirtyRanges$`,this._dirtyRanges$.asObservable()),this._initDirtyRanges(),this._initSheetRemove()}_initDirtyRanges(){this.disposeWithMe(this._commandService.onCommandExecuted((t,n)=>{if(t.id===r.SetRangeValuesMutation.id&&!(n!=null&&n.onlyLocal)){let{cellValue:n,unitId:r,subUnitId:i}=t.params;if(n){let t=new e.ObjectMatrix(n).getDataRange();if(t.endRow===-1)return;let a=this._sheetDataValidationModel.getRules(r,i).map(e=>e.ranges).flat().map(n=>(0,e.getIntersectRange)(n,t)).filter(Boolean);a.length&&this.markRangeDirty(r,i,a,!0)}}}))}_initSheetRemove(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===r.RemoveSheetMutation.id){var t;let{unitId:n,subUnitId:r}=e.params;(t=this._cacheMatrix.get(n))==null||t.delete(r)}})),this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(t=>{t.type===e.UniverInstanceType.UNIVER_SHEET&&this._cacheMatrix.delete(t.getUnitId())}))}_ensureCache(t,n){let r=this._cacheMatrix.get(t);r||(r=new Map,this._cacheMatrix.set(t,r));let i=r.get(n);return i||(i=new e.ObjectMatrix,r.set(n,i)),i}ensureCache(e,t){return this._ensureCache(e,t)}addRule(e,t,n){this.markRangeDirty(e,t,n.ranges)}removeRule(e,t,n){this._deleteRange(e,t,n.ranges)}markRangeDirty(t,n,r,i){let a=this._ensureCache(t,n);r.forEach(t=>{e.Range.foreach(t,(e,t)=>{a.getValue(e,t)!==void 0&&a.setValue(e,t,void 0)})}),this._dirtyRanges$.next({unitId:t,subUnitId:n,ranges:r,isSetRange:i})}_deleteRange(t,n,r){let i=this._ensureCache(t,n);r.forEach(t=>{e.Range.foreach(t,(e,t)=>{i.realDeleteValue(e,t)})}),this._dirtyRanges$.next({unitId:t,subUnitId:n,ranges:r})}getValue(e,t,n,r){return this._ensureCache(e,t).getValue(n,r)}};p=f([d(0,(0,e.Inject)(e.ICommandService)),d(1,(0,e.Inject)(e.IUniverInstanceService)),d(2,(0,e.Inject)(t.DataValidationModel))],p);function m(e){var t;return e==null||(t=e[0])==null||(t=t[0])==null?void 0:t.v}function h(e){var t;return e==null||(t=e[0])==null?void 0:t[0]}function g(e){return!n.ERROR_TYPE_SET.has(e)}function _(e,t){var n;let r=t.getValidatorItem(e);return(n=r==null?void 0:r.offsetFormulaByRange)==null?!1:n}let v=class extends e.Disposable{constructor(e,t,n,r,i){super(),this._instanceSrv=e,this._registerOtherFormulaService=t,this._dataValidationModel=n,this._dataValidationCacheService=r,this._validatorRegistryService=i,u(this,`_ruleFormulaMap`,new Map),u(this,`_ruleFormulaMap2`,new Map),this._initFormulaResultHandler(),this._initDirtyRanges()}dispose(){super.dispose(),this._ruleFormulaMap.clear(),this._ruleFormulaMap2.clear()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(t=>{for(let n in t){let r=t[n];if(this._instanceSrv.getUnitType(n)===e.UniverInstanceType.UNIVER_SHEET)for(let e in r){let t=r[e],{ruleFormulaMap:i}=this._ensureMaps(n,e);t.forEach(t=>{var r,a;let o=i.get((r=t.extra)==null?void 0:r.ruleId),s=this._dataValidationModel.getRuleById(n,e,(a=t.extra)==null?void 0:a.ruleId);s&&o&&this._dataValidationCacheService.markRangeDirty(n,e,s.ranges)})}}}))}_ensureMaps(e,t){let n=this._ruleFormulaMap.get(e),r=this._ruleFormulaMap2.get(e);n||(n=new Map,this._ruleFormulaMap.set(e,n)),r||(r=new Map,this._ruleFormulaMap2.set(e,r));let i=n.get(t);i||(i=new Map,n.set(t,i));let a=r.get(t);return a||(a=new Map,r.set(t,a)),{ruleFormulaMap:i,ruleFormulaMap2:a}}_registerFormula(e,t,r,i,a){return this._registerOtherFormulaService.registerFormulaWithRange(e,t,i,a,{ruleId:r},n.OtherFormulaBizType.DATA_VALIDATION_CUSTOM,r)}_handleDirtyRanges(t,n,r){this._dataValidationModel.getRules(t,n).forEach(i=>{let a=i.ranges;e.Rectangle.doAnyRangesIntersect(a,r)&&this.makeRuleDirty(t,n,i.uid)})}_initDirtyRanges(){this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.subscribe(e=>{e.isSetRange&&this._handleDirtyRanges(e.unitId,e.subUnitId,e.ranges)}))}deleteByRuleId(e,t,n){let{ruleFormulaMap:r,ruleFormulaMap2:i}=this._ensureMaps(e,t),a=this._dataValidationModel.getRuleById(e,t,n),o=r.get(n);if(!a||!o)return;let s=r.get(n);s&&(r.delete(n),this._registerOtherFormulaService.deleteFormula(e,t,[s.formulaId]));let c=i.get(n);c&&(i.delete(n),this._registerOtherFormulaService.deleteFormula(e,t,[c.formulaId]))}_addFormulaByRange(t,n,r,i,a,o){let{ruleFormulaMap:s,ruleFormulaMap2:c}=this._ensureMaps(t,n),l=o[0].startRow,u=o[0].startColumn;if(i&&(0,e.isFormulaString)(i)){let e=this._registerFormula(t,n,r,i,o);s.set(r,{formula:i,originCol:u,originRow:l,formulaId:e})}if(a&&(0,e.isFormulaString)(a)){let e=this._registerFormula(t,n,r,a,o);c.set(r,{formula:a,originCol:u,originRow:l,formulaId:e})}}addRule(e,t,n){if(_(n.type,this._validatorRegistryService)){let{ranges:r,formula1:i,formula2:a,uid:o}=n;this._addFormulaByRange(e,t,o,i,a,r)}}async getCellFormulaValue(e,t,n,r,i){var a;let{ruleFormulaMap:o}=this._ensureMaps(e,t),s=o.get(n);if(!s)return Promise.resolve(void 0);let c=await this._registerOtherFormulaService.getFormulaValue(e,t,s.formulaId),{originRow:l,originCol:u}=s,d=r-l,f=i-u;return h(c==null||(a=c.result)==null||(a=a[d])==null?void 0:a[f])}async getCellFormula2Value(e,t,n,r,i){var a;let{ruleFormulaMap2:o}=this._ensureMaps(e,t),s=o.get(n);if(!s)return Promise.resolve(void 0);let c=await this._registerOtherFormulaService.getFormulaValue(e,t,s.formulaId),{originRow:l,originCol:u}=s,d=r-l,f=i-u;return h(c==null||(a=c.result)==null||(a=a[d])==null?void 0:a[f])}getCellFormulaValueSync(e,t,n,r,i){var a;let{ruleFormulaMap:o}=this._ensureMaps(e,t),s=o.get(n);if(!s)return;let c=this._registerOtherFormulaService.getFormulaValueSync(e,t,s.formulaId),{originRow:l,originCol:u}=s,d=r-l,f=i-u;return h(c==null||(a=c.result)==null||(a=a[d])==null?void 0:a[f])}getCellFormula2ValueSync(e,t,n,r,i){var a;let{ruleFormulaMap2:o}=this._ensureMaps(e,t),s=o.get(n);if(!s)return;let c=this._registerOtherFormulaService.getFormulaValueSync(e,t,s.formulaId),{originRow:l,originCol:u}=s,d=r-l,f=i-u;return h(c==null||(a=c.result)==null||(a=a[d])==null?void 0:a[f])}getRuleFormulaInfo(e,t,n){let{ruleFormulaMap:r}=this._ensureMaps(e,t);return r.get(n)}makeRuleDirty(e,t,n){var r,i;let a=(r=this._ruleFormulaMap.get(e))==null||(r=r.get(t))==null?void 0:r.get(n),o=(i=this._ruleFormulaMap2.get(e))==null||(i=i.get(t))==null?void 0:i.get(n);a&&this._registerOtherFormulaService.markFormulaDirty(e,t,a.formulaId),o&&this._registerOtherFormulaService.markFormulaDirty(e,t,o.formulaId)}};v=f([d(0,e.IUniverInstanceService),d(1,(0,e.Inject)(n.RegisterOtherFormulaService)),d(2,(0,e.Inject)(t.DataValidationModel)),d(3,(0,e.Inject)(p)),d(4,(0,e.Inject)(t.DataValidatorRegistryService))],v);function y(t){return(0,e.getOriginCellValue)(t)}function b(e){var t;return String((t=y(e))==null?``:t)}function x(e){return e.filter(Boolean).join(`,`)}function S(e){return e.split(`,`).filter(Boolean)}function ee(e){let t=y(e);return t==null?``:t.toString()}function C(t,n,r){let{formula1:i,formula2:a}=n,o=n.ranges[0].startRow,s=n.ranges[0].startColumn,c=r.row-o,l=r.col-s;return{transformedFormula1:(0,e.isFormulaString)(i)?t.moveFormulaRefOffset(i,l,c,!0):i,transformedFormula2:(0,e.isFormulaString)(a)?t.moveFormulaRefOffset(a,l,c,!0):a}}let w=class extends e.Disposable{constructor(e,t){super(),this._injector=e,this._dataValidationModel=t,u(this,`_cache`,new Map),this._initRuleChangeListener()}_initRuleChangeListener(){this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(e=>{(e.type===`remove`||e.type===`update`)&&this.markRuleDirty(e.unitId,e.subUnitId,e.rule.uid)}))}getOrCompute(e,t,n){let r=this.getCache(e,t,n.uid);if(r)return r;let i=this._injector.get(T).getRuleFormulaResultSync(e,t,n.uid);return this.computeAndCache(e,t,n,i)}_ensureCache(e,t){let n=this._cache.get(e);n||(n=new Map,this._cache.set(e,n));let r=n.get(t);return r||(r=new Map,n.set(t,r)),r}getCache(e,t,n){var r;return(r=this._cache.get(e))==null||(r=r.get(t))==null?void 0:r.get(n)}setCache(e,t,n,r){this._ensureCache(e,t).set(n,r)}markRuleDirty(e,t,n){var r;(r=this._cache.get(e))==null||(r=r.get(t))==null||r.delete(n)}clear(){this._cache.clear()}computeAndCache(t,n,r,i){var a;let{formula1:o=``,formula2:s=``}=r,c=(0,e.isFormulaString)(o)?this._getRuleFormulaResultSet(i==null||(a=i[0])==null||(a=a.result)==null||(a=a[0])==null?void 0:a[0]):S(o),l=s.split(`,`),u=c.map((e,t)=>({label:e,color:l[t]||``})),d={};for(let e of u)e.color&&(d[e.label]=e.color);let f={list:c,listWithColor:u,colorMap:d,set:new Set(c)};return this.setCache(t,n,r.uid,f),f}_getRuleFormulaResultSet(t){if(!t)return[];let n=new Set;for(let i=0,a=t.length;i<a;i++){let a=t[i];if(a)for(let t=0,i=a.length;t<i;t++){let i=a[t],o=y(i);if(o!=null){var r;if(typeof o!=`string`&&typeof(i==null?void 0:i.s)==`object`&&!((r=i.s)==null||(r=r.n)==null)&&r.pattern){n.add(e.numfmt.format(i.s.n.pattern,o,{throws:!1}));continue}let t=typeof o==`string`?o:String(o);g(t)&&n.add(t)}}}return[...n]}};w=f([d(0,(0,e.Inject)(e.Injector)),d(1,(0,e.Inject)(t.DataValidationModel))],w);let T=class extends e.Disposable{constructor(e,t,n,r,i,a){super(),this._instanceService=e,this._registerOtherFormulaService=t,this._dataValidationCacheService=n,this._dataValidationModel=r,this._validatorRegistryService=i,this._listCacheService=a,u(this,`_formulaRuleMap`,new Map),this._initFormulaResultHandler()}_initFormulaResultHandler(){this.disposeWithMe(this._registerOtherFormulaService.formulaResult$.subscribe(t=>{for(let n in t){let r=t[n];if(this._instanceService.getUnitType(n)===e.UniverInstanceType.UNIVER_SHEET)for(let e in r){let t=r[e],i=this._ensureRuleFormulaMap(n,e);t.forEach(t=>{var r;let a=(r=t.extra)==null?void 0:r.ruleId;if(a&&i.get(a)){let t=this._dataValidationModel.getRuleById(n,e,a);t&&(this._listCacheService.markRuleDirty(n,e,a),this._dataValidationCacheService.markRangeDirty(n,e,t.ranges))}})}}}))}_ensureRuleFormulaMap(e,t){let n=this._formulaRuleMap.get(e);n||(n=new Map,this._formulaRuleMap.set(e,n));let r=n.get(t);return r||(r=new Map,n.set(t,r)),r}_registerSingleFormula(e,t,r,i){return this._registerOtherFormulaService.registerFormulaWithRange(e,t,r,[{startColumn:0,endColumn:0,startRow:0,endRow:0}],{ruleId:i},n.OtherFormulaBizType.DATA_VALIDATION,i)}addRule(t,n,r){if(!_(r.type,this._validatorRegistryService)&&r.type!==e.DataValidationType.CHECKBOX){let{formula1:i,formula2:a,uid:o}=r,s=(0,e.isFormulaString)(i),c=(0,e.isFormulaString)(a);if(!s&&!c)return;let l=this._ensureRuleFormulaMap(t,n),u=[void 0,void 0];s&&(u[0]={id:this._registerSingleFormula(t,n,i,o),text:i}),c&&(u[1]={id:this._registerSingleFormula(t,n,a,o),text:a}),l.set(o,u)}}removeRule(e,t,n){let r=this._ensureRuleFormulaMap(e,t).get(n);if(!r)return;let[i,a]=r,o=[i==null?void 0:i.id,a==null?void 0:a.id].filter(Boolean);o.length&&this._registerOtherFormulaService.deleteFormula(e,t,o)}getRuleFormulaResult(e,t,n){let r=this._ensureRuleFormulaMap(e,t).get(n);if(!r)return Promise.resolve(null);let i=async n=>n&&this._registerOtherFormulaService.getFormulaValue(e,t,n.id);return Promise.all([i(r[0]),i(r[1])])}getRuleFormulaResultSync(e,t,n){let r=this._ensureRuleFormulaMap(e,t).get(n);if(r)return r.map(n=>{if(n)return this._registerOtherFormulaService.getFormulaValueSync(e,t,n.id)})}getRuleFormulaInfo(e,t,n){return this._ensureRuleFormulaMap(e,t).get(n)}};T=f([d(0,e.IUniverInstanceService),d(1,(0,e.Inject)(n.RegisterOtherFormulaService)),d(2,(0,e.Inject)(p)),d(3,(0,e.Inject)(t.DataValidationModel)),d(4,(0,e.Inject)(t.DataValidatorRegistryService)),d(5,(0,e.Inject)(w))],T);var te=class t{constructor(t,n,r,i,a=!1){this._unitId=n,this._subUnitId=r,this._univerInstanceService=i,this._disableTree=a,u(this,`_map`,void 0),u(this,`_tree`,new e.RBush),u(this,`_dirty`,!0),u(this,`_buildTree`,()=>{if(!this._dirty||this._disableTree)return;this._tree.clear();let e=[];this._map.forEach((t,n)=>{t.forEach(t=>{e.push({minX:t.startRow,maxX:t.endRow,minY:t.startColumn,maxY:t.endColumn,ruleId:n})})}),this._tree.load(e),this._dirty=!1}),u(this,`_debonceBuildTree`,(0,e.debounce)(this._buildTree,0)),this._map=t,this._buildTree()}get _worksheet(){var t;return(t=this._univerInstanceService.getUnit(this._unitId,e.UniverInstanceType.UNIVER_SHEET))==null?void 0:t.getSheetBySheetId(this._subUnitId)}_addRule(t,n){if(!this._worksheet)return;let r=e.Rectangle.mergeRanges(n.map(t=>e.Range.transformRange(t,this._worksheet)));this._map.forEach((t,n)=>{let i=e.Rectangle.subtractMulti(t,r);i.length===0?this._map.delete(n):this._map.set(n,i)}),this._dirty=!0,this._map.set(t,r),this._debonceBuildTree()}addRule(e){this._addRule(e.uid,e.ranges)}removeRange(t){if(!this._worksheet)return;let n=t.map(t=>e.Range.transformRange(t,this._worksheet));this._map.forEach((t,r)=>{let i=e.Rectangle.subtractMulti(t,n);i.length===0?this._map.delete(r):this._map.set(r,i)}),this._dirty=!0,this._debonceBuildTree()}_removeRule(e){this._map.delete(e),this._dirty=!0,this._debonceBuildTree()}removeRule(e){this._removeRule(e.uid)}updateRange(e,t){this._removeRule(e),this._addRule(e,t)}addRangeRules(t){t.forEach(({id:t,ranges:n})=>{if(!n.length)return;let r=this._map.get(t);r?(this._map.set(t,e.Rectangle.mergeRanges([...r,...n])),r=this._map.get(t)):(r=n,this._map.set(t,r)),this._map.forEach((r,i)=>{if(i===t)return;let a=e.Rectangle.subtractMulti(r,n);a.length===0?this._map.delete(i):this._map.set(i,a)})}),this._dirty=!0,this._debonceBuildTree()}diff(t){let n=[],r=0;return t.forEach((t,i)=>{var a;let o=(a=this._map.get(t.uid))==null?[]:a,s=t.ranges;o.length!==0&&(o.length!==s.length||o.some((t,n)=>!e.Rectangle.equals(t,s[n])))&&n.push({type:`update`,ruleId:t.uid,oldRanges:s,newRanges:e.Rectangle.sort(o),rule:t}),o.length===0&&(n.push({type:`delete`,rule:t,index:i-r}),r++)}),n}diffWithAddition(t,n){let r=[],i=0;return t.forEach((t,n)=>{var a;let o=(a=this._map.get(t.uid))==null?[]:a,s=t.ranges;o.length!==0&&(o.length!==s.length||o.some((t,n)=>!e.Rectangle.equals(t,s[n])))&&r.push({type:`update`,ruleId:t.uid,oldRanges:s,newRanges:e.Rectangle.sort(o),rule:t}),o.length===0&&(r.push({type:`delete`,rule:t,index:n-i}),i++)}),Array.from(n).forEach(t=>{var n;let i=(n=this._map.get(t.uid))==null?[]:n;r.push({type:`add`,rule:{...t,ranges:e.Rectangle.sort(i)}})}),r}clone(){return new t(new Map(e.Tools.deepClone(Array.from(this._map.entries()))),this._unitId,this._subUnitId,this._univerInstanceService,!0)}getValue(e,t){this._dirty&&this._buildTree();let n=this._tree.search({minX:e,maxX:e,minY:t,maxY:t});return n.length>0?n[0].ruleId:void 0}};let E=class extends e.Disposable{constructor(e,t,n,r,a,o,s){super(),this._dataValidationModel=e,this._univerInstanceService=t,this._dataValidatorRegistryService=n,this._dataValidationCacheService=r,this._dataValidationFormulaService=a,this._dataValidationCustomFormulaService=o,this._commandService=s,u(this,`_ruleMatrixMap`,new Map),u(this,`_validStatusChange$`,new i.Subject),u(this,`_ruleChange$`,new i.Subject),u(this,`ruleChange$`,this._ruleChange$.asObservable()),u(this,`validStatusChange$`,this._validStatusChange$.asObservable()),this._initRuleUpdateListener(),this.disposeWithMe(()=>{this._ruleChange$.complete(),this._validStatusChange$.complete()}),this._initUniverInstanceListener()}_initUniverInstanceListener(){this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(e=>{this._ruleMatrixMap.delete(e.getUnitId())})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===r.RemoveSheetMutation.id){let{unitId:t,subUnitId:n}=e.params,r=this._ruleMatrixMap.get(t);r&&r.delete(n)}}))}_initRuleUpdateListener(){let e=this._dataValidationModel.getAll();for(let[t,n]of e)for(let[e,r]of n)for(let n of r)this._addRule(t,e,n),this._ruleChange$.next({type:`add`,unitId:t,subUnitId:e,rule:n,source:`patched`});this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(e=>{switch(e.type){case`add`:this._addRule(e.unitId,e.subUnitId,e.rule);break;case`update`:this._updateRule(e.unitId,e.subUnitId,e.rule.uid,e.oldRule,e.updatePayload);break;case`remove`:this._removeRule(e.unitId,e.subUnitId,e.rule);break}this._ruleChange$.next(e)}))}_ensureRuleMatrix(e,t){let n=this._ruleMatrixMap.get(e);n||(n=new Map,this._ruleMatrixMap.set(e,n));let r=n.get(t);return r||(r=new te(new Map,e,t,this._univerInstanceService),n.set(t,r)),r}_addRuleSideEffect(e,t,n){this._ensureRuleMatrix(e,t).addRule(n),this._dataValidationCacheService.addRule(e,t,n),this._dataValidationFormulaService.addRule(e,t,n),this._dataValidationCustomFormulaService.addRule(e,t,n)}_addRule(e,t,n){(Array.isArray(n)?n:[n]).forEach(n=>{this._addRuleSideEffect(e,t,n)})}_updateRule(e,n,r,i,a){let o=this._ensureRuleMatrix(e,n),s={...i,...a.payload};a.type===t.UpdateRuleType.RANGE?o.updateRange(r,a.payload):a.type===t.UpdateRuleType.ALL&&o.updateRange(r,a.payload.ranges),this._dataValidationCacheService.removeRule(e,n,i),this._dataValidationCacheService.addRule(e,n,s),this._dataValidationFormulaService.removeRule(e,n,i.uid),this._dataValidationFormulaService.addRule(e,n,s),this._dataValidationCustomFormulaService.deleteByRuleId(e,n,r),this._dataValidationCustomFormulaService.addRule(e,n,s)}_removeRule(e,t,n){this._ensureRuleMatrix(e,t).removeRule(n),this._dataValidationCacheService.removeRule(e,t,n),this._dataValidationCustomFormulaService.deleteByRuleId(e,t,n.uid)}getValidator(e){return this._dataValidatorRegistryService.getValidatorItem(e)}getRuleIdByLocation(e,t,n,r){return this._ensureRuleMatrix(e,t).getValue(n,r)}getRuleByLocation(e,t,n,r){let i=this.getRuleIdByLocation(e,t,n,r);if(i)return this._dataValidationModel.getRuleById(e,t,i)}validator(t,n,r){let{col:i,row:a,unitId:o,subUnitId:s,worksheet:c}=n,l=(e,n)=>{r&&r(e,n),n&&this._validStatusChange$.next({unitId:o,subUnitId:s,ruleId:t.uid,status:e,row:a,col:i})},u=c.getCellValueOnly(a,i),d=this.getValidator(t.type),f=c.getCellRaw(a,i),p=y(f);if(d){let r=this._dataValidationCacheService.ensureCache(o,s),c=r.getValue(a,i);return c==null?(r.setValue(a,i,e.DataValidationStatus.VALIDATING),d.validator({value:p,unitId:o,subUnitId:s,row:a,column:i,worksheet:n.worksheet,workbook:n.workbook,interceptValue:y(u),t:f==null?void 0:f.t},t).then(t=>{let n=t?e.DataValidationStatus.VALID:e.DataValidationStatus.INVALID,o=r.getValue(a,i);n===e.DataValidationStatus.VALID?r.realDeleteValue(a,i):r.setValue(a,i,n),l(n,c!==o)}),e.DataValidationStatus.VALIDATING):(l(c==null?e.DataValidationStatus.VALID:c,!1),c==null?e.DataValidationStatus.VALID:c)}else return l(e.DataValidationStatus.VALID,!1),e.DataValidationStatus.VALID}getRuleObjectMatrix(e,t){return this._ensureRuleMatrix(e,t)}getRuleById(e,t,n){return this._dataValidationModel.getRuleById(e,t,n)}getRuleIndex(e,t,n){return this._dataValidationModel.getRuleIndex(e,t,n)}getRules(e,t){return[...this._dataValidationModel.getRules(e,t)]}getUnitRules(e){return this._dataValidationModel.getUnitRules(e)}deleteUnitRules(e){return this._dataValidationModel.deleteUnitRules(e)}getSubUnitIds(e){return this._dataValidationModel.getSubUnitIds(e)}getAll(){return this._dataValidationModel.getAll()}};E=f([d(0,(0,e.Inject)(t.DataValidationModel)),d(1,e.IUniverInstanceService),d(2,(0,e.Inject)(t.DataValidatorRegistryService)),d(3,(0,e.Inject)(p)),d(4,(0,e.Inject)(T)),d(5,(0,e.Inject)(v)),d(6,e.ICommandService)],E);function D(t,n){return e.Tools.isBlank(t)?n.t(`dataValidation.validFail.value`):(0,e.isFormulaString)(t)?n.t(`dataValidation.validFail.primitive`):``}const O=t=>e.Tools.isDefine(t)&&String(t).toLowerCase()===`true`?`1`:String(t).toLowerCase()===`false`?`0`:t;var ne=class extends t.BaseDataValidator{constructor(...t){super(...t),u(this,`id`,e.DataValidationType.CHECKBOX),u(this,`title`,`dataValidation.checkbox.title`),u(this,`operators`,[]),u(this,`scopes`,[`sheet`]),u(this,`order`,41),u(this,`offsetFormulaByRange`,!1),u(this,`_formulaService`,this.injector.get(T)),u(this,`skipDefaultFontRender`,(e,t,n)=>{let{unitId:r,subUnitId:i}=n,{formula1:a,formula2:o}=this.parseFormulaSync(e,r,i),s=`${t==null?``:t}`;return!s||s===`${a}`||s===`${o}`})}validatorFormula(t,n,r){let{formula1:i,formula2:a}=t,o=i===a;if(e.Tools.isBlank(i)&&e.Tools.isBlank(a))return{success:!0};if(o)return{success:!1,formula1:this.localeService.t(`dataValidation.validFail.checkboxEqual`),formula2:this.localeService.t(`dataValidation.validFail.checkboxEqual`)};let s=D(i,this.localeService),c=D(a,this.localeService);return{success:!s&&!c,formula1:s,formula2:c}}async parseFormula(t,n,r){var i,a;let{formula1:o=1,formula2:s=0}=t,c=await this._formulaService.getRuleFormulaResult(n,r,t.uid),l=(0,e.isFormulaString)(o)?m(c==null||(i=c[0])==null||(i=i.result)==null?void 0:i[0][0]):o,u=(0,e.isFormulaString)(s)?m(c==null||(a=c[1])==null||(a=a.result)==null?void 0:a[0][0]):s,d=g(String(l))&&g(String(u));return{formula1:O(l),formula2:O(u),originFormula1:l,originFormula2:u,isFormulaValid:d}}getExtraStyle(t,n){return{tb:e.WrapStrategy.CLIP}}parseFormulaSync(t,n,r){var i,a;let{formula1:o=1,formula2:s=0}=t,c=this._formulaService.getRuleFormulaResultSync(n,r,t.uid),l=(0,e.isFormulaString)(o)?m(c==null||(i=c[0])==null||(i=i.result)==null?void 0:i[0][0]):o,u=(0,e.isFormulaString)(s)?m(c==null||(a=c[1])==null||(a=a.result)==null?void 0:a[0][0]):s,d=g(String(l))&&g(String(u));return{formula1:O(l),formula2:O(u),originFormula1:l,originFormula2:u,isFormulaValid:d}}async isValidType(t,n,r){let{value:i,unitId:a,subUnitId:o}=t,{formula1:s,formula2:c,originFormula1:l,originFormula2:u}=await this.parseFormula(r,a,o);return!e.Tools.isDefine(s)||!e.Tools.isDefine(c)?!0:e.Tools.isDefine(i)&&(String(i)===String(s)||String(i)===String(c)||String(i)===String(l==null?``:l)||String(i)===String(u==null?``:u))}generateRuleErrorMessage(e){return this.localeService.t(`dataValidation.checkbox.error`)}generateRuleName(e){return this.titleStr}};const re={[e.DataValidationOperator.BETWEEN]:`dataValidation.date.operators.between`,[e.DataValidationOperator.EQUAL]:`dataValidation.date.operators.equal`,[e.DataValidationOperator.GREATER_THAN]:`dataValidation.date.operators.greaterThan`,[e.DataValidationOperator.GREATER_THAN_OR_EQUAL]:`dataValidation.date.operators.greaterThanOrEqual`,[e.DataValidationOperator.LESS_THAN]:`dataValidation.date.operators.lessThan`,[e.DataValidationOperator.LESS_THAN_OR_EQUAL]:`dataValidation.date.operators.lessThanOrEqual`,[e.DataValidationOperator.NOT_BETWEEN]:`dataValidation.date.operators.notBetween`,[e.DataValidationOperator.NOT_EQUAL]:`dataValidation.date.operators.notEqual`};e.DataValidationOperator.BETWEEN,e.DataValidationOperator.EQUAL,e.DataValidationOperator.GREATER_THAN,e.DataValidationOperator.GREATER_THAN_OR_EQUAL,e.DataValidationOperator.LESS_THAN,e.DataValidationOperator.LESS_THAN_OR_EQUAL,e.DataValidationOperator.NOT_BETWEEN,e.DataValidationOperator.NOT_EQUAL;const ie={[e.DataValidationOperator.BETWEEN]:`dataValidation.date.ruleName.between`,[e.DataValidationOperator.EQUAL]:`dataValidation.date.ruleName.equal`,[e.DataValidationOperator.GREATER_THAN]:`dataValidation.date.ruleName.greaterThan`,[e.DataValidationOperator.GREATER_THAN_OR_EQUAL]:`dataValidation.date.ruleName.greaterThanOrEqual`,[e.DataValidationOperator.LESS_THAN]:`dataValidation.date.ruleName.lessThan`,[e.DataValidationOperator.LESS_THAN_OR_EQUAL]:`dataValidation.date.ruleName.lessThanOrEqual`,[e.DataValidationOperator.NOT_BETWEEN]:`dataValidation.date.ruleName.notBetween`,[e.DataValidationOperator.NOT_EQUAL]:`dataValidation.date.ruleName.notEqual`,NONE:`dataValidation.date.ruleName.legal`},ae={[e.DataValidationOperator.BETWEEN]:`dataValidation.date.errorMsg.between`,[e.DataValidationOperator.EQUAL]:`dataValidation.date.errorMsg.equal`,[e.DataValidationOperator.GREATER_THAN]:`dataValidation.date.errorMsg.greaterThan`,[e.DataValidationOperator.GREATER_THAN_OR_EQUAL]:`dataValidation.date.errorMsg.greaterThanOrEqual`,[e.DataValidationOperator.LESS_THAN]:`dataValidation.date.errorMsg.lessThan`,[e.DataValidationOperator.LESS_THAN_OR_EQUAL]:`dataValidation.date.errorMsg.lessThanOrEqual`,[e.DataValidationOperator.NOT_BETWEEN]:`dataValidation.date.errorMsg.notBetween`,[e.DataValidationOperator.NOT_EQUAL]:`dataValidation.date.errorMsg.notEqual`,NONE:`dataValidation.date.errorMsg.legal`},k=[e.DataValidationOperator.BETWEEN,e.DataValidationOperator.NOT_BETWEEN],A=`{FORMULA1}`,j=`{FORMULA2}`,M=t=>{var n,r;if(t==null||typeof t==`boolean`)return;if(typeof t==`number`||!Number.isNaN(+t))return+t;let i=(n=e.numfmt.parseDate(t))==null?void 0:n.v;return e.Tools.isDefine(i)?i:(r=e.numfmt.parseDate((0,e.dayjs)(t).format(`YYYY-MM-DD HH:mm:ss`)))==null?void 0:r.v};var N=class extends t.BaseDataValidator{constructor(...t){super(...t),u(this,`id`,e.DataValidationType.DATE),u(this,`title`,`dataValidation.date.title`),u(this,`order`,40),u(this,`operators`,[e.DataValidationOperator.BETWEEN,e.DataValidationOperator.EQUAL,e.DataValidationOperator.GREATER_THAN,e.DataValidationOperator.GREATER_THAN_OR_EQUAL,e.DataValidationOperator.LESS_THAN,e.DataValidationOperator.LESS_THAN_OR_EQUAL,e.DataValidationOperator.NOT_BETWEEN,e.DataValidationOperator.NOT_EQUAL]),u(this,`scopes`,[`sheet`]),u(this,`_customFormulaService`,this.injector.get(v)),u(this,`_lexerTreeBuilder`,this.injector.get(n.LexerTreeBuilder))}async parseFormula(t,n,r,i,a){let o=await this._customFormulaService.getCellFormulaValue(n,r,t.uid,i,a),s=await this._customFormulaService.getCellFormula2Value(n,r,t.uid,i,a),{formula1:c,formula2:l}=t,u=g(String(o==null?void 0:o.v))&&g(String(s==null?void 0:s.v));return{formula1:M((0,e.isFormulaString)(c)?o==null?void 0:o.v:c),formula2:M((0,e.isFormulaString)(l)?s==null?void 0:s.v:l),isFormulaValid:u}}async isValidType(t){let{interceptValue:n,value:r}=t;return typeof r==`number`&&typeof n==`string`||typeof n==`string`?!!e.numfmt.parseDate(n):!1}_validatorSingleFormula(t){return!e.Tools.isBlank(t)&&((0,e.isFormulaString)(t)||!Number.isNaN(+t)||!!(t&&e.numfmt.parseDate(t)))}validatorFormula(e,t,n){let r=e.operator;if(!r)return{success:!0};let i=this._validatorSingleFormula(e.formula1),a=this.localeService.t(`dataValidation.validFail.date`);if(k.includes(r)){let t=this._validatorSingleFormula(e.formula2);return{success:i&&t,formula1:i?void 0:a,formula2:t?void 0:a}}return{success:i,formula1:i?void 0:a}}normalizeFormula(t,n,r){let{formula1:i,formula2:a,bizInfo:o}=t,s=t=>{if(!t)return t;let n;if(!Number.isNaN(+t))n=e.numfmt.dateFromSerial(+t);else{var r;let i=(r=e.numfmt.parseDate(t))==null?void 0:r.v;if(i==null)return``;n=e.numfmt.dateFromSerial(i)}return(0,e.dayjs)(`${n[0]}/${n[1]}/${n[2]} ${n[3]}:${n[4]}:${n[5]}`).format(o!=null&&o.showTime?`YYYY-MM-DD HH:mm:ss`:`YYYY-MM-DD`)};return{formula1:(0,e.isFormulaString)(i)?i:s(`${i}`),formula2:(0,e.isFormulaString)(a)?a:s(`${a}`)}}transform(e,t,n){let{value:r}=e;return{...e,value:M(r)}}get operatorNames(){return this.operators.map(e=>this.localeService.t(re[e]))}generateRuleName(e){var t,n;if(!e.operator)return this.localeService.t(ie.NONE);let r=this.localeService.t(ie[e.operator]).replace(A,(t=e.formula1)==null?``:t).replace(j,(n=e.formula2)==null?``:n);return`${this.titleStr} ${r}`}generateRuleErrorMessage(e,t){if(!e.operator)return this.titleStr;let{transformedFormula1:n,transformedFormula2:r}=C(this._lexerTreeBuilder,e,t);return`${this.localeService.t(ae[e.operator]).replace(A,n==null?``:n).replace(j,r==null?``:r)}`}};e.DataValidationOperator.BETWEEN,e.DataValidationOperator.EQUAL,e.DataValidationOperator.GREATER_THAN,e.DataValidationOperator.GREATER_THAN_OR_EQUAL,e.DataValidationOperator.LESS_THAN,e.DataValidationOperator.LESS_THAN_OR_EQUAL,e.DataValidationOperator.NOT_BETWEEN,e.DataValidationOperator.NOT_EQUAL,e.DataValidationOperator.BETWEEN,e.DataValidationOperator.EQUAL,e.DataValidationOperator.GREATER_THAN,e.DataValidationOperator.GREATER_THAN_OR_EQUAL,e.DataValidationOperator.LESS_THAN,e.DataValidationOperator.LESS_THAN_OR_EQUAL,e.DataValidationOperator.NOT_BETWEEN,e.DataValidationOperator.NOT_EQUAL;const P={[e.DataValidationOperator.BETWEEN]:`dataValidation.errorMsg.between`,[e.DataValidationOperator.EQUAL]:`dataValidation.errorMsg.equal`,[e.DataValidationOperator.GREATER_THAN]:`dataValidation.errorMsg.greaterThan`,[e.DataValidationOperator.GREATER_THAN_OR_EQUAL]:`dataValidation.errorMsg.greaterThanOrEqual`,[e.DataValidationOperator.LESS_THAN]:`dataValidation.errorMsg.lessThan`,[e.DataValidationOperator.LESS_THAN_OR_EQUAL]:`dataValidation.errorMsg.lessThanOrEqual`,[e.DataValidationOperator.NOT_BETWEEN]:`dataValidation.errorMsg.notBetween`,[e.DataValidationOperator.NOT_EQUAL]:`dataValidation.errorMsg.notEqual`,NONE:`dataValidation.errorMsg.legal`};function F(e){return+e}var oe=class extends t.BaseDataValidator{constructor(...t){super(...t),u(this,`_customFormulaService`,this.injector.get(v)),u(this,`id`,e.DataValidationType.DECIMAL),u(this,`_lexerTreeBuilder`,this.injector.get(n.LexerTreeBuilder)),u(this,`title`,`dataValidation.decimal.title`),u(this,`order`,20),u(this,`operators`,[e.DataValidationOperator.BETWEEN,e.DataValidationOperator.EQUAL,e.DataValidationOperator.GREATER_THAN,e.DataValidationOperator.GREATER_THAN_OR_EQUAL,e.DataValidationOperator.LESS_THAN,e.DataValidationOperator.LESS_THAN_OR_EQUAL,e.DataValidationOperator.NOT_BETWEEN,e.DataValidationOperator.NOT_EQUAL]),u(this,`scopes`,[`sheet`])}_isFormulaOrNumber(t){return!e.Tools.isBlank(t)&&((0,e.isFormulaString)(t)||!Number.isNaN(+t))}async isValidType(e,t,n){let{value:r}=e;return!Number.isNaN(F(r))}transform(e,t,n){let{value:r}=e;return{...e,value:F(r)}}_parseNumber(e){return e==null?NaN:+e}async parseFormula(t,n,r,i,a){let o=await this._customFormulaService.getCellFormulaValue(n,r,t.uid,i,a),s=await this._customFormulaService.getCellFormula2Value(n,r,t.uid,i,a),{formula1:c,formula2:l}=t,u=g(String(o==null?void 0:o.v))&&g(String(s==null?void 0:s.v));return{formula1:this._parseNumber((0,e.isFormulaString)(c)?o==null?void 0:o.v:c),formula2:this._parseNumber((0,e.isFormulaString)(l)?s==null?void 0:s.v:l),isFormulaValid:u}}validatorFormula(t,n,r){let i=t.operator;if(!i)return{success:!0};let a=e.Tools.isDefine(t.formula1)&&this._isFormulaOrNumber(t.formula1),o=e.Tools.isDefine(t.formula2)&&this._isFormulaOrNumber(t.formula2),s=k.includes(i),c=this.localeService.t(`dataValidation.validFail.number`);return s?{success:a&&o,formula1:a?void 0:c,formula2:o?void 0:c}:{success:a,formula1:a?``:c}}generateRuleErrorMessage(e,t){if(!e.operator)return this.localeService.t(P.NONE).replace(`{TYPE}`,this.titleStr);let{transformedFormula1:n,transformedFormula2:r}=C(this._lexerTreeBuilder,e,t);return`${this.localeService.t(P[e.operator]).replace(A,n==null?``:n).replace(j,r==null?``:r)}`}};function se(t){if(!t)return[];let n=new Set;for(let i=0,a=t.length;i<a;i++){let a=t[i];if(a)for(let t=0,i=a.length;t<i;t++){let i=a[t],o=y(i);if(o!=null){var r;if(typeof o!=`string`&&typeof(i==null?void 0:i.s)==`object`&&!((r=i.s)==null||(r=r.n)==null)&&r.pattern){n.add(e.numfmt.format(i.s.n.pattern,o,{throws:!1}));continue}let t=typeof o==`string`?o:String(o);g(t)&&n.add(t)}}}return[...n]}const ce=[`if`,`indirect`,`choose`,`offset`];function le(t,r){if(!(0,e.isFormulaString)(t)||(0,n.isReferenceString)(t.slice(1)))return!0;let i=r.sequenceNodesBuilder(t);return i&&i.some(e=>typeof e==`object`&&e.nodeType===n.sequenceNodeType.FUNCTION&&ce.indexOf(e.token.toLowerCase())>-1)}function ue(t,r){let{formula1:i=``,ranges:a}=t;if((0,n.isReferenceString)(i.slice(1))){let t=(0,n.deserializeRangeWithSheet)(i.slice(1));if((!t.sheetName||t.sheetName===r)&&a.some(n=>e.Rectangle.intersects(n,t.range)))return!0}return!1}var I=class extends t.BaseDataValidator{constructor(...t){super(...t),u(this,`formulaService`,this.injector.get(T)),u(this,`_lexer`,this.injector.get(n.LexerTreeBuilder)),u(this,`_univerInstanceService`,this.injector.get(e.IUniverInstanceService)),u(this,`_listCacheService`,this.injector.get(w)),u(this,`order`,50),u(this,`offsetFormulaByRange`,!1),u(this,`id`,e.DataValidationType.LIST),u(this,`title`,`dataValidation.list.title`),u(this,`operators`,[]),u(this,`scopes`,[`sheet`]),u(this,`skipDefaultFontRender`,t=>t.renderMode!==e.DataValidationRenderMode.TEXT)}validatorFormula(t,n,r){var i,a;let o=!e.Tools.isBlank(t.formula1),s=le((i=t.formula1)==null?``:i,this._lexer),c=(a=this._univerInstanceService.getUnit(n,e.UniverInstanceType.UNIVER_SHEET))==null||(a=a.getSheetBySheetId(r))==null?void 0:a.getName(),l=ue(t,c==null?``:c);return{success:!!(o&&s&&!l),formula1:o?s?l?this.localeService.t(`dataValidation.validFail.listIntersects`):void 0:this.localeService.t(`dataValidation.validFail.listInvalid`):this.localeService.t(`dataValidation.validFail.list`)}}getExtraStyle(t,n,{style:r}){var i;let a=(i=r.tb===e.WrapStrategy.OVERFLOW?e.WrapStrategy.CLIP:r.tb)==null?e.WrapStrategy.WRAP:i;if(t.type===e.DataValidationType.LIST&&(t.renderMode===e.DataValidationRenderMode.ARROW||t.renderMode===e.DataValidationRenderMode.TEXT)){let e=this.getListWithColorMap(t)[`${n==null?``:n}`];if(e)return{bg:{rgb:e},tb:a}}return{tb:a}}parseCellValue(e){return S(e.toString())}async parseFormula(e,t,n){var r;let i=await this.formulaService.getRuleFormulaResult(t,n,e.uid),a=m(i==null||(r=i[0])==null||(r=r.result)==null?void 0:r[0][0]);return{formula1:void 0,formula2:void 0,isFormulaValid:g(String(a))}}async isValidType(t,n,r){let{value:i,unitId:a,subUnitId:o}=t,{formula1:s=``}=r,c=(0,e.isFormulaString)(s)?this._listCacheService.getOrCompute(a,o,r).list:S(s);return this.parseCellValue(i).every(e=>c.includes(e))}generateRuleName(){return this.localeService.t(`dataValidation.list.name`)}generateRuleErrorMessage(){return this.localeService.t(`dataValidation.list.error`)}_getUnitAndSubUnit(t,n){var r,i;let a=(r=t?this._univerInstanceService.getUniverSheetInstance(t):void 0)==null?this._univerInstanceService.getCurrentUnitForType(e.UniverInstanceType.UNIVER_SHEET):r;if(!a)return null;let o=(i=n?a.getSheetBySheetId(n):void 0)==null?a.getActiveSheet():i;return o?{unitId:a.getUnitId(),subUnitId:o.getSheetId()}:null}getList(e,t,n){let r=this._getUnitAndSubUnit(t,n);if(!r)return[];let{unitId:i,subUnitId:a}=r;return this._listCacheService.getOrCompute(i,a,e).list}async getListAsync(t,n,r){var i;let{formula1:a=``}=t,o=this._getUnitAndSubUnit(n,r);if(!o)return[];let{unitId:s,subUnitId:c}=o,l=await this.formulaService.getRuleFormulaResult(s,c,t.uid);return(0,e.isFormulaString)(a)?se(l==null||(i=l[0])==null||(i=i.result)==null?void 0:i[0][0]):S(a)}getListWithColor(e,t,n){let r=this._getUnitAndSubUnit(t,n);if(!r)return[];let{unitId:i,subUnitId:a}=r;return this._listCacheService.getOrCompute(i,a,e).listWithColor}getListWithColorMap(e,t,n){let r=this._getUnitAndSubUnit(t,n);if(!r)return{};let{unitId:i,subUnitId:a}=r;return this._listCacheService.getOrCompute(i,a,e).colorMap}},de=class extends t.BaseDataValidator{constructor(...t){super(...t),u(this,`id`,e.DataValidationType.TEXT_LENGTH),u(this,`title`,`dataValidation.textLength.title`),u(this,`_lexerTreeBuilder`,this.injector.get(n.LexerTreeBuilder)),u(this,`order`,30),u(this,`operators`,[e.DataValidationOperator.BETWEEN,e.DataValidationOperator.EQUAL,e.DataValidationOperator.GREATER_THAN,e.DataValidationOperator.GREATER_THAN_OR_EQUAL,e.DataValidationOperator.LESS_THAN,e.DataValidationOperator.LESS_THAN_OR_EQUAL,e.DataValidationOperator.NOT_BETWEEN,e.DataValidationOperator.NOT_EQUAL]),u(this,`scopes`,[`sheet`]),u(this,`_customFormulaService`,this.injector.get(v))}_isFormulaOrInt(t){return!e.Tools.isBlank(t)&&((0,e.isFormulaString)(t)||!Number.isNaN(+t)&&Number.isInteger(+t))}validatorFormula(t,n,r){let i=t.operator;if(!i)return{success:!1};let a=e.Tools.isDefine(t.formula1)&&this._isFormulaOrInt(t.formula1),o=e.Tools.isDefine(t.formula2)&&this._isFormulaOrInt(t.formula2),s=k.includes(i),c=this.localeService.t(`dataValidation.validFail.number`);return s?{success:a&&o,formula1:a?void 0:c,formula2:o?void 0:c}:{success:a,formula1:c}}_parseNumber(e){return e==null?NaN:+e}async parseFormula(t,n,r,i,a){let o=await this._customFormulaService.getCellFormulaValue(n,r,t.uid,i,a),s=await this._customFormulaService.getCellFormula2Value(n,r,t.uid,i,a),{formula1:c,formula2:l}=t,u=g(String(o==null?void 0:o.v))&&g(String(s==null?void 0:s.v));return{formula1:this._parseNumber((0,e.isFormulaString)(c)?o==null?void 0:o.v:c),formula2:this._parseNumber((0,e.isFormulaString)(l)?s==null?void 0:s.v:l),isFormulaValid:u}}transform(e,t,n){return{...e,value:e.value.toString().length}}async isValidType(e,t,n){let{value:r}=e;return typeof r==`string`||typeof r==`number`}generateRuleErrorMessage(e,n){if(!e.operator)return this.titleStr;let{transformedFormula1:r,transformedFormula2:i}=C(this._lexerTreeBuilder,e,n);return`${this.localeService.t(t.TextLengthErrorTitleMap[e.operator]).replace(A,r==null?``:r).replace(j,i==null?``:i)}`}};function L(t){var n,r;return t?t.p?!((n=(r=t.p.body)==null?void 0:r.dataStream)==null?``:n).slice(0,-2).trim():e.Tools.isBlank(t.v):!0}function R(i,a,o,s,c=`command`,l=!0){let u=s.get(n.LexerTreeBuilder),d=s.get(t.DataValidatorRegistryService),f=[],p=[],m=s.get(E),h=(0,r.getSheetCommandTarget)(s.get(e.IUniverInstanceService),{unitId:i,subUnitId:a});if(!h)return{redoMutations:f,undoMutations:p};let{worksheet:g}=h,v=new e.ObjectMatrix,y=!1;function x(t,n){l&&t.forEach(t=>{e.Range.foreach(t,(e,t)=>{let r=g.getCellRaw(e,t),i=b(r);(L(r)||i===n)&&!(r!=null&&r.p)&&(y=!0,v.setValue(e,t,{v:n,p:null}))})})}if(o.forEach(n=>{switch(n.type){case`delete`:f.push({id:t.RemoveDataValidationMutation.id,params:{unitId:i,subUnitId:a,ruleId:n.rule.uid,source:c}}),p.unshift({id:t.AddDataValidationMutation.id,params:{unitId:i,subUnitId:a,rule:n.rule,index:n.index,source:c}});break;case`update`:{if(_(n.rule.type,d)){let r=n.oldRanges[0].startRow,o=n.oldRanges[0].startColumn,s=n.newRanges[0].startRow,l=n.newRanges[0].startColumn,d=s-r,m=l-o,h=(0,e.isFormulaString)(n.rule.formula1)?u.moveFormulaRefOffset(n.rule.formula1,m,d):n.rule.formula1,g=(0,e.isFormulaString)(n.rule.formula2)?u.moveFormulaRefOffset(n.rule.formula2,m,d):n.rule.formula2;h!==n.rule.formula1||g!==n.rule.formula2||!(0,e.isRangesEqual)(n.newRanges,n.oldRanges)?(f.push({id:t.UpdateDataValidationMutation.id,params:{unitId:i,subUnitId:a,ruleId:n.ruleId,payload:{type:t.UpdateRuleType.ALL,payload:{formula1:h,formula2:g,ranges:n.newRanges}}}}),p.unshift({id:t.UpdateDataValidationMutation.id,params:{unitId:i,subUnitId:a,ruleId:n.ruleId,payload:{type:t.UpdateRuleType.ALL,payload:{formula1:n.rule.formula1,formula2:n.rule.formula2,ranges:n.oldRanges}}}})):(f.push({id:t.UpdateDataValidationMutation.id,params:{unitId:i,subUnitId:a,ruleId:n.ruleId,payload:{type:t.UpdateRuleType.RANGE,payload:n.newRanges},source:c}}),p.unshift({id:t.UpdateDataValidationMutation.id,params:{unitId:i,subUnitId:a,ruleId:n.ruleId,payload:{type:t.UpdateRuleType.RANGE,payload:n.oldRanges},source:c}}))}else f.push({id:t.UpdateDataValidationMutation.id,params:{unitId:i,subUnitId:a,ruleId:n.ruleId,payload:{type:t.UpdateRuleType.RANGE,payload:n.newRanges},source:c}}),p.unshift({id:t.UpdateDataValidationMutation.id,params:{unitId:i,subUnitId:a,ruleId:n.ruleId,payload:{type:t.UpdateRuleType.RANGE,payload:n.oldRanges},source:c}});let r=m.getRuleById(i,a,n.ruleId);if(r&&r.type===e.DataValidationType.CHECKBOX){let t=m.getValidator(e.DataValidationType.CHECKBOX).parseFormulaSync(r,i,a);x(n.newRanges,t.formula2)}break}case`add`:if(f.push({id:t.AddDataValidationMutation.id,params:{unitId:i,subUnitId:a,rule:n.rule,source:c}}),p.unshift({id:t.RemoveDataValidationMutation.id,params:{unitId:i,subUnitId:a,ruleId:n.rule.uid,source:c}}),n.rule.type===e.DataValidationType.CHECKBOX){let t=m.getValidator(e.DataValidationType.CHECKBOX).parseFormulaSync(n.rule,i,a);x(n.rule.ranges,t.originFormula2)}break;default:break}}),y){let e={id:r.SetRangeValuesMutation.id,params:{unitId:i,subUnitId:a,cellValue:v.getData()}},t={id:r.SetRangeValuesMutation.id,params:(0,r.SetRangeValuesUndoMutationFactory)(s,e.params)};f.push(e),p.push(t)}return{redoMutations:f,undoMutations:p}}const z={type:e.CommandType.COMMAND,id:`sheet.command.updateDataValidationRuleRange`,handler(t,n){if(!n)return!1;let{unitId:r,subUnitId:i,ranges:a,ruleId:o}=n,s=t.get(E),c=t.get(e.ICommandService),l=t.get(e.IUndoRedoService);if(!s.getRuleById(r,i,o))return!1;let u=s.getRuleObjectMatrix(r,i).clone();u.updateRange(o,a);let{redoMutations:d,undoMutations:f}=R(r,i,u.diff(s.getRules(r,i)),t);return l.pushUndoRedo({undoMutations:f,redoMutations:d,unitID:r}),(0,e.sequenceExecute)(d,c),!0}},B={type:e.CommandType.COMMAND,id:`sheet.command.addDataValidation`,handler(n,r){if(!r)return!1;let{unitId:i,subUnitId:a,rule:o}=r,s=n.get(E),c=n.get(e.ICommandService),l=n.get(e.IUndoRedoService),u=s.getRuleObjectMatrix(i,a).clone();u.addRule(o);let d=u.diff(s.getRules(i,a)),f=s.getValidator(o.type),p={unitId:i,subUnitId:a,rule:{...o,...f==null?void 0:f.normalizeFormula(o,i,a)}},{redoMutations:m,undoMutations:h}=R(i,a,d,n);return m.push({id:t.AddDataValidationMutation.id,params:p}),h.unshift({id:t.RemoveDataValidationMutation.id,params:{unitId:i,subUnitId:a,ruleId:o.uid}}),l.pushUndoRedo({unitID:i,redoMutations:m,undoMutations:h}),(0,e.sequenceExecute)(m,c),!0}},V={type:e.CommandType.COMMAND,id:`sheets.command.update-data-validation-setting`,handler(n,i){if(!i)return!1;let a=n.get(e.ICommandService),o=n.get(e.IUndoRedoService),s=n.get(E),c=n.get(t.DataValidatorRegistryService),{unitId:l,subUnitId:u,ruleId:d,setting:f}=i,p=c.getValidatorItem(f.type);if(!p)return!1;let m=s.getRuleById(l,u,d);if(!m)return!1;let h={...m,...f};if(!p.validatorFormula(h,l,u).success)return!1;let g={unitId:l,subUnitId:u,ruleId:d,payload:{type:t.UpdateRuleType.SETTING,payload:{...f,...p.normalizeFormula(h,l,u)}}},_=[{id:t.UpdateDataValidationMutation.id,params:g}],v={unitId:l,subUnitId:u,ruleId:d,payload:{type:t.UpdateRuleType.SETTING,payload:(0,t.getRuleSetting)(m)}},y=[{id:t.UpdateDataValidationMutation.id,params:v}];if(f.type===e.DataValidationType.CHECKBOX){let t=m.ranges,i=(0,r.getSheetCommandTarget)(n.get(e.IUniverInstanceService),{unitId:l,subUnitId:u});if(i){let a=new e.ObjectMatrix,{worksheet:o}=i,{formula2:s=0,formula1:c=1}=m,{formula2:d=0,formula1:p=1}=f,h=!1;if(t.forEach(t=>{e.Range.foreach(t,(e,t)=>{let n=o.getCellRaw(e,t),r=b(n);(L(n)||r===String(s))&&!(n!=null&&n.p)?(a.setValue(e,t,{v:d,p:null}),h=!0):r===String(c)&&!(n!=null&&n.p)&&(a.setValue(e,t,{v:p,p:null}),h=!0)})}),h){let e={id:r.SetRangeValuesMutation.id,params:{unitId:l,subUnitId:u,cellValue:a.getData()}},t={id:r.SetRangeValuesMutation.id,params:(0,r.SetRangeValuesUndoMutationFactory)(n,e.params)};_.push(e),y.push(t)}}}return(0,e.sequenceExecute)(_,a).result?(o.pushUndoRedo({unitID:l,redoMutations:_,undoMutations:y}),!0):!1}},H={type:e.CommandType.COMMAND,id:`sheets.command.update-data-validation-options`,handler(n,r){if(!r)return!1;let i=n.get(e.ICommandService),a=n.get(e.IUndoRedoService),o=n.get(E),{unitId:s,subUnitId:c,ruleId:l,options:u}=r,d=o.getRuleById(s,c,l);if(!d)return!1;let f={unitId:s,subUnitId:c,ruleId:l,payload:{type:t.UpdateRuleType.OPTIONS,payload:u}},p=[{id:t.UpdateDataValidationMutation.id,params:f}],m={unitId:s,subUnitId:c,ruleId:l,payload:{type:t.UpdateRuleType.OPTIONS,payload:(0,t.getRuleOptions)(d)}},h=[{id:t.UpdateDataValidationMutation.id,params:m}];return a.pushUndoRedo({unitID:s,redoMutations:p,undoMutations:h}),i.executeCommand(t.UpdateDataValidationMutation.id,f),!0}},U={type:e.CommandType.COMMAND,id:`sheets.command.clear-range-data-validation`,handler(t,n){if(!n)return!1;let{unitId:i,subUnitId:a,ranges:o}=n,s=t.get(e.ICommandService),c=(0,r.getSheetCommandTarget)(t.get(e.IUniverInstanceService),{unitId:i,subUnitId:a}),l=t.get(E);if(!c)return!1;let u=t.get(e.IUndoRedoService),d=l.getRuleObjectMatrix(i,a).clone();d.removeRange(o);let{redoMutations:f,undoMutations:p}=R(i,a,d.diff(l.getRules(i,a)),t);return u.pushUndoRedo({unitID:i,redoMutations:f,undoMutations:p}),(0,e.sequenceExecute)(f,s).result}},W={type:e.CommandType.COMMAND,id:`sheet.command.remove-all-data-validation`,handler(n,r){if(!r)return!1;let{unitId:i,subUnitId:a}=r,o=n.get(e.ICommandService),s=n.get(E),c=n.get(e.IUndoRedoService),l=[...s.getRules(i,a)],u={unitId:i,subUnitId:a,ruleId:l.map(e=>e.uid)},d=[{id:t.RemoveDataValidationMutation.id,params:u}],f=[{id:t.AddDataValidationMutation.id,params:{unitId:i,subUnitId:a,rule:l}}];return c.pushUndoRedo({redoMutations:d,undoMutations:f,unitID:i}),o.executeCommand(t.RemoveDataValidationMutation.id,u),!0}},fe=(e,n)=>{let r=e.get(E),{unitId:i,subUnitId:a,ruleId:o,source:s}=n;if(Array.isArray(o)){let e=o.map(e=>r.getRuleById(i,a,e)).filter(Boolean);return[{id:t.AddDataValidationMutation.id,params:{unitId:i,subUnitId:a,rule:e,source:s}}]}return[{id:t.AddDataValidationMutation.id,params:{unitId:i,subUnitId:a,rule:{...r.getRuleById(i,a,o)},index:r.getRuleIndex(i,a,o)}}]},G={type:e.CommandType.COMMAND,id:`sheet.command.remove-data-validation-rule`,handler(n,r){if(!r)return!1;let{unitId:i,subUnitId:a,ruleId:o}=r,s=n.get(e.ICommandService),c=n.get(e.IUndoRedoService),l=n.get(E),u=[{id:t.RemoveDataValidationMutation.id,params:r}],d=[{id:t.AddDataValidationMutation.id,params:{unitId:i,subUnitId:a,rule:{...l.getRuleById(i,a,o)},index:l.getRuleIndex(i,a,o)}}];return c.pushUndoRedo({undoMutations:d,redoMutations:u,unitID:r.unitId}),s.executeCommand(t.RemoveDataValidationMutation.id,r),!0}},K=`SHEET_DATA_VALIDATION_PLUGIN`;let q=class extends e.Disposable{constructor(e,t,n){super(),this._univerInstanceService=e,this._permissionService=t,this._lexerTreeBuilder=n}getFormulaRefCheck(t){let i=this._lexerTreeBuilder.sequenceNodesBuilder(t);if(!i)return!0;for(let t=0;t<i.length;t++){let s=i[t];if(typeof s==`string`)continue;let{token:c}=s,l=(0,n.deserializeRangeWithSheetWithCache)(c),u=this._univerInstanceService.getCurrentUnitForType(e.UniverInstanceType.UNIVER_SHEET),d=u.getActiveSheet(),f=u.getUnitId();if(l.sheetName){if(d=u.getSheetBySheetName(l.sheetName),!d)return!1;let e=d==null?void 0:d.getSheetId();if(!this._permissionService.getPermissionPoint(new r.WorksheetViewPermission(f,e).id))return!1}if(!d)return!1;let{startRow:p,endRow:m,startColumn:h,endColumn:g}=l.range;for(let e=p;e<=m;e++)for(let t=h;t<=g;t++){var o;let n=(o=d.getCell(e,t))==null||(o=o.selectionProtection)==null?void 0:o[0];if((n==null?void 0:n[a.UnitAction.View])===!1)return!1}}return!0}};q=f([d(0,e.IUniverInstanceService),d(1,e.IPermissionService),d(2,(0,e.Inject)(n.LexerTreeBuilder))],q);var pe=`@univerjs/sheets-data-validation`,me=`0.18.0`;const he=`sheets-data-validation.config`;Symbol(he);const ge={};let J=class extends e.Disposable{constructor(e,t,n){super(),this._dataValidationModel=e,this._formulaRefRangeService=t,this._validatorRegistryService=n,u(this,`_disposableMap`,new Map),u(this,`registerRule`,(e,t,n)=>{_(n.type,this._validatorRegistryService)&&this.register(e,t,n)}),this._initRefRange()}_getIdWithUnitId(e,t,n){return`${e}_${t}_${n}`}register(n,r,i){let a=i.ranges,o=i.formula1,s=i.formula2,c=this._formulaRefRangeService.registerRangeFormula(n,r,a,[o==null?``:o,s==null?``:s],c=>{if(c.length===0)return{undos:[{id:t.AddDataValidationMutation.id,params:{unitId:n,subUnitId:r,rule:i,source:`patched`}}],redos:[{id:t.RemoveDataValidationMutation.id,params:{unitId:n,subUnitId:r,ruleId:i.uid,source:`patched`}}]};let l=[],u=[],d=c[0];l.push({id:t.UpdateDataValidationMutation.id,params:{unitId:n,subUnitId:r,ruleId:i.uid,payload:{type:t.UpdateRuleType.ALL,payload:{ranges:d.ranges,formula1:d.formulas[0],formula2:d.formulas[1]}},source:`patched`}}),u.push({id:t.UpdateDataValidationMutation.id,params:{unitId:n,subUnitId:r,ruleId:i.uid,payload:{type:t.UpdateRuleType.ALL,payload:{ranges:a,formula1:o,formula2:s}},source:`patched`}});for(let a=1;a<c.length;a++){let o=c[a],s=(0,e.generateRandomId)();l.push({id:t.AddDataValidationMutation.id,params:{unitId:n,subUnitId:r,rule:{...i,uid:s,formula1:o.formulas[0],formula2:o.formulas[1],ranges:o.ranges},source:`patched`}}),u.push({id:t.RemoveDataValidationMutation.id,params:{unitId:n,subUnitId:r,ruleId:s,source:`patched`}})}return{undos:u,redos:l}}),l=this._getIdWithUnitId(n,r,i.uid);this._disposableMap.set(l,c)}_initRefRange(){let t=this._dataValidationModel.getAll();for(let[e,n]of t)for(let[t,r]of n)for(let n of r)this.registerRule(e,t,n);this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(e=>{let{unitId:t,subUnitId:n,rule:r}=e;switch(e.type){case`add`:{let t=e.rule;this.registerRule(e.unitId,e.subUnitId,t);break}case`remove`:{let e=this._disposableMap.get(this._getIdWithUnitId(t,n,r.uid));e&&e.dispose();break}case`update`:{let r=e.rule,i=this._disposableMap.get(this._getIdWithUnitId(t,n,r.uid));i&&i.dispose(),this.registerRule(e.unitId,e.subUnitId,r);break}}})),this.disposeWithMe((0,e.toDisposable)(()=>{this._disposableMap.forEach(e=>{e.dispose()}),this._disposableMap.clear()}))}};J=f([d(0,(0,e.Inject)(E)),d(1,(0,e.Inject)(o.FormulaRefRangeService)),d(2,(0,e.Inject)(t.DataValidatorRegistryService))],J);let Y=class extends e.Disposable{constructor(e,t,n,r,i,a){super(),this._dataValidationModel=e,this._injector=t,this._refRangeService=n,this._dataValidationFormulaService=r,this._formulaRefRangeService=i,this._validatorRegistryService=a,u(this,`_disposableMap`,new Map),u(this,`registerRule`,(e,t,n)=>{_(n.type,this._validatorRegistryService)||(this.register(e,t,n),this.registerFormula(e,t,n))}),this._initRefRange()}_getIdWithUnitId(e,t,n){return`${e}_${t}_${n}`}registerFormula(e,n,r){var i;let a=r.uid,o=this._getIdWithUnitId(e,n,a),s=(i=this._disposableMap.get(o))==null?new Set:i,c=(i,o)=>{let s=this._dataValidationModel.getRuleById(e,n,a);if(!s)return{redos:[],undos:[]};let c=s[i];if(!c||c===o)return{redos:[],undos:[]};let l={unitId:e,subUnitId:n,ruleId:r.uid,payload:{type:t.UpdateRuleType.SETTING,payload:{type:s.type,formula1:s.formula1,formula2:s.formula2,[i]:o}},source:`patched`},u={unitId:e,subUnitId:n,ruleId:r.uid,payload:{type:t.UpdateRuleType.SETTING,payload:{type:s.type,formula1:s.formula1,formula2:s.formula2}},source:`patched`};return{redos:[{id:t.UpdateDataValidationMutation.id,params:l}],undos:[{id:t.UpdateDataValidationMutation.id,params:u}]}},l=this._dataValidationFormulaService.getRuleFormulaInfo(e,n,a);if(l){let[t,r]=l;if(t){let r=this._formulaRefRangeService.registerFormula(e,n,t.text,e=>c(`formula1`,e));s.add(()=>r.dispose())}if(r){let t=this._formulaRefRangeService.registerFormula(e,n,r.text,e=>c(`formula2`,e));s.add(()=>t.dispose())}}}register(n,i,a){var o;let s=o=>{let s=[...a.ranges],c=s.map(e=>(0,r.handleCommonDefaultRangeChangeWithEffectRefCommands)(e,o)).filter(e=>!!e).flat();if((0,e.isRangesEqual)(c,s))return{redos:[],undos:[]};if(c.length){let e={unitId:n,subUnitId:i,ruleId:a.uid,payload:{type:t.UpdateRuleType.RANGE,payload:c},source:`patched`};return{redos:[{id:t.UpdateDataValidationMutation.id,params:e}],undos:[{id:t.UpdateDataValidationMutation.id,params:{unitId:n,subUnitId:i,ruleId:a.uid,payload:{type:t.UpdateRuleType.RANGE,payload:s},source:`patched`}}]}}else{let e={unitId:n,subUnitId:i,ruleId:a.uid};return{redos:[{id:t.RemoveDataValidationMutation.id,params:e}],undos:fe(this._injector,e)}}},c=[];a.ranges.forEach(e=>{let t=this._refRangeService.registerRefRange(e,s,n,i);c.push(()=>t.dispose())});let l=this._getIdWithUnitId(n,i,a.uid),u=(o=this._disposableMap.get(l))==null?new Set:o;u.add(()=>c.forEach(e=>e())),this._disposableMap.set(l,u)}_initRefRange(){let t=this._dataValidationModel.getAll();for(let[e,n]of t)for(let[t,r]of n)for(let n of r)this.registerRule(e,t,n);this.disposeWithMe(this._dataValidationModel.ruleChange$.subscribe(e=>{let{unitId:t,subUnitId:n,rule:r}=e;switch(e.type){case`add`:{let t=e.rule;this.registerRule(e.unitId,e.subUnitId,t);break}case`remove`:{let e=this._disposableMap.get(this._getIdWithUnitId(t,n,r.uid));e&&e.forEach(e=>e());break}case`update`:{let r=e.rule,i=this._disposableMap.get(this._getIdWithUnitId(t,n,r.uid));i&&i.forEach(e=>e()),this.registerRule(e.unitId,e.subUnitId,r);break}}})),this.disposeWithMe((0,e.toDisposable)(()=>{this._disposableMap.forEach(e=>{e.forEach(e=>e())}),this._disposableMap.clear()}))}};Y=f([d(0,(0,e.Inject)(E)),d(1,(0,e.Inject)(e.Injector)),d(2,(0,e.Inject)(r.RefRangeService)),d(3,(0,e.Inject)(T)),d(4,(0,e.Inject)(o.FormulaRefRangeService)),d(5,(0,e.Inject)(t.DataValidatorRegistryService))],Y);let X=class extends e.Disposable{constructor(e,t,n){super(),this._sheetInterceptorService=e,this._univerInstanceService=t,this._sheetDataValidationModel=n,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:n=>{if(n.id===r.RemoveSheetCommand.id){var i;let r=n.params,a=r.unitId||this._univerInstanceService.getCurrentUnitForType(e.UniverInstanceType.UNIVER_SHEET).getUnitId(),o=this._univerInstanceService.getUniverSheetInstance(a);if(!o)return{redos:[],undos:[]};let s=r.subUnitId||((i=o.getActiveSheet())==null?void 0:i.getSheetId());if(!s)return{redos:[],undos:[]};let c=this._sheetDataValidationModel.getRules(a,s);if(c.length===0)return{redos:[],undos:[]};let l={unitId:a,subUnitId:s,ruleId:c.map(e=>e.uid),source:`patched`},u={unitId:a,subUnitId:s,rule:[...c],source:`patched`};return{redos:[{id:t.RemoveDataValidationMutation.id,params:l}],undos:[{id:t.AddDataValidationMutation.id,params:u}]}}else if(n.id===r.CopySheetCommand.id){let{unitId:r,subUnitId:i,targetSubUnitId:a}=n.params;if(!r||!i||!a)return{redos:[],undos:[]};let o=this._sheetDataValidationModel.getRules(r,i);if(o.length===0)return{redos:[],undos:[]};let s=o.map(t=>({...t,uid:(0,e.generateRandomId)(6)}));return{redos:[{id:t.AddDataValidationMutation.id,params:{unitId:r,subUnitId:a,rule:s,source:`patched`}}],undos:[{id:t.RemoveDataValidationMutation.id,params:{unitId:r,subUnitId:a,ruleId:s.map(e=>e.uid),source:`patched`}}]}}return{redos:[],undos:[]}}}))}};X=f([d(0,(0,e.Inject)(r.SheetInterceptorService)),d(1,(0,e.Inject)(e.IUniverInstanceService)),d(2,(0,e.Inject)(E))],X);var _e=class extends t.BaseDataValidator{constructor(...t){super(...t),u(this,`id`,e.DataValidationType.ANY),u(this,`title`,`dataValidation.any.title`),u(this,`operators`,[]),u(this,`scopes`,[`sheet`]),u(this,`order`,0),u(this,`offsetFormulaByRange`,!1)}async parseFormula(e,t,n){return{formula1:e.formula1,formula2:e.formula2,isFormulaValid:!0}}validatorFormula(e,t,n){return{success:!0}}async isValidType(e,t,n){return!0}generateRuleErrorMessage(e){return this.localeService.t(`dataValidation.any.error`)}},ve=class extends t.BaseDataValidator{constructor(...t){super(...t),u(this,`id`,e.DataValidationType.CUSTOM),u(this,`title`,`dataValidation.custom.title`),u(this,`operators`,[]),u(this,`scopes`,[`sheet`]),u(this,`order`,60),u(this,`_customFormulaService`,this.injector.get(v)),u(this,`_lexerTreeBuilder`,this.injector.get(n.LexerTreeBuilder))}validatorFormula(t,r,i){var a;let o=(0,e.isFormulaString)(t.formula1),s=(a=t.formula1)==null?``:a,c=this._lexerTreeBuilder.checkIfAddBracket(s)===0&&s.startsWith(n.operatorToken.EQUALS);return{success:o&&c,formula1:o&&c?``:this.localeService.t(`dataValidation.validFail.formula`)}}async parseFormula(e,t,n){return{formula1:void 0,formula2:void 0,isFormulaValid:!0}}async isValidType(t,n,r){let{column:i,row:a,unitId:o,subUnitId:s}=t,c=await this._customFormulaService.getCellFormulaValue(o,s,r.uid,a,i),l=c==null?void 0:c.v;return g(String(l))&&e.Tools.isDefine(l)&&l!==``?c.t===e.CellValueType.BOOLEAN?!!l:typeof l==`boolean`?l:typeof l==`number`?!!l:typeof l==`string`?g(l):!!l:!1}generateRuleErrorMessage(e){return this.localeService.t(`dataValidation.custom.error`)}generateRuleName(e){var t;return this.localeService.t(`dataValidation.custom.ruleName`).replace(`{FORMULA1}`,(t=e.formula1)==null?``:t)}},ye=class extends I{constructor(...t){super(...t),u(this,`id`,e.DataValidationType.LIST_MULTIPLE),u(this,`title`,`dataValidation.listMultiple.title`),u(this,`offsetFormulaByRange`,!1),u(this,`skipDefaultFontRender`,()=>!0)}},be=class extends t.BaseDataValidator{constructor(...t){super(...t),u(this,`_customFormulaService`,this.injector.get(v)),u(this,`_lexerTreeBuilder`,this.injector.get(n.LexerTreeBuilder)),u(this,`id`,e.DataValidationType.WHOLE),u(this,`title`,`dataValidation.whole.title`),u(this,`order`,10),u(this,`operators`,[e.DataValidationOperator.BETWEEN,e.DataValidationOperator.EQUAL,e.DataValidationOperator.GREATER_THAN,e.DataValidationOperator.GREATER_THAN_OR_EQUAL,e.DataValidationOperator.LESS_THAN,e.DataValidationOperator.LESS_THAN_OR_EQUAL,e.DataValidationOperator.NOT_BETWEEN,e.DataValidationOperator.NOT_EQUAL]),u(this,`scopes`,[`sheet`])}_isFormulaOrInt(t){return!e.Tools.isBlank(t)&&((0,e.isFormulaString)(t)||!Number.isNaN(+t)&&Number.isInteger(+t))}async isValidType(e,t,n){let{value:r}=e,i=F(r);return!Number.isNaN(i)&&Number.isInteger(i)}transform(e,t,n){let{value:r}=e;return{...e,value:F(r)}}_parseNumber(e){return e==null?NaN:+e}async parseFormula(t,n,r,i,a){let o=await this._customFormulaService.getCellFormulaValue(n,r,t.uid,i,a),s=await this._customFormulaService.getCellFormula2Value(n,r,t.uid,i,a),{formula1:c,formula2:l}=t,u=(0,e.isFormulaString)(c)?o==null?void 0:o.v:c,d=(0,e.isFormulaString)(l)?s==null?void 0:s.v:l,f=g(`${u}`)&&g(`${d}`);return{formula1:this._parseNumber(u),formula2:this._parseNumber(d),isFormulaValid:f}}validatorFormula(t,n,r){let i=t.operator;if(!i)return{success:!0};let a=e.Tools.isDefine(t.formula1)&&this._isFormulaOrInt(t.formula1),o=e.Tools.isDefine(t.formula2)&&this._isFormulaOrInt(t.formula2),s=k.includes(i),c=this.localeService.t(`dataValidation.validFail.number`);return s?{success:a&&o,formula1:a?void 0:c,formula2:o?void 0:c}:{success:a,formula1:c}}generateRuleErrorMessage(e,t){if(!e.operator)return this.localeService.t(P.NONE).replace(`{TYPE}`,this.titleStr);let{transformedFormula1:n,transformedFormula2:r}=C(this._lexerTreeBuilder,e,t);return`${this.localeService.t(P[e.operator]).replace(A,n==null?``:n).replace(j,r==null?``:r)}`}};let Z=class extends e.RxDisposable{constructor(e,t,n,r,i,a){super(),this._univerInstanceService=e,this._dataValidatorRegistryService=t,this._injector=n,this._selectionManagerService=r,this._sheetInterceptorService=i,this._sheetDataValidationModel=a,this._init()}_init(){this._registerValidators(),this._initCommandInterceptor()}_registerValidators(){[_e,oe,be,de,N,ne,I,ye,ve].forEach(t=>{let n=this._injector.createInstance(t);this.disposeWithMe(this._dataValidatorRegistryService.register(n)),this.disposeWithMe((0,e.toDisposable)(()=>this._injector.delete(t)))})}_initCommandInterceptor(){this._sheetInterceptorService.interceptCommand({getMutations:t=>{if(t.id===r.ClearSelectionAllCommand.id){var n;let t=this._univerInstanceService.getCurrentUnitForType(e.UniverInstanceType.UNIVER_SHEET),r=t.getUnitId(),i=t.getActiveSheet();if(!i)throw Error(`No active sheet found`);let a=i.getSheetId(),o=(n=this._selectionManagerService.getCurrentSelections())==null?void 0:n.map(e=>e.range),s=this._sheetDataValidationModel.getRuleObjectMatrix(r,a).clone();o&&s.removeRange(o);let{redoMutations:c,undoMutations:l}=R(r,a,s.diff(this._sheetDataValidationModel.getRules(r,a)),this._injector,`patched`);return{undos:l,redos:c}}return{undos:[],redos:[]}}})}};Z=f([d(0,e.IUniverInstanceService),d(1,(0,e.Inject)(t.DataValidatorRegistryService)),d(2,(0,e.Inject)(e.Injector)),d(3,(0,e.Inject)(r.SheetsSelectionsService)),d(4,(0,e.Inject)(r.SheetInterceptorService)),d(5,(0,e.Inject)(E))],Z);let Q=class extends e.Disposable{constructor(e,t,n,r){super(),this._univerInstanceService=e,this._sheetDataValidationModel=t,this._dataValidationCacheService=n,this._lifecycleService=r,this._initRecalculate()}_initRecalculate(){let t=t=>{if(t.length===0)return;let n=this._univerInstanceService.getCurrentUnitForType(e.UniverInstanceType.UNIVER_SHEET),r=n==null?void 0:n.getActiveSheet(),i={};t.flat().forEach(t=>{i[t.unitId]||(i[t.unitId]={}),i[t.unitId][t.subUnitId]||(i[t.unitId][t.subUnitId]=[]);let n=this._univerInstanceService.getUnit(t.unitId,e.UniverInstanceType.UNIVER_SHEET),r=n==null?void 0:n.getSheetBySheetId(t.subUnitId);r&&i[t.unitId][t.subUnitId].push(...t.ranges.map(t=>e.Range.transformRange(t,r)))}),Object.entries(i).forEach(([e,t])=>{Object.entries(t).forEach(([t,i])=>{(n==null?void 0:n.getUnitId())===e&&(r==null?void 0:r.getSheetId())===t?this.validatorRanges(e,t,i):requestIdleCallback(()=>{this.validatorRanges(e,t,i)})})})};this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.pipe((0,i.bufferWhen)(()=>this._lifecycleService.lifecycle$.pipe((0,i.filter)(t=>t===e.LifecycleStages.Rendered)))).subscribe(t)),this.disposeWithMe(this._dataValidationCacheService.dirtyRanges$.pipe((0,i.filter)(()=>this._lifecycleService.stage>=e.LifecycleStages.Rendered),(0,e.bufferDebounceTime)(20)).subscribe(t))}async _validatorByCell(t,n,r,i){let a=t.getUnitId(),o=n.getSheetId();if(!e.Tools.isDefine(r)||!e.Tools.isDefine(i))throw Error(`row or col is not defined, row: ${r}, col: ${i}`);let s=r,c=i,l=n.getMergedCell(r,i);l&&(s=l.startRow,c=l.startColumn);let u=this._sheetDataValidationModel.getRuleByLocation(a,o,s,c);return u?new Promise(e=>{this._sheetDataValidationModel.validator(u,{unitId:a,subUnitId:o,row:s,col:c,worksheet:n,workbook:t},t=>{e(t)})}):e.DataValidationStatus.VALID}async validatorCell(t,n,r,i){let a=this._univerInstanceService.getUnit(t,e.UniverInstanceType.UNIVER_SHEET);if(!a)throw Error(`cannot find current workbook, unitId: ${t}`);let o=a.getSheetBySheetId(n);if(!o)throw Error(`cannot find current worksheet, sheetId: ${n}`);return this._validatorByCell(a,o,r,i)}async validatorRanges(t,n,r){if(!r.length)return Promise.resolve([]);let i=this._univerInstanceService.getUnit(t,e.UniverInstanceType.UNIVER_SHEET);if(!i)throw Error(`cannot find current workbook, unitId: ${t}`);let a=i.getSheetBySheetId(n);if(!a)throw Error(`cannot find current worksheet, sheetId: ${n}`);let o=this._sheetDataValidationModel.getRules(t,n).map(e=>e.ranges).flat(),s=r.map(t=>o.map(n=>(0,e.getIntersectRange)(t,n))).flat().filter(Boolean),c=[],l=await Promise.all(s.map((e,t)=>{let n=[];for(let r=e.startRow;r<=e.endRow;r++)for(let o=e.startColumn;o<=e.endColumn;o++){n.push(this._validatorByCell(i,a,r,o));let e=a.getMergedCell(r,o);e&&c.push({resultRowIndex:t,resultColIndex:n.length-1,row:e.startRow,col:e.startColumn})}return Promise.all(n)}));return c.length&&c.forEach(({resultRowIndex:r,resultColIndex:i,row:a,col:o})=>{if(l[r][i]===e.DataValidationStatus.VALIDATING){var s;l[r][i]=(s=this._dataValidationCacheService.getValue(t,n,a,o))==null?e.DataValidationStatus.VALID:s}}),l}async validatorWorksheet(t,n){let r=this._univerInstanceService.getUnit(t,e.UniverInstanceType.UNIVER_SHEET);if(!r)throw Error(`cannot find current workbook, unitId: ${t}`);let i=r.getSheetBySheetId(n);if(!i)throw Error(`cannot find current worksheet, sheetId: ${n}`);let a=this._sheetDataValidationModel.getRules(t,n);return await Promise.all(a.map(t=>Promise.all(t.ranges.map(t=>{let n=[];return e.Range.foreach(t,(e,t)=>{n.push(this._validatorByCell(r,i,e,t))}),Promise.all(n)})))),this._dataValidationCacheService.ensureCache(t,n)}async validatorWorkbook(e){let t=this._sheetDataValidationModel.getSubUnitIds(e),n=await Promise.all(t.map(t=>this.validatorWorksheet(e,t))),r={};return n.forEach((e,n)=>{r[t[n]]=e}),r}getDataValidations(t,n,r){let i=this._sheetDataValidationModel.getRuleObjectMatrix(t,n),a=new Set;return r.forEach(t=>{e.Range.foreach(t,(e,t)=>{let n=i.getValue(e,t);n&&a.add(n)})}),Array.from(a).map(e=>this._sheetDataValidationModel.getRuleById(t,n,e)).filter(Boolean)}getDataValidation(e,t,n){return this.getDataValidations(e,t,n)[0]}};Q=f([d(0,e.IUniverInstanceService),d(1,(0,e.Inject)(E)),d(2,(0,e.Inject)(p)),d(3,(0,e.Inject)(e.LifecycleService))],Q);let $=class extends e.Plugin{constructor(t=ge,n,r,i){super(),this._config=t,this._injector=n,this._commandService=r,this._configService=i;let{...a}=(0,e.merge)({},ge,this._config);this._configService.setConfig(he,a)}onStarting(){[[p],[w],[T],[v],[Q],[E],[Z],[q],[X],[Y],[J]].forEach(e=>{this._injector.add(e)}),[B,z,V,H,G,W,U].forEach(e=>{this._commandService.registerCommand(e)}),this._injector.get(p),this._injector.get(Q),this._injector.get(Z),this._injector.get(J),this._injector.get(Y)}onReady(){this._injector.get(X)}onRendered(){this._injector.get(q)}};u($,`pluginName`,K),u($,`packageName`,pe),u($,`version`,me),u($,`type`,e.UniverInstanceType.UNIVER_SHEET),$=f([(0,e.DependentOn)(o.UniverSheetsFormulaPlugin,t.UniverDataValidationPlugin),d(1,(0,e.Inject)(e.Injector)),d(2,e.ICommandService),d(3,e.IConfigService)],$);function xe(t){let n=t.get(r.SheetsSelectionsService).getCurrentSelections().map(e=>e.range);return{uid:(0,e.generateRandomId)(6),type:e.DataValidationType.DECIMAL,operator:e.DataValidationOperator.EQUAL,formula1:`100`,ranges:n==null?[{startColumn:0,endColumn:0,startRow:0,endRow:0}]:n}}exports.AddSheetDataValidationCommand=B,exports.BASE_FORMULA_INPUT_NAME=`data-validation.formula-input`,exports.CHECKBOX_FORMULA_1=1,exports.CHECKBOX_FORMULA_2=0,exports.CHECKBOX_FORMULA_INPUT_NAME=`data-validation.checkbox-formula-input`,exports.CUSTOM_FORMULA_INPUT_NAME=`data-validation.custom-formula-input`,exports.CheckboxValidator=ne,exports.ClearRangeDataValidationCommand=U,exports.DATA_VALIDATION_PLUGIN_NAME=K,Object.defineProperty(exports,`DataValidationCacheService`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`DataValidationCustomFormulaService`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`DataValidationFormulaController`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`DataValidationFormulaService`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`DataValidationListCacheService`,{enumerable:!0,get:function(){return w}}),exports.DateValidator=N,exports.LIST_FORMULA_INPUT_NAME=`data-validation.list-formula-input`,exports.ListMultipleValidator=ye,exports.ListValidator=I,exports.RemoveSheetAllDataValidationCommand=W,exports.RemoveSheetDataValidationCommand=G,Object.defineProperty(exports,`SheetDataValidationModel`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`SheetsDataValidationValidatorService`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`UniverSheetsDataValidationPlugin`,{enumerable:!0,get:function(){return $}}),exports.UpdateSheetDataValidationOptionsCommand=H,exports.UpdateSheetDataValidationRangeCommand=z,exports.UpdateSheetDataValidationSettingCommand=V,exports.createDefaultNewRule=xe,exports.deserializeListOptions=S,exports.getCellValueNumber=F,exports.getCellValueOrigin=y,exports.getDataValidationCellValue=ee,exports.getDataValidationDiffMutations=R,exports.getFormulaCellData=h,exports.getFormulaResult=m,exports.getTransformedFormula=C,exports.isLegalFormulaResult=g,exports.serializeListOptions=x,exports.transformCheckboxValue=O;
|