@univerjs/sheets-numfmt 0.10.6-experimental.20250904-44da50e → 0.10.6-nightly.202509060614
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/index.js +1 -1
- package/lib/es/index.js +82 -82
- package/lib/index.js +82 -82
- package/lib/umd/index.js +1 -1
- package/package.json +5 -5
package/lib/cjs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Y=Object.defineProperty;var X=(e,r,s)=>r in e?Y(e,r,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[r]=s;var U=(e,r,s)=>X(e,typeof r!="symbol"?r+"":r,s);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@univerjs/core"),f=require("@univerjs/sheets"),I=require("rxjs"),J=require("@univerjs/engine-formula"),L=["$","£","¥","¤","֏","؋","৳","฿","៛","₡","₦","₩","₪","₫","€","₭","₮","₱","₲","₴","₸","₹","₺","₼","₽","₾","₿","﷼"],E=new Map([[t.LocaleType.EN_US,"$"],[t.LocaleType.RU_RU,"₽"],[t.LocaleType.VI_VN,"₫"],[t.LocaleType.ZH_CN,"¥"],[t.LocaleType.ZH_TW,"NT$"],[t.LocaleType.FR_FR,"€"],[t.LocaleType.FA_IR,"﷼"],[t.LocaleType.KO_KR,"₩"],[t.LocaleType.ES_ES,"€"],[t.LocaleType.CA_ES,"€"]]);function V(e){switch(e){case t.LocaleType.CA_ES:case t.LocaleType.ES_ES:case t.LocaleType.FR_FR:return{icon:"EuroIcon",symbol:E.get(e)||"€",locale:e};case t.LocaleType.RU_RU:return{icon:"RoubleIcon",symbol:E.get(e)||"₽",locale:e};case t.LocaleType.ZH_CN:return{icon:"RmbIcon",symbol:E.get(e)||"¥",locale:e};case t.LocaleType.EN_US:default:return{icon:"DollarIcon",symbol:"$",locale:t.LocaleType.EN_US}}}function F(e){return E.get(e)||"$"}function A(e,r=2){let s=r;r>127&&(s=127);let n="";return s>0&&(n=`.${"0".repeat(s)}`),`"${F(e)}"#,##0${n}_);[Red]("${F(e)}"#,##0${n})`}const j=[{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"}],B=[{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"}],G=[{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"}],P=(e,r=0)=>{var n;return e&&(n=t.numfmt.getFormatInfo(e).maxDecimals)!=null?n:r},x=e=>new Array(Math.min(Math.max(0,Number(e)),30)).fill(0).join(""),$=(e,r)=>e.split(";").map(n=>/\.0?/.test(n)?n.replace(/\.0*/g,`${r>0?".":""}${x(Number(r||0))}`):/0([^0]?)|0$/.test(n)?n.replace(/0([^0]+)|0$/,`0${r>0?".":""}${x(Number(r||0))}$1`):n).join(";"),Q=e=>/\.0?/.test(e)||/0([^0]?)|0$/.test(e),R={id:"sheet.command.numfmt.set.numfmt",type:t.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;const s=e.get(t.ICommandService),n=e.get(t.IUniverInstanceService),a=e.get(t.IUndoRedoService),o=f.getSheetCommandTarget(n,r);if(!o)return!1;const{unitId:l,subUnitId:d,worksheet:i}=o,u=r.values.filter(c=>!!c.pattern),_=r.values.filter(c=>!c.pattern),T=f.transformCellsToRange(l,d,u),S={unitId:l,subUnitId:d,ranges:_.map(c=>({startColumn:c.col,startRow:c.row,endColumn:c.col,endRow:c.row}))},M=[],C=[];if(u.length){const c=u.reduce((g,m)=>{t.isTextFormat(m.pattern)&&g.setValue(m.row,m.col,{t:t.CellValueType.STRING});const v=i.getCellRaw(m.row,m.col);if(v){const N=f.checkCellValueType(v.v);N!==v.t&&g.setValue(m.row,m.col,{t:N})}return g},new t.ObjectMatrix).getMatrix(),h=new t.ObjectMatrix;new t.ObjectMatrix(c).forValue((g,m)=>{const v=i.getCellRaw(g,m);v?h.setValue(g,m,{t:v.t}):h.setValue(g,m,{t:void 0})}),Object.keys(T.values).forEach(g=>{const m=T.values[g];m.ranges=f.rangeMerge(m.ranges)}),M.push({id:f.SetNumfmtMutation.id,params:T});const y=f.factorySetNumfmtUndoMutation(e,T);C.push(...y)}if(_.length){S.ranges=f.rangeMerge(S.ranges);const c=_.reduce((g,m)=>{const v=i.getCellRaw(m.row,m.col);if(v){const N=f.checkCellValueType(v.v);N!==v.t&&g.setValue(m.row,m.col,{t:N})}return g},new t.ObjectMatrix).getMatrix(),h=new t.ObjectMatrix;new t.ObjectMatrix(c).forValue((g,m)=>{const v=i.getCellRaw(g,m);v?h.setValue(g,m,{t:v.t}):h.setValue(g,m,{t:void 0})}),M.push({id:f.RemoveNumfmtMutation.id,params:S},{id:f.SetRangeValuesMutation.id,params:{unitId:l,subUnitId:d,cellValue:c}});const y=f.factoryRemoveNumfmtUndoMutation(e,S);C.push({id:f.SetRangeValuesMutation.id,params:{unitId:l,subUnitId:d,cellValue:h.getMatrix()}},...y)}const p=t.sequenceExecute(M,s).result;return p&&a.pushUndoRedo({unitID:l,undoMutations:C,redoMutations:M}),p}},H={id:"sheet.command.numfmt.add.decimal.command",type:t.CommandType.COMMAND,handler:async e=>{const r=e.get(t.ICommandService),s=e.get(f.SheetsSelectionsService),n=e.get(f.INumfmtService),a=e.get(t.IUniverInstanceService),o=s.getCurrentSelections();if(!o||!o.length)return!1;const l=f.getSheetCommandTarget(a);if(!l)return!1;const{unitId:d,subUnitId:i}=l;let u=0;o.forEach(M=>{t.Range.foreach(M.range,(C,p)=>{const c=n.getValue(d,i,C,p);if(!c){const y=l.worksheet.getCellRaw(C,p);if(!u&&y&&y.t===t.CellValueType.NUMBER&&y.v){const g=/\.(\d*)$/.exec(String(y.v));if(g){const m=g[1].length;if(!m)return;u=Math.max(u,m)}}return}const h=P(c.pattern);u=h>u?h:u})});const _=u+1,T=$(`0${_>0?".0":""}`,_),S=[];return o.forEach(M=>{t.Range.foreach(M.range,(C,p)=>{const c=n.getValue(d,i,C,p);if(!c)S.push({row:C,col:p,pattern:T});else{const h=P(c.pattern),y=$(c.pattern,h+1);y!==c.pattern&&S.push({row:C,col:p,pattern:y})}})}),S.length?await r.executeCommand(R.id,{values:S}):!1}},W={id:"sheet.command.numfmt.set.currency",type:t.CommandType.COMMAND,handler:async e=>{const r=e.get(t.ICommandService),s=e.get(f.SheetsSelectionsService),n=e.get(t.LocaleService),a=s.getCurrentSelections();if(!a||!a.length)return!1;const o=[],l=V(n.getCurrentLocale()),d=A(l.locale);return a.forEach(u=>{t.Range.foreach(u.range,(_,T)=>{o.push({row:_,col:T,pattern:d,type:"currency"})})}),await r.executeCommand(R.id,{values:o})}},K={id:"sheet.command.numfmt.set.percent",type:t.CommandType.COMMAND,handler:async e=>{const r=e.get(t.ICommandService),n=e.get(f.SheetsSelectionsService).getCurrentSelections();if(!n||!n.length)return!1;const a=[],o="0%";return n.forEach(d=>{t.Range.foreach(d.range,(i,u)=>{a.push({row:i,col:u,pattern:o,type:"percent"})})}),await r.executeCommand(R.id,{values:a})}},q={id:"sheet.command.numfmt.subtract.decimal.command",type:t.CommandType.COMMAND,handler:async e=>{const r=e.get(t.ICommandService),s=e.get(f.SheetsSelectionsService),n=e.get(f.INumfmtService),a=e.get(t.IUniverInstanceService),o=s.getCurrentSelections();if(!o||!o.length)return!1;const l=f.getSheetCommandTarget(a);if(!l)return!1;const{unitId:d,subUnitId:i}=l;let u=0;o.forEach(C=>{t.Range.foreach(C.range,(p,c)=>{const h=n.getValue(d,i,p,c);if(!h){const g=l.worksheet.getCellRaw(p,c);if(!u&&g&&g.t===t.CellValueType.NUMBER&&g.v){const m=/\.(\d*)$/.exec(String(g.v));if(m){const v=m[1].length;if(!v)return;u=Math.max(u,v)}}return}const y=P(h.pattern);u=y>u?y:u})});const _=u-1,T=$(`0${_>0?".0":"."}`,_),S=[];return o.forEach(C=>{t.Range.foreach(C.range,(p,c)=>{const h=n.getValue(d,i,p,c);if(!h)S.push({row:p,col:c,pattern:T});else{const y=P(h.pattern);S.push({row:p,col:c,pattern:$(h.pattern,y-1)})}})}),await r.executeCommand(R.id,{values:S})}},D="sheets-numfmt.config",w={},ee=e=>t.numfmt.getFormatInfo(e).type||"unknown",Z=(e,r,s="en")=>{const n=t.numfmt.formatColor(e,r),a=n?String(n):void 0,o=t.numfmt.format(e,r,{locale:s,throws:!1});return r<0?{result:o,color:a}:{result:o}},k=(e,r,s)=>e===t.DEFAULT_NUMBER_FORMAT?{result:String(J.stripErrorMargin(r))}:Z(e,r,s),te=new Set(["m d"]),ne=new Set(["h:mm AM/PM","hh:mm AM/PM"]),re=e=>{var n,a;const r=(a=(n=t.numfmt.parseDate(e))!=null?n:t.numfmt.parseTime(e))!=null?a:t.numfmt.parseNumber(e);if(!r)return null;const{z:s}=r;return s&&(te.has(s)||ne.has(s)&&!/\s(A|AM|P|PM)$/i.test(e))?null:r};var se=Object.getOwnPropertyDescriptor,ae=(e,r,s,n)=>{for(var a=n>1?void 0:n?se(r,s):r,o=e.length-1,l;o>=0;o--)(l=e[o])&&(a=l(a)||a);return a},b=(e,r)=>(s,n)=>r(s,n,e);const oe={tl:{size:6,color:"#409f11"}};exports.SheetsNumfmtCellContentController=class extends t.Disposable{constructor(s,n,a,o,l,d,i){super();U(this,"_locale$",new I.BehaviorSubject("en"));U(this,"locale$",this._locale$.asObservable());this._instanceService=s,this._sheetInterceptorService=n,this._themeService=a,this._commandService=o,this._numfmtService=l,this._localeService=d,this._configService=i,this._initInterceptorCellContent()}get locale(){const s=this._locale$.getValue();if(s)return s;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.KO_KR:return"ko";case t.LocaleType.ZH_TW:return"zh-TW";case t.LocaleType.ES_ES:case t.LocaleType.CA_ES:return"es";case t.LocaleType.EN_US:case t.LocaleType.FA_IR:default:return"en"}}_initInterceptorCellContent(){const s=new t.ObjectMatrix;this.disposeWithMe(I.merge(this._locale$,this._localeService.currentLocale$).subscribe(()=>{s.reset()})),this.disposeWithMe(this._sheetInterceptorService.intercept(f.INTERCEPTOR_POINT.CELL_CONTENT,{effect:t.InterceptorEffectEnum.Value|t.InterceptorEffectEnum.Style,handler:(n,a,o)=>{var C,p;if(!n||n.v===void 0||n.v===null)return o(n);const l=a.unitId,d=a.subUnitId;let i;if(n!=null&&n.s){const c=a.workbook.getStyles().get(n.s);c!=null&&c.n&&(i=c.n)}if(i||(i=this._numfmtService.getValue(l,d,a.row,a.col)),t.isDefaultFormat(i==null?void 0:i.pattern)||n.t!==t.CellValueType.NUMBER&&f.checkCellValueType(n.v)!==t.CellValueType.NUMBER)return o(n);const u=n;if((!n||n===a.rawData)&&(n={...a.rawData}),t.isTextFormat(i==null?void 0:i.pattern))return(C=this._configService.getConfig(D))!=null&&C.disableTextFormatMark?(n.t=t.CellValueType.STRING,o(n)):(n.t=t.CellValueType.STRING,n.markers={...n==null?void 0:n.markers,...oe},o(n));let _="";const T=s.getValue(a.row,a.col);if(T&&T.parameters===`${u.v}_${i==null?void 0:i.pattern}`)return o({...n,...T.result});const S=k(i==null?void 0:i.pattern,Number(u.v),this.locale);if(_=S.result,!_)return o(n);const M={v:_,t:t.CellValueType.NUMBER};if(S.color){const c=(p=this._themeService.getColorFromTheme(`${S.color}.500`))!=null?p:S.color;c&&(M.interceptorStyle={cl:{rgb:c}})}return s.setValue(a.row,a.col,{result:M,parameters:`${u.v}_${i==null?void 0:i.pattern}`}),Object.assign(n,M),o(n)},priority:f.InterceptCellContentPriority.NUMFMT})),this.disposeWithMe(this._commandService.onCommandExecuted(n=>{if(n.id===f.SetNumfmtMutation.id){const a=n.params;Object.keys(a.values).forEach(o=>{a.values[o].ranges.forEach(d=>{t.Range.foreach(d,(i,u)=>{s.realDeleteValue(i,u)})})})}else if(n.id===f.SetRangeValuesMutation.id){const a=n.params;new t.ObjectMatrix(a.cellValue).forValue((o,l)=>{s.realDeleteValue(o,l)})}})),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(()=>s.reset()))}setNumfmtLocal(s){this._locale$.next(s)}};exports.SheetsNumfmtCellContentController=ae([b(0,t.IUniverInstanceService),b(1,t.Inject(f.SheetInterceptorService)),b(2,t.Inject(t.ThemeService)),b(3,t.Inject(t.ICommandService)),b(4,t.Inject(f.INumfmtService)),b(5,t.Inject(t.LocaleService)),b(6,t.IConfigService)],exports.SheetsNumfmtCellContentController);const ce="SHEET_NUMFMT_PLUGIN";var ie=Object.defineProperty,le=Object.getOwnPropertyDescriptor,ue=(e,r,s)=>r in e?ie(e,r,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[r]=s,me=(e,r,s,n)=>{for(var a=n>1?void 0:n?le(r,s):r,o=e.length-1,l;o>=0;o--)(l=e[o])&&(a=l(a)||a);return a},O=(e,r)=>(s,n)=>r(s,n,e),z=(e,r,s)=>ue(e,typeof r!="symbol"?r+"":r,s);exports.UniverSheetsNumfmtPlugin=class extends t.Plugin{constructor(r=w,s,n,a){super(),this._config=r,this._injector=s,this._configService=n,this._commandService=a;const{...o}=t.merge({},w,this._config);this._configService.setConfig(D,o)}onStarting(){t.registerDependencies(this._injector,[[exports.SheetsNumfmtCellContentController]]),t.touchDependencies(this._injector,[[exports.SheetsNumfmtCellContentController]])}onRendered(){[H,q,W,K,R].forEach(r=>{this.disposeWithMe(this._commandService.registerCommand(r))})}};z(exports.UniverSheetsNumfmtPlugin,"pluginName",ce);z(exports.UniverSheetsNumfmtPlugin,"type",t.UniverInstanceType.UNIVER_SHEET);exports.UniverSheetsNumfmtPlugin=me([t.DependentOn(f.UniverSheetsPlugin),O(1,t.Inject(t.Injector)),O(2,t.IConfigService),O(3,t.ICommandService)],exports.UniverSheetsNumfmtPlugin);const fe=e=>L.find(s=>e.includes(s)),ge=()=>L.map(e=>({label:e,value:e})),de=e=>G.map(r=>({label:r.label(e),value:r.suffix(e),color:r.color})),pe=()=>j.map(e=>({label:e.label,value:e.suffix})),Se=()=>B.map(e=>({label:e.label,value:e.suffix,color:e.color}));exports.AddDecimalCommand=H;exports.CURRENCYFORMAT=G;exports.DATEFMTLISG=j;exports.NUMBERFORMAT=B;exports.SHEETS_NUMFMT_PLUGIN_CONFIG_KEY=D;exports.SetCurrencyCommand=W;exports.SetNumfmtCommand=R;exports.SetPercentCommand=K;exports.SubtractDecimalCommand=q;exports.currencySymbols=L;exports.getCurrencyFormat=A;exports.getCurrencyFormatOptions=de;exports.getCurrencyOptions=ge;exports.getCurrencySymbolByLocale=F;exports.getCurrencySymbolIconByLocale=V;exports.getCurrencyType=fe;exports.getDateFormatOptions=pe;exports.getDecimalFromPattern=P;exports.getDecimalString=x;exports.getNumberFormatOptions=Se;exports.getNumfmtParseValueFilter=re;exports.getPatternPreview=Z;exports.getPatternPreviewIgnoreGeneral=k;exports.getPatternType=ee;exports.isPatternHasDecimal=Q;exports.localeCurrencySymbolMap=E;exports.setPatternDecimal=$;
|
|
1
|
+
"use strict";var Y=Object.defineProperty;var X=(e,r,s)=>r in e?Y(e,r,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[r]=s;var O=(e,r,s)=>X(e,typeof r!="symbol"?r+"":r,s);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@univerjs/core"),f=require("@univerjs/sheets"),I=require("rxjs"),J=require("@univerjs/engine-formula"),x=["$","£","¥","¤","֏","؋","৳","฿","៛","₡","₦","₩","₪","₫","€","₭","₮","₱","₲","₴","₸","₹","₺","₼","₽","₾","₿","﷼"],E=new Map([[t.LocaleType.EN_US,"$"],[t.LocaleType.RU_RU,"₽"],[t.LocaleType.VI_VN,"₫"],[t.LocaleType.ZH_CN,"¥"],[t.LocaleType.ZH_TW,"NT$"],[t.LocaleType.FR_FR,"€"],[t.LocaleType.FA_IR,"﷼"],[t.LocaleType.KO_KR,"₩"],[t.LocaleType.ES_ES,"€"],[t.LocaleType.CA_ES,"€"]]);function w(e){switch(e){case t.LocaleType.CA_ES:case t.LocaleType.ES_ES:case t.LocaleType.FR_FR:return{icon:"EuroIcon",symbol:E.get(e)||"€",locale:e};case t.LocaleType.RU_RU:return{icon:"RoubleIcon",symbol:E.get(e)||"₽",locale:e};case t.LocaleType.ZH_CN:return{icon:"RmbIcon",symbol:E.get(e)||"¥",locale:e};case t.LocaleType.EN_US:default:return{icon:"DollarIcon",symbol:"$",locale:t.LocaleType.EN_US}}}function F(e){return E.get(e)||"$"}function A(e,r=2){let s=r;r>127&&(s=127);let n="";return s>0&&(n=`.${"0".repeat(s)}`),`"${F(e)}"#,##0${n}_);[Red]("${F(e)}"#,##0${n})`}const j=[{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"}],B=[{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"}],G=[{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"}],P=(e,r=0)=>{var n;return e&&(n=t.numfmt.getFormatInfo(e).maxDecimals)!=null?n:r},L=e=>new Array(Math.min(Math.max(0,Number(e)),30)).fill(0).join(""),$=(e,r)=>e.split(";").map(n=>/\.0?/.test(n)?n.replace(/\.0*/g,`${r>0?".":""}${L(Number(r||0))}`):/0([^0]?)|0$/.test(n)?n.replace(/0([^0]+)|0$/,`0${r>0?".":""}${L(Number(r||0))}$1`):n).join(";"),Q=e=>/\.0?/.test(e)||/0([^0]?)|0$/.test(e),R={id:"sheet.command.numfmt.set.numfmt",type:t.CommandType.COMMAND,handler:(e,r)=>{if(!r)return!1;const s=e.get(t.ICommandService),n=e.get(t.IUniverInstanceService),a=e.get(t.IUndoRedoService),o=f.getSheetCommandTarget(n,r);if(!o)return!1;const{unitId:l,subUnitId:d,worksheet:i}=o,u=r.values.filter(c=>!!c.pattern),_=r.values.filter(c=>!c.pattern),T=f.transformCellsToRange(l,d,u),S={unitId:l,subUnitId:d,ranges:_.map(c=>({startColumn:c.col,startRow:c.row,endColumn:c.col,endRow:c.row}))},M=[],C=[];if(u.length){const c=u.reduce((g,m)=>{t.isTextFormat(m.pattern)&&g.setValue(m.row,m.col,{t:t.CellValueType.STRING});const v=i.getCellRaw(m.row,m.col);if(v){const N=f.checkCellValueType(v.v);N!==v.t&&g.setValue(m.row,m.col,{t:N})}return g},new t.ObjectMatrix).getMatrix(),h=new t.ObjectMatrix;new t.ObjectMatrix(c).forValue((g,m)=>{const v=i.getCellRaw(g,m);v?h.setValue(g,m,{t:v.t}):h.setValue(g,m,{t:void 0})}),Object.keys(T.values).forEach(g=>{const m=T.values[g];m.ranges=f.rangeMerge(m.ranges)}),M.push({id:f.SetNumfmtMutation.id,params:T});const y=f.factorySetNumfmtUndoMutation(e,T);C.push(...y)}if(_.length){S.ranges=f.rangeMerge(S.ranges);const c=_.reduce((g,m)=>{const v=i.getCellRaw(m.row,m.col);if(v){const N=f.checkCellValueType(v.v);N!==v.t&&g.setValue(m.row,m.col,{t:N})}return g},new t.ObjectMatrix).getMatrix(),h=new t.ObjectMatrix;new t.ObjectMatrix(c).forValue((g,m)=>{const v=i.getCellRaw(g,m);v?h.setValue(g,m,{t:v.t}):h.setValue(g,m,{t:void 0})}),M.push({id:f.RemoveNumfmtMutation.id,params:S},{id:f.SetRangeValuesMutation.id,params:{unitId:l,subUnitId:d,cellValue:c}});const y=f.factoryRemoveNumfmtUndoMutation(e,S);C.push({id:f.SetRangeValuesMutation.id,params:{unitId:l,subUnitId:d,cellValue:h.getMatrix()}},...y)}const p=t.sequenceExecute(M,s).result;return p&&a.pushUndoRedo({unitID:l,undoMutations:C,redoMutations:M}),p}},H={id:"sheet.command.numfmt.add.decimal.command",type:t.CommandType.COMMAND,handler:async e=>{const r=e.get(t.ICommandService),s=e.get(f.SheetsSelectionsService),n=e.get(f.INumfmtService),a=e.get(t.IUniverInstanceService),o=s.getCurrentSelections();if(!o||!o.length)return!1;const l=f.getSheetCommandTarget(a);if(!l)return!1;const{unitId:d,subUnitId:i}=l;let u=0;o.forEach(M=>{t.Range.foreach(M.range,(C,p)=>{const c=n.getValue(d,i,C,p);if(!c){const y=l.worksheet.getCellRaw(C,p);if(!u&&y&&y.t===t.CellValueType.NUMBER&&y.v){const g=/\.(\d*)$/.exec(String(y.v));if(g){const m=g[1].length;if(!m)return;u=Math.max(u,m)}}return}const h=P(c.pattern);u=h>u?h:u})});const _=u+1,T=$(`0${_>0?".0":""}`,_),S=[];return o.forEach(M=>{t.Range.foreach(M.range,(C,p)=>{const c=n.getValue(d,i,C,p);if(!c)S.push({row:C,col:p,pattern:T});else{const h=P(c.pattern),y=$(c.pattern,h+1);y!==c.pattern&&S.push({row:C,col:p,pattern:y})}})}),S.length?await r.executeCommand(R.id,{values:S}):!1}},W={id:"sheet.command.numfmt.set.currency",type:t.CommandType.COMMAND,handler:async e=>{const r=e.get(t.ICommandService),s=e.get(f.SheetsSelectionsService),n=e.get(t.LocaleService),a=s.getCurrentSelections();if(!a||!a.length)return!1;const o=[],l=w(n.getCurrentLocale()),d=A(l.locale);return a.forEach(u=>{t.Range.foreach(u.range,(_,T)=>{o.push({row:_,col:T,pattern:d,type:"currency"})})}),await r.executeCommand(R.id,{values:o})}},K={id:"sheet.command.numfmt.set.percent",type:t.CommandType.COMMAND,handler:async e=>{const r=e.get(t.ICommandService),n=e.get(f.SheetsSelectionsService).getCurrentSelections();if(!n||!n.length)return!1;const a=[],o="0%";return n.forEach(d=>{t.Range.foreach(d.range,(i,u)=>{a.push({row:i,col:u,pattern:o,type:"percent"})})}),await r.executeCommand(R.id,{values:a})}},q={id:"sheet.command.numfmt.subtract.decimal.command",type:t.CommandType.COMMAND,handler:async e=>{const r=e.get(t.ICommandService),s=e.get(f.SheetsSelectionsService),n=e.get(f.INumfmtService),a=e.get(t.IUniverInstanceService),o=s.getCurrentSelections();if(!o||!o.length)return!1;const l=f.getSheetCommandTarget(a);if(!l)return!1;const{unitId:d,subUnitId:i}=l;let u=0;o.forEach(C=>{t.Range.foreach(C.range,(p,c)=>{const h=n.getValue(d,i,p,c);if(!h){const g=l.worksheet.getCellRaw(p,c);if(!u&&g&&g.t===t.CellValueType.NUMBER&&g.v){const m=/\.(\d*)$/.exec(String(g.v));if(m){const v=m[1].length;if(!v)return;u=Math.max(u,v)}}return}const y=P(h.pattern);u=y>u?y:u})});const _=u-1,T=$(`0${_>0?".0":"."}`,_),S=[];return o.forEach(C=>{t.Range.foreach(C.range,(p,c)=>{const h=n.getValue(d,i,p,c);if(!h)S.push({row:p,col:c,pattern:T});else{const y=P(h.pattern);S.push({row:p,col:c,pattern:$(h.pattern,y-1)})}})}),await r.executeCommand(R.id,{values:S})}},V="sheets-numfmt.config",D={},ee=e=>t.numfmt.getFormatInfo(e).type||"unknown",Z=(e,r,s="en")=>{const n=t.numfmt.formatColor(e,r),a=n?String(n):void 0,o=t.numfmt.format(e,r,{locale:s,throws:!1});return r<0?{result:o,color:a}:{result:o}},k=(e,r,s)=>e===t.DEFAULT_NUMBER_FORMAT?{result:String(J.stripErrorMargin(r))}:Z(e,r,s),te=new Set(["m d"]),ne=new Set(["h:mm AM/PM","hh:mm AM/PM"]),re=e=>{var n,a;const r=(a=(n=t.numfmt.parseDate(e))!=null?n:t.numfmt.parseTime(e))!=null?a:t.numfmt.parseNumber(e);if(!r)return null;const{z:s}=r;return s&&(te.has(s)||ne.has(s)&&!/\s(A|AM|P|PM)$/i.test(e))?null:r};var se=Object.getOwnPropertyDescriptor,ae=(e,r,s,n)=>{for(var a=n>1?void 0:n?se(r,s):r,o=e.length-1,l;o>=0;o--)(l=e[o])&&(a=l(a)||a);return a},b=(e,r)=>(s,n)=>r(s,n,e);const oe={tl:{size:6,color:"#409f11"}};exports.SheetsNumfmtCellContentController=class extends t.Disposable{constructor(s,n,a,o,l,d,i){super();O(this,"_locale$",new I.BehaviorSubject("en"));O(this,"locale$",this._locale$.asObservable());this._instanceService=s,this._sheetInterceptorService=n,this._themeService=a,this._commandService=o,this._numfmtService=l,this._localeService=d,this._configService=i,this._initInterceptorCellContent()}get locale(){const s=this._locale$.getValue();if(s)return s;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.KO_KR:return"ko";case t.LocaleType.ZH_TW:return"zh-TW";case t.LocaleType.ES_ES:case t.LocaleType.CA_ES:return"es";case t.LocaleType.EN_US:case t.LocaleType.FA_IR:default:return"en"}}_initInterceptorCellContent(){const s=new t.ObjectMatrix;this.disposeWithMe(I.merge(this._locale$,this._localeService.currentLocale$).subscribe(()=>{s.reset()})),this.disposeWithMe(this._sheetInterceptorService.intercept(f.INTERCEPTOR_POINT.CELL_CONTENT,{effect:t.InterceptorEffectEnum.Value|t.InterceptorEffectEnum.Style,handler:(n,a,o)=>{var C,p;if(!n||n.v===void 0||n.v===null||n.t===t.CellValueType.BOOLEAN||n.t===t.CellValueType.FORCE_STRING)return o(n);const l=a.unitId,d=a.subUnitId;let i;if(n!=null&&n.s){const c=a.workbook.getStyles().get(n.s);c!=null&&c.n&&(i=c.n)}if(i||(i=this._numfmtService.getValue(l,d,a.row,a.col)),t.isDefaultFormat(i==null?void 0:i.pattern)||n.t!==t.CellValueType.NUMBER&&f.checkCellValueType(n.v,n.t)!==t.CellValueType.NUMBER)return o(n);const u=n;if((!n||n===a.rawData)&&(n={...a.rawData}),t.isTextFormat(i==null?void 0:i.pattern))return(C=this._configService.getConfig(V))!=null&&C.disableTextFormatMark?(n.t=t.CellValueType.STRING,o(n)):(n.t=t.CellValueType.STRING,n.markers={...n==null?void 0:n.markers,...oe},o(n));let _="";const T=s.getValue(a.row,a.col);if(T&&T.parameters===`${u.v}_${i==null?void 0:i.pattern}`)return o({...n,...T.result});const S=k(i==null?void 0:i.pattern,Number(u.v),this.locale);if(_=S.result,!_)return o(n);const M={v:_,t:t.CellValueType.NUMBER};if(S.color){const c=(p=this._themeService.getColorFromTheme(`${S.color}.500`))!=null?p:S.color;c&&(M.interceptorStyle={cl:{rgb:c}})}return s.setValue(a.row,a.col,{result:M,parameters:`${u.v}_${i==null?void 0:i.pattern}`}),Object.assign(n,M),o(n)},priority:f.InterceptCellContentPriority.NUMFMT})),this.disposeWithMe(this._commandService.onCommandExecuted(n=>{if(n.id===f.SetNumfmtMutation.id){const a=n.params;Object.keys(a.values).forEach(o=>{a.values[o].ranges.forEach(d=>{t.Range.foreach(d,(i,u)=>{s.realDeleteValue(i,u)})})})}else if(n.id===f.SetRangeValuesMutation.id){const a=n.params;new t.ObjectMatrix(a.cellValue).forValue((o,l)=>{s.realDeleteValue(o,l)})}})),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(()=>s.reset()))}setNumfmtLocal(s){this._locale$.next(s)}};exports.SheetsNumfmtCellContentController=ae([b(0,t.IUniverInstanceService),b(1,t.Inject(f.SheetInterceptorService)),b(2,t.Inject(t.ThemeService)),b(3,t.Inject(t.ICommandService)),b(4,t.Inject(f.INumfmtService)),b(5,t.Inject(t.LocaleService)),b(6,t.IConfigService)],exports.SheetsNumfmtCellContentController);const ce="SHEET_NUMFMT_PLUGIN";var ie=Object.defineProperty,le=Object.getOwnPropertyDescriptor,ue=(e,r,s)=>r in e?ie(e,r,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[r]=s,me=(e,r,s,n)=>{for(var a=n>1?void 0:n?le(r,s):r,o=e.length-1,l;o>=0;o--)(l=e[o])&&(a=l(a)||a);return a},U=(e,r)=>(s,n)=>r(s,n,e),z=(e,r,s)=>ue(e,typeof r!="symbol"?r+"":r,s);exports.UniverSheetsNumfmtPlugin=class extends t.Plugin{constructor(r=D,s,n,a){super(),this._config=r,this._injector=s,this._configService=n,this._commandService=a;const{...o}=t.merge({},D,this._config);this._configService.setConfig(V,o)}onStarting(){t.registerDependencies(this._injector,[[exports.SheetsNumfmtCellContentController]]),t.touchDependencies(this._injector,[[exports.SheetsNumfmtCellContentController]])}onRendered(){[H,q,W,K,R].forEach(r=>{this.disposeWithMe(this._commandService.registerCommand(r))})}};z(exports.UniverSheetsNumfmtPlugin,"pluginName",ce);z(exports.UniverSheetsNumfmtPlugin,"type",t.UniverInstanceType.UNIVER_SHEET);exports.UniverSheetsNumfmtPlugin=me([t.DependentOn(f.UniverSheetsPlugin),U(1,t.Inject(t.Injector)),U(2,t.IConfigService),U(3,t.ICommandService)],exports.UniverSheetsNumfmtPlugin);const fe=e=>x.find(s=>e.includes(s)),ge=()=>x.map(e=>({label:e,value:e})),de=e=>G.map(r=>({label:r.label(e),value:r.suffix(e),color:r.color})),pe=()=>j.map(e=>({label:e.label,value:e.suffix})),Se=()=>B.map(e=>({label:e.label,value:e.suffix,color:e.color}));exports.AddDecimalCommand=H;exports.CURRENCYFORMAT=G;exports.DATEFMTLISG=j;exports.NUMBERFORMAT=B;exports.SHEETS_NUMFMT_PLUGIN_CONFIG_KEY=V;exports.SetCurrencyCommand=W;exports.SetNumfmtCommand=R;exports.SetPercentCommand=K;exports.SubtractDecimalCommand=q;exports.currencySymbols=x;exports.getCurrencyFormat=A;exports.getCurrencyFormatOptions=de;exports.getCurrencyOptions=ge;exports.getCurrencySymbolByLocale=F;exports.getCurrencySymbolIconByLocale=w;exports.getCurrencyType=fe;exports.getDateFormatOptions=pe;exports.getDecimalFromPattern=P;exports.getDecimalString=L;exports.getNumberFormatOptions=Se;exports.getNumfmtParseValueFilter=re;exports.getPatternPreview=Z;exports.getPatternPreviewIgnoreGeneral=k;exports.getPatternType=ee;exports.isPatternHasDecimal=Q;exports.localeCurrencySymbolMap=E;exports.setPatternDecimal=$;
|
package/lib/es/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
var oe = Object.defineProperty;
|
|
2
2
|
var ae = (e, n, t) => n in e ? oe(e, n, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[n] = t;
|
|
3
3
|
var L = (e, n, t) => ae(e, typeof n != "symbol" ? n + "" : n, t);
|
|
4
|
-
import { LocaleType as m, numfmt as
|
|
5
|
-
import { getSheetCommandTarget as W, transformCellsToRange as ve, checkCellValueType as
|
|
6
|
-
import { BehaviorSubject as
|
|
7
|
-
import { stripErrorMargin as
|
|
4
|
+
import { LocaleType as m, numfmt as E, CommandType as U, ICommandService as I, IUniverInstanceService as V, IUndoRedoService as ie, isTextFormat as X, CellValueType as b, ObjectMatrix as R, sequenceExecute as ce, Range as $, LocaleService as J, DEFAULT_NUMBER_FORMAT as le, Inject as T, ThemeService as ue, IConfigService as Q, Disposable as me, isDefaultFormat as fe, InterceptorEffectEnum as Z, UniverInstanceType as ee, DependentOn as de, Injector as ge, Plugin as he, merge as pe, registerDependencies as _e, touchDependencies as Se } from "@univerjs/core";
|
|
5
|
+
import { getSheetCommandTarget as W, transformCellsToRange as ve, checkCellValueType as H, rangeMerge as z, SetNumfmtMutation as te, factorySetNumfmtUndoMutation as Ce, RemoveNumfmtMutation as Me, SetRangeValuesMutation as G, factoryRemoveNumfmtUndoMutation as ye, SheetsSelectionsService as j, INumfmtService as K, SheetInterceptorService as be, INTERCEPTOR_POINT as Re, InterceptCellContentPriority as Ne, UniverSheetsPlugin as Ee } from "@univerjs/sheets";
|
|
6
|
+
import { BehaviorSubject as $e, merge as Ie, switchMap as Te, of as Pe, skip as Ue } from "rxjs";
|
|
7
|
+
import { stripErrorMargin as Oe } from "@univerjs/engine-formula";
|
|
8
8
|
const ne = [
|
|
9
9
|
"$",
|
|
10
10
|
"£",
|
|
@@ -34,7 +34,7 @@ const ne = [
|
|
|
34
34
|
"₾",
|
|
35
35
|
"₿",
|
|
36
36
|
"﷼"
|
|
37
|
-
],
|
|
37
|
+
], w = /* @__PURE__ */ new Map([
|
|
38
38
|
[m.EN_US, "$"],
|
|
39
39
|
[m.RU_RU, "₽"],
|
|
40
40
|
[m.VI_VN, "₫"],
|
|
@@ -46,26 +46,26 @@ const ne = [
|
|
|
46
46
|
[m.ES_ES, "€"],
|
|
47
47
|
[m.CA_ES, "€"]
|
|
48
48
|
]);
|
|
49
|
-
function
|
|
49
|
+
function we(e) {
|
|
50
50
|
switch (e) {
|
|
51
51
|
case m.CA_ES:
|
|
52
52
|
case m.ES_ES:
|
|
53
53
|
case m.FR_FR:
|
|
54
54
|
return {
|
|
55
55
|
icon: "EuroIcon",
|
|
56
|
-
symbol:
|
|
56
|
+
symbol: w.get(e) || "€",
|
|
57
57
|
locale: e
|
|
58
58
|
};
|
|
59
59
|
case m.RU_RU:
|
|
60
60
|
return {
|
|
61
61
|
icon: "RoubleIcon",
|
|
62
|
-
symbol:
|
|
62
|
+
symbol: w.get(e) || "₽",
|
|
63
63
|
locale: e
|
|
64
64
|
};
|
|
65
65
|
case m.ZH_CN:
|
|
66
66
|
return {
|
|
67
67
|
icon: "RmbIcon",
|
|
68
|
-
symbol:
|
|
68
|
+
symbol: w.get(e) || "¥",
|
|
69
69
|
locale: e
|
|
70
70
|
};
|
|
71
71
|
case m.EN_US:
|
|
@@ -78,9 +78,9 @@ function xe(e) {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
function k(e) {
|
|
81
|
-
return
|
|
81
|
+
return w.get(e) || "$";
|
|
82
82
|
}
|
|
83
|
-
function
|
|
83
|
+
function xe(e, n = 2) {
|
|
84
84
|
let t = n;
|
|
85
85
|
n > 127 && (t = 127);
|
|
86
86
|
let r = "";
|
|
@@ -159,7 +159,7 @@ const De = [
|
|
|
159
159
|
suffix: "#,##0.00_);[Red]-#,##0.00",
|
|
160
160
|
color: "red"
|
|
161
161
|
}
|
|
162
|
-
],
|
|
162
|
+
], Ae = [
|
|
163
163
|
{
|
|
164
164
|
label: (e) => `${e}1,235`,
|
|
165
165
|
suffix: (e) => `"${e}"#,##0.00_);"${e}"#,##0.00`
|
|
@@ -187,23 +187,23 @@ const De = [
|
|
|
187
187
|
suffix: (e) => `"${e}"#,##0.00_);[Red]-"${e}"#,##0.00`,
|
|
188
188
|
color: "red"
|
|
189
189
|
}
|
|
190
|
-
],
|
|
190
|
+
], x = (e, n = 0) => {
|
|
191
191
|
var r;
|
|
192
|
-
return e && (r =
|
|
192
|
+
return e && (r = E.getFormatInfo(e).maxDecimals) != null ? r : n;
|
|
193
193
|
}, Y = (e) => new Array(Math.min(Math.max(0, Number(e)), 30)).fill(0).join(""), D = (e, n) => e.split(";").map((r) => /\.0?/.test(r) ? r.replace(
|
|
194
194
|
/\.0*/g,
|
|
195
195
|
`${n > 0 ? "." : ""}${Y(Number(n || 0))}`
|
|
196
196
|
) : /0([^0]?)|0$/.test(r) ? r.replace(
|
|
197
197
|
/0([^0]+)|0$/,
|
|
198
198
|
`0${n > 0 ? "." : ""}${Y(Number(n || 0))}$1`
|
|
199
|
-
) : r).join(";"), ot = (e) => /\.0?/.test(e) || /0([^0]?)|0$/.test(e),
|
|
199
|
+
) : r).join(";"), ot = (e) => /\.0?/.test(e) || /0([^0]?)|0$/.test(e), O = {
|
|
200
200
|
id: "sheet.command.numfmt.set.numfmt",
|
|
201
201
|
type: U.COMMAND,
|
|
202
202
|
// eslint-disable-next-line max-lines-per-function
|
|
203
203
|
handler: (e, n) => {
|
|
204
204
|
if (!n)
|
|
205
205
|
return !1;
|
|
206
|
-
const t = e.get(I), r = e.get(
|
|
206
|
+
const t = e.get(I), r = e.get(V), s = e.get(ie), a = W(r, n);
|
|
207
207
|
if (!a) return !1;
|
|
208
208
|
const { unitId: c, subUnitId: o, worksheet: g } = a, u = n.values.filter((l) => !!l.pattern), C = n.values.filter((l) => !l.pattern), M = ve(c, o, u), p = {
|
|
209
209
|
unitId: c,
|
|
@@ -217,15 +217,15 @@ const De = [
|
|
|
217
217
|
}, y = [], _ = [];
|
|
218
218
|
if (u.length) {
|
|
219
219
|
const l = u.reduce((d, i) => {
|
|
220
|
-
X(i.pattern) && d.setValue(i.row, i.col, { t:
|
|
220
|
+
X(i.pattern) && d.setValue(i.row, i.col, { t: b.STRING });
|
|
221
221
|
const v = g.getCellRaw(i.row, i.col);
|
|
222
222
|
if (v) {
|
|
223
|
-
const P =
|
|
223
|
+
const P = H(v.v);
|
|
224
224
|
P !== v.t && d.setValue(i.row, i.col, { t: P });
|
|
225
225
|
}
|
|
226
226
|
return d;
|
|
227
|
-
}, new
|
|
228
|
-
new
|
|
227
|
+
}, new R()).getMatrix(), h = new R();
|
|
228
|
+
new R(l).forValue((d, i) => {
|
|
229
229
|
const v = g.getCellRaw(d, i);
|
|
230
230
|
v ? h.setValue(d, i, { t: v.t }) : h.setValue(d, i, { t: void 0 });
|
|
231
231
|
}), Object.keys(M.values).forEach((d) => {
|
|
@@ -243,12 +243,12 @@ const De = [
|
|
|
243
243
|
const l = C.reduce((d, i) => {
|
|
244
244
|
const v = g.getCellRaw(i.row, i.col);
|
|
245
245
|
if (v) {
|
|
246
|
-
const P =
|
|
246
|
+
const P = H(v.v);
|
|
247
247
|
P !== v.t && d.setValue(i.row, i.col, { t: P });
|
|
248
248
|
}
|
|
249
249
|
return d;
|
|
250
|
-
}, new
|
|
251
|
-
new
|
|
250
|
+
}, new R()).getMatrix(), h = new R();
|
|
251
|
+
new R(l).forValue((d, i) => {
|
|
252
252
|
const v = g.getCellRaw(d, i);
|
|
253
253
|
v ? h.setValue(d, i, { t: v.t }) : h.setValue(d, i, { t: void 0 });
|
|
254
254
|
}), y.push({
|
|
@@ -279,11 +279,11 @@ const De = [
|
|
|
279
279
|
redoMutations: y
|
|
280
280
|
}), f;
|
|
281
281
|
}
|
|
282
|
-
},
|
|
282
|
+
}, Ve = {
|
|
283
283
|
id: "sheet.command.numfmt.add.decimal.command",
|
|
284
284
|
type: U.COMMAND,
|
|
285
285
|
handler: async (e) => {
|
|
286
|
-
const n = e.get(I), t = e.get(j), r = e.get(K), s = e.get(
|
|
286
|
+
const n = e.get(I), t = e.get(j), r = e.get(K), s = e.get(V), a = t.getCurrentSelections();
|
|
287
287
|
if (!a || !a.length)
|
|
288
288
|
return !1;
|
|
289
289
|
const c = W(s);
|
|
@@ -291,11 +291,11 @@ const De = [
|
|
|
291
291
|
const { unitId: o, subUnitId: g } = c;
|
|
292
292
|
let u = 0;
|
|
293
293
|
a.forEach((y) => {
|
|
294
|
-
|
|
294
|
+
$.foreach(y.range, (_, f) => {
|
|
295
295
|
const l = r.getValue(o, g, _, f);
|
|
296
296
|
if (!l) {
|
|
297
297
|
const S = c.worksheet.getCellRaw(_, f);
|
|
298
|
-
if (!u && S && S.t ===
|
|
298
|
+
if (!u && S && S.t === b.NUMBER && S.v) {
|
|
299
299
|
const d = /\.(\d*)$/.exec(String(S.v));
|
|
300
300
|
if (d) {
|
|
301
301
|
const i = d[1].length;
|
|
@@ -306,13 +306,13 @@ const De = [
|
|
|
306
306
|
}
|
|
307
307
|
return;
|
|
308
308
|
}
|
|
309
|
-
const h =
|
|
309
|
+
const h = x(l.pattern);
|
|
310
310
|
u = h > u ? h : u;
|
|
311
311
|
});
|
|
312
312
|
});
|
|
313
313
|
const C = u + 1, M = D(`0${C > 0 ? ".0" : ""}`, C), p = [];
|
|
314
314
|
return a.forEach((y) => {
|
|
315
|
-
|
|
315
|
+
$.foreach(y.range, (_, f) => {
|
|
316
316
|
const l = r.getValue(o, g, _, f);
|
|
317
317
|
if (!l)
|
|
318
318
|
p.push({
|
|
@@ -321,7 +321,7 @@ const De = [
|
|
|
321
321
|
pattern: M
|
|
322
322
|
});
|
|
323
323
|
else {
|
|
324
|
-
const h =
|
|
324
|
+
const h = x(l.pattern), S = D(l.pattern, h + 1);
|
|
325
325
|
S !== l.pattern && p.push({
|
|
326
326
|
row: _,
|
|
327
327
|
col: f,
|
|
@@ -329,7 +329,7 @@ const De = [
|
|
|
329
329
|
});
|
|
330
330
|
}
|
|
331
331
|
});
|
|
332
|
-
}), p.length ? await n.executeCommand(
|
|
332
|
+
}), p.length ? await n.executeCommand(O.id, { values: p }) : !1;
|
|
333
333
|
}
|
|
334
334
|
}, je = {
|
|
335
335
|
id: "sheet.command.numfmt.set.currency",
|
|
@@ -338,12 +338,12 @@ const De = [
|
|
|
338
338
|
const n = e.get(I), t = e.get(j), r = e.get(J), s = t.getCurrentSelections();
|
|
339
339
|
if (!s || !s.length)
|
|
340
340
|
return !1;
|
|
341
|
-
const a = [], c =
|
|
341
|
+
const a = [], c = we(r.getCurrentLocale()), o = xe(c.locale);
|
|
342
342
|
return s.forEach((u) => {
|
|
343
|
-
|
|
343
|
+
$.foreach(u.range, (C, M) => {
|
|
344
344
|
a.push({ row: C, col: M, pattern: o, type: "currency" });
|
|
345
345
|
});
|
|
346
|
-
}), await n.executeCommand(
|
|
346
|
+
}), await n.executeCommand(O.id, { values: a });
|
|
347
347
|
}
|
|
348
348
|
}, Le = {
|
|
349
349
|
id: "sheet.command.numfmt.set.percent",
|
|
@@ -354,16 +354,16 @@ const De = [
|
|
|
354
354
|
return !1;
|
|
355
355
|
const s = [], a = "0%";
|
|
356
356
|
return r.forEach((o) => {
|
|
357
|
-
|
|
357
|
+
$.foreach(o.range, (g, u) => {
|
|
358
358
|
s.push({ row: g, col: u, pattern: a, type: "percent" });
|
|
359
359
|
});
|
|
360
|
-
}), await n.executeCommand(
|
|
360
|
+
}), await n.executeCommand(O.id, { values: s });
|
|
361
361
|
}
|
|
362
|
-
},
|
|
362
|
+
}, Be = {
|
|
363
363
|
id: "sheet.command.numfmt.subtract.decimal.command",
|
|
364
364
|
type: U.COMMAND,
|
|
365
365
|
handler: async (e) => {
|
|
366
|
-
const n = e.get(I), t = e.get(j), r = e.get(K), s = e.get(
|
|
366
|
+
const n = e.get(I), t = e.get(j), r = e.get(K), s = e.get(V), a = t.getCurrentSelections();
|
|
367
367
|
if (!a || !a.length)
|
|
368
368
|
return !1;
|
|
369
369
|
const c = W(s);
|
|
@@ -371,11 +371,11 @@ const De = [
|
|
|
371
371
|
const { unitId: o, subUnitId: g } = c;
|
|
372
372
|
let u = 0;
|
|
373
373
|
a.forEach((_) => {
|
|
374
|
-
|
|
374
|
+
$.foreach(_.range, (f, l) => {
|
|
375
375
|
const h = r.getValue(o, g, f, l);
|
|
376
376
|
if (!h) {
|
|
377
377
|
const d = c.worksheet.getCellRaw(f, l);
|
|
378
|
-
if (!u && d && d.t ===
|
|
378
|
+
if (!u && d && d.t === b.NUMBER && d.v) {
|
|
379
379
|
const i = /\.(\d*)$/.exec(String(d.v));
|
|
380
380
|
if (i) {
|
|
381
381
|
const v = i[1].length;
|
|
@@ -386,13 +386,13 @@ const De = [
|
|
|
386
386
|
}
|
|
387
387
|
return;
|
|
388
388
|
}
|
|
389
|
-
const S =
|
|
389
|
+
const S = x(h.pattern);
|
|
390
390
|
u = S > u ? S : u;
|
|
391
391
|
});
|
|
392
392
|
});
|
|
393
393
|
const C = u - 1, M = D(`0${C > 0 ? ".0" : "."}`, C), p = [];
|
|
394
394
|
return a.forEach((_) => {
|
|
395
|
-
|
|
395
|
+
$.foreach(_.range, (f, l) => {
|
|
396
396
|
const h = r.getValue(o, g, f, l);
|
|
397
397
|
if (!h)
|
|
398
398
|
p.push({
|
|
@@ -401,7 +401,7 @@ const De = [
|
|
|
401
401
|
pattern: M
|
|
402
402
|
});
|
|
403
403
|
else {
|
|
404
|
-
const S =
|
|
404
|
+
const S = x(h.pattern);
|
|
405
405
|
p.push({
|
|
406
406
|
row: f,
|
|
407
407
|
col: l,
|
|
@@ -409,10 +409,10 @@ const De = [
|
|
|
409
409
|
});
|
|
410
410
|
}
|
|
411
411
|
});
|
|
412
|
-
}), await n.executeCommand(
|
|
412
|
+
}), await n.executeCommand(O.id, { values: p });
|
|
413
413
|
}
|
|
414
|
-
}, re = "sheets-numfmt.config", q = {}, at = (e) =>
|
|
415
|
-
const r =
|
|
414
|
+
}, re = "sheets-numfmt.config", q = {}, at = (e) => E.getFormatInfo(e).type || "unknown", He = (e, n, t = "en") => {
|
|
415
|
+
const r = E.formatColor(e, n), s = r ? String(r) : void 0, a = E.format(e, n, { locale: t, throws: !1 });
|
|
416
416
|
return n < 0 ? {
|
|
417
417
|
result: a,
|
|
418
418
|
color: s
|
|
@@ -420,11 +420,11 @@ const De = [
|
|
|
420
420
|
result: a
|
|
421
421
|
};
|
|
422
422
|
}, Ge = (e, n, t) => e === le ? {
|
|
423
|
-
result: String(
|
|
423
|
+
result: String(Oe(n))
|
|
424
424
|
// In Excel, the default General format also needs to handle numeric precision.
|
|
425
|
-
} :
|
|
425
|
+
} : He(e, n, t), We = /* @__PURE__ */ new Set(["m d"]), Ke = /* @__PURE__ */ new Set(["h:mm AM/PM", "hh:mm AM/PM"]), it = (e) => {
|
|
426
426
|
var r, s;
|
|
427
|
-
const n = (s = (r =
|
|
427
|
+
const n = (s = (r = E.parseDate(e)) != null ? r : E.parseTime(e)) != null ? s : E.parseNumber(e);
|
|
428
428
|
if (!n) return null;
|
|
429
429
|
const { z: t } = n;
|
|
430
430
|
return t && (We.has(t) || Ke.has(t) && !/\s(A|AM|P|PM)$/i.test(e)) ? null : n;
|
|
@@ -443,7 +443,7 @@ const ke = {
|
|
|
443
443
|
let F = class extends me {
|
|
444
444
|
constructor(n, t, r, s, a, c, o) {
|
|
445
445
|
super();
|
|
446
|
-
L(this, "_locale$", new
|
|
446
|
+
L(this, "_locale$", new $e("en"));
|
|
447
447
|
L(this, "locale$", this._locale$.asObservable());
|
|
448
448
|
this._instanceService = n, this._sheetInterceptorService = t, this._themeService = r, this._commandService = s, this._numfmtService = a, this._localeService = c, this._configService = o, this._initInterceptorCellContent();
|
|
449
449
|
}
|
|
@@ -475,7 +475,7 @@ let F = class extends me {
|
|
|
475
475
|
}
|
|
476
476
|
// eslint-disable-next-line max-lines-per-function
|
|
477
477
|
_initInterceptorCellContent() {
|
|
478
|
-
const n = new
|
|
478
|
+
const n = new R();
|
|
479
479
|
this.disposeWithMe(Ie(this._locale$, this._localeService.currentLocale$).subscribe(() => {
|
|
480
480
|
n.reset();
|
|
481
481
|
})), this.disposeWithMe(this._sheetInterceptorService.intercept(Re.CELL_CONTENT, {
|
|
@@ -483,7 +483,7 @@ let F = class extends me {
|
|
|
483
483
|
// eslint-disable-next-line max-lines-per-function, complexity
|
|
484
484
|
handler: (t, r, s) => {
|
|
485
485
|
var y, _;
|
|
486
|
-
if (!t || t.v === void 0 || t.v === null)
|
|
486
|
+
if (!t || t.v === void 0 || t.v === null || t.t === b.BOOLEAN || t.t === b.FORCE_STRING)
|
|
487
487
|
return s(t);
|
|
488
488
|
const a = r.unitId, c = r.subUnitId;
|
|
489
489
|
let o;
|
|
@@ -491,11 +491,11 @@ let F = class extends me {
|
|
|
491
491
|
const f = r.workbook.getStyles().get(t.s);
|
|
492
492
|
f != null && f.n && (o = f.n);
|
|
493
493
|
}
|
|
494
|
-
if (o || (o = this._numfmtService.getValue(a, c, r.row, r.col)), fe(o == null ? void 0 : o.pattern) || t.t !==
|
|
494
|
+
if (o || (o = this._numfmtService.getValue(a, c, r.row, r.col)), fe(o == null ? void 0 : o.pattern) || t.t !== b.NUMBER && H(t.v, t.t) !== b.NUMBER)
|
|
495
495
|
return s(t);
|
|
496
496
|
const g = t;
|
|
497
497
|
if ((!t || t === r.rawData) && (t = { ...r.rawData }), X(o == null ? void 0 : o.pattern))
|
|
498
|
-
return (y = this._configService.getConfig(re)) != null && y.disableTextFormatMark ? (t.t =
|
|
498
|
+
return (y = this._configService.getConfig(re)) != null && y.disableTextFormatMark ? (t.t = b.STRING, s(t)) : (t.t = b.STRING, t.markers = { ...t == null ? void 0 : t.markers, ...ke }, s(t));
|
|
499
499
|
let u = "";
|
|
500
500
|
const C = n.getValue(r.row, r.col);
|
|
501
501
|
if (C && C.parameters === `${g.v}_${o == null ? void 0 : o.pattern}`)
|
|
@@ -503,7 +503,7 @@ let F = class extends me {
|
|
|
503
503
|
const M = Ge(o == null ? void 0 : o.pattern, Number(g.v), this.locale);
|
|
504
504
|
if (u = M.result, !u)
|
|
505
505
|
return s(t);
|
|
506
|
-
const p = { v: u, t:
|
|
506
|
+
const p = { v: u, t: b.NUMBER };
|
|
507
507
|
if (M.color) {
|
|
508
508
|
const f = (_ = this._themeService.getColorFromTheme(`${M.color}.500`)) != null ? _ : M.color;
|
|
509
509
|
f && (p.interceptorStyle = { cl: { rgb: f } });
|
|
@@ -519,14 +519,14 @@ let F = class extends me {
|
|
|
519
519
|
const r = t.params;
|
|
520
520
|
Object.keys(r.values).forEach((s) => {
|
|
521
521
|
r.values[s].ranges.forEach((c) => {
|
|
522
|
-
|
|
522
|
+
$.foreach(c, (o, g) => {
|
|
523
523
|
n.realDeleteValue(o, g);
|
|
524
524
|
});
|
|
525
525
|
});
|
|
526
526
|
});
|
|
527
527
|
} else if (t.id === G.id) {
|
|
528
528
|
const r = t.params;
|
|
529
|
-
new
|
|
529
|
+
new R(r.cellValue).forValue((s, a) => {
|
|
530
530
|
n.realDeleteValue(s, a);
|
|
531
531
|
});
|
|
532
532
|
}
|
|
@@ -545,7 +545,7 @@ let F = class extends me {
|
|
|
545
545
|
}
|
|
546
546
|
};
|
|
547
547
|
F = ze([
|
|
548
|
-
N(0,
|
|
548
|
+
N(0, V),
|
|
549
549
|
N(1, T(be)),
|
|
550
550
|
N(2, T(ue)),
|
|
551
551
|
N(3, T(I)),
|
|
@@ -558,8 +558,8 @@ var qe = Object.defineProperty, Xe = Object.getOwnPropertyDescriptor, Je = (e, n
|
|
|
558
558
|
for (var s = r > 1 ? void 0 : r ? Xe(n, t) : n, a = e.length - 1, c; a >= 0; a--)
|
|
559
559
|
(c = e[a]) && (s = c(s) || s);
|
|
560
560
|
return s;
|
|
561
|
-
},
|
|
562
|
-
let
|
|
561
|
+
}, B = (e, n) => (t, r) => n(t, r, e), se = (e, n, t) => Je(e, typeof n != "symbol" ? n + "" : n, t);
|
|
562
|
+
let A = class extends he {
|
|
563
563
|
constructor(e = q, n, t, r) {
|
|
564
564
|
super(), this._config = e, this._injector = n, this._configService = t, this._commandService = r;
|
|
565
565
|
const { ...s } = pe(
|
|
@@ -578,57 +578,57 @@ let V = class extends he {
|
|
|
578
578
|
}
|
|
579
579
|
onRendered() {
|
|
580
580
|
[
|
|
581
|
-
|
|
582
|
-
|
|
581
|
+
Ve,
|
|
582
|
+
Be,
|
|
583
583
|
je,
|
|
584
584
|
Le,
|
|
585
|
-
|
|
585
|
+
O
|
|
586
586
|
].forEach((e) => {
|
|
587
587
|
this.disposeWithMe(this._commandService.registerCommand(e));
|
|
588
588
|
});
|
|
589
589
|
}
|
|
590
590
|
};
|
|
591
|
-
se(
|
|
592
|
-
se(
|
|
593
|
-
|
|
594
|
-
de(
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
],
|
|
599
|
-
const ct = (e) => ne.find((t) => e.includes(t)), lt = () => ne.map((e) => ({ label: e, value: e })), ut = (e) =>
|
|
591
|
+
se(A, "pluginName", Ye);
|
|
592
|
+
se(A, "type", ee.UNIVER_SHEET);
|
|
593
|
+
A = Qe([
|
|
594
|
+
de(Ee),
|
|
595
|
+
B(1, T(ge)),
|
|
596
|
+
B(2, Q),
|
|
597
|
+
B(3, I)
|
|
598
|
+
], A);
|
|
599
|
+
const ct = (e) => ne.find((t) => e.includes(t)), lt = () => ne.map((e) => ({ label: e, value: e })), ut = (e) => Ae.map((n) => ({
|
|
600
600
|
label: n.label(e),
|
|
601
601
|
value: n.suffix(e),
|
|
602
602
|
color: n.color
|
|
603
603
|
})), mt = () => De.map((e) => ({ label: e.label, value: e.suffix })), ft = () => Fe.map((e) => ({ label: e.label, value: e.suffix, color: e.color }));
|
|
604
604
|
export {
|
|
605
|
-
|
|
606
|
-
|
|
605
|
+
Ve as AddDecimalCommand,
|
|
606
|
+
Ae as CURRENCYFORMAT,
|
|
607
607
|
De as DATEFMTLISG,
|
|
608
608
|
Fe as NUMBERFORMAT,
|
|
609
609
|
re as SHEETS_NUMFMT_PLUGIN_CONFIG_KEY,
|
|
610
610
|
je as SetCurrencyCommand,
|
|
611
|
-
|
|
611
|
+
O as SetNumfmtCommand,
|
|
612
612
|
Le as SetPercentCommand,
|
|
613
613
|
F as SheetsNumfmtCellContentController,
|
|
614
|
-
|
|
615
|
-
|
|
614
|
+
Be as SubtractDecimalCommand,
|
|
615
|
+
A as UniverSheetsNumfmtPlugin,
|
|
616
616
|
ne as currencySymbols,
|
|
617
|
-
|
|
617
|
+
xe as getCurrencyFormat,
|
|
618
618
|
ut as getCurrencyFormatOptions,
|
|
619
619
|
lt as getCurrencyOptions,
|
|
620
620
|
k as getCurrencySymbolByLocale,
|
|
621
|
-
|
|
621
|
+
we as getCurrencySymbolIconByLocale,
|
|
622
622
|
ct as getCurrencyType,
|
|
623
623
|
mt as getDateFormatOptions,
|
|
624
|
-
|
|
624
|
+
x as getDecimalFromPattern,
|
|
625
625
|
Y as getDecimalString,
|
|
626
626
|
ft as getNumberFormatOptions,
|
|
627
627
|
it as getNumfmtParseValueFilter,
|
|
628
|
-
|
|
628
|
+
He as getPatternPreview,
|
|
629
629
|
Ge as getPatternPreviewIgnoreGeneral,
|
|
630
630
|
at as getPatternType,
|
|
631
631
|
ot as isPatternHasDecimal,
|
|
632
|
-
|
|
632
|
+
w as localeCurrencySymbolMap,
|
|
633
633
|
D as setPatternDecimal
|
|
634
634
|
};
|
package/lib/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
var oe = Object.defineProperty;
|
|
2
2
|
var ae = (e, n, t) => n in e ? oe(e, n, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[n] = t;
|
|
3
3
|
var L = (e, n, t) => ae(e, typeof n != "symbol" ? n + "" : n, t);
|
|
4
|
-
import { LocaleType as m, numfmt as
|
|
5
|
-
import { getSheetCommandTarget as W, transformCellsToRange as ve, checkCellValueType as
|
|
6
|
-
import { BehaviorSubject as
|
|
7
|
-
import { stripErrorMargin as
|
|
4
|
+
import { LocaleType as m, numfmt as E, CommandType as U, ICommandService as I, IUniverInstanceService as V, IUndoRedoService as ie, isTextFormat as X, CellValueType as b, ObjectMatrix as R, sequenceExecute as ce, Range as $, LocaleService as J, DEFAULT_NUMBER_FORMAT as le, Inject as T, ThemeService as ue, IConfigService as Q, Disposable as me, isDefaultFormat as fe, InterceptorEffectEnum as Z, UniverInstanceType as ee, DependentOn as de, Injector as ge, Plugin as he, merge as pe, registerDependencies as _e, touchDependencies as Se } from "@univerjs/core";
|
|
5
|
+
import { getSheetCommandTarget as W, transformCellsToRange as ve, checkCellValueType as H, rangeMerge as z, SetNumfmtMutation as te, factorySetNumfmtUndoMutation as Ce, RemoveNumfmtMutation as Me, SetRangeValuesMutation as G, factoryRemoveNumfmtUndoMutation as ye, SheetsSelectionsService as j, INumfmtService as K, SheetInterceptorService as be, INTERCEPTOR_POINT as Re, InterceptCellContentPriority as Ne, UniverSheetsPlugin as Ee } from "@univerjs/sheets";
|
|
6
|
+
import { BehaviorSubject as $e, merge as Ie, switchMap as Te, of as Pe, skip as Ue } from "rxjs";
|
|
7
|
+
import { stripErrorMargin as Oe } from "@univerjs/engine-formula";
|
|
8
8
|
const ne = [
|
|
9
9
|
"$",
|
|
10
10
|
"£",
|
|
@@ -34,7 +34,7 @@ const ne = [
|
|
|
34
34
|
"₾",
|
|
35
35
|
"₿",
|
|
36
36
|
"﷼"
|
|
37
|
-
],
|
|
37
|
+
], w = /* @__PURE__ */ new Map([
|
|
38
38
|
[m.EN_US, "$"],
|
|
39
39
|
[m.RU_RU, "₽"],
|
|
40
40
|
[m.VI_VN, "₫"],
|
|
@@ -46,26 +46,26 @@ const ne = [
|
|
|
46
46
|
[m.ES_ES, "€"],
|
|
47
47
|
[m.CA_ES, "€"]
|
|
48
48
|
]);
|
|
49
|
-
function
|
|
49
|
+
function we(e) {
|
|
50
50
|
switch (e) {
|
|
51
51
|
case m.CA_ES:
|
|
52
52
|
case m.ES_ES:
|
|
53
53
|
case m.FR_FR:
|
|
54
54
|
return {
|
|
55
55
|
icon: "EuroIcon",
|
|
56
|
-
symbol:
|
|
56
|
+
symbol: w.get(e) || "€",
|
|
57
57
|
locale: e
|
|
58
58
|
};
|
|
59
59
|
case m.RU_RU:
|
|
60
60
|
return {
|
|
61
61
|
icon: "RoubleIcon",
|
|
62
|
-
symbol:
|
|
62
|
+
symbol: w.get(e) || "₽",
|
|
63
63
|
locale: e
|
|
64
64
|
};
|
|
65
65
|
case m.ZH_CN:
|
|
66
66
|
return {
|
|
67
67
|
icon: "RmbIcon",
|
|
68
|
-
symbol:
|
|
68
|
+
symbol: w.get(e) || "¥",
|
|
69
69
|
locale: e
|
|
70
70
|
};
|
|
71
71
|
case m.EN_US:
|
|
@@ -78,9 +78,9 @@ function xe(e) {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
function k(e) {
|
|
81
|
-
return
|
|
81
|
+
return w.get(e) || "$";
|
|
82
82
|
}
|
|
83
|
-
function
|
|
83
|
+
function xe(e, n = 2) {
|
|
84
84
|
let t = n;
|
|
85
85
|
n > 127 && (t = 127);
|
|
86
86
|
let r = "";
|
|
@@ -159,7 +159,7 @@ const De = [
|
|
|
159
159
|
suffix: "#,##0.00_);[Red]-#,##0.00",
|
|
160
160
|
color: "red"
|
|
161
161
|
}
|
|
162
|
-
],
|
|
162
|
+
], Ae = [
|
|
163
163
|
{
|
|
164
164
|
label: (e) => `${e}1,235`,
|
|
165
165
|
suffix: (e) => `"${e}"#,##0.00_);"${e}"#,##0.00`
|
|
@@ -187,23 +187,23 @@ const De = [
|
|
|
187
187
|
suffix: (e) => `"${e}"#,##0.00_);[Red]-"${e}"#,##0.00`,
|
|
188
188
|
color: "red"
|
|
189
189
|
}
|
|
190
|
-
],
|
|
190
|
+
], x = (e, n = 0) => {
|
|
191
191
|
var r;
|
|
192
|
-
return e && (r =
|
|
192
|
+
return e && (r = E.getFormatInfo(e).maxDecimals) != null ? r : n;
|
|
193
193
|
}, Y = (e) => new Array(Math.min(Math.max(0, Number(e)), 30)).fill(0).join(""), D = (e, n) => e.split(";").map((r) => /\.0?/.test(r) ? r.replace(
|
|
194
194
|
/\.0*/g,
|
|
195
195
|
`${n > 0 ? "." : ""}${Y(Number(n || 0))}`
|
|
196
196
|
) : /0([^0]?)|0$/.test(r) ? r.replace(
|
|
197
197
|
/0([^0]+)|0$/,
|
|
198
198
|
`0${n > 0 ? "." : ""}${Y(Number(n || 0))}$1`
|
|
199
|
-
) : r).join(";"), ot = (e) => /\.0?/.test(e) || /0([^0]?)|0$/.test(e),
|
|
199
|
+
) : r).join(";"), ot = (e) => /\.0?/.test(e) || /0([^0]?)|0$/.test(e), O = {
|
|
200
200
|
id: "sheet.command.numfmt.set.numfmt",
|
|
201
201
|
type: U.COMMAND,
|
|
202
202
|
// eslint-disable-next-line max-lines-per-function
|
|
203
203
|
handler: (e, n) => {
|
|
204
204
|
if (!n)
|
|
205
205
|
return !1;
|
|
206
|
-
const t = e.get(I), r = e.get(
|
|
206
|
+
const t = e.get(I), r = e.get(V), s = e.get(ie), a = W(r, n);
|
|
207
207
|
if (!a) return !1;
|
|
208
208
|
const { unitId: c, subUnitId: o, worksheet: g } = a, u = n.values.filter((l) => !!l.pattern), C = n.values.filter((l) => !l.pattern), M = ve(c, o, u), p = {
|
|
209
209
|
unitId: c,
|
|
@@ -217,15 +217,15 @@ const De = [
|
|
|
217
217
|
}, y = [], _ = [];
|
|
218
218
|
if (u.length) {
|
|
219
219
|
const l = u.reduce((d, i) => {
|
|
220
|
-
X(i.pattern) && d.setValue(i.row, i.col, { t:
|
|
220
|
+
X(i.pattern) && d.setValue(i.row, i.col, { t: b.STRING });
|
|
221
221
|
const v = g.getCellRaw(i.row, i.col);
|
|
222
222
|
if (v) {
|
|
223
|
-
const P =
|
|
223
|
+
const P = H(v.v);
|
|
224
224
|
P !== v.t && d.setValue(i.row, i.col, { t: P });
|
|
225
225
|
}
|
|
226
226
|
return d;
|
|
227
|
-
}, new
|
|
228
|
-
new
|
|
227
|
+
}, new R()).getMatrix(), h = new R();
|
|
228
|
+
new R(l).forValue((d, i) => {
|
|
229
229
|
const v = g.getCellRaw(d, i);
|
|
230
230
|
v ? h.setValue(d, i, { t: v.t }) : h.setValue(d, i, { t: void 0 });
|
|
231
231
|
}), Object.keys(M.values).forEach((d) => {
|
|
@@ -243,12 +243,12 @@ const De = [
|
|
|
243
243
|
const l = C.reduce((d, i) => {
|
|
244
244
|
const v = g.getCellRaw(i.row, i.col);
|
|
245
245
|
if (v) {
|
|
246
|
-
const P =
|
|
246
|
+
const P = H(v.v);
|
|
247
247
|
P !== v.t && d.setValue(i.row, i.col, { t: P });
|
|
248
248
|
}
|
|
249
249
|
return d;
|
|
250
|
-
}, new
|
|
251
|
-
new
|
|
250
|
+
}, new R()).getMatrix(), h = new R();
|
|
251
|
+
new R(l).forValue((d, i) => {
|
|
252
252
|
const v = g.getCellRaw(d, i);
|
|
253
253
|
v ? h.setValue(d, i, { t: v.t }) : h.setValue(d, i, { t: void 0 });
|
|
254
254
|
}), y.push({
|
|
@@ -279,11 +279,11 @@ const De = [
|
|
|
279
279
|
redoMutations: y
|
|
280
280
|
}), f;
|
|
281
281
|
}
|
|
282
|
-
},
|
|
282
|
+
}, Ve = {
|
|
283
283
|
id: "sheet.command.numfmt.add.decimal.command",
|
|
284
284
|
type: U.COMMAND,
|
|
285
285
|
handler: async (e) => {
|
|
286
|
-
const n = e.get(I), t = e.get(j), r = e.get(K), s = e.get(
|
|
286
|
+
const n = e.get(I), t = e.get(j), r = e.get(K), s = e.get(V), a = t.getCurrentSelections();
|
|
287
287
|
if (!a || !a.length)
|
|
288
288
|
return !1;
|
|
289
289
|
const c = W(s);
|
|
@@ -291,11 +291,11 @@ const De = [
|
|
|
291
291
|
const { unitId: o, subUnitId: g } = c;
|
|
292
292
|
let u = 0;
|
|
293
293
|
a.forEach((y) => {
|
|
294
|
-
|
|
294
|
+
$.foreach(y.range, (_, f) => {
|
|
295
295
|
const l = r.getValue(o, g, _, f);
|
|
296
296
|
if (!l) {
|
|
297
297
|
const S = c.worksheet.getCellRaw(_, f);
|
|
298
|
-
if (!u && S && S.t ===
|
|
298
|
+
if (!u && S && S.t === b.NUMBER && S.v) {
|
|
299
299
|
const d = /\.(\d*)$/.exec(String(S.v));
|
|
300
300
|
if (d) {
|
|
301
301
|
const i = d[1].length;
|
|
@@ -306,13 +306,13 @@ const De = [
|
|
|
306
306
|
}
|
|
307
307
|
return;
|
|
308
308
|
}
|
|
309
|
-
const h =
|
|
309
|
+
const h = x(l.pattern);
|
|
310
310
|
u = h > u ? h : u;
|
|
311
311
|
});
|
|
312
312
|
});
|
|
313
313
|
const C = u + 1, M = D(`0${C > 0 ? ".0" : ""}`, C), p = [];
|
|
314
314
|
return a.forEach((y) => {
|
|
315
|
-
|
|
315
|
+
$.foreach(y.range, (_, f) => {
|
|
316
316
|
const l = r.getValue(o, g, _, f);
|
|
317
317
|
if (!l)
|
|
318
318
|
p.push({
|
|
@@ -321,7 +321,7 @@ const De = [
|
|
|
321
321
|
pattern: M
|
|
322
322
|
});
|
|
323
323
|
else {
|
|
324
|
-
const h =
|
|
324
|
+
const h = x(l.pattern), S = D(l.pattern, h + 1);
|
|
325
325
|
S !== l.pattern && p.push({
|
|
326
326
|
row: _,
|
|
327
327
|
col: f,
|
|
@@ -329,7 +329,7 @@ const De = [
|
|
|
329
329
|
});
|
|
330
330
|
}
|
|
331
331
|
});
|
|
332
|
-
}), p.length ? await n.executeCommand(
|
|
332
|
+
}), p.length ? await n.executeCommand(O.id, { values: p }) : !1;
|
|
333
333
|
}
|
|
334
334
|
}, je = {
|
|
335
335
|
id: "sheet.command.numfmt.set.currency",
|
|
@@ -338,12 +338,12 @@ const De = [
|
|
|
338
338
|
const n = e.get(I), t = e.get(j), r = e.get(J), s = t.getCurrentSelections();
|
|
339
339
|
if (!s || !s.length)
|
|
340
340
|
return !1;
|
|
341
|
-
const a = [], c =
|
|
341
|
+
const a = [], c = we(r.getCurrentLocale()), o = xe(c.locale);
|
|
342
342
|
return s.forEach((u) => {
|
|
343
|
-
|
|
343
|
+
$.foreach(u.range, (C, M) => {
|
|
344
344
|
a.push({ row: C, col: M, pattern: o, type: "currency" });
|
|
345
345
|
});
|
|
346
|
-
}), await n.executeCommand(
|
|
346
|
+
}), await n.executeCommand(O.id, { values: a });
|
|
347
347
|
}
|
|
348
348
|
}, Le = {
|
|
349
349
|
id: "sheet.command.numfmt.set.percent",
|
|
@@ -354,16 +354,16 @@ const De = [
|
|
|
354
354
|
return !1;
|
|
355
355
|
const s = [], a = "0%";
|
|
356
356
|
return r.forEach((o) => {
|
|
357
|
-
|
|
357
|
+
$.foreach(o.range, (g, u) => {
|
|
358
358
|
s.push({ row: g, col: u, pattern: a, type: "percent" });
|
|
359
359
|
});
|
|
360
|
-
}), await n.executeCommand(
|
|
360
|
+
}), await n.executeCommand(O.id, { values: s });
|
|
361
361
|
}
|
|
362
|
-
},
|
|
362
|
+
}, Be = {
|
|
363
363
|
id: "sheet.command.numfmt.subtract.decimal.command",
|
|
364
364
|
type: U.COMMAND,
|
|
365
365
|
handler: async (e) => {
|
|
366
|
-
const n = e.get(I), t = e.get(j), r = e.get(K), s = e.get(
|
|
366
|
+
const n = e.get(I), t = e.get(j), r = e.get(K), s = e.get(V), a = t.getCurrentSelections();
|
|
367
367
|
if (!a || !a.length)
|
|
368
368
|
return !1;
|
|
369
369
|
const c = W(s);
|
|
@@ -371,11 +371,11 @@ const De = [
|
|
|
371
371
|
const { unitId: o, subUnitId: g } = c;
|
|
372
372
|
let u = 0;
|
|
373
373
|
a.forEach((_) => {
|
|
374
|
-
|
|
374
|
+
$.foreach(_.range, (f, l) => {
|
|
375
375
|
const h = r.getValue(o, g, f, l);
|
|
376
376
|
if (!h) {
|
|
377
377
|
const d = c.worksheet.getCellRaw(f, l);
|
|
378
|
-
if (!u && d && d.t ===
|
|
378
|
+
if (!u && d && d.t === b.NUMBER && d.v) {
|
|
379
379
|
const i = /\.(\d*)$/.exec(String(d.v));
|
|
380
380
|
if (i) {
|
|
381
381
|
const v = i[1].length;
|
|
@@ -386,13 +386,13 @@ const De = [
|
|
|
386
386
|
}
|
|
387
387
|
return;
|
|
388
388
|
}
|
|
389
|
-
const S =
|
|
389
|
+
const S = x(h.pattern);
|
|
390
390
|
u = S > u ? S : u;
|
|
391
391
|
});
|
|
392
392
|
});
|
|
393
393
|
const C = u - 1, M = D(`0${C > 0 ? ".0" : "."}`, C), p = [];
|
|
394
394
|
return a.forEach((_) => {
|
|
395
|
-
|
|
395
|
+
$.foreach(_.range, (f, l) => {
|
|
396
396
|
const h = r.getValue(o, g, f, l);
|
|
397
397
|
if (!h)
|
|
398
398
|
p.push({
|
|
@@ -401,7 +401,7 @@ const De = [
|
|
|
401
401
|
pattern: M
|
|
402
402
|
});
|
|
403
403
|
else {
|
|
404
|
-
const S =
|
|
404
|
+
const S = x(h.pattern);
|
|
405
405
|
p.push({
|
|
406
406
|
row: f,
|
|
407
407
|
col: l,
|
|
@@ -409,10 +409,10 @@ const De = [
|
|
|
409
409
|
});
|
|
410
410
|
}
|
|
411
411
|
});
|
|
412
|
-
}), await n.executeCommand(
|
|
412
|
+
}), await n.executeCommand(O.id, { values: p });
|
|
413
413
|
}
|
|
414
|
-
}, re = "sheets-numfmt.config", q = {}, at = (e) =>
|
|
415
|
-
const r =
|
|
414
|
+
}, re = "sheets-numfmt.config", q = {}, at = (e) => E.getFormatInfo(e).type || "unknown", He = (e, n, t = "en") => {
|
|
415
|
+
const r = E.formatColor(e, n), s = r ? String(r) : void 0, a = E.format(e, n, { locale: t, throws: !1 });
|
|
416
416
|
return n < 0 ? {
|
|
417
417
|
result: a,
|
|
418
418
|
color: s
|
|
@@ -420,11 +420,11 @@ const De = [
|
|
|
420
420
|
result: a
|
|
421
421
|
};
|
|
422
422
|
}, Ge = (e, n, t) => e === le ? {
|
|
423
|
-
result: String(
|
|
423
|
+
result: String(Oe(n))
|
|
424
424
|
// In Excel, the default General format also needs to handle numeric precision.
|
|
425
|
-
} :
|
|
425
|
+
} : He(e, n, t), We = /* @__PURE__ */ new Set(["m d"]), Ke = /* @__PURE__ */ new Set(["h:mm AM/PM", "hh:mm AM/PM"]), it = (e) => {
|
|
426
426
|
var r, s;
|
|
427
|
-
const n = (s = (r =
|
|
427
|
+
const n = (s = (r = E.parseDate(e)) != null ? r : E.parseTime(e)) != null ? s : E.parseNumber(e);
|
|
428
428
|
if (!n) return null;
|
|
429
429
|
const { z: t } = n;
|
|
430
430
|
return t && (We.has(t) || Ke.has(t) && !/\s(A|AM|P|PM)$/i.test(e)) ? null : n;
|
|
@@ -443,7 +443,7 @@ const ke = {
|
|
|
443
443
|
let F = class extends me {
|
|
444
444
|
constructor(n, t, r, s, a, c, o) {
|
|
445
445
|
super();
|
|
446
|
-
L(this, "_locale$", new
|
|
446
|
+
L(this, "_locale$", new $e("en"));
|
|
447
447
|
L(this, "locale$", this._locale$.asObservable());
|
|
448
448
|
this._instanceService = n, this._sheetInterceptorService = t, this._themeService = r, this._commandService = s, this._numfmtService = a, this._localeService = c, this._configService = o, this._initInterceptorCellContent();
|
|
449
449
|
}
|
|
@@ -475,7 +475,7 @@ let F = class extends me {
|
|
|
475
475
|
}
|
|
476
476
|
// eslint-disable-next-line max-lines-per-function
|
|
477
477
|
_initInterceptorCellContent() {
|
|
478
|
-
const n = new
|
|
478
|
+
const n = new R();
|
|
479
479
|
this.disposeWithMe(Ie(this._locale$, this._localeService.currentLocale$).subscribe(() => {
|
|
480
480
|
n.reset();
|
|
481
481
|
})), this.disposeWithMe(this._sheetInterceptorService.intercept(Re.CELL_CONTENT, {
|
|
@@ -483,7 +483,7 @@ let F = class extends me {
|
|
|
483
483
|
// eslint-disable-next-line max-lines-per-function, complexity
|
|
484
484
|
handler: (t, r, s) => {
|
|
485
485
|
var y, _;
|
|
486
|
-
if (!t || t.v === void 0 || t.v === null)
|
|
486
|
+
if (!t || t.v === void 0 || t.v === null || t.t === b.BOOLEAN || t.t === b.FORCE_STRING)
|
|
487
487
|
return s(t);
|
|
488
488
|
const a = r.unitId, c = r.subUnitId;
|
|
489
489
|
let o;
|
|
@@ -491,11 +491,11 @@ let F = class extends me {
|
|
|
491
491
|
const f = r.workbook.getStyles().get(t.s);
|
|
492
492
|
f != null && f.n && (o = f.n);
|
|
493
493
|
}
|
|
494
|
-
if (o || (o = this._numfmtService.getValue(a, c, r.row, r.col)), fe(o == null ? void 0 : o.pattern) || t.t !==
|
|
494
|
+
if (o || (o = this._numfmtService.getValue(a, c, r.row, r.col)), fe(o == null ? void 0 : o.pattern) || t.t !== b.NUMBER && H(t.v, t.t) !== b.NUMBER)
|
|
495
495
|
return s(t);
|
|
496
496
|
const g = t;
|
|
497
497
|
if ((!t || t === r.rawData) && (t = { ...r.rawData }), X(o == null ? void 0 : o.pattern))
|
|
498
|
-
return (y = this._configService.getConfig(re)) != null && y.disableTextFormatMark ? (t.t =
|
|
498
|
+
return (y = this._configService.getConfig(re)) != null && y.disableTextFormatMark ? (t.t = b.STRING, s(t)) : (t.t = b.STRING, t.markers = { ...t == null ? void 0 : t.markers, ...ke }, s(t));
|
|
499
499
|
let u = "";
|
|
500
500
|
const C = n.getValue(r.row, r.col);
|
|
501
501
|
if (C && C.parameters === `${g.v}_${o == null ? void 0 : o.pattern}`)
|
|
@@ -503,7 +503,7 @@ let F = class extends me {
|
|
|
503
503
|
const M = Ge(o == null ? void 0 : o.pattern, Number(g.v), this.locale);
|
|
504
504
|
if (u = M.result, !u)
|
|
505
505
|
return s(t);
|
|
506
|
-
const p = { v: u, t:
|
|
506
|
+
const p = { v: u, t: b.NUMBER };
|
|
507
507
|
if (M.color) {
|
|
508
508
|
const f = (_ = this._themeService.getColorFromTheme(`${M.color}.500`)) != null ? _ : M.color;
|
|
509
509
|
f && (p.interceptorStyle = { cl: { rgb: f } });
|
|
@@ -519,14 +519,14 @@ let F = class extends me {
|
|
|
519
519
|
const r = t.params;
|
|
520
520
|
Object.keys(r.values).forEach((s) => {
|
|
521
521
|
r.values[s].ranges.forEach((c) => {
|
|
522
|
-
|
|
522
|
+
$.foreach(c, (o, g) => {
|
|
523
523
|
n.realDeleteValue(o, g);
|
|
524
524
|
});
|
|
525
525
|
});
|
|
526
526
|
});
|
|
527
527
|
} else if (t.id === G.id) {
|
|
528
528
|
const r = t.params;
|
|
529
|
-
new
|
|
529
|
+
new R(r.cellValue).forValue((s, a) => {
|
|
530
530
|
n.realDeleteValue(s, a);
|
|
531
531
|
});
|
|
532
532
|
}
|
|
@@ -545,7 +545,7 @@ let F = class extends me {
|
|
|
545
545
|
}
|
|
546
546
|
};
|
|
547
547
|
F = ze([
|
|
548
|
-
N(0,
|
|
548
|
+
N(0, V),
|
|
549
549
|
N(1, T(be)),
|
|
550
550
|
N(2, T(ue)),
|
|
551
551
|
N(3, T(I)),
|
|
@@ -558,8 +558,8 @@ var qe = Object.defineProperty, Xe = Object.getOwnPropertyDescriptor, Je = (e, n
|
|
|
558
558
|
for (var s = r > 1 ? void 0 : r ? Xe(n, t) : n, a = e.length - 1, c; a >= 0; a--)
|
|
559
559
|
(c = e[a]) && (s = c(s) || s);
|
|
560
560
|
return s;
|
|
561
|
-
},
|
|
562
|
-
let
|
|
561
|
+
}, B = (e, n) => (t, r) => n(t, r, e), se = (e, n, t) => Je(e, typeof n != "symbol" ? n + "" : n, t);
|
|
562
|
+
let A = class extends he {
|
|
563
563
|
constructor(e = q, n, t, r) {
|
|
564
564
|
super(), this._config = e, this._injector = n, this._configService = t, this._commandService = r;
|
|
565
565
|
const { ...s } = pe(
|
|
@@ -578,57 +578,57 @@ let V = class extends he {
|
|
|
578
578
|
}
|
|
579
579
|
onRendered() {
|
|
580
580
|
[
|
|
581
|
-
|
|
582
|
-
|
|
581
|
+
Ve,
|
|
582
|
+
Be,
|
|
583
583
|
je,
|
|
584
584
|
Le,
|
|
585
|
-
|
|
585
|
+
O
|
|
586
586
|
].forEach((e) => {
|
|
587
587
|
this.disposeWithMe(this._commandService.registerCommand(e));
|
|
588
588
|
});
|
|
589
589
|
}
|
|
590
590
|
};
|
|
591
|
-
se(
|
|
592
|
-
se(
|
|
593
|
-
|
|
594
|
-
de(
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
],
|
|
599
|
-
const ct = (e) => ne.find((t) => e.includes(t)), lt = () => ne.map((e) => ({ label: e, value: e })), ut = (e) =>
|
|
591
|
+
se(A, "pluginName", Ye);
|
|
592
|
+
se(A, "type", ee.UNIVER_SHEET);
|
|
593
|
+
A = Qe([
|
|
594
|
+
de(Ee),
|
|
595
|
+
B(1, T(ge)),
|
|
596
|
+
B(2, Q),
|
|
597
|
+
B(3, I)
|
|
598
|
+
], A);
|
|
599
|
+
const ct = (e) => ne.find((t) => e.includes(t)), lt = () => ne.map((e) => ({ label: e, value: e })), ut = (e) => Ae.map((n) => ({
|
|
600
600
|
label: n.label(e),
|
|
601
601
|
value: n.suffix(e),
|
|
602
602
|
color: n.color
|
|
603
603
|
})), mt = () => De.map((e) => ({ label: e.label, value: e.suffix })), ft = () => Fe.map((e) => ({ label: e.label, value: e.suffix, color: e.color }));
|
|
604
604
|
export {
|
|
605
|
-
|
|
606
|
-
|
|
605
|
+
Ve as AddDecimalCommand,
|
|
606
|
+
Ae as CURRENCYFORMAT,
|
|
607
607
|
De as DATEFMTLISG,
|
|
608
608
|
Fe as NUMBERFORMAT,
|
|
609
609
|
re as SHEETS_NUMFMT_PLUGIN_CONFIG_KEY,
|
|
610
610
|
je as SetCurrencyCommand,
|
|
611
|
-
|
|
611
|
+
O as SetNumfmtCommand,
|
|
612
612
|
Le as SetPercentCommand,
|
|
613
613
|
F as SheetsNumfmtCellContentController,
|
|
614
|
-
|
|
615
|
-
|
|
614
|
+
Be as SubtractDecimalCommand,
|
|
615
|
+
A as UniverSheetsNumfmtPlugin,
|
|
616
616
|
ne as currencySymbols,
|
|
617
|
-
|
|
617
|
+
xe as getCurrencyFormat,
|
|
618
618
|
ut as getCurrencyFormatOptions,
|
|
619
619
|
lt as getCurrencyOptions,
|
|
620
620
|
k as getCurrencySymbolByLocale,
|
|
621
|
-
|
|
621
|
+
we as getCurrencySymbolIconByLocale,
|
|
622
622
|
ct as getCurrencyType,
|
|
623
623
|
mt as getDateFormatOptions,
|
|
624
|
-
|
|
624
|
+
x as getDecimalFromPattern,
|
|
625
625
|
Y as getDecimalString,
|
|
626
626
|
ft as getNumberFormatOptions,
|
|
627
627
|
it as getNumfmtParseValueFilter,
|
|
628
|
-
|
|
628
|
+
He as getPatternPreview,
|
|
629
629
|
Ge as getPatternPreviewIgnoreGeneral,
|
|
630
630
|
at as getPatternType,
|
|
631
631
|
ot as isPatternHasDecimal,
|
|
632
|
-
|
|
632
|
+
w as localeCurrencySymbolMap,
|
|
633
633
|
D as setPatternDecimal
|
|
634
634
|
};
|
package/lib/umd/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(i,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("@univerjs/core"),require("@univerjs/sheets"),require("rxjs"),require("@univerjs/engine-formula")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/sheets","rxjs","@univerjs/engine-formula"],t):(i=typeof globalThis<"u"?globalThis:i||self,t(i.UniverSheetsNumfmt={},i.UniverCore,i.UniverSheets,i.rxjs,i.UniverEngineFormula))})(this,(function(i,t,o,I,X){"use strict";var ve=Object.defineProperty;var Ce=(i,t,o)=>t in i?ve(i,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):i[t]=o;var V=(i,t,o)=>Ce(i,typeof t!="symbol"?t+"":t,o);const O=["$","£","¥","¤","֏","؋","৳","฿","៛","₡","₦","₩","₪","₫","€","₭","₮","₱","₲","₴","₸","₹","₺","₼","₽","₾","₿","﷼"],E=new Map([[t.LocaleType.EN_US,"$"],[t.LocaleType.RU_RU,"₽"],[t.LocaleType.VI_VN,"₫"],[t.LocaleType.ZH_CN,"¥"],[t.LocaleType.ZH_TW,"NT$"],[t.LocaleType.FR_FR,"€"],[t.LocaleType.FA_IR,"﷼"],[t.LocaleType.KO_KR,"₩"],[t.LocaleType.ES_ES,"€"],[t.LocaleType.CA_ES,"€"]]);function j(e){switch(e){case t.LocaleType.CA_ES:case t.LocaleType.ES_ES:case t.LocaleType.FR_FR:return{icon:"EuroIcon",symbol:E.get(e)||"€",locale:e};case t.LocaleType.RU_RU:return{icon:"RoubleIcon",symbol:E.get(e)||"₽",locale:e};case t.LocaleType.ZH_CN:return{icon:"RmbIcon",symbol:E.get(e)||"¥",locale:e};case t.LocaleType.EN_US:default:return{icon:"DollarIcon",symbol:"$",locale:t.LocaleType.EN_US}}}function F(e){return E.get(e)||"$"}function A(e,a=2){let r=a;a>127&&(r=127);let n="";return r>0&&(n=`.${"0".repeat(r)}`),`"${F(e)}"#,##0${n}_);[Red]("${F(e)}"#,##0${n})`}const B=[{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"}],G=[{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"}],H=[{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"}],P=(e,a=0)=>{var n;return e&&(n=t.numfmt.getFormatInfo(e).maxDecimals)!=null?n:a},L=e=>new Array(Math.min(Math.max(0,Number(e)),30)).fill(0).join(""),U=(e,a)=>e.split(";").map(n=>/\.0?/.test(n)?n.replace(/\.0*/g,`${a>0?".":""}${L(Number(a||0))}`):/0([^0]?)|0$/.test(n)?n.replace(/0([^0]+)|0$/,`0${a>0?".":""}${L(Number(a||0))}$1`):n).join(";"),J=e=>/\.0?/.test(e)||/0([^0]?)|0$/.test(e),R={id:"sheet.command.numfmt.set.numfmt",type:t.CommandType.COMMAND,handler:(e,a)=>{if(!a)return!1;const r=e.get(t.ICommandService),n=e.get(t.IUniverInstanceService),s=e.get(t.IUndoRedoService),l=o.getSheetCommandTarget(n,a);if(!l)return!1;const{unitId:m,subUnitId:S,worksheet:u}=l,f=a.values.filter(c=>!!c.pattern),T=a.values.filter(c=>!c.pattern),M=o.transformCellsToRange(m,S,f),C={unitId:m,subUnitId:S,ranges:T.map(c=>({startColumn:c.col,startRow:c.row,endColumn:c.col,endRow:c.row}))},b=[],h=[];if(f.length){const c=f.reduce((g,d)=>{t.isTextFormat(d.pattern)&&g.setValue(d.row,d.col,{t:t.CellValueType.STRING});const _=u.getCellRaw(d.row,d.col);if(_){const $=o.checkCellValueType(_.v);$!==_.t&&g.setValue(d.row,d.col,{t:$})}return g},new t.ObjectMatrix).getMatrix(),y=new t.ObjectMatrix;new t.ObjectMatrix(c).forValue((g,d)=>{const _=u.getCellRaw(g,d);_?y.setValue(g,d,{t:_.t}):y.setValue(g,d,{t:void 0})}),Object.keys(M.values).forEach(g=>{const d=M.values[g];d.ranges=o.rangeMerge(d.ranges)}),b.push({id:o.SetNumfmtMutation.id,params:M});const p=o.factorySetNumfmtUndoMutation(e,M);h.push(...p)}if(T.length){C.ranges=o.rangeMerge(C.ranges);const c=T.reduce((g,d)=>{const _=u.getCellRaw(d.row,d.col);if(_){const $=o.checkCellValueType(_.v);$!==_.t&&g.setValue(d.row,d.col,{t:$})}return g},new t.ObjectMatrix).getMatrix(),y=new t.ObjectMatrix;new t.ObjectMatrix(c).forValue((g,d)=>{const _=u.getCellRaw(g,d);_?y.setValue(g,d,{t:_.t}):y.setValue(g,d,{t:void 0})}),b.push({id:o.RemoveNumfmtMutation.id,params:C},{id:o.SetRangeValuesMutation.id,params:{unitId:m,subUnitId:S,cellValue:c}});const p=o.factoryRemoveNumfmtUndoMutation(e,C);h.push({id:o.SetRangeValuesMutation.id,params:{unitId:m,subUnitId:S,cellValue:y.getMatrix()}},...p)}const v=t.sequenceExecute(b,r).result;return v&&s.pushUndoRedo({unitID:m,undoMutations:h,redoMutations:b}),v}},x={id:"sheet.command.numfmt.add.decimal.command",type:t.CommandType.COMMAND,handler:async e=>{const a=e.get(t.ICommandService),r=e.get(o.SheetsSelectionsService),n=e.get(o.INumfmtService),s=e.get(t.IUniverInstanceService),l=r.getCurrentSelections();if(!l||!l.length)return!1;const m=o.getSheetCommandTarget(s);if(!m)return!1;const{unitId:S,subUnitId:u}=m;let f=0;l.forEach(b=>{t.Range.foreach(b.range,(h,v)=>{const c=n.getValue(S,u,h,v);if(!c){const p=m.worksheet.getCellRaw(h,v);if(!f&&p&&p.t===t.CellValueType.NUMBER&&p.v){const g=/\.(\d*)$/.exec(String(p.v));if(g){const d=g[1].length;if(!d)return;f=Math.max(f,d)}}return}const y=P(c.pattern);f=y>f?y:f})});const T=f+1,M=U(`0${T>0?".0":""}`,T),C=[];return l.forEach(b=>{t.Range.foreach(b.range,(h,v)=>{const c=n.getValue(S,u,h,v);if(!c)C.push({row:h,col:v,pattern:M});else{const y=P(c.pattern),p=U(c.pattern,y+1);p!==c.pattern&&C.push({row:h,col:v,pattern:p})}})}),C.length?await a.executeCommand(R.id,{values:C}):!1}},W={id:"sheet.command.numfmt.set.currency",type:t.CommandType.COMMAND,handler:async e=>{const a=e.get(t.ICommandService),r=e.get(o.SheetsSelectionsService),n=e.get(t.LocaleService),s=r.getCurrentSelections();if(!s||!s.length)return!1;const l=[],m=j(n.getCurrentLocale()),S=A(m.locale);return s.forEach(f=>{t.Range.foreach(f.range,(T,M)=>{l.push({row:T,col:M,pattern:S,type:"currency"})})}),await a.executeCommand(R.id,{values:l})}},K={id:"sheet.command.numfmt.set.percent",type:t.CommandType.COMMAND,handler:async e=>{const a=e.get(t.ICommandService),n=e.get(o.SheetsSelectionsService).getCurrentSelections();if(!n||!n.length)return!1;const s=[],l="0%";return n.forEach(S=>{t.Range.foreach(S.range,(u,f)=>{s.push({row:u,col:f,pattern:l,type:"percent"})})}),await a.executeCommand(R.id,{values:s})}},q={id:"sheet.command.numfmt.subtract.decimal.command",type:t.CommandType.COMMAND,handler:async e=>{const a=e.get(t.ICommandService),r=e.get(o.SheetsSelectionsService),n=e.get(o.INumfmtService),s=e.get(t.IUniverInstanceService),l=r.getCurrentSelections();if(!l||!l.length)return!1;const m=o.getSheetCommandTarget(s);if(!m)return!1;const{unitId:S,subUnitId:u}=m;let f=0;l.forEach(h=>{t.Range.foreach(h.range,(v,c)=>{const y=n.getValue(S,u,v,c);if(!y){const g=m.worksheet.getCellRaw(v,c);if(!f&&g&&g.t===t.CellValueType.NUMBER&&g.v){const d=/\.(\d*)$/.exec(String(g.v));if(d){const _=d[1].length;if(!_)return;f=Math.max(f,_)}}return}const p=P(y.pattern);f=p>f?p:f})});const T=f-1,M=U(`0${T>0?".0":"."}`,T),C=[];return l.forEach(h=>{t.Range.foreach(h.range,(v,c)=>{const y=n.getValue(S,u,v,c);if(!y)C.push({row:v,col:c,pattern:M});else{const p=P(y.pattern);C.push({row:v,col:c,pattern:U(y.pattern,p-1)})}})}),await a.executeCommand(R.id,{values:C})}},D="sheets-numfmt.config",Z={},Q=e=>t.numfmt.getFormatInfo(e).type||"unknown",k=(e,a,r="en")=>{const n=t.numfmt.formatColor(e,a),s=n?String(n):void 0,l=t.numfmt.format(e,a,{locale:r,throws:!1});return a<0?{result:l,color:s}:{result:l}},z=(e,a,r)=>e===t.DEFAULT_NUMBER_FORMAT?{result:String(X.stripErrorMargin(a))}:k(e,a,r),ee=new Set(["m d"]),te=new Set(["h:mm AM/PM","hh:mm AM/PM"]),ne=e=>{var n,s;const a=(s=(n=t.numfmt.parseDate(e))!=null?n:t.numfmt.parseTime(e))!=null?s:t.numfmt.parseNumber(e);if(!a)return null;const{z:r}=a;return r&&(ee.has(r)||te.has(r)&&!/\s(A|AM|P|PM)$/i.test(e))?null:a};var ae=Object.getOwnPropertyDescriptor,re=(e,a,r,n)=>{for(var s=n>1?void 0:n?ae(a,r):a,l=e.length-1,m;l>=0;l--)(m=e[l])&&(s=m(s)||s);return s},N=(e,a)=>(r,n)=>a(r,n,e);const ie={tl:{size:6,color:"#409f11"}};i.SheetsNumfmtCellContentController=class extends t.Disposable{constructor(r,n,s,l,m,S,u){super();V(this,"_locale$",new I.BehaviorSubject("en"));V(this,"locale$",this._locale$.asObservable());this._instanceService=r,this._sheetInterceptorService=n,this._themeService=s,this._commandService=l,this._numfmtService=m,this._localeService=S,this._configService=u,this._initInterceptorCellContent()}get locale(){const r=this._locale$.getValue();if(r)return r;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.KO_KR:return"ko";case t.LocaleType.ZH_TW:return"zh-TW";case t.LocaleType.ES_ES:case t.LocaleType.CA_ES:return"es";case t.LocaleType.EN_US:case t.LocaleType.FA_IR:default:return"en"}}_initInterceptorCellContent(){const r=new t.ObjectMatrix;this.disposeWithMe(I.merge(this._locale$,this._localeService.currentLocale$).subscribe(()=>{r.reset()})),this.disposeWithMe(this._sheetInterceptorService.intercept(o.INTERCEPTOR_POINT.CELL_CONTENT,{effect:t.InterceptorEffectEnum.Value|t.InterceptorEffectEnum.Style,handler:(n,s,l)=>{var h,v;if(!n||n.v===void 0||n.v===null)return l(n);const m=s.unitId,S=s.subUnitId;let u;if(n!=null&&n.s){const c=s.workbook.getStyles().get(n.s);c!=null&&c.n&&(u=c.n)}if(u||(u=this._numfmtService.getValue(m,S,s.row,s.col)),t.isDefaultFormat(u==null?void 0:u.pattern)||n.t!==t.CellValueType.NUMBER&&o.checkCellValueType(n.v)!==t.CellValueType.NUMBER)return l(n);const f=n;if((!n||n===s.rawData)&&(n={...s.rawData}),t.isTextFormat(u==null?void 0:u.pattern))return(h=this._configService.getConfig(D))!=null&&h.disableTextFormatMark?(n.t=t.CellValueType.STRING,l(n)):(n.t=t.CellValueType.STRING,n.markers={...n==null?void 0:n.markers,...ie},l(n));let T="";const M=r.getValue(s.row,s.col);if(M&&M.parameters===`${f.v}_${u==null?void 0:u.pattern}`)return l({...n,...M.result});const C=z(u==null?void 0:u.pattern,Number(f.v),this.locale);if(T=C.result,!T)return l(n);const b={v:T,t:t.CellValueType.NUMBER};if(C.color){const c=(v=this._themeService.getColorFromTheme(`${C.color}.500`))!=null?v:C.color;c&&(b.interceptorStyle={cl:{rgb:c}})}return r.setValue(s.row,s.col,{result:b,parameters:`${f.v}_${u==null?void 0:u.pattern}`}),Object.assign(n,b),l(n)},priority:o.InterceptCellContentPriority.NUMFMT})),this.disposeWithMe(this._commandService.onCommandExecuted(n=>{if(n.id===o.SetNumfmtMutation.id){const s=n.params;Object.keys(s.values).forEach(l=>{s.values[l].ranges.forEach(S=>{t.Range.foreach(S,(u,f)=>{r.realDeleteValue(u,f)})})})}else if(n.id===o.SetRangeValuesMutation.id){const s=n.params;new t.ObjectMatrix(s.cellValue).forValue((l,m)=>{r.realDeleteValue(l,m)})}})),this.disposeWithMe(this._instanceService.getCurrentTypeOfUnit$(t.UniverInstanceType.UNIVER_SHEET).pipe(I.switchMap(n=>{var s;return(s=n==null?void 0:n.activeSheet$)!=null?s:I.of(null)}),I.skip(1)).subscribe(()=>r.reset()))}setNumfmtLocal(r){this._locale$.next(r)}},i.SheetsNumfmtCellContentController=re([N(0,t.IUniverInstanceService),N(1,t.Inject(o.SheetInterceptorService)),N(2,t.Inject(t.ThemeService)),N(3,t.Inject(t.ICommandService)),N(4,t.Inject(o.INumfmtService)),N(5,t.Inject(t.LocaleService)),N(6,t.IConfigService)],i.SheetsNumfmtCellContentController);const se="SHEET_NUMFMT_PLUGIN";var le=Object.defineProperty,ce=Object.getOwnPropertyDescriptor,ue=(e,a,r)=>a in e?le(e,a,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[a]=r,oe=(e,a,r,n)=>{for(var s=n>1?void 0:n?ce(a,r):a,l=e.length-1,m;l>=0;l--)(m=e[l])&&(s=m(s)||s);return s},w=(e,a)=>(r,n)=>a(r,n,e),Y=(e,a,r)=>ue(e,typeof a!="symbol"?a+"":a,r);i.UniverSheetsNumfmtPlugin=class extends t.Plugin{constructor(a=Z,r,n,s){super(),this._config=a,this._injector=r,this._configService=n,this._commandService=s;const{...l}=t.merge({},Z,this._config);this._configService.setConfig(D,l)}onStarting(){t.registerDependencies(this._injector,[[i.SheetsNumfmtCellContentController]]),t.touchDependencies(this._injector,[[i.SheetsNumfmtCellContentController]])}onRendered(){[x,q,W,K,R].forEach(a=>{this.disposeWithMe(this._commandService.registerCommand(a))})}},Y(i.UniverSheetsNumfmtPlugin,"pluginName",se),Y(i.UniverSheetsNumfmtPlugin,"type",t.UniverInstanceType.UNIVER_SHEET),i.UniverSheetsNumfmtPlugin=oe([t.DependentOn(o.UniverSheetsPlugin),w(1,t.Inject(t.Injector)),w(2,t.IConfigService),w(3,t.ICommandService)],i.UniverSheetsNumfmtPlugin);const me=e=>O.find(r=>e.includes(r)),fe=()=>O.map(e=>({label:e,value:e})),de=e=>H.map(a=>({label:a.label(e),value:a.suffix(e),color:a.color})),ge=()=>B.map(e=>({label:e.label,value:e.suffix})),Se=()=>G.map(e=>({label:e.label,value:e.suffix,color:e.color}));i.AddDecimalCommand=x,i.CURRENCYFORMAT=H,i.DATEFMTLISG=B,i.NUMBERFORMAT=G,i.SHEETS_NUMFMT_PLUGIN_CONFIG_KEY=D,i.SetCurrencyCommand=W,i.SetNumfmtCommand=R,i.SetPercentCommand=K,i.SubtractDecimalCommand=q,i.currencySymbols=O,i.getCurrencyFormat=A,i.getCurrencyFormatOptions=de,i.getCurrencyOptions=fe,i.getCurrencySymbolByLocale=F,i.getCurrencySymbolIconByLocale=j,i.getCurrencyType=me,i.getDateFormatOptions=ge,i.getDecimalFromPattern=P,i.getDecimalString=L,i.getNumberFormatOptions=Se,i.getNumfmtParseValueFilter=ne,i.getPatternPreview=k,i.getPatternPreviewIgnoreGeneral=z,i.getPatternType=Q,i.isPatternHasDecimal=J,i.localeCurrencySymbolMap=E,i.setPatternDecimal=U,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})}));
|
|
1
|
+
(function(i,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("@univerjs/core"),require("@univerjs/sheets"),require("rxjs"),require("@univerjs/engine-formula")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/sheets","rxjs","@univerjs/engine-formula"],t):(i=typeof globalThis<"u"?globalThis:i||self,t(i.UniverSheetsNumfmt={},i.UniverCore,i.UniverSheets,i.rxjs,i.UniverEngineFormula))})(this,(function(i,t,o,I,X){"use strict";var ve=Object.defineProperty;var Ce=(i,t,o)=>t in i?ve(i,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):i[t]=o;var w=(i,t,o)=>Ce(i,typeof t!="symbol"?t+"":t,o);const O=["$","£","¥","¤","֏","؋","৳","฿","៛","₡","₦","₩","₪","₫","€","₭","₮","₱","₲","₴","₸","₹","₺","₼","₽","₾","₿","﷼"],E=new Map([[t.LocaleType.EN_US,"$"],[t.LocaleType.RU_RU,"₽"],[t.LocaleType.VI_VN,"₫"],[t.LocaleType.ZH_CN,"¥"],[t.LocaleType.ZH_TW,"NT$"],[t.LocaleType.FR_FR,"€"],[t.LocaleType.FA_IR,"﷼"],[t.LocaleType.KO_KR,"₩"],[t.LocaleType.ES_ES,"€"],[t.LocaleType.CA_ES,"€"]]);function j(e){switch(e){case t.LocaleType.CA_ES:case t.LocaleType.ES_ES:case t.LocaleType.FR_FR:return{icon:"EuroIcon",symbol:E.get(e)||"€",locale:e};case t.LocaleType.RU_RU:return{icon:"RoubleIcon",symbol:E.get(e)||"₽",locale:e};case t.LocaleType.ZH_CN:return{icon:"RmbIcon",symbol:E.get(e)||"¥",locale:e};case t.LocaleType.EN_US:default:return{icon:"DollarIcon",symbol:"$",locale:t.LocaleType.EN_US}}}function F(e){return E.get(e)||"$"}function A(e,a=2){let r=a;a>127&&(r=127);let n="";return r>0&&(n=`.${"0".repeat(r)}`),`"${F(e)}"#,##0${n}_);[Red]("${F(e)}"#,##0${n})`}const B=[{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"}],G=[{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"}],H=[{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"}],P=(e,a=0)=>{var n;return e&&(n=t.numfmt.getFormatInfo(e).maxDecimals)!=null?n:a},L=e=>new Array(Math.min(Math.max(0,Number(e)),30)).fill(0).join(""),U=(e,a)=>e.split(";").map(n=>/\.0?/.test(n)?n.replace(/\.0*/g,`${a>0?".":""}${L(Number(a||0))}`):/0([^0]?)|0$/.test(n)?n.replace(/0([^0]+)|0$/,`0${a>0?".":""}${L(Number(a||0))}$1`):n).join(";"),J=e=>/\.0?/.test(e)||/0([^0]?)|0$/.test(e),R={id:"sheet.command.numfmt.set.numfmt",type:t.CommandType.COMMAND,handler:(e,a)=>{if(!a)return!1;const r=e.get(t.ICommandService),n=e.get(t.IUniverInstanceService),s=e.get(t.IUndoRedoService),l=o.getSheetCommandTarget(n,a);if(!l)return!1;const{unitId:m,subUnitId:S,worksheet:c}=l,f=a.values.filter(u=>!!u.pattern),T=a.values.filter(u=>!u.pattern),M=o.transformCellsToRange(m,S,f),C={unitId:m,subUnitId:S,ranges:T.map(u=>({startColumn:u.col,startRow:u.row,endColumn:u.col,endRow:u.row}))},b=[],p=[];if(f.length){const u=f.reduce((g,d)=>{t.isTextFormat(d.pattern)&&g.setValue(d.row,d.col,{t:t.CellValueType.STRING});const _=c.getCellRaw(d.row,d.col);if(_){const $=o.checkCellValueType(_.v);$!==_.t&&g.setValue(d.row,d.col,{t:$})}return g},new t.ObjectMatrix).getMatrix(),y=new t.ObjectMatrix;new t.ObjectMatrix(u).forValue((g,d)=>{const _=c.getCellRaw(g,d);_?y.setValue(g,d,{t:_.t}):y.setValue(g,d,{t:void 0})}),Object.keys(M.values).forEach(g=>{const d=M.values[g];d.ranges=o.rangeMerge(d.ranges)}),b.push({id:o.SetNumfmtMutation.id,params:M});const h=o.factorySetNumfmtUndoMutation(e,M);p.push(...h)}if(T.length){C.ranges=o.rangeMerge(C.ranges);const u=T.reduce((g,d)=>{const _=c.getCellRaw(d.row,d.col);if(_){const $=o.checkCellValueType(_.v);$!==_.t&&g.setValue(d.row,d.col,{t:$})}return g},new t.ObjectMatrix).getMatrix(),y=new t.ObjectMatrix;new t.ObjectMatrix(u).forValue((g,d)=>{const _=c.getCellRaw(g,d);_?y.setValue(g,d,{t:_.t}):y.setValue(g,d,{t:void 0})}),b.push({id:o.RemoveNumfmtMutation.id,params:C},{id:o.SetRangeValuesMutation.id,params:{unitId:m,subUnitId:S,cellValue:u}});const h=o.factoryRemoveNumfmtUndoMutation(e,C);p.push({id:o.SetRangeValuesMutation.id,params:{unitId:m,subUnitId:S,cellValue:y.getMatrix()}},...h)}const v=t.sequenceExecute(b,r).result;return v&&s.pushUndoRedo({unitID:m,undoMutations:p,redoMutations:b}),v}},x={id:"sheet.command.numfmt.add.decimal.command",type:t.CommandType.COMMAND,handler:async e=>{const a=e.get(t.ICommandService),r=e.get(o.SheetsSelectionsService),n=e.get(o.INumfmtService),s=e.get(t.IUniverInstanceService),l=r.getCurrentSelections();if(!l||!l.length)return!1;const m=o.getSheetCommandTarget(s);if(!m)return!1;const{unitId:S,subUnitId:c}=m;let f=0;l.forEach(b=>{t.Range.foreach(b.range,(p,v)=>{const u=n.getValue(S,c,p,v);if(!u){const h=m.worksheet.getCellRaw(p,v);if(!f&&h&&h.t===t.CellValueType.NUMBER&&h.v){const g=/\.(\d*)$/.exec(String(h.v));if(g){const d=g[1].length;if(!d)return;f=Math.max(f,d)}}return}const y=P(u.pattern);f=y>f?y:f})});const T=f+1,M=U(`0${T>0?".0":""}`,T),C=[];return l.forEach(b=>{t.Range.foreach(b.range,(p,v)=>{const u=n.getValue(S,c,p,v);if(!u)C.push({row:p,col:v,pattern:M});else{const y=P(u.pattern),h=U(u.pattern,y+1);h!==u.pattern&&C.push({row:p,col:v,pattern:h})}})}),C.length?await a.executeCommand(R.id,{values:C}):!1}},W={id:"sheet.command.numfmt.set.currency",type:t.CommandType.COMMAND,handler:async e=>{const a=e.get(t.ICommandService),r=e.get(o.SheetsSelectionsService),n=e.get(t.LocaleService),s=r.getCurrentSelections();if(!s||!s.length)return!1;const l=[],m=j(n.getCurrentLocale()),S=A(m.locale);return s.forEach(f=>{t.Range.foreach(f.range,(T,M)=>{l.push({row:T,col:M,pattern:S,type:"currency"})})}),await a.executeCommand(R.id,{values:l})}},K={id:"sheet.command.numfmt.set.percent",type:t.CommandType.COMMAND,handler:async e=>{const a=e.get(t.ICommandService),n=e.get(o.SheetsSelectionsService).getCurrentSelections();if(!n||!n.length)return!1;const s=[],l="0%";return n.forEach(S=>{t.Range.foreach(S.range,(c,f)=>{s.push({row:c,col:f,pattern:l,type:"percent"})})}),await a.executeCommand(R.id,{values:s})}},q={id:"sheet.command.numfmt.subtract.decimal.command",type:t.CommandType.COMMAND,handler:async e=>{const a=e.get(t.ICommandService),r=e.get(o.SheetsSelectionsService),n=e.get(o.INumfmtService),s=e.get(t.IUniverInstanceService),l=r.getCurrentSelections();if(!l||!l.length)return!1;const m=o.getSheetCommandTarget(s);if(!m)return!1;const{unitId:S,subUnitId:c}=m;let f=0;l.forEach(p=>{t.Range.foreach(p.range,(v,u)=>{const y=n.getValue(S,c,v,u);if(!y){const g=m.worksheet.getCellRaw(v,u);if(!f&&g&&g.t===t.CellValueType.NUMBER&&g.v){const d=/\.(\d*)$/.exec(String(g.v));if(d){const _=d[1].length;if(!_)return;f=Math.max(f,_)}}return}const h=P(y.pattern);f=h>f?h:f})});const T=f-1,M=U(`0${T>0?".0":"."}`,T),C=[];return l.forEach(p=>{t.Range.foreach(p.range,(v,u)=>{const y=n.getValue(S,c,v,u);if(!y)C.push({row:v,col:u,pattern:M});else{const h=P(y.pattern);C.push({row:v,col:u,pattern:U(y.pattern,h-1)})}})}),await a.executeCommand(R.id,{values:C})}},V="sheets-numfmt.config",Z={},Q=e=>t.numfmt.getFormatInfo(e).type||"unknown",k=(e,a,r="en")=>{const n=t.numfmt.formatColor(e,a),s=n?String(n):void 0,l=t.numfmt.format(e,a,{locale:r,throws:!1});return a<0?{result:l,color:s}:{result:l}},z=(e,a,r)=>e===t.DEFAULT_NUMBER_FORMAT?{result:String(X.stripErrorMargin(a))}:k(e,a,r),ee=new Set(["m d"]),te=new Set(["h:mm AM/PM","hh:mm AM/PM"]),ne=e=>{var n,s;const a=(s=(n=t.numfmt.parseDate(e))!=null?n:t.numfmt.parseTime(e))!=null?s:t.numfmt.parseNumber(e);if(!a)return null;const{z:r}=a;return r&&(ee.has(r)||te.has(r)&&!/\s(A|AM|P|PM)$/i.test(e))?null:a};var ae=Object.getOwnPropertyDescriptor,re=(e,a,r,n)=>{for(var s=n>1?void 0:n?ae(a,r):a,l=e.length-1,m;l>=0;l--)(m=e[l])&&(s=m(s)||s);return s},N=(e,a)=>(r,n)=>a(r,n,e);const ie={tl:{size:6,color:"#409f11"}};i.SheetsNumfmtCellContentController=class extends t.Disposable{constructor(r,n,s,l,m,S,c){super();w(this,"_locale$",new I.BehaviorSubject("en"));w(this,"locale$",this._locale$.asObservable());this._instanceService=r,this._sheetInterceptorService=n,this._themeService=s,this._commandService=l,this._numfmtService=m,this._localeService=S,this._configService=c,this._initInterceptorCellContent()}get locale(){const r=this._locale$.getValue();if(r)return r;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.KO_KR:return"ko";case t.LocaleType.ZH_TW:return"zh-TW";case t.LocaleType.ES_ES:case t.LocaleType.CA_ES:return"es";case t.LocaleType.EN_US:case t.LocaleType.FA_IR:default:return"en"}}_initInterceptorCellContent(){const r=new t.ObjectMatrix;this.disposeWithMe(I.merge(this._locale$,this._localeService.currentLocale$).subscribe(()=>{r.reset()})),this.disposeWithMe(this._sheetInterceptorService.intercept(o.INTERCEPTOR_POINT.CELL_CONTENT,{effect:t.InterceptorEffectEnum.Value|t.InterceptorEffectEnum.Style,handler:(n,s,l)=>{var p,v;if(!n||n.v===void 0||n.v===null||n.t===t.CellValueType.BOOLEAN||n.t===t.CellValueType.FORCE_STRING)return l(n);const m=s.unitId,S=s.subUnitId;let c;if(n!=null&&n.s){const u=s.workbook.getStyles().get(n.s);u!=null&&u.n&&(c=u.n)}if(c||(c=this._numfmtService.getValue(m,S,s.row,s.col)),t.isDefaultFormat(c==null?void 0:c.pattern)||n.t!==t.CellValueType.NUMBER&&o.checkCellValueType(n.v,n.t)!==t.CellValueType.NUMBER)return l(n);const f=n;if((!n||n===s.rawData)&&(n={...s.rawData}),t.isTextFormat(c==null?void 0:c.pattern))return(p=this._configService.getConfig(V))!=null&&p.disableTextFormatMark?(n.t=t.CellValueType.STRING,l(n)):(n.t=t.CellValueType.STRING,n.markers={...n==null?void 0:n.markers,...ie},l(n));let T="";const M=r.getValue(s.row,s.col);if(M&&M.parameters===`${f.v}_${c==null?void 0:c.pattern}`)return l({...n,...M.result});const C=z(c==null?void 0:c.pattern,Number(f.v),this.locale);if(T=C.result,!T)return l(n);const b={v:T,t:t.CellValueType.NUMBER};if(C.color){const u=(v=this._themeService.getColorFromTheme(`${C.color}.500`))!=null?v:C.color;u&&(b.interceptorStyle={cl:{rgb:u}})}return r.setValue(s.row,s.col,{result:b,parameters:`${f.v}_${c==null?void 0:c.pattern}`}),Object.assign(n,b),l(n)},priority:o.InterceptCellContentPriority.NUMFMT})),this.disposeWithMe(this._commandService.onCommandExecuted(n=>{if(n.id===o.SetNumfmtMutation.id){const s=n.params;Object.keys(s.values).forEach(l=>{s.values[l].ranges.forEach(S=>{t.Range.foreach(S,(c,f)=>{r.realDeleteValue(c,f)})})})}else if(n.id===o.SetRangeValuesMutation.id){const s=n.params;new t.ObjectMatrix(s.cellValue).forValue((l,m)=>{r.realDeleteValue(l,m)})}})),this.disposeWithMe(this._instanceService.getCurrentTypeOfUnit$(t.UniverInstanceType.UNIVER_SHEET).pipe(I.switchMap(n=>{var s;return(s=n==null?void 0:n.activeSheet$)!=null?s:I.of(null)}),I.skip(1)).subscribe(()=>r.reset()))}setNumfmtLocal(r){this._locale$.next(r)}},i.SheetsNumfmtCellContentController=re([N(0,t.IUniverInstanceService),N(1,t.Inject(o.SheetInterceptorService)),N(2,t.Inject(t.ThemeService)),N(3,t.Inject(t.ICommandService)),N(4,t.Inject(o.INumfmtService)),N(5,t.Inject(t.LocaleService)),N(6,t.IConfigService)],i.SheetsNumfmtCellContentController);const se="SHEET_NUMFMT_PLUGIN";var le=Object.defineProperty,ue=Object.getOwnPropertyDescriptor,ce=(e,a,r)=>a in e?le(e,a,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[a]=r,oe=(e,a,r,n)=>{for(var s=n>1?void 0:n?ue(a,r):a,l=e.length-1,m;l>=0;l--)(m=e[l])&&(s=m(s)||s);return s},D=(e,a)=>(r,n)=>a(r,n,e),Y=(e,a,r)=>ce(e,typeof a!="symbol"?a+"":a,r);i.UniverSheetsNumfmtPlugin=class extends t.Plugin{constructor(a=Z,r,n,s){super(),this._config=a,this._injector=r,this._configService=n,this._commandService=s;const{...l}=t.merge({},Z,this._config);this._configService.setConfig(V,l)}onStarting(){t.registerDependencies(this._injector,[[i.SheetsNumfmtCellContentController]]),t.touchDependencies(this._injector,[[i.SheetsNumfmtCellContentController]])}onRendered(){[x,q,W,K,R].forEach(a=>{this.disposeWithMe(this._commandService.registerCommand(a))})}},Y(i.UniverSheetsNumfmtPlugin,"pluginName",se),Y(i.UniverSheetsNumfmtPlugin,"type",t.UniverInstanceType.UNIVER_SHEET),i.UniverSheetsNumfmtPlugin=oe([t.DependentOn(o.UniverSheetsPlugin),D(1,t.Inject(t.Injector)),D(2,t.IConfigService),D(3,t.ICommandService)],i.UniverSheetsNumfmtPlugin);const me=e=>O.find(r=>e.includes(r)),fe=()=>O.map(e=>({label:e,value:e})),de=e=>H.map(a=>({label:a.label(e),value:a.suffix(e),color:a.color})),ge=()=>B.map(e=>({label:e.label,value:e.suffix})),Se=()=>G.map(e=>({label:e.label,value:e.suffix,color:e.color}));i.AddDecimalCommand=x,i.CURRENCYFORMAT=H,i.DATEFMTLISG=B,i.NUMBERFORMAT=G,i.SHEETS_NUMFMT_PLUGIN_CONFIG_KEY=V,i.SetCurrencyCommand=W,i.SetNumfmtCommand=R,i.SetPercentCommand=K,i.SubtractDecimalCommand=q,i.currencySymbols=O,i.getCurrencyFormat=A,i.getCurrencyFormatOptions=de,i.getCurrencyOptions=fe,i.getCurrencySymbolByLocale=F,i.getCurrencySymbolIconByLocale=j,i.getCurrencyType=me,i.getDateFormatOptions=ge,i.getDecimalFromPattern=P,i.getDecimalString=L,i.getNumberFormatOptions=Se,i.getNumfmtParseValueFilter=ne,i.getPatternPreview=k,i.getPatternPreviewIgnoreGeneral=z,i.getPatternType=Q,i.isPatternHasDecimal=J,i.localeCurrencySymbolMap=E,i.setPatternDecimal=U,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@univerjs/sheets-numfmt",
|
|
3
|
-
"version": "0.10.6-
|
|
3
|
+
"version": "0.10.6-nightly.202509060614",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "UniverSheet numfmt plugin",
|
|
6
6
|
"author": "DreamNum <developer@univer.ai>",
|
|
@@ -58,14 +58,14 @@
|
|
|
58
58
|
"rxjs": ">=7.0.0"
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@univerjs/core": "0.10.6-
|
|
62
|
-
"@univerjs/
|
|
63
|
-
"@univerjs/
|
|
61
|
+
"@univerjs/core": "0.10.6-nightly.202509060614",
|
|
62
|
+
"@univerjs/sheets": "0.10.6-nightly.202509060614",
|
|
63
|
+
"@univerjs/engine-formula": "0.10.6-nightly.202509060614"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
66
|
"rxjs": "^7.8.2",
|
|
67
67
|
"typescript": "^5.9.2",
|
|
68
|
-
"vite": "^7.1.
|
|
68
|
+
"vite": "^7.1.4",
|
|
69
69
|
"vitest": "^3.2.4",
|
|
70
70
|
"@univerjs-infra/shared": "0.10.6"
|
|
71
71
|
},
|