@univerjs/data-validation 0.5.0 → 0.5.1-nightly.202411301606

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/cjs/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var b=Object.defineProperty;var P=(i,a,e)=>a in i?b(i,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[a]=e;var p=(i,a,e)=>P(i,typeof a!="symbol"?a+"":a,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("@univerjs/core"),D=require("rxjs");function M(i){return{type:i.type,operator:i.operator,formula1:i.formula1,formula2:i.formula2,allowBlank:i.allowBlank}}function R(i){return{error:i.error,errorStyle:i.errorStyle,errorTitle:i.errorTitle,imeMode:i.imeMode,prompt:i.prompt,promptTitle:i.promptTitle,showDropDown:i.showDropDown,showErrorMessage:i.showErrorMessage,showInputMessage:i.showInputMessage,renderMode:i.renderMode,bizInfo:i.bizInfo}}var m=(i=>(i[i.SETTING=0]="SETTING",i[i.RANGE=1]="RANGE",i[i.OPTIONS=2]="OPTIONS",i[i.ALL=3]="ALL",i))(m||{}),B=Object.defineProperty,x=Object.getOwnPropertyDescriptor,$=(i,a,e,t)=>{for(var r=t>1?void 0:t?x(a,e):a,n=i.length-1,d;n>=0;n--)(d=i[n])&&(r=(t?d(a,e,r):d(r))||r);return t&&r&&B(a,e,r),r},j=(i,a)=>(e,t)=>a(e,t,i);exports.DataValidationModel=class extends o.Disposable{constructor(e){super();p(this,"_model",new Map);p(this,"_ruleChange$",new D.Subject);p(this,"ruleChange$",this._ruleChange$.asObservable());p(this,"ruleChangeDebounce$",this.ruleChange$.pipe(D.debounceTime(20)));this._logService=e,this.disposeWithMe({dispose:()=>{this._ruleChange$.complete()}})}_ensureMap(e,t){this._model.has(e)||this._model.set(e,new Map);const r=this._model.get(e);if(r.has(t))return r.get(t);const n={map:new Map,list:[]};return r.set(t,n),n}_addSubUnitRule(e,t,r){const{map:n,list:d}=e,u=(Array.isArray(t)?t:[t]).filter(l=>!n.has(l.uid));typeof r=="number"&&r<d.length?d.splice(r,0,...u):d.push(...u),u.forEach(l=>{n.set(l.uid,l)})}_removeSubUnitRule(e,t){const{map:r,list:n}=e,d=n.findIndex(s=>s.uid===t);d>-1&&(n.splice(d,1),r.delete(t))}_updateSubUnitRule(e,t,r){const{map:n,list:d}=e,s=n.get(t),u=d.findIndex(c=>t===c.uid);if(!s)throw new Error(`Data validation rule is not found, ruleId: ${t}.`);const l={...s};switch(r.type){case m.RANGE:{l.ranges=r.payload;break}case m.SETTING:{Object.assign(l,M(r.payload));break}case m.OPTIONS:{Object.assign(l,R(r.payload));break}case m.ALL:{Object.assign(l,r.payload);break}}return d[u]=l,n.set(t,l),l}_addRuleSideEffect(e,t,r,n){if(!this._ensureMap(e,t).map.get(r.uid))return{rule:r,type:"add",unitId:e,subUnitId:t,source:n}}addRule(e,t,r,n,d){try{const s=this._ensureMap(e,t),l=(Array.isArray(r)?r:[r]).map(c=>this._addRuleSideEffect(e,t,c,n));this._addSubUnitRule(s,r,d),l.forEach(c=>{c&&this._ruleChange$.next(c)})}catch(s){this._logService.error(s)}}updateRule(e,t,r,n,d){try{const s=this._ensureMap(e,t),u=o.Tools.deepClone(s.map.get(r));if(!u)throw new Error(`Data validation rule is not found, ruleId: ${r}.`);const l=this._updateSubUnitRule(s,r,n);this._ruleChange$.next({rule:l,type:"update",unitId:e,subUnitId:t,source:d,updatePayload:n,oldRule:u})}catch(s){this._logService.error(s)}}removeRule(e,t,r,n){try{const d=this._ensureMap(e,t),s=d.map.get(r);s&&(this._removeSubUnitRule(d,r),this._ruleChange$.next({rule:s,type:"remove",unitId:e,subUnitId:t,source:n}))}catch(d){this._logService.error(d)}}getRuleById(e,t,r){return this._ensureMap(e,t).map.get(r)}getRuleIndex(e,t,r){return this._ensureMap(e,t).list.findIndex(d=>d.uid===r)}getRules(e,t){return[...this._ensureMap(e,t).list]}getUnitRules(e){const t=this._model.get(e);if(!t)return[];const r=[];return t.forEach((n,d)=>{r.push([d,n.list])}),r}deleteUnitRules(e){this._model.delete(e)}getSubUnitIds(e){var t,r;return Array.from((r=(t=this._model.get(e))==null?void 0:t.keys())!=null?r:[])}getAll(){return Array.from(this._model.keys()).map(e=>[e,this.getUnitRules(e)])}};exports.DataValidationModel=$([j(0,o.ILogService)],exports.DataValidationModel);var q=Object.defineProperty,G=Object.getOwnPropertyDescriptor,H=(i,a,e,t)=>{for(var r=t>1?void 0:t?G(a,e):a,n=i.length-1,d;n>=0;n--)(d=i[n])&&(r=(t?d(a,e,r):d(r))||r);return t&&r&&q(a,e,r),r},T=(i,a)=>(e,t)=>a(e,t,i);const Q="SHEET_DATA_VALIDATION_PLUGIN";exports.DataValidationResourceController=class extends o.Disposable{constructor(a,e,t){super(),this._resourceManagerService=a,this._univerInstanceService=e,this._dataValidationModel=t,this._initSnapshot()}_initSnapshot(){const a=t=>{const r=this._dataValidationModel.getUnitRules(t),n={};return r?(r.forEach(([d,s])=>{n[d]=s}),JSON.stringify(n)):""},e=t=>{if(!t)return{};try{return JSON.parse(t)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:Q,businesses:[o.UniverInstanceType.UNIVER_SHEET],toJson:t=>a(t),parseJson:t=>e(t),onUnLoad:t=>{this._dataValidationModel.deleteUnitRules(t)},onLoad:(t,r)=>{Object.keys(r).forEach(n=>{r[n].forEach(s=>{this._dataValidationModel.addRule(t,n,s,"patched")})})}}))}};exports.DataValidationResourceController=H([T(0,o.IResourceManagerService),T(1,o.IUniverInstanceService),T(2,o.Inject(exports.DataValidationModel))],exports.DataValidationResourceController);var U=(i=>(i.SHEET="sheet",i))(U||{});class A{constructor(){p(this,"_validatorByScopes",new Map);p(this,"_validatorMap",new Map);p(this,"_validatorsChange$",new D.BehaviorSubject(void 0));p(this,"validatorsChange$",this._validatorsChange$.asObservable())}_addValidatorToScope(a,e){this._validatorByScopes.has(e)||this._validatorByScopes.set(e,[]);const t=this._validatorByScopes.get(e);if(t.findIndex(r=>r.id===a.id)>-1)throw new Error(`Validator item with the same id ${a.id} has already been added!`);t.push(a)}_removeValidatorFromScope(a,e){const t=this._validatorByScopes.get(e);if(!t)return;const r=t.findIndex(n=>n.id===a.id);r>-1&&t.splice(r,1)}register(a){return this._validatorMap.set(a.id,a),Array.isArray(a.scopes)?a.scopes.forEach(e=>{this._addValidatorToScope(a,e)}):this._addValidatorToScope(a,a.scopes),this._validatorsChange$.next(),o.toDisposable(()=>{this._validatorMap.delete(a.id),Array.isArray(a.scopes)?a.scopes.forEach(e=>{this._removeValidatorFromScope(a,e)}):this._removeValidatorFromScope(a,a.scopes),this._validatorsChange$.next()})}getValidatorItem(a){return this._validatorMap.get(a)}getValidatorsByScope(a){return this._validatorByScopes.get(a)}}const E={type:o.CommandType.MUTATION,id:"data-validation.mutation.addRule",handler(i,a){if(!a)return!1;const{unitId:e,subUnitId:t,rule:r,index:n,source:d="command"}=a;return i.get(exports.DataValidationModel).addRule(e,t,r,d,n),!0}},V={type:o.CommandType.MUTATION,id:"data-validation.mutation.removeRule",handler(i,a){if(!a)return!1;const{unitId:e,subUnitId:t,ruleId:r,source:n="command"}=a,d=i.get(exports.DataValidationModel);return Array.isArray(r)?r.forEach(s=>{d.removeRule(e,t,s,n)}):d.removeRule(e,t,r,n),!0}},g={type:o.CommandType.MUTATION,id:"data-validation.mutation.updateRule",handler(i,a){if(!a)return!1;const{unitId:e,subUnitId:t,ruleId:r,payload:n,source:d="command"}=a;return i.get(exports.DataValidationModel).updateRule(e,t,r,n,d),!0}},W={type:o.CommandType.COMMAND,id:"data-validation.command.addRule",async handler(i,a){if(i.get(o.ILogService).error("[Deprecated]: `AddDataValidationCommand` is deprecated, please use `AddSheetDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const{rule:t,unitId:r,subUnitId:n}=a,d=i.get(o.ICommandService),s=i.get(o.IUndoRedoService),u={...a,rule:{...a.rule,ranges:[a.rule.range]}},l=[{id:E.id,params:u}],c=[{id:V.id,params:{unitId:r,subUnitId:n,ruleId:t.uid}}];return s.pushUndoRedo({unitID:r,redoMutations:l,undoMutations:c}),await d.executeCommand(E.id,u),!0}},F={type:o.CommandType.COMMAND,id:"data-validation.command.removeRule",handler(i,a){if(i.get(o.ILogService).error("[Deprecated]: `RemoveDataValidationCommand` is deprecated, please use `RemoveSheetDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const{unitId:t,subUnitId:r,ruleId:n}=a,d=i.get(o.ICommandService),s=i.get(o.IUndoRedoService),u=i.get(exports.DataValidationModel),l=[{id:V.id,params:a}],c=[{id:E.id,params:{unitId:t,subUnitId:r,rule:{...u.getRuleById(t,r,n)},index:u.getRuleIndex(t,r,n)}}];return s.pushUndoRedo({undoMutations:c,redoMutations:l,unitID:a.unitId}),d.executeCommand(V.id,a),!0}},J={type:o.CommandType.COMMAND,id:"data-validation.command.updateDataValidationSetting",handler(i,a){if(i.get(o.ILogService).warn("[Deprecated]: `UpdateDataValidationOptionsCommand` is deprecated, please use `UpdateSheetDataValidationOptionsCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const t=i.get(o.ICommandService),r=i.get(o.IUndoRedoService),n=i.get(exports.DataValidationModel),{unitId:d,subUnitId:s,ruleId:u,options:l}=a,c=n.getRuleById(d,s,u);if(!c)return!1;const h={unitId:d,subUnitId:s,ruleId:u,payload:{type:m.OPTIONS,payload:l}},_=[{id:g.id,params:h}],v={unitId:d,subUnitId:s,ruleId:u,payload:{type:m.OPTIONS,payload:R(c)}},O=[{id:g.id,params:v}];return r.pushUndoRedo({unitID:d,redoMutations:_,undoMutations:O}),t.executeCommand(g.id,h),!0}},z={type:o.CommandType.COMMAND,id:"data-validation.command.updateDataValidationOptions",handler(i,a){if(i.get(o.ILogService).error("[Deprecated]: `UpdateDataValidationSettingCommand` is deprecated, please use `UpdateSheetDataValidationSettingCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const t=i.get(o.ICommandService),r=i.get(o.IUndoRedoService),n=i.get(exports.DataValidationModel),d=i.get(A),{unitId:s,subUnitId:u,ruleId:l,setting:c}=a,h=d.getValidatorItem(c.type);if(!h)return!1;const _=n.getRuleById(s,u,l);if(!_)return!1;const v={..._,...c};if(!h.validatorFormula(v,s,u).success)return!1;const O={unitId:s,subUnitId:u,ruleId:l,payload:{type:m.SETTING,payload:{...c,...h.normalizeFormula(v,s,u)}}},L=[{id:g.id,params:O}],C={unitId:s,subUnitId:u,ruleId:l,payload:{type:m.SETTING,payload:M(_)}},w=[{id:g.id,params:C}];return r.pushUndoRedo({unitID:s,redoMutations:L,undoMutations:w}),t.executeCommand(g.id,O),!0}},K={type:o.CommandType.COMMAND,id:"data-validation.command.removeAll",handler(i,a){if(i.get(o.ILogService).error("[Deprecated]: `RemoveAllDataValidationCommand` is deprecated, please use `RemoveSheetAllDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const{unitId:t,subUnitId:r}=a,n=i.get(o.ICommandService),d=i.get(exports.DataValidationModel),s=i.get(o.IUndoRedoService),u=[...d.getRules(t,r)],l={unitId:t,subUnitId:r,ruleId:u.map(_=>_.uid)},c=[{id:V.id,params:l}],h=[{id:E.id,params:{unitId:t,subUnitId:r,rule:u}}];return s.pushUndoRedo({redoMutations:c,undoMutations:h,unitID:t}),n.executeCommand(V.id,l),!0}},Y="data-validation.config",X={};var Z=Object.defineProperty,k=Object.getOwnPropertyDescriptor,aa=(i,a,e,t)=>{for(var r=t>1?void 0:t?k(a,e):a,n=i.length-1,d;n>=0;n--)(d=i[n])&&(r=(t?d(a,e,r):d(r))||r);return t&&r&&Z(a,e,r),r},S=(i,a)=>(e,t)=>a(e,t,i);const ta="UNIVER_DATA_VALIDATION_PLUGIN";var f;exports.UniverDataValidationPlugin=(f=class extends o.Plugin{constructor(a=X,e,t,r){super(),this._config=a,this._injector=e,this._commandService=t,this._configService=r;const{...n}=this._config;this._configService.setConfig(Y,n)}onStarting(){[[exports.DataValidationModel],[A],[exports.DataValidationResourceController]].forEach(a=>this._injector.add(a)),[W,K,J,z,F,E,g,V].forEach(a=>{this._commandService.registerCommand(a)})}onReady(){this._injector.get(exports.DataValidationResourceController)}},p(f,"pluginName",ta),p(f,"type",o.UniverInstanceType.UNIVER_SHEET),f);exports.UniverDataValidationPlugin=aa([S(1,o.Inject(o.Injector)),S(2,o.ICommandService),S(3,o.IConfigService)],exports.UniverDataValidationPlugin);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 ea={[o.DataValidationOperator.BETWEEN]:"dataValidation.ruleName.between",[o.DataValidationOperator.EQUAL]:"dataValidation.ruleName.equal",[o.DataValidationOperator.GREATER_THAN]:"dataValidation.ruleName.greaterThan",[o.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.ruleName.greaterThanOrEqual",[o.DataValidationOperator.LESS_THAN]:"dataValidation.ruleName.lessThan",[o.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.ruleName.lessThanOrEqual",[o.DataValidationOperator.NOT_BETWEEN]:"dataValidation.ruleName.notBetween",[o.DataValidationOperator.NOT_EQUAL]:"dataValidation.ruleName.notEqual"},ra={[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"},oa={[o.DataValidationOperator.BETWEEN]:"dataValidation.textLength.errorMsg.between",[o.DataValidationOperator.EQUAL]:"dataValidation.textLength.errorMsg.equal",[o.DataValidationOperator.GREATER_THAN]:"dataValidation.textLength.errorMsg.greaterThan",[o.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.greaterThanOrEqual",[o.DataValidationOperator.LESS_THAN]:"dataValidation.textLength.errorMsg.lessThan",[o.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.lessThanOrEqual",[o.DataValidationOperator.NOT_BETWEEN]:"dataValidation.textLength.errorMsg.notBetween",[o.DataValidationOperator.NOT_EQUAL]:"dataValidation.textLength.errorMsg.notEqual"},ia=[o.DataValidationOperator.BETWEEN,o.DataValidationOperator.NOT_BETWEEN];var na=Object.defineProperty,da=Object.getOwnPropertyDescriptor,sa=(i,a,e,t)=>{for(var r=t>1?void 0:t?da(a,e):a,n=i.length-1,d;n>=0;n--)(d=i[n])&&(r=(t?d(a,e,r):d(r))||r);return t&&r&&na(a,e,r),r},I=(i,a)=>(e,t)=>a(e,t,i);const N="{FORMULA1}",y="{FORMULA2}",la={[o.DataValidationOperator.BETWEEN]:"dataValidation.operators.between",[o.DataValidationOperator.EQUAL]:"dataValidation.operators.equal",[o.DataValidationOperator.GREATER_THAN]:"dataValidation.operators.greaterThan",[o.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.operators.greaterThanOrEqual",[o.DataValidationOperator.LESS_THAN]:"dataValidation.operators.lessThan",[o.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.operators.lessThanOrEqual",[o.DataValidationOperator.NOT_BETWEEN]:"dataValidation.operators.notBetween",[o.DataValidationOperator.NOT_EQUAL]:"dataValidation.operators.notEqual"};exports.BaseDataValidator=class{constructor(a,e){p(this,"formulaInput");p(this,"canvasRender",null);p(this,"dropdown");p(this,"optionsInput");p(this,"skipDefaultFontRender");this.localeService=a,this.injector=e}get operatorNames(){return this.operators.map(a=>this.localeService.t(la[a]))}get titleStr(){return this.localeService.t(this.title)}generateRuleName(a){var t,r;if(!a.operator)return this.titleStr;const e=this.localeService.t(ea[a.operator]).replace(N,(t=a.formula1)!=null?t:"").replace(y,(r=a.formula2)!=null?r:"");return`${this.titleStr} ${e}`}generateRuleErrorMessage(a,e){var r,n;return a.operator?`${this.localeService.t(ra[a.operator]).replace(N,(r=a.formula1)!=null?r:"").replace(y,(n=a.formula2)!=null?n:"")}`:this.titleStr}getExtraStyle(a,e,t,r,n){}getRuleFinalError(a,e){return a.showErrorMessage&&a.error?a.error:this.generateRuleErrorMessage(a,e)}isEmptyCellValue(a){return a===""||a===void 0||a===null}normalizeFormula(a,e,t){return{formula1:a.formula1,formula2:a.formula2}}async isValidType(a,e,t){return!0}transform(a,e,t){return a}async validatorIsEqual(a,e,t){return!0}async validatorIsNotEqual(a,e,t){return!0}async validatorIsBetween(a,e,t){return!0}async validatorIsNotBetween(a,e,t){return!0}async validatorIsGreaterThan(a,e,t){return!0}async validatorIsGreaterThanOrEqual(a,e,t){return!0}async validatorIsLessThan(a,e,t){return!0}async validatorIsLessThanOrEqual(a,e,t){return!0}async validator(a,e){const{value:t,unitId:r,subUnitId:n}=a,d=this.isEmptyCellValue(t),{allowBlank:s=!0,operator:u}=e;if(d)return s;const l=await this.parseFormula(e,r,n,a.row,a.column);if(!l.isFormulaValid||!await this.isValidType(a,l,e))return!1;if(!o.Tools.isDefine(u))return!0;const c=this.transform(a,l,e);switch(u){case o.DataValidationOperator.BETWEEN:return this.validatorIsBetween(c,l,e);case o.DataValidationOperator.EQUAL:return this.validatorIsEqual(c,l,e);case o.DataValidationOperator.GREATER_THAN:return this.validatorIsGreaterThan(c,l,e);case o.DataValidationOperator.GREATER_THAN_OR_EQUAL:return this.validatorIsGreaterThanOrEqual(c,l,e);case o.DataValidationOperator.LESS_THAN:return this.validatorIsLessThan(c,l,e);case o.DataValidationOperator.LESS_THAN_OR_EQUAL:return this.validatorIsLessThanOrEqual(c,l,e);case o.DataValidationOperator.NOT_BETWEEN:return this.validatorIsNotBetween(c,l,e);case o.DataValidationOperator.NOT_EQUAL:return this.validatorIsNotEqual(c,l,e);default:throw new Error("Unknown operator.")}}};exports.BaseDataValidator=sa([I(0,o.Inject(o.LocaleService)),I(1,o.Inject(o.Injector))],exports.BaseDataValidator);exports.AddDataValidationMutation=E;exports.DataValidatorRegistryScope=U;exports.DataValidatorRegistryService=A;exports.RemoveDataValidationMutation=V;exports.TWO_FORMULA_OPERATOR_COUNT=ia;exports.TextLengthErrorTitleMap=oa;exports.UpdateDataValidationMutation=g;exports.UpdateRuleType=m;exports.getRuleOptions=R;exports.getRuleSetting=M;
1
+ "use strict";var w=Object.defineProperty;var P=(i,a,e)=>a in i?w(i,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[a]=e;var p=(i,a,e)=>P(i,typeof a!="symbol"?a+"":a,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("@univerjs/core"),D=require("rxjs");function N(i){return{type:i.type,operator:i.operator,formula1:i.formula1,formula2:i.formula2,allowBlank:i.allowBlank}}function M(i){return{error:i.error,errorStyle:i.errorStyle,errorTitle:i.errorTitle,imeMode:i.imeMode,prompt:i.prompt,promptTitle:i.promptTitle,showDropDown:i.showDropDown,showErrorMessage:i.showErrorMessage,showInputMessage:i.showInputMessage,renderMode:i.renderMode,bizInfo:i.bizInfo}}var m=(i=>(i[i.SETTING=0]="SETTING",i[i.RANGE=1]="RANGE",i[i.OPTIONS=2]="OPTIONS",i[i.ALL=3]="ALL",i))(m||{}),B=Object.defineProperty,x=Object.getOwnPropertyDescriptor,$=(i,a,e,r)=>{for(var t=r>1?void 0:r?x(a,e):a,n=i.length-1,d;n>=0;n--)(d=i[n])&&(t=(r?d(a,e,t):d(t))||t);return r&&t&&B(a,e,t),t},j=(i,a)=>(e,r)=>a(e,r,i);exports.DataValidationModel=class extends o.Disposable{constructor(e){super();p(this,"_model",new Map);p(this,"_ruleChange$",new D.Subject);p(this,"ruleChange$",this._ruleChange$.asObservable());p(this,"ruleChangeDebounce$",this.ruleChange$.pipe(D.debounceTime(20)));this._logService=e,this.disposeWithMe({dispose:()=>{this._ruleChange$.complete()}})}_ensureMap(e,r){this._model.has(e)||this._model.set(e,new Map);const t=this._model.get(e);if(t.has(r))return t.get(r);const n={map:new Map,list:[]};return t.set(r,n),n}_addSubUnitRule(e,r,t){const{map:n,list:d}=e,u=(Array.isArray(r)?r:[r]).filter(l=>!n.has(l.uid));typeof t=="number"&&t<d.length?d.splice(t,0,...u):d.push(...u),u.forEach(l=>{n.set(l.uid,l)})}_removeSubUnitRule(e,r){const{map:t,list:n}=e,d=n.findIndex(s=>s.uid===r);d>-1&&(n.splice(d,1),t.delete(r))}_updateSubUnitRule(e,r,t){const{map:n,list:d}=e,s=n.get(r),u=d.findIndex(c=>r===c.uid);if(!s)throw new Error(`Data validation rule is not found, ruleId: ${r}.`);const l={...s};switch(t.type){case m.RANGE:{l.ranges=t.payload;break}case m.SETTING:{Object.assign(l,N(t.payload));break}case m.OPTIONS:{Object.assign(l,M(t.payload));break}case m.ALL:{Object.assign(l,t.payload);break}}return d[u]=l,n.set(r,l),l}_addRuleSideEffect(e,r,t,n){if(!this._ensureMap(e,r).map.get(t.uid))return{rule:t,type:"add",unitId:e,subUnitId:r,source:n}}addRule(e,r,t,n,d){try{const s=this._ensureMap(e,r),l=(Array.isArray(t)?t:[t]).map(c=>this._addRuleSideEffect(e,r,c,n));this._addSubUnitRule(s,t,d),l.forEach(c=>{c&&this._ruleChange$.next(c)})}catch(s){this._logService.error(s)}}updateRule(e,r,t,n,d){try{const s=this._ensureMap(e,r),u=o.Tools.deepClone(s.map.get(t));if(!u)throw new Error(`Data validation rule is not found, ruleId: ${t}.`);const l=this._updateSubUnitRule(s,t,n);this._ruleChange$.next({rule:l,type:"update",unitId:e,subUnitId:r,source:d,updatePayload:n,oldRule:u})}catch(s){this._logService.error(s)}}removeRule(e,r,t,n){try{const d=this._ensureMap(e,r),s=d.map.get(t);s&&(this._removeSubUnitRule(d,t),this._ruleChange$.next({rule:s,type:"remove",unitId:e,subUnitId:r,source:n}))}catch(d){this._logService.error(d)}}getRuleById(e,r,t){return this._ensureMap(e,r).map.get(t)}getRuleIndex(e,r,t){return this._ensureMap(e,r).list.findIndex(d=>d.uid===t)}getRules(e,r){return[...this._ensureMap(e,r).list]}getUnitRules(e){const r=this._model.get(e);if(!r)return[];const t=[];return r.forEach((n,d)=>{t.push([d,n.list])}),t}deleteUnitRules(e){this._model.delete(e)}getSubUnitIds(e){var r,t;return Array.from((t=(r=this._model.get(e))==null?void 0:r.keys())!=null?t:[])}getAll(){return Array.from(this._model.keys()).map(e=>[e,this.getUnitRules(e)])}};exports.DataValidationModel=$([j(0,o.ILogService)],exports.DataValidationModel);var q=Object.defineProperty,G=Object.getOwnPropertyDescriptor,H=(i,a,e,r)=>{for(var t=r>1?void 0:r?G(a,e):a,n=i.length-1,d;n>=0;n--)(d=i[n])&&(t=(r?d(a,e,t):d(t))||t);return r&&t&&q(a,e,t),t},T=(i,a)=>(e,r)=>a(e,r,i);const Q="SHEET_DATA_VALIDATION_PLUGIN";exports.DataValidationResourceController=class extends o.Disposable{constructor(a,e,r){super(),this._resourceManagerService=a,this._univerInstanceService=e,this._dataValidationModel=r,this._initSnapshot()}_initSnapshot(){const a=r=>{const t=this._dataValidationModel.getUnitRules(r),n={};return t?(t.forEach(([d,s])=>{n[d]=s}),JSON.stringify(n)):""},e=r=>{if(!r)return{};try{return JSON.parse(r)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:Q,businesses:[o.UniverInstanceType.UNIVER_SHEET],toJson:r=>a(r),parseJson:r=>e(r),onUnLoad:r=>{this._dataValidationModel.deleteUnitRules(r)},onLoad:(r,t)=>{Object.keys(t).forEach(n=>{t[n].forEach(s=>{this._dataValidationModel.addRule(r,n,s,"patched")})})}}))}};exports.DataValidationResourceController=H([T(0,o.IResourceManagerService),T(1,o.IUniverInstanceService),T(2,o.Inject(exports.DataValidationModel))],exports.DataValidationResourceController);var U=(i=>(i.SHEET="sheet",i))(U||{});class R{constructor(){p(this,"_validatorByScopes",new Map);p(this,"_validatorMap",new Map);p(this,"_validatorsChange$",new D.BehaviorSubject(void 0));p(this,"validatorsChange$",this._validatorsChange$.asObservable())}_addValidatorToScope(a,e){this._validatorByScopes.has(e)||this._validatorByScopes.set(e,[]);const r=this._validatorByScopes.get(e);if(r.findIndex(t=>t.id===a.id)>-1)throw new Error(`Validator item with the same id ${a.id} has already been added!`);r.push(a)}_removeValidatorFromScope(a,e){const r=this._validatorByScopes.get(e);if(!r)return;const t=r.findIndex(n=>n.id===a.id);t>-1&&r.splice(t,1)}register(a){return this._validatorMap.set(a.id,a),Array.isArray(a.scopes)?a.scopes.forEach(e=>{this._addValidatorToScope(a,e)}):this._addValidatorToScope(a,a.scopes),this._validatorsChange$.next(),o.toDisposable(()=>{this._validatorMap.delete(a.id),Array.isArray(a.scopes)?a.scopes.forEach(e=>{this._removeValidatorFromScope(a,e)}):this._removeValidatorFromScope(a,a.scopes),this._validatorsChange$.next()})}getValidatorItem(a){return this._validatorMap.get(a)}getValidatorsByScope(a){return this._validatorByScopes.get(a)}}const v={type:o.CommandType.MUTATION,id:"data-validation.mutation.addRule",handler(i,a){if(!a)return!1;const{unitId:e,subUnitId:r,rule:t,index:n,source:d="command"}=a;return i.get(exports.DataValidationModel).addRule(e,r,t,d,n),!0}},V={type:o.CommandType.MUTATION,id:"data-validation.mutation.removeRule",handler(i,a){if(!a)return!1;const{unitId:e,subUnitId:r,ruleId:t,source:n="command"}=a,d=i.get(exports.DataValidationModel);return Array.isArray(t)?t.forEach(s=>{d.removeRule(e,r,s,n)}):d.removeRule(e,r,t,n),!0}},_={type:o.CommandType.MUTATION,id:"data-validation.mutation.updateRule",handler(i,a){if(!a)return!1;const{unitId:e,subUnitId:r,ruleId:t,payload:n,source:d="command"}=a;return i.get(exports.DataValidationModel).updateRule(e,r,t,n,d),!0}},F={type:o.CommandType.COMMAND,id:"data-validation.command.addRule",async handler(i,a){if(i.get(o.ILogService).error("[Deprecated]: `AddDataValidationCommand` is deprecated, please use `AddSheetDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const{rule:r,unitId:t,subUnitId:n}=a,d=i.get(o.ICommandService),s=i.get(o.IUndoRedoService),u={...a,rule:{...a.rule,ranges:[a.rule.range]}},l=[{id:v.id,params:u}],c=[{id:V.id,params:{unitId:t,subUnitId:n,ruleId:r.uid}}];return s.pushUndoRedo({unitID:t,redoMutations:l,undoMutations:c}),await d.executeCommand(v.id,u),!0}},W={type:o.CommandType.COMMAND,id:"data-validation.command.removeRule",handler(i,a){if(i.get(o.ILogService).error("[Deprecated]: `RemoveDataValidationCommand` is deprecated, please use `RemoveSheetDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const{unitId:r,subUnitId:t,ruleId:n}=a,d=i.get(o.ICommandService),s=i.get(o.IUndoRedoService),u=i.get(exports.DataValidationModel),l=[{id:V.id,params:a}],c=[{id:v.id,params:{unitId:r,subUnitId:t,rule:{...u.getRuleById(r,t,n)},index:u.getRuleIndex(r,t,n)}}];return s.pushUndoRedo({undoMutations:c,redoMutations:l,unitID:a.unitId}),d.executeCommand(V.id,a),!0}},J={type:o.CommandType.COMMAND,id:"data-validation.command.updateDataValidationSetting",handler(i,a){if(i.get(o.ILogService).warn("[Deprecated]: `UpdateDataValidationOptionsCommand` is deprecated, please use `UpdateSheetDataValidationOptionsCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const r=i.get(o.ICommandService),t=i.get(o.IUndoRedoService),n=i.get(exports.DataValidationModel),{unitId:d,subUnitId:s,ruleId:u,options:l}=a,c=n.getRuleById(d,s,u);if(!c)return!1;const h={unitId:d,subUnitId:s,ruleId:u,payload:{type:m.OPTIONS,payload:l}},g=[{id:_.id,params:h}],E={unitId:d,subUnitId:s,ruleId:u,payload:{type:m.OPTIONS,payload:M(c)}},O=[{id:_.id,params:E}];return t.pushUndoRedo({unitID:d,redoMutations:g,undoMutations:O}),r.executeCommand(_.id,h),!0}},z={type:o.CommandType.COMMAND,id:"data-validation.command.updateDataValidationOptions",handler(i,a){if(i.get(o.ILogService).error("[Deprecated]: `UpdateDataValidationSettingCommand` is deprecated, please use `UpdateSheetDataValidationSettingCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const r=i.get(o.ICommandService),t=i.get(o.IUndoRedoService),n=i.get(exports.DataValidationModel),d=i.get(R),{unitId:s,subUnitId:u,ruleId:l,setting:c}=a,h=d.getValidatorItem(c.type);if(!h)return!1;const g=n.getRuleById(s,u,l);if(!g)return!1;const E={...g,...c};if(!h.validatorFormula(E,s,u).success)return!1;const O={unitId:s,subUnitId:u,ruleId:l,payload:{type:m.SETTING,payload:{...c,...h.normalizeFormula(E,s,u)}}},L=[{id:_.id,params:O}],C={unitId:s,subUnitId:u,ruleId:l,payload:{type:m.SETTING,payload:N(g)}},b=[{id:_.id,params:C}];return t.pushUndoRedo({unitID:s,redoMutations:L,undoMutations:b}),r.executeCommand(_.id,O),!0}},K={type:o.CommandType.COMMAND,id:"data-validation.command.removeAll",handler(i,a){if(i.get(o.ILogService).error("[Deprecated]: `RemoveAllDataValidationCommand` is deprecated, please use `RemoveSheetAllDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const{unitId:r,subUnitId:t}=a,n=i.get(o.ICommandService),d=i.get(exports.DataValidationModel),s=i.get(o.IUndoRedoService),u=[...d.getRules(r,t)],l={unitId:r,subUnitId:t,ruleId:u.map(g=>g.uid)},c=[{id:V.id,params:l}],h=[{id:v.id,params:{unitId:r,subUnitId:t,rule:u}}];return s.pushUndoRedo({redoMutations:c,undoMutations:h,unitID:r}),n.executeCommand(V.id,l),!0}},Y="data-validation.config",X={};var Z=Object.defineProperty,k=Object.getOwnPropertyDescriptor,aa=(i,a,e,r)=>{for(var t=r>1?void 0:r?k(a,e):a,n=i.length-1,d;n>=0;n--)(d=i[n])&&(t=(r?d(a,e,t):d(t))||t);return r&&t&&Z(a,e,t),t},S=(i,a)=>(e,r)=>a(e,r,i);const ta="UNIVER_DATA_VALIDATION_PLUGIN";var f;exports.UniverDataValidationPlugin=(f=class extends o.Plugin{constructor(a=X,e,r,t){super(),this._config=a,this._injector=e,this._commandService=r,this._configService=t;const{...n}=this._config;this._configService.setConfig(Y,n)}onStarting(){[[exports.DataValidationModel],[R],[exports.DataValidationResourceController]].forEach(a=>this._injector.add(a)),[F,K,J,z,W,v,_,V].forEach(a=>{this._commandService.registerCommand(a)})}onReady(){this._injector.get(exports.DataValidationResourceController)}},p(f,"pluginName",ta),p(f,"type",o.UniverInstanceType.UNIVER_SHEET),f);exports.UniverDataValidationPlugin=aa([S(1,o.Inject(o.Injector)),S(2,o.ICommandService),S(3,o.IConfigService)],exports.UniverDataValidationPlugin);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 ea={[o.DataValidationOperator.BETWEEN]:"dataValidation.ruleName.between",[o.DataValidationOperator.EQUAL]:"dataValidation.ruleName.equal",[o.DataValidationOperator.GREATER_THAN]:"dataValidation.ruleName.greaterThan",[o.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.ruleName.greaterThanOrEqual",[o.DataValidationOperator.LESS_THAN]:"dataValidation.ruleName.lessThan",[o.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.ruleName.lessThanOrEqual",[o.DataValidationOperator.NOT_BETWEEN]:"dataValidation.ruleName.notBetween",[o.DataValidationOperator.NOT_EQUAL]:"dataValidation.ruleName.notEqual"},ra={[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"},oa={[o.DataValidationOperator.BETWEEN]:"dataValidation.textLength.errorMsg.between",[o.DataValidationOperator.EQUAL]:"dataValidation.textLength.errorMsg.equal",[o.DataValidationOperator.GREATER_THAN]:"dataValidation.textLength.errorMsg.greaterThan",[o.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.greaterThanOrEqual",[o.DataValidationOperator.LESS_THAN]:"dataValidation.textLength.errorMsg.lessThan",[o.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.lessThanOrEqual",[o.DataValidationOperator.NOT_BETWEEN]:"dataValidation.textLength.errorMsg.notBetween",[o.DataValidationOperator.NOT_EQUAL]:"dataValidation.textLength.errorMsg.notEqual"},ia=[o.DataValidationOperator.BETWEEN,o.DataValidationOperator.NOT_BETWEEN];var na=Object.defineProperty,da=Object.getOwnPropertyDescriptor,sa=(i,a,e,r)=>{for(var t=r>1?void 0:r?da(a,e):a,n=i.length-1,d;n>=0;n--)(d=i[n])&&(t=(r?d(a,e,t):d(t))||t);return r&&t&&na(a,e,t),t},A=(i,a)=>(e,r)=>a(e,r,i);const I="{FORMULA1}",y="{FORMULA2}",la={[o.DataValidationOperator.BETWEEN]:"dataValidation.operators.between",[o.DataValidationOperator.EQUAL]:"dataValidation.operators.equal",[o.DataValidationOperator.GREATER_THAN]:"dataValidation.operators.greaterThan",[o.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.operators.greaterThanOrEqual",[o.DataValidationOperator.LESS_THAN]:"dataValidation.operators.lessThan",[o.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.operators.lessThanOrEqual",[o.DataValidationOperator.NOT_BETWEEN]:"dataValidation.operators.notBetween",[o.DataValidationOperator.NOT_EQUAL]:"dataValidation.operators.notEqual"};exports.BaseDataValidator=class{constructor(a,e){p(this,"offsetFormulaByRange",!0);p(this,"formulaInput");p(this,"canvasRender",null);p(this,"dropdown");p(this,"optionsInput");p(this,"skipDefaultFontRender");this.localeService=a,this.injector=e}get operatorNames(){return this.operators.map(a=>this.localeService.t(la[a]))}get titleStr(){return this.localeService.t(this.title)}generateRuleName(a){var r,t;if(!a.operator)return this.titleStr;const e=this.localeService.t(ea[a.operator]).replace(I,(r=a.formula1)!=null?r:"").replace(y,(t=a.formula2)!=null?t:"");return`${this.titleStr} ${e}`}generateRuleErrorMessage(a,e){var t,n;return a.operator?`${this.localeService.t(ra[a.operator]).replace(I,(t=a.formula1)!=null?t:"").replace(y,(n=a.formula2)!=null?n:"")}`:this.titleStr}getExtraStyle(a,e,r,t,n){}getRuleFinalError(a,e){return a.showErrorMessage&&a.error?a.error:this.generateRuleErrorMessage(a,e)}isEmptyCellValue(a){return a===""||a===void 0||a===null}normalizeFormula(a,e,r){return{formula1:a.formula1,formula2:a.formula2}}async isValidType(a,e,r){return!0}transform(a,e,r){return a}async validatorIsEqual(a,e,r){const{formula1:t}=e,{value:n}=a;return Number.isNaN(t)?!0:n===t}async validatorIsNotEqual(a,e,r){const{formula1:t}=e;return Number.isNaN(t)?!0:a.value!==t}async validatorIsBetween(a,e,r){const{formula1:t,formula2:n}=e;if(Number.isNaN(t)||Number.isNaN(n))return!0;const d=Math.min(t,n),s=Math.max(t,n);return a.value>=d&&a.value<=s}async validatorIsNotBetween(a,e,r){const{formula1:t,formula2:n}=e;if(Number.isNaN(t)||Number.isNaN(n))return!0;const d=Math.min(t,n),s=Math.max(t,n);return a.value<d||a.value>s}async validatorIsGreaterThan(a,e,r){const{formula1:t}=e;return Number.isNaN(t)?!0:a.value>t}async validatorIsGreaterThanOrEqual(a,e,r){const{formula1:t}=e;return Number.isNaN(t)?!0:a.value>=t}async validatorIsLessThan(a,e,r){const{formula1:t}=e;return Number.isNaN(t)?!0:a.value<t}async validatorIsLessThanOrEqual(a,e,r){const{formula1:t}=e;return Number.isNaN(t)?!0:a.value<=t}async validator(a,e){const{value:r,unitId:t,subUnitId:n}=a,d=this.isEmptyCellValue(r),{allowBlank:s=!0,operator:u}=e;if(d)return s;const l=await this.parseFormula(e,t,n,a.row,a.column);if(!l.isFormulaValid||!await this.isValidType(a,l,e))return!1;if(!o.Tools.isDefine(u))return!0;const c=this.transform(a,l,e);switch(u){case o.DataValidationOperator.BETWEEN:return this.validatorIsBetween(c,l,e);case o.DataValidationOperator.EQUAL:return this.validatorIsEqual(c,l,e);case o.DataValidationOperator.GREATER_THAN:return this.validatorIsGreaterThan(c,l,e);case o.DataValidationOperator.GREATER_THAN_OR_EQUAL:return this.validatorIsGreaterThanOrEqual(c,l,e);case o.DataValidationOperator.LESS_THAN:return this.validatorIsLessThan(c,l,e);case o.DataValidationOperator.LESS_THAN_OR_EQUAL:return this.validatorIsLessThanOrEqual(c,l,e);case o.DataValidationOperator.NOT_BETWEEN:return this.validatorIsNotBetween(c,l,e);case o.DataValidationOperator.NOT_EQUAL:return this.validatorIsNotEqual(c,l,e);default:throw new Error("Unknown operator.")}}};exports.BaseDataValidator=sa([A(0,o.Inject(o.LocaleService)),A(1,o.Inject(o.Injector))],exports.BaseDataValidator);exports.AddDataValidationMutation=v;exports.DataValidatorRegistryScope=U;exports.DataValidatorRegistryService=R;exports.RemoveDataValidationMutation=V;exports.TWO_FORMULA_OPERATOR_COUNT=ia;exports.TextLengthErrorTitleMap=oa;exports.UpdateDataValidationMutation=_;exports.UpdateRuleType=m;exports.getRuleOptions=M;exports.getRuleSetting=N;