@univerjs/sheets-numfmt 0.4.2 → 0.5.0-alpha.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/README.md +10 -10
- package/lib/cjs/facade.js +1 -0
- package/lib/cjs/index.js +1 -9
- package/lib/es/facade.js +12 -0
- package/lib/es/index.js +361 -1311
- package/lib/types/{controllers/__tests__/editor.controller.spec.d.ts → facade/f-range.d.ts} +12 -0
- package/lib/types/{controllers/__tests__/cell-content.controller.spec.d.ts → facade/index.d.ts} +1 -1
- package/lib/types/index.d.ts +7 -3
- package/lib/types/numfmt-plugin.d.ts +3 -4
- package/lib/umd/facade.js +1 -0
- package/lib/umd/index.js +1 -9
- package/package.json +26 -26
- package/lib/index.css +0 -1
- package/lib/locale/en-US.json +0 -38
- package/lib/locale/fa-IR.json +0 -38
- package/lib/locale/ru-RU.json +0 -38
- package/lib/locale/vi-VN.json +0 -38
- package/lib/locale/zh-CN.json +0 -38
- package/lib/locale/zh-TW.json +0 -38
- package/lib/types/base/const/MENU-OPTIONS.d.ts +0 -19
- package/lib/types/base/types/index.d.ts +0 -7
- package/lib/types/commands/operations/close.numfmt.panel.operation.d.ts +0 -2
- package/lib/types/commands/operations/open.numfmt.panel.operation.d.ts +0 -2
- package/lib/types/components/accounting/index.d.ts +0 -4
- package/lib/types/components/currency/index.d.ts +0 -4
- package/lib/types/components/custom-format/index.d.ts +0 -3
- package/lib/types/components/date/index.d.ts +0 -4
- package/lib/types/components/general/index.d.ts +0 -4
- package/lib/types/components/index.d.ts +0 -14
- package/lib/types/components/more-numfmt-type/MoreNumfmtType.d.ts +0 -7
- package/lib/types/components/stories/Panel.stories.d.ts +0 -5
- package/lib/types/components/thousandth-percentile/index.d.ts +0 -4
- package/lib/types/context/user-habit.d.ts +0 -16
- package/lib/types/controllers/__tests__/test.util.d.ts +0 -15
- package/lib/types/controllers/config.schema.d.ts +0 -7
- package/lib/types/controllers/menu.schema.d.ts +0 -2
- package/lib/types/controllers/numfmt.controller.d.ts +0 -33
- package/lib/types/controllers/numfmt.editor.controller.d.ts +0 -20
- package/lib/types/controllers/numfmt.menu.controller.d.ts +0 -8
- package/lib/types/controllers/user-habit.controller.d.ts +0 -18
- package/lib/types/hooks/useCurrencyOptions.d.ts +0 -19
- package/lib/types/hooks/useNextTick.d.ts +0 -16
- package/lib/types/locale/en-US.d.ts +0 -3
- package/lib/types/locale/fa-IR.d.ts +0 -3
- package/lib/types/locale/ru-RU.d.ts +0 -3
- package/lib/types/locale/vi-VN.d.ts +0 -3
- package/lib/types/locale/zh-CN.d.ts +0 -54
- package/lib/types/locale/zh-TW.d.ts +0 -3
- package/lib/types/menu/menu.d.ts +0 -40
- /package/lib/types/controllers/{numfmt.cell-content.controller.d.ts → numfmt-cell-content.controller.d.ts} +0 -0
- /package/lib/types/controllers/{numfmt.currency.controller.d.ts → numfmt-currency.controller.d.ts} +0 -0
|
@@ -13,4 +13,16 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
interface IFRangeSheetsNumfmtMixin {
|
|
17
|
+
/**
|
|
18
|
+
* Set the number format of the range.
|
|
19
|
+
* @param pattern number format pattern.
|
|
20
|
+
* @returns Execution result.
|
|
21
|
+
*/
|
|
22
|
+
setNumberFormat(pattern: string): Promise<boolean>;
|
|
23
|
+
}
|
|
24
|
+
declare module '@univerjs/sheets/facade' {
|
|
25
|
+
interface FRange extends IFRangeSheetsNumfmtMixin {
|
|
26
|
+
}
|
|
27
|
+
}
|
|
16
28
|
export {};
|
package/lib/types/index.d.ts
CHANGED
|
@@ -14,13 +14,17 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
export { countryCurrencyMap } from './base/const/CURRENCY-SYMBOLS';
|
|
17
|
+
export { CURRENCYFORMAT, DATEFMTLISG, NUMBERFORMAT } from './base/const/FORMATDETAIL';
|
|
17
18
|
export { UniverSheetsNumfmtPlugin } from './numfmt-plugin';
|
|
18
19
|
export { MenuCurrencyService } from './service/menu.currency.service';
|
|
19
|
-
export { getPatternPreview, getPatternType } from './utils/pattern';
|
|
20
|
+
export { getPatternPreview, getPatternPreviewIgnoreGeneral, getPatternType } from './utils/pattern';
|
|
21
|
+
export { getDecimalFromPattern, getDecimalString, isPatternEqualWithoutDecimal, isPatternHasDecimal, setPatternDecimal } from './utils/decimal';
|
|
22
|
+
export { getCurrencyType } from './utils/currency';
|
|
23
|
+
export { currencySymbols } from './base/const/CURRENCY-SYMBOLS';
|
|
24
|
+
export { SheetsNumfmtCellContentController } from './controllers/numfmt-cell-content.controller';
|
|
25
|
+
export { getCurrencyFormatOptions, getCurrencyOptions, getDateFormatOptions, getNumberFormatOptions } from './utils/options';
|
|
20
26
|
export { AddDecimalCommand } from './commands/commands/add-decimal.command';
|
|
21
27
|
export { SetCurrencyCommand } from './commands/commands/set-currency.command';
|
|
22
28
|
export { type ISetNumfmtCommandParams, SetNumfmtCommand } from './commands/commands/set-numfmt.command';
|
|
23
29
|
export { SetPercentCommand } from './commands/commands/set-percent.command';
|
|
24
30
|
export { SubtractDecimalCommand } from './commands/commands/subtract-decimal.command';
|
|
25
|
-
export { CloseNumfmtPanelOperator } from './commands/operations/close.numfmt.panel.operation';
|
|
26
|
-
export { OpenNumfmtPanelOperator } from './commands/operations/open.numfmt.panel.operation';
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { IConfigService, Injector, Plugin, UniverInstanceType } from '@univerjs/core';
|
|
1
|
+
import { ICommandService, Injector, Plugin, UniverInstanceType } from '@univerjs/core';
|
|
3
2
|
export declare class UniverSheetsNumfmtPlugin extends Plugin {
|
|
4
3
|
private readonly _config;
|
|
5
4
|
readonly _injector: Injector;
|
|
6
|
-
private readonly
|
|
5
|
+
private readonly _commandService;
|
|
7
6
|
static pluginName: string;
|
|
8
7
|
static type: UniverInstanceType;
|
|
9
|
-
constructor(_config:
|
|
8
|
+
constructor(_config: undefined, _injector: Injector, _commandService: ICommandService);
|
|
10
9
|
onStarting(): void;
|
|
11
10
|
onRendered(): void;
|
|
12
11
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(e,t){typeof exports=="object"&&typeof module<"u"?t(require("@univerjs/sheets/facade"),require("@univerjs/sheets-numfmt")):typeof define=="function"&&define.amd?define(["@univerjs/sheets/facade","@univerjs/sheets-numfmt"],t):(e=typeof globalThis<"u"?globalThis:e||self,t(e.UniverSheetsFacade,e.UniverSheetsNumfmt))})(this,function(e,t){"use strict";class n extends e.FRange{setNumberFormat(s){const i=[];return this.forEach((u,d)=>i.push({row:u,col:d,pattern:s})),this._commandService.executeCommand(t.SetNumfmtCommand.id,{unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId()})}}e.FRange.extend(n)});
|
package/lib/umd/index.js
CHANGED
|
@@ -1,9 +1 @@
|
|
|
1
|
-
(function(global,factory){typeof exports=="object"&&typeof module<"u"?factory(exports,require("@univerjs/core"),require("@univerjs/sheets"),require("@univerjs/sheets-ui"),require("rxjs"),require("@univerjs/engine-render"),require("@univerjs/ui"),require("rxjs/operators"),require("react"),require("@univerjs/design"),require("@univerjs/engine-numfmt")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/sheets","@univerjs/sheets-ui","rxjs","@univerjs/engine-render","@univerjs/ui","rxjs/operators","react","@univerjs/design","@univerjs/engine-numfmt"],factory):(global=typeof globalThis<"u"?globalThis:global||self,factory(global.UniverSheetsNumfmt={},global.UniverCore,global.UniverSheets,global.UniverSheetsUi,global.rxjs,global.UniverEngineRender,global.UniverUi,global.rxjs.operators,global.React,global.UniverDesign,global.UniverEngineNumfmt))})(this,function(exports2,core,sheets,sheetsUi,rxjs,engineRender,ui,operators,require$$0,design,engineNumfmt){"use strict";var __defProp=Object.defineProperty;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var __publicField=(obj,key,value)=>__defNormalProp(obj,typeof key!="symbol"?key+"":key,value);var _a,_b,_c,_d,_e,_f;const currencySymbols=["$","£","¥","¤","֏","؋","৳","฿","₡","₦","₩","₪","₫","€","₭","₮","₱","₲","₴","₸","₹","₺","₼","₽","₾","₿"],countryCurrencyMap={US:"$",CA:"C$",GB:"£",JP:"¥",IN:"₹",AU:"A$",CN:"¥",KR:"₩",RU:"₽",AT:"€",BE:"€",CY:"€",EE:"€",FI:"€",FR:"€",DE:"€",GR:"€",IE:"€",IT:"€",LV:"€",LT:"€",LU:"€",MT:"€",NL:"€",PT:"€",SK:"€",SI:"€",ES:"€"},SHEET_NUMFMT_PLUGIN="SHEET_NUMFMT_PLUGIN",PLUGIN_CONFIG_KEY="sheets-numfmt.config",defaultPluginConfig={},getPatternType=__name(pattern=>core.numfmt.getInfo(pattern).type||"unknown","getPatternType"),getPatternPreview=__name((pattern,value,_locale)=>{const info=core.numfmt.getInfo(pattern),locale=_locale===core.LocaleType.ZH_CN?"zh-CN":"en",negInfo=info._partitions[1],result=core.numfmt.format(pattern,value,{locale,throws:!1});return value<0?{result,color:negInfo.color}:{result}},"getPatternPreview"),getPatternPreviewIgnoreGeneral=__name((pattern,value,_locale)=>pattern==="General"?{result:String(value)}:getPatternPreview(pattern,value,_locale),"getPatternPreviewIgnoreGeneral");var __defProp$5=Object.defineProperty,__getOwnPropDesc$5=Object.getOwnPropertyDescriptor,__decorateClass$5=__name((decorators,target,key2,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$5(target,key2):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key2,result):decorator(result))||result);return kind&&result&&__defProp$5(target,key2,result),result},"__decorateClass$5"),__decorateParam$5=__name((index,decorator)=>(target,key2)=>decorator(target,key2,index),"__decorateParam$5");let SheetsNumfmtCellContentController=(_a=class extends core.Disposable{constructor(_instanceService,_sheetInterceptorService,_themeService,_commandService,_numfmtService,_localeService){super(),this._instanceService=_instanceService,this._sheetInterceptorService=_sheetInterceptorService,this._themeService=_themeService,this._commandService=_commandService,this._numfmtService=_numfmtService,this._localeService=_localeService,this._initInterceptorCellContent()}_initInterceptorCellContent(){const renderCache=new core.ObjectMatrix;this.disposeWithMe(this._sheetInterceptorService.intercept(sheets.INTERCEPTOR_POINT.CELL_CONTENT,{effect:core.InterceptorEffectEnum.Value|core.InterceptorEffectEnum.Style,handler:__name((cell,location,next)=>{const unitId=location.unitId,sheetId=location.subUnitId;let numfmtValue;const originCellValue=cell;if(!originCellValue||originCellValue.t!==core.CellValueType.NUMBER||originCellValue.v==null||Number.isNaN(originCellValue.v))return next(cell);if(cell!=null&&cell.s){const style=location.workbook.getStyles().get(cell.s);style!=null&&style.n&&(numfmtValue=style.n)}if(numfmtValue||(numfmtValue=this._numfmtService.getValue(unitId,sheetId,location.row,location.col)),!numfmtValue)return next(cell);let numfmtRes="";const cache=renderCache.getValue(location.row,location.col);if(cache&&cache.parameters===`${originCellValue.v}_${numfmtValue.pattern}`)return next({...cell,...cache.result});const info=getPatternPreviewIgnoreGeneral(numfmtValue.pattern,Number(originCellValue.v),this._localeService.getCurrentLocale());if(numfmtRes=info.result,!numfmtRes)return next(cell);const res={v:numfmtRes};if(info.color){const color=this._themeService.getCurrentTheme()[`${info.color}500`];color&&(res.interceptorStyle={cl:{rgb:color}})}return renderCache.setValue(location.row,location.col,{result:res,parameters:`${originCellValue.v}_${numfmtValue.pattern}`}),next({...cell,...res})},"handler"),priority:sheets.InterceptCellContentPriority.NUMFMT})),this.disposeWithMe(this._commandService.onCommandExecuted(commandInfo=>{if(commandInfo.id===sheets.SetNumfmtMutation.id){const params=commandInfo.params;Object.keys(params.values).forEach(key2=>{params.values[key2].ranges.forEach(range=>{core.Range.foreach(range,(row,col)=>{renderCache.realDeleteValue(row,col)})})})}else if(commandInfo.id===sheets.SetRangeValuesMutation.id){const params=commandInfo.params;new core.ObjectMatrix(params.cellValue).forValue((row,col)=>{renderCache.realDeleteValue(row,col)})}})),this.disposeWithMe(this._instanceService.getCurrentTypeOfUnit$(core.UniverInstanceType.UNIVER_SHEET).pipe(rxjs.switchMap(workbook=>{var _a2;return(_a2=workbook==null?void 0:workbook.activeSheet$)!=null?_a2:rxjs.of(null)}),rxjs.skip(1)).subscribe(()=>renderCache.reset()))}},__name(_a,"SheetsNumfmtCellContentController"),_a);SheetsNumfmtCellContentController=__decorateClass$5([__decorateParam$5(0,core.IUniverInstanceService),__decorateParam$5(1,core.Inject(sheets.SheetInterceptorService)),__decorateParam$5(2,core.Inject(core.ThemeService)),__decorateParam$5(3,core.Inject(core.ICommandService)),__decorateParam$5(4,core.Inject(sheets.INumfmtService)),__decorateParam$5(5,core.Inject(core.LocaleService))],SheetsNumfmtCellContentController);const getDecimalFromPattern=__name((pattern,defaultValue=0)=>{var _a2;return pattern&&(_a2=core.numfmt.getInfo(pattern).maxDecimals)!=null?_a2:defaultValue},"getDecimalFromPattern"),isPatternEqualWithoutDecimal=__name((patternA,patternB)=>{if(patternA&&!patternB||!patternA&&patternB)return!1;const getString=__name(tokens=>tokens.reduce((pre,cur)=>{if(pre.isEnd)return pre;const str=cur.value||cur.num;return cur.type==="point"?(pre.isEnd=!0,pre):{...pre,result:pre.result+str}},{isEnd:!1,result:""}).result,"getString"),partitionsA=core.numfmt.getInfo(patternA)._partitions,partitionsB=core.numfmt.getInfo(patternB)._partitions,A1=getString(partitionsA[0].tokens),B1=getString(partitionsB[0].tokens),A2=getString(partitionsA[1].tokens),B2=getString(partitionsB[1].tokens);return A1===B1&&A2===B2&&partitionsA[1].color===partitionsB[1].color},"isPatternEqualWithoutDecimal"),getDecimalString=__name(length=>new Array(Math.min(Math.max(0,Number(length)),30)).fill(0).join(""),"getDecimalString"),setPatternDecimal=__name((patterns,decimalLength)=>patterns.split(";").map(pattern=>/\.0?/.test(pattern)?pattern.replace(/\.0*/g,`${decimalLength>0?".":""}${getDecimalString(Number(decimalLength||0))}`):/0([^0]?)|0$/.test(pattern)?pattern.replace(/0([^0]+)|0$/,`0${decimalLength>0?".":""}${getDecimalString(Number(decimalLength||0))}$1`):pattern).join(";"),"setPatternDecimal"),isPatternHasDecimal=__name(pattern=>/\.0?/.test(pattern)||/0([^0]?)|0$/.test(pattern),"isPatternHasDecimal"),SetNumfmtCommand={id:"sheet.command.numfmt.set.numfmt",type:core.CommandType.COMMAND,handler:__name((accessor,params)=>{if(!params)return!1;const commandService=accessor.get(core.ICommandService),univerInstanceService=accessor.get(core.IUniverInstanceService),undoRedoService=accessor.get(core.IUndoRedoService),target=sheets.getSheetCommandTarget(univerInstanceService,params);if(!target)return!1;const{unitId,subUnitId}=target,setCells=params.values.filter(value=>!!value.pattern),removeCells=params.values.filter(value=>!value.pattern),setRedos=sheets.transformCellsToRange(unitId,subUnitId,setCells),removeRedos={unitId,subUnitId,ranges:removeCells.map(cell=>({startColumn:cell.col,startRow:cell.row,endColumn:cell.col,endRow:cell.row}))},redos=[],undos=[];if(setCells.length){Object.keys(setRedos.values).forEach(key2=>{const v=setRedos.values[key2];v.ranges=sheets.rangeMerge(v.ranges)}),redos.push({id:sheets.SetNumfmtMutation.id,params:setRedos});const undo=sheets.factorySetNumfmtUndoMutation(accessor,setRedos);undos.push(...undo)}if(removeCells.length){removeRedos.ranges=sheets.rangeMerge(removeRedos.ranges),redos.push({id:sheets.RemoveNumfmtMutation.id,params:removeRedos});const undo=sheets.factoryRemoveNumfmtUndoMutation(accessor,removeRedos);undos.push(...undo)}const result=core.sequenceExecute(redos,commandService).result;return result&&undoRedoService.pushUndoRedo({unitID:unitId,undoMutations:undos,redoMutations:redos}),result},"handler")},AddDecimalCommand={id:"sheet.command.numfmt.add.decimal.command",type:core.CommandType.COMMAND,handler:__name(async accessor=>{const commandService=accessor.get(core.ICommandService),selectionManagerService=accessor.get(sheets.SheetsSelectionsService),numfmtService=accessor.get(sheets.INumfmtService),univerInstanceService=accessor.get(core.IUniverInstanceService),selections=selectionManagerService.getCurrentSelections();if(!selections||!selections.length)return!1;const target=sheets.getSheetCommandTarget(univerInstanceService);if(!target)return!1;const{unitId,subUnitId}=target;let maxDecimals=0;selections.forEach(selection=>{core.Range.foreach(selection.range,(row,col)=>{const numfmtValue=numfmtService.getValue(unitId,subUnitId,row,col);if(!numfmtValue){const cell=target.worksheet.getCellRaw(row,col);if(!maxDecimals&&cell&&cell.t===core.CellValueType.NUMBER&&cell.v){const regResult=/\.(\d*)$/.exec(String(cell.v));if(regResult){const length=regResult[1].length;if(!length)return;maxDecimals=Math.max(maxDecimals,length)}}return}const decimals2=getDecimalFromPattern(numfmtValue.pattern);maxDecimals=decimals2>maxDecimals?decimals2:maxDecimals})});const decimals=maxDecimals+1,defaultPattern=setPatternDecimal(`0${decimals>0?".0":""}`,decimals),values=[];return selections.forEach(selection=>{core.Range.foreach(selection.range,(row,col)=>{const numfmtValue=numfmtService.getValue(unitId,subUnitId,row,col);if(!numfmtValue)values.push({row,col,pattern:defaultPattern});else{const decimals2=getDecimalFromPattern(numfmtValue.pattern),pattern=setPatternDecimal(numfmtValue.pattern,decimals2+1);pattern!==numfmtValue.pattern&&values.push({row,col,pattern})}})}),values.length?await commandService.executeCommand(SetNumfmtCommand.id,{values}):!1},"handler")},DATEFMTLISG=[{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"}],NUMBERFORMAT=[{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"}],CURRENCYFORMAT=[{label:__name(suffix=>`${suffix}1,235`,"label"),suffix:__name(suffix=>`"${suffix}"#,##0.00_);"${suffix}"#,##0.00`,"suffix")},{label:__name(suffix=>`${suffix}1,235`,"label"),suffix:__name(suffix=>`"${suffix}"#,##0.00_);[Red]"${suffix}"#,##0.00`,"suffix"),color:"red"},{label:__name(suffix=>`(${suffix}1,235)`,"label"),suffix:__name(suffix=>`"${suffix}"#,##0.00_);("${suffix}"#,##0.00)`,"suffix")},{label:__name(suffix=>`(${suffix}1,235)`,"label"),suffix:__name(suffix=>`"${suffix}"#,##0.00_);[Red]("${suffix}"#,##0.00)`,"suffix"),color:"red"},{label:__name(suffix=>`-${suffix}1,235`,"label"),suffix:__name(suffix=>`"${suffix}"#,##0.00_);-"${suffix}"#,##0.00`,"suffix")},{label:__name(suffix=>`-${suffix}1,235`,"label"),suffix:__name(suffix=>`"${suffix}"#,##0.00_);[Red]-"${suffix}"#,##0.00`,"suffix"),color:"red"}],_MenuCurrencyService=class _MenuCurrencyService{constructor(){__publicField(this,"_currencySymbol$",new rxjs.BehaviorSubject("US"));__publicField(this,"currencySymbol$",this._currencySymbol$.asObservable())}setCurrencySymbolByCountryCode(symbol){this._currencySymbol$.next(symbol)}getCurrencySymbol(){return this._currencySymbol$.getValue()}};__name(_MenuCurrencyService,"MenuCurrencyService");let MenuCurrencyService=_MenuCurrencyService;const SetCurrencyCommand={id:"sheet.command.numfmt.set.currency",type:core.CommandType.COMMAND,handler:__name(async accessor=>{const commandService=accessor.get(core.ICommandService),selectionManagerService=accessor.get(sheets.SheetsSelectionsService),menuCurrencyService=accessor.get(MenuCurrencyService),symbol=countryCurrencyMap[menuCurrencyService.getCurrencySymbol()]||"$",selections=selectionManagerService.getCurrentSelections();if(!selections||!selections.length)return!1;const values=[],suffix=CURRENCYFORMAT[4].suffix(symbol);return selections.forEach(selection=>{core.Range.foreach(selection.range,(row,col)=>{values.push({row,col,pattern:suffix,type:"currency"})})}),await commandService.executeCommand(SetNumfmtCommand.id,{values})},"handler")},SetPercentCommand={id:"sheet.command.numfmt.set.percent",type:core.CommandType.COMMAND,handler:__name(async accessor=>{const commandService=accessor.get(core.ICommandService),selections=accessor.get(sheets.SheetsSelectionsService).getCurrentSelections();if(!selections||!selections.length)return!1;const values=[],suffix="0%";return selections.forEach(selection=>{core.Range.foreach(selection.range,(row,col)=>{values.push({row,col,pattern:suffix,type:"percent"})})}),await commandService.executeCommand(SetNumfmtCommand.id,{values})},"handler")},SubtractDecimalCommand={id:"sheet.command.numfmt.subtract.decimal.command",type:core.CommandType.COMMAND,handler:__name(async accessor=>{const commandService=accessor.get(core.ICommandService),selectionManagerService=accessor.get(sheets.SheetsSelectionsService),numfmtService=accessor.get(sheets.INumfmtService),univerInstanceService=accessor.get(core.IUniverInstanceService),selections=selectionManagerService.getCurrentSelections();if(!selections||!selections.length)return!1;const target=sheets.getSheetCommandTarget(univerInstanceService);if(!target)return!1;const{unitId,subUnitId}=target;let maxDecimals=0;selections.forEach(selection=>{core.Range.foreach(selection.range,(row,col)=>{const numfmtValue=numfmtService.getValue(unitId,subUnitId,row,col);if(!numfmtValue){const cell=target.worksheet.getCellRaw(row,col);if(!maxDecimals&&cell&&cell.t===core.CellValueType.NUMBER&&cell.v){const regResult=/\.(\d*)$/.exec(String(cell.v));if(regResult){const length=regResult[1].length;if(!length)return;maxDecimals=Math.max(maxDecimals,length)}}return}const decimals2=getDecimalFromPattern(numfmtValue.pattern);maxDecimals=decimals2>maxDecimals?decimals2:maxDecimals})});const decimals=maxDecimals-1,defaultPattern=setPatternDecimal(`0${decimals>0?".0":"."}`,decimals),values=[];return selections.forEach(selection=>{core.Range.foreach(selection.range,(row,col)=>{const numfmtValue=numfmtService.getValue(unitId,subUnitId,row,col);if(!numfmtValue)values.push({row,col,pattern:defaultPattern});else{const decimals2=getDecimalFromPattern(numfmtValue.pattern);values.push({row,col,pattern:setPatternDecimal(numfmtValue.pattern,decimals2-1)})}})}),await commandService.executeCommand(SetNumfmtCommand.id,{values})},"handler")},CloseNumfmtPanelOperator={id:"sheet.operation.close.numfmt.panel",type:core.CommandType.OPERATION,handler:__name(()=>!0,"handler")},INumfmtController=core.createIdentifier("INumfmtController"),OpenNumfmtPanelOperator={id:"sheet.operation.open.numfmt.panel",type:core.CommandType.OPERATION,handler:__name(accessor=>(accessor.get(INumfmtController).openPanel(),!0),"handler")};var jsxRuntime={exports:{}},reactJsxRuntime_production_min={};/**
|
|
2
|
-
* @license React
|
|
3
|
-
* react-jsx-runtime.production.min.js
|
|
4
|
-
*
|
|
5
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
6
|
-
*
|
|
7
|
-
* This source code is licensed under the MIT license found in the
|
|
8
|
-
* LICENSE file in the root directory of this source tree.
|
|
9
|
-
*/var f=require$$0,k=Symbol.for("react.element"),l=Symbol.for("react.fragment"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};function q(c,a,g){var b,d={},e=null,h=null;g!==void 0&&(e=""+g),a.key!==void 0&&(e=""+a.key),a.ref!==void 0&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)d[b]===void 0&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}__name(q,"q"),reactJsxRuntime_production_min.Fragment=l,reactJsxRuntime_production_min.jsx=q,reactJsxRuntime_production_min.jsxs=q,jsxRuntime.exports=reactJsxRuntime_production_min;var jsxRuntimeExports=jsxRuntime.exports;const UserHabitCurrencyContext=require$$0.createContext([]);var __defProp$4=Object.defineProperty,__getOwnPropDesc$4=Object.getOwnPropertyDescriptor,__decorateClass$4=__name((decorators,target,key2,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$4(target,key2):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key2,result):decorator(result))||result);return kind&&result&&__defProp$4(target,key2,result),result},"__decorateClass$4"),__decorateParam$4=__name((index,decorator)=>(target,key2)=>decorator(target,key2,index),"__decorateParam$4");let UserHabitController=(_b=class{constructor(_localStorageService){this._localStorageService=_localStorageService}_getKey(habit){return`userHabitController_${habit}`}async addHabit(habit,initValue){const key2=this._getKey(habit);return this._localStorageService.getItem(key2).then(item=>{item||this._localStorageService.setItem(key2,initValue)})}markHabit(habit,value){const key2=this._getKey(habit);this._localStorageService.getItem(key2).then(list=>{if(list){const index=list.findIndex(item=>item===value);index>-1&&list.splice(index,1),list.unshift(value),this._localStorageService.setItem(key2,list)}})}async getHabit(habit,sortList){const key2=this._getKey(habit),result=await this._localStorageService.getItem(key2);if(sortList&&result){const priority=result.map((item,index,arr)=>{const length=arr.length;return{value:item,priority:length-index}});return sortList.sort((a,b)=>{var _a2,_b2;const ap=((_a2=priority.find(item=>item.value===a))==null?void 0:_a2.priority)||-1;return(((_b2=priority.find(item=>item.value===b))==null?void 0:_b2.priority)||-1)-ap})}return result||[]}deleteHabit(habit){this._localStorageService.removeItem(habit)}},__name(_b,"UserHabitController"),_b);UserHabitController=__decorateClass$4([__decorateParam$4(0,core.Inject(core.ILocalStorageService))],UserHabitController);const key$1="numfmtCurrency",useCurrencyOptions=__name(onOptionChange=>{const userHabitController=core.useDependency(UserHabitController),[options,optionsSet]=require$$0.useState(currencySymbols);return require$$0.useEffect(()=>{userHabitController.addHabit("numfmtCurrency",[]).then(()=>{userHabitController.getHabit(key$1,[...currencySymbols]).then(list=>{optionsSet(list),onOptionChange&&onOptionChange(list)})})},[]),{userHabitCurrency:options,mark:__name(v=>{userHabitController.markHabit(key$1,v)},"mark")}},"useCurrencyOptions"),useNextTick=__name(()=>{const effectList=require$$0.useRef([]),[value,dispatch]=require$$0.useState({});return require$$0.useEffect(()=>{effectList.current.forEach(fn=>{fn()}),effectList.current=[]},[value]),__name(fn=>{effectList.current.push(fn),dispatch({})},"nextTick")},"useNextTick"),getCurrencyType=__name(pattern=>currencySymbols.find(code=>pattern.includes(code)),"getCurrencyType"),isAccountingPanel=__name(pattern=>!!getCurrencyType(pattern)&&pattern.startsWith("_("),"isAccountingPanel"),AccountingPanel=__name(props=>{const[decimal,decimalSet]=require$$0.useState(()=>getDecimalFromPattern(props.defaultPattern||"",2)),userHabitCurrency=require$$0.useContext(UserHabitCurrencyContext),[suffix,suffixSet]=require$$0.useState(()=>getCurrencyType(props.defaultPattern)||userHabitCurrency[0]),options=require$$0.useMemo(()=>userHabitCurrency.map(key2=>({label:key2,value:key2})),[]),t=core.useDependency(core.LocaleService).t;props.action.current=()=>setPatternDecimal(`_("${suffix}"* #,##0${decimal>0?".0":""}_)`,decimal);const onSelect=__name(v=>{suffixSet(v),props.onChange(setPatternDecimal(`_("${v}"* #,##0${decimal>0?".0":""}_)`,decimal))},"onSelect"),onDecimalChange=__name(v=>{const decimal2=v||0;decimalSet(decimal2),props.onChange(setPatternDecimal(`_("${suffix}"* #,##0${decimal2>0?".0":""}_)`,decimal2))},"onDecimalChange");return jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:"m-t-16 options ",children:[jsxRuntimeExports.jsxs("div",{className:"option",children:[jsxRuntimeExports.jsx("div",{className:"label",children:t("sheet.numfmt.decimalLength")}),jsxRuntimeExports.jsx("div",{className:"m-t-8 w-120",children:jsxRuntimeExports.jsx(design.InputNumber,{value:decimal,max:20,min:0,onChange:onDecimalChange})})]}),jsxRuntimeExports.jsxs("div",{className:"option",children:[jsxRuntimeExports.jsx("div",{className:"label",children:t("sheet.numfmt.currencyType")}),jsxRuntimeExports.jsx("div",{className:"m-t-8 w-140",children:jsxRuntimeExports.jsx(design.Select,{onChange:onSelect,options,value:suffix})})]})]}),jsxRuntimeExports.jsx("div",{className:"describe m-t-14",children:t("sheet.numfmt.accountingDes")})]})},"AccountingPanel"),getCurrencyFormatOptions=__name(suffix=>CURRENCYFORMAT.map(item=>({label:item.label(suffix),value:item.suffix(suffix),color:item.color})),"getCurrencyFormatOptions"),getDateFormatOptions=__name(()=>DATEFMTLISG.map(item=>({label:item.label,value:item.suffix})),"getDateFormatOptions"),getNumberFormatOptions=__name(()=>NUMBERFORMAT.map(item=>({label:item.label,value:item.suffix,color:item.color})),"getNumberFormatOptions"),isCurrencyPanel=__name(pattern=>!!getCurrencyType(pattern)&&!pattern.startsWith("_("),"isCurrencyPanel"),CurrencyPanel=__name(props=>{const t=core.useDependency(core.LocaleService).t,userHabitCurrency=require$$0.useContext(UserHabitCurrencyContext),[suffix,suffixSet]=require$$0.useState(()=>getCurrencyType(props.defaultPattern)||userHabitCurrency[0]),[decimal,decimalSet]=require$$0.useState(()=>getDecimalFromPattern(props.defaultPattern||"",2)),[pattern,patternSet]=require$$0.useState(()=>{var _a2;const negativeOptions2=getCurrencyFormatOptions(suffix);return((_a2=negativeOptions2.find(item=>isPatternEqualWithoutDecimal(item.value,props.defaultPattern)))==null?void 0:_a2.value)||negativeOptions2[0].value}),negativeOptions=require$$0.useMemo(()=>getCurrencyFormatOptions(suffix),[suffix]),options=require$$0.useMemo(()=>userHabitCurrency.map(key2=>({label:key2,value:key2})),[userHabitCurrency]);props.action.current=()=>setPatternDecimal(pattern,decimal);const onSelect=__name(value=>{if(value===void 0)return;suffixSet(value);const pattern2=getCurrencyFormatOptions(value)[0].value;patternSet(pattern2),props.onChange(setPatternDecimal(pattern2,decimal))},"onSelect"),onChange=__name(value=>{value!==void 0&&(patternSet(value),props.onChange(setPatternDecimal(value,decimal)))},"onChange"),onDecimalChange=__name(v=>{decimalSet(v||0),props.onChange(setPatternDecimal(pattern,v||0))},"onDecimalChange");return jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:"m-t-16 options ",children:[jsxRuntimeExports.jsxs("div",{className:"option",children:[jsxRuntimeExports.jsx("div",{className:"label",children:t("sheet.numfmt.decimalLength")}),jsxRuntimeExports.jsx("div",{className:"m-t-8 w-120",children:jsxRuntimeExports.jsx(design.InputNumber,{value:decimal,max:20,min:0,onChange:onDecimalChange})})]}),jsxRuntimeExports.jsxs("div",{className:"option",children:[jsxRuntimeExports.jsx("div",{className:"label",children:t("sheet.numfmt.currencyType")}),jsxRuntimeExports.jsx("div",{className:"m-t-8 w-140",children:jsxRuntimeExports.jsx(design.Select,{onChange:onSelect,options,value:suffix})})]})]}),jsxRuntimeExports.jsx("div",{className:"m-t-16 label",children:t("sheet.numfmt.negType")}),jsxRuntimeExports.jsx("div",{className:"m-t-8",children:jsxRuntimeExports.jsx(design.SelectList,{onChange,options:negativeOptions,value:pattern})}),jsxRuntimeExports.jsx("div",{className:"describe m-t-14",children:t("sheet.numfmt.currencyDes")})]})},"CurrencyPanel");var __assign=function(){return __assign=Object.assign||function(t){for(var s,i=1,n2=arguments.length;i<n2;i++){s=arguments[i];for(var p2 in s)Object.prototype.hasOwnProperty.call(s,p2)&&(t[p2]=s[p2])}return t},__assign.apply(this,arguments)},__rest=function(s,e){var t={};for(var p2 in s)Object.prototype.hasOwnProperty.call(s,p2)&&e.indexOf(p2)<0&&(t[p2]=s[p2]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,p2=Object.getOwnPropertySymbols(s);i<p2.length;i++)e.indexOf(p2[i])<0&&Object.prototype.propertyIsEnumerable.call(s,p2[i])&&(t[p2[i]]=s[p2[i]]);return t},IconBase=require$$0.forwardRef(function(props,ref){var icon=props.icon,id=props.id,className=props.className,extend=props.extend,restProps=__rest(props,["icon","id","className","extend"]),cls="univerjs-icon univerjs-icon-".concat(id," ").concat(className||"").trim(),idSuffix=require$$0.useRef("_".concat(generateShortUuid()));return render(icon,"".concat(id),{defIds:icon.defIds,idSuffix:idSuffix.current},__assign({ref,className:cls},restProps),extend)});function render(node,id,runtimeProps,rootProps,extend){return require$$0.createElement(node.tag,__assign(__assign({key:id},replaceRuntimeIdsAndExtInAttrs(node,runtimeProps,extend)),rootProps),(replaceRuntimeIdsInDefs(node,runtimeProps).children||[]).map(function(child,index){return render(child,"".concat(id,"-").concat(node.tag,"-").concat(index),runtimeProps,void 0,extend)}))}__name(render,"render");function replaceRuntimeIdsAndExtInAttrs(node,runtimeProps,extend){var attrs=__assign({},node.attrs);extend!=null&&extend.colorChannel1&&attrs.fill==="colorChannel1"&&(attrs.fill=extend.colorChannel1);var defIds=runtimeProps.defIds;return!defIds||defIds.length===0||(node.tag==="use"&&attrs["xlink:href"]&&(attrs["xlink:href"]=attrs["xlink:href"]+runtimeProps.idSuffix),Object.entries(attrs).forEach(function(_a2){var key2=_a2[0],value=_a2[1];typeof value=="string"&&(attrs[key2]=value.replace(/url\(#(.*)\)/,"url(#$1".concat(runtimeProps.idSuffix,")")))})),attrs}__name(replaceRuntimeIdsAndExtInAttrs,"replaceRuntimeIdsAndExtInAttrs");function replaceRuntimeIdsInDefs(node,runtimeProps){var _a2,defIds=runtimeProps.defIds;return!defIds||defIds.length===0?node:node.tag==="defs"&&(!((_a2=node.children)===null||_a2===void 0)&&_a2.length)?__assign(__assign({},node),{children:node.children.map(function(child){return typeof child.attrs.id=="string"&&defIds&&defIds.indexOf(child.attrs.id)>-1?__assign(__assign({},child),{attrs:__assign(__assign({},child.attrs),{id:child.attrs.id+runtimeProps.idSuffix})}):child})}):node}__name(replaceRuntimeIdsInDefs,"replaceRuntimeIdsInDefs");function generateShortUuid(){return Math.random().toString(36).substring(2,8)}__name(generateShortUuid,"generateShortUuid"),IconBase.displayName="UniverIcon";var element={tag:"svg",attrs:{fill:"none",viewBox:"0 0 16 16",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M14.1544 3.75557C14.3887 3.98988 14.3887 4.36978 14.1544 4.6041L6.51409 12.2444C6.40157 12.3569 6.24896 12.4201 6.08983 12.4201C5.9307 12.4201 5.77808 12.3569 5.66556 12.2444L1.84541 8.42425C1.6111 8.18993 1.6111 7.81003 1.84541 7.57572C2.07973 7.34141 2.45963 7.34141 2.69394 7.57572L6.08983 10.9716L13.3059 3.75557C13.5402 3.52126 13.9201 3.52126 14.1544 3.75557Z",fillRule:"evenodd",clipRule:"evenodd"}}]},CheckMarkSingle=require$$0.forwardRef(function(props,ref){return require$$0.createElement(IconBase,Object.assign({},props,{id:"check-mark-single",ref,icon:element}))});CheckMarkSingle.displayName="CheckMarkSingle";const styles={customFormatTitle:"univer-custom-format-title",customFormatInput:"univer-custom-format-input",customFormatHistoryList:"univer-custom-format-history-list",customFormatHistoryListItem:"univer-custom-format-history-list-item",customFormatHistoryListItemIconWrap:"univer-custom-format-history-list-item-icon-wrap",customFormatDes:"univer-custom-format-des"},key="customFormat",historyPatternKey="numfmt_custom_pattern";function CustomFormat(props){const{defaultPattern,action,onChange}=props,userHabitController=core.useDependency(UserHabitController),localStorageService=core.useDependency(core.ILocalStorageService),localeService=core.useDependency(core.LocaleService),[pattern,patternSet]=require$$0.useState(defaultPattern);action.current=()=>(userHabitController.markHabit(key,pattern),localStorageService.getItem(historyPatternKey).then((list=[])=>{const _list=[...new Set([pattern,...list||[]])].splice(0,10).filter(e=>!!e);localStorageService.setItem(historyPatternKey,_list)}),pattern);const[options,optionsSet]=require$$0.useState([]);require$$0.useEffect(()=>{localStorageService.getItem(historyPatternKey).then(historyList=>{const list=[...CURRENCYFORMAT.map(item=>item.suffix("$")),...DATEFMTLISG.map(item=>item.suffix),...NUMBERFORMAT.map(item=>item.suffix)];list.push(...historyList||[]),userHabitController.addHabit(key,[]).finally(()=>{userHabitController.getHabit(key,list).then(list2=>{optionsSet([...new Set(list2)])})})})},[]);const handleClick=__name(p2=>{patternSet(p2),onChange(p2)},"handleClick"),handleBlur=__name(()=>{onChange(pattern)},"handleBlur");return jsxRuntimeExports.jsxs("div",{className:styles.customFormat,children:[jsxRuntimeExports.jsx("div",{className:styles.customFormatTitle,children:localeService.t("sheet.numfmt.customFormat")}),jsxRuntimeExports.jsx(design.Input,{placeholder:localeService.t("sheet.numfmt.customFormat"),onBlur:handleBlur,value:pattern,onChange:patternSet,className:styles.customFormatInput}),jsxRuntimeExports.jsx("div",{className:styles.customFormatHistoryList,children:options.map(p2=>jsxRuntimeExports.jsxs("div",{onClick:__name(()=>handleClick(p2),"onClick"),className:styles.customFormatHistoryListItem,children:[jsxRuntimeExports.jsx("div",{className:styles.customFormatHistoryListItemIconWrap,children:pattern===p2&&jsxRuntimeExports.jsx(CheckMarkSingle,{})}),jsxRuntimeExports.jsx("div",{children:p2})]},p2))}),jsxRuntimeExports.jsx("div",{className:styles.customFormatDes,children:localeService.t("sheet.numfmt.customFormatDes")})]})}__name(CustomFormat,"CustomFormat");const isDatePanel=__name(pattern=>{const info=core.numfmt.getInfo(pattern);return getDateFormatOptions().map(item=>item.value).includes(pattern)||["date","datetime","time"].includes(info.type)},"isDatePanel"),DatePanel=__name(props=>{const options=require$$0.useMemo(getDateFormatOptions,[]),t=core.useDependency(core.LocaleService).t,[suffix,suffixSet]=require$$0.useState(()=>{if(props.defaultPattern){const item=options.find(item2=>item2.value===props.defaultPattern);if(item)return item.value}return options[0].value});props.action.current=()=>suffix;const onChange=__name(v=>{v!==void 0&&(suffixSet(v),props.onChange(v))},"onChange");return jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx("div",{className:"m-t-16 label",children:t("sheet.numfmt.dateType")}),jsxRuntimeExports.jsx("div",{className:"m-t-8",children:jsxRuntimeExports.jsx(design.SelectList,{value:suffix,options,onChange})}),jsxRuntimeExports.jsx("div",{className:"describe m-t-14",children:t("sheet.numfmt.dateDes")})]})},"DatePanel"),isGeneralPanel=__name(pattern=>!pattern,"isGeneralPanel"),GeneralPanel=__name(props=>{const t=core.useDependency(core.LocaleService).t;return props.action.current=()=>"",jsxRuntimeExports.jsx("div",{children:jsxRuntimeExports.jsx("div",{className:"describe m-t-14",children:t("sheet.numfmt.generalDes")})})},"GeneralPanel"),isThousandthPercentilePanel=__name(pattern=>getNumberFormatOptions().some(item=>isPatternEqualWithoutDecimal(item.value,pattern)),"isThousandthPercentilePanel"),ThousandthPercentilePanel=__name(props=>{const localeService=core.useDependency(core.LocaleService),options=require$$0.useMemo(getNumberFormatOptions,[]),[decimal,decimalSet]=require$$0.useState(()=>getDecimalFromPattern(props.defaultPattern||"",0)),[suffix,suffixSet]=require$$0.useState(()=>{const item=options.find(item2=>isPatternEqualWithoutDecimal(item2.value,props.defaultPattern||""));return(item==null?void 0:item.value)||options[0].value}),pattern=require$$0.useMemo(()=>setPatternDecimal(suffix,Number(decimal||0)),[suffix,decimal]),isInputDisable=require$$0.useMemo(()=>!isPatternHasDecimal(suffix),[suffix]),handleDecimalChange=__name(decimal2=>{decimalSet(decimal2||0),props.onChange(setPatternDecimal(suffix,Number(decimal2||0)))},"handleDecimalChange"),handleClick=__name(v=>{v!==void 0&&(decimalSet(getDecimalFromPattern(v,0)),suffixSet(v),props.onChange(v))},"handleClick");return props.action.current=()=>pattern,jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx("div",{className:"m-t-16 label",children:localeService.t("sheet.numfmt.decimalLength")}),jsxRuntimeExports.jsx("div",{className:"m-t-8",children:jsxRuntimeExports.jsx(design.InputNumber,{disabled:isInputDisable,value:decimal,max:20,min:0,onChange:handleDecimalChange})}),jsxRuntimeExports.jsxs("div",{className:"m-t-16 label",children:[" ",localeService.t("sheet.numfmt.negType")]}),jsxRuntimeExports.jsx("div",{className:"m-t-8",children:jsxRuntimeExports.jsx(design.SelectList,{onChange:handleClick,options,value:suffix})}),jsxRuntimeExports.jsx("div",{className:"describe m-t-14",children:localeService.t("sheet.numfmt.thousandthPercentileDes")})]})},"ThousandthPercentilePanel"),SheetNumfmtPanel=__name(props=>{const{defaultValue,defaultPattern,row,col}=props.value,localeService=core.useDependency(core.LocaleService),getCurrentPattern=require$$0.useRef(()=>""),t=localeService.t,nextTick=useNextTick(),typeOptions=require$$0.useMemo(()=>[{label:"sheet.numfmt.general",component:GeneralPanel},{label:"sheet.numfmt.accounting",component:AccountingPanel},{label:"sheet.numfmt.currency",component:CurrencyPanel},{label:"sheet.numfmt.date",component:DatePanel},{label:"sheet.numfmt.thousandthPercentile",component:ThousandthPercentilePanel},{label:"sheet.numfmt.customFormat",component:CustomFormat}].map(item=>({...item,label:t(item.label)})),[]),[type,typeSet]=require$$0.useState(findDefaultType),[key2,keySet]=require$$0.useState(()=>`${row}_${col}`),{mark,userHabitCurrency}=useCurrencyOptions(()=>keySet(`${row}_${col}_userCurrency'`)),BusinessComponent=require$$0.useMemo(()=>{var _a2;return(_a2=typeOptions.find(item=>item.label===type))==null?void 0:_a2.component},[type]);function findDefaultType(){return[isGeneralPanel,isAccountingPanel,isCurrencyPanel,isDatePanel,isThousandthPercentilePanel].reduce((pre,curFn,index)=>pre||(curFn(defaultPattern)?typeOptions[index].label:""),"")||typeOptions[0].label}__name(findDefaultType,"findDefaultType");const selectOptions=typeOptions.map(option=>({label:option.label,value:option.label})),handleSelect=__name(value=>{typeSet(value),nextTick(()=>props.onChange({type:"change",value:getCurrentPattern.current()||""}))},"handleSelect"),handleChange=__name(v=>{props.onChange({type:"change",value:v})},"handleChange"),handleConfirm=__name(()=>{const pattern=getCurrentPattern.current()||"",currency=getCurrencyType(pattern);currency&&mark(currency),props.onChange({type:"confirm",value:pattern})},"handleConfirm"),handleCancel=__name(()=>{props.onChange({type:"cancel",value:""})},"handleCancel"),subProps={onChange:handleChange,defaultValue,defaultPattern,action:getCurrentPattern};return require$$0.useEffect(()=>{typeSet(findDefaultType()),keySet(`${row}_${col}`)},[row,col]),jsxRuntimeExports.jsxs("div",{className:"numfmt-panel p-b-20",children:[jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx("div",{className:"label m-t-14",children:t("sheet.numfmt.numfmtType")}),jsxRuntimeExports.jsx("div",{className:"m-t-8",children:jsxRuntimeExports.jsx(design.Select,{onChange:handleSelect,options:selectOptions,value:type,style:{width:"100%"}})}),jsxRuntimeExports.jsx("div",{children:BusinessComponent&&jsxRuntimeExports.jsx(UserHabitCurrencyContext.Provider,{value:userHabitCurrency,children:require$$0.createElement(BusinessComponent,{...subProps,key:key2})})})]}),jsxRuntimeExports.jsxs("div",{className:"btn-list m-t-14 m-b-20",children:[jsxRuntimeExports.jsx(design.Button,{size:"small",onClick:handleCancel,className:"m-r-12",children:t("sheet.numfmt.cancel")}),jsxRuntimeExports.jsx(design.Button,{type:"primary",size:"small",onClick:handleConfirm,children:t("sheet.numfmt.confirm")})]})]})},"SheetNumfmtPanel");var __defProp$3=Object.defineProperty,__getOwnPropDesc$3=Object.getOwnPropertyDescriptor,__decorateClass$3=__name((decorators,target,key2,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$3(target,key2):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key2,result):decorator(result))||result);return kind&&result&&__defProp$3(target,key2,result),result},"__decorateClass$3"),__decorateParam$3=__name((index,decorator)=>(target,key2)=>decorator(target,key2,index),"__decorateParam$3");let NumfmtController=(_c=class extends core.Disposable{constructor(_sheetInterceptorService,_themeService,_univerInstanceService,_commandService,_selectionManagerService,_renderManagerService,_numfmtService,_componentManager,_sidebarService,_localeService){super();__publicField(this,"_previewPattern","");__publicField(this,"_sidebarDisposable",null);this._sheetInterceptorService=_sheetInterceptorService,this._themeService=_themeService,this._univerInstanceService=_univerInstanceService,this._commandService=_commandService,this._selectionManagerService=_selectionManagerService,this._renderManagerService=_renderManagerService,this._numfmtService=_numfmtService,this._componentManager=_componentManager,this._sidebarService=_sidebarService,this._localeService=_localeService,this._initRealTimeRenderingInterceptor(),this._initPanel(),this._initCommands(),this._initCloseListener(),this._commandExecutedListener()}openPanel(){var _a2;const sidebarService=this._sidebarService,selectionManagerService=this._selectionManagerService,commandService=this._commandService,univerInstanceService=this._univerInstanceService,numfmtService=this._numfmtService,localeService=this._localeService,range=(((_a2=selectionManagerService.getCurrentSelections())==null?void 0:_a2.map(s=>s.range))||[])[0];if(!range)return!1;const workbook=univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_SHEET),sheet=workbook.getActiveSheet();if(!sheet)return!1;const cellValue=sheet.getCellRaw(range.startRow,range.startColumn),numfmtValue=numfmtService.getValue(workbook.getUnitId(),sheet.getSheetId(),range.startRow,range.startColumn);let pattern="";numfmtValue&&(pattern=numfmtValue.pattern);const defaultValue=(cellValue==null?void 0:cellValue.t)===core.CellValueType.NUMBER?cellValue.v:12345678,props={onChange:__name(config=>{var _a3;if(config.type==="change")this._previewPattern=config.value,this._forceUpdate();else if(config.type==="confirm"){const selections2=((_a3=selectionManagerService.getCurrentSelections())==null?void 0:_a3.map(s=>s.range))||[],params={values:[]},patternType=getPatternType(config.value);selections2.forEach(rangeInfo=>{core.Range.foreach(rangeInfo,(row,col)=>{params.values.push({row,col,pattern:config.value,type:patternType})})}),commandService.executeCommand(SetNumfmtCommand.id,params),sidebarService.close()}else config.type==="cancel"&&sidebarService.close()},"onChange"),value:{defaultPattern:pattern,defaultValue,row:range.startRow,col:range.startColumn}};return this._sidebarDisposable=sidebarService.open({header:{title:localeService.t("sheet.numfmt.title")},children:{label:SHEET_NUMFMT_PLUGIN,...props},onClose:__name(()=>{this._forceUpdate(),commandService.executeCommand(CloseNumfmtPanelOperator.id)},"onClose")}),!0}_forceUpdate(unitId){var _a2;const renderUnit=this._renderManagerService.getRenderById(unitId!=null?unitId:this._univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_SHEET).getUnitId());renderUnit==null||renderUnit.with(sheetsUi.SheetSkeletonManagerService).reCalculate(),(_a2=renderUnit==null?void 0:renderUnit.mainComponent)==null||_a2.makeDirty()}_initCommands(){[AddDecimalCommand,SubtractDecimalCommand,SetCurrencyCommand,SetPercentCommand,OpenNumfmtPanelOperator,CloseNumfmtPanelOperator,SetNumfmtCommand].forEach(config=>{this.disposeWithMe(this._commandService.registerCommand(config))})}_initPanel(){this._componentManager.register(SHEET_NUMFMT_PLUGIN,SheetNumfmtPanel)}_initRealTimeRenderingInterceptor(){const isPanelOpenObserver=new rxjs.Observable(subscriber=>{this._commandService.onCommandExecuted(commandInfo=>{commandInfo.id===OpenNumfmtPanelOperator.id&&subscriber.next(!0),commandInfo.id===CloseNumfmtPanelOperator.id&&subscriber.next(!1)})}),combineOpenAndSelection$=rxjs.combineLatest([isPanelOpenObserver,this._selectionManagerService.selectionMoveEnd$.pipe(operators.map(selectionInfos=>selectionInfos?selectionInfos.map(selectionInfo=>selectionInfo.range):[]))]);this.disposeWithMe(core.toDisposable(combineOpenAndSelection$.pipe(operators.switchMap(([isOpen,selectionRanges])=>new rxjs.Observable(subscribe=>{const disposableCollection=new core.DisposableCollection;return isOpen&&selectionRanges.length&&subscribe.next({selectionRanges,disposableCollection}),()=>{disposableCollection.dispose()}})),operators.tap(()=>{this._previewPattern=null})).subscribe(({disposableCollection,selectionRanges})=>{var _a2,_b2;const workbook=this._univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_SHEET);this.openPanel(),disposableCollection.add(this._sheetInterceptorService.intercept(sheets.INTERCEPTOR_POINT.CELL_CONTENT,{priority:99,effect:core.InterceptorEffectEnum.Value|core.InterceptorEffectEnum.Style,handler:__name((cell,location,next)=>{const{row,col}=location,defaultValue=next(cell)||{};if(selectionRanges.find(range=>range.startColumn<=col&&range.endColumn>=col&&range.startRow<=row&&range.endRow>=row)){const rawValue=location.worksheet.getCellRaw(row,col),value=rawValue==null?void 0:rawValue.v,type=rawValue==null?void 0:rawValue.t;if(value==null||type!==core.CellValueType.NUMBER||this._previewPattern===null)return defaultValue;const info=getPatternPreviewIgnoreGeneral(this._previewPattern,value,this._localeService.getCurrentLocale());if(info.color){const color=this._themeService.getCurrentTheme()[`${info.color}500`];return{...defaultValue,v:info.result,t:core.CellValueType.STRING,s:{cl:{rgb:color}}}}return{...defaultValue,v:info.result,t:core.CellValueType.STRING}}return defaultValue},"handler")})),(_b2=(_a2=this._renderManagerService.getRenderById(workbook.getUnitId()))==null?void 0:_a2.mainComponent)==null||_b2.makeDirty()})))}_commandExecutedListener(){const commandList=[sheets.RemoveNumfmtMutation.id,sheets.SetNumfmtMutation.id];this.disposeWithMe(new rxjs.Observable(subscribe=>{const disposable=this._commandService.onCommandExecuted(command=>{if(commandList.includes(command.id)){const params=command.params;subscribe.next(params.unitId)}});return()=>disposable.dispose()}).pipe(operators.debounceTime(16)).subscribe(unitId=>this._forceUpdate(unitId)))}_initCloseListener(){this._univerInstanceService.getCurrentTypeOfUnit$(core.UniverInstanceType.UNIVER_SHEET).subscribe(unit=>{var _a2;unit||((_a2=this._sidebarDisposable)==null||_a2.dispose(),this._sidebarDisposable=null)})}},__name(_c,"NumfmtController"),_c);NumfmtController=__decorateClass$3([__decorateParam$3(0,core.Inject(sheets.SheetInterceptorService)),__decorateParam$3(1,core.Inject(core.ThemeService)),__decorateParam$3(2,core.IUniverInstanceService),__decorateParam$3(3,core.ICommandService),__decorateParam$3(4,core.Inject(sheets.SheetsSelectionsService)),__decorateParam$3(5,engineRender.IRenderManagerService),__decorateParam$3(6,sheets.INumfmtService),__decorateParam$3(7,core.Inject(ui.ComponentManager)),__decorateParam$3(8,ui.ISidebarService),__decorateParam$3(9,core.Inject(core.LocaleService))],NumfmtController);const _NumfmtCurrencyController=class _NumfmtCurrencyController extends core.Disposable{constructor(){super(...arguments);__publicField(this,"_currencySymbol$",new rxjs.BehaviorSubject("US"));__publicField(this,"currencySymbol$",this._currencySymbol$.asObservable())}setCurrencySymbolByCountryCode(symbol){this._currencySymbol$.next(symbol)}getCurrencySymbol(){return this._currencySymbol$.getValue()}};__name(_NumfmtCurrencyController,"NumfmtCurrencyController");let NumfmtCurrencyController=_NumfmtCurrencyController;var __defProp$2=Object.defineProperty,__getOwnPropDesc$2=Object.getOwnPropertyDescriptor,__decorateClass$2=__name((decorators,target,key2,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$2(target,key2):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key2,result):decorator(result))||result);return kind&&result&&__defProp$2(target,key2,result),result},"__decorateClass$2"),__decorateParam$2=__name((index,decorator)=>(target,key2)=>decorator(target,key2,index),"__decorateParam$2");const createCollectEffectMutation=__name(()=>{let list=[];return{add:__name((unitId,subUnitId,row,col,value)=>list.push({unitId,subUnitId,row,col,value}),"add"),getEffects:__name(()=>list,"getEffects"),clean:__name(()=>{list=[]},"clean")}},"createCollectEffectMutation");let NumfmtEditorController=(_d=class extends core.Disposable{constructor(_sheetInterceptorService,_numfmtService,_univerInstanceService,_injector,_editorBridgeService){super();__publicField(this,"_collectEffectMutation",createCollectEffectMutation());this._sheetInterceptorService=_sheetInterceptorService,this._numfmtService=_numfmtService,this._univerInstanceService=_univerInstanceService,this._injector=_injector,this._editorBridgeService=_editorBridgeService,this._initInterceptorEditorStart(),this._initInterceptorEditorEnd(),this._initInterceptorCommands()}_initInterceptorEditorStart(){this._editorBridgeService&&this.disposeWithMe(core.toDisposable(this._editorBridgeService.interceptor.intercept(this._editorBridgeService.interceptor.getInterceptPoints().BEFORE_CELL_EDIT,{handler:__name((value,context,next)=>{const row=context.row,col=context.col,numfmtCell=this._numfmtService.getValue(context.unitId,context.subUnitId,row,col);if(numfmtCell)switch(getPatternType(numfmtCell.pattern)){case"scientific":case"currency":case"grouped":case"number":return context.worksheet.getCellRaw(row,col);case"percent":case"date":case"time":case"datetime":default:return next&&next(value)}return next(value)},"handler")})))}_initInterceptorEditorEnd(){this._editorBridgeService&&this.disposeWithMe(core.toDisposable(this._editorBridgeService.interceptor.intercept(this._editorBridgeService.interceptor.getInterceptPoints().AFTER_CELL_EDIT,{handler:__name((value,context,next)=>{var _a2;this._collectEffectMutation.clean();const currentNumfmtValue=this._numfmtService.getValue(context.unitId,context.subUnitId,context.row,context.col),currentNumfmtType=(_a2=currentNumfmtValue&&getPatternType(currentNumfmtValue.pattern))!=null?_a2:"",clean=__name(()=>{currentNumfmtValue&&this._collectEffectMutation.add(context.unitId,context.subUnitId,context.row,context.col,null)},"clean");if(!(value!=null&&value.v)||(currentNumfmtValue==null?void 0:currentNumfmtValue.pattern)===engineNumfmt.DEFAULT_TEXT_FORMAT)return next(value);const content=String(value.v),numfmtInfo=core.numfmt.parseDate(content)||core.numfmt.parseTime(content)||core.numfmt.parseNumber(content);if(numfmtInfo){if(numfmtInfo.z){const v=Number(numfmtInfo.v);return this._collectEffectMutation.add(context.unitId,context.subUnitId,context.row,context.col,{pattern:numfmtInfo.z}),{...value,v,t:core.CellValueType.NUMBER}}}else(["date","time","datetime","percent"].includes(currentNumfmtType)||!isNumeric(content))&&clean();return next(value)},"handler")})))}_initInterceptorCommands(){const self2=this;this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations(command){var _a2;switch(command.id){case sheets.SetRangeValuesCommand.id:{const workbook=self2._univerInstanceService.getCurrentUnitForType(core.UniverInstanceType.UNIVER_SHEET),unitId=workbook.getUnitId(),subUnitId=(_a2=workbook.getActiveSheet())==null?void 0:_a2.getSheetId();if(!subUnitId)return{redos:[],undos:[]};const list=self2._collectEffectMutation.getEffects();if(self2._collectEffectMutation.clean(),!list.length)return{redos:[],undos:[]};const cells=list.filter(item=>{var _a3;return!!((_a3=item.value)!=null&&_a3.pattern)}).map(item=>({row:item.row,col:item.col,pattern:item.value.pattern})),removeCells=list.filter(item=>{var _a3;return!((_a3=item.value)!=null&&_a3.pattern)}).map(item=>({startRow:item.row,endColumn:item.col,startColumn:item.col,endRow:item.row})),redos=[],undos=[];if(cells.length){const redo={id:sheets.SetNumfmtMutation.id,params:sheets.transformCellsToRange(unitId,subUnitId,cells)};redos.push(redo),undos.push(...sheets.factorySetNumfmtUndoMutation(self2._injector,redo.params))}if(removeCells.length){const redo={id:sheets.RemoveNumfmtMutation.id,params:{unitId,subUnitId,ranges:removeCells}};redos.push(redo),undos.push(...sheets.factoryRemoveNumfmtUndoMutation(self2._injector,redo.params))}return{redos,undos:undos.reverse()}}}return{redos:[],undos:[]}}}))}},__name(_d,"NumfmtEditorController"),_d);NumfmtEditorController=__decorateClass$2([__decorateParam$2(0,core.Inject(sheets.SheetInterceptorService)),__decorateParam$2(1,core.Inject(sheets.INumfmtService)),__decorateParam$2(2,core.Inject(core.IUniverInstanceService)),__decorateParam$2(3,core.Inject(core.Injector)),__decorateParam$2(4,core.Optional(sheetsUi.IEditorBridgeService))],NumfmtEditorController);function isNumeric(str){return/^-?\d+(\.\d+)?$/.test(str)}__name(isNumeric,"isNumeric");const MENU_OPTIONS=[{label:"sheet.numfmt.general",pattern:null},{label:"sheet.numfmt.text",pattern:engineNumfmt.DEFAULT_TEXT_FORMAT},"|",{label:"sheet.numfmt.number",pattern:"0"},"|",{label:"sheet.numfmt.accounting",pattern:'"¥" #,##0.00_);[Red]("¥"#,##0.00)'},{label:"sheet.numfmt.financialValue",pattern:"#,##0.00;[Red]#,##0.00"},{label:"sheet.numfmt.currency",pattern:'"¥"#,##0.00_);[Red]("¥"#,##0.00)'},{label:"sheet.numfmt.roundingCurrency",pattern:'"¥"#,##0;[Red]"¥"#,##0'},"|",{label:"sheet.numfmt.date",pattern:"yyyy-mm-dd;@"},{label:"sheet.numfmt.time",pattern:'am/pm h":"mm":"ss'},{label:"sheet.numfmt.dateTime",pattern:"yyyy-m-d am/pm h:mm"},{label:"sheet.numfmt.timeDuration",pattern:"h:mm:ss"},"|",{label:"sheet.numfmt.moreFmt",pattern:""}],MORE_NUMFMT_TYPE_KEY="sheet.numfmt.moreNumfmtType",OPTIONS_KEY="sheet.numfmt.moreNumfmtType.options",MoreNumfmtType=__name(props=>{var _a2;const localeService=core.useDependency(core.LocaleService),value=(_a2=props.value)!=null?_a2:localeService.t("sheet.numfmt.general");return jsxRuntimeExports.jsx("span",{className:"more-numfmt-type",children:value})},"MoreNumfmtType"),Options=__name(()=>{const commandService=core.useDependency(core.ICommandService),localeService=core.useDependency(core.LocaleService),layoutService=core.useDependency(ui.ILayoutService);core.useInjector();const selectionManagerService=core.useDependency(sheets.SheetsSelectionsService),setNumfmt=__name(pattern=>{const selection=selectionManagerService.getCurrentLastSelection();if(!selection)return;const range=selection.range,values=[];core.Range.foreach(range,(row,col)=>{pattern?values.push({row,col,pattern,type:getPatternType(pattern)}):values.push({row,col})}),commandService.executeCommand(SetNumfmtCommand.id,{values}),layoutService.focus()},"setNumfmt"),handleOnclick=__name(index=>{if(index===0)setNumfmt(null);else if(index===MENU_OPTIONS.length-1)commandService.executeCommand(OpenNumfmtPanelOperator.id);else{const item=MENU_OPTIONS[index];item.pattern&&setNumfmt(item.pattern)}},"handleOnclick"),defaultValue=1220;return jsxRuntimeExports.jsx("div",{className:"more-numfmt-type-options",children:MENU_OPTIONS.map((item,index)=>item==="|"?jsxRuntimeExports.jsx("div",{className:"line m-t-4",onClick:__name(e=>e.stopPropagation(),"onClick")},index):jsxRuntimeExports.jsxs("div",{className:"option-item m-t-4",onClick:__name(()=>{handleOnclick(index)},"onClick"),children:[jsxRuntimeExports.jsx("div",{children:localeService.t(item.label)}),jsxRuntimeExports.jsx("div",{className:"m-l-26",children:item.pattern?getPatternPreview(item.pattern||"",defaultValue,localeService.getCurrentLocale()).result:""})]},index))})},"Options"),CurrencyMenuItem=__name(accessor=>({icon:new rxjs.Observable(subscribe=>{const menuCurrencyService=accessor.get(MenuCurrencyService);function getIconKey(symbol2){return{[countryCurrencyMap.US]:"DollarSingle",[countryCurrencyMap.RU]:"RoubleSingle",[countryCurrencyMap.CN]:"RmbSingle",[countryCurrencyMap.AT]:"EuroSingle"}[symbol2]||"DollarSingle"}__name(getIconKey,"getIconKey");const symbol=countryCurrencyMap[menuCurrencyService.getCurrencySymbol()]||"$";return subscribe.next(getIconKey(symbol)),menuCurrencyService.currencySymbol$.subscribe(code=>{const symbol2=countryCurrencyMap[code]||"$";subscribe.next(getIconKey(symbol2))})}),id:SetCurrencyCommand.id,title:"sheet.numfmt.currency",tooltip:"sheet.numfmt.currency",type:ui.MenuItemType.BUTTON,hidden$:ui.getMenuHiddenObservable(accessor,core.UniverInstanceType.UNIVER_SHEET),disabled$:sheetsUi.getCurrentRangeDisable$(accessor,{workbookTypes:[sheets.WorkbookEditablePermission],worksheetTypes:[sheets.WorksheetEditPermission,sheets.WorksheetSetCellStylePermission],rangeTypes:[sheets.RangeProtectionPermissionEditPoint]})}),"CurrencyMenuItem"),AddDecimalMenuItem=__name(accessor=>({icon:"AddDigitsSingle",id:AddDecimalCommand.id,title:"sheet.numfmt.addDecimal",tooltip:"sheet.numfmt.addDecimal",type:ui.MenuItemType.BUTTON,hidden$:ui.getMenuHiddenObservable(accessor,core.UniverInstanceType.UNIVER_SHEET),disabled$:sheetsUi.getCurrentRangeDisable$(accessor,{workbookTypes:[sheets.WorkbookEditablePermission],worksheetTypes:[sheets.WorksheetEditPermission,sheets.WorksheetSetCellStylePermission],rangeTypes:[sheets.RangeProtectionPermissionEditPoint]})}),"AddDecimalMenuItem"),SubtractDecimalMenuItem=__name(accessor=>({icon:"ReduceDigitsSingle",id:SubtractDecimalCommand.id,title:"sheet.numfmt.subtractDecimal",tooltip:"sheet.numfmt.subtractDecimal",type:ui.MenuItemType.BUTTON,hidden$:ui.getMenuHiddenObservable(accessor,core.UniverInstanceType.UNIVER_SHEET),disabled$:sheetsUi.getCurrentRangeDisable$(accessor,{workbookTypes:[sheets.WorkbookEditablePermission],worksheetTypes:[sheets.WorksheetEditPermission,sheets.WorksheetSetCellStylePermission],rangeTypes:[sheets.RangeProtectionPermissionEditPoint]})}),"SubtractDecimalMenuItem"),PercentMenuItem=__name(accessor=>({icon:"PercentSingle",id:SetPercentCommand.id,title:"sheet.numfmt.percent",tooltip:"sheet.numfmt.percent",type:ui.MenuItemType.BUTTON,hidden$:ui.getMenuHiddenObservable(accessor,core.UniverInstanceType.UNIVER_SHEET),disabled$:sheetsUi.getCurrentRangeDisable$(accessor,{workbookTypes:[sheets.WorkbookEditablePermission],worksheetTypes:[sheets.WorksheetEditPermission,sheets.WorksheetSetCellStylePermission],rangeTypes:[sheets.RangeProtectionPermissionEditPoint]})}),"PercentMenuItem"),FactoryOtherMenuItem=__name(accessor=>{const univerInstanceService=accessor.get(core.IUniverInstanceService),commandService=accessor.get(core.ICommandService),localeService=accessor.get(core.LocaleService),selectionManagerService=accessor.get(sheets.SheetsSelectionsService),value$=sheetsUi.deriveStateFromActiveSheet$(univerInstanceService,"",({workbook,worksheet})=>new rxjs.Observable(subscribe=>rxjs.merge(selectionManagerService.selectionMoveEnd$,new rxjs.Observable(commandSubscribe=>{const commandList=[sheets.RemoveNumfmtMutation.id,sheets.SetNumfmtMutation.id],disposable=commandService.onCommandExecuted(commandInfo=>{commandList.includes(commandInfo.id)&&commandSubscribe.next(null)});return()=>disposable.dispose()})).subscribe(()=>{var _a2,_b2;const selections=selectionManagerService.getCurrentSelections();if(selections&&selections[0]){const range=selections[0].range,row=range.startRow,col=range.startColumn,numfmtValue=(_b2=workbook.getStyles().get((_a2=worksheet.getCell(row,col))==null?void 0:_a2.s))==null?void 0:_b2.n,pattern=numfmtValue==null?void 0:numfmtValue.pattern;let value=localeService.t("sheet.numfmt.general");if(pattern){const item=MENU_OPTIONS.filter(item2=>typeof item2=="object"&&item2.pattern).find(item2=>isPatternEqualWithoutDecimal(pattern,item2.pattern));item&&typeof item=="object"&&item.pattern?value=localeService.t(item.label):value=localeService.t("sheet.numfmt.moreFmt")}subscribe.next(value)}})));return{label:MORE_NUMFMT_TYPE_KEY,id:OpenNumfmtPanelOperator.id,tooltip:"sheet.numfmt.title",type:ui.MenuItemType.SELECTOR,selections:[{label:{name:OPTIONS_KEY,hoverable:!1}}],value$,hidden$:ui.getMenuHiddenObservable(accessor,core.UniverInstanceType.UNIVER_SHEET),disabled$:sheetsUi.getCurrentRangeDisable$(accessor,{workbookTypes:[sheets.WorkbookEditablePermission],worksheetTypes:[sheets.WorksheetSetCellStylePermission,sheets.WorksheetEditPermission],rangeTypes:[sheets.RangeProtectionPermissionEditPoint]})}},"FactoryOtherMenuItem"),menuSchema={[ui.RibbonStartGroup.FORMULAS_INSERT]:{[SetCurrencyCommand.id]:{order:4,menuItemFactory:CurrencyMenuItem},[AddDecimalCommand.id]:{order:5,menuItemFactory:AddDecimalMenuItem},[SubtractDecimalCommand.id]:{order:6,menuItemFactory:SubtractDecimalMenuItem},[SetPercentCommand.id]:{order:7,menuItemFactory:PercentMenuItem},[OpenNumfmtPanelOperator.id]:{order:8,menuItemFactory:FactoryOtherMenuItem}}};var __defProp$1=Object.defineProperty,__getOwnPropDesc$1=Object.getOwnPropertyDescriptor,__decorateClass$1=__name((decorators,target,key2,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$1(target,key2):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key2,result):decorator(result))||result);return kind&&result&&__defProp$1(target,key2,result),result},"__decorateClass$1"),__decorateParam$1=__name((index,decorator)=>(target,key2)=>decorator(target,key2,index),"__decorateParam$1");let NumfmtMenuController=(_e=class extends core.Disposable{constructor(_componentManager,_menuManagerService){super(),this._componentManager=_componentManager,this._menuManagerService=_menuManagerService,this._initMenu()}_initMenu(){this._menuManagerService.mergeMenu(menuSchema),this.disposeWithMe(this._componentManager.register(MORE_NUMFMT_TYPE_KEY,MoreNumfmtType)),this.disposeWithMe(this._componentManager.register(OPTIONS_KEY,Options))}},__name(_e,"NumfmtMenuController"),_e);NumfmtMenuController=__decorateClass$1([__decorateParam$1(0,core.Inject(ui.ComponentManager)),__decorateParam$1(1,ui.IMenuManagerService)],NumfmtMenuController);var __defProp2=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__defNormalProp2=__name((obj,key2,value)=>key2 in obj?__defProp2(obj,key2,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key2]=value,"__defNormalProp"),__decorateClass=__name((decorators,target,key2,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc(target,key2):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key2,result):decorator(result))||result);return kind&&result&&__defProp2(target,key2,result),result},"__decorateClass"),__decorateParam=__name((index,decorator)=>(target,key2)=>decorator(target,key2,index),"__decorateParam"),__publicField2=__name((obj,key2,value)=>__defNormalProp2(obj,typeof key2!="symbol"?key2+"":key2,value),"__publicField");exports2.UniverSheetsNumfmtPlugin=(_f=class extends core.Plugin{constructor(_config=defaultPluginConfig,_injector,_configService){super(),this._config=_config,this._injector=_injector,this._configService=_configService;const{menu,...rest}=this._config;menu&&this._configService.setConfig("menu",menu,{merge:!0}),this._configService.setConfig(PLUGIN_CONFIG_KEY,rest)}onStarting(){this._injector.add([INumfmtController,{useClass:NumfmtController,lazy:!1}]),this._injector.add([NumfmtEditorController]),this._injector.add([UserHabitController]),this._injector.add([SheetsNumfmtCellContentController]),this._injector.add([MenuCurrencyService]),this._injector.add([NumfmtCurrencyController]),this._injector.add([NumfmtMenuController])}onRendered(){this._injector.get(INumfmtController),this._injector.get(SheetsNumfmtCellContentController),this._injector.get(NumfmtCurrencyController),this._injector.get(NumfmtEditorController),this._injector.get(NumfmtMenuController)}},__name(_f,"UniverSheetsNumfmtPlugin"),_f),__publicField2(exports2.UniverSheetsNumfmtPlugin,"pluginName",SHEET_NUMFMT_PLUGIN),__publicField2(exports2.UniverSheetsNumfmtPlugin,"type",core.UniverInstanceType.UNIVER_SHEET),exports2.UniverSheetsNumfmtPlugin=__decorateClass([core.DependentOn(sheets.UniverSheetsPlugin,sheetsUi.UniverSheetsUIPlugin),__decorateParam(1,core.Inject(core.Injector)),__decorateParam(2,core.IConfigService)],exports2.UniverSheetsNumfmtPlugin),exports2.AddDecimalCommand=AddDecimalCommand,exports2.CloseNumfmtPanelOperator=CloseNumfmtPanelOperator,exports2.MenuCurrencyService=MenuCurrencyService,exports2.OpenNumfmtPanelOperator=OpenNumfmtPanelOperator,exports2.SetCurrencyCommand=SetCurrencyCommand,exports2.SetNumfmtCommand=SetNumfmtCommand,exports2.SetPercentCommand=SetPercentCommand,exports2.SubtractDecimalCommand=SubtractDecimalCommand,exports2.countryCurrencyMap=countryCurrencyMap,exports2.getPatternPreview=getPatternPreview,exports2.getPatternType=getPatternType,Object.defineProperty(exports2,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(s,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("@univerjs/core"),require("@univerjs/sheets"),require("rxjs")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/sheets","rxjs"],n):(s=typeof globalThis<"u"?globalThis:s||self,n(s.UniverSheetsNumfmt={},s.UniverCore,s.UniverSheets,s.rxjs))})(this,function(s,n,l,N){"use strict";var le=Object.defineProperty;var oe=(s,n,l)=>n in s?le(s,n,{enumerable:!0,configurable:!0,writable:!0,value:l}):s[n]=l;var E=(s,n,l)=>oe(s,typeof n!="symbol"?n+"":n,l);const T=["$","£","¥","¤","֏","؋","৳","฿","₡","₦","₩","₪","₫","€","₭","₮","₱","₲","₴","₸","₹","₺","₼","₽","₾","₿"],j={US:"$",CA:"C$",GB:"£",JP:"¥",IN:"₹",AU:"A$",CN:"¥",KR:"₩",RU:"₽",AT:"€",BE:"€",CY:"€",EE:"€",FI:"€",FR:"€",DE:"€",GR:"€",IE:"€",IT:"€",LV:"€",LT:"€",LU:"€",MT:"€",NL:"€",PT:"€",SK:"€",SI:"€",ES:"€"},V=[{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"}],w=[{label:"(1,235)",suffix:"#,##0_);(#,##0)"},{label:"(1,235) ",suffix:"#,##0_);[Red](#,##0)",color:"red"},{label:"1,234.56",suffix:"#,##0.00_);#,##0.00"},{label:"1,234.56",suffix:"#,##0.00_);[Red]#,##0.00",color:"red"},{label:"-1,234.56",suffix:"#,##0.00_);-#,##0.00"},{label:"-1,234.56",suffix:"#,##0.00_);[Red]-#,##0.00",color:"red"}],U=[{label:e=>`${e}1,235`,suffix:e=>`"${e}"#,##0.00_);"${e}"#,##0.00`},{label:e=>`${e}1,235`,suffix:e=>`"${e}"#,##0.00_);[Red]"${e}"#,##0.00`,color:"red"},{label:e=>`(${e}1,235)`,suffix:e=>`"${e}"#,##0.00_);("${e}"#,##0.00)`},{label:e=>`(${e}1,235)`,suffix:e=>`"${e}"#,##0.00_);[Red]("${e}"#,##0.00)`,color:"red"},{label:e=>`-${e}1,235`,suffix:e=>`"${e}"#,##0.00_);-"${e}"#,##0.00`},{label:e=>`-${e}1,235`,suffix:e=>`"${e}"#,##0.00_);[Red]-"${e}"#,##0.00`,color:"red"}],z="SHEET_NUMFMT_PLUGIN",$=(e,t=0)=>{var i;return e&&(i=n.numfmt.getInfo(e).maxDecimals)!=null?i:t},J=(e,t)=>{if(e&&!t||!e&&t)return!1;const r=o=>o.reduce((S,v)=>{if(S.isEnd)return S;const g=v.value||v.num;return v.type==="point"?(S.isEnd=!0,S):{...S,result:S.result+g}},{isEnd:!1,result:""}).result,i=n.numfmt.getInfo(e)._partitions,a=n.numfmt.getInfo(t)._partitions,u=r(i[0].tokens),c=r(a[0].tokens),f=r(i[1].tokens),d=r(a[1].tokens);return u===c&&f===d&&i[1].color===a[1].color},D=e=>new Array(Math.min(Math.max(0,Number(e)),30)).fill(0).join(""),P=(e,t)=>e.split(";").map(i=>/\.0?/.test(i)?i.replace(/\.0*/g,`${t>0?".":""}${D(Number(t||0))}`):/0([^0]?)|0$/.test(i)?i.replace(/0([^0]+)|0$/,`0${t>0?".":""}${D(Number(t||0))}$1`):i).join(";"),Z=e=>/\.0?/.test(e)||/0([^0]?)|0$/.test(e),M={id:"sheet.command.numfmt.set.numfmt",type:n.CommandType.COMMAND,handler:(e,t)=>{if(!t)return!1;const r=e.get(n.ICommandService),i=e.get(n.IUniverInstanceService),a=e.get(n.IUndoRedoService),u=l.getSheetCommandTarget(i,t);if(!u)return!1;const{unitId:c,subUnitId:f}=u,d=t.values.filter(m=>!!m.pattern),o=t.values.filter(m=>!m.pattern),S=l.transformCellsToRange(c,f,d),v={unitId:c,subUnitId:f,ranges:o.map(m=>({startColumn:m.col,startRow:m.row,endColumn:m.col,endRow:m.row}))},g=[],h=[];if(d.length){Object.keys(S.values).forEach(C=>{const y=S.values[C];y.ranges=l.rangeMerge(y.ranges)}),g.push({id:l.SetNumfmtMutation.id,params:S});const m=l.factorySetNumfmtUndoMutation(e,S);h.push(...m)}if(o.length){v.ranges=l.rangeMerge(v.ranges),g.push({id:l.RemoveNumfmtMutation.id,params:v});const m=l.factoryRemoveNumfmtUndoMutation(e,v);h.push(...m)}const p=n.sequenceExecute(g,r).result;return p&&a.pushUndoRedo({unitID:c,undoMutations:h,redoMutations:g}),p}},A={id:"sheet.command.numfmt.add.decimal.command",type:n.CommandType.COMMAND,handler:async e=>{const t=e.get(n.ICommandService),r=e.get(l.SheetsSelectionsService),i=e.get(l.INumfmtService),a=e.get(n.IUniverInstanceService),u=r.getCurrentSelections();if(!u||!u.length)return!1;const c=l.getSheetCommandTarget(a);if(!c)return!1;const{unitId:f,subUnitId:d}=c;let o=0;u.forEach(h=>{n.Range.foreach(h.range,(p,m)=>{const C=i.getValue(f,d,p,m);if(!C){const b=c.worksheet.getCellRaw(p,m);if(!o&&b&&b.t===n.CellValueType.NUMBER&&b.v){const _=/\.(\d*)$/.exec(String(b.v));if(_){const R=_[1].length;if(!R)return;o=Math.max(o,R)}}return}const y=$(C.pattern);o=y>o?y:o})});const S=o+1,v=P(`0${S>0?".0":""}`,S),g=[];return u.forEach(h=>{n.Range.foreach(h.range,(p,m)=>{const C=i.getValue(f,d,p,m);if(!C)g.push({row:p,col:m,pattern:v});else{const y=$(C.pattern),b=P(C.pattern,y+1);b!==C.pattern&&g.push({row:p,col:m,pattern:b})}})}),g.length?await t.executeCommand(M.id,{values:g}):!1}};class O{constructor(){E(this,"_currencySymbol$",new N.BehaviorSubject("US"));E(this,"currencySymbol$",this._currencySymbol$.asObservable())}setCurrencySymbolByCountryCode(t){this._currencySymbol$.next(t)}getCurrencySymbol(){return this._currencySymbol$.getValue()}}const F={id:"sheet.command.numfmt.set.currency",type:n.CommandType.COMMAND,handler:async e=>{const t=e.get(n.ICommandService),r=e.get(l.SheetsSelectionsService),i=e.get(O),a=j[i.getCurrencySymbol()]||"$",u=r.getCurrentSelections();if(!u||!u.length)return!1;const c=[],f=U[4].suffix(a);return u.forEach(o=>{n.Range.foreach(o.range,(S,v)=>{c.push({row:S,col:v,pattern:f,type:"currency"})})}),await t.executeCommand(M.id,{values:c})}},B={id:"sheet.command.numfmt.set.percent",type:n.CommandType.COMMAND,handler:async e=>{const t=e.get(n.ICommandService),i=e.get(l.SheetsSelectionsService).getCurrentSelections();if(!i||!i.length)return!1;const a=[],u="0%";return i.forEach(f=>{n.Range.foreach(f.range,(d,o)=>{a.push({row:d,col:o,pattern:u,type:"percent"})})}),await t.executeCommand(M.id,{values:a})}},L={id:"sheet.command.numfmt.subtract.decimal.command",type:n.CommandType.COMMAND,handler:async e=>{const t=e.get(n.ICommandService),r=e.get(l.SheetsSelectionsService),i=e.get(l.INumfmtService),a=e.get(n.IUniverInstanceService),u=r.getCurrentSelections();if(!u||!u.length)return!1;const c=l.getSheetCommandTarget(a);if(!c)return!1;const{unitId:f,subUnitId:d}=c;let o=0;u.forEach(p=>{n.Range.foreach(p.range,(m,C)=>{const y=i.getValue(f,d,m,C);if(!y){const _=c.worksheet.getCellRaw(m,C);if(!o&&_&&_.t===n.CellValueType.NUMBER&&_.v){const R=/\.(\d*)$/.exec(String(_.v));if(R){const K=R[1].length;if(!K)return;o=Math.max(o,K)}}return}const b=$(y.pattern);o=b>o?b:o})});const S=o-1,v=P(`0${S>0?".0":"."}`,S),g=[];return u.forEach(p=>{n.Range.foreach(p.range,(m,C)=>{const y=i.getValue(f,d,m,C);if(!y)g.push({row:m,col:C,pattern:v});else{const b=$(y.pattern);g.push({row:m,col:C,pattern:P(y.pattern,b-1)})}})}),await t.executeCommand(M.id,{values:g})}},Q=e=>n.numfmt.getInfo(e).type||"unknown",G=(e,t,r)=>{const i=n.numfmt.getInfo(e),a=r===n.LocaleType.ZH_CN?"zh-CN":"en",u=i._partitions[1],c=n.numfmt.format(e,t,{locale:a,throws:!1});return t<0?{result:c,color:u.color}:{result:c}},H=(e,t,r)=>e==="General"?{result:String(t)}:G(e,t,r);var X=Object.defineProperty,k=Object.getOwnPropertyDescriptor,ee=(e,t,r,i)=>{for(var a=i>1?void 0:i?k(t,r):t,u=e.length-1,c;u>=0;u--)(c=e[u])&&(a=(i?c(t,r,a):c(a))||a);return i&&a&&X(t,r,a),a},I=(e,t)=>(r,i)=>t(r,i,e);s.SheetsNumfmtCellContentController=class extends n.Disposable{constructor(t,r,i,a,u,c){super(),this._instanceService=t,this._sheetInterceptorService=r,this._themeService=i,this._commandService=a,this._numfmtService=u,this._localeService=c,this._initInterceptorCellContent()}_initInterceptorCellContent(){const t=new n.ObjectMatrix;this.disposeWithMe(this._sheetInterceptorService.intercept(l.INTERCEPTOR_POINT.CELL_CONTENT,{effect:n.InterceptorEffectEnum.Value|n.InterceptorEffectEnum.Style,handler:(r,i,a)=>{const u=i.unitId,c=i.subUnitId;let f;const d=r;if(!d||d.t!==n.CellValueType.NUMBER||d.v==null||Number.isNaN(d.v))return a(r);if(r!=null&&r.s){const h=i.workbook.getStyles().get(r.s);h!=null&&h.n&&(f=h.n)}if(f||(f=this._numfmtService.getValue(u,c,i.row,i.col)),!f)return a(r);let o="";const S=t.getValue(i.row,i.col);if(S&&S.parameters===`${d.v}_${f.pattern}`)return a({...r,...S.result});const v=H(f.pattern,Number(d.v),this._localeService.getCurrentLocale());if(o=v.result,!o)return a(r);const g={v:o};if(v.color){const h=this._themeService.getCurrentTheme()[`${v.color}500`];h&&(g.interceptorStyle={cl:{rgb:h}})}return t.setValue(i.row,i.col,{result:g,parameters:`${d.v}_${f.pattern}`}),a({...r,...g})},priority:l.InterceptCellContentPriority.NUMFMT})),this.disposeWithMe(this._commandService.onCommandExecuted(r=>{if(r.id===l.SetNumfmtMutation.id){const i=r.params;Object.keys(i.values).forEach(a=>{i.values[a].ranges.forEach(c=>{n.Range.foreach(c,(f,d)=>{t.realDeleteValue(f,d)})})})}else if(r.id===l.SetRangeValuesMutation.id){const i=r.params;new n.ObjectMatrix(i.cellValue).forValue((a,u)=>{t.realDeleteValue(a,u)})}})),this.disposeWithMe(this._instanceService.getCurrentTypeOfUnit$(n.UniverInstanceType.UNIVER_SHEET).pipe(N.switchMap(r=>{var i;return(i=r==null?void 0:r.activeSheet$)!=null?i:N.of(null)}),N.skip(1)).subscribe(()=>t.reset()))}},s.SheetsNumfmtCellContentController=ee([I(0,n.IUniverInstanceService),I(1,n.Inject(l.SheetInterceptorService)),I(2,n.Inject(n.ThemeService)),I(3,n.Inject(n.ICommandService)),I(4,n.Inject(l.INumfmtService)),I(5,n.Inject(n.LocaleService))],s.SheetsNumfmtCellContentController);class q extends n.Disposable{constructor(){super(...arguments);E(this,"_currencySymbol$",new N.BehaviorSubject("US"));E(this,"currencySymbol$",this._currencySymbol$.asObservable())}setCurrencySymbolByCountryCode(r){this._currencySymbol$.next(r)}getCurrencySymbol(){return this._currencySymbol$.getValue()}}var x=Object.defineProperty,te=Object.getOwnPropertyDescriptor,ne=(e,t,r)=>t in e?x(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,re=(e,t,r,i)=>{for(var a=i>1?void 0:i?te(t,r):t,u=e.length-1,c;u>=0;u--)(c=e[u])&&(a=(i?c(t,r,a):c(a))||a);return i&&a&&x(t,r,a),a},W=(e,t)=>(r,i)=>t(r,i,e),Y=(e,t,r)=>ne(e,typeof t!="symbol"?t+"":t,r);s.UniverSheetsNumfmtPlugin=class extends n.Plugin{constructor(t=void 0,r,i){super(),this._config=t,this._injector=r,this._commandService=i}onStarting(){n.registerDependencies(this._injector,[[s.SheetsNumfmtCellContentController],[O],[q]]),n.touchDependencies(this._injector,[[s.SheetsNumfmtCellContentController]])}onRendered(){n.touchDependencies(this._injector,[[q]]),[A,L,F,B,M].forEach(t=>{this.disposeWithMe(this._commandService.registerCommand(t))})}},Y(s.UniverSheetsNumfmtPlugin,"pluginName",z),Y(s.UniverSheetsNumfmtPlugin,"type",n.UniverInstanceType.UNIVER_SHEET),s.UniverSheetsNumfmtPlugin=re([n.DependentOn(l.UniverSheetsPlugin),W(1,n.Inject(n.Injector)),W(2,n.ICommandService)],s.UniverSheetsNumfmtPlugin);const ie=e=>T.find(r=>e.includes(r)),se=()=>T.map(e=>({label:e,value:e})),ae=e=>U.map(t=>({label:t.label(e),value:t.suffix(e),color:t.color})),ue=()=>V.map(e=>({label:e.label,value:e.suffix})),ce=()=>w.map(e=>({label:e.label,value:e.suffix,color:e.color}));s.AddDecimalCommand=A,s.CURRENCYFORMAT=U,s.DATEFMTLISG=V,s.MenuCurrencyService=O,s.NUMBERFORMAT=w,s.SetCurrencyCommand=F,s.SetNumfmtCommand=M,s.SetPercentCommand=B,s.SubtractDecimalCommand=L,s.countryCurrencyMap=j,s.currencySymbols=T,s.getCurrencyFormatOptions=ae,s.getCurrencyOptions=se,s.getCurrencyType=ie,s.getDateFormatOptions=ue,s.getDecimalFromPattern=$,s.getDecimalString=D,s.getNumberFormatOptions=ce,s.getPatternPreview=G,s.getPatternPreviewIgnoreGeneral=H,s.getPatternType=Q,s.isPatternEqualWithoutDecimal=J,s.isPatternHasDecimal=Z,s.setPatternDecimal=P,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@univerjs/sheets-numfmt",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0-alpha.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "UniverSheet numfmt plugin",
|
|
6
6
|
"author": "DreamNum <developer@univer.ai>",
|
|
@@ -31,11 +31,14 @@
|
|
|
31
31
|
"require": "./lib/cjs/*",
|
|
32
32
|
"types": "./lib/types/index.d.ts"
|
|
33
33
|
},
|
|
34
|
-
"./
|
|
35
|
-
|
|
34
|
+
"./facade": {
|
|
35
|
+
"import": "./lib/es/facade.js",
|
|
36
|
+
"require": "./lib/cjs/facade.js",
|
|
37
|
+
"types": "./lib/types/facade/index.d.ts"
|
|
38
|
+
},
|
|
39
|
+
"./lib/*": "./lib/*"
|
|
36
40
|
},
|
|
37
|
-
"main": "./lib/
|
|
38
|
-
"module": "./lib/es/index.js",
|
|
41
|
+
"main": "./lib/es/index.js",
|
|
39
42
|
"types": "./lib/types/index.d.ts",
|
|
40
43
|
"publishConfig": {
|
|
41
44
|
"access": "public"
|
|
@@ -47,31 +50,23 @@
|
|
|
47
50
|
"lib"
|
|
48
51
|
],
|
|
49
52
|
"peerDependencies": {
|
|
50
|
-
"react": "^16.9.0 || ^17.0.0 || ^18.0.0",
|
|
51
53
|
"rxjs": ">=7.0.0"
|
|
52
54
|
},
|
|
53
55
|
"dependencies": {
|
|
54
|
-
"@
|
|
55
|
-
"@univerjs/core": "0.
|
|
56
|
-
"@univerjs/
|
|
57
|
-
"@univerjs/engine-
|
|
58
|
-
"@univerjs/
|
|
59
|
-
"@univerjs/sheets-ui": "0.4.2",
|
|
60
|
-
"@univerjs/sheets": "0.4.2",
|
|
61
|
-
"@univerjs/ui": "0.4.2",
|
|
62
|
-
"@univerjs/engine-numfmt": "0.4.2"
|
|
56
|
+
"@vitejs/plugin-react": "4.3.3",
|
|
57
|
+
"@univerjs/core": "0.5.0-alpha.0",
|
|
58
|
+
"@univerjs/engine-formula": "0.5.0-alpha.0",
|
|
59
|
+
"@univerjs/engine-numfmt": "0.5.0-alpha.0",
|
|
60
|
+
"@univerjs/sheets": "0.5.0-alpha.0"
|
|
63
61
|
},
|
|
64
62
|
"devDependencies": {
|
|
65
|
-
"@types/react": "^18.3.11",
|
|
66
|
-
"less": "^4.2.0",
|
|
67
|
-
"react": "18.3.1",
|
|
68
63
|
"rxjs": "^7.8.1",
|
|
69
64
|
"typescript": "^5.6.3",
|
|
70
|
-
"vite": "^5.4.
|
|
71
|
-
"vitest": "^2.1.
|
|
72
|
-
"@univerjs-infra/shared": "0.
|
|
65
|
+
"vite": "^5.4.10",
|
|
66
|
+
"vitest": "^2.1.4",
|
|
67
|
+
"@univerjs-infra/shared": "0.5.0-alpha.0"
|
|
73
68
|
},
|
|
74
|
-
"
|
|
69
|
+
"space": {
|
|
75
70
|
".": {
|
|
76
71
|
"import": "./lib/es/index.js",
|
|
77
72
|
"require": "./lib/cjs/index.js",
|
|
@@ -82,14 +77,19 @@
|
|
|
82
77
|
"require": "./lib/cjs/*",
|
|
83
78
|
"types": "./lib/types/index.d.ts"
|
|
84
79
|
},
|
|
85
|
-
"./
|
|
86
|
-
|
|
80
|
+
"./facade": {
|
|
81
|
+
"import": "./lib/es/facade.js",
|
|
82
|
+
"require": "./lib/cjs/facade.js",
|
|
83
|
+
"types": "./lib/types/facade/index.d.ts"
|
|
84
|
+
},
|
|
85
|
+
"./lib/*": "./lib/*"
|
|
87
86
|
},
|
|
88
87
|
"scripts": {
|
|
89
88
|
"test": "vitest run",
|
|
90
89
|
"test:watch": "vitest",
|
|
91
90
|
"coverage": "vitest run --coverage",
|
|
92
91
|
"lint:types": "tsc --noEmit",
|
|
93
|
-
"build": "
|
|
94
|
-
}
|
|
92
|
+
"build": "tsx build.ts"
|
|
93
|
+
},
|
|
94
|
+
"module": "./lib/es/index.js"
|
|
95
95
|
}
|
package/lib/index.css
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.options{display:flex;justify-content:space-between}.options .w-140{width:140px}.options .w-120{width:120px}.univer-custom-format-title{margin-top:16px}.univer-custom-format-input{margin-top:8px;width:100%}.univer-custom-format-history-list{margin-top:8px;padding:8px;border-radius:8px;border:1px solid var(---Grey-200, #e5e5e5);max-height:400px;overflow:scroll}.univer-custom-format-history-list-item{padding:6px 0;display:flex;gap:6px;align-items:center;cursor:pointer}.univer-custom-format-history-list-item-icon-wrap{width:16px;display:flex;align-items:center;color:#274fee}.univer-custom-format-des{margin-top:8px;color:var(---Grey-600, #7a7a7a);font-size:12px;font-style:normal;font-weight:400;line-height:16px}.numfmt-panel{overflow-y:auto;display:flex;flex-direction:column;justify-content:space-between;height:100%}.numfmt-panel .group-title{font-size:16px;color:rgba(var(--color-black))}.numfmt-panel .label{font-size:15px;color:rgba(var(--grey-400))}.numfmt-panel .describe{font-size:13px;line-height:20px;color:rgba(var(--grey-600))}.numfmt-panel .preview{height:36px;padding:0 16px;font-size:14px;line-height:36px;color:var(--color-black);border:1px solid rgb(var(--grey-200));border-radius:4px}.numfmt-panel .btn-list{display:flex;justify-content:flex-end}.numfmt-panel .m-r-12{margin-right:12px}.numfmt-panel .m-t-16{margin-top:16px}.numfmt-panel .m-t-14{margin-top:14px}.numfmt-panel .m-t-8{margin-top:8px}.numfmt-panel .m-b-20{margin-bottom:20px}.more-numfmt-type{display:flex;flex-shrink:0;padding:0 4px;font-size:13px;color:var(--black)}.more-numfmt-type .icon{display:flex;align-items:center;height:auto;padding-left:8px;color:rgb(var(--grey-400))}.more-numfmt-type-options .line{width:100%;height:1px;background-color:rgb(var(--grey-200))}.more-numfmt-type-options .m-t-4{margin-top:4px}.more-numfmt-type-options .option-item{display:flex;align-items:center;justify-content:space-between;height:28px;padding:0 8px;font-size:13px}.more-numfmt-type-options .option-item:hover{background-color:rgb(var(--grey-100));border-radius:var(--border-radius-base)}.more-numfmt-type-options .m-l-26{margin-left:26px}
|
package/lib/locale/en-US.json
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"sheet": {
|
|
3
|
-
"numfmt": {
|
|
4
|
-
"percent": "Percentage",
|
|
5
|
-
"title": "Number format",
|
|
6
|
-
"numfmtType": "Format types",
|
|
7
|
-
"cancel": "Cancel",
|
|
8
|
-
"confirm": "Confirm",
|
|
9
|
-
"general": "General",
|
|
10
|
-
"accounting": "Accounting",
|
|
11
|
-
"text": "Text",
|
|
12
|
-
"number": "Number",
|
|
13
|
-
"currency": "Currency",
|
|
14
|
-
"date": "Date",
|
|
15
|
-
"time": "Time",
|
|
16
|
-
"thousandthPercentile": "Thousands separator",
|
|
17
|
-
"preview": "Preview",
|
|
18
|
-
"dateTime": "Date and time",
|
|
19
|
-
"decimalLength": "Decimal places",
|
|
20
|
-
"currencyType": "Currency Symbol",
|
|
21
|
-
"moreFmt": "Formats",
|
|
22
|
-
"financialValue": "Financial value",
|
|
23
|
-
"roundingCurrency": "Rounding up the currency",
|
|
24
|
-
"timeDuration": "Duration Time",
|
|
25
|
-
"currencyDes": "The currency format is used to represent general currency values. The accounting format aligns a column of values with decimal points",
|
|
26
|
-
"accountingDes": "The accounting number format aligns a column of values with currency symbols and decimal points",
|
|
27
|
-
"dateType": "Date Type",
|
|
28
|
-
"dateDes": "The date format presents date and time series values as date values.",
|
|
29
|
-
"negType": "A negative number type",
|
|
30
|
-
"generalDes": "The regular format does not contain any specific number format.",
|
|
31
|
-
"thousandthPercentileDes": "The percentile format is used for the representation of ordinary numbers. Monetary and accounting formats provide a specialized format for monetary value calculations.",
|
|
32
|
-
"addDecimal": "Increase decimal places",
|
|
33
|
-
"subtractDecimal": "Decreasing decimal places",
|
|
34
|
-
"customFormat": "Custom Format",
|
|
35
|
-
"customFormatDes": "Generate custom number formats based on existing formats."
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
package/lib/locale/fa-IR.json
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"sheet": {
|
|
3
|
-
"numfmt": {
|
|
4
|
-
"percent": "درصد",
|
|
5
|
-
"title": "قالببندی عدد",
|
|
6
|
-
"numfmtType": "انواع قالببندی",
|
|
7
|
-
"cancel": "انصراف",
|
|
8
|
-
"confirm": "تایید",
|
|
9
|
-
"general": "عمومی",
|
|
10
|
-
"accounting": "حسابداری",
|
|
11
|
-
"text": "متن",
|
|
12
|
-
"number": "عدد",
|
|
13
|
-
"currency": "ارز",
|
|
14
|
-
"date": "تاریخ",
|
|
15
|
-
"time": "زمان",
|
|
16
|
-
"thousandthPercentile": "جداساز هزارتایی",
|
|
17
|
-
"preview": "پیشنمایش",
|
|
18
|
-
"dateTime": "تاریخ و زمان",
|
|
19
|
-
"decimalLength": "اعشار",
|
|
20
|
-
"currencyType": "نماد ارز",
|
|
21
|
-
"moreFmt": "قالبها",
|
|
22
|
-
"financialValue": "مقدار مالی",
|
|
23
|
-
"roundingCurrency": "گرد کردن ارز",
|
|
24
|
-
"timeDuration": "مدت زمان",
|
|
25
|
-
"currencyDes": "قالببندی ارز برای نمایش مقادیر عمومی ارز استفاده میشود. قالببندی حسابداری ستونی از مقادیر را با اعشار تراز میکند.",
|
|
26
|
-
"accountingDes": "قالببندی عددی حسابداری ستونی از مقادیر را با نمادهای ارز و اعشار تراز میکند.",
|
|
27
|
-
"dateType": "نوع تاریخ",
|
|
28
|
-
"dateDes": "قالببندی تاریخ مقادیر سری تاریخ و زمان را به عنوان مقادیر تاریخ ارائه میدهد.",
|
|
29
|
-
"negType": "نوع عدد منفی",
|
|
30
|
-
"generalDes": "قالببندی معمولی حاوی هیچ قالببندی عدد خاصی نیست.",
|
|
31
|
-
"thousandthPercentileDes": "قالببندی درصدی برای نمایش اعداد معمولی استفاده میشود. قالببندیهای پولی و حسابداری قالب تخصصی برای محاسبات مقدار پولی ارائه میدهند.",
|
|
32
|
-
"addDecimal": "افزایش اعشار",
|
|
33
|
-
"subtractDecimal": "کاهش اعشار",
|
|
34
|
-
"customFormat": "قالببندی سفارشی",
|
|
35
|
-
"customFormatDes": "ایجاد قالببندیهای عددی سفارشی بر اساس قالببندیهای موجود."
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
package/lib/locale/ru-RU.json
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"sheet": {
|
|
3
|
-
"numfmt": {
|
|
4
|
-
"percent": "Процент",
|
|
5
|
-
"title": "Формат числа",
|
|
6
|
-
"numfmtType": "Типы форматов",
|
|
7
|
-
"cancel": "Отмена",
|
|
8
|
-
"confirm": "Подтвердить",
|
|
9
|
-
"general": "Общий",
|
|
10
|
-
"accounting": "Бухгалтерский",
|
|
11
|
-
"text": "Текст",
|
|
12
|
-
"number": "Число",
|
|
13
|
-
"currency": "Валюта",
|
|
14
|
-
"date": "Дата",
|
|
15
|
-
"time": "Время",
|
|
16
|
-
"thousandthPercentile": "Разделитель тысяч",
|
|
17
|
-
"preview": "Предпросмотр",
|
|
18
|
-
"dateTime": "Дата и время",
|
|
19
|
-
"decimalLength": "Десятичные знаки",
|
|
20
|
-
"currencyType": "Символ валюты",
|
|
21
|
-
"moreFmt": "Другие форматы",
|
|
22
|
-
"financialValue": "Финансовое значение",
|
|
23
|
-
"roundingCurrency": "Округление валюты",
|
|
24
|
-
"timeDuration": "Продолжительность времени",
|
|
25
|
-
"currencyDes": "Формат валюты используется для представления общих значений валюты. Формат бухгалтерского учета выравнивает столбец значений по десятичным точкам.",
|
|
26
|
-
"accountingDes": "Формат бухгалтерских чисел выравнивает столбец значений по символам валюты и десятичным точкам.",
|
|
27
|
-
"dateType": "Тип даты",
|
|
28
|
-
"dateDes": "Формат даты представляет значения времени и даты как значения даты.",
|
|
29
|
-
"negType": "Тип отрицательного числа",
|
|
30
|
-
"generalDes": "Обычный формат не содержит никакого специфического формата числа.",
|
|
31
|
-
"thousandthPercentileDes": "Формат процента используется для представления обычных чисел. Монетарные и бухгалтерские форматы предоставляют специальный формат для вычислений монетарных значений.",
|
|
32
|
-
"addDecimal": "Увеличить количество десятичных знаков",
|
|
33
|
-
"subtractDecimal": "Уменьшить количество десятичных знаков",
|
|
34
|
-
"customFormat": "Custom Format",
|
|
35
|
-
"customFormatDes": "Generate custom number formats based on existing formats."
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
package/lib/locale/vi-VN.json
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"sheet": {
|
|
3
|
-
"numfmt": {
|
|
4
|
-
"percent": "Phần trăm",
|
|
5
|
-
"title": "Định dạng số",
|
|
6
|
-
"numfmtType": "Loại định dạng",
|
|
7
|
-
"cancel": "Hủy bỏ",
|
|
8
|
-
"confirm": "Xác nhận",
|
|
9
|
-
"general": "Chung",
|
|
10
|
-
"accounting": "Kế toán",
|
|
11
|
-
"text": "Văn bản",
|
|
12
|
-
"number": "Số",
|
|
13
|
-
"currency": "Tiền tệ",
|
|
14
|
-
"date": "Ngày",
|
|
15
|
-
"time": "Thời gian",
|
|
16
|
-
"thousandthPercentile": "Phân vị phần nghìn",
|
|
17
|
-
"preview": "Xem trước",
|
|
18
|
-
"dateTime": "Ngày giờ",
|
|
19
|
-
"decimalLength": "Số chữ số thập phân",
|
|
20
|
-
"currencyType": "Loại tiền tệ",
|
|
21
|
-
"moreFmt": "Nhiều định dạng hơn",
|
|
22
|
-
"financialValue": "Giá trị tài chính",
|
|
23
|
-
"roundingCurrency": "Tiền tệ làm tròn",
|
|
24
|
-
"timeDuration": "Thời lượng",
|
|
25
|
-
"currencyDes": "Định dạng tiền tệ được sử dụng để biểu thị các giá trị tiền tệ thông thường. Định dạng kế toán có thể căn chỉnh các giá trị trong một cột với dấu thập phân.",
|
|
26
|
-
"accountingDes": "Định dạng số kế toán có thể căn chỉnh các ký hiệu tiền tệ và dấu thập phân trong một cột các giá trị.",
|
|
27
|
-
"dateType": "Loại ngày",
|
|
28
|
-
"dateDes": "Định dạng ngày biểu thị các giá trị chuỗi ngày và thời gian dưới dạng giá trị ngày.",
|
|
29
|
-
"negType": "Loại số âm",
|
|
30
|
-
"generalDes": "Định dạng chung không chứa bất kỳ định dạng số cụ thể nào.",
|
|
31
|
-
"thousandthPercentileDes": "Định dạng phân vị phần nghìn được sử dụng để biểu thị các số thông thường. Các định dạng tiền tệ và kế toán cung cấp các định dạng chuyên dụng để tính toán giá trị tiền tệ.",
|
|
32
|
-
"addDecimal": "Thêm chữ số thập phân",
|
|
33
|
-
"subtractDecimal": "Giảm chữ số thập phân",
|
|
34
|
-
"customFormat": "Custom Format",
|
|
35
|
-
"customFormatDes": "Generate custom number formats based on existing formats."
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
package/lib/locale/zh-CN.json
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"sheet": {
|
|
3
|
-
"numfmt": {
|
|
4
|
-
"percent": "百分比",
|
|
5
|
-
"title": "数字格式",
|
|
6
|
-
"numfmtType": "格式类型",
|
|
7
|
-
"cancel": "取消",
|
|
8
|
-
"confirm": "确认",
|
|
9
|
-
"general": "常规",
|
|
10
|
-
"accounting": "会计",
|
|
11
|
-
"text": "文本",
|
|
12
|
-
"number": "数值",
|
|
13
|
-
"currency": "货币",
|
|
14
|
-
"date": "日期",
|
|
15
|
-
"time": "时间",
|
|
16
|
-
"thousandthPercentile": "千分位符",
|
|
17
|
-
"preview": "示例",
|
|
18
|
-
"dateTime": "日期时间",
|
|
19
|
-
"decimalLength": "小数位数",
|
|
20
|
-
"currencyType": "货币类型",
|
|
21
|
-
"moreFmt": "更多格式",
|
|
22
|
-
"financialValue": "财务数值",
|
|
23
|
-
"roundingCurrency": "货币取整",
|
|
24
|
-
"timeDuration": "持续时间",
|
|
25
|
-
"currencyDes": "货币格式用于表示一般货币数值。会计格式可以对一列数值进行小数点对齐",
|
|
26
|
-
"accountingDes": "会计数字格式可对一列数值进行货币符号和小数点对齐",
|
|
27
|
-
"dateType": "日期类型",
|
|
28
|
-
"dateDes": "日期格式将日期和时间系列数值品示为日期值。",
|
|
29
|
-
"negType": "负数类型",
|
|
30
|
-
"generalDes": "常规格式不包含任何特定的数字格式。",
|
|
31
|
-
"thousandthPercentileDes": "千分位符格式用于一般数字的表示。货币和会计格式则提供货币值计算的专用格式。",
|
|
32
|
-
"addDecimal": "增加小数位",
|
|
33
|
-
"subtractDecimal": "减少小数位",
|
|
34
|
-
"customFormat": "自定义格式",
|
|
35
|
-
"customFormatDes": "根据现有格式生成自定义数字格式。"
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
package/lib/locale/zh-TW.json
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"sheet": {
|
|
3
|
-
"numfmt": {
|
|
4
|
-
"percent": "百分比",
|
|
5
|
-
"title": "數字格式",
|
|
6
|
-
"numfmtType": "格式類型",
|
|
7
|
-
"cancel": "取消",
|
|
8
|
-
"confirm": "確認",
|
|
9
|
-
"general": "常規",
|
|
10
|
-
"accounting": "會計",
|
|
11
|
-
"text": "文字",
|
|
12
|
-
"number": "數值",
|
|
13
|
-
"currency": "貨幣",
|
|
14
|
-
"date": "日期",
|
|
15
|
-
"time": "時間",
|
|
16
|
-
"thousandthPercentile": "千分位符",
|
|
17
|
-
"preview": "範例",
|
|
18
|
-
"dateTime": "日期時間",
|
|
19
|
-
"decimalLength": "小數位數",
|
|
20
|
-
"currencyType": "貨幣類型",
|
|
21
|
-
"moreFmt": "更多格式",
|
|
22
|
-
"financialValue": "財務數值",
|
|
23
|
-
"roundingCurrency": "貨幣取整",
|
|
24
|
-
"timeDuration": "持續時間",
|
|
25
|
-
"currencyDes": "貨幣格式用來表示一般貨幣數值。會計格式可以對一列數值進行小數點對齊",
|
|
26
|
-
"accountingDes": "會計數字格式可對一列數值進行貨幣符號和小數點對齊",
|
|
27
|
-
"dateType": "日期類型",
|
|
28
|
-
"dateDes": "日期格式將日期和時間系列數值品顯示為日期值。",
|
|
29
|
-
"negType": "負數型別",
|
|
30
|
-
"generalDes": "常規格式不包含任何特定的數字格式。",
|
|
31
|
-
"thousandthPercentileDes": "千分位符號格式用於一般數字的表示。貨幣和會計格式則提供貨幣值計算的專用格式。",
|
|
32
|
-
"addDecimal": "增加小數位",
|
|
33
|
-
"subtractDecimal": "減少小數位",
|
|
34
|
-
"customFormat": "Custom Format",
|
|
35
|
-
"customFormatDes": "Generate custom number formats based on existing formats."
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|