@univerjs/data-validation 0.5.0-alpha.0 → 0.5.0-beta.1
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 +53 -49
- package/lib/types/commands/mutations/data-validation.mutation.d.ts +1 -1
- package/lib/types/types/enum/update-rule-type.d.ts +2 -1
- package/lib/types/types/interfaces/i-update-rule-payload.d.ts +6 -2
- package/lib/types/validators/base-data-validator.d.ts +4 -3
- package/lib/umd/index.js +1 -1
- package/package.json +9 -10
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 R(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))(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},q=(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,R(r.payload));break}case m.OPTIONS:{Object.assign(l,M(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=$([q(0,o.ILogService)],exports.DataValidationModel);var G=Object.defineProperty,j=Object.getOwnPropertyDescriptor,H=(i,a,e,t)=>{for(var r=t>1?void 0:t?j(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&&G(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 I{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:M(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(I),{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:R(_)}},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],[I],[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},A=(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){var t,r;return a.operator?`${this.localeService.t(ra[a.operator]).replace(N,(t=a.formula1)!=null?t:"").replace(y,(r=a.formula2)!=null?r:"")}`:this.titleStr}getExtraStyle(a,e,t,r,n){}getRuleFinalError(a){return a.showErrorMessage&&a.error?a.error:this.generateRuleErrorMessage(a)}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);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=E;exports.DataValidatorRegistryScope=U;exports.DataValidatorRegistryService=I;exports.RemoveDataValidationMutation=V;exports.TWO_FORMULA_OPERATOR_COUNT=ia;exports.TextLengthErrorTitleMap=oa;exports.UpdateDataValidationMutation=g;exports.UpdateRuleType=m;exports.getRuleOptions=M;exports.getRuleSetting=R;
|
|
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;
|
package/lib/es/index.js
CHANGED
|
@@ -27,7 +27,7 @@ function q(t) {
|
|
|
27
27
|
bizInfo: t.bizInfo
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
|
-
var
|
|
30
|
+
var m = /* @__PURE__ */ ((t) => (t[t.SETTING = 0] = "SETTING", t[t.RANGE = 1] = "RANGE", t[t.OPTIONS = 2] = "OPTIONS", t[t.ALL = 3] = "ALL", t))(m || {}), re = Object.defineProperty, oe = Object.getOwnPropertyDescriptor, ne = (t, e, a, r) => {
|
|
31
31
|
for (var o = r > 1 ? void 0 : r ? oe(e, a) : e, n = t.length - 1, i; n >= 0; n--)
|
|
32
32
|
(i = t[n]) && (o = (r ? i(e, a, o) : i(o)) || o);
|
|
33
33
|
return r && o && re(e, a, o), o;
|
|
@@ -69,18 +69,22 @@ let h = class extends P {
|
|
|
69
69
|
throw new Error(`Data validation rule is not found, ruleId: ${a}.`);
|
|
70
70
|
const d = { ...i };
|
|
71
71
|
switch (r.type) {
|
|
72
|
-
case
|
|
72
|
+
case m.RANGE: {
|
|
73
73
|
d.ranges = r.payload;
|
|
74
74
|
break;
|
|
75
75
|
}
|
|
76
|
-
case
|
|
76
|
+
case m.SETTING: {
|
|
77
77
|
Object.assign(d, G(r.payload));
|
|
78
78
|
break;
|
|
79
79
|
}
|
|
80
|
-
case
|
|
80
|
+
case m.OPTIONS: {
|
|
81
81
|
Object.assign(d, q(r.payload));
|
|
82
82
|
break;
|
|
83
83
|
}
|
|
84
|
+
case m.ALL: {
|
|
85
|
+
Object.assign(d, r.payload);
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
84
88
|
}
|
|
85
89
|
return n[l] = d, o.set(a, d), d;
|
|
86
90
|
}
|
|
@@ -257,7 +261,7 @@ class H {
|
|
|
257
261
|
return this._validatorByScopes.get(e);
|
|
258
262
|
}
|
|
259
263
|
}
|
|
260
|
-
const
|
|
264
|
+
const A = {
|
|
261
265
|
type: E.MUTATION,
|
|
262
266
|
id: "data-validation.mutation.addRule",
|
|
263
267
|
handler(t, e) {
|
|
@@ -299,7 +303,7 @@ const R = {
|
|
|
299
303
|
ranges: [e.rule.range]
|
|
300
304
|
}
|
|
301
305
|
}, u = [{
|
|
302
|
-
id:
|
|
306
|
+
id: A.id,
|
|
303
307
|
params: d
|
|
304
308
|
}], p = [{
|
|
305
309
|
id: v.id,
|
|
@@ -313,7 +317,7 @@ const R = {
|
|
|
313
317
|
unitID: o,
|
|
314
318
|
redoMutations: u,
|
|
315
319
|
undoMutations: p
|
|
316
|
-
}), await i.executeCommand(
|
|
320
|
+
}), await i.executeCommand(A.id, d), !0;
|
|
317
321
|
}
|
|
318
322
|
}, he = {
|
|
319
323
|
type: E.COMMAND,
|
|
@@ -325,7 +329,7 @@ const R = {
|
|
|
325
329
|
id: v.id,
|
|
326
330
|
params: e
|
|
327
331
|
}], p = [{
|
|
328
|
-
id:
|
|
332
|
+
id: A.id,
|
|
329
333
|
params: {
|
|
330
334
|
unitId: r,
|
|
331
335
|
subUnitId: o,
|
|
@@ -350,34 +354,34 @@ const R = {
|
|
|
350
354
|
const r = t.get(S), o = t.get(M), n = t.get(h), { unitId: i, subUnitId: l, ruleId: d, options: u } = e, p = n.getRuleById(i, l, d);
|
|
351
355
|
if (!p)
|
|
352
356
|
return !1;
|
|
353
|
-
const
|
|
357
|
+
const _ = {
|
|
354
358
|
unitId: i,
|
|
355
359
|
subUnitId: l,
|
|
356
360
|
ruleId: d,
|
|
357
361
|
payload: {
|
|
358
|
-
type:
|
|
362
|
+
type: m.OPTIONS,
|
|
359
363
|
payload: u
|
|
360
364
|
}
|
|
361
365
|
}, g = [{
|
|
362
366
|
id: f.id,
|
|
363
|
-
params:
|
|
364
|
-
}],
|
|
367
|
+
params: _
|
|
368
|
+
}], R = {
|
|
365
369
|
unitId: i,
|
|
366
370
|
subUnitId: l,
|
|
367
371
|
ruleId: d,
|
|
368
372
|
payload: {
|
|
369
|
-
type:
|
|
373
|
+
type: m.OPTIONS,
|
|
370
374
|
payload: q(p)
|
|
371
375
|
}
|
|
372
376
|
}, N = [{
|
|
373
377
|
id: f.id,
|
|
374
|
-
params:
|
|
378
|
+
params: R
|
|
375
379
|
}];
|
|
376
380
|
return o.pushUndoRedo({
|
|
377
381
|
unitID: i,
|
|
378
382
|
redoMutations: g,
|
|
379
383
|
undoMutations: N
|
|
380
|
-
}), r.executeCommand(f.id,
|
|
384
|
+
}), r.executeCommand(f.id, _), !0;
|
|
381
385
|
}
|
|
382
386
|
}, _e = {
|
|
383
387
|
type: E.COMMAND,
|
|
@@ -385,44 +389,44 @@ const R = {
|
|
|
385
389
|
handler(t, e) {
|
|
386
390
|
if (t.get(T).error("[Deprecated]: `UpdateDataValidationSettingCommand` is deprecated, please use `UpdateSheetDataValidationSettingCommand` in `@univerjs/sheets-data-validation` instead!"), !e)
|
|
387
391
|
return !1;
|
|
388
|
-
const r = t.get(S), o = t.get(M), n = t.get(h), i = t.get(H), { unitId: l, subUnitId: d, ruleId: u, setting: p } = e,
|
|
389
|
-
if (!
|
|
392
|
+
const r = t.get(S), o = t.get(M), n = t.get(h), i = t.get(H), { unitId: l, subUnitId: d, ruleId: u, setting: p } = e, _ = i.getValidatorItem(p.type);
|
|
393
|
+
if (!_)
|
|
390
394
|
return !1;
|
|
391
395
|
const g = n.getRuleById(l, d, u);
|
|
392
396
|
if (!g)
|
|
393
397
|
return !1;
|
|
394
|
-
const
|
|
395
|
-
if (!
|
|
398
|
+
const R = { ...g, ...p };
|
|
399
|
+
if (!_.validatorFormula(R, l, d).success)
|
|
396
400
|
return !1;
|
|
397
401
|
const N = {
|
|
398
402
|
unitId: l,
|
|
399
403
|
subUnitId: d,
|
|
400
404
|
ruleId: u,
|
|
401
405
|
payload: {
|
|
402
|
-
type:
|
|
406
|
+
type: m.SETTING,
|
|
403
407
|
payload: {
|
|
404
408
|
...p,
|
|
405
|
-
...
|
|
409
|
+
..._.normalizeFormula(R, l, d)
|
|
406
410
|
}
|
|
407
411
|
}
|
|
408
|
-
},
|
|
412
|
+
}, j = [{
|
|
409
413
|
id: f.id,
|
|
410
414
|
params: N
|
|
411
|
-
}],
|
|
415
|
+
}], Q = {
|
|
412
416
|
unitId: l,
|
|
413
417
|
subUnitId: d,
|
|
414
418
|
ruleId: u,
|
|
415
419
|
payload: {
|
|
416
|
-
type:
|
|
420
|
+
type: m.SETTING,
|
|
417
421
|
payload: G(g)
|
|
418
422
|
}
|
|
419
423
|
}, W = [{
|
|
420
424
|
id: f.id,
|
|
421
|
-
params:
|
|
425
|
+
params: Q
|
|
422
426
|
}];
|
|
423
427
|
return o.pushUndoRedo({
|
|
424
428
|
unitID: l,
|
|
425
|
-
redoMutations:
|
|
429
|
+
redoMutations: j,
|
|
426
430
|
undoMutations: W
|
|
427
431
|
}), r.executeCommand(f.id, N), !0;
|
|
428
432
|
}
|
|
@@ -439,8 +443,8 @@ const R = {
|
|
|
439
443
|
}, p = [{
|
|
440
444
|
id: v.id,
|
|
441
445
|
params: u
|
|
442
|
-
}],
|
|
443
|
-
id:
|
|
446
|
+
}], _ = [{
|
|
447
|
+
id: A.id,
|
|
444
448
|
params: {
|
|
445
449
|
unitId: r,
|
|
446
450
|
subUnitId: o,
|
|
@@ -449,7 +453,7 @@ const R = {
|
|
|
449
453
|
}];
|
|
450
454
|
return l.pushUndoRedo({
|
|
451
455
|
redoMutations: p,
|
|
452
|
-
undoMutations:
|
|
456
|
+
undoMutations: _,
|
|
453
457
|
unitID: r
|
|
454
458
|
}), n.executeCommand(v.id, u), !0;
|
|
455
459
|
}
|
|
@@ -458,10 +462,10 @@ var ve = Object.defineProperty, Te = Object.getOwnPropertyDescriptor, Se = (t, e
|
|
|
458
462
|
for (var o = r > 1 ? void 0 : r ? Te(e, a) : e, n = t.length - 1, i; n >= 0; n--)
|
|
459
463
|
(i = t[n]) && (o = (r ? i(e, a, o) : i(o)) || o);
|
|
460
464
|
return r && o && ve(e, a, o), o;
|
|
461
|
-
},
|
|
462
|
-
const
|
|
465
|
+
}, L = (t, e) => (a, r) => e(a, r, t);
|
|
466
|
+
const Ae = "UNIVER_DATA_VALIDATION_PLUGIN";
|
|
463
467
|
var V;
|
|
464
|
-
let
|
|
468
|
+
let U = (V = class extends X {
|
|
465
469
|
constructor(t = fe, e, a, r) {
|
|
466
470
|
super(), this._config = t, this._injector = e, this._commandService = a, this._configService = r;
|
|
467
471
|
const { ...o } = this._config;
|
|
@@ -480,7 +484,7 @@ let L = (V = class extends X {
|
|
|
480
484
|
_e,
|
|
481
485
|
he,
|
|
482
486
|
// mutation
|
|
483
|
-
|
|
487
|
+
A,
|
|
484
488
|
f,
|
|
485
489
|
v
|
|
486
490
|
].forEach((t) => {
|
|
@@ -490,12 +494,12 @@ let L = (V = class extends X {
|
|
|
490
494
|
onReady() {
|
|
491
495
|
this._injector.get(I);
|
|
492
496
|
}
|
|
493
|
-
}, c(V, "pluginName",
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
],
|
|
497
|
+
}, c(V, "pluginName", Ae), c(V, "type", x.UNIVER_SHEET), V);
|
|
498
|
+
U = Se([
|
|
499
|
+
L(1, O($)),
|
|
500
|
+
L(2, S),
|
|
501
|
+
L(3, Z)
|
|
502
|
+
], U);
|
|
499
503
|
s.BETWEEN + "", s.EQUAL + "", s.GREATER_THAN + "", s.GREATER_THAN_OR_EQUAL + "", s.LESS_THAN + "", s.LESS_THAN_OR_EQUAL + "", s.NOT_BETWEEN + "", s.NOT_EQUAL + "";
|
|
500
504
|
const Me = {
|
|
501
505
|
[s.BETWEEN]: "dataValidation.ruleName.between",
|
|
@@ -506,7 +510,7 @@ const Me = {
|
|
|
506
510
|
[s.LESS_THAN_OR_EQUAL]: "dataValidation.ruleName.lessThanOrEqual",
|
|
507
511
|
[s.NOT_BETWEEN]: "dataValidation.ruleName.notBetween",
|
|
508
512
|
[s.NOT_EQUAL]: "dataValidation.ruleName.notEqual"
|
|
509
|
-
},
|
|
513
|
+
}, Re = {
|
|
510
514
|
[s.BETWEEN]: "dataValidation.errorMsg.between",
|
|
511
515
|
[s.EQUAL]: "dataValidation.errorMsg.equal",
|
|
512
516
|
[s.GREATER_THAN]: "dataValidation.errorMsg.greaterThan",
|
|
@@ -567,14 +571,14 @@ let b = class {
|
|
|
567
571
|
const e = this.localeService.t(Me[t.operator]).replace(w, (a = t.formula1) != null ? a : "").replace(C, (r = t.formula2) != null ? r : "");
|
|
568
572
|
return `${this.titleStr} ${e}`;
|
|
569
573
|
}
|
|
570
|
-
generateRuleErrorMessage(t) {
|
|
571
|
-
var
|
|
572
|
-
return t.operator ? `${this.localeService.t(
|
|
574
|
+
generateRuleErrorMessage(t, e) {
|
|
575
|
+
var r, o;
|
|
576
|
+
return t.operator ? `${this.localeService.t(Re[t.operator]).replace(w, (r = t.formula1) != null ? r : "").replace(C, (o = t.formula2) != null ? o : "")}` : this.titleStr;
|
|
573
577
|
}
|
|
574
578
|
getExtraStyle(t, e, a, r, o) {
|
|
575
579
|
}
|
|
576
|
-
getRuleFinalError(t) {
|
|
577
|
-
return t.showErrorMessage && t.error ? t.error : this.generateRuleErrorMessage(t);
|
|
580
|
+
getRuleFinalError(t, e) {
|
|
581
|
+
return t.showErrorMessage && t.error ? t.error : this.generateRuleErrorMessage(t, e);
|
|
578
582
|
}
|
|
579
583
|
isEmptyCellValue(t) {
|
|
580
584
|
return t === "" || t === void 0 || t === null;
|
|
@@ -619,7 +623,7 @@ let b = class {
|
|
|
619
623
|
const { value: a, unitId: r, subUnitId: o } = t, n = this.isEmptyCellValue(a), { allowBlank: i = !0, operator: l } = e;
|
|
620
624
|
if (n)
|
|
621
625
|
return i;
|
|
622
|
-
const d = await this.parseFormula(e, r, o);
|
|
626
|
+
const d = await this.parseFormula(e, r, o, t.row, t.column);
|
|
623
627
|
if (!d.isFormulaValid || !await this.isValidType(t, d, e))
|
|
624
628
|
return !1;
|
|
625
629
|
if (!B.isDefine(l))
|
|
@@ -652,7 +656,7 @@ b = Oe([
|
|
|
652
656
|
D(1, O($))
|
|
653
657
|
], b);
|
|
654
658
|
export {
|
|
655
|
-
|
|
659
|
+
A as AddDataValidationMutation,
|
|
656
660
|
b as BaseDataValidator,
|
|
657
661
|
h as DataValidationModel,
|
|
658
662
|
I as DataValidationResourceController,
|
|
@@ -661,9 +665,9 @@ export {
|
|
|
661
665
|
v as RemoveDataValidationMutation,
|
|
662
666
|
we as TWO_FORMULA_OPERATOR_COUNT,
|
|
663
667
|
De as TextLengthErrorTitleMap,
|
|
664
|
-
|
|
668
|
+
U as UniverDataValidationPlugin,
|
|
665
669
|
f as UpdateDataValidationMutation,
|
|
666
|
-
|
|
670
|
+
m as UpdateRuleType,
|
|
667
671
|
q as getRuleOptions,
|
|
668
672
|
G as getRuleSetting
|
|
669
673
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ICommand, IDataValidationRule } from '@univerjs/core';
|
|
2
|
-
import { IUpdateRulePayload } from '../../types/interfaces/i-update-rule-payload';
|
|
3
2
|
import { DataValidationChangeSource } from '../../models/data-validation-model';
|
|
3
|
+
import { IUpdateRulePayload } from '../../types/interfaces/i-update-rule-payload';
|
|
4
4
|
export interface IAddDataValidationMutationParams {
|
|
5
5
|
rule: IDataValidationRule | IDataValidationRule[];
|
|
6
6
|
index?: number;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IDataValidationRuleBase, IDataValidationRuleOptions } from '@univerjs/core';
|
|
1
|
+
import { IDataValidationRule, IDataValidationRuleBase, IDataValidationRuleOptions } from '@univerjs/core';
|
|
2
2
|
import { UpdateRuleType } from '../enum/update-rule-type';
|
|
3
3
|
export interface IUpdateRuleRangePayload {
|
|
4
4
|
type: UpdateRuleType.RANGE;
|
|
@@ -12,4 +12,8 @@ export interface IUpdateRuleOptionsPayload {
|
|
|
12
12
|
type: UpdateRuleType.OPTIONS;
|
|
13
13
|
payload: Partial<IDataValidationRuleOptions>;
|
|
14
14
|
}
|
|
15
|
-
export
|
|
15
|
+
export interface IUpdateRuleAllPayload {
|
|
16
|
+
type: UpdateRuleType.ALL;
|
|
17
|
+
payload: Omit<IDataValidationRule, 'uid'>;
|
|
18
|
+
}
|
|
19
|
+
export type IUpdateRulePayload = IUpdateRuleRangePayload | IUpdateRuleSettingPayload | IUpdateRuleOptionsPayload | IUpdateRuleAllPayload;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CellValue, IDataValidationRule, IDataValidationRuleBase, IStyleData, Nullable, Workbook, Worksheet, DataValidationOperator, Injector, LocaleService } from '@univerjs/core';
|
|
2
2
|
import { CellValueType } from '@univerjs/protocol';
|
|
3
|
+
import { ISheetLocationBase } from '@univerjs/sheets';
|
|
3
4
|
import { IBaseDataValidationWidget } from './base-widget';
|
|
4
5
|
export interface IValidatorCellInfo<DataType = Nullable<CellValue>> {
|
|
5
6
|
value: DataType;
|
|
@@ -38,13 +39,13 @@ export declare abstract class BaseDataValidator<DataType = CellValue> {
|
|
|
38
39
|
get titleStr(): string;
|
|
39
40
|
skipDefaultFontRender: ((rule: IDataValidationRule, cellValue: Nullable<CellValue>, pos: any) => boolean) | undefined;
|
|
40
41
|
generateRuleName(rule: IDataValidationRuleBase): string;
|
|
41
|
-
generateRuleErrorMessage(rule: IDataValidationRuleBase): string;
|
|
42
|
+
generateRuleErrorMessage(rule: IDataValidationRuleBase, position: ISheetLocationBase): string;
|
|
42
43
|
getExtraStyle(rule: IDataValidationRuleBase, value: Nullable<CellValue>, ctx: {
|
|
43
44
|
style: IStyleData;
|
|
44
45
|
}, row: number, column: number): Nullable<IStyleData>;
|
|
45
|
-
getRuleFinalError(rule: IDataValidationRule): string;
|
|
46
|
+
getRuleFinalError(rule: IDataValidationRule, position: ISheetLocationBase): string;
|
|
46
47
|
isEmptyCellValue(cellValue: Nullable<CellValue>): cellValue is null | undefined | void;
|
|
47
|
-
abstract parseFormula(rule: IDataValidationRule, unitId: string, subUnitId: string): Promise<IFormulaResult>;
|
|
48
|
+
abstract parseFormula(rule: IDataValidationRule, unitId: string, subUnitId: string, row: number, column: number): Promise<IFormulaResult>;
|
|
48
49
|
abstract validatorFormula(rule: IDataValidationRule, unitId: string, subUnitId: string): IFormulaValidResult;
|
|
49
50
|
normalizeFormula(rule: IDataValidationRule, unitId: string, subUnitId: string): {
|
|
50
51
|
formula1: string | undefined;
|
package/lib/umd/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(l,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("@univerjs/core"),require("rxjs")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","rxjs"],n):(l=typeof globalThis<"u"?globalThis:l||self,n(l.UniverDataValidation={},l.UniverCore,l.rxjs))})(this,function(l,n,g){"use strict";var sa=Object.defineProperty;var ua=(l,n,g)=>n in l?sa(l,n,{enumerable:!0,configurable:!0,writable:!0,value:g}):l[n]=g;var m=(l,n,g)=>ua(l,typeof n!="symbol"?n+"":n,g);var O;function D(r){return{type:r.type,operator:r.operator,formula1:r.formula1,formula2:r.formula2,allowBlank:r.allowBlank}}function R(r){return{error:r.error,errorStyle:r.errorStyle,errorTitle:r.errorTitle,imeMode:r.imeMode,prompt:r.prompt,promptTitle:r.promptTitle,showDropDown:r.showDropDown,showErrorMessage:r.showErrorMessage,showInputMessage:r.showInputMessage,renderMode:r.renderMode,bizInfo:r.bizInfo}}var h=(r=>(r[r.SETTING=0]="SETTING",r[r.RANGE=1]="RANGE",r[r.OPTIONS=2]="OPTIONS",r))(h||{}),L=Object.defineProperty,w=Object.getOwnPropertyDescriptor,b=(r,a,e,t)=>{for(var i=t>1?void 0:t?w(a,e):a,o=r.length-1,d;o>=0;o--)(d=r[o])&&(i=(t?d(a,e,i):d(i))||i);return t&&i&&L(a,e,i),i},P=(r,a)=>(e,t)=>a(e,t,r);l.DataValidationModel=class extends n.Disposable{constructor(e){super();m(this,"_model",new Map);m(this,"_ruleChange$",new g.Subject);m(this,"ruleChange$",this._ruleChange$.asObservable());m(this,"ruleChangeDebounce$",this.ruleChange$.pipe(g.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 i=this._model.get(e);if(i.has(t))return i.get(t);const o={map:new Map,list:[]};return i.set(t,o),o}_addSubUnitRule(e,t,i){const{map:o,list:d}=e,p=(Array.isArray(t)?t:[t]).filter(u=>!o.has(u.uid));typeof i=="number"&&i<d.length?d.splice(i,0,...p):d.push(...p),p.forEach(u=>{o.set(u.uid,u)})}_removeSubUnitRule(e,t){const{map:i,list:o}=e,d=o.findIndex(s=>s.uid===t);d>-1&&(o.splice(d,1),i.delete(t))}_updateSubUnitRule(e,t,i){const{map:o,list:d}=e,s=o.get(t),p=d.findIndex(c=>t===c.uid);if(!s)throw new Error(`Data validation rule is not found, ruleId: ${t}.`);const u={...s};switch(i.type){case h.RANGE:{u.ranges=i.payload;break}case h.SETTING:{Object.assign(u,D(i.payload));break}case h.OPTIONS:{Object.assign(u,R(i.payload));break}}return d[p]=u,o.set(t,u),u}_addRuleSideEffect(e,t,i,o){if(!this._ensureMap(e,t).map.get(i.uid))return{rule:i,type:"add",unitId:e,subUnitId:t,source:o}}addRule(e,t,i,o,d){try{const s=this._ensureMap(e,t),u=(Array.isArray(i)?i:[i]).map(c=>this._addRuleSideEffect(e,t,c,o));this._addSubUnitRule(s,i,d),u.forEach(c=>{c&&this._ruleChange$.next(c)})}catch(s){this._logService.error(s)}}updateRule(e,t,i,o,d){try{const s=this._ensureMap(e,t),p=n.Tools.deepClone(s.map.get(i));if(!p)throw new Error(`Data validation rule is not found, ruleId: ${i}.`);const u=this._updateSubUnitRule(s,i,o);this._ruleChange$.next({rule:u,type:"update",unitId:e,subUnitId:t,source:d,updatePayload:o,oldRule:p})}catch(s){this._logService.error(s)}}removeRule(e,t,i,o){try{const d=this._ensureMap(e,t),s=d.map.get(i);s&&(this._removeSubUnitRule(d,i),this._ruleChange$.next({rule:s,type:"remove",unitId:e,subUnitId:t,source:o}))}catch(d){this._logService.error(d)}}getRuleById(e,t,i){return this._ensureMap(e,t).map.get(i)}getRuleIndex(e,t,i){return this._ensureMap(e,t).list.findIndex(d=>d.uid===i)}getRules(e,t){return[...this._ensureMap(e,t).list]}getUnitRules(e){const t=this._model.get(e);if(!t)return[];const i=[];return t.forEach((o,d)=>{i.push([d,o.list])}),i}deleteUnitRules(e){this._model.delete(e)}getSubUnitIds(e){var t,i;return Array.from((i=(t=this._model.get(e))==null?void 0:t.keys())!=null?i:[])}getAll(){return Array.from(this._model.keys()).map(e=>[e,this.getUnitRules(e)])}},l.DataValidationModel=b([P(0,n.ILogService)],l.DataValidationModel);var B=Object.defineProperty,j=Object.getOwnPropertyDescriptor,$=(r,a,e,t)=>{for(var i=t>1?void 0:t?j(a,e):a,o=r.length-1,d;o>=0;o--)(d=r[o])&&(i=(t?d(a,e,i):d(i))||i);return t&&i&&B(a,e,i),i},M=(r,a)=>(e,t)=>a(e,t,r);const q="SHEET_DATA_VALIDATION_PLUGIN";l.DataValidationResourceController=class extends n.Disposable{constructor(a,e,t){super(),this._resourceManagerService=a,this._univerInstanceService=e,this._dataValidationModel=t,this._initSnapshot()}_initSnapshot(){const a=t=>{const i=this._dataValidationModel.getUnitRules(t),o={};return i?(i.forEach(([d,s])=>{o[d]=s}),JSON.stringify(o)):""},e=t=>{if(!t)return{};try{return JSON.parse(t)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:q,businesses:[n.UniverInstanceType.UNIVER_SHEET],toJson:t=>a(t),parseJson:t=>e(t),onUnLoad:t=>{this._dataValidationModel.deleteUnitRules(t)},onLoad:(t,i)=>{Object.keys(i).forEach(o=>{i[o].forEach(s=>{this._dataValidationModel.addRule(t,o,s,"patched")})})}}))}},l.DataValidationResourceController=$([M(0,n.IResourceManagerService),M(1,n.IUniverInstanceService),M(2,n.Inject(l.DataValidationModel))],l.DataValidationResourceController);var N=(r=>(r.SHEET="sheet",r))(N||{});class I{constructor(){m(this,"_validatorByScopes",new Map);m(this,"_validatorMap",new Map);m(this,"_validatorsChange$",new g.BehaviorSubject(void 0));m(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(i=>i.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 i=t.findIndex(o=>o.id===a.id);i>-1&&t.splice(i,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(),n.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 f={type:n.CommandType.MUTATION,id:"data-validation.mutation.addRule",handler(r,a){if(!a)return!1;const{unitId:e,subUnitId:t,rule:i,index:o,source:d="command"}=a;return r.get(l.DataValidationModel).addRule(e,t,i,d,o),!0}},E={type:n.CommandType.MUTATION,id:"data-validation.mutation.removeRule",handler(r,a){if(!a)return!1;const{unitId:e,subUnitId:t,ruleId:i,source:o="command"}=a,d=r.get(l.DataValidationModel);return Array.isArray(i)?i.forEach(s=>{d.removeRule(e,t,s,o)}):d.removeRule(e,t,i,o),!0}},_={type:n.CommandType.MUTATION,id:"data-validation.mutation.updateRule",handler(r,a){if(!a)return!1;const{unitId:e,subUnitId:t,ruleId:i,payload:o,source:d="command"}=a;return r.get(l.DataValidationModel).updateRule(e,t,i,o,d),!0}},G={type:n.CommandType.COMMAND,id:"data-validation.command.addRule",async handler(r,a){if(r.get(n.ILogService).error("[Deprecated]: `AddDataValidationCommand` is deprecated, please use `AddSheetDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const{rule:t,unitId:i,subUnitId:o}=a,d=r.get(n.ICommandService),s=r.get(n.IUndoRedoService),p={...a,rule:{...a.rule,ranges:[a.rule.range]}},u=[{id:f.id,params:p}],c=[{id:E.id,params:{unitId:i,subUnitId:o,ruleId:t.uid}}];return s.pushUndoRedo({unitID:i,redoMutations:u,undoMutations:c}),await d.executeCommand(f.id,p),!0}},H={type:n.CommandType.COMMAND,id:"data-validation.command.removeRule",handler(r,a){if(r.get(n.ILogService).error("[Deprecated]: `RemoveDataValidationCommand` is deprecated, please use `RemoveSheetDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const{unitId:t,subUnitId:i,ruleId:o}=a,d=r.get(n.ICommandService),s=r.get(n.IUndoRedoService),p=r.get(l.DataValidationModel),u=[{id:E.id,params:a}],c=[{id:f.id,params:{unitId:t,subUnitId:i,rule:{...p.getRuleById(t,i,o)},index:p.getRuleIndex(t,i,o)}}];return s.pushUndoRedo({undoMutations:c,redoMutations:u,unitID:a.unitId}),d.executeCommand(E.id,a),!0}},Q={type:n.CommandType.COMMAND,id:"data-validation.command.updateDataValidationSetting",handler(r,a){if(r.get(n.ILogService).warn("[Deprecated]: `UpdateDataValidationOptionsCommand` is deprecated, please use `UpdateSheetDataValidationOptionsCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const t=r.get(n.ICommandService),i=r.get(n.IUndoRedoService),o=r.get(l.DataValidationModel),{unitId:d,subUnitId:s,ruleId:p,options:u}=a,c=o.getRuleById(d,s,p);if(!c)return!1;const V={unitId:d,subUnitId:s,ruleId:p,payload:{type:h.OPTIONS,payload:u}},v=[{id:_.id,params:V}],T={unitId:d,subUnitId:s,ruleId:p,payload:{type:h.OPTIONS,payload:R(c)}},S=[{id:_.id,params:T}];return i.pushUndoRedo({unitID:d,redoMutations:v,undoMutations:S}),t.executeCommand(_.id,V),!0}},W={type:n.CommandType.COMMAND,id:"data-validation.command.updateDataValidationOptions",handler(r,a){if(r.get(n.ILogService).error("[Deprecated]: `UpdateDataValidationSettingCommand` is deprecated, please use `UpdateSheetDataValidationSettingCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const t=r.get(n.ICommandService),i=r.get(n.IUndoRedoService),o=r.get(l.DataValidationModel),d=r.get(I),{unitId:s,subUnitId:p,ruleId:u,setting:c}=a,V=d.getValidatorItem(c.type);if(!V)return!1;const v=o.getRuleById(s,p,u);if(!v)return!1;const T={...v,...c};if(!V.validatorFormula(T,s,p).success)return!1;const S={unitId:s,subUnitId:p,ruleId:u,payload:{type:h.SETTING,payload:{...c,...V.normalizeFormula(T,s,p)}}},oa=[{id:_.id,params:S}],da={unitId:s,subUnitId:p,ruleId:u,payload:{type:h.SETTING,payload:D(v)}},la=[{id:_.id,params:da}];return i.pushUndoRedo({unitID:s,redoMutations:oa,undoMutations:la}),t.executeCommand(_.id,S),!0}},F={type:n.CommandType.COMMAND,id:"data-validation.command.removeAll",handler(r,a){if(r.get(n.ILogService).error("[Deprecated]: `RemoveAllDataValidationCommand` is deprecated, please use `RemoveSheetAllDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const{unitId:t,subUnitId:i}=a,o=r.get(n.ICommandService),d=r.get(l.DataValidationModel),s=r.get(n.IUndoRedoService),p=[...d.getRules(t,i)],u={unitId:t,subUnitId:i,ruleId:p.map(v=>v.uid)},c=[{id:E.id,params:u}],V=[{id:f.id,params:{unitId:t,subUnitId:i,rule:p}}];return s.pushUndoRedo({redoMutations:c,undoMutations:V,unitID:t}),o.executeCommand(E.id,u),!0}},x="data-validation.config",J={};var z=Object.defineProperty,K=Object.getOwnPropertyDescriptor,Y=(r,a,e,t)=>{for(var i=t>1?void 0:t?K(a,e):a,o=r.length-1,d;o>=0;o--)(d=r[o])&&(i=(t?d(a,e,i):d(i))||i);return t&&i&&z(a,e,i),i},A=(r,a)=>(e,t)=>a(e,t,r);const X="UNIVER_DATA_VALIDATION_PLUGIN";l.UniverDataValidationPlugin=(O=class extends n.Plugin{constructor(a=J,e,t,i){super(),this._config=a,this._injector=e,this._commandService=t,this._configService=i;const{...o}=this._config;this._configService.setConfig(x,o)}onStarting(){[[l.DataValidationModel],[I],[l.DataValidationResourceController]].forEach(a=>this._injector.add(a)),[G,F,Q,W,H,f,_,E].forEach(a=>{this._commandService.registerCommand(a)})}onReady(){this._injector.get(l.DataValidationResourceController)}},m(O,"pluginName",X),m(O,"type",n.UniverInstanceType.UNIVER_SHEET),O),l.UniverDataValidationPlugin=Y([A(1,n.Inject(n.Injector)),A(2,n.ICommandService),A(3,n.IConfigService)],l.UniverDataValidationPlugin),n.DataValidationOperator.BETWEEN+"",n.DataValidationOperator.EQUAL+"",n.DataValidationOperator.GREATER_THAN+"",n.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",n.DataValidationOperator.LESS_THAN+"",n.DataValidationOperator.LESS_THAN_OR_EQUAL+"",n.DataValidationOperator.NOT_BETWEEN+"",n.DataValidationOperator.NOT_EQUAL+"";const Z={[n.DataValidationOperator.BETWEEN]:"dataValidation.ruleName.between",[n.DataValidationOperator.EQUAL]:"dataValidation.ruleName.equal",[n.DataValidationOperator.GREATER_THAN]:"dataValidation.ruleName.greaterThan",[n.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.ruleName.greaterThanOrEqual",[n.DataValidationOperator.LESS_THAN]:"dataValidation.ruleName.lessThan",[n.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.ruleName.lessThanOrEqual",[n.DataValidationOperator.NOT_BETWEEN]:"dataValidation.ruleName.notBetween",[n.DataValidationOperator.NOT_EQUAL]:"dataValidation.ruleName.notEqual"},k={[n.DataValidationOperator.BETWEEN]:"dataValidation.errorMsg.between",[n.DataValidationOperator.EQUAL]:"dataValidation.errorMsg.equal",[n.DataValidationOperator.GREATER_THAN]:"dataValidation.errorMsg.greaterThan",[n.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.errorMsg.greaterThanOrEqual",[n.DataValidationOperator.LESS_THAN]:"dataValidation.errorMsg.lessThan",[n.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.errorMsg.lessThanOrEqual",[n.DataValidationOperator.NOT_BETWEEN]:"dataValidation.errorMsg.notBetween",[n.DataValidationOperator.NOT_EQUAL]:"dataValidation.errorMsg.notEqual"},aa={[n.DataValidationOperator.BETWEEN]:"dataValidation.textLength.errorMsg.between",[n.DataValidationOperator.EQUAL]:"dataValidation.textLength.errorMsg.equal",[n.DataValidationOperator.GREATER_THAN]:"dataValidation.textLength.errorMsg.greaterThan",[n.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.greaterThanOrEqual",[n.DataValidationOperator.LESS_THAN]:"dataValidation.textLength.errorMsg.lessThan",[n.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.lessThanOrEqual",[n.DataValidationOperator.NOT_BETWEEN]:"dataValidation.textLength.errorMsg.notBetween",[n.DataValidationOperator.NOT_EQUAL]:"dataValidation.textLength.errorMsg.notEqual"},ta=[n.DataValidationOperator.BETWEEN,n.DataValidationOperator.NOT_BETWEEN];var ea=Object.defineProperty,ia=Object.getOwnPropertyDescriptor,na=(r,a,e,t)=>{for(var i=t>1?void 0:t?ia(a,e):a,o=r.length-1,d;o>=0;o--)(d=r[o])&&(i=(t?d(a,e,i):d(i))||i);return t&&i&&ea(a,e,i),i},y=(r,a)=>(e,t)=>a(e,t,r);const U="{FORMULA1}",C="{FORMULA2}",ra={[n.DataValidationOperator.BETWEEN]:"dataValidation.operators.between",[n.DataValidationOperator.EQUAL]:"dataValidation.operators.equal",[n.DataValidationOperator.GREATER_THAN]:"dataValidation.operators.greaterThan",[n.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.operators.greaterThanOrEqual",[n.DataValidationOperator.LESS_THAN]:"dataValidation.operators.lessThan",[n.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.operators.lessThanOrEqual",[n.DataValidationOperator.NOT_BETWEEN]:"dataValidation.operators.notBetween",[n.DataValidationOperator.NOT_EQUAL]:"dataValidation.operators.notEqual"};l.BaseDataValidator=class{constructor(a,e){m(this,"formulaInput");m(this,"canvasRender",null);m(this,"dropdown");m(this,"optionsInput");m(this,"skipDefaultFontRender");this.localeService=a,this.injector=e}get operatorNames(){return this.operators.map(a=>this.localeService.t(ra[a]))}get titleStr(){return this.localeService.t(this.title)}generateRuleName(a){var t,i;if(!a.operator)return this.titleStr;const e=this.localeService.t(Z[a.operator]).replace(U,(t=a.formula1)!=null?t:"").replace(C,(i=a.formula2)!=null?i:"");return`${this.titleStr} ${e}`}generateRuleErrorMessage(a){var t,i;return a.operator?`${this.localeService.t(k[a.operator]).replace(U,(t=a.formula1)!=null?t:"").replace(C,(i=a.formula2)!=null?i:"")}`:this.titleStr}getExtraStyle(a,e,t,i,o){}getRuleFinalError(a){return a.showErrorMessage&&a.error?a.error:this.generateRuleErrorMessage(a)}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:i,subUnitId:o}=a,d=this.isEmptyCellValue(t),{allowBlank:s=!0,operator:p}=e;if(d)return s;const u=await this.parseFormula(e,i,o);if(!u.isFormulaValid||!await this.isValidType(a,u,e))return!1;if(!n.Tools.isDefine(p))return!0;const c=this.transform(a,u,e);switch(p){case n.DataValidationOperator.BETWEEN:return this.validatorIsBetween(c,u,e);case n.DataValidationOperator.EQUAL:return this.validatorIsEqual(c,u,e);case n.DataValidationOperator.GREATER_THAN:return this.validatorIsGreaterThan(c,u,e);case n.DataValidationOperator.GREATER_THAN_OR_EQUAL:return this.validatorIsGreaterThanOrEqual(c,u,e);case n.DataValidationOperator.LESS_THAN:return this.validatorIsLessThan(c,u,e);case n.DataValidationOperator.LESS_THAN_OR_EQUAL:return this.validatorIsLessThanOrEqual(c,u,e);case n.DataValidationOperator.NOT_BETWEEN:return this.validatorIsNotBetween(c,u,e);case n.DataValidationOperator.NOT_EQUAL:return this.validatorIsNotEqual(c,u,e);default:throw new Error("Unknown operator.")}}},l.BaseDataValidator=na([y(0,n.Inject(n.LocaleService)),y(1,n.Inject(n.Injector))],l.BaseDataValidator),l.AddDataValidationMutation=f,l.DataValidatorRegistryScope=N,l.DataValidatorRegistryService=I,l.RemoveDataValidationMutation=E,l.TWO_FORMULA_OPERATOR_COUNT=ta,l.TextLengthErrorTitleMap=aa,l.UpdateDataValidationMutation=_,l.UpdateRuleType=h,l.getRuleOptions=R,l.getRuleSetting=D,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(l,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("@univerjs/core"),require("rxjs")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","rxjs"],n):(l=typeof globalThis<"u"?globalThis:l||self,n(l.UniverDataValidation={},l.UniverCore,l.rxjs))})(this,function(l,n,g){"use strict";var sa=Object.defineProperty;var ua=(l,n,g)=>n in l?sa(l,n,{enumerable:!0,configurable:!0,writable:!0,value:g}):l[n]=g;var m=(l,n,g)=>ua(l,typeof n!="symbol"?n+"":n,g);var O;function D(r){return{type:r.type,operator:r.operator,formula1:r.formula1,formula2:r.formula2,allowBlank:r.allowBlank}}function M(r){return{error:r.error,errorStyle:r.errorStyle,errorTitle:r.errorTitle,imeMode:r.imeMode,prompt:r.prompt,promptTitle:r.promptTitle,showDropDown:r.showDropDown,showErrorMessage:r.showErrorMessage,showInputMessage:r.showInputMessage,renderMode:r.renderMode,bizInfo:r.bizInfo}}var h=(r=>(r[r.SETTING=0]="SETTING",r[r.RANGE=1]="RANGE",r[r.OPTIONS=2]="OPTIONS",r[r.ALL=3]="ALL",r))(h||{}),C=Object.defineProperty,w=Object.getOwnPropertyDescriptor,b=(r,a,e,t)=>{for(var i=t>1?void 0:t?w(a,e):a,o=r.length-1,d;o>=0;o--)(d=r[o])&&(i=(t?d(a,e,i):d(i))||i);return t&&i&&C(a,e,i),i},P=(r,a)=>(e,t)=>a(e,t,r);l.DataValidationModel=class extends n.Disposable{constructor(e){super();m(this,"_model",new Map);m(this,"_ruleChange$",new g.Subject);m(this,"ruleChange$",this._ruleChange$.asObservable());m(this,"ruleChangeDebounce$",this.ruleChange$.pipe(g.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 i=this._model.get(e);if(i.has(t))return i.get(t);const o={map:new Map,list:[]};return i.set(t,o),o}_addSubUnitRule(e,t,i){const{map:o,list:d}=e,p=(Array.isArray(t)?t:[t]).filter(u=>!o.has(u.uid));typeof i=="number"&&i<d.length?d.splice(i,0,...p):d.push(...p),p.forEach(u=>{o.set(u.uid,u)})}_removeSubUnitRule(e,t){const{map:i,list:o}=e,d=o.findIndex(s=>s.uid===t);d>-1&&(o.splice(d,1),i.delete(t))}_updateSubUnitRule(e,t,i){const{map:o,list:d}=e,s=o.get(t),p=d.findIndex(c=>t===c.uid);if(!s)throw new Error(`Data validation rule is not found, ruleId: ${t}.`);const u={...s};switch(i.type){case h.RANGE:{u.ranges=i.payload;break}case h.SETTING:{Object.assign(u,D(i.payload));break}case h.OPTIONS:{Object.assign(u,M(i.payload));break}case h.ALL:{Object.assign(u,i.payload);break}}return d[p]=u,o.set(t,u),u}_addRuleSideEffect(e,t,i,o){if(!this._ensureMap(e,t).map.get(i.uid))return{rule:i,type:"add",unitId:e,subUnitId:t,source:o}}addRule(e,t,i,o,d){try{const s=this._ensureMap(e,t),u=(Array.isArray(i)?i:[i]).map(c=>this._addRuleSideEffect(e,t,c,o));this._addSubUnitRule(s,i,d),u.forEach(c=>{c&&this._ruleChange$.next(c)})}catch(s){this._logService.error(s)}}updateRule(e,t,i,o,d){try{const s=this._ensureMap(e,t),p=n.Tools.deepClone(s.map.get(i));if(!p)throw new Error(`Data validation rule is not found, ruleId: ${i}.`);const u=this._updateSubUnitRule(s,i,o);this._ruleChange$.next({rule:u,type:"update",unitId:e,subUnitId:t,source:d,updatePayload:o,oldRule:p})}catch(s){this._logService.error(s)}}removeRule(e,t,i,o){try{const d=this._ensureMap(e,t),s=d.map.get(i);s&&(this._removeSubUnitRule(d,i),this._ruleChange$.next({rule:s,type:"remove",unitId:e,subUnitId:t,source:o}))}catch(d){this._logService.error(d)}}getRuleById(e,t,i){return this._ensureMap(e,t).map.get(i)}getRuleIndex(e,t,i){return this._ensureMap(e,t).list.findIndex(d=>d.uid===i)}getRules(e,t){return[...this._ensureMap(e,t).list]}getUnitRules(e){const t=this._model.get(e);if(!t)return[];const i=[];return t.forEach((o,d)=>{i.push([d,o.list])}),i}deleteUnitRules(e){this._model.delete(e)}getSubUnitIds(e){var t,i;return Array.from((i=(t=this._model.get(e))==null?void 0:t.keys())!=null?i:[])}getAll(){return Array.from(this._model.keys()).map(e=>[e,this.getUnitRules(e)])}},l.DataValidationModel=b([P(0,n.ILogService)],l.DataValidationModel);var B=Object.defineProperty,j=Object.getOwnPropertyDescriptor,$=(r,a,e,t)=>{for(var i=t>1?void 0:t?j(a,e):a,o=r.length-1,d;o>=0;o--)(d=r[o])&&(i=(t?d(a,e,i):d(i))||i);return t&&i&&B(a,e,i),i},R=(r,a)=>(e,t)=>a(e,t,r);const q="SHEET_DATA_VALIDATION_PLUGIN";l.DataValidationResourceController=class extends n.Disposable{constructor(a,e,t){super(),this._resourceManagerService=a,this._univerInstanceService=e,this._dataValidationModel=t,this._initSnapshot()}_initSnapshot(){const a=t=>{const i=this._dataValidationModel.getUnitRules(t),o={};return i?(i.forEach(([d,s])=>{o[d]=s}),JSON.stringify(o)):""},e=t=>{if(!t)return{};try{return JSON.parse(t)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:q,businesses:[n.UniverInstanceType.UNIVER_SHEET],toJson:t=>a(t),parseJson:t=>e(t),onUnLoad:t=>{this._dataValidationModel.deleteUnitRules(t)},onLoad:(t,i)=>{Object.keys(i).forEach(o=>{i[o].forEach(s=>{this._dataValidationModel.addRule(t,o,s,"patched")})})}}))}},l.DataValidationResourceController=$([R(0,n.IResourceManagerService),R(1,n.IUniverInstanceService),R(2,n.Inject(l.DataValidationModel))],l.DataValidationResourceController);var N=(r=>(r.SHEET="sheet",r))(N||{});class A{constructor(){m(this,"_validatorByScopes",new Map);m(this,"_validatorMap",new Map);m(this,"_validatorsChange$",new g.BehaviorSubject(void 0));m(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(i=>i.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 i=t.findIndex(o=>o.id===a.id);i>-1&&t.splice(i,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(),n.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 f={type:n.CommandType.MUTATION,id:"data-validation.mutation.addRule",handler(r,a){if(!a)return!1;const{unitId:e,subUnitId:t,rule:i,index:o,source:d="command"}=a;return r.get(l.DataValidationModel).addRule(e,t,i,d,o),!0}},E={type:n.CommandType.MUTATION,id:"data-validation.mutation.removeRule",handler(r,a){if(!a)return!1;const{unitId:e,subUnitId:t,ruleId:i,source:o="command"}=a,d=r.get(l.DataValidationModel);return Array.isArray(i)?i.forEach(s=>{d.removeRule(e,t,s,o)}):d.removeRule(e,t,i,o),!0}},_={type:n.CommandType.MUTATION,id:"data-validation.mutation.updateRule",handler(r,a){if(!a)return!1;const{unitId:e,subUnitId:t,ruleId:i,payload:o,source:d="command"}=a;return r.get(l.DataValidationModel).updateRule(e,t,i,o,d),!0}},G={type:n.CommandType.COMMAND,id:"data-validation.command.addRule",async handler(r,a){if(r.get(n.ILogService).error("[Deprecated]: `AddDataValidationCommand` is deprecated, please use `AddSheetDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const{rule:t,unitId:i,subUnitId:o}=a,d=r.get(n.ICommandService),s=r.get(n.IUndoRedoService),p={...a,rule:{...a.rule,ranges:[a.rule.range]}},u=[{id:f.id,params:p}],c=[{id:E.id,params:{unitId:i,subUnitId:o,ruleId:t.uid}}];return s.pushUndoRedo({unitID:i,redoMutations:u,undoMutations:c}),await d.executeCommand(f.id,p),!0}},H={type:n.CommandType.COMMAND,id:"data-validation.command.removeRule",handler(r,a){if(r.get(n.ILogService).error("[Deprecated]: `RemoveDataValidationCommand` is deprecated, please use `RemoveSheetDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const{unitId:t,subUnitId:i,ruleId:o}=a,d=r.get(n.ICommandService),s=r.get(n.IUndoRedoService),p=r.get(l.DataValidationModel),u=[{id:E.id,params:a}],c=[{id:f.id,params:{unitId:t,subUnitId:i,rule:{...p.getRuleById(t,i,o)},index:p.getRuleIndex(t,i,o)}}];return s.pushUndoRedo({undoMutations:c,redoMutations:u,unitID:a.unitId}),d.executeCommand(E.id,a),!0}},Q={type:n.CommandType.COMMAND,id:"data-validation.command.updateDataValidationSetting",handler(r,a){if(r.get(n.ILogService).warn("[Deprecated]: `UpdateDataValidationOptionsCommand` is deprecated, please use `UpdateSheetDataValidationOptionsCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const t=r.get(n.ICommandService),i=r.get(n.IUndoRedoService),o=r.get(l.DataValidationModel),{unitId:d,subUnitId:s,ruleId:p,options:u}=a,c=o.getRuleById(d,s,p);if(!c)return!1;const V={unitId:d,subUnitId:s,ruleId:p,payload:{type:h.OPTIONS,payload:u}},v=[{id:_.id,params:V}],T={unitId:d,subUnitId:s,ruleId:p,payload:{type:h.OPTIONS,payload:M(c)}},S=[{id:_.id,params:T}];return i.pushUndoRedo({unitID:d,redoMutations:v,undoMutations:S}),t.executeCommand(_.id,V),!0}},W={type:n.CommandType.COMMAND,id:"data-validation.command.updateDataValidationOptions",handler(r,a){if(r.get(n.ILogService).error("[Deprecated]: `UpdateDataValidationSettingCommand` is deprecated, please use `UpdateSheetDataValidationSettingCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const t=r.get(n.ICommandService),i=r.get(n.IUndoRedoService),o=r.get(l.DataValidationModel),d=r.get(A),{unitId:s,subUnitId:p,ruleId:u,setting:c}=a,V=d.getValidatorItem(c.type);if(!V)return!1;const v=o.getRuleById(s,p,u);if(!v)return!1;const T={...v,...c};if(!V.validatorFormula(T,s,p).success)return!1;const S={unitId:s,subUnitId:p,ruleId:u,payload:{type:h.SETTING,payload:{...c,...V.normalizeFormula(T,s,p)}}},oa=[{id:_.id,params:S}],da={unitId:s,subUnitId:p,ruleId:u,payload:{type:h.SETTING,payload:D(v)}},la=[{id:_.id,params:da}];return i.pushUndoRedo({unitID:s,redoMutations:oa,undoMutations:la}),t.executeCommand(_.id,S),!0}},F={type:n.CommandType.COMMAND,id:"data-validation.command.removeAll",handler(r,a){if(r.get(n.ILogService).error("[Deprecated]: `RemoveAllDataValidationCommand` is deprecated, please use `RemoveSheetAllDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const{unitId:t,subUnitId:i}=a,o=r.get(n.ICommandService),d=r.get(l.DataValidationModel),s=r.get(n.IUndoRedoService),p=[...d.getRules(t,i)],u={unitId:t,subUnitId:i,ruleId:p.map(v=>v.uid)},c=[{id:E.id,params:u}],V=[{id:f.id,params:{unitId:t,subUnitId:i,rule:p}}];return s.pushUndoRedo({redoMutations:c,undoMutations:V,unitID:t}),o.executeCommand(E.id,u),!0}},x="data-validation.config",J={};var z=Object.defineProperty,K=Object.getOwnPropertyDescriptor,Y=(r,a,e,t)=>{for(var i=t>1?void 0:t?K(a,e):a,o=r.length-1,d;o>=0;o--)(d=r[o])&&(i=(t?d(a,e,i):d(i))||i);return t&&i&&z(a,e,i),i},I=(r,a)=>(e,t)=>a(e,t,r);const X="UNIVER_DATA_VALIDATION_PLUGIN";l.UniverDataValidationPlugin=(O=class extends n.Plugin{constructor(a=J,e,t,i){super(),this._config=a,this._injector=e,this._commandService=t,this._configService=i;const{...o}=this._config;this._configService.setConfig(x,o)}onStarting(){[[l.DataValidationModel],[A],[l.DataValidationResourceController]].forEach(a=>this._injector.add(a)),[G,F,Q,W,H,f,_,E].forEach(a=>{this._commandService.registerCommand(a)})}onReady(){this._injector.get(l.DataValidationResourceController)}},m(O,"pluginName",X),m(O,"type",n.UniverInstanceType.UNIVER_SHEET),O),l.UniverDataValidationPlugin=Y([I(1,n.Inject(n.Injector)),I(2,n.ICommandService),I(3,n.IConfigService)],l.UniverDataValidationPlugin),n.DataValidationOperator.BETWEEN+"",n.DataValidationOperator.EQUAL+"",n.DataValidationOperator.GREATER_THAN+"",n.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",n.DataValidationOperator.LESS_THAN+"",n.DataValidationOperator.LESS_THAN_OR_EQUAL+"",n.DataValidationOperator.NOT_BETWEEN+"",n.DataValidationOperator.NOT_EQUAL+"";const Z={[n.DataValidationOperator.BETWEEN]:"dataValidation.ruleName.between",[n.DataValidationOperator.EQUAL]:"dataValidation.ruleName.equal",[n.DataValidationOperator.GREATER_THAN]:"dataValidation.ruleName.greaterThan",[n.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.ruleName.greaterThanOrEqual",[n.DataValidationOperator.LESS_THAN]:"dataValidation.ruleName.lessThan",[n.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.ruleName.lessThanOrEqual",[n.DataValidationOperator.NOT_BETWEEN]:"dataValidation.ruleName.notBetween",[n.DataValidationOperator.NOT_EQUAL]:"dataValidation.ruleName.notEqual"},k={[n.DataValidationOperator.BETWEEN]:"dataValidation.errorMsg.between",[n.DataValidationOperator.EQUAL]:"dataValidation.errorMsg.equal",[n.DataValidationOperator.GREATER_THAN]:"dataValidation.errorMsg.greaterThan",[n.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.errorMsg.greaterThanOrEqual",[n.DataValidationOperator.LESS_THAN]:"dataValidation.errorMsg.lessThan",[n.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.errorMsg.lessThanOrEqual",[n.DataValidationOperator.NOT_BETWEEN]:"dataValidation.errorMsg.notBetween",[n.DataValidationOperator.NOT_EQUAL]:"dataValidation.errorMsg.notEqual"},aa={[n.DataValidationOperator.BETWEEN]:"dataValidation.textLength.errorMsg.between",[n.DataValidationOperator.EQUAL]:"dataValidation.textLength.errorMsg.equal",[n.DataValidationOperator.GREATER_THAN]:"dataValidation.textLength.errorMsg.greaterThan",[n.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.greaterThanOrEqual",[n.DataValidationOperator.LESS_THAN]:"dataValidation.textLength.errorMsg.lessThan",[n.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.lessThanOrEqual",[n.DataValidationOperator.NOT_BETWEEN]:"dataValidation.textLength.errorMsg.notBetween",[n.DataValidationOperator.NOT_EQUAL]:"dataValidation.textLength.errorMsg.notEqual"},ta=[n.DataValidationOperator.BETWEEN,n.DataValidationOperator.NOT_BETWEEN];var ea=Object.defineProperty,ia=Object.getOwnPropertyDescriptor,na=(r,a,e,t)=>{for(var i=t>1?void 0:t?ia(a,e):a,o=r.length-1,d;o>=0;o--)(d=r[o])&&(i=(t?d(a,e,i):d(i))||i);return t&&i&&ea(a,e,i),i},y=(r,a)=>(e,t)=>a(e,t,r);const U="{FORMULA1}",L="{FORMULA2}",ra={[n.DataValidationOperator.BETWEEN]:"dataValidation.operators.between",[n.DataValidationOperator.EQUAL]:"dataValidation.operators.equal",[n.DataValidationOperator.GREATER_THAN]:"dataValidation.operators.greaterThan",[n.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.operators.greaterThanOrEqual",[n.DataValidationOperator.LESS_THAN]:"dataValidation.operators.lessThan",[n.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.operators.lessThanOrEqual",[n.DataValidationOperator.NOT_BETWEEN]:"dataValidation.operators.notBetween",[n.DataValidationOperator.NOT_EQUAL]:"dataValidation.operators.notEqual"};l.BaseDataValidator=class{constructor(a,e){m(this,"formulaInput");m(this,"canvasRender",null);m(this,"dropdown");m(this,"optionsInput");m(this,"skipDefaultFontRender");this.localeService=a,this.injector=e}get operatorNames(){return this.operators.map(a=>this.localeService.t(ra[a]))}get titleStr(){return this.localeService.t(this.title)}generateRuleName(a){var t,i;if(!a.operator)return this.titleStr;const e=this.localeService.t(Z[a.operator]).replace(U,(t=a.formula1)!=null?t:"").replace(L,(i=a.formula2)!=null?i:"");return`${this.titleStr} ${e}`}generateRuleErrorMessage(a,e){var i,o;return a.operator?`${this.localeService.t(k[a.operator]).replace(U,(i=a.formula1)!=null?i:"").replace(L,(o=a.formula2)!=null?o:"")}`:this.titleStr}getExtraStyle(a,e,t,i,o){}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:i,subUnitId:o}=a,d=this.isEmptyCellValue(t),{allowBlank:s=!0,operator:p}=e;if(d)return s;const u=await this.parseFormula(e,i,o,a.row,a.column);if(!u.isFormulaValid||!await this.isValidType(a,u,e))return!1;if(!n.Tools.isDefine(p))return!0;const c=this.transform(a,u,e);switch(p){case n.DataValidationOperator.BETWEEN:return this.validatorIsBetween(c,u,e);case n.DataValidationOperator.EQUAL:return this.validatorIsEqual(c,u,e);case n.DataValidationOperator.GREATER_THAN:return this.validatorIsGreaterThan(c,u,e);case n.DataValidationOperator.GREATER_THAN_OR_EQUAL:return this.validatorIsGreaterThanOrEqual(c,u,e);case n.DataValidationOperator.LESS_THAN:return this.validatorIsLessThan(c,u,e);case n.DataValidationOperator.LESS_THAN_OR_EQUAL:return this.validatorIsLessThanOrEqual(c,u,e);case n.DataValidationOperator.NOT_BETWEEN:return this.validatorIsNotBetween(c,u,e);case n.DataValidationOperator.NOT_EQUAL:return this.validatorIsNotEqual(c,u,e);default:throw new Error("Unknown operator.")}}},l.BaseDataValidator=na([y(0,n.Inject(n.LocaleService)),y(1,n.Inject(n.Injector))],l.BaseDataValidator),l.AddDataValidationMutation=f,l.DataValidatorRegistryScope=N,l.DataValidatorRegistryService=A,l.RemoveDataValidationMutation=E,l.TWO_FORMULA_OPERATOR_COUNT=ta,l.TextLengthErrorTitleMap=aa,l.UpdateDataValidationMutation=_,l.UpdateRuleType=h,l.getRuleOptions=M,l.getRuleSetting=D,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@univerjs/data-validation",
|
|
3
|
-
"version": "0.5.0-
|
|
3
|
+
"version": "0.5.0-beta.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Data validation library for Univer",
|
|
6
6
|
"author": "DreamNum <developer@univer.ai>",
|
|
@@ -48,18 +48,17 @@
|
|
|
48
48
|
"rxjs": ">=7.0.0"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@univerjs/protocol": "0.1.39-alpha.
|
|
52
|
-
"@
|
|
53
|
-
"@univerjs/
|
|
54
|
-
"@univerjs/sheets": "0.5.0-alpha.0"
|
|
51
|
+
"@univerjs/protocol": "0.1.39-alpha.45",
|
|
52
|
+
"@univerjs/core": "0.5.0-beta.1",
|
|
53
|
+
"@univerjs/sheets": "0.5.0-beta.1"
|
|
55
54
|
},
|
|
56
55
|
"devDependencies": {
|
|
57
56
|
"rxjs": "^7.8.1",
|
|
58
57
|
"typescript": "^5.6.3",
|
|
59
|
-
"vite": "^5.4.
|
|
60
|
-
"vitest": "^2.1.
|
|
61
|
-
"@univerjs/core": "0.5.0-
|
|
62
|
-
"@univerjs-infra/shared": "0.5.0-
|
|
58
|
+
"vite": "^5.4.11",
|
|
59
|
+
"vitest": "^2.1.5",
|
|
60
|
+
"@univerjs/core": "0.5.0-beta.1",
|
|
61
|
+
"@univerjs-infra/shared": "0.5.0-beta.1"
|
|
63
62
|
},
|
|
64
63
|
"space": {
|
|
65
64
|
".": {
|
|
@@ -79,7 +78,7 @@
|
|
|
79
78
|
"test": "vitest run",
|
|
80
79
|
"test:watch": "vitest",
|
|
81
80
|
"coverage": "vitest run --coverage",
|
|
82
|
-
"build": "
|
|
81
|
+
"build": "univer-cli build"
|
|
83
82
|
},
|
|
84
83
|
"module": "./lib/es/index.js"
|
|
85
84
|
}
|