@univerjs/data-validation 0.6.10-nightly.202504161609 → 0.6.10

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/umd/index.js CHANGED
@@ -1 +1 @@
1
- (function(l,r){typeof exports=="object"&&typeof module<"u"?r(exports,require("@univerjs/core"),require("rxjs")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","rxjs"],r):(l=typeof globalThis<"u"?globalThis:l||self,r(l.UniverDataValidation={},l.UniverCore,l.rxjs))})(this,function(l,r,g){"use strict";var na=Object.defineProperty;var oa=(l,r,g)=>r in l?na(l,r,{enumerable:!0,configurable:!0,writable:!0,value:g}):l[r]=g;var c=(l,r,g)=>oa(l,typeof r!="symbol"?r+"":r,g);var T;function D(n){return{type:n.type,operator:n.operator,formula1:n.formula1,formula2:n.formula2,allowBlank:n.allowBlank}}function N(n){return{error:n.error,errorStyle:n.errorStyle,errorTitle:n.errorTitle,imeMode:n.imeMode,prompt:n.prompt,promptTitle:n.promptTitle,showDropDown:n.showDropDown,showErrorMessage:n.showErrorMessage,showInputMessage:n.showInputMessage,renderMode:n.renderMode,bizInfo:n.bizInfo}}var h=(n=>(n[n.SETTING=0]="SETTING",n[n.RANGE=1]="RANGE",n[n.OPTIONS=2]="OPTIONS",n[n.ALL=3]="ALL",n))(h||{}),w=Object.getOwnPropertyDescriptor,b=(n,a,i,e)=>{for(var t=e>1?void 0:e?w(a,i):a,o=n.length-1,d;o>=0;o--)(d=n[o])&&(t=d(t)||t);return t},B=(n,a)=>(i,e)=>a(i,e,n);l.DataValidationModel=class extends r.Disposable{constructor(i){super();c(this,"_model",new Map);c(this,"_ruleChange$",new g.Subject);c(this,"ruleChange$",this._ruleChange$.asObservable());c(this,"ruleChangeDebounce$",this.ruleChange$.pipe(g.debounceTime(20)));this._logService=i,this.disposeWithMe({dispose:()=>{this._ruleChange$.complete()}})}_ensureMap(i,e){this._model.has(i)||this._model.set(i,new Map);const t=this._model.get(i);if(t.has(e))return t.get(e);const o={map:new Map,list:[]};return t.set(e,o),o}_addSubUnitRule(i,e,t){const{map:o,list:d}=i,p=(Array.isArray(e)?e:[e]).filter(u=>!o.has(u.uid));typeof t=="number"&&t<d.length?d.splice(t,0,...p):d.push(...p),p.forEach(u=>{o.set(u.uid,u)})}_removeSubUnitRule(i,e){const{map:t,list:o}=i,d=o.findIndex(s=>s.uid===e);d>-1&&(o.splice(d,1),t.delete(e))}_updateSubUnitRule(i,e,t){const{map:o,list:d}=i,s=o.get(e),p=d.findIndex(m=>e===m.uid);if(!s)throw new Error(`Data validation rule is not found, ruleId: ${e}.`);const u={...s};switch(t.type){case h.RANGE:{u.ranges=t.payload;break}case h.SETTING:{Object.assign(u,D(t.payload));break}case h.OPTIONS:{Object.assign(u,N(t.payload));break}case h.ALL:{Object.assign(u,t.payload);break}}return d[p]=u,o.set(e,u),u}_addRuleSideEffect(i,e,t,o){if(!this._ensureMap(i,e).map.get(t.uid))return{rule:t,type:"add",unitId:i,subUnitId:e,source:o}}addRule(i,e,t,o,d){try{const s=this._ensureMap(i,e),u=(Array.isArray(t)?t:[t]).map(m=>this._addRuleSideEffect(i,e,m,o));this._addSubUnitRule(s,t,d),u.forEach(m=>{m&&this._ruleChange$.next(m)})}catch(s){this._logService.error(s)}}updateRule(i,e,t,o,d){try{const s=this._ensureMap(i,e),p=r.Tools.deepClone(s.map.get(t));if(!p)throw new Error(`Data validation rule is not found, ruleId: ${t}.`);const u=this._updateSubUnitRule(s,t,o);this._ruleChange$.next({rule:u,type:"update",unitId:i,subUnitId:e,source:d,updatePayload:o,oldRule:p})}catch(s){this._logService.error(s)}}removeRule(i,e,t,o){try{const d=this._ensureMap(i,e),s=d.map.get(t);s&&(this._removeSubUnitRule(d,t),this._ruleChange$.next({rule:s,type:"remove",unitId:i,subUnitId:e,source:o}))}catch(d){this._logService.error(d)}}getRuleById(i,e,t){return this._ensureMap(i,e).map.get(t)}getRuleIndex(i,e,t){return this._ensureMap(i,e).list.findIndex(d=>d.uid===t)}getRules(i,e){return[...this._ensureMap(i,e).list]}getUnitRules(i){const e=this._model.get(i);if(!e)return[];const t=[];return e.forEach((o,d)=>{t.push([d,o.list])}),t}deleteUnitRules(i){this._model.delete(i)}getSubUnitIds(i){var e,t;return Array.from((t=(e=this._model.get(i))==null?void 0:e.keys())!=null?t:[])}getAll(){return Array.from(this._model.keys()).map(i=>[i,this.getUnitRules(i)])}},l.DataValidationModel=b([B(0,r.ILogService)],l.DataValidationModel);var P=Object.getOwnPropertyDescriptor,q=(n,a,i,e)=>{for(var t=e>1?void 0:e?P(a,i):a,o=n.length-1,d;o>=0;o--)(d=n[o])&&(t=d(t)||t);return t},M=(n,a)=>(i,e)=>a(i,e,n);const G="SHEET_DATA_VALIDATION_PLUGIN";l.DataValidationResourceController=class extends r.Disposable{constructor(a,i,e){super(),this._resourceManagerService=a,this._univerInstanceService=i,this._dataValidationModel=e,this._initSnapshot()}_initSnapshot(){const a=e=>{const t=this._dataValidationModel.getUnitRules(e),o={};return t?(t.forEach(([d,s])=>{o[d]=s}),JSON.stringify(o)):""},i=e=>{if(!e)return{};try{return JSON.parse(e)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:G,businesses:[r.UniverInstanceType.UNIVER_SHEET],toJson:e=>a(e),parseJson:e=>i(e),onUnLoad:e=>{this._dataValidationModel.deleteUnitRules(e)},onLoad:(e,t)=>{Object.keys(t).forEach(o=>{t[o].forEach(s=>{this._dataValidationModel.addRule(e,o,s,"patched")})})}}))}},l.DataValidationResourceController=q([M(0,r.IResourceManagerService),M(1,r.IUniverInstanceService),M(2,r.Inject(l.DataValidationModel))],l.DataValidationResourceController);var I=(n=>(n.SHEET="sheet",n))(I||{});class R{constructor(){c(this,"_validatorByScopes",new Map);c(this,"_validatorMap",new Map);c(this,"_validatorsChange$",new g.BehaviorSubject(void 0));c(this,"validatorsChange$",this._validatorsChange$.asObservable())}_addValidatorToScope(a,i){this._validatorByScopes.has(i)||this._validatorByScopes.set(i,[]);const e=this._validatorByScopes.get(i);if(e.findIndex(t=>t.id===a.id)>-1)throw new Error(`Validator item with the same id ${a.id} has already been added!`);e.push(a)}_removeValidatorFromScope(a,i){const e=this._validatorByScopes.get(i);if(!e)return;const t=e.findIndex(o=>o.id===a.id);t>-1&&e.splice(t,1)}register(a){return this._validatorMap.set(a.id,a),Array.isArray(a.scopes)?a.scopes.forEach(i=>{this._addValidatorToScope(a,i)}):this._addValidatorToScope(a,a.scopes),this._validatorsChange$.next(),r.toDisposable(()=>{this._validatorMap.delete(a.id),Array.isArray(a.scopes)?a.scopes.forEach(i=>{this._removeValidatorFromScope(a,i)}):this._removeValidatorFromScope(a,a.scopes),this._validatorsChange$.next()})}getValidatorItem(a){return this._validatorMap.get(a)}getValidatorsByScope(a){return this._validatorByScopes.get(a)}}const O={type:r.CommandType.MUTATION,id:"data-validation.mutation.addRule",handler(n,a){if(!a)return!1;const{unitId:i,subUnitId:e,rule:t,index:o,source:d="command"}=a;return n.get(l.DataValidationModel).addRule(i,e,t,d,o),!0}},v={type:r.CommandType.MUTATION,id:"data-validation.mutation.removeRule",handler(n,a){if(!a)return!1;const{unitId:i,subUnitId:e,ruleId:t,source:o="command"}=a,d=n.get(l.DataValidationModel);return Array.isArray(t)?t.forEach(s=>{d.removeRule(i,e,s,o)}):d.removeRule(i,e,t,o),!0}},_={type:r.CommandType.MUTATION,id:"data-validation.mutation.updateRule",handler(n,a){if(!a)return!1;const{unitId:i,subUnitId:e,ruleId:t,payload:o,source:d="command"}=a;return n.get(l.DataValidationModel).updateRule(i,e,t,o,d),!0}},j={type:r.CommandType.COMMAND,id:"data-validation.command.addRule",async handler(n,a){if(n.get(r.ILogService).error("[Deprecated]: `AddDataValidationCommand` is deprecated, please use `AddSheetDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const{rule:e,unitId:t,subUnitId:o}=a,d=n.get(r.ICommandService),s=n.get(r.IUndoRedoService),p={...a,rule:{...a.rule,ranges:[a.rule.range]}},u=[{id:O.id,params:p}],m=[{id:v.id,params:{unitId:t,subUnitId:o,ruleId:e.uid}}];return s.pushUndoRedo({unitID:t,redoMutations:u,undoMutations:m}),await d.executeCommand(O.id,p),!0}},$={type:r.CommandType.COMMAND,id:"data-validation.command.removeRule",handler(n,a){if(n.get(r.ILogService).error("[Deprecated]: `RemoveDataValidationCommand` is deprecated, please use `RemoveSheetDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const{unitId:e,subUnitId:t,ruleId:o}=a,d=n.get(r.ICommandService),s=n.get(r.IUndoRedoService),p=n.get(l.DataValidationModel),u=[{id:v.id,params:a}],m=[{id:O.id,params:{unitId:e,subUnitId:t,rule:{...p.getRuleById(e,t,o)},index:p.getRuleIndex(e,t,o)}}];return s.pushUndoRedo({undoMutations:m,redoMutations:u,unitID:a.unitId}),d.executeCommand(v.id,a),!0}},H={type:r.CommandType.COMMAND,id:"data-validation.command.updateDataValidationSetting",handler(n,a){if(n.get(r.ILogService).warn("[Deprecated]: `UpdateDataValidationOptionsCommand` is deprecated, please use `UpdateSheetDataValidationOptionsCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const e=n.get(r.ICommandService),t=n.get(r.IUndoRedoService),o=n.get(l.DataValidationModel),{unitId:d,subUnitId:s,ruleId:p,options:u}=a,m=o.getRuleById(d,s,p);if(!m)return!1;const V={unitId:d,subUnitId:s,ruleId:p,payload:{type:h.OPTIONS,payload:u}},E=[{id:_.id,params:V}],f={unitId:d,subUnitId:s,ruleId:p,payload:{type:h.OPTIONS,payload:N(m)}},S=[{id:_.id,params:f}];return t.pushUndoRedo({unitID:d,redoMutations:E,undoMutations:S}),e.executeCommand(_.id,V),!0}},Q={type:r.CommandType.COMMAND,id:"data-validation.command.updateDataValidationOptions",handler(n,a){if(n.get(r.ILogService).error("[Deprecated]: `UpdateDataValidationSettingCommand` is deprecated, please use `UpdateSheetDataValidationSettingCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const e=n.get(r.ICommandService),t=n.get(r.IUndoRedoService),o=n.get(l.DataValidationModel),d=n.get(R),{unitId:s,subUnitId:p,ruleId:u,setting:m}=a,V=d.getValidatorItem(m.type);if(!V)return!1;const E=o.getRuleById(s,p,u);if(!E)return!1;const f={...E,...m};if(!V.validatorFormula(f,s,p).success)return!1;const S={unitId:s,subUnitId:p,ruleId:u,payload:{type:h.SETTING,payload:{...m,...V.normalizeFormula(f,s,p)}}},ea=[{id:_.id,params:S}],ia={unitId:s,subUnitId:p,ruleId:u,payload:{type:h.SETTING,payload:D(E)}},ra=[{id:_.id,params:ia}];return t.pushUndoRedo({unitID:s,redoMutations:ea,undoMutations:ra}),e.executeCommand(_.id,S),!0}},F={type:r.CommandType.COMMAND,id:"data-validation.command.removeAll",handler(n,a){if(n.get(r.ILogService).error("[Deprecated]: `RemoveAllDataValidationCommand` is deprecated, please use `RemoveSheetAllDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const{unitId:e,subUnitId:t}=a,o=n.get(r.ICommandService),d=n.get(l.DataValidationModel),s=n.get(r.IUndoRedoService),p=[...d.getRules(e,t)],u={unitId:e,subUnitId:t,ruleId:p.map(E=>E.uid)},m=[{id:v.id,params:u}],V=[{id:O.id,params:{unitId:e,subUnitId:t,rule:p}}];return s.pushUndoRedo({redoMutations:m,undoMutations:V,unitID:e}),o.executeCommand(v.id,u),!0}},W="data-validation.config",y={};var k=Object.getOwnPropertyDescriptor,x=(n,a,i,e)=>{for(var t=e>1?void 0:e?k(a,i):a,o=n.length-1,d;o>=0;o--)(d=n[o])&&(t=d(t)||t);return t},A=(n,a)=>(i,e)=>a(i,e,n);const J="UNIVER_DATA_VALIDATION_PLUGIN";l.UniverDataValidationPlugin=(T=class extends r.Plugin{constructor(a=y,i,e,t){super(),this._config=a,this._injector=i,this._commandService=e,this._configService=t;const{...o}=r.merge({},y,this._config);this._configService.setConfig(W,o)}onStarting(){[[l.DataValidationModel],[R],[l.DataValidationResourceController]].forEach(a=>this._injector.add(a)),[j,F,H,Q,$,O,_,v].forEach(a=>{this._commandService.registerCommand(a)})}onReady(){this._injector.get(l.DataValidationResourceController)}},c(T,"pluginName",J),c(T,"type",r.UniverInstanceType.UNIVER_SHEET),T),l.UniverDataValidationPlugin=x([A(1,r.Inject(r.Injector)),A(2,r.ICommandService),A(3,r.IConfigService)],l.UniverDataValidationPlugin),r.DataValidationOperator.BETWEEN+"",r.DataValidationOperator.EQUAL+"",r.DataValidationOperator.GREATER_THAN+"",r.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",r.DataValidationOperator.LESS_THAN+"",r.DataValidationOperator.LESS_THAN_OR_EQUAL+"",r.DataValidationOperator.NOT_BETWEEN+"",r.DataValidationOperator.NOT_EQUAL+"";const z={[r.DataValidationOperator.BETWEEN]:"dataValidation.ruleName.between",[r.DataValidationOperator.EQUAL]:"dataValidation.ruleName.equal",[r.DataValidationOperator.GREATER_THAN]:"dataValidation.ruleName.greaterThan",[r.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.ruleName.greaterThanOrEqual",[r.DataValidationOperator.LESS_THAN]:"dataValidation.ruleName.lessThan",[r.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.ruleName.lessThanOrEqual",[r.DataValidationOperator.NOT_BETWEEN]:"dataValidation.ruleName.notBetween",[r.DataValidationOperator.NOT_EQUAL]:"dataValidation.ruleName.notEqual"},K={[r.DataValidationOperator.BETWEEN]:"dataValidation.errorMsg.between",[r.DataValidationOperator.EQUAL]:"dataValidation.errorMsg.equal",[r.DataValidationOperator.GREATER_THAN]:"dataValidation.errorMsg.greaterThan",[r.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.errorMsg.greaterThanOrEqual",[r.DataValidationOperator.LESS_THAN]:"dataValidation.errorMsg.lessThan",[r.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.errorMsg.lessThanOrEqual",[r.DataValidationOperator.NOT_BETWEEN]:"dataValidation.errorMsg.notBetween",[r.DataValidationOperator.NOT_EQUAL]:"dataValidation.errorMsg.notEqual"},Y={[r.DataValidationOperator.BETWEEN]:"dataValidation.textLength.errorMsg.between",[r.DataValidationOperator.EQUAL]:"dataValidation.textLength.errorMsg.equal",[r.DataValidationOperator.GREATER_THAN]:"dataValidation.textLength.errorMsg.greaterThan",[r.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.greaterThanOrEqual",[r.DataValidationOperator.LESS_THAN]:"dataValidation.textLength.errorMsg.lessThan",[r.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.lessThanOrEqual",[r.DataValidationOperator.NOT_BETWEEN]:"dataValidation.textLength.errorMsg.notBetween",[r.DataValidationOperator.NOT_EQUAL]:"dataValidation.textLength.errorMsg.notEqual"},X=[r.DataValidationOperator.BETWEEN,r.DataValidationOperator.NOT_BETWEEN];var Z=Object.getOwnPropertyDescriptor,aa=(n,a,i,e)=>{for(var t=e>1?void 0:e?Z(a,i):a,o=n.length-1,d;o>=0;o--)(d=n[o])&&(t=d(t)||t);return t},U=(n,a)=>(i,e)=>a(i,e,n);const L="{FORMULA1}",C="{FORMULA2}",ta={[r.DataValidationOperator.BETWEEN]:"dataValidation.operators.between",[r.DataValidationOperator.EQUAL]:"dataValidation.operators.equal",[r.DataValidationOperator.GREATER_THAN]:"dataValidation.operators.greaterThan",[r.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.operators.greaterThanOrEqual",[r.DataValidationOperator.LESS_THAN]:"dataValidation.operators.lessThan",[r.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.operators.lessThanOrEqual",[r.DataValidationOperator.NOT_BETWEEN]:"dataValidation.operators.notBetween",[r.DataValidationOperator.NOT_EQUAL]:"dataValidation.operators.notEqual"};l.BaseDataValidator=class{constructor(a,i){c(this,"offsetFormulaByRange",!0);c(this,"formulaInput");c(this,"canvasRender",null);c(this,"dropdown");c(this,"optionsInput");c(this,"skipDefaultFontRender");this.localeService=a,this.injector=i}get operatorNames(){return this.operators.map(a=>this.localeService.t(ta[a]))}get titleStr(){return this.localeService.t(this.title)}generateRuleName(a){var e,t;if(!a.operator)return this.titleStr;const i=this.localeService.t(z[a.operator]).replace(L,(e=a.formula1)!=null?e:"").replace(C,(t=a.formula2)!=null?t:"");return`${this.titleStr} ${i}`}generateRuleErrorMessage(a,i){var t,o;return a.operator?`${this.localeService.t(K[a.operator]).replace(L,(t=a.formula1)!=null?t:"").replace(C,(o=a.formula2)!=null?o:"")}`:this.titleStr}getExtraStyle(a,i,e,t,o){}getRuleFinalError(a,i){return a.showErrorMessage&&a.error?a.error:this.generateRuleErrorMessage(a,i)}isEmptyCellValue(a){return a===""||a===void 0||a===null}normalizeFormula(a,i,e){return{formula1:a.formula1,formula2:a.formula2}}async isValidType(a,i,e){return!0}transform(a,i,e){return a}async validatorIsEqual(a,i,e){const{formula1:t}=i,{value:o}=a;return Number.isNaN(t)?!0:o===t}async validatorIsNotEqual(a,i,e){const{formula1:t}=i;return Number.isNaN(t)?!0:a.value!==t}async validatorIsBetween(a,i,e){const{formula1:t,formula2:o}=i;if(Number.isNaN(t)||Number.isNaN(o))return!0;const d=Math.min(t,o),s=Math.max(t,o);return a.value>=d&&a.value<=s}async validatorIsNotBetween(a,i,e){const{formula1:t,formula2:o}=i;if(Number.isNaN(t)||Number.isNaN(o))return!0;const d=Math.min(t,o),s=Math.max(t,o);return a.value<d||a.value>s}async validatorIsGreaterThan(a,i,e){const{formula1:t}=i;return Number.isNaN(t)?!0:a.value>t}async validatorIsGreaterThanOrEqual(a,i,e){const{formula1:t}=i;return Number.isNaN(t)?!0:a.value>=t}async validatorIsLessThan(a,i,e){const{formula1:t}=i;return Number.isNaN(t)?!0:a.value<t}async validatorIsLessThanOrEqual(a,i,e){const{formula1:t}=i;return Number.isNaN(t)?!0:a.value<=t}async validator(a,i){const{value:e,unitId:t,subUnitId:o}=a,d=this.isEmptyCellValue(e),{allowBlank:s=!0,operator:p}=i;if(d)return s;const u=await this.parseFormula(i,t,o,a.row,a.column);if(!u.isFormulaValid||!await this.isValidType(a,u,i))return!1;if(!r.Tools.isDefine(p))return!0;const m=this.transform(a,u,i);switch(p){case r.DataValidationOperator.BETWEEN:return this.validatorIsBetween(m,u,i);case r.DataValidationOperator.EQUAL:return this.validatorIsEqual(m,u,i);case r.DataValidationOperator.GREATER_THAN:return this.validatorIsGreaterThan(m,u,i);case r.DataValidationOperator.GREATER_THAN_OR_EQUAL:return this.validatorIsGreaterThanOrEqual(m,u,i);case r.DataValidationOperator.LESS_THAN:return this.validatorIsLessThan(m,u,i);case r.DataValidationOperator.LESS_THAN_OR_EQUAL:return this.validatorIsLessThanOrEqual(m,u,i);case r.DataValidationOperator.NOT_BETWEEN:return this.validatorIsNotBetween(m,u,i);case r.DataValidationOperator.NOT_EQUAL:return this.validatorIsNotEqual(m,u,i);default:throw new Error("Unknown operator.")}}},l.BaseDataValidator=aa([U(0,r.Inject(r.LocaleService)),U(1,r.Inject(r.Injector))],l.BaseDataValidator),l.AddDataValidationMutation=O,l.DataValidatorRegistryScope=I,l.DataValidatorRegistryService=R,l.RemoveDataValidationMutation=v,l.TWO_FORMULA_OPERATOR_COUNT=X,l.TextLengthErrorTitleMap=Y,l.UpdateDataValidationMutation=_,l.UpdateRuleType=h,l.getRuleOptions=N,l.getRuleSetting=D,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})});
1
+ (function(s,r){typeof exports=="object"&&typeof module<"u"?r(exports,require("@univerjs/core"),require("rxjs")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","rxjs"],r):(s=typeof globalThis<"u"?globalThis:s||self,r(s.UniverDataValidation={},s.UniverCore,s.rxjs))})(this,function(s,r,g){"use strict";var da=Object.defineProperty;var sa=(s,r,g)=>r in s?da(s,r,{enumerable:!0,configurable:!0,writable:!0,value:g}):s[r]=g;var p=(s,r,g)=>sa(s,typeof r!="symbol"?r+"":r,g);var T;function N(n){return{type:n.type,operator:n.operator,formula1:n.formula1,formula2:n.formula2,allowBlank:n.allowBlank}}function M(n){return{error:n.error,errorStyle:n.errorStyle,errorTitle:n.errorTitle,imeMode:n.imeMode,prompt:n.prompt,promptTitle:n.promptTitle,showDropDown:n.showDropDown,showErrorMessage:n.showErrorMessage,showInputMessage:n.showInputMessage,renderMode:n.renderMode,bizInfo:n.bizInfo}}var h=(n=>(n[n.SETTING=0]="SETTING",n[n.RANGE=1]="RANGE",n[n.OPTIONS=2]="OPTIONS",n[n.ALL=3]="ALL",n))(h||{}),q=Object.getOwnPropertyDescriptor,G=(n,a,i,e)=>{for(var t=e>1?void 0:e?q(a,i):a,o=n.length-1,d;o>=0;o--)(d=n[o])&&(t=d(t)||t);return t},j=(n,a)=>(i,e)=>a(i,e,n);s.DataValidationModel=class extends r.Disposable{constructor(i){super();p(this,"_model",new Map);p(this,"_ruleChange$",new g.Subject);p(this,"ruleChange$",this._ruleChange$.asObservable());p(this,"ruleChangeDebounce$",this.ruleChange$.pipe(g.debounceTime(20)));this._logService=i,this.disposeWithMe({dispose:()=>{this._ruleChange$.complete()}})}_ensureMap(i,e){this._model.has(i)||this._model.set(i,new Map);const t=this._model.get(i);if(t.has(e))return t.get(e);const o={map:new Map,list:[]};return t.set(e,o),o}_addSubUnitRule(i,e,t){const{map:o,list:d}=i,c=(Array.isArray(e)?e:[e]).filter(u=>!o.has(u.uid));typeof t=="number"&&t<d.length?d.splice(t,0,...c):d.push(...c),c.forEach(u=>{o.set(u.uid,u)})}_removeSubUnitRule(i,e){const{map:t,list:o}=i,d=o.findIndex(l=>l.uid===e);d>-1&&(o.splice(d,1),t.delete(e))}_updateSubUnitRule(i,e,t){const{map:o,list:d}=i,l=o.get(e),c=d.findIndex(m=>e===m.uid);if(!l)throw new Error(`Data validation rule is not found, ruleId: ${e}.`);const u={...l};switch(t.type){case h.RANGE:{u.ranges=t.payload;break}case h.SETTING:{Object.assign(u,N(t.payload));break}case h.OPTIONS:{Object.assign(u,M(t.payload));break}case h.ALL:{Object.assign(u,t.payload);break}}return d[c]=u,o.set(e,u),u}_addRuleSideEffect(i,e,t,o){if(!this._ensureMap(i,e).map.get(t.uid))return{rule:t,type:"add",unitId:i,subUnitId:e,source:o}}addRule(i,e,t,o,d){try{const l=this._ensureMap(i,e),u=(Array.isArray(t)?t:[t]).map(m=>this._addRuleSideEffect(i,e,m,o));this._addSubUnitRule(l,t,d),u.forEach(m=>{m&&this._ruleChange$.next(m)})}catch(l){this._logService.error(l)}}updateRule(i,e,t,o,d){try{const l=this._ensureMap(i,e),c=r.Tools.deepClone(l.map.get(t));if(!c)throw new Error(`Data validation rule is not found, ruleId: ${t}.`);const u=this._updateSubUnitRule(l,t,o);this._ruleChange$.next({rule:u,type:"update",unitId:i,subUnitId:e,source:d,updatePayload:o,oldRule:c})}catch(l){this._logService.error(l)}}removeRule(i,e,t,o){try{const d=this._ensureMap(i,e),l=d.map.get(t);l&&(this._removeSubUnitRule(d,t),this._ruleChange$.next({rule:l,type:"remove",unitId:i,subUnitId:e,source:o}))}catch(d){this._logService.error(d)}}getRuleById(i,e,t){return this._ensureMap(i,e).map.get(t)}getRuleIndex(i,e,t){return this._ensureMap(i,e).list.findIndex(d=>d.uid===t)}getRules(i,e){return[...this._ensureMap(i,e).list]}getUnitRules(i){const e=this._model.get(i);if(!e)return[];const t=[];return e.forEach((o,d)=>{t.push([d,o.list])}),t}deleteUnitRules(i){this._model.delete(i)}getSubUnitIds(i){var e,t;return Array.from((t=(e=this._model.get(i))==null?void 0:e.keys())!=null?t:[])}getAll(){return Array.from(this._model.keys()).map(i=>[i,this.getUnitRules(i)])}},s.DataValidationModel=G([j(0,r.ILogService)],s.DataValidationModel);var $=Object.getOwnPropertyDescriptor,H=(n,a,i,e)=>{for(var t=e>1?void 0:e?$(a,i):a,o=n.length-1,d;o>=0;o--)(d=n[o])&&(t=d(t)||t);return t},D=(n,a)=>(i,e)=>a(i,e,n);const Q="SHEET_DATA_VALIDATION_PLUGIN";s.DataValidationResourceController=class extends r.Disposable{constructor(a,i,e){super(),this._resourceManagerService=a,this._univerInstanceService=i,this._dataValidationModel=e,this._initSnapshot()}_initSnapshot(){const a=e=>{const t=this._dataValidationModel.getUnitRules(e),o={};return t?(t.forEach(([d,l])=>{o[d]=l}),JSON.stringify(o)):""},i=e=>{if(!e)return{};try{return JSON.parse(e)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:Q,businesses:[r.UniverInstanceType.UNIVER_SHEET],toJson:e=>a(e),parseJson:e=>i(e),onUnLoad:e=>{this._dataValidationModel.deleteUnitRules(e)},onLoad:(e,t)=>{Object.keys(t).forEach(o=>{t[o].forEach(l=>{this._dataValidationModel.addRule(e,o,l,"patched")})})}}))}},s.DataValidationResourceController=H([D(0,r.IResourceManagerService),D(1,r.IUniverInstanceService),D(2,r.Inject(s.DataValidationModel))],s.DataValidationResourceController);var L=(n=>(n.SHEET="sheet",n))(L||{});class R{constructor(){p(this,"_validatorByScopes",new Map);p(this,"_validatorMap",new Map);p(this,"_validatorsChange$",new g.BehaviorSubject(void 0));p(this,"validatorsChange$",this._validatorsChange$.asObservable())}_addValidatorToScope(a,i){this._validatorByScopes.has(i)||this._validatorByScopes.set(i,[]);const e=this._validatorByScopes.get(i);if(e.findIndex(t=>t.id===a.id)>-1)throw new Error(`Validator item with the same id ${a.id} has already been added!`);e.push(a)}_removeValidatorFromScope(a,i){const e=this._validatorByScopes.get(i);if(!e)return;const t=e.findIndex(o=>o.id===a.id);t>-1&&e.splice(t,1)}register(a){return this._validatorMap.set(a.id,a),Array.isArray(a.scopes)?a.scopes.forEach(i=>{this._addValidatorToScope(a,i)}):this._addValidatorToScope(a,a.scopes),this._validatorsChange$.next(),r.toDisposable(()=>{this._validatorMap.delete(a.id),Array.isArray(a.scopes)?a.scopes.forEach(i=>{this._removeValidatorFromScope(a,i)}):this._removeValidatorFromScope(a,a.scopes),this._validatorsChange$.next()})}getValidatorItem(a){return this._validatorMap.get(a)}getValidatorsByScope(a){return this._validatorByScopes.get(a)}}const O={type:r.CommandType.MUTATION,id:"data-validation.mutation.addRule",handler(n,a){if(!a)return!1;const{unitId:i,subUnitId:e,rule:t,index:o,source:d="command"}=a;return n.get(s.DataValidationModel).addRule(i,e,t,d,o),!0}},v={type:r.CommandType.MUTATION,id:"data-validation.mutation.removeRule",handler(n,a){if(!a)return!1;const{unitId:i,subUnitId:e,ruleId:t,source:o="command"}=a,d=n.get(s.DataValidationModel);return Array.isArray(t)?t.forEach(l=>{d.removeRule(i,e,l,o)}):d.removeRule(i,e,t,o),!0}},E={type:r.CommandType.MUTATION,id:"data-validation.mutation.updateRule",handler(n,a){if(!a)return!1;const{unitId:i,subUnitId:e,ruleId:t,payload:o,source:d="command"}=a;return n.get(s.DataValidationModel).updateRule(i,e,t,o,d),!0}},F={type:r.CommandType.COMMAND,id:"data-validation.command.addRule",async handler(n,a){if(n.get(r.ILogService).error("[Deprecated]: `AddDataValidationCommand` is deprecated, please use `AddSheetDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const{rule:e,unitId:t,subUnitId:o}=a,d=n.get(r.ICommandService),l=n.get(r.IUndoRedoService),c={...a,rule:{...a.rule,ranges:[a.rule.range]}},u=[{id:O.id,params:c}],m=[{id:v.id,params:{unitId:t,subUnitId:o,ruleId:e.uid}}];return l.pushUndoRedo({unitID:t,redoMutations:u,undoMutations:m}),await d.executeCommand(O.id,c),!0}},W={type:r.CommandType.COMMAND,id:"data-validation.command.removeRule",handler(n,a){if(n.get(r.ILogService).error("[Deprecated]: `RemoveDataValidationCommand` is deprecated, please use `RemoveSheetDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const{unitId:e,subUnitId:t,ruleId:o}=a,d=n.get(r.ICommandService),l=n.get(r.IUndoRedoService),c=n.get(s.DataValidationModel),u=[{id:v.id,params:a}],m=[{id:O.id,params:{unitId:e,subUnitId:t,rule:{...c.getRuleById(e,t,o)},index:c.getRuleIndex(e,t,o)}}];return l.pushUndoRedo({undoMutations:m,redoMutations:u,unitID:a.unitId}),d.executeCommand(v.id,a),!0}},k={type:r.CommandType.COMMAND,id:"data-validation.command.updateDataValidationSetting",handler(n,a){if(n.get(r.ILogService).warn("[Deprecated]: `UpdateDataValidationOptionsCommand` is deprecated, please use `UpdateSheetDataValidationOptionsCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const e=n.get(r.ICommandService),t=n.get(r.IUndoRedoService),o=n.get(s.DataValidationModel),{unitId:d,subUnitId:l,ruleId:c,options:u}=a,m=o.getRuleById(d,l,c);if(!m)return!1;const _={unitId:d,subUnitId:l,ruleId:c,payload:{type:h.OPTIONS,payload:u}},V=[{id:E.id,params:_}],S={unitId:d,subUnitId:l,ruleId:c,payload:{type:h.OPTIONS,payload:M(m)}},f=[{id:E.id,params:S}];return t.pushUndoRedo({unitID:d,redoMutations:V,undoMutations:f}),e.executeCommand(E.id,_),!0}},J={type:r.CommandType.COMMAND,id:"data-validation.command.updateDataValidationOptions",handler(n,a){if(n.get(r.ILogService).error("[Deprecated]: `UpdateDataValidationSettingCommand` is deprecated, please use `UpdateSheetDataValidationSettingCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const e=n.get(r.ICommandService),t=n.get(r.IUndoRedoService),o=n.get(s.DataValidationModel),d=n.get(R),{unitId:l,subUnitId:c,ruleId:u,setting:m}=a,_=d.getValidatorItem(m.type);if(!_)return!1;const V=o.getRuleById(l,c,u);if(!V)return!1;const S={...V,...m};if(!_.validatorFormula(S,l,c).success)return!1;const f={unitId:l,subUnitId:c,ruleId:u,payload:{type:h.SETTING,payload:{...m,..._.normalizeFormula(S,l,c)}}},ra=[{id:E.id,params:f}],na={unitId:l,subUnitId:c,ruleId:u,payload:{type:h.SETTING,payload:N(V)}},oa=[{id:E.id,params:na}];return t.pushUndoRedo({unitID:l,redoMutations:ra,undoMutations:oa}),e.executeCommand(E.id,f),!0}},x={type:r.CommandType.COMMAND,id:"data-validation.command.removeAll",handler(n,a){if(n.get(r.ILogService).error("[Deprecated]: `RemoveAllDataValidationCommand` is deprecated, please use `RemoveSheetAllDataValidationCommand` in `@univerjs/sheets-data-validation` instead!"),!a)return!1;const{unitId:e,subUnitId:t}=a,o=n.get(r.ICommandService),d=n.get(s.DataValidationModel),l=n.get(r.IUndoRedoService),c=[...d.getRules(e,t)],u={unitId:e,subUnitId:t,ruleId:c.map(V=>V.uid)},m=[{id:v.id,params:u}],_=[{id:O.id,params:{unitId:e,subUnitId:t,rule:c}}];return l.pushUndoRedo({redoMutations:m,undoMutations:_,unitID:e}),o.executeCommand(v.id,u),!0}},z="data-validation.config",C={};var Y=Object.getOwnPropertyDescriptor,K=(n,a,i,e)=>{for(var t=e>1?void 0:e?Y(a,i):a,o=n.length-1,d;o>=0;o--)(d=n[o])&&(t=d(t)||t);return t},A=(n,a)=>(i,e)=>a(i,e,n);const X="UNIVER_DATA_VALIDATION_PLUGIN";s.UniverDataValidationPlugin=(T=class extends r.Plugin{constructor(a=C,i,e,t){super(),this._config=a,this._injector=i,this._commandService=e,this._configService=t;const{...o}=r.merge({},C,this._config);this._configService.setConfig(z,o)}onStarting(){[[s.DataValidationModel],[R],[s.DataValidationResourceController]].forEach(a=>this._injector.add(a)),[F,x,k,J,W,O,E,v].forEach(a=>{this._commandService.registerCommand(a)})}onReady(){this._injector.get(s.DataValidationResourceController)}},p(T,"pluginName",X),p(T,"type",r.UniverInstanceType.UNIVER_SHEET),T),s.UniverDataValidationPlugin=K([A(1,r.Inject(r.Injector)),A(2,r.ICommandService),A(3,r.IConfigService)],s.UniverDataValidationPlugin),r.DataValidationOperator.BETWEEN+"",r.DataValidationOperator.EQUAL+"",r.DataValidationOperator.GREATER_THAN+"",r.DataValidationOperator.GREATER_THAN_OR_EQUAL+"",r.DataValidationOperator.LESS_THAN+"",r.DataValidationOperator.LESS_THAN_OR_EQUAL+"",r.DataValidationOperator.NOT_BETWEEN+"",r.DataValidationOperator.NOT_EQUAL+"";const b={[r.DataValidationOperator.BETWEEN]:"dataValidation.ruleName.between",[r.DataValidationOperator.EQUAL]:"dataValidation.ruleName.equal",[r.DataValidationOperator.GREATER_THAN]:"dataValidation.ruleName.greaterThan",[r.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.ruleName.greaterThanOrEqual",[r.DataValidationOperator.LESS_THAN]:"dataValidation.ruleName.lessThan",[r.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.ruleName.lessThanOrEqual",[r.DataValidationOperator.NOT_BETWEEN]:"dataValidation.ruleName.notBetween",[r.DataValidationOperator.NOT_EQUAL]:"dataValidation.ruleName.notEqual",NONE:"dataValidation.ruleName.legal"},w={[r.DataValidationOperator.BETWEEN]:"dataValidation.errorMsg.between",[r.DataValidationOperator.EQUAL]:"dataValidation.errorMsg.equal",[r.DataValidationOperator.GREATER_THAN]:"dataValidation.errorMsg.greaterThan",[r.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.errorMsg.greaterThanOrEqual",[r.DataValidationOperator.LESS_THAN]:"dataValidation.errorMsg.lessThan",[r.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.errorMsg.lessThanOrEqual",[r.DataValidationOperator.NOT_BETWEEN]:"dataValidation.errorMsg.notBetween",[r.DataValidationOperator.NOT_EQUAL]:"dataValidation.errorMsg.notEqual",NONE:"dataValidation.errorMsg.legal"},Z={[r.DataValidationOperator.BETWEEN]:"dataValidation.textLength.errorMsg.between",[r.DataValidationOperator.EQUAL]:"dataValidation.textLength.errorMsg.equal",[r.DataValidationOperator.GREATER_THAN]:"dataValidation.textLength.errorMsg.greaterThan",[r.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.greaterThanOrEqual",[r.DataValidationOperator.LESS_THAN]:"dataValidation.textLength.errorMsg.lessThan",[r.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.textLength.errorMsg.lessThanOrEqual",[r.DataValidationOperator.NOT_BETWEEN]:"dataValidation.textLength.errorMsg.notBetween",[r.DataValidationOperator.NOT_EQUAL]:"dataValidation.textLength.errorMsg.notEqual"},aa=[r.DataValidationOperator.BETWEEN,r.DataValidationOperator.NOT_BETWEEN];var ta=Object.getOwnPropertyDescriptor,ea=(n,a,i,e)=>{for(var t=e>1?void 0:e?ta(a,i):a,o=n.length-1,d;o>=0;o--)(d=n[o])&&(t=d(t)||t);return t},B=(n,a)=>(i,e)=>a(i,e,n);const I="{FORMULA1}",y="{FORMULA2}",U="{TYPE}",ia={[r.DataValidationOperator.BETWEEN]:"dataValidation.operators.between",[r.DataValidationOperator.EQUAL]:"dataValidation.operators.equal",[r.DataValidationOperator.GREATER_THAN]:"dataValidation.operators.greaterThan",[r.DataValidationOperator.GREATER_THAN_OR_EQUAL]:"dataValidation.operators.greaterThanOrEqual",[r.DataValidationOperator.LESS_THAN]:"dataValidation.operators.lessThan",[r.DataValidationOperator.LESS_THAN_OR_EQUAL]:"dataValidation.operators.lessThanOrEqual",[r.DataValidationOperator.NOT_BETWEEN]:"dataValidation.operators.notBetween",[r.DataValidationOperator.NOT_EQUAL]:"dataValidation.operators.notEqual"};var P=(n=>(n.DATE="date",n.TIME="time",n.DATETIME="datetime",n.LIST="list",n.MULTIPLE_LIST="multipleList",n.COLOR="color",n.CASCADE="cascade",n))(P||{});s.BaseDataValidator=class{constructor(a,i){p(this,"offsetFormulaByRange",!0);p(this,"formulaInput");p(this,"canvasRender",null);p(this,"dropdownType");p(this,"optionsInput");p(this,"skipDefaultFontRender");this.localeService=a,this.injector=i}get operatorNames(){return this.operators.map(a=>this.localeService.t(ia[a]))}get titleStr(){return this.localeService.t(this.title)}generateRuleName(a){var e,t;if(!a.operator)return this.localeService.t(b.NONE).replace(U,this.titleStr);const i=this.localeService.t(b[a.operator]).replace(I,(e=a.formula1)!=null?e:"").replace(y,(t=a.formula2)!=null?t:"");return`${this.titleStr} ${i}`}generateRuleErrorMessage(a,i){var t,o;return a.operator?`${this.localeService.t(w[a.operator]).replace(I,(t=a.formula1)!=null?t:"").replace(y,(o=a.formula2)!=null?o:"")}`:this.localeService.t(w.NONE).replace(U,this.titleStr)}getExtraStyle(a,i,e,t,o){}getRuleFinalError(a,i){return a.showErrorMessage&&a.error?a.error:this.generateRuleErrorMessage(a,i)}isEmptyCellValue(a){return a===""||a===void 0||a===null}normalizeFormula(a,i,e){return{formula1:a.formula1,formula2:a.formula2}}async isValidType(a,i,e){return!0}transform(a,i,e){return a}async validatorIsEqual(a,i,e){const{formula1:t}=i,{value:o}=a;return Number.isNaN(t)?!0:o===t}async validatorIsNotEqual(a,i,e){const{formula1:t}=i;return Number.isNaN(t)?!0:a.value!==t}async validatorIsBetween(a,i,e){const{formula1:t,formula2:o}=i;if(Number.isNaN(t)||Number.isNaN(o))return!0;const d=Math.min(t,o),l=Math.max(t,o);return a.value>=d&&a.value<=l}async validatorIsNotBetween(a,i,e){const{formula1:t,formula2:o}=i;if(Number.isNaN(t)||Number.isNaN(o))return!0;const d=Math.min(t,o),l=Math.max(t,o);return a.value<d||a.value>l}async validatorIsGreaterThan(a,i,e){const{formula1:t}=i;return Number.isNaN(t)?!0:a.value>t}async validatorIsGreaterThanOrEqual(a,i,e){const{formula1:t}=i;return Number.isNaN(t)?!0:a.value>=t}async validatorIsLessThan(a,i,e){const{formula1:t}=i;return Number.isNaN(t)?!0:a.value<t}async validatorIsLessThanOrEqual(a,i,e){const{formula1:t}=i;return Number.isNaN(t)?!0:a.value<=t}async validator(a,i){const{value:e,unitId:t,subUnitId:o}=a,d=this.isEmptyCellValue(e),{allowBlank:l=!0,operator:c}=i;if(d)return l;const u=await this.parseFormula(i,t,o,a.row,a.column);if(!u.isFormulaValid||!await this.isValidType(a,u,i))return!1;if(!c)return!0;const m=this.transform(a,u,i);switch(c){case r.DataValidationOperator.BETWEEN:return this.validatorIsBetween(m,u,i);case r.DataValidationOperator.EQUAL:return this.validatorIsEqual(m,u,i);case r.DataValidationOperator.GREATER_THAN:return this.validatorIsGreaterThan(m,u,i);case r.DataValidationOperator.GREATER_THAN_OR_EQUAL:return this.validatorIsGreaterThanOrEqual(m,u,i);case r.DataValidationOperator.LESS_THAN:return this.validatorIsLessThan(m,u,i);case r.DataValidationOperator.LESS_THAN_OR_EQUAL:return this.validatorIsLessThanOrEqual(m,u,i);case r.DataValidationOperator.NOT_BETWEEN:return this.validatorIsNotBetween(m,u,i);case r.DataValidationOperator.NOT_EQUAL:return this.validatorIsNotEqual(m,u,i);default:throw new Error("Unknown operator.")}}},s.BaseDataValidator=ea([B(0,r.Inject(r.LocaleService)),B(1,r.Inject(r.Injector))],s.BaseDataValidator),s.AddDataValidationMutation=O,s.DataValidatorDropdownType=P,s.DataValidatorRegistryScope=L,s.DataValidatorRegistryService=R,s.FORMULA1=I,s.FORMULA2=y,s.RemoveDataValidationMutation=v,s.TWO_FORMULA_OPERATOR_COUNT=aa,s.TYPE=U,s.TextLengthErrorTitleMap=Z,s.UpdateDataValidationMutation=E,s.UpdateRuleType=h,s.getRuleOptions=M,s.getRuleSetting=N,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.6.10-nightly.202504161609",
3
+ "version": "0.6.10",
4
4
  "private": false,
5
5
  "description": "Data validation library for Univer",
6
6
  "author": "DreamNum <developer@univer.ai>",
@@ -48,7 +48,7 @@
48
48
  "rxjs": ">=7.0.0"
49
49
  },
50
50
  "dependencies": {
51
- "@univerjs/core": "0.6.10-nightly.202504161609"
51
+ "@univerjs/core": "0.6.10"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@univerjs/protocol": "0.1.45",
@@ -56,9 +56,9 @@
56
56
  "typescript": "^5.8.3",
57
57
  "vite": "^6.3.0",
58
58
  "vitest": "^3.1.1",
59
- "@univerjs/core": "0.6.10-nightly.202504161609",
60
- "@univerjs-infra/shared": "0.6.10-alpha.0",
61
- "@univerjs/sheets": "0.6.10-nightly.202504161609"
59
+ "@univerjs/core": "0.6.10",
60
+ "@univerjs-infra/shared": "0.6.10",
61
+ "@univerjs/sheets": "0.6.10"
62
62
  },
63
63
  "scripts": {
64
64
  "dev": "vite",