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