@univerjs/sheets-numfmt 0.6.0-nightly.202502161605 → 0.6.0-nightly.202502181606

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 Y=Object.defineProperty;var Z=(e,t,s)=>t in e?Y(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var T=(e,t,s)=>Z(e,typeof t!="symbol"?t+"":t,s);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("@univerjs/core"),m=require("@univerjs/sheets"),j=require("@univerjs/engine-numfmt"),I=require("rxjs"),J=require("@univerjs/engine-formula"),x=["$","£","¥","¤","֏","؋","৳","฿","₡","₦","₩","₪","₫","€","₭","₮","₱","₲","₴","₸","₹","₺","₼","₽","₾","₿"],A={US:"$",CA:"C$",GB:"£",JP:"¥",IN:"₹",AU:"A$",CN:"¥",KR:"₩",RU:"₽",AT:"€",BE:"€",CY:"€",EE:"€",FI:"€",FR:"€",DE:"€",GR:"€",IE:"€",IT:"€",LV:"€",LT:"€",LU:"€",MT:"€",NL:"€",PT:"€",SK:"€",SI:"€",ES:"€"},F=[{label:"1930-08-05",suffix:"yyyy-MM-dd"},{label:"1930/08/05",suffix:"yyyy/MM/dd"},{label:"1930年08月05日",suffix:'yyyy"年"MM"月"dd"日"'},{label:"08-05",suffix:"MM-dd"},{label:"8月5日",suffix:'M"月"d"日"'},{label:"13:30:30",suffix:"h:mm:ss"},{label:"13:30",suffix:"h:mm"},{label:"下午01:30",suffix:"A/P hh:mm"},{label:"下午1:30",suffix:"A/P h:mm"},{label:"下午1:30:30",suffix:"A/P h:mm:ss"},{label:"08-05 下午 01:30",suffix:"MM-dd A/P hh:mm"}],L=[{label:"(1,235)",suffix:"#,##0_);(#,##0)"},{label:"(1,235) ",suffix:"#,##0_);[Red](#,##0)",color:"red"},{label:"1,234.56",suffix:"#,##0.00_);#,##0.00"},{label:"1,234.56",suffix:"#,##0.00_);[Red]#,##0.00",color:"red"},{label:"-1,234.56",suffix:"#,##0.00_);-#,##0.00"},{label:"-1,234.56",suffix:"#,##0.00_);[Red]-#,##0.00",color:"red"}],U=[{label:e=>`${e}1,235`,suffix:e=>`"${e}"#,##0.00_);"${e}"#,##0.00`},{label:e=>`${e}1,235`,suffix:e=>`"${e}"#,##0.00_);[Red]"${e}"#,##0.00`,color:"red"},{label:e=>`(${e}1,235)`,suffix:e=>`"${e}"#,##0.00_);("${e}"#,##0.00)`},{label:e=>`(${e}1,235)`,suffix:e=>`"${e}"#,##0.00_);[Red]("${e}"#,##0.00)`,color:"red"},{label:e=>`-${e}1,235`,suffix:e=>`"${e}"#,##0.00_);-"${e}"#,##0.00`},{label:e=>`-${e}1,235`,suffix:e=>`"${e}"#,##0.00_);[Red]-"${e}"#,##0.00`,color:"red"}],Q="SHEET_NUMFMT_PLUGIN",E=(e,t=0)=>{var r;return e&&(r=n.numfmt.getInfo(e).maxDecimals)!=null?r:t},k=(e,t)=>{if(e&&!t||!e&&t)return!1;const s=i=>i.reduce((S,C)=>{if(S.isEnd)return S;const p=C.value||C.num;return C.type==="point"?(S.isEnd=!0,S):{...S,result:S.result+p}},{isEnd:!1,result:""}).result,r=n.numfmt.getInfo(e)._partitions,o=n.numfmt.getInfo(t)._partitions,a=s(r[0].tokens),c=s(o[0].tokens),h=s(r[1].tokens),f=s(o[1].tokens);return a===c&&h===f&&r[1].color===o[1].color},O=e=>new Array(Math.min(Math.max(0,Number(e)),30)).fill(0).join(""),P=(e,t)=>e.split(";").map(r=>/\.0?/.test(r)?r.replace(/\.0*/g,`${t>0?".":""}${O(Number(t||0))}`):/0([^0]?)|0$/.test(r)?r.replace(/0([^0]+)|0$/,`0${t>0?".":""}${O(Number(t||0))}$1`):r).join(";"),ee=e=>/\.0?/.test(e)||/0([^0]?)|0$/.test(e),N={id:"sheet.command.numfmt.set.numfmt",type:n.CommandType.COMMAND,handler:(e,t)=>{if(!t)return!1;const s=e.get(n.ICommandService),r=e.get(n.IUniverInstanceService),o=e.get(n.IUndoRedoService),a=m.getSheetCommandTarget(r,t);if(!a)return!1;const{unitId:c,subUnitId:h,worksheet:f}=a,i=t.values.filter(u=>!!u.pattern),S=t.values.filter(u=>!u.pattern),C=m.transformCellsToRange(c,h,i),p={unitId:c,subUnitId:h,ranges:S.map(u=>({startColumn:u.col,startRow:u.row,endColumn:u.col,endRow:u.row}))},M=[],v=[];if(i.length){const u=i.reduce((g,l)=>{l.pattern===j.DEFAULT_TEXT_FORMAT&&g.setValue(l.row,l.col,{t:n.CellValueType.STRING});const _=f.getCellRaw(l.row,l.col);if(_){const $=m.checkCellValueType(_.v);$!==_.t&&g.setValue(l.row,l.col,{t:$})}return g},new n.ObjectMatrix).getMatrix(),y=new n.ObjectMatrix;new n.ObjectMatrix(u).forValue((g,l)=>{const _=f.getCellRaw(g,l);_?y.setValue(g,l,{t:_.t}):y.setValue(g,l,{t:void 0})}),Object.keys(C.values).forEach(g=>{const l=C.values[g];l.ranges=m.rangeMerge(l.ranges)}),M.push({id:m.SetNumfmtMutation.id,params:C});const b=m.factorySetNumfmtUndoMutation(e,C);v.push(...b)}if(S.length){p.ranges=m.rangeMerge(p.ranges);const u=S.reduce((g,l)=>{const _=f.getCellRaw(l.row,l.col);if(_){const $=m.checkCellValueType(_.v);$!==_.t&&g.setValue(l.row,l.col,{t:$})}return g},new n.ObjectMatrix).getMatrix(),y=new n.ObjectMatrix;new n.ObjectMatrix(u).forValue((g,l)=>{const _=f.getCellRaw(g,l);_?y.setValue(g,l,{t:_.t}):y.setValue(g,l,{t:void 0})}),M.push({id:m.RemoveNumfmtMutation.id,params:p},{id:m.SetRangeValuesMutation.id,params:{unitId:c,subUnitId:h,cellValue:u}});const b=m.factoryRemoveNumfmtUndoMutation(e,p);v.push({id:m.SetRangeValuesMutation.id,params:{unitId:c,subUnitId:h,cellValue:y.getMatrix()}},...b)}const d=n.sequenceExecute(M,s).result;return d&&o.pushUndoRedo({unitID:c,undoMutations:v,redoMutations:M}),d}},B={id:"sheet.command.numfmt.add.decimal.command",type:n.CommandType.COMMAND,handler:async e=>{const t=e.get(n.ICommandService),s=e.get(m.SheetsSelectionsService),r=e.get(m.INumfmtService),o=e.get(n.IUniverInstanceService),a=s.getCurrentSelections();if(!a||!a.length)return!1;const c=m.getSheetCommandTarget(o);if(!c)return!1;const{unitId:h,subUnitId:f}=c;let i=0;a.forEach(M=>{n.Range.foreach(M.range,(v,d)=>{const u=r.getValue(h,f,v,d);if(!u){const b=c.worksheet.getCellRaw(v,d);if(!i&&b&&b.t===n.CellValueType.NUMBER&&b.v){const g=/\.(\d*)$/.exec(String(b.v));if(g){const l=g[1].length;if(!l)return;i=Math.max(i,l)}}return}const y=E(u.pattern);i=y>i?y:i})});const S=i+1,C=P(`0${S>0?".0":""}`,S),p=[];return a.forEach(M=>{n.Range.foreach(M.range,(v,d)=>{const u=r.getValue(h,f,v,d);if(!u)p.push({row:v,col:d,pattern:C});else{const y=E(u.pattern),b=P(u.pattern,y+1);b!==u.pattern&&p.push({row:v,col:d,pattern:b})}})}),p.length?await t.executeCommand(N.id,{values:p}):!1}};class V{constructor(){T(this,"_currencySymbol$",new I.BehaviorSubject("US"));T(this,"currencySymbol$",this._currencySymbol$.asObservable())}setCurrencySymbolByCountryCode(t){this._currencySymbol$.next(t)}getCurrencySymbol(){return this._currencySymbol$.getValue()}}const G={id:"sheet.command.numfmt.set.currency",type:n.CommandType.COMMAND,handler:async e=>{const t=e.get(n.ICommandService),s=e.get(m.SheetsSelectionsService),r=e.get(V),o=A[r.getCurrencySymbol()]||"$",a=s.getCurrentSelections();if(!a||!a.length)return!1;const c=[],h=U[4].suffix(o);return a.forEach(i=>{n.Range.foreach(i.range,(S,C)=>{c.push({row:S,col:C,pattern:h,type:"currency"})})}),await t.executeCommand(N.id,{values:c})}},W={id:"sheet.command.numfmt.set.percent",type:n.CommandType.COMMAND,handler:async e=>{const t=e.get(n.ICommandService),r=e.get(m.SheetsSelectionsService).getCurrentSelections();if(!r||!r.length)return!1;const o=[],a="0%";return r.forEach(h=>{n.Range.foreach(h.range,(f,i)=>{o.push({row:f,col:i,pattern:a,type:"percent"})})}),await t.executeCommand(N.id,{values:o})}},q={id:"sheet.command.numfmt.subtract.decimal.command",type:n.CommandType.COMMAND,handler:async e=>{const t=e.get(n.ICommandService),s=e.get(m.SheetsSelectionsService),r=e.get(m.INumfmtService),o=e.get(n.IUniverInstanceService),a=s.getCurrentSelections();if(!a||!a.length)return!1;const c=m.getSheetCommandTarget(o);if(!c)return!1;const{unitId:h,subUnitId:f}=c;let i=0;a.forEach(v=>{n.Range.foreach(v.range,(d,u)=>{const y=r.getValue(h,f,d,u);if(!y){const g=c.worksheet.getCellRaw(d,u);if(!i&&g&&g.t===n.CellValueType.NUMBER&&g.v){const l=/\.(\d*)$/.exec(String(g.v));if(l){const _=l[1].length;if(!_)return;i=Math.max(i,_)}}return}const b=E(y.pattern);i=b>i?b:i})});const S=i-1,C=P(`0${S>0?".0":"."}`,S),p=[];return a.forEach(v=>{n.Range.foreach(v.range,(d,u)=>{const y=r.getValue(h,f,d,u);if(!y)p.push({row:d,col:u,pattern:C});else{const b=E(y.pattern);p.push({row:d,col:u,pattern:P(y.pattern,b-1)})}})}),await t.executeCommand(N.id,{values:p})}},te=e=>n.numfmt.getInfo(e).type||"unknown",H=(e,t,s="en")=>{const o=n.numfmt.getInfo(e)._partitions[1],a=n.numfmt.format(e,t,{locale:s,throws:!1});return t<0?{result:a,color:o.color}:{result:a}},z=(e,t,s)=>e==="General"?{result:String(J.stripErrorMargin(t))}:H(e,t,s);var ne=Object.defineProperty,re=Object.getOwnPropertyDescriptor,se=(e,t,s,r)=>{for(var o=r>1?void 0:r?re(t,s):t,a=e.length-1,c;a>=0;a--)(c=e[a])&&(o=(r?c(t,s,o):c(o))||o);return r&&o&&ne(t,s,o),o},R=(e,t)=>(s,r)=>t(s,r,e);const oe={tl:{size:6,color:"#409f11"}};exports.SheetsNumfmtCellContentController=class extends n.Disposable{constructor(s,r,o,a,c,h){super();T(this,"_local$",new I.BehaviorSubject("en"));T(this,"local$",this._local$.asObservable());this._instanceService=s,this._sheetInterceptorService=r,this._themeService=o,this._commandService=a,this._numfmtService=c,this._localeService=h,this._initInterceptorCellContent()}get local(){const s=this._local$.getValue();if(s)return s;switch(this._localeService.getCurrentLocale()){case n.LocaleType.FR_FR:return"fr";case n.LocaleType.RU_RU:return"ru";case n.LocaleType.VI_VN:return"vi";case n.LocaleType.ZH_CN:return"zh-CN";case n.LocaleType.ZH_TW:return"zh-TW";case n.LocaleType.EN_US:case n.LocaleType.FA_IR:default:return"en"}}_initInterceptorCellContent(){const s=new n.ObjectMatrix;this.disposeWithMe(I.merge(this._local$,this._localeService.currentLocale$).subscribe(()=>{s.reset()})),this.disposeWithMe(this._sheetInterceptorService.intercept(m.INTERCEPTOR_POINT.CELL_CONTENT,{effect:n.InterceptorEffectEnum.Value|n.InterceptorEffectEnum.Style,handler:(r,o,a)=>{const c=o.unitId,h=o.subUnitId;let f;const i=r;if(!i)return a(r);if(r!=null&&r.s){const d=o.workbook.getStyles().get(r.s);d!=null&&d.n&&(f=d.n)}if(f||(f=this._numfmtService.getValue(c,h,o.row,o.col)),!f||m.checkCellValueType(i.v)!==n.CellValueType.NUMBER)return a(r);if(f.pattern===j.DEFAULT_TEXT_FORMAT)return a({...r,t:n.CellValueType.STRING,markers:{...r==null?void 0:r.markers,...oe}});let C="";const p=s.getValue(o.row,o.col);if(p&&p.parameters===`${i.v}_${f.pattern}`)return a({...r,...p.result});const M=z(f.pattern,Number(i.v),this.local);if(C=M.result,!C)return a(r);const v={v:C,t:n.CellValueType.NUMBER};if(M.color){const d=this._themeService.getCurrentTheme()[`${M.color}500`];d&&(v.interceptorStyle={cl:{rgb:d}})}return s.setValue(o.row,o.col,{result:v,parameters:`${i.v}_${f.pattern}`}),a({...r,...v})},priority:m.InterceptCellContentPriority.NUMFMT})),this.disposeWithMe(this._commandService.onCommandExecuted(r=>{if(r.id===m.SetNumfmtMutation.id){const o=r.params;Object.keys(o.values).forEach(a=>{o.values[a].ranges.forEach(h=>{n.Range.foreach(h,(f,i)=>{s.realDeleteValue(f,i)})})})}else if(r.id===m.SetRangeValuesMutation.id){const o=r.params;new n.ObjectMatrix(o.cellValue).forValue((a,c)=>{s.realDeleteValue(a,c)})}})),this.disposeWithMe(this._instanceService.getCurrentTypeOfUnit$(n.UniverInstanceType.UNIVER_SHEET).pipe(I.switchMap(r=>{var o;return(o=r==null?void 0:r.activeSheet$)!=null?o:I.of(null)}),I.skip(1)).subscribe(()=>s.reset()))}setNumfmtLocal(s){this._local$.next(s)}};exports.SheetsNumfmtCellContentController=se([R(0,n.IUniverInstanceService),R(1,n.Inject(m.SheetInterceptorService)),R(2,n.Inject(n.ThemeService)),R(3,n.Inject(n.ICommandService)),R(4,n.Inject(m.INumfmtService)),R(5,n.Inject(n.LocaleService))],exports.SheetsNumfmtCellContentController);class D extends n.Disposable{constructor(){super(...arguments);T(this,"_currencySymbol$",new I.BehaviorSubject("US"));T(this,"currencySymbol$",this._currencySymbol$.asObservable())}setCurrencySymbolByCountryCode(s){this._currencySymbol$.next(s)}getCurrencySymbol(){return this._currencySymbol$.getValue()}}var K=Object.defineProperty,ae=Object.getOwnPropertyDescriptor,ce=(e,t,s)=>t in e?K(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,ie=(e,t,s,r)=>{for(var o=r>1?void 0:r?ae(t,s):t,a=e.length-1,c;a>=0;a--)(c=e[a])&&(o=(r?c(t,s,o):c(o))||o);return r&&o&&K(t,s,o),o},w=(e,t)=>(s,r)=>t(s,r,e),X=(e,t,s)=>ce(e,typeof t!="symbol"?t+"":t,s);exports.UniverSheetsNumfmtPlugin=class extends n.Plugin{constructor(t=void 0,s,r){super(),this._config=t,this._injector=s,this._commandService=r}onStarting(){n.registerDependencies(this._injector,[[exports.SheetsNumfmtCellContentController],[V],[D]]),n.touchDependencies(this._injector,[[exports.SheetsNumfmtCellContentController]])}onRendered(){n.touchDependencies(this._injector,[[D]]),[B,q,G,W,N].forEach(t=>{this.disposeWithMe(this._commandService.registerCommand(t))})}};X(exports.UniverSheetsNumfmtPlugin,"pluginName",Q);X(exports.UniverSheetsNumfmtPlugin,"type",n.UniverInstanceType.UNIVER_SHEET);exports.UniverSheetsNumfmtPlugin=ie([n.DependentOn(m.UniverSheetsPlugin),w(1,n.Inject(n.Injector)),w(2,n.ICommandService)],exports.UniverSheetsNumfmtPlugin);const le=e=>x.find(s=>e.includes(s)),ue=()=>x.map(e=>({label:e,value:e})),me=e=>U.map(t=>({label:t.label(e),value:t.suffix(e),color:t.color})),fe=()=>F.map(e=>({label:e.label,value:e.suffix})),de=()=>L.map(e=>({label:e.label,value:e.suffix,color:e.color}));exports.AddDecimalCommand=B;exports.CURRENCYFORMAT=U;exports.DATEFMTLISG=F;exports.MenuCurrencyService=V;exports.NUMBERFORMAT=L;exports.SetCurrencyCommand=G;exports.SetNumfmtCommand=N;exports.SetPercentCommand=W;exports.SubtractDecimalCommand=q;exports.countryCurrencyMap=A;exports.currencySymbols=x;exports.getCurrencyFormatOptions=me;exports.getCurrencyOptions=ue;exports.getCurrencyType=le;exports.getDateFormatOptions=fe;exports.getDecimalFromPattern=E;exports.getDecimalString=O;exports.getNumberFormatOptions=de;exports.getPatternPreview=H;exports.getPatternPreviewIgnoreGeneral=z;exports.getPatternType=te;exports.isPatternEqualWithoutDecimal=k;exports.isPatternHasDecimal=ee;exports.setPatternDecimal=P;
1
+ "use strict";var Z=Object.defineProperty;var J=(e,t,s)=>t in e?Z(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var T=(e,t,s)=>J(e,typeof t!="symbol"?t+"":t,s);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("@univerjs/core"),m=require("@univerjs/sheets"),j=require("@univerjs/engine-numfmt"),I=require("rxjs"),X=require("@univerjs/engine-formula"),O=["$","£","¥","¤","֏","؋","৳","฿","₡","₦","₩","₪","₫","€","₭","₮","₱","₲","₴","₸","₹","₺","₼","₽","₾","₿"],F={US:"$",CA:"C$",GB:"£",JP:"¥",IN:"₹",AU:"A$",CN:"¥",KR:"₩",RU:"₽",AT:"€",BE:"€",CY:"€",EE:"€",FI:"€",FR:"€",DE:"€",GR:"€",IE:"€",IT:"€",LV:"€",LT:"€",LU:"€",MT:"€",NL:"€",PT:"€",SK:"€",SI:"€",ES:"€"},A=[{label:"1930-08-05",suffix:"yyyy-MM-dd"},{label:"1930/08/05",suffix:"yyyy/MM/dd"},{label:"1930年08月05日",suffix:'yyyy"年"MM"月"dd"日"'},{label:"08-05",suffix:"MM-dd"},{label:"8月5日",suffix:'M"月"d"日"'},{label:"13:30:30",suffix:"h:mm:ss"},{label:"13:30",suffix:"h:mm"},{label:"下午01:30",suffix:"A/P hh:mm"},{label:"下午1:30",suffix:"A/P h:mm"},{label:"下午1:30:30",suffix:"A/P h:mm:ss"},{label:"08-05 下午 01:30",suffix:"MM-dd A/P hh:mm"}],L=[{label:"(1,235)",suffix:"#,##0_);(#,##0)"},{label:"(1,235) ",suffix:"#,##0_);[Red](#,##0)",color:"red"},{label:"1,234.56",suffix:"#,##0.00_);#,##0.00"},{label:"1,234.56",suffix:"#,##0.00_);[Red]#,##0.00",color:"red"},{label:"-1,234.56",suffix:"#,##0.00_);-#,##0.00"},{label:"-1,234.56",suffix:"#,##0.00_);[Red]-#,##0.00",color:"red"}],V=[{label:e=>`${e}1,235`,suffix:e=>`"${e}"#,##0.00_);"${e}"#,##0.00`},{label:e=>`${e}1,235`,suffix:e=>`"${e}"#,##0.00_);[Red]"${e}"#,##0.00`,color:"red"},{label:e=>`(${e}1,235)`,suffix:e=>`"${e}"#,##0.00_);("${e}"#,##0.00)`},{label:e=>`(${e}1,235)`,suffix:e=>`"${e}"#,##0.00_);[Red]("${e}"#,##0.00)`,color:"red"},{label:e=>`-${e}1,235`,suffix:e=>`"${e}"#,##0.00_);-"${e}"#,##0.00`},{label:e=>`-${e}1,235`,suffix:e=>`"${e}"#,##0.00_);[Red]-"${e}"#,##0.00`,color:"red"}],Q="SHEET_NUMFMT_PLUGIN",E=(e,t=0)=>{var r;return e&&(r=n.numfmt.getInfo(e).maxDecimals)!=null?r:t},k=(e,t)=>{if(e&&!t||!e&&t)return!1;const s=i=>i.reduce((S,C)=>{if(S.isEnd)return S;const p=C.value||C.num;return C.type==="point"?(S.isEnd=!0,S):{...S,result:S.result+p}},{isEnd:!1,result:""}).result,r=n.numfmt.getInfo(e)._partitions,o=n.numfmt.getInfo(t)._partitions,a=s(r[0].tokens),c=s(o[0].tokens),h=s(r[1].tokens),f=s(o[1].tokens);return a===c&&h===f&&r[1].color===o[1].color},x=e=>new Array(Math.min(Math.max(0,Number(e)),30)).fill(0).join(""),P=(e,t)=>e.split(";").map(r=>/\.0?/.test(r)?r.replace(/\.0*/g,`${t>0?".":""}${x(Number(t||0))}`):/0([^0]?)|0$/.test(r)?r.replace(/0([^0]+)|0$/,`0${t>0?".":""}${x(Number(t||0))}$1`):r).join(";"),ee=e=>/\.0?/.test(e)||/0([^0]?)|0$/.test(e),N={id:"sheet.command.numfmt.set.numfmt",type:n.CommandType.COMMAND,handler:(e,t)=>{if(!t)return!1;const s=e.get(n.ICommandService),r=e.get(n.IUniverInstanceService),o=e.get(n.IUndoRedoService),a=m.getSheetCommandTarget(r,t);if(!a)return!1;const{unitId:c,subUnitId:h,worksheet:f}=a,i=t.values.filter(u=>!!u.pattern),S=t.values.filter(u=>!u.pattern),C=m.transformCellsToRange(c,h,i),p={unitId:c,subUnitId:h,ranges:S.map(u=>({startColumn:u.col,startRow:u.row,endColumn:u.col,endRow:u.row}))},M=[],v=[];if(i.length){const u=i.reduce((g,l)=>{j.isTextFormat(l.pattern)&&g.setValue(l.row,l.col,{t:n.CellValueType.STRING});const _=f.getCellRaw(l.row,l.col);if(_){const $=m.checkCellValueType(_.v);$!==_.t&&g.setValue(l.row,l.col,{t:$})}return g},new n.ObjectMatrix).getMatrix(),y=new n.ObjectMatrix;new n.ObjectMatrix(u).forValue((g,l)=>{const _=f.getCellRaw(g,l);_?y.setValue(g,l,{t:_.t}):y.setValue(g,l,{t:void 0})}),Object.keys(C.values).forEach(g=>{const l=C.values[g];l.ranges=m.rangeMerge(l.ranges)}),M.push({id:m.SetNumfmtMutation.id,params:C});const b=m.factorySetNumfmtUndoMutation(e,C);v.push(...b)}if(S.length){p.ranges=m.rangeMerge(p.ranges);const u=S.reduce((g,l)=>{const _=f.getCellRaw(l.row,l.col);if(_){const $=m.checkCellValueType(_.v);$!==_.t&&g.setValue(l.row,l.col,{t:$})}return g},new n.ObjectMatrix).getMatrix(),y=new n.ObjectMatrix;new n.ObjectMatrix(u).forValue((g,l)=>{const _=f.getCellRaw(g,l);_?y.setValue(g,l,{t:_.t}):y.setValue(g,l,{t:void 0})}),M.push({id:m.RemoveNumfmtMutation.id,params:p},{id:m.SetRangeValuesMutation.id,params:{unitId:c,subUnitId:h,cellValue:u}});const b=m.factoryRemoveNumfmtUndoMutation(e,p);v.push({id:m.SetRangeValuesMutation.id,params:{unitId:c,subUnitId:h,cellValue:y.getMatrix()}},...b)}const d=n.sequenceExecute(M,s).result;return d&&o.pushUndoRedo({unitID:c,undoMutations:v,redoMutations:M}),d}},B={id:"sheet.command.numfmt.add.decimal.command",type:n.CommandType.COMMAND,handler:async e=>{const t=e.get(n.ICommandService),s=e.get(m.SheetsSelectionsService),r=e.get(m.INumfmtService),o=e.get(n.IUniverInstanceService),a=s.getCurrentSelections();if(!a||!a.length)return!1;const c=m.getSheetCommandTarget(o);if(!c)return!1;const{unitId:h,subUnitId:f}=c;let i=0;a.forEach(M=>{n.Range.foreach(M.range,(v,d)=>{const u=r.getValue(h,f,v,d);if(!u){const b=c.worksheet.getCellRaw(v,d);if(!i&&b&&b.t===n.CellValueType.NUMBER&&b.v){const g=/\.(\d*)$/.exec(String(b.v));if(g){const l=g[1].length;if(!l)return;i=Math.max(i,l)}}return}const y=E(u.pattern);i=y>i?y:i})});const S=i+1,C=P(`0${S>0?".0":""}`,S),p=[];return a.forEach(M=>{n.Range.foreach(M.range,(v,d)=>{const u=r.getValue(h,f,v,d);if(!u)p.push({row:v,col:d,pattern:C});else{const y=E(u.pattern),b=P(u.pattern,y+1);b!==u.pattern&&p.push({row:v,col:d,pattern:b})}})}),p.length?await t.executeCommand(N.id,{values:p}):!1}};class U{constructor(){T(this,"_currencySymbol$",new I.BehaviorSubject("US"));T(this,"currencySymbol$",this._currencySymbol$.asObservable())}setCurrencySymbolByCountryCode(t){this._currencySymbol$.next(t)}getCurrencySymbol(){return this._currencySymbol$.getValue()}}const G={id:"sheet.command.numfmt.set.currency",type:n.CommandType.COMMAND,handler:async e=>{const t=e.get(n.ICommandService),s=e.get(m.SheetsSelectionsService),r=e.get(U),o=F[r.getCurrencySymbol()]||"$",a=s.getCurrentSelections();if(!a||!a.length)return!1;const c=[],h=V[4].suffix(o);return a.forEach(i=>{n.Range.foreach(i.range,(S,C)=>{c.push({row:S,col:C,pattern:h,type:"currency"})})}),await t.executeCommand(N.id,{values:c})}},W={id:"sheet.command.numfmt.set.percent",type:n.CommandType.COMMAND,handler:async e=>{const t=e.get(n.ICommandService),r=e.get(m.SheetsSelectionsService).getCurrentSelections();if(!r||!r.length)return!1;const o=[],a="0%";return r.forEach(h=>{n.Range.foreach(h.range,(f,i)=>{o.push({row:f,col:i,pattern:a,type:"percent"})})}),await t.executeCommand(N.id,{values:o})}},q={id:"sheet.command.numfmt.subtract.decimal.command",type:n.CommandType.COMMAND,handler:async e=>{const t=e.get(n.ICommandService),s=e.get(m.SheetsSelectionsService),r=e.get(m.INumfmtService),o=e.get(n.IUniverInstanceService),a=s.getCurrentSelections();if(!a||!a.length)return!1;const c=m.getSheetCommandTarget(o);if(!c)return!1;const{unitId:h,subUnitId:f}=c;let i=0;a.forEach(v=>{n.Range.foreach(v.range,(d,u)=>{const y=r.getValue(h,f,d,u);if(!y){const g=c.worksheet.getCellRaw(d,u);if(!i&&g&&g.t===n.CellValueType.NUMBER&&g.v){const l=/\.(\d*)$/.exec(String(g.v));if(l){const _=l[1].length;if(!_)return;i=Math.max(i,_)}}return}const b=E(y.pattern);i=b>i?b:i})});const S=i-1,C=P(`0${S>0?".0":"."}`,S),p=[];return a.forEach(v=>{n.Range.foreach(v.range,(d,u)=>{const y=r.getValue(h,f,d,u);if(!y)p.push({row:d,col:u,pattern:C});else{const b=E(y.pattern);p.push({row:d,col:u,pattern:P(y.pattern,b-1)})}})}),await t.executeCommand(N.id,{values:p})}},te=e=>n.numfmt.getInfo(e).type||"unknown",H=(e,t,s="en")=>{const o=n.numfmt.getInfo(e)._partitions[1],a=n.numfmt.format(e,t,{locale:s,throws:!1});return t<0?{result:a,color:o.color}:{result:a}},z=(e,t,s)=>e==="General"?{result:String(X.stripErrorMargin(t))}:H(e,t,s);var ne=Object.defineProperty,re=Object.getOwnPropertyDescriptor,se=(e,t,s,r)=>{for(var o=r>1?void 0:r?re(t,s):t,a=e.length-1,c;a>=0;a--)(c=e[a])&&(o=(r?c(t,s,o):c(o))||o);return r&&o&&ne(t,s,o),o},R=(e,t)=>(s,r)=>t(s,r,e);const oe={tl:{size:6,color:"#409f11"}};exports.SheetsNumfmtCellContentController=class extends n.Disposable{constructor(s,r,o,a,c,h){super();T(this,"_local$",new I.BehaviorSubject("en"));T(this,"local$",this._local$.asObservable());this._instanceService=s,this._sheetInterceptorService=r,this._themeService=o,this._commandService=a,this._numfmtService=c,this._localeService=h,this._initInterceptorCellContent()}get local(){const s=this._local$.getValue();if(s)return s;switch(this._localeService.getCurrentLocale()){case n.LocaleType.FR_FR:return"fr";case n.LocaleType.RU_RU:return"ru";case n.LocaleType.VI_VN:return"vi";case n.LocaleType.ZH_CN:return"zh-CN";case n.LocaleType.ZH_TW:return"zh-TW";case n.LocaleType.EN_US:case n.LocaleType.FA_IR:default:return"en"}}_initInterceptorCellContent(){const s=new n.ObjectMatrix;this.disposeWithMe(I.merge(this._local$,this._localeService.currentLocale$).subscribe(()=>{s.reset()})),this.disposeWithMe(this._sheetInterceptorService.intercept(m.INTERCEPTOR_POINT.CELL_CONTENT,{effect:n.InterceptorEffectEnum.Value|n.InterceptorEffectEnum.Style,handler:(r,o,a)=>{const c=o.unitId,h=o.subUnitId;let f;const i=r;if(!i)return a(r);if(r!=null&&r.s){const d=o.workbook.getStyles().get(r.s);d!=null&&d.n&&(f=d.n)}if(f||(f=this._numfmtService.getValue(c,h,o.row,o.col)),!f||m.checkCellValueType(i.v)!==n.CellValueType.NUMBER)return a(r);if(j.isTextFormat(f.pattern))return a({...r,t:n.CellValueType.STRING,markers:{...r==null?void 0:r.markers,...oe}});let C="";const p=s.getValue(o.row,o.col);if(p&&p.parameters===`${i.v}_${f.pattern}`)return a({...r,...p.result});const M=z(f.pattern,Number(i.v),this.local);if(C=M.result,!C)return a(r);const v={v:C,t:n.CellValueType.NUMBER};if(M.color){const d=this._themeService.getCurrentTheme()[`${M.color}500`];d&&(v.interceptorStyle={cl:{rgb:d}})}return s.setValue(o.row,o.col,{result:v,parameters:`${i.v}_${f.pattern}`}),a({...r,...v})},priority:m.InterceptCellContentPriority.NUMFMT})),this.disposeWithMe(this._commandService.onCommandExecuted(r=>{if(r.id===m.SetNumfmtMutation.id){const o=r.params;Object.keys(o.values).forEach(a=>{o.values[a].ranges.forEach(h=>{n.Range.foreach(h,(f,i)=>{s.realDeleteValue(f,i)})})})}else if(r.id===m.SetRangeValuesMutation.id){const o=r.params;new n.ObjectMatrix(o.cellValue).forValue((a,c)=>{s.realDeleteValue(a,c)})}})),this.disposeWithMe(this._instanceService.getCurrentTypeOfUnit$(n.UniverInstanceType.UNIVER_SHEET).pipe(I.switchMap(r=>{var o;return(o=r==null?void 0:r.activeSheet$)!=null?o:I.of(null)}),I.skip(1)).subscribe(()=>s.reset()))}setNumfmtLocal(s){this._local$.next(s)}};exports.SheetsNumfmtCellContentController=se([R(0,n.IUniverInstanceService),R(1,n.Inject(m.SheetInterceptorService)),R(2,n.Inject(n.ThemeService)),R(3,n.Inject(n.ICommandService)),R(4,n.Inject(m.INumfmtService)),R(5,n.Inject(n.LocaleService))],exports.SheetsNumfmtCellContentController);class D extends n.Disposable{constructor(){super(...arguments);T(this,"_currencySymbol$",new I.BehaviorSubject("US"));T(this,"currencySymbol$",this._currencySymbol$.asObservable())}setCurrencySymbolByCountryCode(s){this._currencySymbol$.next(s)}getCurrencySymbol(){return this._currencySymbol$.getValue()}}var K=Object.defineProperty,ae=Object.getOwnPropertyDescriptor,ce=(e,t,s)=>t in e?K(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,ie=(e,t,s,r)=>{for(var o=r>1?void 0:r?ae(t,s):t,a=e.length-1,c;a>=0;a--)(c=e[a])&&(o=(r?c(t,s,o):c(o))||o);return r&&o&&K(t,s,o),o},w=(e,t)=>(s,r)=>t(s,r,e),Y=(e,t,s)=>ce(e,typeof t!="symbol"?t+"":t,s);exports.UniverSheetsNumfmtPlugin=class extends n.Plugin{constructor(t=void 0,s,r){super(),this._config=t,this._injector=s,this._commandService=r}onStarting(){n.registerDependencies(this._injector,[[exports.SheetsNumfmtCellContentController],[U],[D]]),n.touchDependencies(this._injector,[[exports.SheetsNumfmtCellContentController]])}onRendered(){n.touchDependencies(this._injector,[[D]]),[B,q,G,W,N].forEach(t=>{this.disposeWithMe(this._commandService.registerCommand(t))})}};Y(exports.UniverSheetsNumfmtPlugin,"pluginName",Q);Y(exports.UniverSheetsNumfmtPlugin,"type",n.UniverInstanceType.UNIVER_SHEET);exports.UniverSheetsNumfmtPlugin=ie([n.DependentOn(m.UniverSheetsPlugin),w(1,n.Inject(n.Injector)),w(2,n.ICommandService)],exports.UniverSheetsNumfmtPlugin);const le=e=>O.find(s=>e.includes(s)),ue=()=>O.map(e=>({label:e,value:e})),me=e=>V.map(t=>({label:t.label(e),value:t.suffix(e),color:t.color})),fe=()=>A.map(e=>({label:e.label,value:e.suffix})),de=()=>L.map(e=>({label:e.label,value:e.suffix,color:e.color}));exports.AddDecimalCommand=B;exports.CURRENCYFORMAT=V;exports.DATEFMTLISG=A;exports.MenuCurrencyService=U;exports.NUMBERFORMAT=L;exports.SetCurrencyCommand=G;exports.SetNumfmtCommand=N;exports.SetPercentCommand=W;exports.SubtractDecimalCommand=q;exports.countryCurrencyMap=F;exports.currencySymbols=O;exports.getCurrencyFormatOptions=me;exports.getCurrencyOptions=ue;exports.getCurrencyType=le;exports.getDateFormatOptions=fe;exports.getDecimalFromPattern=E;exports.getDecimalString=x;exports.getNumberFormatOptions=de;exports.getPatternPreview=H;exports.getPatternPreviewIgnoreGeneral=z;exports.getPatternType=te;exports.isPatternEqualWithoutDecimal=k;exports.isPatternHasDecimal=ee;exports.setPatternDecimal=P;
package/lib/es/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  var ce = Object.defineProperty;
2
2
  var ae = (e, t, n) => t in e ? ce(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
3
  var M = (e, t, n) => ae(e, typeof t != "symbol" ? t + "" : t, n);
4
- import { numfmt as x, CommandType as P, ICommandService as E, IUniverInstanceService as F, IUndoRedoService as ie, CellValueType as T, ObjectMatrix as b, sequenceExecute as le, Range as R, Inject as N, ThemeService as ue, LocaleService as me, Disposable as J, LocaleType as $, InterceptorEffectEnum as z, UniverInstanceType as Q, DependentOn as fe, Injector as de, Plugin as he, registerDependencies as ge, touchDependencies as K } from "@univerjs/core";
5
- import { getSheetCommandTarget as G, transformCellsToRange as pe, checkCellValueType as L, rangeMerge as q, SetNumfmtMutation as k, factorySetNumfmtUndoMutation as Se, RemoveNumfmtMutation as ve, SetRangeValuesMutation as B, factoryRemoveNumfmtUndoMutation as ye, SheetsSelectionsService as j, INumfmtService as W, SheetInterceptorService as _e, INTERCEPTOR_POINT as Ce, InterceptCellContentPriority as be, UniverSheetsPlugin as Me } from "@univerjs/sheets";
6
- import { DEFAULT_TEXT_FORMAT as ee } from "@univerjs/engine-numfmt";
7
- import { BehaviorSubject as H, merge as $e, switchMap as Re, of as Ee, skip as Ie } from "rxjs";
4
+ import { numfmt as x, CommandType as P, ICommandService as I, IUniverInstanceService as j, IUndoRedoService as ie, CellValueType as T, ObjectMatrix as b, sequenceExecute as le, Range as R, Inject as N, ThemeService as ue, LocaleService as me, Disposable as X, LocaleType as $, InterceptorEffectEnum as z, UniverInstanceType as Q, DependentOn as fe, Injector as de, Plugin as he, registerDependencies as ge, touchDependencies as K } from "@univerjs/core";
5
+ import { getSheetCommandTarget as G, transformCellsToRange as pe, checkCellValueType as L, rangeMerge as q, SetNumfmtMutation as k, factorySetNumfmtUndoMutation as Se, RemoveNumfmtMutation as ve, SetRangeValuesMutation as B, factoryRemoveNumfmtUndoMutation as ye, SheetsSelectionsService as F, INumfmtService as W, SheetInterceptorService as _e, INTERCEPTOR_POINT as Ce, InterceptCellContentPriority as be, UniverSheetsPlugin as Me } from "@univerjs/sheets";
6
+ import { isTextFormat as ee } from "@univerjs/engine-numfmt";
7
+ import { BehaviorSubject as H, merge as $e, switchMap as Re, of as Ie, skip as Ee } from "rxjs";
8
8
  import { stripErrorMargin as Ne } from "@univerjs/engine-formula";
9
9
  const te = [
10
10
  "$",
@@ -175,7 +175,7 @@ const te = [
175
175
  suffix: (e) => `"${e}"#,##0.00_);[Red]-"${e}"#,##0.00`,
176
176
  color: "red"
177
177
  }
178
- ], Pe = "SHEET_NUMFMT_PLUGIN", U = (e, t = 0) => {
178
+ ], Pe = "SHEET_NUMFMT_PLUGIN", O = (e, t = 0) => {
179
179
  var r;
180
180
  return e && (r = x.getInfo(e).maxDecimals) != null ? r : t;
181
181
  }, Qe = (e, t) => {
@@ -191,20 +191,20 @@ const te = [
191
191
  { isEnd: !1, result: "" }
192
192
  ).result, r = x.getInfo(e)._partitions, s = x.getInfo(t)._partitions, o = n(r[0].tokens), c = n(s[0].tokens), l = n(r[1].tokens), f = n(s[1].tokens);
193
193
  return o === c && l === f && r[1].color === s[1].color;
194
- }, X = (e) => new Array(Math.min(Math.max(0, Number(e)), 30)).fill(0).join(""), w = (e, t) => e.split(";").map((r) => /\.0?/.test(r) ? r.replace(
194
+ }, Y = (e) => new Array(Math.min(Math.max(0, Number(e)), 30)).fill(0).join(""), U = (e, t) => e.split(";").map((r) => /\.0?/.test(r) ? r.replace(
195
195
  /\.0*/g,
196
- `${t > 0 ? "." : ""}${X(Number(t || 0))}`
196
+ `${t > 0 ? "." : ""}${Y(Number(t || 0))}`
197
197
  ) : /0([^0]?)|0$/.test(r) ? r.replace(
198
198
  /0([^0]+)|0$/,
199
- `0${t > 0 ? "." : ""}${X(Number(t || 0))}$1`
200
- ) : r).join(";"), ke = (e) => /\.0?/.test(e) || /0([^0]?)|0$/.test(e), O = {
199
+ `0${t > 0 ? "." : ""}${Y(Number(t || 0))}$1`
200
+ ) : r).join(";"), ke = (e) => /\.0?/.test(e) || /0([^0]?)|0$/.test(e), w = {
201
201
  id: "sheet.command.numfmt.set.numfmt",
202
202
  type: P.COMMAND,
203
203
  // eslint-disable-next-line max-lines-per-function
204
204
  handler: (e, t) => {
205
205
  if (!t)
206
206
  return !1;
207
- const n = e.get(E), r = e.get(F), s = e.get(ie), o = G(r, t);
207
+ const n = e.get(I), r = e.get(j), s = e.get(ie), o = G(r, t);
208
208
  if (!o) return !1;
209
209
  const { unitId: c, subUnitId: l, worksheet: f } = o, u = t.values.filter((i) => !!i.pattern), d = t.values.filter((i) => !i.pattern), p = pe(c, l, u), g = {
210
210
  unitId: c,
@@ -218,7 +218,7 @@ const te = [
218
218
  }, C = [], h = [];
219
219
  if (u.length) {
220
220
  const i = u.reduce((m, a) => {
221
- a.pattern === ee && m.setValue(a.row, a.col, { t: T.STRING });
221
+ ee(a.pattern) && m.setValue(a.row, a.col, { t: T.STRING });
222
222
  const _ = f.getCellRaw(a.row, a.col);
223
223
  if (_) {
224
224
  const V = L(_.v);
@@ -280,11 +280,11 @@ const te = [
280
280
  redoMutations: C
281
281
  }), v;
282
282
  }
283
- }, Oe = {
283
+ }, we = {
284
284
  id: "sheet.command.numfmt.add.decimal.command",
285
285
  type: P.COMMAND,
286
286
  handler: async (e) => {
287
- const t = e.get(E), n = e.get(j), r = e.get(W), s = e.get(F), o = n.getCurrentSelections();
287
+ const t = e.get(I), n = e.get(F), r = e.get(W), s = e.get(j), o = n.getCurrentSelections();
288
288
  if (!o || !o.length)
289
289
  return !1;
290
290
  const c = G(s);
@@ -307,11 +307,11 @@ const te = [
307
307
  }
308
308
  return;
309
309
  }
310
- const S = U(i.pattern);
310
+ const S = O(i.pattern);
311
311
  u = S > u ? S : u;
312
312
  });
313
313
  });
314
- const d = u + 1, p = w(`0${d > 0 ? ".0" : ""}`, d), g = [];
314
+ const d = u + 1, p = U(`0${d > 0 ? ".0" : ""}`, d), g = [];
315
315
  return o.forEach((C) => {
316
316
  R.foreach(C.range, (h, v) => {
317
317
  const i = r.getValue(l, f, h, v);
@@ -322,7 +322,7 @@ const te = [
322
322
  pattern: p
323
323
  });
324
324
  else {
325
- const S = U(i.pattern), y = w(i.pattern, S + 1);
325
+ const S = O(i.pattern), y = U(i.pattern, S + 1);
326
326
  y !== i.pattern && g.push({
327
327
  row: h,
328
328
  col: v,
@@ -330,7 +330,7 @@ const te = [
330
330
  });
331
331
  }
332
332
  });
333
- }), g.length ? await t.executeCommand(O.id, { values: g }) : !1;
333
+ }), g.length ? await t.executeCommand(w.id, { values: g }) : !1;
334
334
  }
335
335
  };
336
336
  class re {
@@ -348,11 +348,11 @@ class re {
348
348
  return this._currencySymbol$.getValue();
349
349
  }
350
350
  }
351
- const Ue = {
351
+ const Oe = {
352
352
  id: "sheet.command.numfmt.set.currency",
353
353
  type: P.COMMAND,
354
354
  handler: async (e) => {
355
- const t = e.get(E), n = e.get(j), r = e.get(re), s = Te[r.getCurrencySymbol()] || "$", o = n.getCurrentSelections();
355
+ const t = e.get(I), n = e.get(F), r = e.get(re), s = Te[r.getCurrencySymbol()] || "$", o = n.getCurrentSelections();
356
356
  if (!o || !o.length)
357
357
  return !1;
358
358
  const c = [], l = ne[4].suffix(s);
@@ -360,13 +360,13 @@ const Ue = {
360
360
  R.foreach(u.range, (d, p) => {
361
361
  c.push({ row: d, col: p, pattern: l, type: "currency" });
362
362
  });
363
- }), await t.executeCommand(O.id, { values: c });
363
+ }), await t.executeCommand(w.id, { values: c });
364
364
  }
365
- }, we = {
365
+ }, Ue = {
366
366
  id: "sheet.command.numfmt.set.percent",
367
367
  type: P.COMMAND,
368
368
  handler: async (e) => {
369
- const t = e.get(E), r = e.get(j).getCurrentSelections();
369
+ const t = e.get(I), r = e.get(F).getCurrentSelections();
370
370
  if (!r || !r.length)
371
371
  return !1;
372
372
  const s = [], o = "0%";
@@ -374,13 +374,13 @@ const Ue = {
374
374
  R.foreach(l.range, (f, u) => {
375
375
  s.push({ row: f, col: u, pattern: o, type: "percent" });
376
376
  });
377
- }), await t.executeCommand(O.id, { values: s });
377
+ }), await t.executeCommand(w.id, { values: s });
378
378
  }
379
379
  }, De = {
380
380
  id: "sheet.command.numfmt.subtract.decimal.command",
381
381
  type: P.COMMAND,
382
382
  handler: async (e) => {
383
- const t = e.get(E), n = e.get(j), r = e.get(W), s = e.get(F), o = n.getCurrentSelections();
383
+ const t = e.get(I), n = e.get(F), r = e.get(W), s = e.get(j), o = n.getCurrentSelections();
384
384
  if (!o || !o.length)
385
385
  return !1;
386
386
  const c = G(s);
@@ -403,11 +403,11 @@ const Ue = {
403
403
  }
404
404
  return;
405
405
  }
406
- const y = U(S.pattern);
406
+ const y = O(S.pattern);
407
407
  u = y > u ? y : u;
408
408
  });
409
409
  });
410
- const d = u - 1, p = w(`0${d > 0 ? ".0" : "."}`, d), g = [];
410
+ const d = u - 1, p = U(`0${d > 0 ? ".0" : "."}`, d), g = [];
411
411
  return o.forEach((h) => {
412
412
  R.foreach(h.range, (v, i) => {
413
413
  const S = r.getValue(l, f, v, i);
@@ -418,15 +418,15 @@ const Ue = {
418
418
  pattern: p
419
419
  });
420
420
  else {
421
- const y = U(S.pattern);
421
+ const y = O(S.pattern);
422
422
  g.push({
423
423
  row: v,
424
424
  col: i,
425
- pattern: w(S.pattern, y - 1)
425
+ pattern: U(S.pattern, y - 1)
426
426
  });
427
427
  }
428
428
  });
429
- }), await t.executeCommand(O.id, { values: g });
429
+ }), await t.executeCommand(w.id, { values: g });
430
430
  }
431
431
  }, et = (e) => x.getInfo(e).type || "unknown", Ae = (e, t, n = "en") => {
432
432
  const s = x.getInfo(e)._partitions[1], o = x.format(e, t, { locale: n, throws: !1 });
@@ -436,22 +436,22 @@ const Ue = {
436
436
  } : {
437
437
  result: o
438
438
  };
439
- }, Fe = (e, t, n) => e === "General" ? {
439
+ }, je = (e, t, n) => e === "General" ? {
440
440
  result: String(Ne(t))
441
441
  // In Excel, the default General format also needs to handle numeric precision.
442
442
  } : Ae(e, t, n);
443
- var je = Object.defineProperty, Le = Object.getOwnPropertyDescriptor, Be = (e, t, n, r) => {
443
+ var Fe = Object.defineProperty, Le = Object.getOwnPropertyDescriptor, Be = (e, t, n, r) => {
444
444
  for (var s = r > 1 ? void 0 : r ? Le(t, n) : t, o = e.length - 1, c; o >= 0; o--)
445
445
  (c = e[o]) && (s = (r ? c(t, n, s) : c(s)) || s);
446
- return r && s && je(t, n, s), s;
447
- }, I = (e, t) => (n, r) => t(n, r, e);
446
+ return r && s && Fe(t, n, s), s;
447
+ }, E = (e, t) => (n, r) => t(n, r, e);
448
448
  const Ge = {
449
449
  tl: {
450
450
  size: 6,
451
451
  color: "#409f11"
452
452
  }
453
453
  };
454
- let D = class extends J {
454
+ let D = class extends X {
455
455
  constructor(t, n, r, s, o, c) {
456
456
  super();
457
457
  M(this, "_local$", new H("en"));
@@ -498,7 +498,7 @@ let D = class extends J {
498
498
  }
499
499
  if (l || (l = this._numfmtService.getValue(o, c, r.row, r.col)), !l || L(f.v) !== T.NUMBER)
500
500
  return s(n);
501
- if (l.pattern === ee)
501
+ if (ee(l.pattern))
502
502
  return s({
503
503
  ...n,
504
504
  t: T.STRING,
@@ -511,7 +511,7 @@ let D = class extends J {
511
511
  const p = t.getValue(r.row, r.col);
512
512
  if (p && p.parameters === `${f.v}_${l.pattern}`)
513
513
  return s({ ...n, ...p.result });
514
- const g = Fe(l.pattern, Number(f.v), this.local);
514
+ const g = je(l.pattern, Number(f.v), this.local);
515
515
  if (d = g.result, !d)
516
516
  return s(n);
517
517
  const C = { v: d, t: T.NUMBER };
@@ -545,9 +545,9 @@ let D = class extends J {
545
545
  this._instanceService.getCurrentTypeOfUnit$(Q.UNIVER_SHEET).pipe(
546
546
  Re((n) => {
547
547
  var r;
548
- return (r = n == null ? void 0 : n.activeSheet$) != null ? r : Ee(null);
548
+ return (r = n == null ? void 0 : n.activeSheet$) != null ? r : Ie(null);
549
549
  }),
550
- Ie(1)
550
+ Ee(1)
551
551
  ).subscribe(() => t.reset())
552
552
  );
553
553
  }
@@ -556,14 +556,14 @@ let D = class extends J {
556
556
  }
557
557
  };
558
558
  D = Be([
559
- I(0, F),
560
- I(1, N(_e)),
561
- I(2, N(ue)),
562
- I(3, N(E)),
563
- I(4, N(W)),
564
- I(5, N(me))
559
+ E(0, j),
560
+ E(1, N(_e)),
561
+ E(2, N(ue)),
562
+ E(3, N(I)),
563
+ E(4, N(W)),
564
+ E(5, N(me))
565
565
  ], D);
566
- class Y extends J {
566
+ class Z extends X {
567
567
  constructor() {
568
568
  super(...arguments);
569
569
  M(this, "_currencySymbol$", new H("US"));
@@ -583,7 +583,7 @@ var se = Object.defineProperty, We = Object.getOwnPropertyDescriptor, He = (e, t
583
583
  for (var s = r > 1 ? void 0 : r ? We(t, n) : t, o = e.length - 1, c; o >= 0; o--)
584
584
  (c = e[o]) && (s = (r ? c(t, n, s) : c(s)) || s);
585
585
  return r && s && se(t, n, s), s;
586
- }, Z = (e, t) => (n, r) => t(n, r, e), oe = (e, t, n) => He(e, typeof t != "symbol" ? t + "" : t, n);
586
+ }, J = (e, t) => (n, r) => t(n, r, e), oe = (e, t, n) => He(e, typeof t != "symbol" ? t + "" : t, n);
587
587
  let A = class extends he {
588
588
  constructor(e = void 0, t, n) {
589
589
  super(), this._config = e, this._injector = t, this._commandService = n;
@@ -592,20 +592,20 @@ let A = class extends he {
592
592
  ge(this._injector, [
593
593
  [D],
594
594
  [re],
595
- [Y]
595
+ [Z]
596
596
  ]), K(this._injector, [
597
597
  [D]
598
598
  ]);
599
599
  }
600
600
  onRendered() {
601
601
  K(this._injector, [
602
- [Y]
602
+ [Z]
603
603
  ]), [
604
- Oe,
604
+ we,
605
605
  De,
606
+ Oe,
606
607
  Ue,
607
- we,
608
- O
608
+ w
609
609
  ].forEach((e) => {
610
610
  this.disposeWithMe(this._commandService.registerCommand(e));
611
611
  });
@@ -615,8 +615,8 @@ oe(A, "pluginName", Pe);
615
615
  oe(A, "type", Q.UNIVER_SHEET);
616
616
  A = ze([
617
617
  fe(Me),
618
- Z(1, N(de)),
619
- Z(2, E)
618
+ J(1, N(de)),
619
+ J(2, I)
620
620
  ], A);
621
621
  const tt = (e) => te.find((n) => e.includes(n)), nt = () => te.map((e) => ({ label: e, value: e })), rt = (e) => ne.map((t) => ({
622
622
  label: t.label(e),
@@ -624,14 +624,14 @@ const tt = (e) => te.find((n) => e.includes(n)), nt = () => te.map((e) => ({ lab
624
624
  color: t.color
625
625
  })), st = () => xe.map((e) => ({ label: e.label, value: e.suffix })), ot = () => Ve.map((e) => ({ label: e.label, value: e.suffix, color: e.color }));
626
626
  export {
627
- Oe as AddDecimalCommand,
627
+ we as AddDecimalCommand,
628
628
  ne as CURRENCYFORMAT,
629
629
  xe as DATEFMTLISG,
630
630
  re as MenuCurrencyService,
631
631
  Ve as NUMBERFORMAT,
632
- Ue as SetCurrencyCommand,
633
- O as SetNumfmtCommand,
634
- we as SetPercentCommand,
632
+ Oe as SetCurrencyCommand,
633
+ w as SetNumfmtCommand,
634
+ Ue as SetPercentCommand,
635
635
  D as SheetsNumfmtCellContentController,
636
636
  De as SubtractDecimalCommand,
637
637
  A as UniverSheetsNumfmtPlugin,
@@ -641,13 +641,13 @@ export {
641
641
  nt as getCurrencyOptions,
642
642
  tt as getCurrencyType,
643
643
  st as getDateFormatOptions,
644
- U as getDecimalFromPattern,
645
- X as getDecimalString,
644
+ O as getDecimalFromPattern,
645
+ Y as getDecimalString,
646
646
  ot as getNumberFormatOptions,
647
647
  Ae as getPatternPreview,
648
- Fe as getPatternPreviewIgnoreGeneral,
648
+ je as getPatternPreviewIgnoreGeneral,
649
649
  et as getPatternType,
650
650
  Qe as isPatternEqualWithoutDecimal,
651
651
  ke as isPatternHasDecimal,
652
- w as setPatternDecimal
652
+ U as setPatternDecimal
653
653
  };
package/lib/umd/index.js CHANGED
@@ -1 +1 @@
1
- (function(s,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("@univerjs/core"),require("@univerjs/sheets"),require("@univerjs/engine-numfmt"),require("rxjs"),require("@univerjs/engine-formula")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/sheets","@univerjs/engine-numfmt","rxjs","@univerjs/engine-formula"],t):(s=typeof globalThis<"u"?globalThis:s||self,t(s.UniverSheetsNumfmt={},s.UniverCore,s.UniverSheets,s.UniverEngineNumfmt,s.rxjs,s.UniverEngineFormula))})(this,function(s,t,c,w,I,Z){"use strict";var de=Object.defineProperty;var ge=(s,t,c)=>t in s?de(s,t,{enumerable:!0,configurable:!0,writable:!0,value:c}):s[t]=c;var R=(s,t,c)=>ge(s,typeof t!="symbol"?t+"":t,c);const O=["$","£","¥","¤","֏","؋","৳","฿","₡","₦","₩","₪","₫","€","₭","₮","₱","₲","₴","₸","₹","₺","₼","₽","₾","₿"],A={US:"$",CA:"C$",GB:"£",JP:"¥",IN:"₹",AU:"A$",CN:"¥",KR:"₩",RU:"₽",AT:"€",BE:"€",CY:"€",EE:"€",FI:"€",FR:"€",DE:"€",GR:"€",IE:"€",IT:"€",LV:"€",LT:"€",LU:"€",MT:"€",NL:"€",PT:"€",SK:"€",SI:"€",ES:"€"},F=[{label:"1930-08-05",suffix:"yyyy-MM-dd"},{label:"1930/08/05",suffix:"yyyy/MM/dd"},{label:"1930年08月05日",suffix:'yyyy"年"MM"月"dd"日"'},{label:"08-05",suffix:"MM-dd"},{label:"8月5日",suffix:'M"月"d"日"'},{label:"13:30:30",suffix:"h:mm:ss"},{label:"13:30",suffix:"h:mm"},{label:"下午01:30",suffix:"A/P hh:mm"},{label:"下午1:30",suffix:"A/P h:mm"},{label:"下午1:30:30",suffix:"A/P h:mm:ss"},{label:"08-05 下午 01:30",suffix:"MM-dd A/P hh:mm"}],L=[{label:"(1,235)",suffix:"#,##0_);(#,##0)"},{label:"(1,235) ",suffix:"#,##0_);[Red](#,##0)",color:"red"},{label:"1,234.56",suffix:"#,##0.00_);#,##0.00"},{label:"1,234.56",suffix:"#,##0.00_);[Red]#,##0.00",color:"red"},{label:"-1,234.56",suffix:"#,##0.00_);-#,##0.00"},{label:"-1,234.56",suffix:"#,##0.00_);[Red]-#,##0.00",color:"red"}],V=[{label:e=>`${e}1,235`,suffix:e=>`"${e}"#,##0.00_);"${e}"#,##0.00`},{label:e=>`${e}1,235`,suffix:e=>`"${e}"#,##0.00_);[Red]"${e}"#,##0.00`,color:"red"},{label:e=>`(${e}1,235)`,suffix:e=>`"${e}"#,##0.00_);("${e}"#,##0.00)`},{label:e=>`(${e}1,235)`,suffix:e=>`"${e}"#,##0.00_);[Red]("${e}"#,##0.00)`,color:"red"},{label:e=>`-${e}1,235`,suffix:e=>`"${e}"#,##0.00_);-"${e}"#,##0.00`},{label:e=>`-${e}1,235`,suffix:e=>`"${e}"#,##0.00_);[Red]-"${e}"#,##0.00`,color:"red"}],J="SHEET_NUMFMT_PLUGIN",E=(e,r=0)=>{var n;return e&&(n=t.numfmt.getInfo(e).maxDecimals)!=null?n:r},Q=(e,r)=>{if(e&&!r||!e&&r)return!1;const i=o=>o.reduce((C,y)=>{if(C.isEnd)return C;const h=y.value||y.num;return y.type==="point"?(C.isEnd=!0,C):{...C,result:C.result+h}},{isEnd:!1,result:""}).result,n=t.numfmt.getInfo(e)._partitions,a=t.numfmt.getInfo(r)._partitions,l=i(n[0].tokens),u=i(a[0].tokens),v=i(n[1].tokens),d=i(a[1].tokens);return l===u&&v===d&&n[1].color===a[1].color},D=e=>new Array(Math.min(Math.max(0,Number(e)),30)).fill(0).join(""),P=(e,r)=>e.split(";").map(n=>/\.0?/.test(n)?n.replace(/\.0*/g,`${r>0?".":""}${D(Number(r||0))}`):/0([^0]?)|0$/.test(n)?n.replace(/0([^0]+)|0$/,`0${r>0?".":""}${D(Number(r||0))}$1`):n).join(";"),k=e=>/\.0?/.test(e)||/0([^0]?)|0$/.test(e),N={id:"sheet.command.numfmt.set.numfmt",type:t.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;const i=e.get(t.ICommandService),n=e.get(t.IUniverInstanceService),a=e.get(t.IUndoRedoService),l=c.getSheetCommandTarget(n,r);if(!l)return!1;const{unitId:u,subUnitId:v,worksheet:d}=l,o=r.values.filter(f=>!!f.pattern),C=r.values.filter(f=>!f.pattern),y=c.transformCellsToRange(u,v,o),h={unitId:u,subUnitId:v,ranges:C.map(f=>({startColumn:f.col,startRow:f.row,endColumn:f.col,endRow:f.row}))},T=[],p=[];if(o.length){const f=o.reduce((S,m)=>{m.pattern===w.DEFAULT_TEXT_FORMAT&&S.setValue(m.row,m.col,{t:t.CellValueType.STRING});const M=d.getCellRaw(m.row,m.col);if(M){const U=c.checkCellValueType(M.v);U!==M.t&&S.setValue(m.row,m.col,{t:U})}return S},new t.ObjectMatrix).getMatrix(),_=new t.ObjectMatrix;new t.ObjectMatrix(f).forValue((S,m)=>{const M=d.getCellRaw(S,m);M?_.setValue(S,m,{t:M.t}):_.setValue(S,m,{t:void 0})}),Object.keys(y.values).forEach(S=>{const m=y.values[S];m.ranges=c.rangeMerge(m.ranges)}),T.push({id:c.SetNumfmtMutation.id,params:y});const b=c.factorySetNumfmtUndoMutation(e,y);p.push(...b)}if(C.length){h.ranges=c.rangeMerge(h.ranges);const f=C.reduce((S,m)=>{const M=d.getCellRaw(m.row,m.col);if(M){const U=c.checkCellValueType(M.v);U!==M.t&&S.setValue(m.row,m.col,{t:U})}return S},new t.ObjectMatrix).getMatrix(),_=new t.ObjectMatrix;new t.ObjectMatrix(f).forValue((S,m)=>{const M=d.getCellRaw(S,m);M?_.setValue(S,m,{t:M.t}):_.setValue(S,m,{t:void 0})}),T.push({id:c.RemoveNumfmtMutation.id,params:h},{id:c.SetRangeValuesMutation.id,params:{unitId:u,subUnitId:v,cellValue:f}});const b=c.factoryRemoveNumfmtUndoMutation(e,h);p.push({id:c.SetRangeValuesMutation.id,params:{unitId:u,subUnitId:v,cellValue:_.getMatrix()}},...b)}const g=t.sequenceExecute(T,i).result;return g&&a.pushUndoRedo({unitID:u,undoMutations:p,redoMutations:T}),g}},B={id:"sheet.command.numfmt.add.decimal.command",type:t.CommandType.COMMAND,handler:async e=>{const r=e.get(t.ICommandService),i=e.get(c.SheetsSelectionsService),n=e.get(c.INumfmtService),a=e.get(t.IUniverInstanceService),l=i.getCurrentSelections();if(!l||!l.length)return!1;const u=c.getSheetCommandTarget(a);if(!u)return!1;const{unitId:v,subUnitId:d}=u;let o=0;l.forEach(T=>{t.Range.foreach(T.range,(p,g)=>{const f=n.getValue(v,d,p,g);if(!f){const b=u.worksheet.getCellRaw(p,g);if(!o&&b&&b.t===t.CellValueType.NUMBER&&b.v){const S=/\.(\d*)$/.exec(String(b.v));if(S){const m=S[1].length;if(!m)return;o=Math.max(o,m)}}return}const _=E(f.pattern);o=_>o?_:o})});const C=o+1,y=P(`0${C>0?".0":""}`,C),h=[];return l.forEach(T=>{t.Range.foreach(T.range,(p,g)=>{const f=n.getValue(v,d,p,g);if(!f)h.push({row:p,col:g,pattern:y});else{const _=E(f.pattern),b=P(f.pattern,_+1);b!==f.pattern&&h.push({row:p,col:g,pattern:b})}})}),h.length?await r.executeCommand(N.id,{values:h}):!1}};class j{constructor(){R(this,"_currencySymbol$",new I.BehaviorSubject("US"));R(this,"currencySymbol$",this._currencySymbol$.asObservable())}setCurrencySymbolByCountryCode(r){this._currencySymbol$.next(r)}getCurrencySymbol(){return this._currencySymbol$.getValue()}}const x={id:"sheet.command.numfmt.set.currency",type:t.CommandType.COMMAND,handler:async e=>{const r=e.get(t.ICommandService),i=e.get(c.SheetsSelectionsService),n=e.get(j),a=A[n.getCurrencySymbol()]||"$",l=i.getCurrentSelections();if(!l||!l.length)return!1;const u=[],v=V[4].suffix(a);return l.forEach(o=>{t.Range.foreach(o.range,(C,y)=>{u.push({row:C,col:y,pattern:v,type:"currency"})})}),await r.executeCommand(N.id,{values:u})}},G={id:"sheet.command.numfmt.set.percent",type:t.CommandType.COMMAND,handler:async e=>{const r=e.get(t.ICommandService),n=e.get(c.SheetsSelectionsService).getCurrentSelections();if(!n||!n.length)return!1;const a=[],l="0%";return n.forEach(v=>{t.Range.foreach(v.range,(d,o)=>{a.push({row:d,col:o,pattern:l,type:"percent"})})}),await r.executeCommand(N.id,{values:a})}},W={id:"sheet.command.numfmt.subtract.decimal.command",type:t.CommandType.COMMAND,handler:async e=>{const r=e.get(t.ICommandService),i=e.get(c.SheetsSelectionsService),n=e.get(c.INumfmtService),a=e.get(t.IUniverInstanceService),l=i.getCurrentSelections();if(!l||!l.length)return!1;const u=c.getSheetCommandTarget(a);if(!u)return!1;const{unitId:v,subUnitId:d}=u;let o=0;l.forEach(p=>{t.Range.foreach(p.range,(g,f)=>{const _=n.getValue(v,d,g,f);if(!_){const S=u.worksheet.getCellRaw(g,f);if(!o&&S&&S.t===t.CellValueType.NUMBER&&S.v){const m=/\.(\d*)$/.exec(String(S.v));if(m){const M=m[1].length;if(!M)return;o=Math.max(o,M)}}return}const b=E(_.pattern);o=b>o?b:o})});const C=o-1,y=P(`0${C>0?".0":"."}`,C),h=[];return l.forEach(p=>{t.Range.foreach(p.range,(g,f)=>{const _=n.getValue(v,d,g,f);if(!_)h.push({row:g,col:f,pattern:y});else{const b=E(_.pattern);h.push({row:g,col:f,pattern:P(_.pattern,b-1)})}})}),await r.executeCommand(N.id,{values:h})}},ee=e=>t.numfmt.getInfo(e).type||"unknown",q=(e,r,i="en")=>{const a=t.numfmt.getInfo(e)._partitions[1],l=t.numfmt.format(e,r,{locale:i,throws:!1});return r<0?{result:l,color:a.color}:{result:l}},H=(e,r,i)=>e==="General"?{result:String(Z.stripErrorMargin(r))}:q(e,r,i);var te=Object.defineProperty,ne=Object.getOwnPropertyDescriptor,re=(e,r,i,n)=>{for(var a=n>1?void 0:n?ne(r,i):r,l=e.length-1,u;l>=0;l--)(u=e[l])&&(a=(n?u(r,i,a):u(a))||a);return n&&a&&te(r,i,a),a},$=(e,r)=>(i,n)=>r(i,n,e);const ie={tl:{size:6,color:"#409f11"}};s.SheetsNumfmtCellContentController=class extends t.Disposable{constructor(i,n,a,l,u,v){super();R(this,"_local$",new I.BehaviorSubject("en"));R(this,"local$",this._local$.asObservable());this._instanceService=i,this._sheetInterceptorService=n,this._themeService=a,this._commandService=l,this._numfmtService=u,this._localeService=v,this._initInterceptorCellContent()}get local(){const i=this._local$.getValue();if(i)return i;switch(this._localeService.getCurrentLocale()){case t.LocaleType.FR_FR:return"fr";case t.LocaleType.RU_RU:return"ru";case t.LocaleType.VI_VN:return"vi";case t.LocaleType.ZH_CN:return"zh-CN";case t.LocaleType.ZH_TW:return"zh-TW";case t.LocaleType.EN_US:case t.LocaleType.FA_IR:default:return"en"}}_initInterceptorCellContent(){const i=new t.ObjectMatrix;this.disposeWithMe(I.merge(this._local$,this._localeService.currentLocale$).subscribe(()=>{i.reset()})),this.disposeWithMe(this._sheetInterceptorService.intercept(c.INTERCEPTOR_POINT.CELL_CONTENT,{effect:t.InterceptorEffectEnum.Value|t.InterceptorEffectEnum.Style,handler:(n,a,l)=>{const u=a.unitId,v=a.subUnitId;let d;const o=n;if(!o)return l(n);if(n!=null&&n.s){const g=a.workbook.getStyles().get(n.s);g!=null&&g.n&&(d=g.n)}if(d||(d=this._numfmtService.getValue(u,v,a.row,a.col)),!d||c.checkCellValueType(o.v)!==t.CellValueType.NUMBER)return l(n);if(d.pattern===w.DEFAULT_TEXT_FORMAT)return l({...n,t:t.CellValueType.STRING,markers:{...n==null?void 0:n.markers,...ie}});let y="";const h=i.getValue(a.row,a.col);if(h&&h.parameters===`${o.v}_${d.pattern}`)return l({...n,...h.result});const T=H(d.pattern,Number(o.v),this.local);if(y=T.result,!y)return l(n);const p={v:y,t:t.CellValueType.NUMBER};if(T.color){const g=this._themeService.getCurrentTheme()[`${T.color}500`];g&&(p.interceptorStyle={cl:{rgb:g}})}return i.setValue(a.row,a.col,{result:p,parameters:`${o.v}_${d.pattern}`}),l({...n,...p})},priority:c.InterceptCellContentPriority.NUMFMT})),this.disposeWithMe(this._commandService.onCommandExecuted(n=>{if(n.id===c.SetNumfmtMutation.id){const a=n.params;Object.keys(a.values).forEach(l=>{a.values[l].ranges.forEach(v=>{t.Range.foreach(v,(d,o)=>{i.realDeleteValue(d,o)})})})}else if(n.id===c.SetRangeValuesMutation.id){const a=n.params;new t.ObjectMatrix(a.cellValue).forValue((l,u)=>{i.realDeleteValue(l,u)})}})),this.disposeWithMe(this._instanceService.getCurrentTypeOfUnit$(t.UniverInstanceType.UNIVER_SHEET).pipe(I.switchMap(n=>{var a;return(a=n==null?void 0:n.activeSheet$)!=null?a:I.of(null)}),I.skip(1)).subscribe(()=>i.reset()))}setNumfmtLocal(i){this._local$.next(i)}},s.SheetsNumfmtCellContentController=re([$(0,t.IUniverInstanceService),$(1,t.Inject(c.SheetInterceptorService)),$(2,t.Inject(t.ThemeService)),$(3,t.Inject(t.ICommandService)),$(4,t.Inject(c.INumfmtService)),$(5,t.Inject(t.LocaleService))],s.SheetsNumfmtCellContentController);class z extends t.Disposable{constructor(){super(...arguments);R(this,"_currencySymbol$",new I.BehaviorSubject("US"));R(this,"currencySymbol$",this._currencySymbol$.asObservable())}setCurrencySymbolByCountryCode(i){this._currencySymbol$.next(i)}getCurrencySymbol(){return this._currencySymbol$.getValue()}}var K=Object.defineProperty,ae=Object.getOwnPropertyDescriptor,se=(e,r,i)=>r in e?K(e,r,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[r]=i,le=(e,r,i,n)=>{for(var a=n>1?void 0:n?ae(r,i):r,l=e.length-1,u;l>=0;l--)(u=e[l])&&(a=(n?u(r,i,a):u(a))||a);return n&&a&&K(r,i,a),a},X=(e,r)=>(i,n)=>r(i,n,e),Y=(e,r,i)=>se(e,typeof r!="symbol"?r+"":r,i);s.UniverSheetsNumfmtPlugin=class extends t.Plugin{constructor(r=void 0,i,n){super(),this._config=r,this._injector=i,this._commandService=n}onStarting(){t.registerDependencies(this._injector,[[s.SheetsNumfmtCellContentController],[j],[z]]),t.touchDependencies(this._injector,[[s.SheetsNumfmtCellContentController]])}onRendered(){t.touchDependencies(this._injector,[[z]]),[B,W,x,G,N].forEach(r=>{this.disposeWithMe(this._commandService.registerCommand(r))})}},Y(s.UniverSheetsNumfmtPlugin,"pluginName",J),Y(s.UniverSheetsNumfmtPlugin,"type",t.UniverInstanceType.UNIVER_SHEET),s.UniverSheetsNumfmtPlugin=le([t.DependentOn(c.UniverSheetsPlugin),X(1,t.Inject(t.Injector)),X(2,t.ICommandService)],s.UniverSheetsNumfmtPlugin);const ue=e=>O.find(i=>e.includes(i)),ce=()=>O.map(e=>({label:e,value:e})),oe=e=>V.map(r=>({label:r.label(e),value:r.suffix(e),color:r.color})),me=()=>F.map(e=>({label:e.label,value:e.suffix})),fe=()=>L.map(e=>({label:e.label,value:e.suffix,color:e.color}));s.AddDecimalCommand=B,s.CURRENCYFORMAT=V,s.DATEFMTLISG=F,s.MenuCurrencyService=j,s.NUMBERFORMAT=L,s.SetCurrencyCommand=x,s.SetNumfmtCommand=N,s.SetPercentCommand=G,s.SubtractDecimalCommand=W,s.countryCurrencyMap=A,s.currencySymbols=O,s.getCurrencyFormatOptions=oe,s.getCurrencyOptions=ce,s.getCurrencyType=ue,s.getDateFormatOptions=me,s.getDecimalFromPattern=E,s.getDecimalString=D,s.getNumberFormatOptions=fe,s.getPatternPreview=q,s.getPatternPreviewIgnoreGeneral=H,s.getPatternType=ee,s.isPatternEqualWithoutDecimal=Q,s.isPatternHasDecimal=k,s.setPatternDecimal=P,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})});
1
+ (function(s,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("@univerjs/core"),require("@univerjs/sheets"),require("@univerjs/engine-numfmt"),require("rxjs"),require("@univerjs/engine-formula")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/sheets","@univerjs/engine-numfmt","rxjs","@univerjs/engine-formula"],t):(s=typeof globalThis<"u"?globalThis:s||self,t(s.UniverSheetsNumfmt={},s.UniverCore,s.UniverSheets,s.UniverEngineNumfmt,s.rxjs,s.UniverEngineFormula))})(this,function(s,t,c,w,I,J){"use strict";var de=Object.defineProperty;var ge=(s,t,c)=>t in s?de(s,t,{enumerable:!0,configurable:!0,writable:!0,value:c}):s[t]=c;var R=(s,t,c)=>ge(s,typeof t!="symbol"?t+"":t,c);const O=["$","£","¥","¤","֏","؋","৳","฿","₡","₦","₩","₪","₫","€","₭","₮","₱","₲","₴","₸","₹","₺","₼","₽","₾","₿"],F={US:"$",CA:"C$",GB:"£",JP:"¥",IN:"₹",AU:"A$",CN:"¥",KR:"₩",RU:"₽",AT:"€",BE:"€",CY:"€",EE:"€",FI:"€",FR:"€",DE:"€",GR:"€",IE:"€",IT:"€",LV:"€",LT:"€",LU:"€",MT:"€",NL:"€",PT:"€",SK:"€",SI:"€",ES:"€"},A=[{label:"1930-08-05",suffix:"yyyy-MM-dd"},{label:"1930/08/05",suffix:"yyyy/MM/dd"},{label:"1930年08月05日",suffix:'yyyy"年"MM"月"dd"日"'},{label:"08-05",suffix:"MM-dd"},{label:"8月5日",suffix:'M"月"d"日"'},{label:"13:30:30",suffix:"h:mm:ss"},{label:"13:30",suffix:"h:mm"},{label:"下午01:30",suffix:"A/P hh:mm"},{label:"下午1:30",suffix:"A/P h:mm"},{label:"下午1:30:30",suffix:"A/P h:mm:ss"},{label:"08-05 下午 01:30",suffix:"MM-dd A/P hh:mm"}],L=[{label:"(1,235)",suffix:"#,##0_);(#,##0)"},{label:"(1,235) ",suffix:"#,##0_);[Red](#,##0)",color:"red"},{label:"1,234.56",suffix:"#,##0.00_);#,##0.00"},{label:"1,234.56",suffix:"#,##0.00_);[Red]#,##0.00",color:"red"},{label:"-1,234.56",suffix:"#,##0.00_);-#,##0.00"},{label:"-1,234.56",suffix:"#,##0.00_);[Red]-#,##0.00",color:"red"}],V=[{label:e=>`${e}1,235`,suffix:e=>`"${e}"#,##0.00_);"${e}"#,##0.00`},{label:e=>`${e}1,235`,suffix:e=>`"${e}"#,##0.00_);[Red]"${e}"#,##0.00`,color:"red"},{label:e=>`(${e}1,235)`,suffix:e=>`"${e}"#,##0.00_);("${e}"#,##0.00)`},{label:e=>`(${e}1,235)`,suffix:e=>`"${e}"#,##0.00_);[Red]("${e}"#,##0.00)`,color:"red"},{label:e=>`-${e}1,235`,suffix:e=>`"${e}"#,##0.00_);-"${e}"#,##0.00`},{label:e=>`-${e}1,235`,suffix:e=>`"${e}"#,##0.00_);[Red]-"${e}"#,##0.00`,color:"red"}],X="SHEET_NUMFMT_PLUGIN",E=(e,r=0)=>{var n;return e&&(n=t.numfmt.getInfo(e).maxDecimals)!=null?n:r},Q=(e,r)=>{if(e&&!r||!e&&r)return!1;const i=o=>o.reduce((C,y)=>{if(C.isEnd)return C;const h=y.value||y.num;return y.type==="point"?(C.isEnd=!0,C):{...C,result:C.result+h}},{isEnd:!1,result:""}).result,n=t.numfmt.getInfo(e)._partitions,a=t.numfmt.getInfo(r)._partitions,l=i(n[0].tokens),u=i(a[0].tokens),v=i(n[1].tokens),d=i(a[1].tokens);return l===u&&v===d&&n[1].color===a[1].color},D=e=>new Array(Math.min(Math.max(0,Number(e)),30)).fill(0).join(""),P=(e,r)=>e.split(";").map(n=>/\.0?/.test(n)?n.replace(/\.0*/g,`${r>0?".":""}${D(Number(r||0))}`):/0([^0]?)|0$/.test(n)?n.replace(/0([^0]+)|0$/,`0${r>0?".":""}${D(Number(r||0))}$1`):n).join(";"),k=e=>/\.0?/.test(e)||/0([^0]?)|0$/.test(e),N={id:"sheet.command.numfmt.set.numfmt",type:t.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;const i=e.get(t.ICommandService),n=e.get(t.IUniverInstanceService),a=e.get(t.IUndoRedoService),l=c.getSheetCommandTarget(n,r);if(!l)return!1;const{unitId:u,subUnitId:v,worksheet:d}=l,o=r.values.filter(f=>!!f.pattern),C=r.values.filter(f=>!f.pattern),y=c.transformCellsToRange(u,v,o),h={unitId:u,subUnitId:v,ranges:C.map(f=>({startColumn:f.col,startRow:f.row,endColumn:f.col,endRow:f.row}))},T=[],p=[];if(o.length){const f=o.reduce((S,m)=>{w.isTextFormat(m.pattern)&&S.setValue(m.row,m.col,{t:t.CellValueType.STRING});const M=d.getCellRaw(m.row,m.col);if(M){const U=c.checkCellValueType(M.v);U!==M.t&&S.setValue(m.row,m.col,{t:U})}return S},new t.ObjectMatrix).getMatrix(),b=new t.ObjectMatrix;new t.ObjectMatrix(f).forValue((S,m)=>{const M=d.getCellRaw(S,m);M?b.setValue(S,m,{t:M.t}):b.setValue(S,m,{t:void 0})}),Object.keys(y.values).forEach(S=>{const m=y.values[S];m.ranges=c.rangeMerge(m.ranges)}),T.push({id:c.SetNumfmtMutation.id,params:y});const _=c.factorySetNumfmtUndoMutation(e,y);p.push(..._)}if(C.length){h.ranges=c.rangeMerge(h.ranges);const f=C.reduce((S,m)=>{const M=d.getCellRaw(m.row,m.col);if(M){const U=c.checkCellValueType(M.v);U!==M.t&&S.setValue(m.row,m.col,{t:U})}return S},new t.ObjectMatrix).getMatrix(),b=new t.ObjectMatrix;new t.ObjectMatrix(f).forValue((S,m)=>{const M=d.getCellRaw(S,m);M?b.setValue(S,m,{t:M.t}):b.setValue(S,m,{t:void 0})}),T.push({id:c.RemoveNumfmtMutation.id,params:h},{id:c.SetRangeValuesMutation.id,params:{unitId:u,subUnitId:v,cellValue:f}});const _=c.factoryRemoveNumfmtUndoMutation(e,h);p.push({id:c.SetRangeValuesMutation.id,params:{unitId:u,subUnitId:v,cellValue:b.getMatrix()}},..._)}const g=t.sequenceExecute(T,i).result;return g&&a.pushUndoRedo({unitID:u,undoMutations:p,redoMutations:T}),g}},x={id:"sheet.command.numfmt.add.decimal.command",type:t.CommandType.COMMAND,handler:async e=>{const r=e.get(t.ICommandService),i=e.get(c.SheetsSelectionsService),n=e.get(c.INumfmtService),a=e.get(t.IUniverInstanceService),l=i.getCurrentSelections();if(!l||!l.length)return!1;const u=c.getSheetCommandTarget(a);if(!u)return!1;const{unitId:v,subUnitId:d}=u;let o=0;l.forEach(T=>{t.Range.foreach(T.range,(p,g)=>{const f=n.getValue(v,d,p,g);if(!f){const _=u.worksheet.getCellRaw(p,g);if(!o&&_&&_.t===t.CellValueType.NUMBER&&_.v){const S=/\.(\d*)$/.exec(String(_.v));if(S){const m=S[1].length;if(!m)return;o=Math.max(o,m)}}return}const b=E(f.pattern);o=b>o?b:o})});const C=o+1,y=P(`0${C>0?".0":""}`,C),h=[];return l.forEach(T=>{t.Range.foreach(T.range,(p,g)=>{const f=n.getValue(v,d,p,g);if(!f)h.push({row:p,col:g,pattern:y});else{const b=E(f.pattern),_=P(f.pattern,b+1);_!==f.pattern&&h.push({row:p,col:g,pattern:_})}})}),h.length?await r.executeCommand(N.id,{values:h}):!1}};class j{constructor(){R(this,"_currencySymbol$",new I.BehaviorSubject("US"));R(this,"currencySymbol$",this._currencySymbol$.asObservable())}setCurrencySymbolByCountryCode(r){this._currencySymbol$.next(r)}getCurrencySymbol(){return this._currencySymbol$.getValue()}}const B={id:"sheet.command.numfmt.set.currency",type:t.CommandType.COMMAND,handler:async e=>{const r=e.get(t.ICommandService),i=e.get(c.SheetsSelectionsService),n=e.get(j),a=F[n.getCurrencySymbol()]||"$",l=i.getCurrentSelections();if(!l||!l.length)return!1;const u=[],v=V[4].suffix(a);return l.forEach(o=>{t.Range.foreach(o.range,(C,y)=>{u.push({row:C,col:y,pattern:v,type:"currency"})})}),await r.executeCommand(N.id,{values:u})}},G={id:"sheet.command.numfmt.set.percent",type:t.CommandType.COMMAND,handler:async e=>{const r=e.get(t.ICommandService),n=e.get(c.SheetsSelectionsService).getCurrentSelections();if(!n||!n.length)return!1;const a=[],l="0%";return n.forEach(v=>{t.Range.foreach(v.range,(d,o)=>{a.push({row:d,col:o,pattern:l,type:"percent"})})}),await r.executeCommand(N.id,{values:a})}},W={id:"sheet.command.numfmt.subtract.decimal.command",type:t.CommandType.COMMAND,handler:async e=>{const r=e.get(t.ICommandService),i=e.get(c.SheetsSelectionsService),n=e.get(c.INumfmtService),a=e.get(t.IUniverInstanceService),l=i.getCurrentSelections();if(!l||!l.length)return!1;const u=c.getSheetCommandTarget(a);if(!u)return!1;const{unitId:v,subUnitId:d}=u;let o=0;l.forEach(p=>{t.Range.foreach(p.range,(g,f)=>{const b=n.getValue(v,d,g,f);if(!b){const S=u.worksheet.getCellRaw(g,f);if(!o&&S&&S.t===t.CellValueType.NUMBER&&S.v){const m=/\.(\d*)$/.exec(String(S.v));if(m){const M=m[1].length;if(!M)return;o=Math.max(o,M)}}return}const _=E(b.pattern);o=_>o?_:o})});const C=o-1,y=P(`0${C>0?".0":"."}`,C),h=[];return l.forEach(p=>{t.Range.foreach(p.range,(g,f)=>{const b=n.getValue(v,d,g,f);if(!b)h.push({row:g,col:f,pattern:y});else{const _=E(b.pattern);h.push({row:g,col:f,pattern:P(b.pattern,_-1)})}})}),await r.executeCommand(N.id,{values:h})}},ee=e=>t.numfmt.getInfo(e).type||"unknown",q=(e,r,i="en")=>{const a=t.numfmt.getInfo(e)._partitions[1],l=t.numfmt.format(e,r,{locale:i,throws:!1});return r<0?{result:l,color:a.color}:{result:l}},H=(e,r,i)=>e==="General"?{result:String(J.stripErrorMargin(r))}:q(e,r,i);var te=Object.defineProperty,ne=Object.getOwnPropertyDescriptor,re=(e,r,i,n)=>{for(var a=n>1?void 0:n?ne(r,i):r,l=e.length-1,u;l>=0;l--)(u=e[l])&&(a=(n?u(r,i,a):u(a))||a);return n&&a&&te(r,i,a),a},$=(e,r)=>(i,n)=>r(i,n,e);const ie={tl:{size:6,color:"#409f11"}};s.SheetsNumfmtCellContentController=class extends t.Disposable{constructor(i,n,a,l,u,v){super();R(this,"_local$",new I.BehaviorSubject("en"));R(this,"local$",this._local$.asObservable());this._instanceService=i,this._sheetInterceptorService=n,this._themeService=a,this._commandService=l,this._numfmtService=u,this._localeService=v,this._initInterceptorCellContent()}get local(){const i=this._local$.getValue();if(i)return i;switch(this._localeService.getCurrentLocale()){case t.LocaleType.FR_FR:return"fr";case t.LocaleType.RU_RU:return"ru";case t.LocaleType.VI_VN:return"vi";case t.LocaleType.ZH_CN:return"zh-CN";case t.LocaleType.ZH_TW:return"zh-TW";case t.LocaleType.EN_US:case t.LocaleType.FA_IR:default:return"en"}}_initInterceptorCellContent(){const i=new t.ObjectMatrix;this.disposeWithMe(I.merge(this._local$,this._localeService.currentLocale$).subscribe(()=>{i.reset()})),this.disposeWithMe(this._sheetInterceptorService.intercept(c.INTERCEPTOR_POINT.CELL_CONTENT,{effect:t.InterceptorEffectEnum.Value|t.InterceptorEffectEnum.Style,handler:(n,a,l)=>{const u=a.unitId,v=a.subUnitId;let d;const o=n;if(!o)return l(n);if(n!=null&&n.s){const g=a.workbook.getStyles().get(n.s);g!=null&&g.n&&(d=g.n)}if(d||(d=this._numfmtService.getValue(u,v,a.row,a.col)),!d||c.checkCellValueType(o.v)!==t.CellValueType.NUMBER)return l(n);if(w.isTextFormat(d.pattern))return l({...n,t:t.CellValueType.STRING,markers:{...n==null?void 0:n.markers,...ie}});let y="";const h=i.getValue(a.row,a.col);if(h&&h.parameters===`${o.v}_${d.pattern}`)return l({...n,...h.result});const T=H(d.pattern,Number(o.v),this.local);if(y=T.result,!y)return l(n);const p={v:y,t:t.CellValueType.NUMBER};if(T.color){const g=this._themeService.getCurrentTheme()[`${T.color}500`];g&&(p.interceptorStyle={cl:{rgb:g}})}return i.setValue(a.row,a.col,{result:p,parameters:`${o.v}_${d.pattern}`}),l({...n,...p})},priority:c.InterceptCellContentPriority.NUMFMT})),this.disposeWithMe(this._commandService.onCommandExecuted(n=>{if(n.id===c.SetNumfmtMutation.id){const a=n.params;Object.keys(a.values).forEach(l=>{a.values[l].ranges.forEach(v=>{t.Range.foreach(v,(d,o)=>{i.realDeleteValue(d,o)})})})}else if(n.id===c.SetRangeValuesMutation.id){const a=n.params;new t.ObjectMatrix(a.cellValue).forValue((l,u)=>{i.realDeleteValue(l,u)})}})),this.disposeWithMe(this._instanceService.getCurrentTypeOfUnit$(t.UniverInstanceType.UNIVER_SHEET).pipe(I.switchMap(n=>{var a;return(a=n==null?void 0:n.activeSheet$)!=null?a:I.of(null)}),I.skip(1)).subscribe(()=>i.reset()))}setNumfmtLocal(i){this._local$.next(i)}},s.SheetsNumfmtCellContentController=re([$(0,t.IUniverInstanceService),$(1,t.Inject(c.SheetInterceptorService)),$(2,t.Inject(t.ThemeService)),$(3,t.Inject(t.ICommandService)),$(4,t.Inject(c.INumfmtService)),$(5,t.Inject(t.LocaleService))],s.SheetsNumfmtCellContentController);class z extends t.Disposable{constructor(){super(...arguments);R(this,"_currencySymbol$",new I.BehaviorSubject("US"));R(this,"currencySymbol$",this._currencySymbol$.asObservable())}setCurrencySymbolByCountryCode(i){this._currencySymbol$.next(i)}getCurrencySymbol(){return this._currencySymbol$.getValue()}}var K=Object.defineProperty,ae=Object.getOwnPropertyDescriptor,se=(e,r,i)=>r in e?K(e,r,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[r]=i,le=(e,r,i,n)=>{for(var a=n>1?void 0:n?ae(r,i):r,l=e.length-1,u;l>=0;l--)(u=e[l])&&(a=(n?u(r,i,a):u(a))||a);return n&&a&&K(r,i,a),a},Y=(e,r)=>(i,n)=>r(i,n,e),Z=(e,r,i)=>se(e,typeof r!="symbol"?r+"":r,i);s.UniverSheetsNumfmtPlugin=class extends t.Plugin{constructor(r=void 0,i,n){super(),this._config=r,this._injector=i,this._commandService=n}onStarting(){t.registerDependencies(this._injector,[[s.SheetsNumfmtCellContentController],[j],[z]]),t.touchDependencies(this._injector,[[s.SheetsNumfmtCellContentController]])}onRendered(){t.touchDependencies(this._injector,[[z]]),[x,W,B,G,N].forEach(r=>{this.disposeWithMe(this._commandService.registerCommand(r))})}},Z(s.UniverSheetsNumfmtPlugin,"pluginName",X),Z(s.UniverSheetsNumfmtPlugin,"type",t.UniverInstanceType.UNIVER_SHEET),s.UniverSheetsNumfmtPlugin=le([t.DependentOn(c.UniverSheetsPlugin),Y(1,t.Inject(t.Injector)),Y(2,t.ICommandService)],s.UniverSheetsNumfmtPlugin);const ue=e=>O.find(i=>e.includes(i)),ce=()=>O.map(e=>({label:e,value:e})),oe=e=>V.map(r=>({label:r.label(e),value:r.suffix(e),color:r.color})),me=()=>A.map(e=>({label:e.label,value:e.suffix})),fe=()=>L.map(e=>({label:e.label,value:e.suffix,color:e.color}));s.AddDecimalCommand=x,s.CURRENCYFORMAT=V,s.DATEFMTLISG=A,s.MenuCurrencyService=j,s.NUMBERFORMAT=L,s.SetCurrencyCommand=B,s.SetNumfmtCommand=N,s.SetPercentCommand=G,s.SubtractDecimalCommand=W,s.countryCurrencyMap=F,s.currencySymbols=O,s.getCurrencyFormatOptions=oe,s.getCurrencyOptions=ce,s.getCurrencyType=ue,s.getDateFormatOptions=me,s.getDecimalFromPattern=E,s.getDecimalString=D,s.getNumberFormatOptions=fe,s.getPatternPreview=q,s.getPatternPreviewIgnoreGeneral=H,s.getPatternType=ee,s.isPatternEqualWithoutDecimal=Q,s.isPatternHasDecimal=k,s.setPatternDecimal=P,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/sheets-numfmt",
3
- "version": "0.6.0-nightly.202502161605",
3
+ "version": "0.6.0-nightly.202502181606",
4
4
  "private": false,
5
5
  "description": "UniverSheet numfmt plugin",
6
6
  "author": "DreamNum <developer@univer.ai>",
@@ -53,10 +53,10 @@
53
53
  "rxjs": ">=7.0.0"
54
54
  },
55
55
  "dependencies": {
56
- "@univerjs/core": "0.6.0-nightly.202502161605",
57
- "@univerjs/engine-formula": "0.6.0-nightly.202502161605",
58
- "@univerjs/engine-numfmt": "0.6.0-nightly.202502161605",
59
- "@univerjs/sheets": "0.6.0-nightly.202502161605"
56
+ "@univerjs/core": "0.6.0-nightly.202502181606",
57
+ "@univerjs/engine-numfmt": "0.6.0-nightly.202502181606",
58
+ "@univerjs/sheets": "0.6.0-nightly.202502181606",
59
+ "@univerjs/engine-formula": "0.6.0-nightly.202502181606"
60
60
  },
61
61
  "devDependencies": {
62
62
  "rxjs": "^7.8.1",