@univerjs/sheets-formula 0.2.8 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/es/index.js CHANGED
@@ -2,11 +2,11 @@ var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value;
3
3
  var __name = (target, value) => __defProp(target, "name", { value, configurable: !0 });
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key != "symbol" ? key + "" : key, value);
5
- import { Disposable, ObjectMatrix, Dimension, OnLifecycle, LifecycleStages, Inject, IUniverInstanceService, CellValueType, ThemeService, ICommandService, isFormulaString, isFormulaId, Tools, Direction, UniverInstanceType, Injector, DEFAULT_EMPTY_DOCUMENT_VALUE, toDisposable, ColorKit, Rectangle, CommandType, createIdentifier, IContextService, isRealNum, getCellValueType, useDependency, LocaleService, useInjector, FOCUSING_DOC, FOCUSING_UNIVER_EDITOR, FOCUSING_UNIVER_EDITOR_STANDALONE_SINGLE_MODE, connectInjector, throttle, cellToRange, RANGE_TYPE, DisposableCollection, Optional, isICellData, RxDisposable, FORMULA_EDITOR_ACTIVATED, FOCUSING_EDITOR_INPUT_FORMULA, getCellInfoInMergeData, AbsoluteRefType, DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY, DOCS_NORMAL_EDITOR_UNIT_ID_KEY, Plugin, DependentOn } from "@univerjs/core";
5
+ import { Disposable, ObjectMatrix, Dimension, OnLifecycle, LifecycleStages, Inject, IUniverInstanceService, CellValueType, ThemeService, ICommandService, isFormulaString, isFormulaId, Tools, Direction, UniverInstanceType, Injector, DEFAULT_EMPTY_DOCUMENT_VALUE, toDisposable, ColorKit, Rectangle, ILogService, CommandType, createIdentifier, IContextService, isRealNum, getCellValueType, useDependency, LocaleService, useInjector, FOCUSING_DOC, FOCUSING_UNIVER_EDITOR, FOCUSING_UNIVER_EDITOR_STANDALONE_SINGLE_MODE, connectInjector, throttle, cellToRange, RANGE_TYPE, DisposableCollection, Optional, isICellData, RxDisposable, FORMULA_EDITOR_ACTIVATED, FOCUSING_EDITOR_INPUT_FORMULA, getCellInfoInMergeData, AbsoluteRefType, DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY, DOCS_NORMAL_EDITOR_UNIT_ID_KEY, Plugin, DependentOn } from "@univerjs/core";
6
6
  import { IRPCChannelService, fromModule, toModule } from "@univerjs/rpc";
7
7
  import { SetDefinedNameMutation, RemoveDefinedNameMutation, FormulaDataModel, IActiveDirtyManagerService, IDefinedNamesService, SetArrayFormulaDataMutation, stripErrorMargin, LexerTreeBuilder, SetFormulaCalculationResultMutation, ErrorType, sequenceNodeType, serializeRange, FUNCTION_NAMES_COMPATIBILITY, FunctionType, FUNCTION_NAMES_CUBE, FUNCTION_NAMES_DATABASE, FUNCTION_NAMES_DATE, FUNCTION_NAMES_ENGINEERING, FUNCTION_NAMES_FINANCIAL, FUNCTION_NAMES_INFORMATION, FUNCTION_NAMES_LOGICAL, FUNCTION_NAMES_LOOKUP, FUNCTION_NAMES_MATH, FUNCTION_NAMES_STATISTICAL, FUNCTION_NAMES_TEXT, FUNCTION_NAMES_WEB, isReferenceStrings, functionArray, functionCompatibility, functionCube, functionDatabase, functionDate, functionEngineering, functionFinancial, functionInformation, functionLogical, functionLookup, functionMath, functionMeta, functionStatistical, functionText, functionUniver, functionWeb, IFunctionService, ERROR_TYPE_SET, SetFormulaCalculationStartMutation, SetFormulaCalculationStopMutation, SetFormulaCalculationNotificationMutation, FormulaExecuteStageType, FormulaExecutedStateType, SetFormulaDataMutation, initSheetFormulaData, deserializeRangeWithSheet, serializeRangeToRefString, generateStringWithSequence, CustomFunction, serializeRangeWithSpreadsheet, serializeRangeWithSheet, SetOtherFormulaMutation, RemoveOtherFormulaMutation, matchRefDrawToken, matchToken, compareToken, normalizeSheetName, getAbsoluteRefTypeWitString, UniverFormulaEnginePlugin } from "@univerjs/engine-formula";
8
8
  import { IRenderManagerService, ITextSelectionRenderManager, DeviceInputEventType, ScrollTimerType, SHEET_VIEWPORT_KEY, Vector2 } from "@univerjs/engine-render";
9
- import { SetRangeValuesMutation, SetStyleCommand, MoveRangeMutation, MoveRowsMutation, MoveColsMutation, ReorderRangeMutation, RemoveRowMutation, RemoveColMutation, RemoveSheetMutation, InsertSheetMutation, SetDefinedNameCommand, INTERCEPTOR_POINT, SheetInterceptorService, SetRangeValuesUndoMutationFactory, SetWorksheetRowHeightMutation, SetWorksheetColWidthMutation, SetColHiddenMutation, SetColVisibleMutation, SetRowHiddenMutation, SetRowVisibleMutation, SetWorksheetRowAutoHeightMutation, SetRangeValuesCommand, SheetsSelectionsService, getSheetCommandTarget, getCellAtRowCol, SetSelectionsOperation, WorkbookEditablePermission, WorksheetEditPermission, WorksheetSetCellValuePermission, RangeProtectionPermissionEditPoint, SetBorderCommand, ClearSelectionFormatCommand, INumfmtService, handleMoveRange, EffectRefRangId, runRefRangeMutations, handleMoveRows, handleMoveCols, handleInsertRow, handleInsertCol, handleIRemoveRow, handleIRemoveCol, handleDeleteRangeMoveLeft, handleDeleteRangeMoveUp, handleInsertRangeMoveDown, handleInsertRangeMoveRight, RemoveSheetCommand, SetWorksheetNameCommand, DeleteRangeMoveLeftCommand, DeleteRangeMoveUpCommand, RemoveColCommand, RemoveRowCommand, InsertRangeMoveDownCommand, InsertRangeMoveRightCommand, InsertColCommand, InsertRowCommand, MoveColsCommand, MoveRowsCommand, MoveRangeCommand, SetWorksheetActiveOperation, InsertDefinedNameCommand, RemoveDefinedNameCommand, RefRangeService, handleDefaultRangeChangeWithEffectRefCommands, convertSelectionDataToRange, getNormalSelectionStyle, IRefSelectionsService, DISABLE_NORMAL_SELECTIONS, setEndForRange, getPrimaryForRange, RefSelectionsService } from "@univerjs/sheets";
9
+ import { SetRangeValuesMutation, SetStyleCommand, MoveRangeMutation, MoveRowsMutation, MoveColsMutation, ReorderRangeMutation, RemoveRowMutation, RemoveColMutation, RemoveSheetMutation, InsertSheetMutation, SetDefinedNameCommand, INTERCEPTOR_POINT, SheetInterceptorService, SetRangeValuesUndoMutationFactory, SetWorksheetRowHeightMutation, SetWorksheetColWidthMutation, SetColHiddenMutation, SetColVisibleMutation, SetRowHiddenMutation, SetRowVisibleMutation, SetWorksheetRowAutoHeightMutation, SetRangeValuesCommand, SheetsSelectionsService, getSheetCommandTarget, getCellAtRowCol, SetSelectionsOperation, WorkbookEditablePermission, WorksheetEditPermission, WorksheetSetCellValuePermission, RangeProtectionPermissionEditPoint, SetBorderCommand, ClearSelectionFormatCommand, INumfmtService, handleMoveRange, EffectRefRangId, runRefRangeMutations, handleMoveRows, handleMoveCols, handleInsertRow, handleInsertCol, handleIRemoveRow, handleIRemoveCol, handleDeleteRangeMoveLeft, handleDeleteRangeMoveUp, handleInsertRangeMoveDown, handleInsertRangeMoveRight, RemoveSheetCommand, SetWorksheetNameCommand, DeleteRangeMoveLeftCommand, DeleteRangeMoveUpCommand, RemoveColCommand, RemoveRowCommand, InsertRangeMoveDownCommand, InsertRangeMoveRightCommand, InsertColCommand, InsertRowCommand, MoveColsCommand, MoveRowsCommand, MoveRangeCommand, SetWorksheetActiveOperation, InsertDefinedNameCommand, RemoveDefinedNameCommand, RefRangeService, handleDefaultRangeChangeWithEffectRefCommands, SelectionMoveType, convertSelectionDataToRange, getNormalSelectionStyle, IRefSelectionsService, DISABLE_NORMAL_SELECTIONS, setEndForRange, getPrimaryForRange, RefSelectionsService } from "@univerjs/sheets";
10
10
  import { DATA_TYPE, APPLY_TYPE, IAutoFillService, PREDEFINED_HOOK_NAME, COPY_TYPE, ISheetClipboardService, ISheetSelectionRenderService, SelectionShape, IEditorBridgeService, SheetSkeletonManagerService, SheetPasteCommand, useActiveWorkbook, getCurrentRangeDisable$, PASTE_SPECIAL_MENU_ID, whenFormulaEditorActivated, CellAlertType, HoverManagerService, CellAlertManagerService, BaseSelectionRenderService, getCoordByOffset, checkInHeaderRanges, getAllSelection, attachSelectionWithCoord, getSheetObject, getEditorObject, MoveSelectionCommand, JumpOver, ExpandSelectionCommand } from "@univerjs/sheets-ui";
11
11
  import { IEditorService, ISidebarService, MenuGroup, MenuItemType, MenuPosition, getMenuHiddenObservable, IClipboardInterfaceService, KeyCode, MetaKeys, ComponentManager, BuiltInUIPart, IMenuService, IShortcutService, IUIPartsService, IProgressService, UNI_DISABLE_CHANGING_FOCUS_KEY, SetEditorResizeOperation, IContextMenuService } from "@univerjs/ui";
12
12
  import { Subject, throttleTime, combineLatestWith, map, switchMap, of, Observable, merge, filter, bufferTime, distinctUntilKeyChanged, distinctUntilChanged } from "rxjs";
@@ -544,10 +544,27 @@ const REFRESH_ARRAY_SHAPE_MUTATIONS = [
544
544
  ];
545
545
  var _a5;
546
546
  let FormulaEditorShowController = (_a5 = class extends Disposable {
547
- constructor(_context, _editorBridgeService, _formulaDataModel, _themeService, _renderManagerService, _sheetSkeletonManagerService, _commandService) {
547
+ constructor(_context, _editorBridgeService, _formulaDataModel, _themeService, _renderManagerService, _sheetSkeletonManagerService, _commandService, _logService) {
548
548
  super();
549
549
  __publicField(this, "_previousShape");
550
- this._context = _context, this._editorBridgeService = _editorBridgeService, this._formulaDataModel = _formulaDataModel, this._themeService = _themeService, this._renderManagerService = _renderManagerService, this._sheetSkeletonManagerService = _sheetSkeletonManagerService, this._commandService = _commandService, this._initInterceptorEditorStart(), this._commandExecutedListener();
550
+ __publicField(this, "_skeleton");
551
+ this._context = _context, this._editorBridgeService = _editorBridgeService, this._formulaDataModel = _formulaDataModel, this._themeService = _themeService, this._renderManagerService = _renderManagerService, this._sheetSkeletonManagerService = _sheetSkeletonManagerService, this._commandService = _commandService, this._logService = _logService, this._initSkeletonChangeListener(), this._initInterceptorEditorStart(), this._commandExecutedListener();
552
+ }
553
+ _initSkeletonChangeListener() {
554
+ this.disposeWithMe(
555
+ this._sheetSkeletonManagerService.currentSkeleton$.subscribe((param) => {
556
+ var _a23, _b;
557
+ if (param == null)
558
+ this._logService.debug("[FormulaEditorShowController]: should not receive currentSkeleton$ as null!");
559
+ else {
560
+ const { skeleton } = param, prevSheetId = (_b = (_a23 = this._skeleton) == null ? void 0 : _a23.worksheet) == null ? void 0 : _b.getSheetId();
561
+ this._changeRuntime(skeleton), prevSheetId !== skeleton.worksheet.getSheetId() && this._removeArrayFormulaRangeShape();
562
+ }
563
+ })
564
+ );
565
+ }
566
+ _changeRuntime(skeleton) {
567
+ this._skeleton = skeleton;
551
568
  }
552
569
  _initInterceptorEditorStart() {
553
570
  this.disposeWithMe(
@@ -700,7 +717,8 @@ FormulaEditorShowController = __decorateClass$f([
700
717
  __decorateParam$f(3, Inject(ThemeService)),
701
718
  __decorateParam$f(4, IRenderManagerService),
702
719
  __decorateParam$f(5, Inject(SheetSkeletonManagerService)),
703
- __decorateParam$f(6, ICommandService)
720
+ __decorateParam$f(6, ICommandService),
721
+ __decorateParam$f(7, ILogService)
704
722
  ], FormulaEditorShowController);
705
723
  const SheetOnlyPasteFormulaCommand = {
706
724
  id: "sheet.command.paste-formula",
@@ -2137,18 +2155,25 @@ const FUNCTION_LIST_ARRAY = [], FUNCTION_LIST_COMPATIBILITY = [
2137
2155
  abstract: "formula.functionList.RANK.abstract",
2138
2156
  functionParameter: [
2139
2157
  {
2140
- name: "formula.functionList.RANK.functionParameter.number1.name",
2141
- detail: "formula.functionList.RANK.functionParameter.number1.detail",
2142
- example: "A1:A20",
2158
+ name: "formula.functionList.RANK.functionParameter.number.name",
2159
+ detail: "formula.functionList.RANK.functionParameter.number.detail",
2160
+ example: "A3",
2143
2161
  require: 1,
2144
2162
  repeat: 0
2145
2163
  },
2146
2164
  {
2147
- name: "formula.functionList.RANK.functionParameter.number2.name",
2148
- detail: "formula.functionList.RANK.functionParameter.number2.detail",
2149
- example: "A1:A20",
2165
+ name: "formula.functionList.RANK.functionParameter.ref.name",
2166
+ detail: "formula.functionList.RANK.functionParameter.ref.detail",
2167
+ example: "A2:A6",
2150
2168
  require: 1,
2151
2169
  repeat: 0
2170
+ },
2171
+ {
2172
+ name: "formula.functionList.RANK.functionParameter.order.name",
2173
+ detail: "formula.functionList.RANK.functionParameter.order.detail",
2174
+ example: "1",
2175
+ require: 0,
2176
+ repeat: 0
2152
2177
  }
2153
2178
  ]
2154
2179
  },
@@ -11571,18 +11596,25 @@ const FUNCTION_LIST_ARRAY = [], FUNCTION_LIST_COMPATIBILITY = [
11571
11596
  abstract: "formula.functionList.RANK_AVG.abstract",
11572
11597
  functionParameter: [
11573
11598
  {
11574
- name: "formula.functionList.RANK_AVG.functionParameter.number1.name",
11575
- detail: "formula.functionList.RANK_AVG.functionParameter.number1.detail",
11576
- example: "A1:A20",
11599
+ name: "formula.functionList.RANK_AVG.functionParameter.number.name",
11600
+ detail: "formula.functionList.RANK_AVG.functionParameter.number.detail",
11601
+ example: "A3",
11577
11602
  require: 1,
11578
11603
  repeat: 0
11579
11604
  },
11580
11605
  {
11581
- name: "formula.functionList.RANK_AVG.functionParameter.number2.name",
11582
- detail: "formula.functionList.RANK_AVG.functionParameter.number2.detail",
11583
- example: "A1:A20",
11606
+ name: "formula.functionList.RANK_AVG.functionParameter.ref.name",
11607
+ detail: "formula.functionList.RANK_AVG.functionParameter.ref.detail",
11608
+ example: "A2:A6",
11584
11609
  require: 1,
11585
11610
  repeat: 0
11611
+ },
11612
+ {
11613
+ name: "formula.functionList.RANK_AVG.functionParameter.order.name",
11614
+ detail: "formula.functionList.RANK_AVG.functionParameter.order.detail",
11615
+ example: "1",
11616
+ require: 0,
11617
+ repeat: 0
11586
11618
  }
11587
11619
  ]
11588
11620
  },
@@ -11593,18 +11625,25 @@ const FUNCTION_LIST_ARRAY = [], FUNCTION_LIST_COMPATIBILITY = [
11593
11625
  abstract: "formula.functionList.RANK_EQ.abstract",
11594
11626
  functionParameter: [
11595
11627
  {
11596
- name: "formula.functionList.RANK_EQ.functionParameter.number1.name",
11597
- detail: "formula.functionList.RANK_EQ.functionParameter.number1.detail",
11598
- example: "A1:A20",
11628
+ name: "formula.functionList.RANK_EQ.functionParameter.number.name",
11629
+ detail: "formula.functionList.RANK_EQ.functionParameter.number.detail",
11630
+ example: "A3",
11599
11631
  require: 1,
11600
11632
  repeat: 0
11601
11633
  },
11602
11634
  {
11603
- name: "formula.functionList.RANK_EQ.functionParameter.number2.name",
11604
- detail: "formula.functionList.RANK_EQ.functionParameter.number2.detail",
11605
- example: "A1:A20",
11635
+ name: "formula.functionList.RANK_EQ.functionParameter.ref.name",
11636
+ detail: "formula.functionList.RANK_EQ.functionParameter.ref.detail",
11637
+ example: "A2:A6",
11606
11638
  require: 1,
11607
11639
  repeat: 0
11640
+ },
11641
+ {
11642
+ name: "formula.functionList.RANK_EQ.functionParameter.order.name",
11643
+ detail: "formula.functionList.RANK_EQ.functionParameter.order.detail",
11644
+ example: "1",
11645
+ require: 0,
11646
+ repeat: 0
11608
11647
  }
11609
11648
  ]
11610
11649
  },
@@ -15662,16 +15701,16 @@ var __defProp$2 = Object.defineProperty, __getOwnPropDesc$2 = Object.getOwnPrope
15662
15701
  return kind && result && __defProp$2(target, key, result), result;
15663
15702
  }, "__decorateClass$2"), __decorateParam$2 = /* @__PURE__ */ __name((index, decorator) => (target, key) => decorator(target, key, index), "__decorateParam$2"), _a18;
15664
15703
  let RefSelectionsRenderService = (_a18 = class extends BaseSelectionRenderService {
15665
- constructor(_context, injector, themeService, shortcutService, renderManagerService, _refSelectionsService, _sheetSkeletonManagerService) {
15704
+ constructor(_context, injector, themeService, shortcutService, sheetSkeletonManagerService, _refSelectionsService) {
15666
15705
  super(
15667
15706
  injector,
15668
15707
  themeService,
15669
15708
  shortcutService,
15670
- renderManagerService
15709
+ sheetSkeletonManagerService
15671
15710
  );
15672
15711
  __publicField(this, "_workbookSelections");
15673
15712
  __publicField(this, "_eventDisposables");
15674
- this._context = _context, this._refSelectionsService = _refSelectionsService, this._sheetSkeletonManagerService = _sheetSkeletonManagerService, this._workbookSelections = this._refSelectionsService.getWorkbookSelections(this._context.unitId), this._initSelectionChangeListener(), this._initSkeletonChangeListener(), this._initUserActionSyncListener(), this._setStyle(getDefaultRefSelectionStyle(this._themeService)), this._remainLastEnabled = !0;
15713
+ this._context = _context, this._refSelectionsService = _refSelectionsService, this._workbookSelections = this._refSelectionsService.getWorkbookSelections(this._context.unitId), this._initSelectionChangeListener(), this._initSkeletonChangeListener(), this._initUserActionSyncListener(), this._setSelectionStyle(getDefaultRefSelectionStyle(this._themeService)), this._remainLastEnabled = !0;
15675
15714
  }
15676
15715
  getLocation() {
15677
15716
  return this._skeleton.getLocation();
@@ -15711,17 +15750,27 @@ let RefSelectionsRenderService = (_a18 = class extends BaseSelectionRenderServic
15711
15750
  })), listenerDisposables.add(spreadsheetLeftTopPlaceholder == null ? void 0 : spreadsheetLeftTopPlaceholder.onPointerDown$.subscribeEvent((evt, state) => {
15712
15751
  this._reset();
15713
15752
  const skeleton = this._sheetSkeletonManagerService.getCurrent().skeleton, selectionWithStyle = getAllSelection(skeleton), selectionData = this.attachSelectionWithCoord(selectionWithStyle);
15714
- this._addSelectionControlBySelectionData(selectionData), this.refreshSelectionMoveStart(), evt.button !== 2 && state.stopPropagation();
15753
+ this._addSelectionControlBySelectionData(selectionData), this._selectionMoveStart$.next(this.getSelectionDataWithStyle()), evt.button !== 2 && state.stopPropagation();
15715
15754
  })), listenerDisposables;
15716
15755
  }
15756
+ /**
15757
+ * Update selectionModel in this._workbookSelections by user action in spreadsheet area.
15758
+ */
15717
15759
  _initUserActionSyncListener() {
15718
- this.disposeWithMe(this.selectionMoveEnd$.subscribe((params) => this._updateSelections(params)));
15760
+ this.disposeWithMe(this.selectionMoveStart$.subscribe((selectionDataWithStyle) => {
15761
+ this._updateSelections(selectionDataWithStyle, SelectionMoveType.MOVE_START);
15762
+ })), this.disposeWithMe(this.selectionMoving$.subscribe((selectionDataWithStyle) => {
15763
+ this._updateSelections(selectionDataWithStyle, SelectionMoveType.MOVING);
15764
+ })), this.disposeWithMe(this.selectionMoveEnd$.subscribe((selectionDataWithStyle) => {
15765
+ this._updateSelections(selectionDataWithStyle, SelectionMoveType.MOVE_END);
15766
+ }));
15719
15767
  }
15720
- _updateSelections(selectionDataWithStyleList) {
15768
+ _updateSelections(selectionDataWithStyleList, type) {
15721
15769
  const sheetId = this._context.unit.getActiveSheet().getSheetId();
15722
15770
  selectionDataWithStyleList.length !== 0 && this._workbookSelections.setSelections(
15723
15771
  sheetId,
15724
- selectionDataWithStyleList.map((selectionDataWithStyle) => convertSelectionDataToRange(selectionDataWithStyle))
15772
+ selectionDataWithStyleList.map((selectionDataWithStyle) => convertSelectionDataToRange(selectionDataWithStyle)),
15773
+ type
15725
15774
  );
15726
15775
  }
15727
15776
  _initSelectionChangeListener() {
@@ -15759,13 +15808,12 @@ RefSelectionsRenderService = __decorateClass$2([
15759
15808
  __decorateParam$2(1, Inject(Injector)),
15760
15809
  __decorateParam$2(2, Inject(ThemeService)),
15761
15810
  __decorateParam$2(3, IShortcutService),
15762
- __decorateParam$2(4, IRenderManagerService),
15763
- __decorateParam$2(5, IRefSelectionsService),
15764
- __decorateParam$2(6, Inject(SheetSkeletonManagerService))
15811
+ __decorateParam$2(4, Inject(SheetSkeletonManagerService)),
15812
+ __decorateParam$2(5, IRefSelectionsService)
15765
15813
  ], RefSelectionsRenderService);
15766
15814
  function getDefaultRefSelectionStyle(themeService) {
15767
15815
  const style = getNormalSelectionStyle(themeService);
15768
- return style.strokeDash = 8, style.hasAutoFill = !1, style.hasRowHeader = !1, style.hasColumnHeader = !1, style;
15816
+ return style.hasAutoFill = !1, style.hasRowHeader = !1, style.hasColumnHeader = !1, style.widgets = { tl: !0, tc: !0, tr: !0, ml: !0, mr: !0, bl: !0, bc: !0, br: !0 }, style;
15769
15817
  }
15770
15818
  __name(getDefaultRefSelectionStyle, "getDefaultRefSelectionStyle");
15771
15819
  function getFormulaRefSelectionStyle(themeService, refColor, id) {
@@ -15822,7 +15870,7 @@ let PromptController = (_a19 = class extends Disposable {
15822
15870
  ).with(RefSelectionsRenderService);
15823
15871
  }
15824
15872
  /**
15825
- * If there are multiple sheet instances, we should enable or disable all of them.
15873
+ * For multiple sheet instances.
15826
15874
  */
15827
15875
  get _allSelectionRenderServices() {
15828
15876
  return this._renderManagerService.getAllRenderersOfType(UniverInstanceType.UNIVER_SHEET).map((renderer) => renderer.with(RefSelectionsRenderService));
@@ -15908,13 +15956,14 @@ let PromptController = (_a19 = class extends Disposable {
15908
15956
  const d = new DisposableCollection();
15909
15957
  this.disposeWithMe(this._refSelectionsService.selectionMoveEnd$.subscribe((selections) => {
15910
15958
  if (d.dispose(), selections.length === 0) return;
15911
- this._allSelectionRenderServices.forEach((r) => this._updateRefSelectionStyle(r, this._isSelectionMovingRefSelections)), this._allSelectionRenderServices.map((s) => s.getSelectionControls()).flat().forEach((c) => {
15959
+ this._allSelectionRenderServices.map((s) => s.getSelectionControls()).flat().forEach((c) => {
15912
15960
  c.disableHelperSelection(), d.add(c.selectionMoving$.subscribe((toRange) => this._onSelectionControlChange(toRange, c))), d.add(c.selectionScaling$.subscribe((toRange) => this._onSelectionControlChange(toRange, c))), d.add(c.selectionMoved$.subscribe(() => this._formulaPromptService.disableLockedSelectionChange())), d.add(c.selectionScaled$.subscribe(() => this._formulaPromptService.disableLockedSelectionChange()));
15913
15961
  });
15914
15962
  }));
15915
15963
  }
15916
- // #region - Selecting Mode: user can use cursor to select a range on the canvas and move the selection
15917
- // with keyboard shortcuts
15964
+ /**
15965
+ * For interaction with mouse & keyboard shortcuts on spreadsheet. Not in formula editor.
15966
+ */
15918
15967
  _updateSelecting(selectionsWithStyles, performInsertion = !1) {
15919
15968
  if (selectionsWithStyles.length !== 0 && !(this._editorService.selectionChangingState() && !this._formulaPromptService.isLockedSelectionInsert()) && (this._insertControlSelections(selectionsWithStyles), performInsertion)) {
15920
15969
  const currentSelection = selectionsWithStyles[selectionsWithStyles.length - 1];
@@ -15952,7 +16001,6 @@ let PromptController = (_a19 = class extends Disposable {
15952
16001
  }
15953
16002
  this._arrowMoveActionState = 2, this._previousRangesCount = selections.length;
15954
16003
  }
15955
- // #endregion
15956
16004
  _initAcceptFormula() {
15957
16005
  this.disposeWithMe(
15958
16006
  this._formulaPromptService.acceptFormulaName$.subscribe((formulaString) => {
@@ -16288,7 +16336,9 @@ let PromptController = (_a19 = class extends Disposable {
16288
16336
  });
16289
16337
  }
16290
16338
  /**
16339
+ * Update Editor formula text in prompt editor by current selection in spreadsheet.
16291
16340
  * Restore the sequenceNode generated by the lexer to the text in the editor, and set the cursor position.
16341
+ *
16292
16342
  * @param sequenceNodes
16293
16343
  * @param textSelectionOffset
16294
16344
  */
@@ -16296,16 +16346,17 @@ let PromptController = (_a19 = class extends Disposable {
16296
16346
  _syncToEditor(sequenceNodes, textSelectionOffset, editorUnitId, canUndo = !0, fromSelection = !0) {
16297
16347
  let dataStream = generateStringWithSequence(sequenceNodes);
16298
16348
  const { textRuns, refSelections } = this._buildTextRuns(sequenceNodes);
16299
- this._isSelectionMovingRefSelections = refSelections;
16349
+ this._isSelectionMovingRefSelections = refSelections, this._allSelectionRenderServices.forEach((r) => this._updateRefSelectionStyle(r, this._isSelectionMovingRefSelections));
16300
16350
  const activeRange = this._textSelectionManagerService.getActiveTextRangeWithStyle();
16301
16351
  if (activeRange == null)
16302
16352
  return;
16303
- const { collapsed, style } = activeRange;
16304
16353
  this._currentInsertRefStringIndex = textSelectionOffset, editorUnitId == null && (editorUnitId = this._univerInstanceService.getCurrentUniverDocInstance().getUnitId()), this._fitEditorSize();
16305
16354
  const editor = this._editorService.getEditor(editorUnitId);
16306
16355
  editor != null && editor.isSingleChoice() ? (dataStream = dataStream.split(",")[0], this._selectionRenderService.setSingleSelectionEnabled(!0)) : this._selectionRenderService.setSingleSelectionEnabled(!1);
16307
16356
  let formulaString = dataStream, offset = 1;
16308
- (!editor || !editor.onlyInputRange()) && (formulaString = `${compareToken.EQUALS}${dataStream}`, offset = 0), canUndo ? (this._commandService.executeCommand(ReplaceContentCommand.id, {
16357
+ (!editor || !editor.onlyInputRange()) && (formulaString = `${compareToken.EQUALS}${dataStream}`, offset = 0);
16358
+ const { collapsed, style } = activeRange;
16359
+ canUndo ? (this._commandService.executeCommand(ReplaceContentCommand.id, {
16309
16360
  unitId: editorUnitId,
16310
16361
  body: {
16311
16362
  dataStream: formulaString,
@@ -16419,7 +16470,7 @@ let PromptController = (_a19 = class extends Disposable {
16419
16470
  var _a23;
16420
16471
  const { skeleton } = this._getCurrentUnitIdAndSheetId();
16421
16472
  this._formulaPromptService.enableLockedSelectionChange();
16422
- const id = (_a23 = selectionControl.selectionStyle) == null ? void 0 : _a23.id;
16473
+ const id = (_a23 = selectionControl.currentStyle) == null ? void 0 : _a23.id;
16423
16474
  if (!id || !Tools.isStringNumber(id))
16424
16475
  return;
16425
16476
  let { startRow, endRow, startColumn, endColumn } = toRange;
@@ -5180,13 +5180,17 @@
5180
5180
  }
5181
5181
  ],
5182
5182
  "functionParameter": {
5183
- "number1": {
5184
- "name": "number1",
5185
- "detail": "first"
5183
+ "number": {
5184
+ "name": "number",
5185
+ "detail": "The number whose rank you want to find."
5186
5186
  },
5187
- "number2": {
5188
- "name": "number2",
5189
- "detail": "second"
5187
+ "ref": {
5188
+ "name": "ref",
5189
+ "detail": "A reference to a list of numbers. Nonnumeric values in ref are ignored."
5190
+ },
5191
+ "order": {
5192
+ "name": "order",
5193
+ "detail": "A number specifying how to rank number. If order is 0 (zero) or omitted, Microsoft Excel ranks number as if ref were a list sorted in descending order. If order is any nonzero value, Microsoft Excel ranks number as if ref were a list sorted in ascending order."
5190
5194
  }
5191
5195
  }
5192
5196
  },
@@ -5200,13 +5204,17 @@
5200
5204
  }
5201
5205
  ],
5202
5206
  "functionParameter": {
5203
- "number1": {
5204
- "name": "number1",
5205
- "detail": "first"
5207
+ "number": {
5208
+ "name": "number",
5209
+ "detail": "The number whose rank you want to find."
5206
5210
  },
5207
- "number2": {
5208
- "name": "number2",
5209
- "detail": "second"
5211
+ "ref": {
5212
+ "name": "ref",
5213
+ "detail": "A reference to a list of numbers. Nonnumeric values in ref are ignored."
5214
+ },
5215
+ "order": {
5216
+ "name": "order",
5217
+ "detail": "A number specifying how to rank number. If order is 0 (zero) or omitted, Microsoft Excel ranks number as if ref were a list sorted in descending order. If order is any nonzero value, Microsoft Excel ranks number as if ref were a list sorted in ascending order."
5210
5218
  }
5211
5219
  }
5212
5220
  },
@@ -10270,13 +10278,17 @@
10270
10278
  }
10271
10279
  ],
10272
10280
  "functionParameter": {
10273
- "number1": {
10274
- "name": "number1",
10275
- "detail": "first"
10281
+ "number": {
10282
+ "name": "number",
10283
+ "detail": "The number whose rank you want to find."
10276
10284
  },
10277
- "number2": {
10278
- "name": "number2",
10279
- "detail": "second"
10285
+ "ref": {
10286
+ "name": "ref",
10287
+ "detail": "A reference to a list of numbers. Nonnumeric values in ref are ignored."
10288
+ },
10289
+ "order": {
10290
+ "name": "order",
10291
+ "detail": "A number specifying how to rank number. If order is 0 (zero) or omitted, Microsoft Excel ranks number as if ref were a list sorted in descending order. If order is any nonzero value, Microsoft Excel ranks number as if ref were a list sorted in ascending order."
10280
10292
  }
10281
10293
  }
10282
10294
  },
@@ -5180,13 +5180,17 @@
5180
5180
  }
5181
5181
  ],
5182
5182
  "functionParameter": {
5183
- "number1": {
5184
- "name": "number1",
5185
- "detail": "first"
5183
+ "number": {
5184
+ "name": "number",
5185
+ "detail": "The number whose rank you want to find."
5186
5186
  },
5187
- "number2": {
5188
- "name": "number2",
5189
- "detail": "second"
5187
+ "ref": {
5188
+ "name": "ref",
5189
+ "detail": "A reference to a list of numbers. Nonnumeric values in ref are ignored."
5190
+ },
5191
+ "order": {
5192
+ "name": "order",
5193
+ "detail": "A number specifying how to rank number. If order is 0 (zero) or omitted, Microsoft Excel ranks number as if ref were a list sorted in descending order. If order is any nonzero value, Microsoft Excel ranks number as if ref were a list sorted in ascending order."
5190
5194
  }
5191
5195
  }
5192
5196
  },
@@ -5200,13 +5204,17 @@
5200
5204
  }
5201
5205
  ],
5202
5206
  "functionParameter": {
5203
- "number1": {
5204
- "name": "number1",
5205
- "detail": "first"
5207
+ "number": {
5208
+ "name": "number",
5209
+ "detail": "The number whose rank you want to find."
5206
5210
  },
5207
- "number2": {
5208
- "name": "number2",
5209
- "detail": "second"
5211
+ "ref": {
5212
+ "name": "ref",
5213
+ "detail": "A reference to a list of numbers. Nonnumeric values in ref are ignored."
5214
+ },
5215
+ "order": {
5216
+ "name": "order",
5217
+ "detail": "A number specifying how to rank number. If order is 0 (zero) or omitted, Microsoft Excel ranks number as if ref were a list sorted in descending order. If order is any nonzero value, Microsoft Excel ranks number as if ref were a list sorted in ascending order."
5210
5218
  }
5211
5219
  }
5212
5220
  },
@@ -10222,13 +10230,17 @@
10222
10230
  }
10223
10231
  ],
10224
10232
  "functionParameter": {
10225
- "number1": {
10226
- "name": "number1",
10227
- "detail": "first"
10233
+ "number": {
10234
+ "name": "number",
10235
+ "detail": "The number whose rank you want to find."
10228
10236
  },
10229
- "number2": {
10230
- "name": "number2",
10231
- "detail": "second"
10237
+ "ref": {
10238
+ "name": "ref",
10239
+ "detail": "A reference to a list of numbers. Nonnumeric values in ref are ignored."
10240
+ },
10241
+ "order": {
10242
+ "name": "order",
10243
+ "detail": "A number specifying how to rank number. If order is 0 (zero) or omitted, Microsoft Excel ranks number as if ref were a list sorted in descending order. If order is any nonzero value, Microsoft Excel ranks number as if ref were a list sorted in ascending order."
10232
10244
  }
10233
10245
  }
10234
10246
  },
@@ -3578,6 +3578,54 @@
3578
3578
  }
3579
3579
  }
3580
3580
  },
3581
+ "RANK_AVG": {
3582
+ "description": "Trả về thứ hạng của một số trong một danh sách các số",
3583
+ "abstract": "Trả về thứ hạng của một số trong một danh sách các số",
3584
+ "links": [
3585
+ {
3586
+ "title": "Hướng dẫn",
3587
+ "url": "https://support.microsoft.com/vi-vn/office/rank-avg-%E5%87%BD%E6%95%B0-bd406a6f-eb38-4d73-aa8e-6d1c3c72e83a"
3588
+ }
3589
+ ],
3590
+ "functionParameter": {
3591
+ "number": {
3592
+ "name": "số",
3593
+ "detail": "Số mà bạn muốn tìm thứ hạng của nó."
3594
+ },
3595
+ "ref": {
3596
+ "name": "danh sách các số",
3597
+ "detail": "Tham chiếu tới danh sách các số. Các giá trị không phải là số trong tham chiếu sẽ được bỏ qua."
3598
+ },
3599
+ "order": {
3600
+ "name": "xếp hạng số",
3601
+ "detail": "Một con số chỉ rõ cách xếp hạng số. 0 hoặc bị bỏ qua đối với thứ tự giảm dần, khác 0 đối với thứ tự tăng dần."
3602
+ }
3603
+ }
3604
+ },
3605
+ "RANK_EQ": {
3606
+ "description": "Trả về thứ hạng của một số trong một danh sách các số",
3607
+ "abstract": "Trả về thứ hạng của một số trong một danh sách các số",
3608
+ "links": [
3609
+ {
3610
+ "title": "Hướng dẫn",
3611
+ "url": "https://support.microsoft.com/vi-vn/office/rank-eq-%E5%87%BD%E6%95%B0-284858ce-8ef6-450e-b662-26245be04a40"
3612
+ }
3613
+ ],
3614
+ "functionParameter": {
3615
+ "number": {
3616
+ "name": "số",
3617
+ "detail": "Số mà bạn muốn tìm thứ hạng của nó."
3618
+ },
3619
+ "ref": {
3620
+ "name": "danh sách các số",
3621
+ "detail": "Tham chiếu tới danh sách các số. Các giá trị không phải là số trong tham chiếu sẽ được bỏ qua."
3622
+ },
3623
+ "order": {
3624
+ "name": "xếp hạng số",
3625
+ "detail": "Một con số chỉ rõ cách xếp hạng số. 0 hoặc bị bỏ qua đối với thứ tự giảm dần, khác 0 đối với thứ tự tăng dần."
3626
+ }
3627
+ }
3628
+ },
3581
3629
  "STDEV_P": {
3582
3630
  "description": "Tính toán độ lệch chuẩn dựa trên toàn bộ tổng thể được cung cấp ở dạng đối số (bỏ qua giá trị lô-gic và văn bản).",
3583
3631
  "abstract": "Tính độ lệch chuẩn dựa trên toàn bộ quần thể mẫu",
@@ -7858,13 +7906,17 @@
7858
7906
  }
7859
7907
  ],
7860
7908
  "functionParameter": {
7861
- "number1": {
7862
- "name": "number1",
7863
- "detail": "tham số thứ nhất"
7909
+ "number": {
7910
+ "name": "số",
7911
+ "detail": "Số mà bạn muốn tìm thứ hạng của nó."
7864
7912
  },
7865
- "number2": {
7866
- "name": "number2",
7867
- "detail": "tham số thứ hai"
7913
+ "ref": {
7914
+ "name": "danh sách các số",
7915
+ "detail": "Tham chiếu tới danh sách các số. Các giá trị không phải là số trong tham chiếu sẽ được bỏ qua."
7916
+ },
7917
+ "order": {
7918
+ "name": "xếp hạng số",
7919
+ "detail": "Một con số chỉ rõ cách xếp hạng số. 0 hoặc bị bỏ qua đối với thứ tự giảm dần, khác 0 đối với thứ tự tăng dần."
7868
7920
  }
7869
7921
  }
7870
7922
  },
@@ -5180,13 +5180,17 @@
5180
5180
  }
5181
5181
  ],
5182
5182
  "functionParameter": {
5183
- "number1": {
5184
- "name": "number1",
5185
- "detail": "first"
5183
+ "number": {
5184
+ "name": "数值",
5185
+ "detail": "要找到其排位的数字。"
5186
5186
  },
5187
- "number2": {
5188
- "name": "number2",
5189
- "detail": "second"
5187
+ "ref": {
5188
+ "name": "数字列表",
5189
+ "detail": "对数字列表的引用。Ref 中的非数字值会被忽略。"
5190
+ },
5191
+ "order": {
5192
+ "name": "排位方式",
5193
+ "detail": "一个指定数字排位方式的数字。0 或省略为降序,非 0 为升序。"
5190
5194
  }
5191
5195
  }
5192
5196
  },
@@ -5200,13 +5204,17 @@
5200
5204
  }
5201
5205
  ],
5202
5206
  "functionParameter": {
5203
- "number1": {
5204
- "name": "number1",
5205
- "detail": "first"
5207
+ "number": {
5208
+ "name": "数值",
5209
+ "detail": "要找到其排位的数字。"
5206
5210
  },
5207
- "number2": {
5208
- "name": "number2",
5209
- "detail": "second"
5211
+ "ref": {
5212
+ "name": "数字列表",
5213
+ "detail": "对数字列表的引用。Ref 中的非数字值会被忽略。"
5214
+ },
5215
+ "order": {
5216
+ "name": "排位方式",
5217
+ "detail": "一个指定数字排位方式的数字。0 或省略为降序,非 0 为升序。"
5210
5218
  }
5211
5219
  }
5212
5220
  },
@@ -10270,13 +10278,17 @@
10270
10278
  }
10271
10279
  ],
10272
10280
  "functionParameter": {
10273
- "number1": {
10274
- "name": "number1",
10275
- "detail": "first"
10281
+ "number": {
10282
+ "name": "数值",
10283
+ "detail": "要找到其排位的数字。"
10276
10284
  },
10277
- "number2": {
10278
- "name": "number2",
10279
- "detail": "second"
10285
+ "ref": {
10286
+ "name": "数字列表",
10287
+ "detail": "对数字列表的引用。Ref 中的非数字值会被忽略。"
10288
+ },
10289
+ "order": {
10290
+ "name": "排位方式",
10291
+ "detail": "一个指定数字排位方式的数字。0 或省略为降序,非 0 为升序。"
10280
10292
  }
10281
10293
  }
10282
10294
  },