@univerjs/data-validation 0.1.6 → 0.1.7
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 +1 -1
- package/lib/es/index.js +517 -384
- package/lib/types/commands/mutations/formula.mutation.d.ts +10 -0
- package/lib/types/controllers/dv-resource.controller.d.ts +10 -0
- package/lib/types/controllers/dv-sheet.controller.d.ts +11 -0
- package/lib/types/index.d.ts +4 -0
- package/lib/types/plugin.d.ts +1 -1
- package/lib/types/types/const/operator-text-map.d.ts +1 -0
- package/lib/umd/index.js +1 -1
- package/package.json +29 -12
package/lib/cjs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var $=Object.defineProperty;var P=(o,t,a)=>t in o?$(o,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):o[t]=a;var u=(o,t,a)=>(P(o,typeof t!="symbol"?t+"":t,a),a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("@univerjs/core"),v=require("@wendellhu/redi"),E=require("rxjs"),x=require("@univerjs/sheets");var I=(o=>(o.SHEET="sheet",o))(I||{});class D{constructor(){u(this,"_validatorByScopes",new Map);u(this,"_validatorMap",new Map);u(this,"_validatorsChange$",new E.BehaviorSubject(void 0));u(this,"validatorsChange$",this._validatorsChange$.asObservable())}_addValidatorToScope(t,a){this._validatorByScopes.has(a)||this._validatorByScopes.set(a,[]);const e=this._validatorByScopes.get(a);if(e.findIndex(r=>r.id===t.id)>-1)throw new Error(`Validator item with the same id ${t.id} has already been added!`);e.push(t)}_removeValidatorFromScope(t,a){const e=this._validatorByScopes.get(a);if(!e)return;const r=e.findIndex(n=>n.id===t.id);r>-1&&e.splice(r,1)}register(t){return this._validatorMap.set(t.id,t),Array.isArray(t.scopes)?t.scopes.forEach(a=>{this._addValidatorToScope(t,a)}):this._addValidatorToScope(t,t.scopes),this._validatorsChange$.next(),i.toDisposable(()=>{this._validatorMap.delete(t.id),Array.isArray(t.scopes)?t.scopes.forEach(a=>{this._removeValidatorFromScope(t,a)}):this._removeValidatorFromScope(t,t.scopes),this._validatorsChange$.next()})}getValidatorItem(t){return this._validatorMap.get(t)}getValidatorsByScope(t){return this._validatorByScopes.get(t)}}var q=Object.defineProperty,G=Object.getOwnPropertyDescriptor,j=(o,t,a,e)=>{for(var r=e>1?void 0:e?G(t,a):t,n=o.length-1,d;n>=0;n--)(d=o[n])&&(r=(e?d(t,a,r):d(r))||r);return e&&r&&q(t,a,r),r},H=(o,t)=>(a,e)=>t(a,e,o);exports.DataValidationModel=class extends i.Disposable{constructor(a){super();u(this,"_model",new Map);u(this,"_managerCreator");u(this,"_ruleChange$",new E.Subject);u(this,"_validStatusChange$",new E.Subject);u(this,"ruleChange$",this._ruleChange$.asObservable());u(this,"ruleChangeDebounce$",this.ruleChange$.pipe(E.debounceTime(20)));u(this,"validStatusChange$",this._validStatusChange$.asObservable().pipe(E.debounceTime(20)));this._logService=a,this.disposeWithMe({dispose:()=>{this._ruleChange$.complete(),this._validStatusChange$.complete()}})}setManagerCreator(a){this._managerCreator=a}ensureManager(a,e){this._model.has(a)||this._model.set(a,new Map);const r=this._model.get(a);if(r.has(e))return r.get(e);const n=this._managerCreator(a,e);return r.set(e,n),n}addRule(a,e,r,n){try{this.ensureManager(a,e).addRule(r,n),this._ruleChange$.next({rule:r,type:"add",unitId:a,subUnitId:e})}catch(d){this._logService.error(d)}}updateRule(a,e,r,n){try{const s=this.ensureManager(a,e).updateRule(r,n);this._ruleChange$.next({rule:s,type:"update",unitId:a,subUnitId:e})}catch(d){this._logService.error(d)}}removeRule(a,e,r){try{const n=this.ensureManager(a,e),d=n.getRuleById(r);n.removeRule(r),this._ruleChange$.next({rule:d,type:"remove",unitId:a,subUnitId:e})}catch(n){this._logService.error(n)}}getRuleById(a,e,r){return this.ensureManager(a,e).getRuleById(r)}getRuleIndex(a,e,r){return this.ensureManager(a,e).getRuleIndex(r)}getRules(a,e){return this.ensureManager(a,e).getDataValidations()}validator(a,e,r){const{unitId:n,subUnitId:d}=r;return this.ensureManager(n,d).validator(a,e,r,c=>{this._validStatusChange$.next({unitId:n,subUnitId:d,ruleId:e.uid,status:c})})}getUnitRules(a){const e=this._model.get(a);if(!e)return[];const r=[];return e.forEach(n=>{r.push([n.subUnitId,n.getDataValidations()])}),r}};exports.DataValidationModel=j([H(0,i.ILogService)],exports.DataValidationModel);const V={type:i.CommandType.MUTATION,id:"data-validation.mutation.addRule",handler(o,t){if(!t)return!1;const{unitId:a,subUnitId:e,rule:r,index:n}=t,d=o.get(exports.DataValidationModel);return Array.isArray(r)?r.forEach(s=>{d.addRule(a,e,s,n)}):d.addRule(a,e,r,n),!0}},g={type:i.CommandType.MUTATION,id:"data-validation.mutation.removeRule",handler(o,t){if(!t)return!1;const{unitId:a,subUnitId:e,ruleId:r}=t,n=o.get(exports.DataValidationModel);return Array.isArray(r)?r.forEach(d=>{n.removeRule(a,e,d)}):n.removeRule(a,e,r),!0}},h={type:i.CommandType.MUTATION,id:"data-validation.mutation.updateRule",handler(o,t){if(!t)return!1;const{unitId:a,subUnitId:e,ruleId:r,payload:n}=t;return o.get(exports.DataValidationModel).updateRule(a,e,r,n),!0}};function y(o){return{type:o.type,operator:o.operator,formula1:o.formula1,formula2:o.formula2,allowBlank:o.allowBlank}}function A(o){return{error:o.error,errorStyle:o.errorStyle,errorTitle:o.errorTitle,imeMode:o.imeMode,prompt:o.prompt,promptTitle:o.promptTitle,showDropDown:o.showDropDown,showErrorMessage:o.showErrorMessage,showInputMessage:o.showInputMessage,renderMode:o.renderMode}}function Q(o){const a=o.get(x.SelectionManagerService).getSelectionRanges();return{uid:i.Tools.generateRandomId(6),type:i.DataValidationType.DECIMAL,operator:i.DataValidationOperator.EQUAL,formula1:"100",ranges:a!=null?a:[{startColumn:0,endColumn:0,startRow:0,endRow:0}]}}var m=(o=>(o[o.SETTING=0]="SETTING",o[o.RANGE=1]="RANGE",o[o.OPTIONS=2]="OPTIONS",o))(m||{});const N={type:i.CommandType.COMMAND,id:"data-validation.command.addRule",async handler(o,t){if(!t)return!1;const{rule:a,unitId:e,subUnitId:r}=t,n=o.get(i.ICommandService),d=o.get(i.IUndoRedoService),s={...t,rule:{...t.rule,ranges:[t.rule.range]}},c=[{id:V.id,params:s}],l=[{id:g.id,params:{unitId:e,subUnitId:r,ruleId:a.uid}}];return d.pushUndoRedo({unitID:e,redoMutations:c,undoMutations:l}),await n.executeCommand(V.id,s),!0}},W=(o,t)=>{const a=o.get(exports.DataValidationModel),{unitId:e,subUnitId:r,ruleId:n}=t;if(Array.isArray(n)){const s=n.map(c=>a.getRuleById(e,r,c)).filter(Boolean);return[{id:V.id,params:{unitId:e,subUnitId:r,rule:s}}]}return[{id:V.id,params:{unitId:e,subUnitId:r,rule:{...a.getRuleById(e,r,n)},index:a.getRuleIndex(e,r,n)}}]},C={type:i.CommandType.COMMAND,id:"data-validation.command.removeRule",handler(o,t){if(!t)return!1;const{unitId:a,subUnitId:e,ruleId:r}=t,n=o.get(i.ICommandService),d=o.get(i.IUndoRedoService),s=o.get(exports.DataValidationModel),c=[{id:g.id,params:t}],l=[{id:V.id,params:{unitId:a,subUnitId:e,rule:{...s.getRuleById(a,e,r)},index:s.getRuleIndex(a,e,r)}}];return d.pushUndoRedo({undoMutations:l,redoMutations:c,unitID:t.unitId}),n.executeCommand(g.id,t),!0}},U={type:i.CommandType.COMMAND,id:"data-validation.command.updateDataValidationSetting",handler(o,t){if(!t)return!1;const a=o.get(i.ICommandService),e=o.get(i.IUndoRedoService),r=o.get(exports.DataValidationModel),{unitId:n,subUnitId:d,ruleId:s,options:c}=t,l=r.getRuleById(n,d,s);if(!l)return!1;const p={unitId:n,subUnitId:d,ruleId:s,payload:{type:m.OPTIONS,payload:c}},_=[{id:h.id,params:p}],O={unitId:n,subUnitId:d,ruleId:s,payload:{type:m.OPTIONS,payload:A(l)}},T=[{id:h.id,params:O}];return e.pushUndoRedo({unitID:n,redoMutations:_,undoMutations:T}),a.executeCommand(h.id,p),!0}},w={type:i.CommandType.COMMAND,id:"data-validation.command.updateDataValidationOptions",handler(o,t){if(!t)return!1;const a=o.get(i.ICommandService),e=o.get(i.IUndoRedoService),r=o.get(exports.DataValidationModel),n=o.get(D),{unitId:d,subUnitId:s,ruleId:c,setting:l}=t,p=n.getValidatorItem(l.type);if(!p||!p.validatorFormula(l).success)return!1;const _=r.getRuleById(d,s,c);if(!_)return!1;const O={unitId:d,subUnitId:s,ruleId:c,payload:{type:m.SETTING,payload:l}},T=[{id:h.id,params:O}],b={unitId:d,subUnitId:s,ruleId:c,payload:{type:m.SETTING,payload:y(_)}},B=[{id:h.id,params:b}];return e.pushUndoRedo({unitID:d,redoMutations:T,undoMutations:B}),a.executeCommand(h.id,O),!0}},L={type:i.CommandType.COMMAND,id:"data-validation.command.removeAll",handler(o,t){if(!t)return!1;const{unitId:a,subUnitId:e}=t,r=o.get(i.ICommandService),n=o.get(exports.DataValidationModel),d=o.get(i.IUndoRedoService),s=[...n.getRules(a,e)],c={unitId:a,subUnitId:e,ruleId:s.map(_=>_.uid)},l=[{id:g.id,params:c}],p=[{id:V.id,params:{unitId:a,subUnitId:e,rule:s}}];return d.pushUndoRedo({redoMutations:l,undoMutations:p,unitID:a}),r.executeCommand(g.id,c),!0}};var F=Object.defineProperty,J=Object.getOwnPropertyDescriptor,z=(o,t,a,e)=>{for(var r=e>1?void 0:e?J(t,a):t,n=o.length-1,d;n>=0;n--)(d=o[n])&&(r=(e?d(t,a,r):d(r))||r);return e&&r&&F(t,a,r),r},M=(o,t)=>(a,e)=>t(a,e,o);const K="data-validation";exports.UniverDataValidationPlugin=class extends i.Plugin{constructor(t,a){super(K),this._injector=t,this._commandService=a}onStarting(t){[[exports.DataValidationModel],[D]].forEach(a=>{t.add(a)}),[N,L,U,w,C,V,h,g].forEach(a=>{this._commandService.registerCommand(a)})}};exports.UniverDataValidationPlugin=z([M(0,v.Inject(v.Injector)),M(1,i.ICommandService)],exports.UniverDataValidationPlugin);i.DataValidationOperator.BETWEEN+"",i.DataValidationOperator.EQUAL+"",i.DataValidationOperator.GREATER_THAN+"",i.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",i.DataValidationOperator.LESS_THAN+"",i.DataValidationOperator.LESS_THAN_OR_EQUAL+"",i.DataValidationOperator.NOT_BETWEEN+"",i.DataValidationOperator.NOT_EQUAL+"";const X={[i.DataValidationOperator.BETWEEN]:"dataValidation.ruleName.between",[i.DataValidationOperator.EQUAL]:"dataValidation.ruleName.equal",[i.DataValidationOperator.GREATER_THAN]:"dataValidation.ruleName.greaterThan",[i.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.ruleName.greaterThanOrEqual",[i.DataValidationOperator.LESS_THAN]:"dataValidation.ruleName.lessThan",[i.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.ruleName.lessThanOrEqual",[i.DataValidationOperator.NOT_BETWEEN]:"dataValidation.ruleName.notBetween",[i.DataValidationOperator.NOT_EQUAL]:"dataValidation.ruleName.notEqual"},Y={[i.DataValidationOperator.BETWEEN]:"dataValidation.errorMsg.between",[i.DataValidationOperator.EQUAL]:"dataValidation.errorMsg.equal",[i.DataValidationOperator.GREATER_THAN]:"dataValidation.errorMsg.greaterThan",[i.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.errorMsg.greaterThanOrEqual",[i.DataValidationOperator.LESS_THAN]:"dataValidation.errorMsg.lessThan",[i.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.errorMsg.lessThanOrEqual",[i.DataValidationOperator.NOT_BETWEEN]:"dataValidation.errorMsg.notBetween",[i.DataValidationOperator.NOT_EQUAL]:"dataValidation.errorMsg.notEqual"};var Z=Object.defineProperty,k=Object.getOwnPropertyDescriptor,aa=(o,t,a,e)=>{for(var r=e>1?void 0:e?k(t,a):t,n=o.length-1,d;n>=0;n--)(d=o[n])&&(r=(e?d(t,a,r):d(r))||r);return e&&r&&Z(t,a,r),r},f=(o,t)=>(a,e)=>t(a,e,o);const R="{FORMULA1}",S="{FORMULA2}",ta={[i.DataValidationOperator.BETWEEN]:"dataValidation.operators.between",[i.DataValidationOperator.EQUAL]:"dataValidation.operators.equal",[i.DataValidationOperator.GREATER_THAN]:"dataValidation.operators.greaterThan",[i.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.operators.greaterThanOrEqual",[i.DataValidationOperator.LESS_THAN]:"dataValidation.operators.lessThan",[i.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.operators.lessThanOrEqual",[i.DataValidationOperator.NOT_BETWEEN]:"dataValidation.operators.notBetween",[i.DataValidationOperator.NOT_EQUAL]:"dataValidation.operators.notEqual"};exports.BaseDataValidator=class{constructor(t,a){u(this,"canvasRender",null);u(this,"dropdown");u(this,"optionsInput");this.localeService=t,this.injector=a}get operatorNames(){return this.operators.map(t=>this.localeService.t(ta[t]))}get titleStr(){return this.localeService.t(this.title)}skipDefaultFontRender(t,a,e){return!1}generateRuleName(t){var e,r;if(!t.operator)return this.titleStr;const a=this.localeService.t(X[t.operator]).replace(R,(e=t.formula1)!=null?e:"").replace(S,(r=t.formula2)!=null?r:"");return`${this.titleStr} ${a}`}generateRuleErrorMessage(t){var e,r;return t.operator?`${this.localeService.t(Y[t.operator]).replace(R,(e=t.formula1)!=null?e:"").replace(S,(r=t.formula2)!=null?r:"")}`:this.titleStr}getRuleFinalError(t){return t.showInputMessage&&t.error?t.error:this.generateRuleErrorMessage(t)}isEmptyCellValue(t){return t===""||t===void 0||t===null}async isValidType(t,a,e){return!0}transform(t,a,e){return t}async validatorIsEqual(t,a,e){return!0}async validatorIsNotEqual(t,a,e){return!0}async validatorIsBetween(t,a,e){return!0}async validatorIsNotBetween(t,a,e){return!0}async validatorIsGreaterThan(t,a,e){return!0}async validatorIsGreaterThanOrEqual(t,a,e){return!0}async validatorIsLessThan(t,a,e){return!0}async validatorIsLessThanOrEqual(t,a,e){return!0}async validator(t,a){const{value:e,unitId:r,subUnitId:n}=t,d=this.isEmptyCellValue(e),{allowBlank:s=!0,operator:c}=a;if(d)return s;const l=await this.parseFormula(a,r,n);if(!await this.isValidType(t,l,a))return!1;if(!i.Tools.isDefine(c))return!0;const p=this.transform(t,l,a);switch(c){case i.DataValidationOperator.BETWEEN:return this.validatorIsBetween(p,l,a);case i.DataValidationOperator.EQUAL:return this.validatorIsEqual(p,l,a);case i.DataValidationOperator.GREATER_THAN:return this.validatorIsGreaterThan(p,l,a);case i.DataValidationOperator.GREATER_THAN_OR_EQUAL:return this.validatorIsGreaterThanOrEqual(p,l,a);case i.DataValidationOperator.LESS_THAN:return this.validatorIsLessThan(p,l,a);case i.DataValidationOperator.LESS_THAN_OR_EQUAL:return this.validatorIsLessThanOrEqual(p,l,a);case i.DataValidationOperator.NOT_BETWEEN:return this.validatorIsNotBetween(p,l,a);case i.DataValidationOperator.NOT_EQUAL:return this.validatorIsNotEqual(p,l,a);default:throw new Error("Unknown operator.")}}};exports.BaseDataValidator=aa([f(0,v.Inject(i.LocaleService)),f(1,v.Inject(v.Injector))],exports.BaseDataValidator);class ea extends i.Disposable{constructor(a,e,r){super();u(this,"_dataValidations");u(this,"_dataValidationMap",new Map);u(this,"_dataValidations$",new E.Subject);u(this,"unitId");u(this,"subUnitId");u(this,"dataValidations$",this._dataValidations$.asObservable());this.unitId=a,this.subUnitId=e,r&&(this._insertRules(r),this._notice(),this.disposeWithMe({dispose:()=>{this._dataValidations$.complete()}}))}_notice(){this._dataValidations$.next(this._dataValidations)}_insertRules(a){this._dataValidations=a,a.forEach(e=>{this._dataValidationMap.set(e.uid,e)})}getRuleById(a){return this._dataValidationMap.get(a)}getRuleIndex(a){return this._dataValidations.findIndex(e=>e.uid===a)}addRule(a,e){typeof e=="number"&&e<this._dataValidations.length?this._dataValidations.splice(e,0,a):this._dataValidations.push(a),this._dataValidationMap.set(a.uid,a),this._notice()}removeRule(a){const e=this._dataValidations.findIndex(r=>r.uid===a);this._dataValidations.splice(e,1),this._dataValidationMap.delete(a),this._notice()}updateRule(a,e){const r=this._dataValidationMap.get(a),n=this._dataValidations.findIndex(s=>a===s.uid);if(!r)throw new Error(`Data validation rule is not found, ruleId: ${a}.`);const d={...r};switch(e.type){case m.RANGE:{d.ranges=e.payload;break}case m.SETTING:{Object.assign(d,e.payload);break}case m.OPTIONS:{Object.assign(d,e.payload);break}}return this._dataValidations[n]=d,this._dataValidationMap.set(a,d),this._notice(),d}getDataValidations(){return this._dataValidations}toJSON(){return this._dataValidations}validator(a,e,r,n){return i.DataValidationStatus.VALID}}const ra=[i.DataValidationOperator.BETWEEN,i.DataValidationOperator.NOT_BETWEEN];exports.AddDataValidationCommand=N;exports.AddDataValidationMutation=V;exports.DataValidationManager=ea;exports.DataValidatorRegistryScope=I;exports.DataValidatorRegistryService=D;exports.RemoveAllDataValidationCommand=L;exports.RemoveDataValidationCommand=C;exports.RemoveDataValidationMutation=g;exports.TWO_FORMULA_OPERATOR_COUNT=ra;exports.UpdateDataValidationMutation=h;exports.UpdateDataValidationOptionsCommand=U;exports.UpdateDataValidationSettingCommand=w;exports.UpdateRuleType=m;exports.createDefaultNewRule=Q;exports.getRuleOptions=A;exports.getRuleSetting=y;exports.removeDataValidationUndoFactory=W;
|
|
1
|
+
"use strict";var H=Object.defineProperty;var Q=(o,t,a)=>t in o?H(o,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):o[t]=a;var c=(o,t,a)=>(Q(o,typeof t!="symbol"?t+"":t,a),a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("@univerjs/core"),m=require("@wendellhu/redi"),E=require("rxjs"),T=require("@univerjs/sheets");var C=(o=>(o.SHEET="sheet",o))(C||{});class I{constructor(){c(this,"_validatorByScopes",new Map);c(this,"_validatorMap",new Map);c(this,"_validatorsChange$",new E.BehaviorSubject(void 0));c(this,"validatorsChange$",this._validatorsChange$.asObservable())}_addValidatorToScope(t,a){this._validatorByScopes.has(a)||this._validatorByScopes.set(a,[]);const e=this._validatorByScopes.get(a);if(e.findIndex(r=>r.id===t.id)>-1)throw new Error(`Validator item with the same id ${t.id} has already been added!`);e.push(t)}_removeValidatorFromScope(t,a){const e=this._validatorByScopes.get(a);if(!e)return;const r=e.findIndex(n=>n.id===t.id);r>-1&&e.splice(r,1)}register(t){return this._validatorMap.set(t.id,t),Array.isArray(t.scopes)?t.scopes.forEach(a=>{this._addValidatorToScope(t,a)}):this._addValidatorToScope(t,t.scopes),this._validatorsChange$.next(),i.toDisposable(()=>{this._validatorMap.delete(t.id),Array.isArray(t.scopes)?t.scopes.forEach(a=>{this._removeValidatorFromScope(t,a)}):this._removeValidatorFromScope(t,t.scopes),this._validatorsChange$.next()})}getValidatorItem(t){return this._validatorMap.get(t)}getValidatorsByScope(t){return this._validatorByScopes.get(t)}}var g=(o=>(o[o.SETTING=0]="SETTING",o[o.RANGE=1]="RANGE",o[o.OPTIONS=2]="OPTIONS",o))(g||{});class U extends i.Disposable{constructor(a,e,r){super();c(this,"_dataValidations");c(this,"_dataValidationMap",new Map);c(this,"_dataValidations$",new E.Subject);c(this,"unitId");c(this,"subUnitId");c(this,"dataValidations$",this._dataValidations$.asObservable());this.unitId=a,this.subUnitId=e,r&&(this._insertRules(r),this._notice(),this.disposeWithMe({dispose:()=>{this._dataValidations$.complete()}}))}_notice(){this._dataValidations$.next(this._dataValidations)}_insertRules(a){this._dataValidations=a,a.forEach(e=>{this._dataValidationMap.set(e.uid,e)})}getRuleById(a){return this._dataValidationMap.get(a)}getRuleIndex(a){return this._dataValidations.findIndex(e=>e.uid===a)}addRule(a,e){typeof e=="number"&&e<this._dataValidations.length?this._dataValidations.splice(e,0,a):this._dataValidations.push(a),this._dataValidationMap.set(a.uid,a),this._notice()}removeRule(a){const e=this._dataValidations.findIndex(r=>r.uid===a);this._dataValidations.splice(e,1),this._dataValidationMap.delete(a),this._notice()}updateRule(a,e){const r=this._dataValidationMap.get(a),n=this._dataValidations.findIndex(s=>a===s.uid);if(!r)throw new Error(`Data validation rule is not found, ruleId: ${a}.`);const d={...r};switch(e.type){case g.RANGE:{d.ranges=e.payload;break}case g.SETTING:{Object.assign(d,e.payload);break}case g.OPTIONS:{Object.assign(d,e.payload);break}}return this._dataValidations[n]=d,this._dataValidationMap.set(a,d),this._notice(),d}getDataValidations(){return this._dataValidations}toJSON(){return this._dataValidations}validator(a,e,r,n){return i.DataValidationStatus.VALID}}var W=Object.defineProperty,F=Object.getOwnPropertyDescriptor,J=(o,t,a,e)=>{for(var r=e>1?void 0:e?F(t,a):t,n=o.length-1,d;n>=0;n--)(d=o[n])&&(r=(e?d(t,a,r):d(r))||r);return e&&r&&W(t,a,r),r},z=(o,t)=>(a,e)=>t(a,e,o);exports.DataValidationModel=class extends i.Disposable{constructor(a){super();c(this,"_model",new Map);c(this,"_managerCreator",(a,e)=>new U(a,e,[]));c(this,"_ruleChange$",new E.Subject);c(this,"_validStatusChange$",new E.Subject);c(this,"ruleChange$",this._ruleChange$.asObservable());c(this,"ruleChangeDebounce$",this.ruleChange$.pipe(E.debounceTime(20)));c(this,"validStatusChange$",this._validStatusChange$.asObservable().pipe(E.debounceTime(20)));this._logService=a,this.disposeWithMe({dispose:()=>{this._ruleChange$.complete(),this._validStatusChange$.complete()}})}setManagerCreator(a){this._managerCreator=a}ensureManager(a,e){this._model.has(a)||this._model.set(a,new Map);const r=this._model.get(a);if(r.has(e))return r.get(e);const n=this._managerCreator(a,e);return r.set(e,n),n}addRule(a,e,r,n){try{this.ensureManager(a,e).addRule(r,n),this._ruleChange$.next({rule:r,type:"add",unitId:a,subUnitId:e})}catch(d){this._logService.error(d)}}updateRule(a,e,r,n){try{const s=this.ensureManager(a,e).updateRule(r,n);this._ruleChange$.next({rule:s,type:"update",unitId:a,subUnitId:e})}catch(d){this._logService.error(d)}}removeRule(a,e,r){try{const n=this.ensureManager(a,e),d=n.getRuleById(r);n.removeRule(r),this._ruleChange$.next({rule:d,type:"remove",unitId:a,subUnitId:e})}catch(n){this._logService.error(n)}}getRuleById(a,e,r){return this.ensureManager(a,e).getRuleById(r)}getRuleIndex(a,e,r){return this.ensureManager(a,e).getRuleIndex(r)}getRules(a,e){return this.ensureManager(a,e).getDataValidations()}validator(a,e,r){const{unitId:n,subUnitId:d}=r;return this.ensureManager(n,d).validator(a,e,r,u=>{this._validStatusChange$.next({unitId:n,subUnitId:d,ruleId:e.uid,status:u})})}getUnitRules(a){const e=this._model.get(a);if(!e)return[];const r=[];return e.forEach(n=>{r.push([n.subUnitId,n.getDataValidations()])}),r}};exports.DataValidationModel=J([z(0,i.ILogService)],exports.DataValidationModel);const _={type:i.CommandType.MUTATION,id:"data-validation.mutation.addRule",handler(o,t){if(!t)return!1;const{unitId:a,subUnitId:e,rule:r,index:n}=t,d=o.get(exports.DataValidationModel);return Array.isArray(r)?r.forEach(s=>{d.addRule(a,e,s,n)}):d.addRule(a,e,r,n),!0}},v={type:i.CommandType.MUTATION,id:"data-validation.mutation.removeRule",handler(o,t){if(!t)return!1;const{unitId:a,subUnitId:e,ruleId:r}=t,n=o.get(exports.DataValidationModel);return Array.isArray(r)?r.forEach(d=>{n.removeRule(a,e,d)}):n.removeRule(a,e,r),!0}},V={type:i.CommandType.MUTATION,id:"data-validation.mutation.updateRule",handler(o,t){if(!t)return!1;const{unitId:a,subUnitId:e,ruleId:r,payload:n}=t;return o.get(exports.DataValidationModel).updateRule(a,e,r,n),!0}};function L(o){return{type:o.type,operator:o.operator,formula1:o.formula1,formula2:o.formula2,allowBlank:o.allowBlank}}function w(o){return{error:o.error,errorStyle:o.errorStyle,errorTitle:o.errorTitle,imeMode:o.imeMode,prompt:o.prompt,promptTitle:o.promptTitle,showDropDown:o.showDropDown,showErrorMessage:o.showErrorMessage,showInputMessage:o.showInputMessage,renderMode:o.renderMode}}function K(o){const a=o.get(T.SelectionManagerService).getSelectionRanges();return{uid:i.Tools.generateRandomId(6),type:i.DataValidationType.DECIMAL,operator:i.DataValidationOperator.EQUAL,formula1:"100",ranges:a!=null?a:[{startColumn:0,endColumn:0,startRow:0,endRow:0}]}}const b={type:i.CommandType.COMMAND,id:"data-validation.command.addRule",async handler(o,t){if(!t)return!1;const{rule:a,unitId:e,subUnitId:r}=t,n=o.get(i.ICommandService),d=o.get(i.IUndoRedoService),s={...t,rule:{...t.rule,ranges:[t.rule.range]}},u=[{id:_.id,params:s}],l=[{id:v.id,params:{unitId:e,subUnitId:r,ruleId:a.uid}}];return d.pushUndoRedo({unitID:e,redoMutations:u,undoMutations:l}),await n.executeCommand(_.id,s),!0}},X=(o,t)=>{const a=o.get(exports.DataValidationModel),{unitId:e,subUnitId:r,ruleId:n}=t;if(Array.isArray(n)){const s=n.map(u=>a.getRuleById(e,r,u)).filter(Boolean);return[{id:_.id,params:{unitId:e,subUnitId:r,rule:s}}]}return[{id:_.id,params:{unitId:e,subUnitId:r,rule:{...a.getRuleById(e,r,n)},index:a.getRuleIndex(e,r,n)}}]},P={type:i.CommandType.COMMAND,id:"data-validation.command.removeRule",handler(o,t){if(!t)return!1;const{unitId:a,subUnitId:e,ruleId:r}=t,n=o.get(i.ICommandService),d=o.get(i.IUndoRedoService),s=o.get(exports.DataValidationModel),u=[{id:v.id,params:t}],l=[{id:_.id,params:{unitId:a,subUnitId:e,rule:{...s.getRuleById(a,e,r)},index:s.getRuleIndex(a,e,r)}}];return d.pushUndoRedo({undoMutations:l,redoMutations:u,unitID:t.unitId}),n.executeCommand(v.id,t),!0}},B={type:i.CommandType.COMMAND,id:"data-validation.command.updateDataValidationSetting",handler(o,t){if(!t)return!1;const a=o.get(i.ICommandService),e=o.get(i.IUndoRedoService),r=o.get(exports.DataValidationModel),{unitId:n,subUnitId:d,ruleId:s,options:u}=t,l=r.getRuleById(n,d,s);if(!l)return!1;const p={unitId:n,subUnitId:d,ruleId:s,payload:{type:g.OPTIONS,payload:u}},h=[{id:V.id,params:p}],D={unitId:n,subUnitId:d,ruleId:s,payload:{type:g.OPTIONS,payload:w(l)}},O=[{id:V.id,params:D}];return e.pushUndoRedo({unitID:n,redoMutations:h,undoMutations:O}),a.executeCommand(V.id,p),!0}},$={type:i.CommandType.COMMAND,id:"data-validation.command.updateDataValidationOptions",handler(o,t){if(!t)return!1;const a=o.get(i.ICommandService),e=o.get(i.IUndoRedoService),r=o.get(exports.DataValidationModel),n=o.get(I),{unitId:d,subUnitId:s,ruleId:u,setting:l}=t,p=n.getValidatorItem(l.type);if(!p||!p.validatorFormula(l).success)return!1;const h=r.getRuleById(d,s,u);if(!h)return!1;const D={unitId:d,subUnitId:s,ruleId:u,payload:{type:g.SETTING,payload:l}},O=[{id:V.id,params:D}],j={unitId:d,subUnitId:s,ruleId:u,payload:{type:g.SETTING,payload:L(h)}},G=[{id:V.id,params:j}];return e.pushUndoRedo({unitID:d,redoMutations:O,undoMutations:G}),a.executeCommand(V.id,D),!0}},x={type:i.CommandType.COMMAND,id:"data-validation.command.removeAll",handler(o,t){if(!t)return!1;const{unitId:a,subUnitId:e}=t,r=o.get(i.ICommandService),n=o.get(exports.DataValidationModel),d=o.get(i.IUndoRedoService),s=[...n.getRules(a,e)],u={unitId:a,subUnitId:e,ruleId:s.map(h=>h.uid)},l=[{id:v.id,params:u}],p=[{id:_.id,params:{unitId:a,subUnitId:e,rule:s}}];return d.pushUndoRedo({redoMutations:l,undoMutations:p,unitID:a}),r.executeCommand(v.id,u),!0}};var Y=Object.defineProperty,Z=Object.getOwnPropertyDescriptor,k=(o,t,a,e)=>{for(var r=e>1?void 0:e?Z(t,a):t,n=o.length-1,d;n>=0;n--)(d=o[n])&&(r=(e?d(t,a,r):d(r))||r);return e&&r&&Y(t,a,r),r},M=(o,t)=>(a,e)=>t(a,e,o);const f="SHEET_DATA_VALIDATION";exports.DataValidationResourceController=class extends i.Disposable{constructor(t,a,e){super(),this._resourceManagerService=t,this._univerInstanceService=a,this._dataValidationModel=e,this._initSnapshot()}_initSnapshot(){const t=n=>{const d=this._dataValidationModel.getUnitRules(n),s={};return d?(d.forEach(([u,l])=>{s[u]=l}),JSON.stringify(s)):""},a=n=>{if(!n)return{};try{return JSON.parse(n)}catch{return{}}},e=n=>{const d=n.getUnitId();this.disposeWithMe(this._resourceManagerService.registerPluginResource(d,f,{toJson:s=>t(s),parseJson:s=>a(s),onChange:(s,u)=>{Object.keys(u).forEach(l=>{u[l].forEach(h=>{this._dataValidationModel.addRule(s,l,h)})})}}))};this.disposeWithMe(i.toDisposable(this._univerInstanceService.sheetAdded$.subscribe(e))),this.disposeWithMe(i.toDisposable(this._univerInstanceService.sheetDisposed$.subscribe(n=>{const d=n.getUnitId();this._resourceManagerService.disposePluginResource(d,f)})));const r=this._univerInstanceService.getCurrentUniverSheetInstance();e(r)}};exports.DataValidationResourceController=k([i.OnLifecycle(i.LifecycleStages.Ready,exports.DataValidationResourceController),M(0,i.IResourceManagerService),M(1,i.IUniverInstanceService),M(2,m.Inject(exports.DataValidationModel))],exports.DataValidationResourceController);var aa=Object.defineProperty,ta=Object.getOwnPropertyDescriptor,ea=(o,t,a,e)=>{for(var r=e>1?void 0:e?ta(t,a):t,n=o.length-1,d;n>=0;n--)(d=o[n])&&(r=(e?d(t,a,r):d(r))||r);return e&&r&&aa(t,a,r),r},S=(o,t)=>(a,e)=>t(a,e,o);exports.DataValidationSheetController=class extends i.Disposable{constructor(t,a,e){super(),this._sheetInterceptorService=t,this._univerInstanceService=a,this._dataValidationModel=e,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:t=>{if(t.id===T.RemoveSheetCommand.id){const a=t.params,e=a.unitId||this._univerInstanceService.getCurrentUniverSheetInstance().getUnitId(),r=this._univerInstanceService.getUniverSheetInstance(e);if(!r)return{redos:[],undos:[]};const n=a.subUnitId||r.getActiveSheet().getSheetId(),d=this._dataValidationModel.ensureManager(e,n);if(!d)return{redos:[],undos:[]};const s=d.getDataValidations(),u=s.map(h=>h.uid),l={unitId:e,subUnitId:n,ruleId:u},p={unitId:e,subUnitId:n,rule:s};return{redos:[{id:v.id,params:l}],undos:[{id:_.id,params:p}]}}return{redos:[],undos:[]}}}))}};exports.DataValidationSheetController=ea([i.OnLifecycle(i.LifecycleStages.Ready,exports.DataValidationSheetController),S(0,m.Inject(T.SheetInterceptorService)),S(1,m.Inject(i.IUniverInstanceService)),S(2,m.Inject(exports.DataValidationModel))],exports.DataValidationSheetController);const q={type:i.CommandType.MUTATION,id:"sheet.mutation.data-validation-formula-mark-dirty",handler(){return!0}};var ra=Object.defineProperty,oa=Object.getOwnPropertyDescriptor,ia=(o,t,a,e)=>{for(var r=e>1?void 0:e?oa(t,a):t,n=o.length-1,d;n>=0;n--)(d=o[n])&&(r=(e?d(t,a,r):d(r))||r);return e&&r&&ra(t,a,r),r},R=(o,t)=>(a,e)=>t(a,e,o);const na="data-validation";exports.UniverDataValidationPlugin=class extends i.Plugin{constructor(t,a,e){super(na),this._injector=a,this._commandService=e}onStarting(t){[[exports.DataValidationModel],[I],[exports.DataValidationResourceController],[exports.DataValidationSheetController]].forEach(a=>{t.add(a)}),[b,x,B,$,P,q,_,V,v].forEach(a=>{this._commandService.registerCommand(a)})}};exports.UniverDataValidationPlugin=ia([R(1,m.Inject(m.Injector)),R(2,i.ICommandService)],exports.UniverDataValidationPlugin);i.DataValidationOperator.BETWEEN+"",i.DataValidationOperator.EQUAL+"",i.DataValidationOperator.GREATER_THAN+"",i.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",i.DataValidationOperator.LESS_THAN+"",i.DataValidationOperator.LESS_THAN_OR_EQUAL+"",i.DataValidationOperator.NOT_BETWEEN+"",i.DataValidationOperator.NOT_EQUAL+"";const da={[i.DataValidationOperator.BETWEEN]:"dataValidation.ruleName.between",[i.DataValidationOperator.EQUAL]:"dataValidation.ruleName.equal",[i.DataValidationOperator.GREATER_THAN]:"dataValidation.ruleName.greaterThan",[i.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.ruleName.greaterThanOrEqual",[i.DataValidationOperator.LESS_THAN]:"dataValidation.ruleName.lessThan",[i.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.ruleName.lessThanOrEqual",[i.DataValidationOperator.NOT_BETWEEN]:"dataValidation.ruleName.notBetween",[i.DataValidationOperator.NOT_EQUAL]:"dataValidation.ruleName.notEqual"},sa={[i.DataValidationOperator.BETWEEN]:"dataValidation.errorMsg.between",[i.DataValidationOperator.EQUAL]:"dataValidation.errorMsg.equal",[i.DataValidationOperator.GREATER_THAN]:"dataValidation.errorMsg.greaterThan",[i.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.errorMsg.greaterThanOrEqual",[i.DataValidationOperator.LESS_THAN]:"dataValidation.errorMsg.lessThan",[i.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.errorMsg.lessThanOrEqual",[i.DataValidationOperator.NOT_BETWEEN]:"dataValidation.errorMsg.notBetween",[i.DataValidationOperator.NOT_EQUAL]:"dataValidation.errorMsg.notEqual"},la={[i.DataValidationOperator.BETWEEN]:"dataValidation.textLength.errorMsg.between",[i.DataValidationOperator.EQUAL]:"dataValidation.textLength.errorMsg.equal",[i.DataValidationOperator.GREATER_THAN]:"dataValidation.textLength.errorMsg.greaterThan",[i.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.greaterThanOrEqual",[i.DataValidationOperator.LESS_THAN]:"dataValidation.textLength.errorMsg.lessThan",[i.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.lessThanOrEqual",[i.DataValidationOperator.NOT_BETWEEN]:"dataValidation.textLength.errorMsg.notBetween",[i.DataValidationOperator.NOT_EQUAL]:"dataValidation.textLength.errorMsg.notEqual"};var ua=Object.defineProperty,ca=Object.getOwnPropertyDescriptor,pa=(o,t,a,e)=>{for(var r=e>1?void 0:e?ca(t,a):t,n=o.length-1,d;n>=0;n--)(d=o[n])&&(r=(e?d(t,a,r):d(r))||r);return e&&r&&ua(t,a,r),r},A=(o,t)=>(a,e)=>t(a,e,o);const y="{FORMULA1}",N="{FORMULA2}",ha={[i.DataValidationOperator.BETWEEN]:"dataValidation.operators.between",[i.DataValidationOperator.EQUAL]:"dataValidation.operators.equal",[i.DataValidationOperator.GREATER_THAN]:"dataValidation.operators.greaterThan",[i.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.operators.greaterThanOrEqual",[i.DataValidationOperator.LESS_THAN]:"dataValidation.operators.lessThan",[i.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.operators.lessThanOrEqual",[i.DataValidationOperator.NOT_BETWEEN]:"dataValidation.operators.notBetween",[i.DataValidationOperator.NOT_EQUAL]:"dataValidation.operators.notEqual"};exports.BaseDataValidator=class{constructor(t,a){c(this,"canvasRender",null);c(this,"dropdown");c(this,"optionsInput");this.localeService=t,this.injector=a}get operatorNames(){return this.operators.map(t=>this.localeService.t(ha[t]))}get titleStr(){return this.localeService.t(this.title)}skipDefaultFontRender(t,a,e){return!1}generateRuleName(t){var e,r;if(!t.operator)return this.titleStr;const a=this.localeService.t(da[t.operator]).replace(y,(e=t.formula1)!=null?e:"").replace(N,(r=t.formula2)!=null?r:"");return`${this.titleStr} ${a}`}generateRuleErrorMessage(t){var e,r;return t.operator?`${this.localeService.t(sa[t.operator]).replace(y,(e=t.formula1)!=null?e:"").replace(N,(r=t.formula2)!=null?r:"")}`:this.titleStr}getRuleFinalError(t){return t.showInputMessage&&t.error?t.error:this.generateRuleErrorMessage(t)}isEmptyCellValue(t){return t===""||t===void 0||t===null}async isValidType(t,a,e){return!0}transform(t,a,e){return t}async validatorIsEqual(t,a,e){return!0}async validatorIsNotEqual(t,a,e){return!0}async validatorIsBetween(t,a,e){return!0}async validatorIsNotBetween(t,a,e){return!0}async validatorIsGreaterThan(t,a,e){return!0}async validatorIsGreaterThanOrEqual(t,a,e){return!0}async validatorIsLessThan(t,a,e){return!0}async validatorIsLessThanOrEqual(t,a,e){return!0}async validator(t,a){const{value:e,unitId:r,subUnitId:n}=t,d=this.isEmptyCellValue(e),{allowBlank:s=!0,operator:u}=a;if(d)return s;const l=await this.parseFormula(a,r,n);if(!await this.isValidType(t,l,a))return!1;if(!i.Tools.isDefine(u))return!0;const p=this.transform(t,l,a);switch(u){case i.DataValidationOperator.BETWEEN:return this.validatorIsBetween(p,l,a);case i.DataValidationOperator.EQUAL:return this.validatorIsEqual(p,l,a);case i.DataValidationOperator.GREATER_THAN:return this.validatorIsGreaterThan(p,l,a);case i.DataValidationOperator.GREATER_THAN_OR_EQUAL:return this.validatorIsGreaterThanOrEqual(p,l,a);case i.DataValidationOperator.LESS_THAN:return this.validatorIsLessThan(p,l,a);case i.DataValidationOperator.LESS_THAN_OR_EQUAL:return this.validatorIsLessThanOrEqual(p,l,a);case i.DataValidationOperator.NOT_BETWEEN:return this.validatorIsNotBetween(p,l,a);case i.DataValidationOperator.NOT_EQUAL:return this.validatorIsNotEqual(p,l,a);default:throw new Error("Unknown operator.")}}};exports.BaseDataValidator=pa([A(0,m.Inject(i.LocaleService)),A(1,m.Inject(m.Injector))],exports.BaseDataValidator);const ma=[i.DataValidationOperator.BETWEEN,i.DataValidationOperator.NOT_BETWEEN];exports.AddDataValidationCommand=b;exports.AddDataValidationMutation=_;exports.DataValidationFormulaMarkDirty=q;exports.DataValidationManager=U;exports.DataValidatorRegistryScope=C;exports.DataValidatorRegistryService=I;exports.RemoveAllDataValidationCommand=x;exports.RemoveDataValidationCommand=P;exports.RemoveDataValidationMutation=v;exports.TWO_FORMULA_OPERATOR_COUNT=ma;exports.TextLengthErrorTitleMap=la;exports.UpdateDataValidationMutation=V;exports.UpdateDataValidationOptionsCommand=B;exports.UpdateDataValidationSettingCommand=$;exports.UpdateRuleType=g;exports.createDefaultNewRule=K;exports.getRuleOptions=w;exports.getRuleSetting=L;exports.removeDataValidationUndoFactory=X;
|