@univerjs/data-validation 0.1.13 → 0.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/cjs/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var H=Object.defineProperty;var G=(o,e,a)=>e in o?H(o,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):o[e]=a;var c=(o,e,a)=>(G(o,typeof e!="symbol"?e+"":e,a),a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("@univerjs/core"),h=require("@wendellhu/redi"),v=require("rxjs"),f=require("@univerjs/sheets");var L=(o=>(o.SHEET="sheet",o))(L||{});class R{constructor(){c(this,"_validatorByScopes",new Map);c(this,"_validatorMap",new Map);c(this,"_validatorsChange$",new v.BehaviorSubject(void 0));c(this,"validatorsChange$",this._validatorsChange$.asObservable())}_addValidatorToScope(e,a){this._validatorByScopes.has(a)||this._validatorByScopes.set(a,[]);const t=this._validatorByScopes.get(a);if(t.findIndex(r=>r.id===e.id)>-1)throw new Error(`Validator item with the same id ${e.id} has already been added!`);t.push(e)}_removeValidatorFromScope(e,a){const t=this._validatorByScopes.get(a);if(!t)return;const r=t.findIndex(n=>n.id===e.id);r>-1&&t.splice(r,1)}register(e){return this._validatorMap.set(e.id,e),Array.isArray(e.scopes)?e.scopes.forEach(a=>{this._addValidatorToScope(e,a)}):this._addValidatorToScope(e,e.scopes),this._validatorsChange$.next(),i.toDisposable(()=>{this._validatorMap.delete(e.id),Array.isArray(e.scopes)?e.scopes.forEach(a=>{this._removeValidatorFromScope(e,a)}):this._removeValidatorFromScope(e,e.scopes),this._validatorsChange$.next()})}getValidatorItem(e){return this._validatorMap.get(e)}getValidatorsByScope(e){return this._validatorByScopes.get(e)}}var _=(o=>(o[o.SETTING=0]="SETTING",o[o.RANGE=1]="RANGE",o[o.OPTIONS=2]="OPTIONS",o))(_||{});function I(o){return{type:o.type,operator:o.operator,formula1:o.formula1,formula2:o.formula2,allowBlank:o.allowBlank}}function A(o){return{error:o.error,errorStyle:o.errorStyle,errorTitle:o.errorTitle,imeMode:o.imeMode,prompt:o.prompt,promptTitle:o.promptTitle,showDropDown:o.showDropDown,showErrorMessage:o.showErrorMessage,showInputMessage:o.showInputMessage,renderMode:o.renderMode}}function Q(o){const a=o.get(f.SelectionManagerService).getSelectionRanges();return{uid:i.Tools.generateRandomId(6),type:i.DataValidationType.DECIMAL,operator:i.DataValidationOperator.EQUAL,formula1:"100",ranges:a!=null?a:[{startColumn:0,endColumn:0,startRow:0,endRow:0}]}}class w extends i.Disposable{constructor(a,t,r){super();c(this,"_dataValidations");c(this,"_dataValidationMap",new Map);c(this,"_dataValidations$",new v.Subject);c(this,"unitId");c(this,"subUnitId");c(this,"dataValidations$",this._dataValidations$.asObservable());this.unitId=a,this.subUnitId=t,r&&(this._insertRules(r),this._notice(),this.disposeWithMe({dispose:()=>{this._dataValidations$.complete()}}))}_notice(){this._dataValidations$.next(this._dataValidations)}_insertRules(a){this._dataValidations=a,a.forEach(t=>{this._dataValidationMap.set(t.uid,t)})}getRuleById(a){return this._dataValidationMap.get(a)}getRuleIndex(a){return this._dataValidations.findIndex(t=>t.uid===a)}addRule(a,t){const n=(Array.isArray(a)?a:[a]).filter(d=>!this._dataValidationMap.has(d.uid));typeof t=="number"&&t<this._dataValidations.length?this._dataValidations.splice(t,0,...n):this._dataValidations.push(...n),n.forEach(d=>{this._dataValidationMap.set(d.uid,d)}),this._notice()}removeRule(a){const t=this._dataValidations.findIndex(r=>r.uid===a);t>-1&&(this._dataValidations.splice(t,1),this._dataValidationMap.delete(a),this._notice())}updateRule(a,t){const r=this._dataValidationMap.get(a),n=this._dataValidations.findIndex(s=>a===s.uid);if(!r)throw new Error(`Data validation rule is not found, ruleId: ${a}.`);const d={...r};switch(t.type){case _.RANGE:{d.ranges=t.payload;break}case _.SETTING:{Object.assign(d,I(t.payload));break}case _.OPTIONS:{Object.assign(d,A(t.payload));break}}return this._dataValidations[n]=d,this._dataValidationMap.set(a,d),this._notice(),d}getDataValidations(){return this._dataValidations}toJSON(){return this._dataValidations}validator(a,t,r,n){return i.DataValidationStatus.VALID}}var W=Object.defineProperty,F=Object.getOwnPropertyDescriptor,J=(o,e,a,t)=>{for(var r=t>1?void 0:t?F(e,a):e,n=o.length-1,d;n>=0;n--)(d=o[n])&&(r=(t?d(e,a,r):d(r))||r);return t&&r&&W(e,a,r),r},z=(o,e)=>(a,t)=>e(a,t,o);exports.DataValidationModel=class extends i.Disposable{constructor(a){super();c(this,"_model",new Map);c(this,"_managerCreator",(a,t)=>new w(a,t,[]));c(this,"_ruleChange$",new v.Subject);c(this,"_validStatusChange$",new v.Subject);c(this,"ruleChange$",this._ruleChange$.asObservable());c(this,"ruleChangeDebounce$",this.ruleChange$.pipe(v.debounceTime(20)));c(this,"validStatusChange$",this._validStatusChange$.asObservable().pipe(v.debounceTime(20)));this._logService=a,this.disposeWithMe({dispose:()=>{this._ruleChange$.complete(),this._validStatusChange$.complete()}})}setManagerCreator(a){this._managerCreator=a}ensureManager(a,t){this._model.has(a)||this._model.set(a,new Map);const r=this._model.get(a);if(r.has(t))return r.get(t);const n=this._managerCreator(a,t);return r.set(t,n),n}_addRuleSideEffect(a,t,r){this.ensureManager(a,t).getRuleById(r.uid)||this._ruleChange$.next({rule:r,type:"add",unitId:a,subUnitId:t})}addRule(a,t,r,n){try{const d=this.ensureManager(a,t);(Array.isArray(r)?r:[r]).forEach(u=>{this._addRuleSideEffect(a,t,u)}),d.addRule(r,n)}catch(d){this._logService.error(d)}}updateRule(a,t,r,n){try{const s=this.ensureManager(a,t).updateRule(r,n);this._ruleChange$.next({rule:s,type:"update",unitId:a,subUnitId:t})}catch(d){this._logService.error(d)}}removeRule(a,t,r){try{const n=this.ensureManager(a,t),d=n.getRuleById(r);d&&(n.removeRule(r),this._ruleChange$.next({rule:d,type:"remove",unitId:a,subUnitId:t}))}catch(n){this._logService.error(n)}}getRuleById(a,t,r){return this.ensureManager(a,t).getRuleById(r)}getRuleIndex(a,t,r){return this.ensureManager(a,t).getRuleIndex(r)}getRules(a,t){return this.ensureManager(a,t).getDataValidations()}validator(a,t,r){const{unitId:n,subUnitId:d}=r;return this.ensureManager(n,d).validator(a,t,r,u=>{this._validStatusChange$.next({unitId:n,subUnitId:d,ruleId:t.uid,status:u})})}getUnitRules(a){const t=this._model.get(a);if(!t)return[];const r=[];return t.forEach(n=>{r.push([n.subUnitId,n.getDataValidations()])}),r}deleteUnitRules(a){this._model.delete(a)}};exports.DataValidationModel=J([z(0,i.ILogService)],exports.DataValidationModel);const m={type:i.CommandType.MUTATION,id:"data-validation.mutation.addRule",handler(o,e){if(!e)return!1;const{unitId:a,subUnitId:t,rule:r,index:n}=e;return o.get(exports.DataValidationModel).addRule(a,t,r,n),!0}},E={type:i.CommandType.MUTATION,id:"data-validation.mutation.removeRule",handler(o,e){if(!e)return!1;const{unitId:a,subUnitId:t,ruleId:r}=e,n=o.get(exports.DataValidationModel);return Array.isArray(r)?r.forEach(d=>{n.removeRule(a,t,d)}):n.removeRule(a,t,r),!0}},g={type:i.CommandType.MUTATION,id:"data-validation.mutation.updateRule",handler(o,e){if(!e)return!1;const{unitId:a,subUnitId:t,ruleId:r,payload:n}=e;return o.get(exports.DataValidationModel).updateRule(a,t,r,n),!0}},b={type:i.CommandType.COMMAND,id:"data-validation.command.addRule",async handler(o,e){if(!e)return!1;const{rule:a,unitId:t,subUnitId:r}=e,n=o.get(i.ICommandService),d=o.get(i.IUndoRedoService),s={...e,rule:{...e.rule,ranges:[e.rule.range]}},u=[{id:m.id,params:s}],l=[{id:E.id,params:{unitId:t,subUnitId:r,ruleId:a.uid}}];return d.pushUndoRedo({unitID:t,redoMutations:u,undoMutations:l}),await n.executeCommand(m.id,s),!0}},K=(o,e)=>{const a=o.get(exports.DataValidationModel),{unitId:t,subUnitId:r,ruleId:n}=e;if(Array.isArray(n)){const s=n.map(u=>a.getRuleById(t,r,u)).filter(Boolean);return[{id:m.id,params:{unitId:t,subUnitId:r,rule:s}}]}return[{id:m.id,params:{unitId:t,subUnitId:r,rule:{...a.getRuleById(t,r,n)},index:a.getRuleIndex(t,r,n)}}]},P={type:i.CommandType.COMMAND,id:"data-validation.command.removeRule",handler(o,e){if(!e)return!1;const{unitId:a,subUnitId:t,ruleId:r}=e,n=o.get(i.ICommandService),d=o.get(i.IUndoRedoService),s=o.get(exports.DataValidationModel),u=[{id:E.id,params:e}],l=[{id:m.id,params:{unitId:a,subUnitId:t,rule:{...s.getRuleById(a,t,r)},index:s.getRuleIndex(a,t,r)}}];return d.pushUndoRedo({undoMutations:l,redoMutations:u,unitID:e.unitId}),n.executeCommand(E.id,e),!0}},B={type:i.CommandType.COMMAND,id:"data-validation.command.updateDataValidationSetting",handler(o,e){if(!e)return!1;const a=o.get(i.ICommandService),t=o.get(i.IUndoRedoService),r=o.get(exports.DataValidationModel),{unitId:n,subUnitId:d,ruleId:s,options:u}=e,l=r.getRuleById(n,d,s);if(!l)return!1;const p={unitId:n,subUnitId:d,ruleId:s,payload:{type:_.OPTIONS,payload:u}},V=[{id:g.id,params:p}],O={unitId:n,subUnitId:d,ruleId:s,payload:{type:_.OPTIONS,payload:A(l)}},T=[{id:g.id,params:O}];return t.pushUndoRedo({unitID:n,redoMutations:V,undoMutations:T}),a.executeCommand(g.id,p),!0}},$={type:i.CommandType.COMMAND,id:"data-validation.command.updateDataValidationOptions",handler(o,e){if(!e)return!1;const a=o.get(i.ICommandService),t=o.get(i.IUndoRedoService),r=o.get(exports.DataValidationModel),n=o.get(R),{unitId:d,subUnitId:s,ruleId:u,setting:l}=e,p=n.getValidatorItem(l.type);if(!p||!p.validatorFormula(l).success)return!1;const V=r.getRuleById(d,s,u);if(!V)return!1;const O={unitId:d,subUnitId:s,ruleId:u,payload:{type:_.SETTING,payload:l}},T=[{id:g.id,params:O}],q={unitId:d,subUnitId:s,ruleId:u,payload:{type:_.SETTING,payload:I(V)}},j=[{id:g.id,params:q}];return t.pushUndoRedo({unitID:d,redoMutations:T,undoMutations:j}),a.executeCommand(g.id,O),!0}},x={type:i.CommandType.COMMAND,id:"data-validation.command.removeAll",handler(o,e){if(!e)return!1;const{unitId:a,subUnitId:t}=e,r=o.get(i.ICommandService),n=o.get(exports.DataValidationModel),d=o.get(i.IUndoRedoService),s=[...n.getRules(a,t)],u={unitId:a,subUnitId:t,ruleId:s.map(V=>V.uid)},l=[{id:E.id,params:u}],p=[{id:m.id,params:{unitId:a,subUnitId:t,rule:s}}];return d.pushUndoRedo({redoMutations:l,undoMutations:p,unitID:a}),r.executeCommand(E.id,u),!0}};var X=Object.defineProperty,Y=Object.getOwnPropertyDescriptor,Z=(o,e,a,t)=>{for(var r=t>1?void 0:t?Y(e,a):e,n=o.length-1,d;n>=0;n--)(d=o[n])&&(r=(t?d(e,a,r):d(r))||r);return t&&r&&X(e,a,r),r},S=(o,e)=>(a,t)=>e(a,t,o);const k="SHEET_DATA_VALIDATION_PLUGIN";exports.DataValidationResourceController=class extends i.Disposable{constructor(e,a,t){super(),this._resourceManagerService=e,this._univerInstanceService=a,this._dataValidationModel=t,this._initSnapshot()}_initSnapshot(){const e=t=>{const r=this._dataValidationModel.getUnitRules(t),n={};return r?(r.forEach(([d,s])=>{n[d]=s}),JSON.stringify(n)):""},a=t=>{if(!t)return{};try{return JSON.parse(t)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:k,businesses:[i.UniverInstanceType.UNIVER_SHEET],toJson:t=>e(t),parseJson:t=>a(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)})})}}))}};exports.DataValidationResourceController=Z([i.OnLifecycle(i.LifecycleStages.Ready,exports.DataValidationResourceController),S(0,i.IResourceManagerService),S(1,i.IUniverInstanceService),S(2,h.Inject(exports.DataValidationModel))],exports.DataValidationResourceController);var aa=Object.defineProperty,ta=Object.getOwnPropertyDescriptor,ea=(o,e,a,t)=>{for(var r=t>1?void 0:t?ta(e,a):e,n=o.length-1,d;n>=0;n--)(d=o[n])&&(r=(t?d(e,a,r):d(r))||r);return t&&r&&aa(e,a,r),r},M=(o,e)=>(a,t)=>e(a,t,o);exports.DataValidationSheetController=class extends i.Disposable{constructor(e,a,t){super(),this._sheetInterceptorService=e,this._univerInstanceService=a,this._dataValidationModel=t,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===f.RemoveSheetCommand.id){const a=e.params,t=a.unitId||this._univerInstanceService.getCurrentUnitForType(i.UniverInstanceType.UNIVER_SHEET).getUnitId(),r=this._univerInstanceService.getUniverSheetInstance(t);if(!r)return{redos:[],undos:[]};const n=a.subUnitId||r.getActiveSheet().getSheetId(),d=this._dataValidationModel.ensureManager(t,n);if(!d)return{redos:[],undos:[]};const s=d.getDataValidations(),u=s.map(V=>V.uid),l={unitId:t,subUnitId:n,ruleId:u},p={unitId:t,subUnitId:n,rule:s};return{redos:[{id:E.id,params:l}],undos:[{id:m.id,params:p}]}}return{redos:[],undos:[]}}}))}};exports.DataValidationSheetController=ea([i.OnLifecycle(i.LifecycleStages.Ready,exports.DataValidationSheetController),M(0,h.Inject(f.SheetInterceptorService)),M(1,h.Inject(i.IUniverInstanceService)),M(2,h.Inject(exports.DataValidationModel))],exports.DataValidationSheetController);var ra=Object.defineProperty,oa=Object.getOwnPropertyDescriptor,ia=(o,e,a,t)=>{for(var r=t>1?void 0:t?oa(e,a):e,n=o.length-1,d;n>=0;n--)(d=o[n])&&(r=(t?d(e,a,r):d(r))||r);return t&&r&&ra(e,a,r),r},y=(o,e)=>(a,t)=>e(a,t,o);const na="data-validation";var D;exports.UniverDataValidationPlugin=(D=class extends i.Plugin{constructor(e,a,t){super(),this._injector=a,this._commandService=t}onStarting(e){[[exports.DataValidationModel],[R],[exports.DataValidationResourceController],[exports.DataValidationSheetController]].forEach(a=>{e.add(a)}),[b,x,B,$,P,m,g,E].forEach(a=>{this._commandService.registerCommand(a)})}},c(D,"pluginName",na),c(D,"type",i.UniverInstanceType.UNIVER_SHEET),D);exports.UniverDataValidationPlugin=ia([y(1,h.Inject(h.Injector)),y(2,i.ICommandService)],exports.UniverDataValidationPlugin);i.DataValidationOperator.BETWEEN+"",i.DataValidationOperator.EQUAL+"",i.DataValidationOperator.GREATER_THAN+"",i.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",i.DataValidationOperator.LESS_THAN+"",i.DataValidationOperator.LESS_THAN_OR_EQUAL+"",i.DataValidationOperator.NOT_BETWEEN+"",i.DataValidationOperator.NOT_EQUAL+"";const da={[i.DataValidationOperator.BETWEEN]:"dataValidation.ruleName.between",[i.DataValidationOperator.EQUAL]:"dataValidation.ruleName.equal",[i.DataValidationOperator.GREATER_THAN]:"dataValidation.ruleName.greaterThan",[i.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.ruleName.greaterThanOrEqual",[i.DataValidationOperator.LESS_THAN]:"dataValidation.ruleName.lessThan",[i.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.ruleName.lessThanOrEqual",[i.DataValidationOperator.NOT_BETWEEN]:"dataValidation.ruleName.notBetween",[i.DataValidationOperator.NOT_EQUAL]:"dataValidation.ruleName.notEqual"},sa={[i.DataValidationOperator.BETWEEN]:"dataValidation.errorMsg.between",[i.DataValidationOperator.EQUAL]:"dataValidation.errorMsg.equal",[i.DataValidationOperator.GREATER_THAN]:"dataValidation.errorMsg.greaterThan",[i.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.errorMsg.greaterThanOrEqual",[i.DataValidationOperator.LESS_THAN]:"dataValidation.errorMsg.lessThan",[i.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.errorMsg.lessThanOrEqual",[i.DataValidationOperator.NOT_BETWEEN]:"dataValidation.errorMsg.notBetween",[i.DataValidationOperator.NOT_EQUAL]:"dataValidation.errorMsg.notEqual"},la={[i.DataValidationOperator.BETWEEN]:"dataValidation.textLength.errorMsg.between",[i.DataValidationOperator.EQUAL]:"dataValidation.textLength.errorMsg.equal",[i.DataValidationOperator.GREATER_THAN]:"dataValidation.textLength.errorMsg.greaterThan",[i.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.greaterThanOrEqual",[i.DataValidationOperator.LESS_THAN]:"dataValidation.textLength.errorMsg.lessThan",[i.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.lessThanOrEqual",[i.DataValidationOperator.NOT_BETWEEN]:"dataValidation.textLength.errorMsg.notBetween",[i.DataValidationOperator.NOT_EQUAL]:"dataValidation.textLength.errorMsg.notEqual"};var ua=Object.defineProperty,ca=Object.getOwnPropertyDescriptor,pa=(o,e,a,t)=>{for(var r=t>1?void 0:t?ca(e,a):e,n=o.length-1,d;n>=0;n--)(d=o[n])&&(r=(t?d(e,a,r):d(r))||r);return t&&r&&ua(e,a,r),r},N=(o,e)=>(a,t)=>e(a,t,o);const C="{FORMULA1}",U="{FORMULA2}",ha={[i.DataValidationOperator.BETWEEN]:"dataValidation.operators.between",[i.DataValidationOperator.EQUAL]:"dataValidation.operators.equal",[i.DataValidationOperator.GREATER_THAN]:"dataValidation.operators.greaterThan",[i.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.operators.greaterThanOrEqual",[i.DataValidationOperator.LESS_THAN]:"dataValidation.operators.lessThan",[i.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.operators.lessThanOrEqual",[i.DataValidationOperator.NOT_BETWEEN]:"dataValidation.operators.notBetween",[i.DataValidationOperator.NOT_EQUAL]:"dataValidation.operators.notEqual"};exports.BaseDataValidator=class{constructor(e,a){c(this,"canvasRender",null);c(this,"dropdown");c(this,"optionsInput");this.localeService=e,this.injector=a}get operatorNames(){return this.operators.map(e=>this.localeService.t(ha[e]))}get titleStr(){return this.localeService.t(this.title)}skipDefaultFontRender(e,a,t){return!1}generateRuleName(e){var t,r;if(!e.operator)return this.titleStr;const a=this.localeService.t(da[e.operator]).replace(C,(t=e.formula1)!=null?t:"").replace(U,(r=e.formula2)!=null?r:"");return`${this.titleStr} ${a}`}generateRuleErrorMessage(e){var t,r;return e.operator?`${this.localeService.t(sa[e.operator]).replace(C,(t=e.formula1)!=null?t:"").replace(U,(r=e.formula2)!=null?r:"")}`:this.titleStr}getRuleFinalError(e){return e.showInputMessage&&e.error?e.error:this.generateRuleErrorMessage(e)}isEmptyCellValue(e){return e===""||e===void 0||e===null}async isValidType(e,a,t){return!0}transform(e,a,t){return e}async validatorIsEqual(e,a,t){return!0}async validatorIsNotEqual(e,a,t){return!0}async validatorIsBetween(e,a,t){return!0}async validatorIsNotBetween(e,a,t){return!0}async validatorIsGreaterThan(e,a,t){return!0}async validatorIsGreaterThanOrEqual(e,a,t){return!0}async validatorIsLessThan(e,a,t){return!0}async validatorIsLessThanOrEqual(e,a,t){return!0}async validator(e,a){const{value:t,unitId:r,subUnitId:n}=e,d=this.isEmptyCellValue(t),{allowBlank:s=!0,operator:u}=a;if(d)return s;const l=await this.parseFormula(a,r,n);if(!await this.isValidType(e,l,a))return!1;if(!i.Tools.isDefine(u))return!0;const p=this.transform(e,l,a);switch(u){case i.DataValidationOperator.BETWEEN:return this.validatorIsBetween(p,l,a);case i.DataValidationOperator.EQUAL:return this.validatorIsEqual(p,l,a);case i.DataValidationOperator.GREATER_THAN:return this.validatorIsGreaterThan(p,l,a);case i.DataValidationOperator.GREATER_THAN_OR_EQUAL:return this.validatorIsGreaterThanOrEqual(p,l,a);case i.DataValidationOperator.LESS_THAN:return this.validatorIsLessThan(p,l,a);case i.DataValidationOperator.LESS_THAN_OR_EQUAL:return this.validatorIsLessThanOrEqual(p,l,a);case i.DataValidationOperator.NOT_BETWEEN:return this.validatorIsNotBetween(p,l,a);case i.DataValidationOperator.NOT_EQUAL:return this.validatorIsNotEqual(p,l,a);default:throw new Error("Unknown operator.")}}};exports.BaseDataValidator=pa([N(0,h.Inject(i.LocaleService)),N(1,h.Inject(h.Injector))],exports.BaseDataValidator);const _a=[i.DataValidationOperator.BETWEEN,i.DataValidationOperator.NOT_BETWEEN];exports.AddDataValidationCommand=b;exports.AddDataValidationMutation=m;exports.DataValidationManager=w;exports.DataValidatorRegistryScope=L;exports.DataValidatorRegistryService=R;exports.RemoveAllDataValidationCommand=x;exports.RemoveDataValidationCommand=P;exports.RemoveDataValidationMutation=E;exports.TWO_FORMULA_OPERATOR_COUNT=_a;exports.TextLengthErrorTitleMap=la;exports.UpdateDataValidationMutation=g;exports.UpdateDataValidationOptionsCommand=B;exports.UpdateDataValidationSettingCommand=$;exports.UpdateRuleType=_;exports.createDefaultNewRule=Q;exports.getRuleOptions=A;exports.getRuleSetting=I;exports.removeDataValidationUndoFactory=K;
1
+ "use strict";var H=Object.defineProperty;var G=(o,e,a)=>e in o?H(o,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):o[e]=a;var c=(o,e,a)=>(G(o,typeof e!="symbol"?e+"":e,a),a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("@univerjs/core"),_=require("@wendellhu/redi"),v=require("rxjs"),M=require("@univerjs/sheets");var L=(o=>(o.SHEET="sheet",o))(L||{});class I{constructor(){c(this,"_validatorByScopes",new Map);c(this,"_validatorMap",new Map);c(this,"_validatorsChange$",new v.BehaviorSubject(void 0));c(this,"validatorsChange$",this._validatorsChange$.asObservable())}_addValidatorToScope(e,a){this._validatorByScopes.has(a)||this._validatorByScopes.set(a,[]);const t=this._validatorByScopes.get(a);if(t.findIndex(r=>r.id===e.id)>-1)throw new Error(`Validator item with the same id ${e.id} has already been added!`);t.push(e)}_removeValidatorFromScope(e,a){const t=this._validatorByScopes.get(a);if(!t)return;const r=t.findIndex(n=>n.id===e.id);r>-1&&t.splice(r,1)}register(e){return this._validatorMap.set(e.id,e),Array.isArray(e.scopes)?e.scopes.forEach(a=>{this._addValidatorToScope(e,a)}):this._addValidatorToScope(e,e.scopes),this._validatorsChange$.next(),i.toDisposable(()=>{this._validatorMap.delete(e.id),Array.isArray(e.scopes)?e.scopes.forEach(a=>{this._removeValidatorFromScope(e,a)}):this._removeValidatorFromScope(e,e.scopes),this._validatorsChange$.next()})}getValidatorItem(e){return this._validatorMap.get(e)}getValidatorsByScope(e){return this._validatorByScopes.get(e)}}var m=(o=>(o[o.SETTING=0]="SETTING",o[o.RANGE=1]="RANGE",o[o.OPTIONS=2]="OPTIONS",o))(m||{});function R(o){return{type:o.type,operator:o.operator,formula1:o.formula1,formula2:o.formula2,allowBlank:o.allowBlank}}function A(o){return{error:o.error,errorStyle:o.errorStyle,errorTitle:o.errorTitle,imeMode:o.imeMode,prompt:o.prompt,promptTitle:o.promptTitle,showDropDown:o.showDropDown,showErrorMessage:o.showErrorMessage,showInputMessage:o.showInputMessage,renderMode:o.renderMode}}function Q(o){const a=o.get(M.SelectionManagerService).getSelectionRanges();return{uid:i.Tools.generateRandomId(6),type:i.DataValidationType.DECIMAL,operator:i.DataValidationOperator.EQUAL,formula1:"100",ranges:a!=null?a:[{startColumn:0,endColumn:0,startRow:0,endRow:0}]}}class w extends i.Disposable{constructor(a,t,r){super();c(this,"_dataValidations");c(this,"_dataValidationMap",new Map);c(this,"_dataValidations$",new v.Subject);c(this,"unitId");c(this,"subUnitId");c(this,"dataValidations$",this._dataValidations$.asObservable());this.unitId=a,this.subUnitId=t,r&&(this._insertRules(r),this._notice(),this.disposeWithMe({dispose:()=>{this._dataValidations$.complete()}}))}_notice(){this._dataValidations$.next(this._dataValidations)}_insertRules(a){this._dataValidations=a,a.forEach(t=>{this._dataValidationMap.set(t.uid,t)})}getRuleById(a){return this._dataValidationMap.get(a)}getRuleIndex(a){return this._dataValidations.findIndex(t=>t.uid===a)}addRule(a,t){const n=(Array.isArray(a)?a:[a]).filter(d=>!this._dataValidationMap.has(d.uid));typeof t=="number"&&t<this._dataValidations.length?this._dataValidations.splice(t,0,...n):this._dataValidations.push(...n),n.forEach(d=>{this._dataValidationMap.set(d.uid,d)}),this._notice()}removeRule(a){const t=this._dataValidations.findIndex(r=>r.uid===a);t>-1&&(this._dataValidations.splice(t,1),this._dataValidationMap.delete(a),this._notice())}updateRule(a,t){const r=this._dataValidationMap.get(a),n=this._dataValidations.findIndex(s=>a===s.uid);if(!r)throw new Error(`Data validation rule is not found, ruleId: ${a}.`);const d={...r};switch(t.type){case m.RANGE:{d.ranges=t.payload;break}case m.SETTING:{Object.assign(d,R(t.payload));break}case m.OPTIONS:{Object.assign(d,A(t.payload));break}}return this._dataValidations[n]=d,this._dataValidationMap.set(a,d),this._notice(),d}getDataValidations(){return this._dataValidations}toJSON(){return this._dataValidations}validator(a,t,r,n){return i.DataValidationStatus.VALID}}var W=Object.defineProperty,F=Object.getOwnPropertyDescriptor,J=(o,e,a,t)=>{for(var r=t>1?void 0:t?F(e,a):e,n=o.length-1,d;n>=0;n--)(d=o[n])&&(r=(t?d(e,a,r):d(r))||r);return t&&r&&W(e,a,r),r},z=(o,e)=>(a,t)=>e(a,t,o);exports.DataValidationModel=class extends i.Disposable{constructor(a){super();c(this,"_model",new Map);c(this,"_managerCreator",(a,t)=>new w(a,t,[]));c(this,"_ruleChange$",new v.Subject);c(this,"_validStatusChange$",new v.Subject);c(this,"ruleChange$",this._ruleChange$.asObservable());c(this,"ruleChangeDebounce$",this.ruleChange$.pipe(v.debounceTime(20)));c(this,"validStatusChange$",this._validStatusChange$.asObservable().pipe(v.debounceTime(20)));this._logService=a,this.disposeWithMe({dispose:()=>{this._ruleChange$.complete(),this._validStatusChange$.complete()}})}setManagerCreator(a){this._managerCreator=a}ensureManager(a,t){this._model.has(a)||this._model.set(a,new Map);const r=this._model.get(a);if(r.has(t))return r.get(t);const n=this._managerCreator(a,t);return r.set(t,n),n}_addRuleSideEffect(a,t,r){this.ensureManager(a,t).getRuleById(r.uid)||this._ruleChange$.next({rule:r,type:"add",unitId:a,subUnitId:t})}addRule(a,t,r,n){try{const d=this.ensureManager(a,t);(Array.isArray(r)?r:[r]).forEach(u=>{this._addRuleSideEffect(a,t,u)}),d.addRule(r,n)}catch(d){this._logService.error(d)}}updateRule(a,t,r,n){try{const s=this.ensureManager(a,t).updateRule(r,n);this._ruleChange$.next({rule:s,type:"update",unitId:a,subUnitId:t})}catch(d){this._logService.error(d)}}removeRule(a,t,r){try{const n=this.ensureManager(a,t),d=n.getRuleById(r);d&&(n.removeRule(r),this._ruleChange$.next({rule:d,type:"remove",unitId:a,subUnitId:t}))}catch(n){this._logService.error(n)}}getRuleById(a,t,r){return this.ensureManager(a,t).getRuleById(r)}getRuleIndex(a,t,r){return this.ensureManager(a,t).getRuleIndex(r)}getRules(a,t){return this.ensureManager(a,t).getDataValidations()}validator(a,t,r){const{unitId:n,subUnitId:d}=r;return this.ensureManager(n,d).validator(a,t,r,(u,l)=>{l&&this._validStatusChange$.next({unitId:n,subUnitId:d,ruleId:t.uid,status:u})})}getUnitRules(a){const t=this._model.get(a);if(!t)return[];const r=[];return t.forEach(n=>{r.push([n.subUnitId,n.getDataValidations()])}),r}deleteUnitRules(a){this._model.delete(a)}getSubUnitIds(a){var t,r;return Array.from((r=(t=this._model.get(a))==null?void 0:t.keys())!=null?r:[])}};exports.DataValidationModel=J([z(0,i.ILogService)],exports.DataValidationModel);const V={type:i.CommandType.MUTATION,id:"data-validation.mutation.addRule",handler(o,e){if(!e)return!1;const{unitId:a,subUnitId:t,rule:r,index:n}=e;return o.get(exports.DataValidationModel).addRule(a,t,r,n),!0}},E={type:i.CommandType.MUTATION,id:"data-validation.mutation.removeRule",handler(o,e){if(!e)return!1;const{unitId:a,subUnitId:t,ruleId:r}=e,n=o.get(exports.DataValidationModel);return Array.isArray(r)?r.forEach(d=>{n.removeRule(a,t,d)}):n.removeRule(a,t,r),!0}},g={type:i.CommandType.MUTATION,id:"data-validation.mutation.updateRule",handler(o,e){if(!e)return!1;const{unitId:a,subUnitId:t,ruleId:r,payload:n}=e;return o.get(exports.DataValidationModel).updateRule(a,t,r,n),!0}},b={type:i.CommandType.COMMAND,id:"data-validation.command.addRule",async handler(o,e){if(!e)return!1;const{rule:a,unitId:t,subUnitId:r}=e,n=o.get(i.ICommandService),d=o.get(i.IUndoRedoService),s={...e,rule:{...e.rule,ranges:[e.rule.range]}},u=[{id:V.id,params:s}],l=[{id:E.id,params:{unitId:t,subUnitId:r,ruleId:a.uid}}];return d.pushUndoRedo({unitID:t,redoMutations:u,undoMutations:l}),await n.executeCommand(V.id,s),!0}},K=(o,e)=>{const a=o.get(exports.DataValidationModel),{unitId:t,subUnitId:r,ruleId:n}=e;if(Array.isArray(n)){const s=n.map(u=>a.getRuleById(t,r,u)).filter(Boolean);return[{id:V.id,params:{unitId:t,subUnitId:r,rule:s}}]}return[{id:V.id,params:{unitId:t,subUnitId:r,rule:{...a.getRuleById(t,r,n)},index:a.getRuleIndex(t,r,n)}}]},P={type:i.CommandType.COMMAND,id:"data-validation.command.removeRule",handler(o,e){if(!e)return!1;const{unitId:a,subUnitId:t,ruleId:r}=e,n=o.get(i.ICommandService),d=o.get(i.IUndoRedoService),s=o.get(exports.DataValidationModel),u=[{id:E.id,params:e}],l=[{id:V.id,params:{unitId:a,subUnitId:t,rule:{...s.getRuleById(a,t,r)},index:s.getRuleIndex(a,t,r)}}];return d.pushUndoRedo({undoMutations:l,redoMutations:u,unitID:e.unitId}),n.executeCommand(E.id,e),!0}},B={type:i.CommandType.COMMAND,id:"data-validation.command.updateDataValidationSetting",handler(o,e){if(!e)return!1;const a=o.get(i.ICommandService),t=o.get(i.IUndoRedoService),r=o.get(exports.DataValidationModel),{unitId:n,subUnitId:d,ruleId:s,options:u}=e,l=r.getRuleById(n,d,s);if(!l)return!1;const p={unitId:n,subUnitId:d,ruleId:s,payload:{type:m.OPTIONS,payload:u}},h=[{id:g.id,params:p}],O={unitId:n,subUnitId:d,ruleId:s,payload:{type:m.OPTIONS,payload:A(l)}},T=[{id:g.id,params:O}];return t.pushUndoRedo({unitID:n,redoMutations:h,undoMutations:T}),a.executeCommand(g.id,p),!0}},$={type:i.CommandType.COMMAND,id:"data-validation.command.updateDataValidationOptions",handler(o,e){if(!e)return!1;const a=o.get(i.ICommandService),t=o.get(i.IUndoRedoService),r=o.get(exports.DataValidationModel),n=o.get(I),{unitId:d,subUnitId:s,ruleId:u,setting:l}=e,p=n.getValidatorItem(l.type);if(!p)return!1;const h=r.getRuleById(d,s,u);if(!h||!p.validatorFormula({...h,...l},d,s).success)return!1;const O={unitId:d,subUnitId:s,ruleId:u,payload:{type:m.SETTING,payload:l}},T=[{id:g.id,params:O}],q={unitId:d,subUnitId:s,ruleId:u,payload:{type:m.SETTING,payload:R(h)}},j=[{id:g.id,params:q}];return t.pushUndoRedo({unitID:d,redoMutations:T,undoMutations:j}),a.executeCommand(g.id,O),!0}},x={type:i.CommandType.COMMAND,id:"data-validation.command.removeAll",handler(o,e){if(!e)return!1;const{unitId:a,subUnitId:t}=e,r=o.get(i.ICommandService),n=o.get(exports.DataValidationModel),d=o.get(i.IUndoRedoService),s=[...n.getRules(a,t)],u={unitId:a,subUnitId:t,ruleId:s.map(h=>h.uid)},l=[{id:E.id,params:u}],p=[{id:V.id,params:{unitId:a,subUnitId:t,rule:s}}];return d.pushUndoRedo({redoMutations:l,undoMutations:p,unitID:a}),r.executeCommand(E.id,u),!0}};var X=Object.defineProperty,Y=Object.getOwnPropertyDescriptor,Z=(o,e,a,t)=>{for(var r=t>1?void 0:t?Y(e,a):e,n=o.length-1,d;n>=0;n--)(d=o[n])&&(r=(t?d(e,a,r):d(r))||r);return t&&r&&X(e,a,r),r},S=(o,e)=>(a,t)=>e(a,t,o);const k="SHEET_DATA_VALIDATION_PLUGIN";exports.DataValidationResourceController=class extends i.Disposable{constructor(e,a,t){super(),this._resourceManagerService=e,this._univerInstanceService=a,this._dataValidationModel=t,this._initSnapshot()}_initSnapshot(){const e=t=>{const r=this._dataValidationModel.getUnitRules(t),n={};return r?(r.forEach(([d,s])=>{n[d]=s}),JSON.stringify(n)):""},a=t=>{if(!t)return{};try{return JSON.parse(t)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:k,businesses:[i.UniverInstanceType.UNIVER_SHEET],toJson:t=>e(t),parseJson:t=>a(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)})})}}))}};exports.DataValidationResourceController=Z([i.OnLifecycle(i.LifecycleStages.Ready,exports.DataValidationResourceController),S(0,i.IResourceManagerService),S(1,i.IUniverInstanceService),S(2,_.Inject(exports.DataValidationModel))],exports.DataValidationResourceController);var aa=Object.defineProperty,ta=Object.getOwnPropertyDescriptor,ea=(o,e,a,t)=>{for(var r=t>1?void 0:t?ta(e,a):e,n=o.length-1,d;n>=0;n--)(d=o[n])&&(r=(t?d(e,a,r):d(r))||r);return t&&r&&aa(e,a,r),r},f=(o,e)=>(a,t)=>e(a,t,o);exports.DataValidationSheetController=class extends i.Disposable{constructor(e,a,t){super(),this._sheetInterceptorService=e,this._univerInstanceService=a,this._dataValidationModel=t,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===M.RemoveSheetCommand.id){const a=e.params,t=a.unitId||this._univerInstanceService.getCurrentUnitForType(i.UniverInstanceType.UNIVER_SHEET).getUnitId(),r=this._univerInstanceService.getUniverSheetInstance(t);if(!r)return{redos:[],undos:[]};const n=a.subUnitId||r.getActiveSheet().getSheetId(),d=this._dataValidationModel.ensureManager(t,n);if(!d)return{redos:[],undos:[]};const s=d.getDataValidations(),u=s.map(h=>h.uid),l={unitId:t,subUnitId:n,ruleId:u},p={unitId:t,subUnitId:n,rule:s};return{redos:[{id:E.id,params:l}],undos:[{id:V.id,params:p}]}}return{redos:[],undos:[]}}}))}};exports.DataValidationSheetController=ea([i.OnLifecycle(i.LifecycleStages.Ready,exports.DataValidationSheetController),f(0,_.Inject(M.SheetInterceptorService)),f(1,_.Inject(i.IUniverInstanceService)),f(2,_.Inject(exports.DataValidationModel))],exports.DataValidationSheetController);var ra=Object.defineProperty,oa=Object.getOwnPropertyDescriptor,ia=(o,e,a,t)=>{for(var r=t>1?void 0:t?oa(e,a):e,n=o.length-1,d;n>=0;n--)(d=o[n])&&(r=(t?d(e,a,r):d(r))||r);return t&&r&&ra(e,a,r),r},y=(o,e)=>(a,t)=>e(a,t,o);const na="UNIVER_DATA_VALIDATION_PLUGIN";var D;exports.UniverDataValidationPlugin=(D=class extends i.Plugin{constructor(e,a,t){super(),this._injector=a,this._commandService=t}onStarting(e){[[exports.DataValidationModel],[I],[exports.DataValidationResourceController],[exports.DataValidationSheetController]].forEach(a=>{e.add(a)}),[b,x,B,$,P,V,g,E].forEach(a=>{this._commandService.registerCommand(a)})}},c(D,"pluginName",na),c(D,"type",i.UniverInstanceType.UNIVER_SHEET),D);exports.UniverDataValidationPlugin=ia([y(1,_.Inject(_.Injector)),y(2,i.ICommandService)],exports.UniverDataValidationPlugin);i.DataValidationOperator.BETWEEN+"",i.DataValidationOperator.EQUAL+"",i.DataValidationOperator.GREATER_THAN+"",i.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",i.DataValidationOperator.LESS_THAN+"",i.DataValidationOperator.LESS_THAN_OR_EQUAL+"",i.DataValidationOperator.NOT_BETWEEN+"",i.DataValidationOperator.NOT_EQUAL+"";const da={[i.DataValidationOperator.BETWEEN]:"dataValidation.ruleName.between",[i.DataValidationOperator.EQUAL]:"dataValidation.ruleName.equal",[i.DataValidationOperator.GREATER_THAN]:"dataValidation.ruleName.greaterThan",[i.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.ruleName.greaterThanOrEqual",[i.DataValidationOperator.LESS_THAN]:"dataValidation.ruleName.lessThan",[i.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.ruleName.lessThanOrEqual",[i.DataValidationOperator.NOT_BETWEEN]:"dataValidation.ruleName.notBetween",[i.DataValidationOperator.NOT_EQUAL]:"dataValidation.ruleName.notEqual"},sa={[i.DataValidationOperator.BETWEEN]:"dataValidation.errorMsg.between",[i.DataValidationOperator.EQUAL]:"dataValidation.errorMsg.equal",[i.DataValidationOperator.GREATER_THAN]:"dataValidation.errorMsg.greaterThan",[i.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.errorMsg.greaterThanOrEqual",[i.DataValidationOperator.LESS_THAN]:"dataValidation.errorMsg.lessThan",[i.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.errorMsg.lessThanOrEqual",[i.DataValidationOperator.NOT_BETWEEN]:"dataValidation.errorMsg.notBetween",[i.DataValidationOperator.NOT_EQUAL]:"dataValidation.errorMsg.notEqual"},la={[i.DataValidationOperator.BETWEEN]:"dataValidation.textLength.errorMsg.between",[i.DataValidationOperator.EQUAL]:"dataValidation.textLength.errorMsg.equal",[i.DataValidationOperator.GREATER_THAN]:"dataValidation.textLength.errorMsg.greaterThan",[i.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.greaterThanOrEqual",[i.DataValidationOperator.LESS_THAN]:"dataValidation.textLength.errorMsg.lessThan",[i.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.lessThanOrEqual",[i.DataValidationOperator.NOT_BETWEEN]:"dataValidation.textLength.errorMsg.notBetween",[i.DataValidationOperator.NOT_EQUAL]:"dataValidation.textLength.errorMsg.notEqual"};var ua=Object.defineProperty,ca=Object.getOwnPropertyDescriptor,pa=(o,e,a,t)=>{for(var r=t>1?void 0:t?ca(e,a):e,n=o.length-1,d;n>=0;n--)(d=o[n])&&(r=(t?d(e,a,r):d(r))||r);return t&&r&&ua(e,a,r),r},N=(o,e)=>(a,t)=>e(a,t,o);const C="{FORMULA1}",U="{FORMULA2}",ha={[i.DataValidationOperator.BETWEEN]:"dataValidation.operators.between",[i.DataValidationOperator.EQUAL]:"dataValidation.operators.equal",[i.DataValidationOperator.GREATER_THAN]:"dataValidation.operators.greaterThan",[i.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.operators.greaterThanOrEqual",[i.DataValidationOperator.LESS_THAN]:"dataValidation.operators.lessThan",[i.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.operators.lessThanOrEqual",[i.DataValidationOperator.NOT_BETWEEN]:"dataValidation.operators.notBetween",[i.DataValidationOperator.NOT_EQUAL]:"dataValidation.operators.notEqual"};exports.BaseDataValidator=class{constructor(e,a){c(this,"canvasRender",null);c(this,"dropdown");c(this,"optionsInput");this.localeService=e,this.injector=a}get operatorNames(){return this.operators.map(e=>this.localeService.t(ha[e]))}get titleStr(){return this.localeService.t(this.title)}skipDefaultFontRender(e,a,t){return!1}generateRuleName(e){var t,r;if(!e.operator)return this.titleStr;const a=this.localeService.t(da[e.operator]).replace(C,(t=e.formula1)!=null?t:"").replace(U,(r=e.formula2)!=null?r:"");return`${this.titleStr} ${a}`}generateRuleErrorMessage(e){var t,r;return e.operator?`${this.localeService.t(sa[e.operator]).replace(C,(t=e.formula1)!=null?t:"").replace(U,(r=e.formula2)!=null?r:"")}`:this.titleStr}getRuleFinalError(e){return e.showInputMessage&&e.error?e.error:this.generateRuleErrorMessage(e)}isEmptyCellValue(e){return e===""||e===void 0||e===null}async isValidType(e,a,t){return!0}transform(e,a,t){return e}async validatorIsEqual(e,a,t){return!0}async validatorIsNotEqual(e,a,t){return!0}async validatorIsBetween(e,a,t){return!0}async validatorIsNotBetween(e,a,t){return!0}async validatorIsGreaterThan(e,a,t){return!0}async validatorIsGreaterThanOrEqual(e,a,t){return!0}async validatorIsLessThan(e,a,t){return!0}async validatorIsLessThanOrEqual(e,a,t){return!0}async validator(e,a){const{value:t,unitId:r,subUnitId:n}=e,d=this.isEmptyCellValue(t),{allowBlank:s=!0,operator:u}=a;if(d)return s;const l=await this.parseFormula(a,r,n);if(!await this.isValidType(e,l,a))return!1;if(!i.Tools.isDefine(u))return!0;const p=this.transform(e,l,a);switch(u){case i.DataValidationOperator.BETWEEN:return this.validatorIsBetween(p,l,a);case i.DataValidationOperator.EQUAL:return this.validatorIsEqual(p,l,a);case i.DataValidationOperator.GREATER_THAN:return this.validatorIsGreaterThan(p,l,a);case i.DataValidationOperator.GREATER_THAN_OR_EQUAL:return this.validatorIsGreaterThanOrEqual(p,l,a);case i.DataValidationOperator.LESS_THAN:return this.validatorIsLessThan(p,l,a);case i.DataValidationOperator.LESS_THAN_OR_EQUAL:return this.validatorIsLessThanOrEqual(p,l,a);case i.DataValidationOperator.NOT_BETWEEN:return this.validatorIsNotBetween(p,l,a);case i.DataValidationOperator.NOT_EQUAL:return this.validatorIsNotEqual(p,l,a);default:throw new Error("Unknown operator.")}}};exports.BaseDataValidator=pa([N(0,_.Inject(i.LocaleService)),N(1,_.Inject(_.Injector))],exports.BaseDataValidator);const _a=[i.DataValidationOperator.BETWEEN,i.DataValidationOperator.NOT_BETWEEN];exports.AddDataValidationCommand=b;exports.AddDataValidationMutation=V;exports.DataValidationManager=w;exports.DataValidatorRegistryScope=L;exports.DataValidatorRegistryService=I;exports.RemoveAllDataValidationCommand=x;exports.RemoveDataValidationCommand=P;exports.RemoveDataValidationMutation=E;exports.TWO_FORMULA_OPERATOR_COUNT=_a;exports.TextLengthErrorTitleMap=la;exports.UpdateDataValidationMutation=g;exports.UpdateDataValidationOptionsCommand=B;exports.UpdateDataValidationSettingCommand=$;exports.UpdateRuleType=m;exports.createDefaultNewRule=Q;exports.getRuleOptions=A;exports.getRuleSetting=R;exports.removeDataValidationUndoFactory=K;
package/lib/es/index.js CHANGED
@@ -2,7 +2,7 @@ var X = Object.defineProperty;
2
2
  var Y = (a, e, t) => e in a ? X(a, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : a[e] = t;
3
3
  var c = (a, e, t) => (Y(a, typeof e != "symbol" ? e + "" : e, t), t);
4
4
  import { toDisposable as Z, Tools as H, DataValidationType as k, DataValidationOperator as s, Disposable as N, DataValidationStatus as ee, ILogService as te, CommandType as m, ICommandService as M, IUndoRedoService as S, UniverInstanceType as w, OnLifecycle as q, LifecycleStages as G, IResourceManagerService as ae, IUniverInstanceService as Q, Plugin as re, LocaleService as ne } from "@univerjs/core";
5
- import { Inject as E, Injector as W } from "@wendellhu/redi";
5
+ import { Inject as f, Injector as W } from "@wendellhu/redi";
6
6
  import { BehaviorSubject as oe, Subject as U, debounceTime as D } from "rxjs";
7
7
  import { SelectionManagerService as ie, RemoveSheetCommand as se, SheetInterceptorService as de } from "@univerjs/sheets";
8
8
  var le = /* @__PURE__ */ ((a) => (a.SHEET = "sheet", a))(le || {});
@@ -43,7 +43,7 @@ class j {
43
43
  return this._validatorByScopes.get(e);
44
44
  }
45
45
  }
46
- var _ = /* @__PURE__ */ ((a) => (a[a.SETTING = 0] = "SETTING", a[a.RANGE = 1] = "RANGE", a[a.OPTIONS = 2] = "OPTIONS", a))(_ || {});
46
+ var p = /* @__PURE__ */ ((a) => (a[a.SETTING = 0] = "SETTING", a[a.RANGE = 1] = "RANGE", a[a.OPTIONS = 2] = "OPTIONS", a))(p || {});
47
47
  function F(a) {
48
48
  return {
49
49
  type: a.type,
@@ -122,15 +122,15 @@ class ue extends N {
122
122
  throw new Error(`Data validation rule is not found, ruleId: ${t}.`);
123
123
  const i = { ...n };
124
124
  switch (r.type) {
125
- case _.RANGE: {
125
+ case p.RANGE: {
126
126
  i.ranges = r.payload;
127
127
  break;
128
128
  }
129
- case _.SETTING: {
129
+ case p.SETTING: {
130
130
  Object.assign(i, F(r.payload));
131
131
  break;
132
132
  }
133
- case _.OPTIONS: {
133
+ case p.OPTIONS: {
134
134
  Object.assign(i, J(r.payload));
135
135
  break;
136
136
  }
@@ -147,11 +147,11 @@ class ue extends N {
147
147
  return ee.VALID;
148
148
  }
149
149
  }
150
- var ce = Object.defineProperty, he = Object.getOwnPropertyDescriptor, pe = (a, e, t, r) => {
150
+ var ce = Object.defineProperty, he = Object.getOwnPropertyDescriptor, _e = (a, e, t, r) => {
151
151
  for (var n = r > 1 ? void 0 : r ? he(e, t) : e, o = a.length - 1, i; o >= 0; o--)
152
152
  (i = a[o]) && (n = (r ? i(e, t, n) : i(n)) || n);
153
153
  return r && n && ce(e, t, n), n;
154
- }, _e = (a, e) => (t, r) => e(t, r, a);
154
+ }, pe = (a, e) => (t, r) => e(t, r, a);
155
155
  let h = class extends N {
156
156
  constructor(e) {
157
157
  super();
@@ -234,8 +234,8 @@ let h = class extends N {
234
234
  }
235
235
  validator(e, t, r) {
236
236
  const { unitId: n, subUnitId: o } = r;
237
- return this.ensureManager(n, o).validator(e, t, r, (d) => {
238
- this._validStatusChange$.next({
237
+ return this.ensureManager(n, o).validator(e, t, r, (d, l) => {
238
+ l && this._validStatusChange$.next({
239
239
  unitId: n,
240
240
  subUnitId: o,
241
241
  ruleId: t.uid,
@@ -255,9 +255,13 @@ let h = class extends N {
255
255
  deleteUnitRules(e) {
256
256
  this._model.delete(e);
257
257
  }
258
+ getSubUnitIds(e) {
259
+ var t, r;
260
+ return Array.from((r = (t = this._model.get(e)) == null ? void 0 : t.keys()) != null ? r : []);
261
+ }
258
262
  };
259
- h = pe([
260
- _e(0, te)
263
+ h = _e([
264
+ pe(0, te)
261
265
  ], h);
262
266
  const g = {
263
267
  type: m.MUTATION,
@@ -268,7 +272,7 @@ const g = {
268
272
  const { unitId: t, subUnitId: r, rule: n, index: o } = e;
269
273
  return a.get(h).addRule(t, r, n, o), !0;
270
274
  }
271
- }, f = {
275
+ }, T = {
272
276
  type: m.MUTATION,
273
277
  id: "data-validation.mutation.removeRule",
274
278
  handler(a, e) {
@@ -304,7 +308,7 @@ const g = {
304
308
  id: g.id,
305
309
  params: d
306
310
  }], u = [{
307
- id: f.id,
311
+ id: T.id,
308
312
  params: {
309
313
  unitId: r,
310
314
  subUnitId: n,
@@ -348,7 +352,7 @@ const g = {
348
352
  if (!e)
349
353
  return !1;
350
354
  const { unitId: t, subUnitId: r, ruleId: n } = e, o = a.get(M), i = a.get(S), d = a.get(h), l = [{
351
- id: f.id,
355
+ id: T.id,
352
356
  params: e
353
357
  }], u = [{
354
358
  id: g.id,
@@ -365,7 +369,7 @@ const g = {
365
369
  undoMutations: u,
366
370
  redoMutations: l,
367
371
  unitID: e.unitId
368
- }), o.executeCommand(f.id, e), !0;
372
+ }), o.executeCommand(T.id, e), !0;
369
373
  }
370
374
  }, Ee = {
371
375
  type: m.COMMAND,
@@ -376,23 +380,23 @@ const g = {
376
380
  const t = a.get(M), r = a.get(S), n = a.get(h), { unitId: o, subUnitId: i, ruleId: d, options: l } = e, u = n.getRuleById(o, i, d);
377
381
  if (!u)
378
382
  return !1;
379
- const p = {
383
+ const _ = {
380
384
  unitId: o,
381
385
  subUnitId: i,
382
386
  ruleId: d,
383
387
  payload: {
384
- type: _.OPTIONS,
388
+ type: p.OPTIONS,
385
389
  payload: l
386
390
  }
387
- }, T = [{
391
+ }, E = [{
388
392
  id: v.id,
389
- params: p
393
+ params: _
390
394
  }], V = {
391
395
  unitId: o,
392
396
  subUnitId: i,
393
397
  ruleId: d,
394
398
  payload: {
395
- type: _.OPTIONS,
399
+ type: p.OPTIONS,
396
400
  payload: J(u)
397
401
  }
398
402
  }, O = [{
@@ -401,28 +405,28 @@ const g = {
401
405
  }];
402
406
  return r.pushUndoRedo({
403
407
  unitID: o,
404
- redoMutations: T,
408
+ redoMutations: E,
405
409
  undoMutations: O
406
- }), t.executeCommand(v.id, p), !0;
410
+ }), t.executeCommand(v.id, _), !0;
407
411
  }
408
- }, ve = {
412
+ }, fe = {
409
413
  type: m.COMMAND,
410
414
  id: "data-validation.command.updateDataValidationOptions",
411
415
  handler(a, e) {
412
416
  if (!e)
413
417
  return !1;
414
- const t = a.get(M), r = a.get(S), n = a.get(h), o = a.get(j), { unitId: i, subUnitId: d, ruleId: l, setting: u } = e, p = o.getValidatorItem(u.type);
415
- if (!p || !p.validatorFormula(u).success)
418
+ const t = a.get(M), r = a.get(S), n = a.get(h), o = a.get(j), { unitId: i, subUnitId: d, ruleId: l, setting: u } = e, _ = o.getValidatorItem(u.type);
419
+ if (!_)
416
420
  return !1;
417
- const T = n.getRuleById(i, d, l);
418
- if (!T)
421
+ const E = n.getRuleById(i, d, l);
422
+ if (!E || !_.validatorFormula({ ...E, ...u }, i, d).success)
419
423
  return !1;
420
424
  const V = {
421
425
  unitId: i,
422
426
  subUnitId: d,
423
427
  ruleId: l,
424
428
  payload: {
425
- type: _.SETTING,
429
+ type: p.SETTING,
426
430
  payload: u
427
431
  }
428
432
  }, O = [{
@@ -433,8 +437,8 @@ const g = {
433
437
  subUnitId: d,
434
438
  ruleId: l,
435
439
  payload: {
436
- type: _.SETTING,
437
- payload: F(T)
440
+ type: p.SETTING,
441
+ payload: F(E)
438
442
  }
439
443
  }, K = [{
440
444
  id: v.id,
@@ -446,7 +450,7 @@ const g = {
446
450
  undoMutations: K
447
451
  }), t.executeCommand(v.id, V), !0;
448
452
  }
449
- }, fe = {
453
+ }, ve = {
450
454
  type: m.COMMAND,
451
455
  id: "data-validation.command.removeAll",
452
456
  handler(a, e) {
@@ -455,11 +459,11 @@ const g = {
455
459
  const { unitId: t, subUnitId: r } = e, n = a.get(M), o = a.get(h), i = a.get(S), d = [...o.getRules(t, r)], l = {
456
460
  unitId: t,
457
461
  subUnitId: r,
458
- ruleId: d.map((T) => T.uid)
462
+ ruleId: d.map((E) => E.uid)
459
463
  }, u = [{
460
- id: f.id,
464
+ id: T.id,
461
465
  params: l
462
- }], p = [{
466
+ }], _ = [{
463
467
  id: g.id,
464
468
  params: {
465
469
  unitId: t,
@@ -469,9 +473,9 @@ const g = {
469
473
  }];
470
474
  return i.pushUndoRedo({
471
475
  redoMutations: u,
472
- undoMutations: p,
476
+ undoMutations: _,
473
477
  unitID: t
474
- }), n.executeCommand(f.id, l), !0;
478
+ }), n.executeCommand(T.id, l), !0;
475
479
  }
476
480
  };
477
481
  var Te = Object.defineProperty, Me = Object.getOwnPropertyDescriptor, Se = (a, e, t, r) => {
@@ -480,7 +484,7 @@ var Te = Object.defineProperty, Me = Object.getOwnPropertyDescriptor, Se = (a, e
480
484
  return r && n && Te(e, t, n), n;
481
485
  }, y = (a, e) => (t, r) => e(t, r, a);
482
486
  const Ve = "SHEET_DATA_VALIDATION_PLUGIN";
483
- let I = class extends N {
487
+ let R = class extends N {
484
488
  constructor(a, e, t) {
485
489
  super(), this._resourceManagerService = a, this._univerInstanceService = e, this._dataValidationModel = t, this._initSnapshot();
486
490
  }
@@ -519,16 +523,16 @@ let I = class extends N {
519
523
  );
520
524
  }
521
525
  };
522
- I = Se([
523
- q(G.Ready, I),
526
+ R = Se([
527
+ q(G.Ready, R),
524
528
  y(0, ae),
525
529
  y(1, Q),
526
- y(2, E(h))
527
- ], I);
528
- var Re = Object.defineProperty, Ie = Object.getOwnPropertyDescriptor, Ae = (a, e, t, r) => {
529
- for (var n = r > 1 ? void 0 : r ? Ie(e, t) : e, o = a.length - 1, i; o >= 0; o--)
530
+ y(2, f(h))
531
+ ], R);
532
+ var Ie = Object.defineProperty, Re = Object.getOwnPropertyDescriptor, Ae = (a, e, t, r) => {
533
+ for (var n = r > 1 ? void 0 : r ? Re(e, t) : e, o = a.length - 1, i; o >= 0; o--)
530
534
  (i = a[o]) && (n = (r ? i(e, t, n) : i(n)) || n);
531
- return r && n && Re(e, t, n), n;
535
+ return r && n && Ie(e, t, n), n;
532
536
  }, L = (a, e) => (t, r) => e(t, r, a);
533
537
  let A = class extends N {
534
538
  constructor(a, e, t) {
@@ -545,7 +549,7 @@ let A = class extends N {
545
549
  const n = e.subUnitId || r.getActiveSheet().getSheetId(), o = this._dataValidationModel.ensureManager(t, n);
546
550
  if (!o)
547
551
  return { redos: [], undos: [] };
548
- const i = o.getDataValidations(), d = i.map((p) => p.uid), l = {
552
+ const i = o.getDataValidations(), d = i.map((_) => _.uid), l = {
549
553
  unitId: t,
550
554
  subUnitId: n,
551
555
  ruleId: d
@@ -556,7 +560,7 @@ let A = class extends N {
556
560
  };
557
561
  return {
558
562
  redos: [{
559
- id: f.id,
563
+ id: T.id,
560
564
  params: l
561
565
  }],
562
566
  undos: [{
@@ -573,18 +577,18 @@ let A = class extends N {
573
577
  };
574
578
  A = Ae([
575
579
  q(G.Ready, A),
576
- L(0, E(de)),
577
- L(1, E(Q)),
578
- L(2, E(h))
580
+ L(0, f(de)),
581
+ L(1, f(Q)),
582
+ L(2, f(h))
579
583
  ], A);
580
584
  var Ne = Object.defineProperty, Oe = Object.getOwnPropertyDescriptor, ye = (a, e, t, r) => {
581
585
  for (var n = r > 1 ? void 0 : r ? Oe(e, t) : e, o = a.length - 1, i; o >= 0; o--)
582
586
  (i = a[o]) && (n = (r ? i(e, t, n) : i(n)) || n);
583
587
  return r && n && Ne(e, t, n), n;
584
588
  }, C = (a, e) => (t, r) => e(t, r, a);
585
- const Le = "data-validation";
586
- var R;
587
- let b = (R = class extends re {
589
+ const Le = "UNIVER_DATA_VALIDATION_PLUGIN";
590
+ var I;
591
+ let b = (I = class extends re {
588
592
  constructor(a, e, t) {
589
593
  super(), this._injector = e, this._commandService = t;
590
594
  }
@@ -594,7 +598,7 @@ let b = (R = class extends re {
594
598
  [h],
595
599
  // service
596
600
  [j],
597
- [I],
601
+ [R],
598
602
  [A]
599
603
  ].forEach(
600
604
  (e) => {
@@ -603,21 +607,21 @@ let b = (R = class extends re {
603
607
  ), [
604
608
  // command
605
609
  ge,
606
- fe,
607
- Ee,
608
610
  ve,
611
+ Ee,
612
+ fe,
609
613
  me,
610
614
  // mutation
611
615
  g,
612
616
  v,
613
- f
617
+ T
614
618
  ].forEach((e) => {
615
619
  this._commandService.registerCommand(e);
616
620
  });
617
621
  }
618
- }, c(R, "pluginName", Le), c(R, "type", w.UNIVER_SHEET), R);
622
+ }, c(I, "pluginName", Le), c(I, "type", w.UNIVER_SHEET), I);
619
623
  b = ye([
620
- C(1, E(W)),
624
+ C(1, f(W)),
621
625
  C(2, M)
622
626
  ], b);
623
627
  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 + "";
@@ -760,8 +764,8 @@ let x = class {
760
764
  }
761
765
  };
762
766
  x = be([
763
- B(0, E(ne)),
764
- B(1, E(W))
767
+ B(0, f(ne)),
768
+ B(1, f(W))
765
769
  ], x);
766
770
  const je = [
767
771
  s.BETWEEN,
@@ -773,20 +777,20 @@ export {
773
777
  x as BaseDataValidator,
774
778
  ue as DataValidationManager,
775
779
  h as DataValidationModel,
776
- I as DataValidationResourceController,
780
+ R as DataValidationResourceController,
777
781
  A as DataValidationSheetController,
778
782
  le as DataValidatorRegistryScope,
779
783
  j as DataValidatorRegistryService,
780
- fe as RemoveAllDataValidationCommand,
784
+ ve as RemoveAllDataValidationCommand,
781
785
  me as RemoveDataValidationCommand,
782
- f as RemoveDataValidationMutation,
786
+ T as RemoveDataValidationMutation,
783
787
  je as TWO_FORMULA_OPERATOR_COUNT,
784
788
  We as TextLengthErrorTitleMap,
785
789
  b as UniverDataValidationPlugin,
786
790
  v as UpdateDataValidationMutation,
787
791
  Ee as UpdateDataValidationOptionsCommand,
788
- ve as UpdateDataValidationSettingCommand,
789
- _ as UpdateRuleType,
792
+ fe as UpdateDataValidationSettingCommand,
793
+ p as UpdateRuleType,
790
794
  Ge as createDefaultNewRule,
791
795
  J as getRuleOptions,
792
796
  F as getRuleSetting,
@@ -18,5 +18,5 @@ export declare class DataValidationManager<T extends IDataValidationRule> extend
18
18
  updateRule(ruleId: string, payload: IUpdateRulePayload): T;
19
19
  getDataValidations(): T[];
20
20
  toJSON(): T[];
21
- validator(_content: Nullable<CellValue>, _rule: IDataValidationRule, _pos: any, _onCompele: (status: DataValidationStatus) => void): DataValidationStatus;
21
+ validator(_content: Nullable<CellValue>, _rule: IDataValidationRule, _pos: any, _onComplete: (status: DataValidationStatus, changed: boolean) => void): DataValidationStatus;
22
22
  }
@@ -37,5 +37,6 @@ export declare class DataValidationModel<T extends IDataValidationRule = IDataVa
37
37
  validator(content: Nullable<CellValue>, rule: T, pos: any): DataValidationStatus;
38
38
  getUnitRules(unitId: string): [string, IDataValidationRule[]][];
39
39
  deleteUnitRules(unitId: string): void;
40
+ getSubUnitIds(unitId: string): string[];
40
41
  }
41
42
  export {};
@@ -38,7 +38,7 @@ export declare abstract class BaseDataValidator<DataType = CellValue> {
38
38
  getRuleFinalError(rule: IDataValidationRule): string;
39
39
  isEmptyCellValue(cellValue: Nullable<CellValue>): cellValue is null | undefined | void;
40
40
  abstract parseFormula(rule: IDataValidationRule, unitId: string, subUnitId: string): Promise<IFormulaResult>;
41
- abstract validatorFormula(rule: IDataValidationRuleBase): IFormulaValidResult;
41
+ abstract validatorFormula(rule: IDataValidationRule, unitId: string, subUnitId: string): IFormulaValidResult;
42
42
  isValidType(cellInfo: IValidatorCellInfo, formula: IFormulaResult, rule: IDataValidationRule): Promise<boolean>;
43
43
  transform(cellInfo: IValidatorCellInfo, formula: IFormulaResult, rule: IDataValidationRule): IValidatorCellInfo<DataType>;
44
44
  validatorIsEqual(cellInfo: IValidatorCellInfo<DataType>, formula: IFormulaResult, rule: IDataValidationRule): Promise<boolean>;
package/lib/umd/index.js CHANGED
@@ -1 +1 @@
1
- (function(s,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("@univerjs/core"),require("@wendellhu/redi"),require("rxjs"),require("@univerjs/sheets")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@wendellhu/redi","rxjs","@univerjs/sheets"],n):(s=typeof globalThis<"u"?globalThis:s||self,n(s.UniverDataValidation={},s.UniverCore,s["@wendellhu/redi"],s.rxjs,s.UniverSheets))})(this,function(s,n,m,O,T){"use strict";var ma=Object.defineProperty;var _a=(s,n,m)=>n in s?ma(s,n,{enumerable:!0,configurable:!0,writable:!0,value:m}):s[n]=m;var h=(s,n,m)=>(_a(s,typeof n!="symbol"?n+"":n,m),m);var f;var N=(r=>(r.SHEET="sheet",r))(N||{});class S{constructor(){h(this,"_validatorByScopes",new Map);h(this,"_validatorMap",new Map);h(this,"_validatorsChange$",new O.BehaviorSubject(void 0));h(this,"validatorsChange$",this._validatorsChange$.asObservable())}_addValidatorToScope(e,a){this._validatorByScopes.has(a)||this._validatorByScopes.set(a,[]);const t=this._validatorByScopes.get(a);if(t.findIndex(i=>i.id===e.id)>-1)throw new Error(`Validator item with the same id ${e.id} has already been added!`);t.push(e)}_removeValidatorFromScope(e,a){const t=this._validatorByScopes.get(a);if(!t)return;const i=t.findIndex(o=>o.id===e.id);i>-1&&t.splice(i,1)}register(e){return this._validatorMap.set(e.id,e),Array.isArray(e.scopes)?e.scopes.forEach(a=>{this._addValidatorToScope(e,a)}):this._addValidatorToScope(e,e.scopes),this._validatorsChange$.next(),n.toDisposable(()=>{this._validatorMap.delete(e.id),Array.isArray(e.scopes)?e.scopes.forEach(a=>{this._removeValidatorFromScope(e,a)}):this._removeValidatorFromScope(e,e.scopes),this._validatorsChange$.next()})}getValidatorItem(e){return this._validatorMap.get(e)}getValidatorsByScope(e){return this._validatorByScopes.get(e)}}var _=(r=>(r[r.SETTING=0]="SETTING",r[r.RANGE=1]="RANGE",r[r.OPTIONS=2]="OPTIONS",r))(_||{});function M(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}}function H(r){const a=r.get(T.SelectionManagerService).getSelectionRanges();return{uid:n.Tools.generateRandomId(6),type:n.DataValidationType.DECIMAL,operator:n.DataValidationOperator.EQUAL,formula1:"100",ranges:a!=null?a:[{startColumn:0,endColumn:0,startRow:0,endRow:0}]}}class C extends n.Disposable{constructor(a,t,i){super();h(this,"_dataValidations");h(this,"_dataValidationMap",new Map);h(this,"_dataValidations$",new O.Subject);h(this,"unitId");h(this,"subUnitId");h(this,"dataValidations$",this._dataValidations$.asObservable());this.unitId=a,this.subUnitId=t,i&&(this._insertRules(i),this._notice(),this.disposeWithMe({dispose:()=>{this._dataValidations$.complete()}}))}_notice(){this._dataValidations$.next(this._dataValidations)}_insertRules(a){this._dataValidations=a,a.forEach(t=>{this._dataValidationMap.set(t.uid,t)})}getRuleById(a){return this._dataValidationMap.get(a)}getRuleIndex(a){return this._dataValidations.findIndex(t=>t.uid===a)}addRule(a,t){const o=(Array.isArray(a)?a:[a]).filter(d=>!this._dataValidationMap.has(d.uid));typeof t=="number"&&t<this._dataValidations.length?this._dataValidations.splice(t,0,...o):this._dataValidations.push(...o),o.forEach(d=>{this._dataValidationMap.set(d.uid,d)}),this._notice()}removeRule(a){const t=this._dataValidations.findIndex(i=>i.uid===a);t>-1&&(this._dataValidations.splice(t,1),this._dataValidationMap.delete(a),this._notice())}updateRule(a,t){const i=this._dataValidationMap.get(a),o=this._dataValidations.findIndex(l=>a===l.uid);if(!i)throw new Error(`Data validation rule is not found, ruleId: ${a}.`);const d={...i};switch(t.type){case _.RANGE:{d.ranges=t.payload;break}case _.SETTING:{Object.assign(d,M(t.payload));break}case _.OPTIONS:{Object.assign(d,R(t.payload));break}}return this._dataValidations[o]=d,this._dataValidationMap.set(a,d),this._notice(),d}getDataValidations(){return this._dataValidations}toJSON(){return this._dataValidations}validator(a,t,i,o){return n.DataValidationStatus.VALID}}var G=Object.defineProperty,Q=Object.getOwnPropertyDescriptor,W=(r,e,a,t)=>{for(var i=t>1?void 0:t?Q(e,a):e,o=r.length-1,d;o>=0;o--)(d=r[o])&&(i=(t?d(e,a,i):d(i))||i);return t&&i&&G(e,a,i),i},F=(r,e)=>(a,t)=>e(a,t,r);s.DataValidationModel=class extends n.Disposable{constructor(a){super();h(this,"_model",new Map);h(this,"_managerCreator",(a,t)=>new C(a,t,[]));h(this,"_ruleChange$",new O.Subject);h(this,"_validStatusChange$",new O.Subject);h(this,"ruleChange$",this._ruleChange$.asObservable());h(this,"ruleChangeDebounce$",this.ruleChange$.pipe(O.debounceTime(20)));h(this,"validStatusChange$",this._validStatusChange$.asObservable().pipe(O.debounceTime(20)));this._logService=a,this.disposeWithMe({dispose:()=>{this._ruleChange$.complete(),this._validStatusChange$.complete()}})}setManagerCreator(a){this._managerCreator=a}ensureManager(a,t){this._model.has(a)||this._model.set(a,new Map);const i=this._model.get(a);if(i.has(t))return i.get(t);const o=this._managerCreator(a,t);return i.set(t,o),o}_addRuleSideEffect(a,t,i){this.ensureManager(a,t).getRuleById(i.uid)||this._ruleChange$.next({rule:i,type:"add",unitId:a,subUnitId:t})}addRule(a,t,i,o){try{const d=this.ensureManager(a,t);(Array.isArray(i)?i:[i]).forEach(c=>{this._addRuleSideEffect(a,t,c)}),d.addRule(i,o)}catch(d){this._logService.error(d)}}updateRule(a,t,i,o){try{const l=this.ensureManager(a,t).updateRule(i,o);this._ruleChange$.next({rule:l,type:"update",unitId:a,subUnitId:t})}catch(d){this._logService.error(d)}}removeRule(a,t,i){try{const o=this.ensureManager(a,t),d=o.getRuleById(i);d&&(o.removeRule(i),this._ruleChange$.next({rule:d,type:"remove",unitId:a,subUnitId:t}))}catch(o){this._logService.error(o)}}getRuleById(a,t,i){return this.ensureManager(a,t).getRuleById(i)}getRuleIndex(a,t,i){return this.ensureManager(a,t).getRuleIndex(i)}getRules(a,t){return this.ensureManager(a,t).getDataValidations()}validator(a,t,i){const{unitId:o,subUnitId:d}=i;return this.ensureManager(o,d).validator(a,t,i,c=>{this._validStatusChange$.next({unitId:o,subUnitId:d,ruleId:t.uid,status:c})})}getUnitRules(a){const t=this._model.get(a);if(!t)return[];const i=[];return t.forEach(o=>{i.push([o.subUnitId,o.getDataValidations()])}),i}deleteUnitRules(a){this._model.delete(a)}},s.DataValidationModel=W([F(0,n.ILogService)],s.DataValidationModel);const V={type:n.CommandType.MUTATION,id:"data-validation.mutation.addRule",handler(r,e){if(!e)return!1;const{unitId:a,subUnitId:t,rule:i,index:o}=e;return r.get(s.DataValidationModel).addRule(a,t,i,o),!0}},g={type:n.CommandType.MUTATION,id:"data-validation.mutation.removeRule",handler(r,e){if(!e)return!1;const{unitId:a,subUnitId:t,ruleId:i}=e,o=r.get(s.DataValidationModel);return Array.isArray(i)?i.forEach(d=>{o.removeRule(a,t,d)}):o.removeRule(a,t,i),!0}},v={type:n.CommandType.MUTATION,id:"data-validation.mutation.updateRule",handler(r,e){if(!e)return!1;const{unitId:a,subUnitId:t,ruleId:i,payload:o}=e;return r.get(s.DataValidationModel).updateRule(a,t,i,o),!0}},U={type:n.CommandType.COMMAND,id:"data-validation.command.addRule",async handler(r,e){if(!e)return!1;const{rule:a,unitId:t,subUnitId:i}=e,o=r.get(n.ICommandService),d=r.get(n.IUndoRedoService),l={...e,rule:{...e.rule,ranges:[e.rule.range]}},c=[{id:V.id,params:l}],u=[{id:g.id,params:{unitId:t,subUnitId:i,ruleId:a.uid}}];return d.pushUndoRedo({unitID:t,redoMutations:c,undoMutations:u}),await o.executeCommand(V.id,l),!0}},J=(r,e)=>{const a=r.get(s.DataValidationModel),{unitId:t,subUnitId:i,ruleId:o}=e;if(Array.isArray(o)){const l=o.map(c=>a.getRuleById(t,i,c)).filter(Boolean);return[{id:V.id,params:{unitId:t,subUnitId:i,rule:l}}]}return[{id:V.id,params:{unitId:t,subUnitId:i,rule:{...a.getRuleById(t,i,o)},index:a.getRuleIndex(t,i,o)}}]},L={type:n.CommandType.COMMAND,id:"data-validation.command.removeRule",handler(r,e){if(!e)return!1;const{unitId:a,subUnitId:t,ruleId:i}=e,o=r.get(n.ICommandService),d=r.get(n.IUndoRedoService),l=r.get(s.DataValidationModel),c=[{id:g.id,params:e}],u=[{id:V.id,params:{unitId:a,subUnitId:t,rule:{...l.getRuleById(a,t,i)},index:l.getRuleIndex(a,t,i)}}];return d.pushUndoRedo({undoMutations:u,redoMutations:c,unitID:e.unitId}),o.executeCommand(g.id,e),!0}},w={type:n.CommandType.COMMAND,id:"data-validation.command.updateDataValidationSetting",handler(r,e){if(!e)return!1;const a=r.get(n.ICommandService),t=r.get(n.IUndoRedoService),i=r.get(s.DataValidationModel),{unitId:o,subUnitId:d,ruleId:l,options:c}=e,u=i.getRuleById(o,d,l);if(!u)return!1;const p={unitId:o,subUnitId:d,ruleId:l,payload:{type:_.OPTIONS,payload:c}},E=[{id:v.id,params:p}],D={unitId:o,subUnitId:d,ruleId:l,payload:{type:_.OPTIONS,payload:R(u)}},y=[{id:v.id,params:D}];return t.pushUndoRedo({unitID:o,redoMutations:E,undoMutations:y}),a.executeCommand(v.id,p),!0}},b={type:n.CommandType.COMMAND,id:"data-validation.command.updateDataValidationOptions",handler(r,e){if(!e)return!1;const a=r.get(n.ICommandService),t=r.get(n.IUndoRedoService),i=r.get(s.DataValidationModel),o=r.get(S),{unitId:d,subUnitId:l,ruleId:c,setting:u}=e,p=o.getValidatorItem(u.type);if(!p||!p.validatorFormula(u).success)return!1;const E=i.getRuleById(d,l,c);if(!E)return!1;const D={unitId:d,subUnitId:l,ruleId:c,payload:{type:_.SETTING,payload:u}},y=[{id:v.id,params:D}],ha={unitId:d,subUnitId:l,ruleId:c,payload:{type:_.SETTING,payload:M(E)}},pa=[{id:v.id,params:ha}];return t.pushUndoRedo({unitID:d,redoMutations:y,undoMutations:pa}),a.executeCommand(v.id,D),!0}},P={type:n.CommandType.COMMAND,id:"data-validation.command.removeAll",handler(r,e){if(!e)return!1;const{unitId:a,subUnitId:t}=e,i=r.get(n.ICommandService),o=r.get(s.DataValidationModel),d=r.get(n.IUndoRedoService),l=[...o.getRules(a,t)],c={unitId:a,subUnitId:t,ruleId:l.map(E=>E.uid)},u=[{id:g.id,params:c}],p=[{id:V.id,params:{unitId:a,subUnitId:t,rule:l}}];return d.pushUndoRedo({redoMutations:u,undoMutations:p,unitID:a}),i.executeCommand(g.id,c),!0}};var z=Object.defineProperty,K=Object.getOwnPropertyDescriptor,X=(r,e,a,t)=>{for(var i=t>1?void 0:t?K(e,a):e,o=r.length-1,d;o>=0;o--)(d=r[o])&&(i=(t?d(e,a,i):d(i))||i);return t&&i&&z(e,a,i),i},I=(r,e)=>(a,t)=>e(a,t,r);const Y="SHEET_DATA_VALIDATION_PLUGIN";s.DataValidationResourceController=class extends n.Disposable{constructor(e,a,t){super(),this._resourceManagerService=e,this._univerInstanceService=a,this._dataValidationModel=t,this._initSnapshot()}_initSnapshot(){const e=t=>{const i=this._dataValidationModel.getUnitRules(t),o={};return i?(i.forEach(([d,l])=>{o[d]=l}),JSON.stringify(o)):""},a=t=>{if(!t)return{};try{return JSON.parse(t)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:Y,businesses:[n.UniverInstanceType.UNIVER_SHEET],toJson:t=>e(t),parseJson:t=>a(t),onUnLoad:t=>{this._dataValidationModel.deleteUnitRules(t)},onLoad:(t,i)=>{Object.keys(i).forEach(o=>{i[o].forEach(l=>{this._dataValidationModel.addRule(t,o,l)})})}}))}},s.DataValidationResourceController=X([n.OnLifecycle(n.LifecycleStages.Ready,s.DataValidationResourceController),I(0,n.IResourceManagerService),I(1,n.IUniverInstanceService),I(2,m.Inject(s.DataValidationModel))],s.DataValidationResourceController);var Z=Object.defineProperty,x=Object.getOwnPropertyDescriptor,k=(r,e,a,t)=>{for(var i=t>1?void 0:t?x(e,a):e,o=r.length-1,d;o>=0;o--)(d=r[o])&&(i=(t?d(e,a,i):d(i))||i);return t&&i&&Z(e,a,i),i},A=(r,e)=>(a,t)=>e(a,t,r);s.DataValidationSheetController=class extends n.Disposable{constructor(e,a,t){super(),this._sheetInterceptorService=e,this._univerInstanceService=a,this._dataValidationModel=t,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===T.RemoveSheetCommand.id){const a=e.params,t=a.unitId||this._univerInstanceService.getCurrentUnitForType(n.UniverInstanceType.UNIVER_SHEET).getUnitId(),i=this._univerInstanceService.getUniverSheetInstance(t);if(!i)return{redos:[],undos:[]};const o=a.subUnitId||i.getActiveSheet().getSheetId(),d=this._dataValidationModel.ensureManager(t,o);if(!d)return{redos:[],undos:[]};const l=d.getDataValidations(),c=l.map(E=>E.uid),u={unitId:t,subUnitId:o,ruleId:c},p={unitId:t,subUnitId:o,rule:l};return{redos:[{id:g.id,params:u}],undos:[{id:V.id,params:p}]}}return{redos:[],undos:[]}}}))}},s.DataValidationSheetController=k([n.OnLifecycle(n.LifecycleStages.Ready,s.DataValidationSheetController),A(0,m.Inject(T.SheetInterceptorService)),A(1,m.Inject(n.IUniverInstanceService)),A(2,m.Inject(s.DataValidationModel))],s.DataValidationSheetController);var aa=Object.defineProperty,ta=Object.getOwnPropertyDescriptor,ea=(r,e,a,t)=>{for(var i=t>1?void 0:t?ta(e,a):e,o=r.length-1,d;o>=0;o--)(d=r[o])&&(i=(t?d(e,a,i):d(i))||i);return t&&i&&aa(e,a,i),i},B=(r,e)=>(a,t)=>e(a,t,r);const ia="data-validation";s.UniverDataValidationPlugin=(f=class extends n.Plugin{constructor(e,a,t){super(),this._injector=a,this._commandService=t}onStarting(e){[[s.DataValidationModel],[S],[s.DataValidationResourceController],[s.DataValidationSheetController]].forEach(a=>{e.add(a)}),[U,P,w,b,L,V,v,g].forEach(a=>{this._commandService.registerCommand(a)})}},h(f,"pluginName",ia),h(f,"type",n.UniverInstanceType.UNIVER_SHEET),f),s.UniverDataValidationPlugin=ea([B(1,m.Inject(m.Injector)),B(2,n.ICommandService)],s.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 na={[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"},ra={[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"},oa={[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"};var da=Object.defineProperty,sa=Object.getOwnPropertyDescriptor,la=(r,e,a,t)=>{for(var i=t>1?void 0:t?sa(e,a):e,o=r.length-1,d;o>=0;o--)(d=r[o])&&(i=(t?d(e,a,i):d(i))||i);return t&&i&&da(e,a,i),i},$=(r,e)=>(a,t)=>e(a,t,r);const q="{FORMULA1}",j="{FORMULA2}",ua={[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"};s.BaseDataValidator=class{constructor(e,a){h(this,"canvasRender",null);h(this,"dropdown");h(this,"optionsInput");this.localeService=e,this.injector=a}get operatorNames(){return this.operators.map(e=>this.localeService.t(ua[e]))}get titleStr(){return this.localeService.t(this.title)}skipDefaultFontRender(e,a,t){return!1}generateRuleName(e){var t,i;if(!e.operator)return this.titleStr;const a=this.localeService.t(na[e.operator]).replace(q,(t=e.formula1)!=null?t:"").replace(j,(i=e.formula2)!=null?i:"");return`${this.titleStr} ${a}`}generateRuleErrorMessage(e){var t,i;return e.operator?`${this.localeService.t(ra[e.operator]).replace(q,(t=e.formula1)!=null?t:"").replace(j,(i=e.formula2)!=null?i:"")}`:this.titleStr}getRuleFinalError(e){return e.showInputMessage&&e.error?e.error:this.generateRuleErrorMessage(e)}isEmptyCellValue(e){return e===""||e===void 0||e===null}async isValidType(e,a,t){return!0}transform(e,a,t){return e}async validatorIsEqual(e,a,t){return!0}async validatorIsNotEqual(e,a,t){return!0}async validatorIsBetween(e,a,t){return!0}async validatorIsNotBetween(e,a,t){return!0}async validatorIsGreaterThan(e,a,t){return!0}async validatorIsGreaterThanOrEqual(e,a,t){return!0}async validatorIsLessThan(e,a,t){return!0}async validatorIsLessThanOrEqual(e,a,t){return!0}async validator(e,a){const{value:t,unitId:i,subUnitId:o}=e,d=this.isEmptyCellValue(t),{allowBlank:l=!0,operator:c}=a;if(d)return l;const u=await this.parseFormula(a,i,o);if(!await this.isValidType(e,u,a))return!1;if(!n.Tools.isDefine(c))return!0;const p=this.transform(e,u,a);switch(c){case n.DataValidationOperator.BETWEEN:return this.validatorIsBetween(p,u,a);case n.DataValidationOperator.EQUAL:return this.validatorIsEqual(p,u,a);case n.DataValidationOperator.GREATER_THAN:return this.validatorIsGreaterThan(p,u,a);case n.DataValidationOperator.GREATER_THAN_OR_EQUAL:return this.validatorIsGreaterThanOrEqual(p,u,a);case n.DataValidationOperator.LESS_THAN:return this.validatorIsLessThan(p,u,a);case n.DataValidationOperator.LESS_THAN_OR_EQUAL:return this.validatorIsLessThanOrEqual(p,u,a);case n.DataValidationOperator.NOT_BETWEEN:return this.validatorIsNotBetween(p,u,a);case n.DataValidationOperator.NOT_EQUAL:return this.validatorIsNotEqual(p,u,a);default:throw new Error("Unknown operator.")}}},s.BaseDataValidator=la([$(0,m.Inject(n.LocaleService)),$(1,m.Inject(m.Injector))],s.BaseDataValidator);const ca=[n.DataValidationOperator.BETWEEN,n.DataValidationOperator.NOT_BETWEEN];s.AddDataValidationCommand=U,s.AddDataValidationMutation=V,s.DataValidationManager=C,s.DataValidatorRegistryScope=N,s.DataValidatorRegistryService=S,s.RemoveAllDataValidationCommand=P,s.RemoveDataValidationCommand=L,s.RemoveDataValidationMutation=g,s.TWO_FORMULA_OPERATOR_COUNT=ca,s.TextLengthErrorTitleMap=oa,s.UpdateDataValidationMutation=v,s.UpdateDataValidationOptionsCommand=w,s.UpdateDataValidationSettingCommand=b,s.UpdateRuleType=_,s.createDefaultNewRule=H,s.getRuleOptions=R,s.getRuleSetting=M,s.removeDataValidationUndoFactory=J,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})});
1
+ (function(s,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("@univerjs/core"),require("@wendellhu/redi"),require("rxjs"),require("@univerjs/sheets")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@wendellhu/redi","rxjs","@univerjs/sheets"],n):(s=typeof globalThis<"u"?globalThis:s||self,n(s.UniverDataValidation={},s.UniverCore,s["@wendellhu/redi"],s.rxjs,s.UniverSheets))})(this,function(s,n,_,O,T){"use strict";var _a=Object.defineProperty;var ma=(s,n,_)=>n in s?_a(s,n,{enumerable:!0,configurable:!0,writable:!0,value:_}):s[n]=_;var h=(s,n,_)=>(ma(s,typeof n!="symbol"?n+"":n,_),_);var f;var N=(r=>(r.SHEET="sheet",r))(N||{});class S{constructor(){h(this,"_validatorByScopes",new Map);h(this,"_validatorMap",new Map);h(this,"_validatorsChange$",new O.BehaviorSubject(void 0));h(this,"validatorsChange$",this._validatorsChange$.asObservable())}_addValidatorToScope(e,a){this._validatorByScopes.has(a)||this._validatorByScopes.set(a,[]);const t=this._validatorByScopes.get(a);if(t.findIndex(i=>i.id===e.id)>-1)throw new Error(`Validator item with the same id ${e.id} has already been added!`);t.push(e)}_removeValidatorFromScope(e,a){const t=this._validatorByScopes.get(a);if(!t)return;const i=t.findIndex(o=>o.id===e.id);i>-1&&t.splice(i,1)}register(e){return this._validatorMap.set(e.id,e),Array.isArray(e.scopes)?e.scopes.forEach(a=>{this._addValidatorToScope(e,a)}):this._addValidatorToScope(e,e.scopes),this._validatorsChange$.next(),n.toDisposable(()=>{this._validatorMap.delete(e.id),Array.isArray(e.scopes)?e.scopes.forEach(a=>{this._removeValidatorFromScope(e,a)}):this._removeValidatorFromScope(e,e.scopes),this._validatorsChange$.next()})}getValidatorItem(e){return this._validatorMap.get(e)}getValidatorsByScope(e){return this._validatorByScopes.get(e)}}var m=(r=>(r[r.SETTING=0]="SETTING",r[r.RANGE=1]="RANGE",r[r.OPTIONS=2]="OPTIONS",r))(m||{});function M(r){return{type:r.type,operator:r.operator,formula1:r.formula1,formula2:r.formula2,allowBlank:r.allowBlank}}function I(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}}function H(r){const a=r.get(T.SelectionManagerService).getSelectionRanges();return{uid:n.Tools.generateRandomId(6),type:n.DataValidationType.DECIMAL,operator:n.DataValidationOperator.EQUAL,formula1:"100",ranges:a!=null?a:[{startColumn:0,endColumn:0,startRow:0,endRow:0}]}}class U extends n.Disposable{constructor(a,t,i){super();h(this,"_dataValidations");h(this,"_dataValidationMap",new Map);h(this,"_dataValidations$",new O.Subject);h(this,"unitId");h(this,"subUnitId");h(this,"dataValidations$",this._dataValidations$.asObservable());this.unitId=a,this.subUnitId=t,i&&(this._insertRules(i),this._notice(),this.disposeWithMe({dispose:()=>{this._dataValidations$.complete()}}))}_notice(){this._dataValidations$.next(this._dataValidations)}_insertRules(a){this._dataValidations=a,a.forEach(t=>{this._dataValidationMap.set(t.uid,t)})}getRuleById(a){return this._dataValidationMap.get(a)}getRuleIndex(a){return this._dataValidations.findIndex(t=>t.uid===a)}addRule(a,t){const o=(Array.isArray(a)?a:[a]).filter(d=>!this._dataValidationMap.has(d.uid));typeof t=="number"&&t<this._dataValidations.length?this._dataValidations.splice(t,0,...o):this._dataValidations.push(...o),o.forEach(d=>{this._dataValidationMap.set(d.uid,d)}),this._notice()}removeRule(a){const t=this._dataValidations.findIndex(i=>i.uid===a);t>-1&&(this._dataValidations.splice(t,1),this._dataValidationMap.delete(a),this._notice())}updateRule(a,t){const i=this._dataValidationMap.get(a),o=this._dataValidations.findIndex(l=>a===l.uid);if(!i)throw new Error(`Data validation rule is not found, ruleId: ${a}.`);const d={...i};switch(t.type){case m.RANGE:{d.ranges=t.payload;break}case m.SETTING:{Object.assign(d,M(t.payload));break}case m.OPTIONS:{Object.assign(d,I(t.payload));break}}return this._dataValidations[o]=d,this._dataValidationMap.set(a,d),this._notice(),d}getDataValidations(){return this._dataValidations}toJSON(){return this._dataValidations}validator(a,t,i,o){return n.DataValidationStatus.VALID}}var G=Object.defineProperty,Q=Object.getOwnPropertyDescriptor,W=(r,e,a,t)=>{for(var i=t>1?void 0:t?Q(e,a):e,o=r.length-1,d;o>=0;o--)(d=r[o])&&(i=(t?d(e,a,i):d(i))||i);return t&&i&&G(e,a,i),i},F=(r,e)=>(a,t)=>e(a,t,r);s.DataValidationModel=class extends n.Disposable{constructor(a){super();h(this,"_model",new Map);h(this,"_managerCreator",(a,t)=>new U(a,t,[]));h(this,"_ruleChange$",new O.Subject);h(this,"_validStatusChange$",new O.Subject);h(this,"ruleChange$",this._ruleChange$.asObservable());h(this,"ruleChangeDebounce$",this.ruleChange$.pipe(O.debounceTime(20)));h(this,"validStatusChange$",this._validStatusChange$.asObservable().pipe(O.debounceTime(20)));this._logService=a,this.disposeWithMe({dispose:()=>{this._ruleChange$.complete(),this._validStatusChange$.complete()}})}setManagerCreator(a){this._managerCreator=a}ensureManager(a,t){this._model.has(a)||this._model.set(a,new Map);const i=this._model.get(a);if(i.has(t))return i.get(t);const o=this._managerCreator(a,t);return i.set(t,o),o}_addRuleSideEffect(a,t,i){this.ensureManager(a,t).getRuleById(i.uid)||this._ruleChange$.next({rule:i,type:"add",unitId:a,subUnitId:t})}addRule(a,t,i,o){try{const d=this.ensureManager(a,t);(Array.isArray(i)?i:[i]).forEach(c=>{this._addRuleSideEffect(a,t,c)}),d.addRule(i,o)}catch(d){this._logService.error(d)}}updateRule(a,t,i,o){try{const l=this.ensureManager(a,t).updateRule(i,o);this._ruleChange$.next({rule:l,type:"update",unitId:a,subUnitId:t})}catch(d){this._logService.error(d)}}removeRule(a,t,i){try{const o=this.ensureManager(a,t),d=o.getRuleById(i);d&&(o.removeRule(i),this._ruleChange$.next({rule:d,type:"remove",unitId:a,subUnitId:t}))}catch(o){this._logService.error(o)}}getRuleById(a,t,i){return this.ensureManager(a,t).getRuleById(i)}getRuleIndex(a,t,i){return this.ensureManager(a,t).getRuleIndex(i)}getRules(a,t){return this.ensureManager(a,t).getDataValidations()}validator(a,t,i){const{unitId:o,subUnitId:d}=i;return this.ensureManager(o,d).validator(a,t,i,(c,u)=>{u&&this._validStatusChange$.next({unitId:o,subUnitId:d,ruleId:t.uid,status:c})})}getUnitRules(a){const t=this._model.get(a);if(!t)return[];const i=[];return t.forEach(o=>{i.push([o.subUnitId,o.getDataValidations()])}),i}deleteUnitRules(a){this._model.delete(a)}getSubUnitIds(a){var t,i;return Array.from((i=(t=this._model.get(a))==null?void 0:t.keys())!=null?i:[])}},s.DataValidationModel=W([F(0,n.ILogService)],s.DataValidationModel);const V={type:n.CommandType.MUTATION,id:"data-validation.mutation.addRule",handler(r,e){if(!e)return!1;const{unitId:a,subUnitId:t,rule:i,index:o}=e;return r.get(s.DataValidationModel).addRule(a,t,i,o),!0}},v={type:n.CommandType.MUTATION,id:"data-validation.mutation.removeRule",handler(r,e){if(!e)return!1;const{unitId:a,subUnitId:t,ruleId:i}=e,o=r.get(s.DataValidationModel);return Array.isArray(i)?i.forEach(d=>{o.removeRule(a,t,d)}):o.removeRule(a,t,i),!0}},E={type:n.CommandType.MUTATION,id:"data-validation.mutation.updateRule",handler(r,e){if(!e)return!1;const{unitId:a,subUnitId:t,ruleId:i,payload:o}=e;return r.get(s.DataValidationModel).updateRule(a,t,i,o),!0}},C={type:n.CommandType.COMMAND,id:"data-validation.command.addRule",async handler(r,e){if(!e)return!1;const{rule:a,unitId:t,subUnitId:i}=e,o=r.get(n.ICommandService),d=r.get(n.IUndoRedoService),l={...e,rule:{...e.rule,ranges:[e.rule.range]}},c=[{id:V.id,params:l}],u=[{id:v.id,params:{unitId:t,subUnitId:i,ruleId:a.uid}}];return d.pushUndoRedo({unitID:t,redoMutations:c,undoMutations:u}),await o.executeCommand(V.id,l),!0}},J=(r,e)=>{const a=r.get(s.DataValidationModel),{unitId:t,subUnitId:i,ruleId:o}=e;if(Array.isArray(o)){const l=o.map(c=>a.getRuleById(t,i,c)).filter(Boolean);return[{id:V.id,params:{unitId:t,subUnitId:i,rule:l}}]}return[{id:V.id,params:{unitId:t,subUnitId:i,rule:{...a.getRuleById(t,i,o)},index:a.getRuleIndex(t,i,o)}}]},L={type:n.CommandType.COMMAND,id:"data-validation.command.removeRule",handler(r,e){if(!e)return!1;const{unitId:a,subUnitId:t,ruleId:i}=e,o=r.get(n.ICommandService),d=r.get(n.IUndoRedoService),l=r.get(s.DataValidationModel),c=[{id:v.id,params:e}],u=[{id:V.id,params:{unitId:a,subUnitId:t,rule:{...l.getRuleById(a,t,i)},index:l.getRuleIndex(a,t,i)}}];return d.pushUndoRedo({undoMutations:u,redoMutations:c,unitID:e.unitId}),o.executeCommand(v.id,e),!0}},w={type:n.CommandType.COMMAND,id:"data-validation.command.updateDataValidationSetting",handler(r,e){if(!e)return!1;const a=r.get(n.ICommandService),t=r.get(n.IUndoRedoService),i=r.get(s.DataValidationModel),{unitId:o,subUnitId:d,ruleId:l,options:c}=e,u=i.getRuleById(o,d,l);if(!u)return!1;const p={unitId:o,subUnitId:d,ruleId:l,payload:{type:m.OPTIONS,payload:c}},g=[{id:E.id,params:p}],D={unitId:o,subUnitId:d,ruleId:l,payload:{type:m.OPTIONS,payload:I(u)}},y=[{id:E.id,params:D}];return t.pushUndoRedo({unitID:o,redoMutations:g,undoMutations:y}),a.executeCommand(E.id,p),!0}},b={type:n.CommandType.COMMAND,id:"data-validation.command.updateDataValidationOptions",handler(r,e){if(!e)return!1;const a=r.get(n.ICommandService),t=r.get(n.IUndoRedoService),i=r.get(s.DataValidationModel),o=r.get(S),{unitId:d,subUnitId:l,ruleId:c,setting:u}=e,p=o.getValidatorItem(u.type);if(!p)return!1;const g=i.getRuleById(d,l,c);if(!g||!p.validatorFormula({...g,...u},d,l).success)return!1;const D={unitId:d,subUnitId:l,ruleId:c,payload:{type:m.SETTING,payload:u}},y=[{id:E.id,params:D}],ha={unitId:d,subUnitId:l,ruleId:c,payload:{type:m.SETTING,payload:M(g)}},pa=[{id:E.id,params:ha}];return t.pushUndoRedo({unitID:d,redoMutations:y,undoMutations:pa}),a.executeCommand(E.id,D),!0}},P={type:n.CommandType.COMMAND,id:"data-validation.command.removeAll",handler(r,e){if(!e)return!1;const{unitId:a,subUnitId:t}=e,i=r.get(n.ICommandService),o=r.get(s.DataValidationModel),d=r.get(n.IUndoRedoService),l=[...o.getRules(a,t)],c={unitId:a,subUnitId:t,ruleId:l.map(g=>g.uid)},u=[{id:v.id,params:c}],p=[{id:V.id,params:{unitId:a,subUnitId:t,rule:l}}];return d.pushUndoRedo({redoMutations:u,undoMutations:p,unitID:a}),i.executeCommand(v.id,c),!0}};var z=Object.defineProperty,K=Object.getOwnPropertyDescriptor,X=(r,e,a,t)=>{for(var i=t>1?void 0:t?K(e,a):e,o=r.length-1,d;o>=0;o--)(d=r[o])&&(i=(t?d(e,a,i):d(i))||i);return t&&i&&z(e,a,i),i},R=(r,e)=>(a,t)=>e(a,t,r);const Y="SHEET_DATA_VALIDATION_PLUGIN";s.DataValidationResourceController=class extends n.Disposable{constructor(e,a,t){super(),this._resourceManagerService=e,this._univerInstanceService=a,this._dataValidationModel=t,this._initSnapshot()}_initSnapshot(){const e=t=>{const i=this._dataValidationModel.getUnitRules(t),o={};return i?(i.forEach(([d,l])=>{o[d]=l}),JSON.stringify(o)):""},a=t=>{if(!t)return{};try{return JSON.parse(t)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:Y,businesses:[n.UniverInstanceType.UNIVER_SHEET],toJson:t=>e(t),parseJson:t=>a(t),onUnLoad:t=>{this._dataValidationModel.deleteUnitRules(t)},onLoad:(t,i)=>{Object.keys(i).forEach(o=>{i[o].forEach(l=>{this._dataValidationModel.addRule(t,o,l)})})}}))}},s.DataValidationResourceController=X([n.OnLifecycle(n.LifecycleStages.Ready,s.DataValidationResourceController),R(0,n.IResourceManagerService),R(1,n.IUniverInstanceService),R(2,_.Inject(s.DataValidationModel))],s.DataValidationResourceController);var Z=Object.defineProperty,x=Object.getOwnPropertyDescriptor,k=(r,e,a,t)=>{for(var i=t>1?void 0:t?x(e,a):e,o=r.length-1,d;o>=0;o--)(d=r[o])&&(i=(t?d(e,a,i):d(i))||i);return t&&i&&Z(e,a,i),i},A=(r,e)=>(a,t)=>e(a,t,r);s.DataValidationSheetController=class extends n.Disposable{constructor(e,a,t){super(),this._sheetInterceptorService=e,this._univerInstanceService=a,this._dataValidationModel=t,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===T.RemoveSheetCommand.id){const a=e.params,t=a.unitId||this._univerInstanceService.getCurrentUnitForType(n.UniverInstanceType.UNIVER_SHEET).getUnitId(),i=this._univerInstanceService.getUniverSheetInstance(t);if(!i)return{redos:[],undos:[]};const o=a.subUnitId||i.getActiveSheet().getSheetId(),d=this._dataValidationModel.ensureManager(t,o);if(!d)return{redos:[],undos:[]};const l=d.getDataValidations(),c=l.map(g=>g.uid),u={unitId:t,subUnitId:o,ruleId:c},p={unitId:t,subUnitId:o,rule:l};return{redos:[{id:v.id,params:u}],undos:[{id:V.id,params:p}]}}return{redos:[],undos:[]}}}))}},s.DataValidationSheetController=k([n.OnLifecycle(n.LifecycleStages.Ready,s.DataValidationSheetController),A(0,_.Inject(T.SheetInterceptorService)),A(1,_.Inject(n.IUniverInstanceService)),A(2,_.Inject(s.DataValidationModel))],s.DataValidationSheetController);var aa=Object.defineProperty,ta=Object.getOwnPropertyDescriptor,ea=(r,e,a,t)=>{for(var i=t>1?void 0:t?ta(e,a):e,o=r.length-1,d;o>=0;o--)(d=r[o])&&(i=(t?d(e,a,i):d(i))||i);return t&&i&&aa(e,a,i),i},B=(r,e)=>(a,t)=>e(a,t,r);const ia="UNIVER_DATA_VALIDATION_PLUGIN";s.UniverDataValidationPlugin=(f=class extends n.Plugin{constructor(e,a,t){super(),this._injector=a,this._commandService=t}onStarting(e){[[s.DataValidationModel],[S],[s.DataValidationResourceController],[s.DataValidationSheetController]].forEach(a=>{e.add(a)}),[C,P,w,b,L,V,E,v].forEach(a=>{this._commandService.registerCommand(a)})}},h(f,"pluginName",ia),h(f,"type",n.UniverInstanceType.UNIVER_SHEET),f),s.UniverDataValidationPlugin=ea([B(1,_.Inject(_.Injector)),B(2,n.ICommandService)],s.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 na={[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"},ra={[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"},oa={[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"};var da=Object.defineProperty,sa=Object.getOwnPropertyDescriptor,la=(r,e,a,t)=>{for(var i=t>1?void 0:t?sa(e,a):e,o=r.length-1,d;o>=0;o--)(d=r[o])&&(i=(t?d(e,a,i):d(i))||i);return t&&i&&da(e,a,i),i},$=(r,e)=>(a,t)=>e(a,t,r);const q="{FORMULA1}",j="{FORMULA2}",ua={[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"};s.BaseDataValidator=class{constructor(e,a){h(this,"canvasRender",null);h(this,"dropdown");h(this,"optionsInput");this.localeService=e,this.injector=a}get operatorNames(){return this.operators.map(e=>this.localeService.t(ua[e]))}get titleStr(){return this.localeService.t(this.title)}skipDefaultFontRender(e,a,t){return!1}generateRuleName(e){var t,i;if(!e.operator)return this.titleStr;const a=this.localeService.t(na[e.operator]).replace(q,(t=e.formula1)!=null?t:"").replace(j,(i=e.formula2)!=null?i:"");return`${this.titleStr} ${a}`}generateRuleErrorMessage(e){var t,i;return e.operator?`${this.localeService.t(ra[e.operator]).replace(q,(t=e.formula1)!=null?t:"").replace(j,(i=e.formula2)!=null?i:"")}`:this.titleStr}getRuleFinalError(e){return e.showInputMessage&&e.error?e.error:this.generateRuleErrorMessage(e)}isEmptyCellValue(e){return e===""||e===void 0||e===null}async isValidType(e,a,t){return!0}transform(e,a,t){return e}async validatorIsEqual(e,a,t){return!0}async validatorIsNotEqual(e,a,t){return!0}async validatorIsBetween(e,a,t){return!0}async validatorIsNotBetween(e,a,t){return!0}async validatorIsGreaterThan(e,a,t){return!0}async validatorIsGreaterThanOrEqual(e,a,t){return!0}async validatorIsLessThan(e,a,t){return!0}async validatorIsLessThanOrEqual(e,a,t){return!0}async validator(e,a){const{value:t,unitId:i,subUnitId:o}=e,d=this.isEmptyCellValue(t),{allowBlank:l=!0,operator:c}=a;if(d)return l;const u=await this.parseFormula(a,i,o);if(!await this.isValidType(e,u,a))return!1;if(!n.Tools.isDefine(c))return!0;const p=this.transform(e,u,a);switch(c){case n.DataValidationOperator.BETWEEN:return this.validatorIsBetween(p,u,a);case n.DataValidationOperator.EQUAL:return this.validatorIsEqual(p,u,a);case n.DataValidationOperator.GREATER_THAN:return this.validatorIsGreaterThan(p,u,a);case n.DataValidationOperator.GREATER_THAN_OR_EQUAL:return this.validatorIsGreaterThanOrEqual(p,u,a);case n.DataValidationOperator.LESS_THAN:return this.validatorIsLessThan(p,u,a);case n.DataValidationOperator.LESS_THAN_OR_EQUAL:return this.validatorIsLessThanOrEqual(p,u,a);case n.DataValidationOperator.NOT_BETWEEN:return this.validatorIsNotBetween(p,u,a);case n.DataValidationOperator.NOT_EQUAL:return this.validatorIsNotEqual(p,u,a);default:throw new Error("Unknown operator.")}}},s.BaseDataValidator=la([$(0,_.Inject(n.LocaleService)),$(1,_.Inject(_.Injector))],s.BaseDataValidator);const ca=[n.DataValidationOperator.BETWEEN,n.DataValidationOperator.NOT_BETWEEN];s.AddDataValidationCommand=C,s.AddDataValidationMutation=V,s.DataValidationManager=U,s.DataValidatorRegistryScope=N,s.DataValidatorRegistryService=S,s.RemoveAllDataValidationCommand=P,s.RemoveDataValidationCommand=L,s.RemoveDataValidationMutation=v,s.TWO_FORMULA_OPERATOR_COUNT=ca,s.TextLengthErrorTitleMap=oa,s.UpdateDataValidationMutation=E,s.UpdateDataValidationOptionsCommand=w,s.UpdateDataValidationSettingCommand=b,s.UpdateRuleType=m,s.createDefaultNewRule=H,s.getRuleOptions=I,s.getRuleSetting=M,s.removeDataValidationUndoFactory=J,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/data-validation",
3
- "version": "0.1.13",
3
+ "version": "0.1.15",
4
4
  "private": false,
5
5
  "description": "Data validation library for Univer",
6
6
  "author": "DreamNum <developer@univer.ai>",
@@ -49,29 +49,43 @@
49
49
  "lib"
50
50
  ],
51
51
  "peerDependencies": {
52
- "@wendellhu/redi": "0.15.2",
52
+ "@wendellhu/redi": "0.15.4",
53
53
  "rxjs": ">=7.0.0",
54
- "@univerjs/core": "0.1.13",
55
- "@univerjs/sheets": "0.1.13"
54
+ "@univerjs/sheets": "0.1.15",
55
+ "@univerjs/core": "0.1.15"
56
56
  },
57
57
  "dependencies": {
58
- "@univerjs/protocol": "^0.1.34"
58
+ "@univerjs/protocol": "0.1.38-alpha.3"
59
59
  },
60
60
  "devDependencies": {
61
- "@wendellhu/redi": "0.15.2",
61
+ "@wendellhu/redi": "0.15.4",
62
62
  "rxjs": "^7.8.1",
63
63
  "typescript": "^5.4.5",
64
- "vite": "^5.2.12",
64
+ "vite": "^5.2.13",
65
65
  "vitest": "^1.6.0",
66
- "@univerjs/core": "0.1.13",
67
- "@univerjs/shared": "0.1.13",
68
- "@univerjs/sheets": "0.1.13"
66
+ "@univerjs/core": "0.1.15",
67
+ "@univerjs/sheets": "0.1.15",
68
+ "@univerjs/shared": "0.1.15"
69
+ },
70
+ "univerSpace": {
71
+ ".": {
72
+ "import": "./lib/es/index.js",
73
+ "require": "./lib/cjs/index.js",
74
+ "types": "./lib/types/index.d.ts"
75
+ },
76
+ "./*": {
77
+ "import": "./lib/es/*",
78
+ "require": "./lib/cjs/*",
79
+ "types": "./lib/types/index.d.ts"
80
+ },
81
+ "./lib/*": "./lib/*"
69
82
  },
70
83
  "scripts": {
71
84
  "dev": "vite",
72
85
  "test": "vitest run",
73
86
  "test:watch": "vitest",
74
87
  "coverage": "vitest run --coverage",
75
- "build": "tsc && vite build"
88
+ "build": "tsc && vite build",
89
+ "sync:cnpm": "cnpm sync"
76
90
  }
77
91
  }