@univerjs/sheets-numfmt 0.16.1 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/index.js +1 -1
- package/lib/es/index.js +167 -162
- package/lib/index.js +167 -162
- package/lib/types/index.d.ts +2 -2
- package/lib/types/plugin.d.ts +3 -1
- package/lib/umd/index.js +1 -1
- package/package.json +5 -5
- /package/lib/types/{controllers/config.schema.d.ts → config/config.d.ts} +0 -0
package/lib/umd/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(r,e){typeof exports=="object"&&typeof module<"u"?e(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"],e):(r=typeof globalThis<"u"?globalThis:r||self,e(r.UniverSheetsNumfmt={},r.UniverCore,r.UniverSheets,r.rxjs,r.UniverEngineFormula))})(this,(function(r,e,u,N,X){"use strict";var de=Object.defineProperty;var ge=(r,e,u)=>e in r?de(r,e,{enumerable:!0,configurable:!0,writable:!0,value:u}):r[e]=u;var V=(r,e,u)=>ge(r,typeof e!="symbol"?e+"":e,u);const P=["$","£","¥","¤","֏","؋","৳","฿","៛","₡","₦","₩","₪","₫","€","₭","₮","₱","₲","₴","₸","₹","₺","₼","₽","₾","₿","﷼"],E=new Map([[e.LocaleType.EN_US,"$"],[e.LocaleType.RU_RU,"₽"],[e.LocaleType.VI_VN,"₫"],[e.LocaleType.ZH_CN,"¥"],[e.LocaleType.ZH_TW,"NT$"],[e.LocaleType.FR_FR,"€"],[e.LocaleType.FA_IR,"﷼"],[e.LocaleType.KO_KR,"₩"],[e.LocaleType.ES_ES,"€"],[e.LocaleType.CA_ES,"€"],[e.LocaleType.SK_SK,"€"]]);function j(t){switch(t){case e.LocaleType.CA_ES:case e.LocaleType.ES_ES:case e.LocaleType.FR_FR:case e.LocaleType.SK_SK:return{icon:"EuroIcon",symbol:E.get(t)||"€",locale:t};case e.LocaleType.RU_RU:return{icon:"RoubleIcon",symbol:E.get(t)||"₽",locale:t};case e.LocaleType.ZH_CN:return{icon:"RmbIcon",symbol:E.get(t)||"¥",locale:t};case e.LocaleType.EN_US:default:return{icon:"DollarIcon",symbol:"$",locale:e.LocaleType.EN_US}}}function L(t){return E.get(t)||"$"}function A(t,a=2){let i=a;a>127&&(i=127);let n="";return i>0&&(n=`.${"0".repeat(i)}`),`"${L(t)}"#,##0${n}_);[Red]("${L(t)}"#,##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:t=>`${t}1,235`,suffix:t=>`"${t}"#,##0.00_);"${t}"#,##0.00`},{label:t=>`${t}1,235`,suffix:t=>`"${t}"#,##0.00_);[Red]"${t}"#,##0.00`,color:"red"},{label:t=>`(${t}1,235)`,suffix:t=>`"${t}"#,##0.00_);("${t}"#,##0.00)`},{label:t=>`(${t}1,235)`,suffix:t=>`"${t}"#,##0.00_);[Red]("${t}"#,##0.00)`,color:"red"},{label:t=>`-${t}1,235`,suffix:t=>`"${t}"#,##0.00_);-"${t}"#,##0.00`},{label:t=>`-${t}1,235`,suffix:t=>`"${t}"#,##0.00_);[Red]-"${t}"#,##0.00`,color:"red"}],U=(t,a=0)=>{var n;return t&&(n=e.numfmt.getFormatInfo(t).maxDecimals)!=null?n:a},F=t=>new Array(Math.min(Math.max(0,Number(t)),30)).fill(0).join(""),$=(t,a)=>t.split(";").map(n=>/\.0?/.test(n)?n.replace(/\.0*/g,`${a>0?".":""}${F(Number(a||0))}`):/0([^0]?)|0$/.test(n)?n.replace(/0([^0]+)|0$/,`0${a>0?".":""}${F(Number(a||0))}$1`):n).join(";"),J=t=>/\.0?/.test(t)||/0([^0]?)|0$/.test(t),I={id:"sheet.command.numfmt.set.numfmt",type:e.CommandType.COMMAND,handler:(t,a)=>{if(!a)return!1;const i=t.get(e.ICommandService),n=t.get(e.IUniverInstanceService),s=t.get(e.IUndoRedoService),l=u.getSheetCommandTarget(n,a);if(!l)return!1;const{unitId:m,subUnitId:S,worksheet:o}=l,f=a.values.filter(c=>!!c.pattern),T=a.values.filter(c=>!c.pattern),M=u.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=[],p=[];if(f.length){const c=f.reduce((g,d)=>{e.isTextFormat(d.pattern)&&g.setValue(d.row,d.col,{t:e.CellValueType.STRING});const _=o.getCellRaw(d.row,d.col);if(_){const O=u.checkCellValueType(_.v);O!==_.t&&g.setValue(d.row,d.col,{t:O})}return g},new e.ObjectMatrix).getMatrix(),v=new e.ObjectMatrix;new e.ObjectMatrix(c).forValue((g,d)=>{const _=o.getCellRaw(g,d);_?v.setValue(g,d,{t:_.t}):v.setValue(g,d,{t:void 0})}),Object.keys(M.values).forEach(g=>{const d=M.values[g];d.ranges=u.rangeMerge(d.ranges)}),b.push({id:u.SetNumfmtMutation.id,params:M});const h=u.factorySetNumfmtUndoMutation(t,M);p.push(...h)}if(T.length){C.ranges=u.rangeMerge(C.ranges);const c=T.reduce((g,d)=>{const _=o.getCellRaw(d.row,d.col);if(_){const O=u.checkCellValueType(_.v);O!==_.t&&g.setValue(d.row,d.col,{t:O})}return g},new e.ObjectMatrix).getMatrix(),v=new e.ObjectMatrix;new e.ObjectMatrix(c).forValue((g,d)=>{const _=o.getCellRaw(g,d);_?v.setValue(g,d,{t:_.t}):v.setValue(g,d,{t:void 0})}),b.push({id:u.RemoveNumfmtMutation.id,params:C},{id:u.SetRangeValuesMutation.id,params:{unitId:m,subUnitId:S,cellValue:c}});const h=u.factoryRemoveNumfmtUndoMutation(t,C);p.push({id:u.SetRangeValuesMutation.id,params:{unitId:m,subUnitId:S,cellValue:v.getMatrix()}},...h)}const y=e.sequenceExecute(b,i).result;return y&&s.pushUndoRedo({unitID:m,undoMutations:p,redoMutations:b}),y}},K={id:"sheet.command.numfmt.add.decimal.command",type:e.CommandType.COMMAND,handler:async t=>{const a=t.get(e.ICommandService),i=t.get(u.SheetsSelectionsService),n=t.get(u.INumfmtService),s=t.get(e.IUniverInstanceService),l=i.getCurrentSelections();if(!l||!l.length)return!1;const m=u.getSheetCommandTarget(s);if(!m)return!1;const{unitId:S,subUnitId:o}=m;let f=0;l.forEach(b=>{e.Range.foreach(b.range,(p,y)=>{const c=n.getValue(S,o,p,y);if(!c){const h=m.worksheet.getCellRaw(p,y);if(!f&&h&&h.t===e.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 v=U(c.pattern);f=v>f?v:f})});const T=f+1,M=$(`0${T>0?".0":""}`,T),C=[];return l.forEach(b=>{e.Range.foreach(b.range,(p,y)=>{const c=n.getValue(S,o,p,y);if(e.isDefaultFormat(c==null?void 0:c.pattern))C.push({row:p,col:y,pattern:M});else{const v=U(c.pattern),h=$(c.pattern,v+1);h!==c.pattern&&C.push({row:p,col:y,pattern:h})}})}),C.length?await a.executeCommand(I.id,{values:C}):!1}},x={id:"sheet.command.numfmt.set.currency",type:e.CommandType.COMMAND,handler:async t=>{const a=t.get(e.ICommandService),i=t.get(u.SheetsSelectionsService),n=t.get(e.LocaleService),s=i.getCurrentSelections();if(!s||!s.length)return!1;const l=[],m=j(n.getCurrentLocale()),S=A(m.locale);return s.forEach(f=>{e.Range.foreach(f.range,(T,M)=>{l.push({row:T,col:M,pattern:S,type:"currency"})})}),await a.executeCommand(I.id,{values:l})}},W={id:"sheet.command.numfmt.set.percent",type:e.CommandType.COMMAND,handler:async t=>{const a=t.get(e.ICommandService),n=t.get(u.SheetsSelectionsService).getCurrentSelections();if(!n||!n.length)return!1;const s=[],l="0%";return n.forEach(S=>{e.Range.foreach(S.range,(o,f)=>{s.push({row:o,col:f,pattern:l,type:"percent"})})}),await a.executeCommand(I.id,{values:s})}},k={id:"sheet.command.numfmt.subtract.decimal.command",type:e.CommandType.COMMAND,handler:async t=>{const a=t.get(e.ICommandService),i=t.get(u.SheetsSelectionsService),n=t.get(u.INumfmtService),s=t.get(e.IUniverInstanceService),l=i.getCurrentSelections();if(!l||!l.length)return!1;const m=u.getSheetCommandTarget(s);if(!m)return!1;const{unitId:S,subUnitId:o}=m;let f=0;l.forEach(p=>{e.Range.foreach(p.range,(y,c)=>{const v=n.getValue(S,o,y,c);if(!v){const g=m.worksheet.getCellRaw(y,c);if(!f&&g&&g.t===e.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=U(v.pattern);f=h>f?h:f})});const T=f-1,M=$(`0${T>0?".0":"."}`,T),C=[];return l.forEach(p=>{e.Range.foreach(p.range,(y,c)=>{const v=n.getValue(S,o,y,c);if(e.isDefaultFormat(v==null?void 0:v.pattern))C.push({row:y,col:c,pattern:M});else{const h=U(v.pattern);C.push({row:y,col:c,pattern:$(v.pattern,h-1)})}})}),await a.executeCommand(I.id,{values:C})}},D="sheets-numfmt.config",q={},Q=t=>e.numfmt.getFormatInfo(t).type||"unknown",Z=(t,a,i="en")=>{try{const n=e.numfmt.formatColor(t,a),s=n?String(n):void 0,l=e.numfmt.format(t,a,{locale:i,throws:!1});return a<0?{result:l,color:s}:{result:l}}catch(n){console.warn("getPatternPreview error:",t,n)}return{result:String(a)}},Y=(t,a,i)=>t===e.DEFAULT_NUMBER_FORMAT?{result:String(X.stripErrorMargin(a))}:Z(t,a,i);var ee=Object.getOwnPropertyDescriptor,te=(t,a,i,n)=>{for(var s=n>1?void 0:n?ee(a,i):a,l=t.length-1,m;l>=0;l--)(m=t[l])&&(s=m(s)||s);return s},R=(t,a)=>(i,n)=>a(i,n,t);const ne={tl:{size:6,color:"#409f11"}};r.SheetsNumfmtCellContentController=class extends e.Disposable{constructor(i,n,s,l,m,S,o){super();V(this,"_locale$",new N.BehaviorSubject("en"));V(this,"locale$",this._locale$.asObservable());this._instanceService=i,this._sheetInterceptorService=n,this._themeService=s,this._commandService=l,this._numfmtService=m,this._localeService=S,this._configService=o,this._initInterceptorCellContent()}get locale(){const i=this._locale$.getValue();if(i)return i;switch(this._localeService.getCurrentLocale()){case e.LocaleType.FR_FR:return"fr";case e.LocaleType.RU_RU:return"ru";case e.LocaleType.VI_VN:return"vi";case e.LocaleType.ZH_CN:return"zh-CN";case e.LocaleType.KO_KR:return"ko";case e.LocaleType.ZH_TW:return"zh-TW";case e.LocaleType.ES_ES:case e.LocaleType.CA_ES:return"es";case e.LocaleType.SK_SK:return"sk";case e.LocaleType.EN_US:case e.LocaleType.FA_IR:default:return"en"}}_initInterceptorCellContent(){const i=new e.ObjectMatrix;this.disposeWithMe(N.merge(this._locale$,this._localeService.currentLocale$).subscribe(()=>{i.reset()})),this.disposeWithMe(this._sheetInterceptorService.intercept(u.INTERCEPTOR_POINT.CELL_CONTENT,{effect:e.InterceptorEffectEnum.Value|e.InterceptorEffectEnum.Style,handler:(n,s,l)=>{var p,y;if(!n||n.v===void 0||n.v===null||n.t===e.CellValueType.BOOLEAN||n.t===e.CellValueType.FORCE_STRING)return l(n);const m=s.unitId,S=s.subUnitId;let o;if(n!=null&&n.s){const c=s.workbook.getStyles().get(n.s);c!=null&&c.n&&(o=c.n)}if(o||(o=this._numfmtService.getValue(m,S,s.row,s.col)),e.isDefaultFormat(o==null?void 0:o.pattern)||n.t!==e.CellValueType.NUMBER&&u.checkCellValueType(n.v,n.t)!==e.CellValueType.NUMBER)return l(n);const f=n;if((!n||n===s.rawData)&&(n={...s.rawData}),e.isTextFormat(o==null?void 0:o.pattern))return(p=this._configService.getConfig(D))!=null&&p.disableTextFormatMark?(n.t=e.CellValueType.STRING,l(n)):(n.t=e.CellValueType.STRING,n.markers={...n==null?void 0:n.markers,...ne},l(n));let T="";const M=i.getValue(s.row,s.col);if(M&&M.parameters===`${f.v}_${o==null?void 0:o.pattern}`)return l({...n,...M.result});const C=Y(o==null?void 0:o.pattern,Number(f.v),this.locale);if(T=C.result,!T)return l(n);const b={v:T,t:e.CellValueType.NUMBER};if(C.color){const c=(y=this._themeService.getColorFromTheme(`${C.color}.500`))!=null?y:C.color;c&&(b.interceptorStyle={cl:{rgb:c}})}return i.setValue(s.row,s.col,{result:b,parameters:`${f.v}_${o==null?void 0:o.pattern}`}),Object.assign(n,b),l(n)},priority:u.InterceptCellContentPriority.NUMFMT})),this.disposeWithMe(this._commandService.onCommandExecuted(n=>{if(n.id===u.SetNumfmtMutation.id){const s=n.params;Object.keys(s.values).forEach(l=>{s.values[l].ranges.forEach(S=>{e.Range.foreach(S,(o,f)=>{i.realDeleteValue(o,f)})})})}else if(n.id===u.SetRangeValuesMutation.id){const s=n.params;new e.ObjectMatrix(s.cellValue).forValue((l,m)=>{i.realDeleteValue(l,m)})}})),this.disposeWithMe(this._instanceService.getCurrentTypeOfUnit$(e.UniverInstanceType.UNIVER_SHEET).pipe(N.switchMap(n=>{var s;return(s=n==null?void 0:n.activeSheet$)!=null?s:N.of(null)}),N.skip(1)).subscribe(()=>i.reset()))}setNumfmtLocal(i){this._locale$.next(i)}},r.SheetsNumfmtCellContentController=te([R(0,e.IUniverInstanceService),R(1,e.Inject(u.SheetInterceptorService)),R(2,e.Inject(e.ThemeService)),R(3,e.Inject(e.ICommandService)),R(4,e.Inject(u.INumfmtService)),R(5,e.Inject(e.LocaleService)),R(6,e.IConfigService)],r.SheetsNumfmtCellContentController);const ae="SHEET_NUMFMT_PLUGIN";var re=Object.defineProperty,ie=Object.getOwnPropertyDescriptor,se=(t,a,i)=>a in t?re(t,a,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[a]=i,le=(t,a,i,n)=>{for(var s=n>1?void 0:n?ie(a,i):a,l=t.length-1,m;l>=0;l--)(m=t[l])&&(s=m(s)||s);return s},w=(t,a)=>(i,n)=>a(i,n,t),z=(t,a,i)=>se(t,typeof a!="symbol"?a+"":a,i);r.UniverSheetsNumfmtPlugin=class extends e.Plugin{constructor(a=q,i,n,s){super(),this._config=a,this._injector=i,this._configService=n,this._commandService=s;const{...l}=e.merge({},q,this._config);this._configService.setConfig(D,l)}onStarting(){e.registerDependencies(this._injector,[[r.SheetsNumfmtCellContentController]]),e.touchDependencies(this._injector,[[r.SheetsNumfmtCellContentController]]),[K,k,x,W,I].forEach(a=>{this.disposeWithMe(this._commandService.registerCommand(a))})}},z(r.UniverSheetsNumfmtPlugin,"pluginName",ae),z(r.UniverSheetsNumfmtPlugin,"type",e.UniverInstanceType.UNIVER_SHEET),r.UniverSheetsNumfmtPlugin=le([e.DependentOn(u.UniverSheetsPlugin),w(1,e.Inject(e.Injector)),w(2,e.IConfigService),w(3,e.ICommandService)],r.UniverSheetsNumfmtPlugin);const ce=t=>P.find(i=>t.includes(i)),oe=()=>P.map(t=>({label:t,value:t})),ue=t=>H.map(a=>({label:a.label(t),value:a.suffix(t),color:a.color})),me=()=>B.map(t=>({label:t.label,value:t.suffix})),fe=()=>G.map(t=>({label:t.label,value:t.suffix,color:t.color}));r.AddDecimalCommand=K,r.CURRENCYFORMAT=H,r.DATEFMTLISG=B,r.NUMBERFORMAT=G,r.SHEETS_NUMFMT_PLUGIN_CONFIG_KEY=D,r.SetCurrencyCommand=x,r.SetNumfmtCommand=I,r.SetPercentCommand=W,r.SubtractDecimalCommand=k,r.currencySymbols=P,r.getCurrencyFormat=A,r.getCurrencyFormatOptions=ue,r.getCurrencyOptions=oe,r.getCurrencySymbolByLocale=L,r.getCurrencySymbolIconByLocale=j,r.getCurrencyType=ce,r.getDateFormatOptions=me,r.getDecimalFromPattern=U,r.getDecimalString=F,r.getNumberFormatOptions=fe,r.getPatternPreview=Z,r.getPatternPreviewIgnoreGeneral=Y,r.getPatternType=Q,r.isPatternHasDecimal=J,r.localeCurrencySymbolMap=E,r.setPatternDecimal=$,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})}));
|
|
1
|
+
(function(r,e){typeof exports=="object"&&typeof module<"u"?e(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"],e):(r=typeof globalThis<"u"?globalThis:r||self,e(r.UniverSheetsNumfmt={},r.UniverCore,r.UniverSheets,r.rxjs,r.UniverEngineFormula))})(this,(function(r,e,u,I,J){"use strict";var ge=Object.defineProperty;var Se=(r,e,u)=>e in r?ge(r,e,{enumerable:!0,configurable:!0,writable:!0,value:u}):r[e]=u;var V=(r,e,u)=>Se(r,typeof e!="symbol"?e+"":e,u);const L=["$","£","¥","¤","֏","؋","৳","฿","៛","₡","₦","₩","₪","₫","€","₭","₮","₱","₲","₴","₸","₹","₺","₼","₽","₾","₿","﷼"],E=new Map([[e.LocaleType.EN_US,"$"],[e.LocaleType.RU_RU,"₽"],[e.LocaleType.VI_VN,"₫"],[e.LocaleType.ZH_CN,"¥"],[e.LocaleType.ZH_TW,"NT$"],[e.LocaleType.FR_FR,"€"],[e.LocaleType.FA_IR,"﷼"],[e.LocaleType.KO_KR,"₩"],[e.LocaleType.ES_ES,"€"],[e.LocaleType.CA_ES,"€"],[e.LocaleType.SK_SK,"€"]]);function A(t){switch(t){case e.LocaleType.CA_ES:case e.LocaleType.ES_ES:case e.LocaleType.FR_FR:case e.LocaleType.SK_SK:return{icon:"EuroIcon",symbol:E.get(t)||"€",locale:t};case e.LocaleType.RU_RU:return{icon:"RoubleIcon",symbol:E.get(t)||"₽",locale:t};case e.LocaleType.ZH_CN:return{icon:"RmbIcon",symbol:E.get(t)||"¥",locale:t};case e.LocaleType.EN_US:default:return{icon:"DollarIcon",symbol:"$",locale:e.LocaleType.EN_US}}}function F(t){return E.get(t)||"$"}function B(t,a=2){let i=a;a>127&&(i=127);let n="";return i>0&&(n=`.${"0".repeat(i)}`),`"${F(t)}"#,##0${n}_);[Red]("${F(t)}"#,##0${n})`}const G=[{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"}],H=[{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"}],K=[{label:t=>`${t}1,235`,suffix:t=>`"${t}"#,##0.00_);"${t}"#,##0.00`},{label:t=>`${t}1,235`,suffix:t=>`"${t}"#,##0.00_);[Red]"${t}"#,##0.00`,color:"red"},{label:t=>`(${t}1,235)`,suffix:t=>`"${t}"#,##0.00_);("${t}"#,##0.00)`},{label:t=>`(${t}1,235)`,suffix:t=>`"${t}"#,##0.00_);[Red]("${t}"#,##0.00)`,color:"red"},{label:t=>`-${t}1,235`,suffix:t=>`"${t}"#,##0.00_);-"${t}"#,##0.00`},{label:t=>`-${t}1,235`,suffix:t=>`"${t}"#,##0.00_);[Red]-"${t}"#,##0.00`,color:"red"}],U=(t,a=0)=>{var n;return t&&(n=e.numfmt.getFormatInfo(t).maxDecimals)!=null?n:a},D=t=>new Array(Math.min(Math.max(0,Number(t)),30)).fill(0).join(""),$=(t,a)=>t.split(";").map(n=>/\.0?/.test(n)?n.replace(/\.0*/g,`${a>0?".":""}${D(Number(a||0))}`):/0([^0]?)|0$/.test(n)?n.replace(/0([^0]+)|0$/,`0${a>0?".":""}${D(Number(a||0))}$1`):n).join(";"),Q=t=>/\.0?/.test(t)||/0([^0]?)|0$/.test(t),R={id:"sheet.command.numfmt.set.numfmt",type:e.CommandType.COMMAND,handler:(t,a)=>{if(!a)return!1;const i=t.get(e.ICommandService),n=t.get(e.IUniverInstanceService),s=t.get(e.IUndoRedoService),l=u.getSheetCommandTarget(n,a);if(!l)return!1;const{unitId:m,subUnitId:S,worksheet:o}=l,f=a.values.filter(c=>!!c.pattern),T=a.values.filter(c=>!c.pattern),M=u.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=[],p=[];if(f.length){const c=f.reduce((g,d)=>{e.isTextFormat(d.pattern)&&g.setValue(d.row,d.col,{t:e.CellValueType.STRING});const _=o.getCellRaw(d.row,d.col);if(_){const O=u.checkCellValueType(_.v);O!==_.t&&g.setValue(d.row,d.col,{t:O})}return g},new e.ObjectMatrix).getMatrix(),v=new e.ObjectMatrix;new e.ObjectMatrix(c).forValue((g,d)=>{const _=o.getCellRaw(g,d);_?v.setValue(g,d,{t:_.t}):v.setValue(g,d,{t:void 0})}),Object.keys(M.values).forEach(g=>{const d=M.values[g];d.ranges=u.rangeMerge(d.ranges)}),b.push({id:u.SetNumfmtMutation.id,params:M});const h=u.factorySetNumfmtUndoMutation(t,M);p.push(...h)}if(T.length){C.ranges=u.rangeMerge(C.ranges);const c=T.reduce((g,d)=>{const _=o.getCellRaw(d.row,d.col);if(_){const O=u.checkCellValueType(_.v);O!==_.t&&g.setValue(d.row,d.col,{t:O})}return g},new e.ObjectMatrix).getMatrix(),v=new e.ObjectMatrix;new e.ObjectMatrix(c).forValue((g,d)=>{const _=o.getCellRaw(g,d);_?v.setValue(g,d,{t:_.t}):v.setValue(g,d,{t:void 0})}),b.push({id:u.RemoveNumfmtMutation.id,params:C},{id:u.SetRangeValuesMutation.id,params:{unitId:m,subUnitId:S,cellValue:c}});const h=u.factoryRemoveNumfmtUndoMutation(t,C);p.push({id:u.SetRangeValuesMutation.id,params:{unitId:m,subUnitId:S,cellValue:v.getMatrix()}},...h)}const y=e.sequenceExecute(b,i).result;return y&&s.pushUndoRedo({unitID:m,undoMutations:p,redoMutations:b}),y}},x={id:"sheet.command.numfmt.add.decimal.command",type:e.CommandType.COMMAND,handler:async t=>{const a=t.get(e.ICommandService),i=t.get(u.SheetsSelectionsService),n=t.get(u.INumfmtService),s=t.get(e.IUniverInstanceService),l=i.getCurrentSelections();if(!l||!l.length)return!1;const m=u.getSheetCommandTarget(s);if(!m)return!1;const{unitId:S,subUnitId:o}=m;let f=0;l.forEach(b=>{e.Range.foreach(b.range,(p,y)=>{const c=n.getValue(S,o,p,y);if(!c){const h=m.worksheet.getCellRaw(p,y);if(!f&&h&&h.t===e.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 v=U(c.pattern);f=v>f?v:f})});const T=f+1,M=$(`0${T>0?".0":""}`,T),C=[];return l.forEach(b=>{e.Range.foreach(b.range,(p,y)=>{const c=n.getValue(S,o,p,y);if(e.isDefaultFormat(c==null?void 0:c.pattern))C.push({row:p,col:y,pattern:M});else{const v=U(c.pattern),h=$(c.pattern,v+1);h!==c.pattern&&C.push({row:p,col:y,pattern:h})}})}),C.length?await a.executeCommand(R.id,{values:C}):!1}},W={id:"sheet.command.numfmt.set.currency",type:e.CommandType.COMMAND,handler:async t=>{const a=t.get(e.ICommandService),i=t.get(u.SheetsSelectionsService),n=t.get(e.LocaleService),s=i.getCurrentSelections();if(!s||!s.length)return!1;const l=[],m=A(n.getCurrentLocale()),S=B(m.locale);return s.forEach(f=>{e.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:e.CommandType.COMMAND,handler:async t=>{const a=t.get(e.ICommandService),n=t.get(u.SheetsSelectionsService).getCurrentSelections();if(!n||!n.length)return!1;const s=[],l="0%";return n.forEach(S=>{e.Range.foreach(S.range,(o,f)=>{s.push({row:o,col:f,pattern:l,type:"percent"})})}),await a.executeCommand(R.id,{values:s})}},q={id:"sheet.command.numfmt.subtract.decimal.command",type:e.CommandType.COMMAND,handler:async t=>{const a=t.get(e.ICommandService),i=t.get(u.SheetsSelectionsService),n=t.get(u.INumfmtService),s=t.get(e.IUniverInstanceService),l=i.getCurrentSelections();if(!l||!l.length)return!1;const m=u.getSheetCommandTarget(s);if(!m)return!1;const{unitId:S,subUnitId:o}=m;let f=0;l.forEach(p=>{e.Range.foreach(p.range,(y,c)=>{const v=n.getValue(S,o,y,c);if(!v){const g=m.worksheet.getCellRaw(y,c);if(!f&&g&&g.t===e.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=U(v.pattern);f=h>f?h:f})});const T=f-1,M=$(`0${T>0?".0":"."}`,T),C=[];return l.forEach(p=>{e.Range.foreach(p.range,(y,c)=>{const v=n.getValue(S,o,y,c);if(e.isDefaultFormat(v==null?void 0:v.pattern))C.push({row:y,col:c,pattern:M});else{const h=U(v.pattern);C.push({row:y,col:c,pattern:$(v.pattern,h-1)})}})}),await a.executeCommand(R.id,{values:C})}},w="sheets-numfmt.config",Z={},ee=t=>e.numfmt.getFormatInfo(t).type||"unknown",Y=(t,a,i="en")=>{try{const n=e.numfmt.formatColor(t,a),s=n?String(n):void 0,l=e.numfmt.format(t,a,{locale:i,throws:!1});return a<0?{result:l,color:s}:{result:l}}catch(n){console.warn("getPatternPreview error:",t,n)}return{result:String(a)}},z=(t,a,i)=>t===e.DEFAULT_NUMBER_FORMAT?{result:String(J.stripErrorMargin(a))}:Y(t,a,i);var te=Object.getOwnPropertyDescriptor,ne=(t,a,i,n)=>{for(var s=n>1?void 0:n?te(a,i):a,l=t.length-1,m;l>=0;l--)(m=t[l])&&(s=m(s)||s);return s},N=(t,a)=>(i,n)=>a(i,n,t);const ae={tl:{size:6,color:"#409f11"}};r.SheetsNumfmtCellContentController=class extends e.Disposable{constructor(i,n,s,l,m,S,o){super();V(this,"_locale$",new I.BehaviorSubject("en"));V(this,"locale$",this._locale$.asObservable());this._instanceService=i,this._sheetInterceptorService=n,this._themeService=s,this._commandService=l,this._numfmtService=m,this._localeService=S,this._configService=o,this._initInterceptorCellContent()}get locale(){const i=this._locale$.getValue();if(i)return i;switch(this._localeService.getCurrentLocale()){case e.LocaleType.FR_FR:return"fr";case e.LocaleType.RU_RU:return"ru";case e.LocaleType.VI_VN:return"vi";case e.LocaleType.ZH_CN:return"zh-CN";case e.LocaleType.KO_KR:return"ko";case e.LocaleType.ZH_TW:return"zh-TW";case e.LocaleType.ES_ES:case e.LocaleType.CA_ES:return"es";case e.LocaleType.SK_SK:return"sk";case e.LocaleType.EN_US:case e.LocaleType.FA_IR:default:return"en"}}_initInterceptorCellContent(){const i=new e.ObjectMatrix;this.disposeWithMe(I.merge(this._locale$,this._localeService.currentLocale$).subscribe(()=>{i.reset()})),this.disposeWithMe(this._sheetInterceptorService.intercept(u.INTERCEPTOR_POINT.CELL_CONTENT,{effect:e.InterceptorEffectEnum.Value|e.InterceptorEffectEnum.Style,handler:(n,s,l)=>{var p,y;if(!n||n.v===void 0||n.v===null||n.t===e.CellValueType.BOOLEAN||n.t===e.CellValueType.FORCE_STRING)return l(n);const m=s.unitId,S=s.subUnitId;let o;if(n!=null&&n.s){const c=s.workbook.getStyles().get(n.s);c!=null&&c.n&&(o=c.n)}if(o||(o=this._numfmtService.getValue(m,S,s.row,s.col)),e.isDefaultFormat(o==null?void 0:o.pattern)||n.t!==e.CellValueType.NUMBER&&u.checkCellValueType(n.v,n.t)!==e.CellValueType.NUMBER)return l(n);const f=n;if((!n||n===s.rawData)&&(n={...s.rawData}),e.isTextFormat(o==null?void 0:o.pattern))return(p=this._configService.getConfig(w))!=null&&p.disableTextFormatMark?(n.t=e.CellValueType.STRING,l(n)):(n.t=e.CellValueType.STRING,n.markers={...n==null?void 0:n.markers,...ae},l(n));let T="";const M=i.getValue(s.row,s.col);if(M&&M.parameters===`${f.v}_${o==null?void 0:o.pattern}`)return l({...n,...M.result});const C=z(o==null?void 0:o.pattern,Number(f.v),this.locale);if(T=C.result,!T)return l(n);const b={v:T,t:e.CellValueType.NUMBER};if(C.color){const c=(y=this._themeService.getColorFromTheme(`${C.color}.500`))!=null?y:C.color;c&&(b.interceptorStyle={cl:{rgb:c}})}return i.setValue(s.row,s.col,{result:b,parameters:`${f.v}_${o==null?void 0:o.pattern}`}),Object.assign(n,b),l(n)},priority:u.InterceptCellContentPriority.NUMFMT})),this.disposeWithMe(this._commandService.onCommandExecuted(n=>{if(n.id===u.SetNumfmtMutation.id){const s=n.params;Object.keys(s.values).forEach(l=>{s.values[l].ranges.forEach(S=>{e.Range.foreach(S,(o,f)=>{i.realDeleteValue(o,f)})})})}else if(n.id===u.SetRangeValuesMutation.id){const s=n.params;new e.ObjectMatrix(s.cellValue).forValue((l,m)=>{i.realDeleteValue(l,m)})}})),this.disposeWithMe(this._instanceService.getCurrentTypeOfUnit$(e.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(()=>i.reset()))}setNumfmtLocal(i){this._locale$.next(i)}},r.SheetsNumfmtCellContentController=ne([N(0,e.IUniverInstanceService),N(1,e.Inject(u.SheetInterceptorService)),N(2,e.Inject(e.ThemeService)),N(3,e.Inject(e.ICommandService)),N(4,e.Inject(u.INumfmtService)),N(5,e.Inject(e.LocaleService)),N(6,e.IConfigService)],r.SheetsNumfmtCellContentController);const X={name:"@univerjs/sheets-numfmt",version:"0.17.0"},re="SHEET_NUMFMT_PLUGIN";var ie=Object.defineProperty,se=Object.getOwnPropertyDescriptor,le=(t,a,i)=>a in t?ie(t,a,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[a]=i,ce=(t,a,i,n)=>{for(var s=n>1?void 0:n?se(a,i):a,l=t.length-1,m;l>=0;l--)(m=t[l])&&(s=m(s)||s);return s},j=(t,a)=>(i,n)=>a(i,n,t),P=(t,a,i)=>le(t,typeof a!="symbol"?a+"":a,i);r.UniverSheetsNumfmtPlugin=class extends e.Plugin{constructor(a=Z,i,n,s){super(),this._config=a,this._injector=i,this._configService=n,this._commandService=s;const{...l}=e.merge({},Z,this._config);this._configService.setConfig(w,l)}onStarting(){e.registerDependencies(this._injector,[[r.SheetsNumfmtCellContentController]]),e.touchDependencies(this._injector,[[r.SheetsNumfmtCellContentController]]),[x,q,W,k,R].forEach(a=>{this.disposeWithMe(this._commandService.registerCommand(a))})}},P(r.UniverSheetsNumfmtPlugin,"pluginName",re),P(r.UniverSheetsNumfmtPlugin,"packageName",X.name),P(r.UniverSheetsNumfmtPlugin,"version",X.version),P(r.UniverSheetsNumfmtPlugin,"type",e.UniverInstanceType.UNIVER_SHEET),r.UniverSheetsNumfmtPlugin=ce([e.DependentOn(u.UniverSheetsPlugin),j(1,e.Inject(e.Injector)),j(2,e.IConfigService),j(3,e.ICommandService)],r.UniverSheetsNumfmtPlugin);const oe=t=>L.find(i=>t.includes(i)),ue=()=>L.map(t=>({label:t,value:t})),me=t=>K.map(a=>({label:a.label(t),value:a.suffix(t),color:a.color})),fe=()=>G.map(t=>({label:t.label,value:t.suffix})),de=()=>H.map(t=>({label:t.label,value:t.suffix,color:t.color}));r.AddDecimalCommand=x,r.CURRENCYFORMAT=K,r.DATEFMTLISG=G,r.NUMBERFORMAT=H,r.SHEETS_NUMFMT_PLUGIN_CONFIG_KEY=w,r.SetCurrencyCommand=W,r.SetNumfmtCommand=R,r.SetPercentCommand=k,r.SubtractDecimalCommand=q,r.currencySymbols=L,r.getCurrencyFormat=B,r.getCurrencyFormatOptions=me,r.getCurrencyOptions=ue,r.getCurrencySymbolByLocale=F,r.getCurrencySymbolIconByLocale=A,r.getCurrencyType=oe,r.getDateFormatOptions=fe,r.getDecimalFromPattern=U,r.getDecimalString=D,r.getNumberFormatOptions=de,r.getPatternPreview=Y,r.getPatternPreviewIgnoreGeneral=z,r.getPatternType=ee,r.isPatternHasDecimal=Q,r.localeCurrencySymbolMap=E,r.setPatternDecimal=$,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@univerjs/sheets-numfmt",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "UniverSheet numfmt plugin",
|
|
6
6
|
"author": "DreamNum <developer@univer.ai>",
|
|
@@ -58,16 +58,16 @@
|
|
|
58
58
|
"rxjs": ">=7.0.0"
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@univerjs/core": "0.
|
|
62
|
-
"@univerjs/engine-formula": "0.
|
|
63
|
-
"@univerjs/sheets": "0.
|
|
61
|
+
"@univerjs/core": "0.17.0",
|
|
62
|
+
"@univerjs/engine-formula": "0.17.0",
|
|
63
|
+
"@univerjs/sheets": "0.17.0"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
66
|
"rxjs": "^7.8.2",
|
|
67
67
|
"typescript": "^5.9.3",
|
|
68
68
|
"vite": "^7.3.1",
|
|
69
69
|
"vitest": "^4.0.18",
|
|
70
|
-
"@univerjs-infra/shared": "0.
|
|
70
|
+
"@univerjs-infra/shared": "0.17.0"
|
|
71
71
|
},
|
|
72
72
|
"scripts": {
|
|
73
73
|
"test": "vitest run",
|
|
File without changes
|