@univerjs/sheets-ui 0.5.3 → 0.5.4

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.
Files changed (40) hide show
  1. package/lib/cjs/facade.js +1 -1
  2. package/lib/cjs/index.js +30 -28
  3. package/lib/es/facade.js +490 -117
  4. package/lib/es/index.js +10728 -11062
  5. package/lib/index.css +1 -1
  6. package/lib/types/commands/commands/clipboard.command.d.ts +1 -0
  7. package/lib/types/components/hook.d.ts +2 -0
  8. package/lib/types/controllers/clipboard/clipboard.controller.d.ts +4 -2
  9. package/lib/types/controllers/clipboard/const.d.ts +16 -0
  10. package/lib/types/controllers/clipboard/utils.d.ts +63 -0
  11. package/lib/types/controllers/config.schema.d.ts +3 -0
  12. package/lib/types/controllers/force-string-alert-render.controller.d.ts +5 -1
  13. package/lib/types/controllers/permission/sheet-permission-check-ui.controller.d.ts +24 -0
  14. package/lib/types/controllers/permission/sheet-permission-interceptor-canvas-render.controller.d.ts +0 -1
  15. package/lib/types/controllers/permission/sheet-permission-interceptor-clipboard.controller.d.ts +3 -4
  16. package/lib/types/controllers/permission/sheet-permission-interceptor-formula-render.controller.d.ts +0 -1
  17. package/lib/types/controllers/render-controllers/scroll.render-controller.d.ts +7 -4
  18. package/lib/types/facade/f-event.d.ts +389 -0
  19. package/lib/types/facade/f-permission.d.ts +4 -1
  20. package/lib/types/facade/f-range.d.ts +48 -5
  21. package/lib/types/facade/f-sheet-hooks.d.ts +50 -12
  22. package/lib/types/facade/f-univer.d.ts +15 -16
  23. package/lib/types/facade/f-workbook.d.ts +43 -28
  24. package/lib/types/facade/f-worksheet.d.ts +24 -11
  25. package/lib/types/facade/index.d.ts +3 -1
  26. package/lib/types/index.d.ts +13 -14
  27. package/lib/types/services/clipboard/clipboard.service.d.ts +25 -10
  28. package/lib/types/services/clipboard/type.d.ts +18 -2
  29. package/lib/types/services/hover-manager.service.d.ts +6 -0
  30. package/lib/types/services/scroll-manager.service.d.ts +10 -2
  31. package/lib/types/services/selection/base-selection-render.service.d.ts +3 -3
  32. package/lib/types/services/selection/selection-render.service.d.ts +4 -0
  33. package/lib/types/views/cell-alert/CellAlertPopup.d.ts +6 -1
  34. package/lib/types/views/clipboard/ClipboardPopupMenu.d.ts +2 -0
  35. package/lib/umd/facade.js +1 -1
  36. package/lib/umd/index.js +28 -26
  37. package/package.json +15 -14
  38. package/lib/types/controllers/permission/sheet-permission-init.controller.d.ts +0 -26
  39. package/lib/types/controllers/permission/sheet-permission-interceptor-base.controller.d.ts +0 -36
  40. package/lib/types/controllers/permission/sheet-permission-view-model.controller.d.ts +0 -11
@@ -1,36 +1,32 @@
1
1
  import { IDisposable, Nullable } from '@univerjs/core';
2
- import { ICellPosWithEvent, IHoverRichTextInfo, IHoverRichTextPosition, IScrollState } from '@univerjs/sheets-ui';
2
+ import { IMouseEvent, IPointerEvent } from '@univerjs/engine-render';
3
+ import { ICellPosWithEvent, IDragCellPosition, IHoverRichTextInfo, IHoverRichTextPosition, IScrollState } from '@univerjs/sheets-ui';
3
4
  import { FWorkbook } from '@univerjs/sheets/facade';
4
5
  import { IDialogPartMethodOptions, ISidebarMethodOptions } from '@univerjs/ui';
6
+ import { ICellEventParam, IFSheetsUIEventParamConfig } from './f-event';
5
7
  export interface IFWorkbookSheetsUIMixin {
6
8
  /**
7
9
  * Open a sidebar.
8
- *
9
10
  * @deprecated
10
- *
11
11
  * @param params the sidebar options
12
12
  * @returns the disposable object
13
13
  */
14
14
  openSiderbar(params: ISidebarMethodOptions): IDisposable;
15
15
  /**
16
16
  * Open a dialog.
17
- *
18
17
  * @deprecated
19
- *
20
18
  * @param dialog the dialog options
21
19
  * @returns the disposable object
22
20
  */
23
21
  openDialog(dialog: IDialogPartMethodOptions): IDisposable;
24
22
  /**
25
23
  * Subscribe to cell click events
26
- *
27
24
  * @param callback - The callback function to be called when a cell is clicked
28
25
  * @returns A disposable object that can be used to unsubscribe from the event
29
26
  */
30
27
  onCellClick(callback: (cell: IHoverRichTextInfo) => void): IDisposable;
31
28
  /**
32
29
  * Subscribe cell hover events
33
- *
34
30
  * @param callback - The callback function to be called when a cell is hovered
35
31
  * @returns A disposable object that can be used to unsubscribe from the event
36
32
  */
@@ -39,82 +35,101 @@ export interface IFWorkbookSheetsUIMixin {
39
35
  * Subscribe to pointer move events on workbook. Just like onCellHover, but with event information.
40
36
  * @param {function(ICellPosWithEvent): any} callback The callback function accept cell location and event.
41
37
  */
42
- onPointerMove(callback: (cell: Nullable<ICellPosWithEvent>, buttons: number) => void): IDisposable;
38
+ onCellPointerMove(callback: (cell: ICellPosWithEvent, event: IPointerEvent | IMouseEvent) => void): IDisposable;
43
39
  /**
44
40
  * Subscribe to cell pointer down events.
45
41
  * @param {function(ICellPosWithEvent): any} callback The callback function accept cell location and event.
46
42
  */
47
- onCellPointerDown(callback: (cell: Nullable<ICellPosWithEvent>) => void): IDisposable;
43
+ onCellPointerDown(callback: (cell: ICellPosWithEvent) => void): IDisposable;
48
44
  /**
49
45
  * Subscribe to cell pointer up events.
50
46
  * @param {function(ICellPosWithEvent): any} callback The callback function accept cell location and event.
51
47
  */
52
- onCellPointerUp(callback: (cell: Nullable<ICellPosWithEvent>) => void): IDisposable;
48
+ onCellPointerUp(callback: (cell: ICellPosWithEvent) => void): IDisposable;
49
+ onDragOver(callback: (cell: IDragCellPosition) => void): IDisposable;
50
+ onDrop(callback: (cell: IDragCellPosition) => void): IDisposable;
53
51
  /**
54
52
  * Start the editing process
55
53
  * @returns A boolean value
54
+ * @example
55
+ * ```ts
56
+ * univerAPI.getActiveWorkbook().startEditing();
57
+ * ```
56
58
  */
57
59
  startEditing(): boolean;
58
60
  /**
59
61
  * Use endEditingAsync as instead
60
62
  * @deprecated
63
+ * End the editing process
64
+ * @async
65
+ * @param save - Whether to save the changes
66
+ * @returns A promise that resolves to a boolean value
67
+ * @example
68
+ * ``` ts
69
+ * univerAPI.getActiveWorkbook().endEditing(true);
70
+ * ```
61
71
  */
62
72
  endEditing(save?: boolean): Promise<boolean>;
63
73
  /**
64
74
  * @async
65
- * @param save - Whether to save the changes, default is true
66
- * @returns A promise that resolves to a boolean value
67
- * @param save
75
+ * @param {boolean} save - Whether to save the changes, default is true
76
+ * @returns {Promise<boolean>} A promise that resolves to a boolean value
68
77
  */
69
78
  endEditingAsync(save?: boolean): Promise<boolean>;
70
79
  getScrollStateBySheetId(sheetId: string): Nullable<IScrollState>;
71
80
  /**
72
81
  * Disable selection. After disabled, there would be no response for selection.
82
+ * @returns {FWorkbook} FWorkbook instance
73
83
  * @example
74
- * ```
84
+ * ```ts
75
85
  * univerAPI.getActiveWorkbook().disableSelection();
76
86
  * ```
77
87
  */
78
- disableSelection(): void;
88
+ disableSelection(): FWorkbook;
79
89
  /**
80
90
  * Enable selection. After this you can select range.
81
91
  * @example
82
- * ```
92
+ * ```ts
83
93
  * univerAPI.getActiveWorkbook().enableSelection();
84
94
  * ```
85
95
  */
86
- enableSelection(): void;
96
+ enableSelection(): FWorkbook;
87
97
  /**
88
98
  * Set selection invisible, Unlike disableSelection, selection still works, you just can not see them.
89
99
  * @example
90
- * ```
100
+ * ```ts
91
101
  * univerAPI.getActiveWorkbook().transparentSelection();
92
102
  * ```
93
103
  */
94
- transparentSelection(): void;
104
+ transparentSelection(): FWorkbook;
95
105
  /**
96
106
  * Set selection visible.
97
107
  * @example
98
- * ```
108
+ * ```ts
99
109
  * univerAPI.getActiveWorkbook().showSelection();
100
110
  * ```
101
111
  */
102
- showSelection(): void;
112
+ showSelection(): FWorkbook;
103
113
  }
104
114
  export declare class FWorkbookSheetsUIMixin extends FWorkbook implements IFWorkbookSheetsUIMixin {
105
115
  openSiderbar(params: ISidebarMethodOptions): IDisposable;
106
116
  openDialog(dialog: IDialogPartMethodOptions): IDisposable;
107
117
  private _logDeprecation;
118
+ addUIEvent(event: keyof IFSheetsUIEventParamConfig, _callback: (params: IFSheetsUIEventParamConfig[typeof event]) => void): IDisposable;
119
+ generateCellParams(cell: IHoverRichTextPosition | ICellPosWithEvent): ICellEventParam;
108
120
  onCellClick(callback: (cell: IHoverRichTextInfo) => void): IDisposable;
109
121
  onCellHover(callback: (cell: IHoverRichTextPosition) => void): IDisposable;
110
- onCellPointerDown(callback: (cell: Nullable<ICellPosWithEvent>) => void): IDisposable;
111
- onCellPointerUp(callback: (cell: Nullable<ICellPosWithEvent>) => void): IDisposable;
112
- onPointerMove(callback: (cell: Nullable<ICellPosWithEvent>, buttons: number) => void): IDisposable;
122
+ onCellPointerDown(callback: (cell: ICellPosWithEvent) => void): IDisposable;
123
+ onCellPointerUp(callback: (cell: ICellPosWithEvent) => void): IDisposable;
124
+ onCellPointerMove(callback: (cell: ICellPosWithEvent, event: IPointerEvent | IMouseEvent) => void): IDisposable;
125
+ onDragOver(callback: (cell: IDragCellPosition) => void): IDisposable;
126
+ onDrop(callback: (cell: IDragCellPosition) => void): IDisposable;
113
127
  startEditing(): boolean;
114
128
  endEditing(save?: boolean): Promise<boolean>;
115
129
  endEditingAsync(save?: boolean): Promise<boolean>;
116
130
  /**
117
131
  * Get scroll state of specified sheet.
132
+ * @param {string} sheetId - sheet id
118
133
  * @returns {IScrollState} scroll state
119
134
  * @example
120
135
  * ``` ts
@@ -122,10 +137,10 @@ export declare class FWorkbookSheetsUIMixin extends FWorkbook implements IFWorkb
122
137
  * ```
123
138
  */
124
139
  getScrollStateBySheetId(sheetId: string): Nullable<IScrollState>;
125
- disableSelection(): void;
126
- enableSelection(): void;
127
- transparentSelection(): void;
128
- showSelection(): void;
140
+ disableSelection(): FWorkbook;
141
+ enableSelection(): FWorkbook;
142
+ transparentSelection(): FWorkbook;
143
+ showSelection(): FWorkbook;
129
144
  }
130
145
  declare module '@univerjs/sheets/facade' {
131
146
  interface FWorkbook extends IFWorkbookSheetsUIMixin {
@@ -5,7 +5,7 @@ export interface IFWorksheetSkeletonMixin {
5
5
  /**
6
6
  * Refresh the canvas.
7
7
  */
8
- refreshCanvas(): void;
8
+ refreshCanvas(): FWorksheet;
9
9
  /**
10
10
  * Set zoom ratio of the worksheet.
11
11
  * @param {number} zoomRatio The zoom ratio to set.It should be in the range of 10 to 400.
@@ -34,15 +34,27 @@ export interface IFWorksheetSkeletonMixin {
34
34
  getZoom(): number;
35
35
  /**
36
36
  * Return visible range, sum view range of 4 viewports.
37
- * @returns IRange
37
+ * @returns {IRange} - visible range
38
+ * @example
39
+ * ``` ts
40
+ * const fWorkbook = univerAPI.getActiveWorkbook();
41
+ * const fWorksheet = fWorkbook.getActiveSheet();
42
+ * const visibleRange = fWorksheet.getVisibleRange();
43
+ * ```
38
44
  */
39
45
  getVisibleRange(): IRange;
40
46
  /**
41
- * Scroll spreadsheet to cell position. Based on the limitations of viewport and the number of rows and columns, you can only scroll to the maximum scrollable range.
42
- * @param row
43
- * @param column
47
+ * Scroll spreadsheet(viewMain) to cell position. Make the cell at topleft of current viewport.
48
+ * Based on the limitations of viewport and the number of rows and columns, you can only scroll to the maximum scrollable range.
49
+ * @param {number} row - Cell row index
50
+ * @param {number} column - Cell column index
51
+ * @returns {FWorksheet} - Current worksheet
52
+ * @example
53
+ * ``` ts
54
+ * univerAPI.getActiveWorkbook().getActiveSheet().scrollToCell(1, 1);
55
+ * ```
44
56
  */
45
- scrollToCell(row: number, column: number): void;
57
+ scrollToCell(row: number, column: number): FWorksheet;
46
58
  /**
47
59
  * Get scroll state of current sheet.
48
60
  * @returns {IScrollState} curr scroll state
@@ -51,10 +63,11 @@ export interface IFWorksheetSkeletonMixin {
51
63
  * univerAPI.getActiveWorkbook().getActiveSheet().getScrollState()
52
64
  * ```
53
65
  */
54
- getScrollState(): Nullable<IScrollState>;
66
+ getScrollState(): IScrollState;
55
67
  /**
56
68
  * Invoked when scrolling the sheet.
57
- * @param {function(params: Nullable<IViewportScrollState>): void} callback The scrolling callback function.
69
+ * @param {function(Nullable<IViewportScrollState>): void} callback The scrolling callback function.
70
+ * @returns {IDisposable} The disposable object to remove the event listener.
58
71
  * @example
59
72
  * ``` ts
60
73
  * univerAPI.getActiveWorkbook().getActiveSheet().onScroll((params) => {...})
@@ -63,12 +76,12 @@ export interface IFWorksheetSkeletonMixin {
63
76
  onScroll(callback: (params: Nullable<IViewportScrollState>) => void): IDisposable;
64
77
  }
65
78
  export declare class FWorksheetSkeletonMixin extends FWorksheet implements IFWorksheetSkeletonMixin {
66
- refreshCanvas(): void;
79
+ refreshCanvas(): FWorksheet;
67
80
  zoom(zoomRatio: number): FWorksheet;
68
81
  getZoom(): number;
69
82
  getVisibleRange(): IRange;
70
- scrollToCell(row: number, column: number): void;
71
- getScrollState(): Nullable<IScrollState>;
83
+ scrollToCell(row: number, column: number): FWorksheet;
84
+ getScrollState(): IScrollState;
72
85
  onScroll(callback: (params: Nullable<IViewportScrollState>) => void): IDisposable;
73
86
  }
74
87
  declare module '@univerjs/sheets/facade' {
@@ -18,8 +18,10 @@ import './f-workbook';
18
18
  import './f-worksheet';
19
19
  import './f-permission';
20
20
  import './f-sheet-hooks';
21
- export { type IFComponentKey, transformComponentKey } from './f-range';
21
+ import './f-event';
22
+ export type * from './f-event';
22
23
  export type * from './f-permission';
24
+ export { type IFComponentKey, transformComponentKey } from './f-range';
23
25
  export type * from './f-sheet-hooks';
24
26
  export type * from './f-univer';
25
27
  export type * from './f-workbook';
@@ -15,23 +15,14 @@
15
15
  */
16
16
  import './global.css';
17
17
  export { getEditorObject } from './basics/editor/get-editor-object';
18
- export { EMBEDDING_FORMULA_EDITOR_COMPONENT_KEY, RANGE_SELECTOR_COMPONENT_KEY, SHEET_VIEW_KEY } from './common/keys';
19
18
  export { useActiveWorkbook, useActiveWorksheet, useWorkbooks } from './components/hook';
20
19
  export { SHEET_UI_PLUGIN_NAME } from './consts/plugin-name';
21
20
  export { SheetsUIPart } from './consts/ui-name';
22
21
  export { AutoFillController } from './controllers/auto-fill.controller';
23
- export { AFFECT_LAYOUT_STYLES, AutoHeightController } from './controllers/auto-height.controller';
24
- export { AutoWidthController } from './controllers/auto-width.controller';
25
22
  export { CellCustomRenderController } from './controllers/cell-custom-render.controller';
26
- export { type IUniverSheetsUIConfig } from './controllers/config.schema';
27
- export { DragRenderController } from './controllers/drag-render.controller';
28
23
  export { EditingRenderController } from './controllers/editor/editing.render-controller';
29
- export { FormulaEditorController } from './controllers/editor/formula-editor.controller';
30
- export { HoverRenderController } from './controllers/hover-render.controller';
31
24
  export { PASTE_SPECIAL_MENU_ID, SheetMenuPosition } from './controllers/menu/menu';
32
25
  export { deriveStateFromActiveSheet$, getCurrentExclusiveRangeInterest$, getCurrentRangeDisable$, getObservableWithExclusiveRange$ } from './controllers/menu/menu-util';
33
- export { SheetPermissionInitController } from './controllers/permission/sheet-permission-init.controller';
34
- export { SheetPermissionInterceptorBaseController } from './controllers/permission/sheet-permission-interceptor-base.controller';
35
26
  export { HeaderFreezeRenderController } from './controllers/render-controllers/freeze.render-controller';
36
27
  export { HeaderMoveRenderController } from './controllers/render-controllers/header-move.render-controller';
37
28
  export { HeaderResizeRenderController } from './controllers/render-controllers/header-resize.render-controller';
@@ -39,10 +30,7 @@ export { SheetsScrollRenderController } from './controllers/render-controllers/s
39
30
  export { SheetRenderController } from './controllers/render-controllers/sheet.render-controller';
40
31
  export { SheetUIController } from './controllers/sheet-ui.controller';
41
32
  export { whenFormulaEditorActivated, whenSheetEditorFocused } from './controllers/shortcuts/utils';
42
- export { StatusBarController } from './controllers/status-bar.controller';
43
33
  export { getCoordByCell, getCoordByOffset, getSheetObject, getTransformCoord, } from './controllers/utils/component-tools';
44
- export { discreteRangeToRange, rangeToDiscreteRange, virtualizeDiscreteRanges } from './controllers/utils/range-tools';
45
- export type { IDiscreteRange } from './controllers/utils/range-tools';
46
34
  export { matchedSelectionByRowColIndex as checkInHeaderRanges } from './controllers/utils/selections-tools';
47
35
  export { useHighlightRange } from './hooks/useHighlightRange';
48
36
  export { UniverSheetsMobileUIPlugin } from './mobile-plugin';
@@ -55,7 +43,7 @@ export { type ICanvasPopup, SheetCanvasPopManagerService } from './services/canv
55
43
  export { CellAlertManagerService, CellAlertType, type ICellAlert } from './services/cell-alert-manager.service';
56
44
  export { getMatrixPlainText, ISheetClipboardService, PREDEFINED_HOOK_NAME, SheetClipboardService, } from './services/clipboard/clipboard.service';
57
45
  export { COPY_TYPE } from './services/clipboard/type';
58
- export type { ICellDataWithSpanInfo, ICopyPastePayload, ISheetClipboardHook, ISheetDiscreteRangeLocation } from './services/clipboard/type';
46
+ export type { ICellDataWithSpanInfo, ICopyPastePayload, IPasteHookValueType, ISheetClipboardHook, ISheetDiscreteRangeLocation } from './services/clipboard/type';
59
47
  export { getRepeatRange, mergeSetRangeValues } from './services/clipboard/utils';
60
48
  export { DragManagerService, type IDragCellPosition } from './services/drag-manager.service';
61
49
  export { EditorBridgeService, IEditorBridgeService, type IEditorBridgeServiceVisibleParam, } from './services/editor-bridge.service';
@@ -65,6 +53,16 @@ export { IFormulaEditorManagerService } from './services/editor/formula-editor-m
65
53
  export { HoverManagerService } from './services/hover-manager.service';
66
54
  export type { ICellPosWithEvent, IHoverCellPosition, IHoverRichTextInfo, IHoverRichTextPosition } from './services/hover-manager.service';
67
55
  export { IMarkSelectionService, MarkSelectionService } from './services/mark-selection/mark-selection.service';
56
+ export { HoverRenderController } from './controllers/hover-render.controller';
57
+ export { DragRenderController } from './controllers/drag-render.controller';
58
+ export { EMBEDDING_FORMULA_EDITOR_COMPONENT_KEY, RANGE_SELECTOR_COMPONENT_KEY, SHEET_VIEW_KEY } from './common/keys';
59
+ export type { IDiscreteRange } from './controllers/utils/range-tools';
60
+ export { discreteRangeToRange, rangeToDiscreteRange, virtualizeDiscreteRanges } from './controllers/utils/range-tools';
61
+ export { AFFECT_LAYOUT_STYLES, AutoHeightController } from './controllers/auto-height.controller';
62
+ export { AutoWidthController } from './controllers/auto-width.controller';
63
+ export { FormulaEditorController } from './controllers/editor/formula-editor.controller';
64
+ export { StatusBarController } from './controllers/status-bar.controller';
65
+ export { SheetPermissionCheckUIController } from './controllers/permission/sheet-permission-check-ui.controller';
68
66
  export { SheetPermissionUserManagerService } from './services/permission/sheet-permission-user-list.service';
69
67
  export { SheetPrintInterceptorService } from './services/print-interceptor.service';
70
68
  export { SheetScrollManagerService } from './services/scroll-manager.service';
@@ -82,6 +80,7 @@ export { MobileSheetBar } from './views/mobile/sheet-bar/MobileSheetBar';
82
80
  export type { IRangeProtectionRenderCellData } from './views/permission/extensions/range-protection.render';
83
81
  export { SheetBar } from './views/sheet-bar/SheetBar';
84
82
  export { RenderSheetContent, RenderSheetFooter, RenderSheetHeader } from './views/sheet-container/SheetContainer';
83
+ export { type IUniverSheetsUIConfig } from './controllers/config.schema';
85
84
  export { getCellRealRange } from './common/utils';
86
85
  export { FONT_FAMILY_COMPONENT, FONT_FAMILY_ITEM_COMPONENT } from './components/font-family/interface';
87
86
  export { FONT_SIZE_COMPONENT } from './components/font-size/interface';
@@ -94,7 +93,7 @@ export type { IFormatPainterBeforeApplyHookParams, IFormatPainterHook } from './
94
93
  export { SELECTION_SHAPE_DEPTH } from './services/selection/const';
95
94
  export { type IBaseSheetBarProps } from './views/sheet-bar/sheet-bar-tabs/SheetBarItem';
96
95
  export { AutoClearContentCommand, AutoFillCommand } from './commands/commands/auto-fill.command';
97
- export { type ISheetPasteParams, SheetCopyCommand, SheetCutCommand, SheetPasteBesidesBorderCommand, SheetPasteColWidthCommand, SheetPasteCommand, SheetPasteFormatCommand, SheetPasteShortKeyCommand, SheetPasteValueCommand, } from './commands/commands/clipboard.command';
96
+ export { type ISheetPasteByShortKeyParams, type ISheetPasteParams, SheetCopyCommand, SheetCutCommand, SheetPasteBesidesBorderCommand, SheetPasteColWidthCommand, SheetPasteCommand, SheetPasteFormatCommand, SheetPasteShortKeyCommand, SheetPasteValueCommand, } from './commands/commands/clipboard.command';
98
97
  export { DeleteRangeMoveLeftConfirmCommand } from './commands/commands/delete-range-move-left-confirm.command';
99
98
  export { DeleteRangeMoveUpConfirmCommand } from './commands/commands/delete-range-move-up-confirm.command';
100
99
  export { HideColConfirmCommand, HideRowConfirmCommand } from './commands/commands/hide-row-col-confirm.command';
@@ -1,19 +1,20 @@
1
1
  import { ICellDataWithSpanAndDisplay, IDisposable, IRange, Nullable, Disposable, ErrorService, ICommandService, ILogService, Injector, IUndoRedoService, IUniverInstanceService, LocaleService, ObjectMatrix, ThemeService } from '@univerjs/core';
2
+ import { Observable } from 'rxjs';
2
3
  import { IDiscreteRange } from '../../controllers/utils/range-tools';
3
- import { ISheetClipboardHook, COPY_TYPE } from './type';
4
+ import { IPasteHookKeyType, IPasteOptionCache, ISheetClipboardHook, COPY_TYPE } from './type';
4
5
  import { IRenderManagerService } from '@univerjs/engine-render';
5
6
  import { SheetsSelectionsService } from '@univerjs/sheets';
6
7
  import { IClipboardInterfaceService, INotificationService, IPlatformService } from '@univerjs/ui';
7
8
  import { IMarkSelectionService } from '../mark-selection/mark-selection.service';
8
9
  import { CopyContentCache } from './copy-content-cache';
9
10
  export declare const PREDEFINED_HOOK_NAME: {
10
- DEFAULT_COPY: string;
11
- DEFAULT_PASTE: string;
12
- SPECIAL_PASTE_VALUE: string;
13
- SPECIAL_PASTE_FORMAT: string;
14
- SPECIAL_PASTE_COL_WIDTH: string;
15
- SPECIAL_PASTE_BESIDES_BORDER: string;
16
- SPECIAL_PASTE_FORMULA: string;
11
+ readonly DEFAULT_COPY: "default-copy";
12
+ readonly DEFAULT_PASTE: "default-paste";
13
+ readonly SPECIAL_PASTE_VALUE: "special-paste-value";
14
+ readonly SPECIAL_PASTE_FORMAT: "special-paste-format";
15
+ readonly SPECIAL_PASTE_COL_WIDTH: "special-paste-col-width";
16
+ readonly SPECIAL_PASTE_BESIDES_BORDER: "special-paste-besides-border";
17
+ readonly SPECIAL_PASTE_FORMULA: "special-paste-formula";
17
18
  };
18
19
  interface ICopyContent {
19
20
  copyId: string;
@@ -23,10 +24,16 @@ interface ICopyContent {
23
24
  discreteRange: IDiscreteRange;
24
25
  }
25
26
  export interface ISheetClipboardService {
27
+ showMenu$: Observable<boolean>;
28
+ setShowMenu: (show: boolean) => void;
29
+ pasteOptionsCache$: Observable<IPasteOptionCache | null>;
30
+ updatePasteOptionsCache(cache: IPasteOptionCache | null): void;
26
31
  copy(): Promise<boolean>;
27
32
  cut(): Promise<boolean>;
28
33
  paste(item: ClipboardItem, pasteType?: string): Promise<boolean>;
29
34
  legacyPaste(html?: string, text?: string): Promise<boolean>;
35
+ rePasteWithPasteType(type: IPasteHookKeyType): boolean;
36
+ disposePasteOptionsCache(): void;
30
37
  generateCopyContent(workbookId: string, worksheetId: string, range: IRange): Nullable<ICopyContent>;
31
38
  copyContentCache(): CopyContentCache;
32
39
  addClipboardHook(hook: ISheetClipboardHook): IDisposable;
@@ -51,18 +58,25 @@ export declare class SheetClipboardService extends Disposable implements ISheetC
51
58
  private readonly _injector;
52
59
  private _clipboardHooks;
53
60
  private readonly _clipboardHooks$;
54
- readonly clipboardHooks$: import('rxjs').Observable<ISheetClipboardHook[]>;
61
+ readonly clipboardHooks$: Observable<ISheetClipboardHook[]>;
55
62
  private _htmlToUSM;
56
63
  private _usmToHtml;
57
64
  private _copyContentCache;
58
65
  private _copyMarkId;
66
+ private _pasteOptionsCache$;
67
+ readonly pasteOptionsCache$: Observable<IPasteOptionCache | null>;
68
+ private readonly _showMenu$;
69
+ readonly showMenu$: Observable<boolean>;
59
70
  constructor(_logService: ILogService, _univerInstanceService: IUniverInstanceService, _selectionManagerService: SheetsSelectionsService, _clipboardInterfaceService: IClipboardInterfaceService, _undoRedoService: IUndoRedoService, _commandService: ICommandService, _markSelectionService: IMarkSelectionService, _notificationService: INotificationService, _platformService: IPlatformService, _renderManagerService: IRenderManagerService, _themeService: ThemeService, _localeService: LocaleService, _errorService: ErrorService, _injector: Injector);
71
+ setShowMenu(show: boolean): void;
60
72
  copyContentCache(): CopyContentCache;
61
73
  generateCopyContent(workbookId: string, worksheetId: string, range: IRange): Nullable<ICopyContent>;
62
74
  copy(copyType?: COPY_TYPE): Promise<boolean>;
63
75
  cut(): Promise<boolean>;
64
- paste(item: ClipboardItem, pasteType?: string): Promise<boolean>;
76
+ paste(item: ClipboardItem, pasteType?: "default-paste"): Promise<boolean>;
65
77
  legacyPaste(html?: string, text?: string): Promise<boolean>;
78
+ rePasteWithPasteType(type: IPasteHookKeyType): boolean;
79
+ updatePasteOptionsCache(cache: IPasteOptionCache | null): void;
66
80
  addClipboardHook(hook: ISheetClipboardHook): IDisposable;
67
81
  getClipboardHooks(): ISheetClipboardHook[];
68
82
  private _generateCopyContent;
@@ -127,6 +141,7 @@ export declare class SheetClipboardService extends Disposable implements ISheetC
127
141
  private _topLeftCellsMatch;
128
142
  removeMarkSelection(): void;
129
143
  private _initUnitDisposed;
144
+ disposePasteOptionsCache(): void;
130
145
  }
131
146
  export declare function getMatrixPlainText(matrix: ObjectMatrix<ICellDataWithSpanAndDisplay>): string;
132
147
  export declare const escapeSpecialCode: (cellStr: string) => string;
@@ -1,5 +1,6 @@
1
1
  import { ICellData, IDocumentData, IMutationInfo, IRange, ObjectMatrix } from '@univerjs/core';
2
2
  import { IDiscreteRange } from '../../controllers/utils/range-tools';
3
+ import { PREDEFINED_HOOK_NAME } from './clipboard.service';
3
4
  export declare enum COPY_TYPE {
4
5
  COPY = "COPY",
5
6
  CUT = "CUT"
@@ -30,7 +31,7 @@ export interface IParsedCellValueByClipboard {
30
31
  }
31
32
  export interface IUniverSheetCopyDataModel {
32
33
  rowProperties?: IClipboardPropertyItem[];
33
- colProperties?: IClipboardPropertyItem[] | null;
34
+ colProperties?: IClipboardPropertyItem[];
34
35
  cellMatrix: ObjectMatrix<ICellDataWithSpanInfo>;
35
36
  }
36
37
  export interface IPasteTarget {
@@ -41,7 +42,7 @@ export interface IPasteTarget {
41
42
  export interface ICopyPastePayload {
42
43
  copyType?: COPY_TYPE;
43
44
  copyId?: string;
44
- pasteType: string;
45
+ pasteType: IPasteHookValueType;
45
46
  }
46
47
  export interface ISheetDiscreteRangeLocation {
47
48
  range: IDiscreteRange;
@@ -133,3 +134,18 @@ export interface ISheetClipboardHook {
133
134
  */
134
135
  getFilteredOutRows?(range: IRange): number[];
135
136
  }
137
+ export interface IPasteOptionCache {
138
+ target: IPasteTarget;
139
+ source?: IPasteSource;
140
+ cellMatrix: ObjectMatrix<ICellDataWithSpanInfo>;
141
+ rowProperties?: IClipboardPropertyItem[];
142
+ colProperties?: IClipboardPropertyItem[];
143
+ pasteType: IPasteHookValueType;
144
+ }
145
+ export type IPasteSource = ISheetDiscreteRangeLocation & {
146
+ copyId: string;
147
+ copyType: COPY_TYPE;
148
+ };
149
+ export type IPasteHookKeyType = Exclude<keyof typeof PREDEFINED_HOOK_NAME, 'default-copy'>;
150
+ export type IPasteHookValueTypeWithoutDefaultCopy = typeof PREDEFINED_HOOK_NAME[IPasteHookKeyType];
151
+ export type IPasteHookValueType = Exclude<IPasteHookValueTypeWithoutDefaultCopy, 'default-copy'>;
@@ -77,6 +77,12 @@ export declare class HoverManagerService extends Disposable {
77
77
  triggerPointerDown(unitId: string, event: IPointerEvent | IMouseEvent): void;
78
78
  triggerPointerUp(unitId: string, event: IPointerEvent | IMouseEvent): void;
79
79
  triggerMouseMove(unitId: string, event: IPointerEvent | IMouseEvent): void;
80
+ /**
81
+ * Trigger by pointerup.
82
+ * @param unitId
83
+ * @param offsetX
84
+ * @param offsetY
85
+ */
80
86
  triggerClick(unitId: string, offsetX: number, offsetY: number): void;
81
87
  triggerScroll(): void;
82
88
  }
@@ -12,11 +12,19 @@ export interface IScrollState {
12
12
  */
13
13
  offsetY: number;
14
14
  /**
15
- * current start row in viewport visible area
15
+ * Current start row in viewportMain in canvas, NOT the first row of visible area of current viewport after freeze.
16
+ * e.g. If no freeze, it's the same as startRow in current viewport.
17
+ * If freeze, this value is smaller than the first row of visible area. Just pretend that viewMainTop does not exist.
18
+ *
19
+ * e.g. If row 1 ~ 2 is frozen, the first row if viewMain is 3, but sheetViewStartRow still 0.
16
20
  */
17
21
  sheetViewStartRow: number;
18
22
  /**
19
- * current start column in viewport visible area
23
+ * Current start column in viewportMain in canvas, NOT the first column of visible area of current viewport after freeze.
24
+ * e.g. If no freeze, it's the same as startColumn in current viewport.
25
+ * If freeze, this value is smaller than the first column of visible area. Just pretend that viewMainLeft does not exist.
26
+ *
27
+ * e.g. If column A ~ C is frozen, the first column of viewMain is D, but sheetViewStartColumn still 0.
20
28
  */
21
29
  sheetViewStartColumn: number;
22
30
  }
@@ -126,9 +126,9 @@ export declare class BaseSelectionRenderService extends Disposable implements IS
126
126
  setSingleSelectionEnabled(enabled?: boolean): void;
127
127
  newSelectionControl(scene: Scene, skeleton: SpreadsheetSkeleton, selection: ISelectionWithStyle): SelectionControl;
128
128
  /**
129
- * Update the corresponding selectionControl based on selectionsData.
130
- * selectionData[i] syncs selectionControls[i]
131
- * @param selectionsWithCoord
129
+ * Update the corresponding selectionControl based on selectionsData from WorkbookSelectionModel
130
+ * selectionData[i] --> selectionControls[i]
131
+ * @param selectionsWithStyleList {ISelectionWithStyle[]} selectionsData from WorkbookSelectionModel
132
132
  */
133
133
  resetSelectionsByModelData(selectionsWithStyleList: readonly ISelectionWithStyle[]): void;
134
134
  refreshSelectionMoveStart(): void;
@@ -33,6 +33,10 @@ export declare class SheetSelectionRenderService extends BaseSelectionRenderServ
33
33
  private _initUserActionSyncListener;
34
34
  /**
35
35
  * Update selectionData to selectionDataModel (WorkBookSelections) by SetSelectionsOperation.
36
+ *
37
+ * Unlike baseSelectionRenderService@resetSelectionsByModelData, this method is for update WorkbookSelectionModel.
38
+ *
39
+ *
36
40
  * @param selectionDataWithStyleList
37
41
  * @param type
38
42
  */
@@ -1,5 +1,10 @@
1
- import { default as React } from 'react';
2
1
  import { ICanvasPopup } from '../../services/canvas-pop-manager.service';
2
+ import { default as React } from 'react';
3
+ /**
4
+ *
5
+ * @param root0
6
+ * @param root0.popup
7
+ */
3
8
  export declare function CellAlert({ popup }: {
4
9
  popup: ICanvasPopup;
5
10
  }): React.JSX.Element | null;
@@ -0,0 +1,2 @@
1
+ import { default as React } from 'react';
2
+ export declare const ClipboardPopupMenu: () => React.JSX.Element | null;
package/lib/umd/facade.js CHANGED
@@ -1 +1 @@
1
- (function(a,i){typeof exports=="object"&&typeof module<"u"?i(exports,require("@univerjs/core"),require("@univerjs/engine-render"),require("@univerjs/sheets-ui"),require("@univerjs/sheets/facade"),require("@univerjs/ui"),require("rxjs"),require("@univerjs/sheets")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/engine-render","@univerjs/sheets-ui","@univerjs/sheets/facade","@univerjs/ui","rxjs","@univerjs/sheets"],i):(a=typeof globalThis<"u"?globalThis:a||self,i(a.UniverSheetsUiFacade={},a.UniverCore,a.UniverEngineRender,a.UniverSheetsUi,a.UniverSheetsFacade,a.UniverUi,a.rxjs,a.UniverSheets))})(this,function(a,i,c,o,l,S,v,m){"use strict";class I extends i.FUniver{customizeColumnHeader(e){const t=this.getActiveWorkbook();if(!t){console.error("WorkBook not exist");return}const r=t==null?void 0:t.getId();this._getSheetRenderComponent(r,o.SHEET_VIEW_KEY.COLUMN).setCustomHeader(e)}customizeRowHeader(e){const t=this.getActiveWorkbook();if(!t){console.error("WorkBook not exist");return}const r=t==null?void 0:t.getId();this._getSheetRenderComponent(r,o.SHEET_VIEW_KEY.ROW).setCustomHeader(e)}registerSheetRowHeaderExtension(e,...t){const r=this._getSheetRenderComponent(e,o.SHEET_VIEW_KEY.ROW),n=r.register(...t);return i.toDisposable(()=>{n.dispose(),r.makeDirty(!0)})}registerSheetColumnHeaderExtension(e,...t){const r=this._getSheetRenderComponent(e,o.SHEET_VIEW_KEY.COLUMN),n=r.register(...t);return i.toDisposable(()=>{n.dispose(),r.makeDirty(!0)})}registerSheetMainExtension(e,...t){const r=this._getSheetRenderComponent(e,o.SHEET_VIEW_KEY.MAIN),n=r.register(...t);return i.toDisposable(()=>{n.dispose(),r.makeDirty(!0)})}_getSheetRenderComponent(e,t){const n=this._injector.get(c.IRenderManagerService).getRenderById(e);if(!n)throw new Error(`Render Unit with unitId ${e} not found`);const{components:s}=n,d=s.get(t);if(!d)throw new Error("Render component not found");return d}getSheetHooks(){return this._injector.createInstance(l.FSheetHooks)}}i.FUniver.extend(I);class C extends l.FWorkbook{openSiderbar(e){return this._logDeprecation("openSiderbar"),this._injector.get(S.ISidebarService).open(e)}openDialog(e){this._logDeprecation("openDialog");const r=this._injector.get(S.IDialogService).open({...e,onClose:()=>{r.dispose()}});return r}_logDeprecation(e){this._injector.get(i.ILogService).warn("[FWorkbook]",`${e} is deprecated. Please use the function of the same name on "FUniver".`)}onCellClick(e){const t=this._injector.get(o.HoverManagerService);return i.toDisposable(t.currentClickedCell$.pipe(v.filter(r=>!!r)).subscribe(e))}onCellHover(e){const t=this._injector.get(o.HoverManagerService);return i.toDisposable(t.currentRichText$.pipe(v.filter(r=>!!r)).subscribe(e))}onCellPointerDown(e){const t=this._injector.get(o.HoverManagerService);return i.toDisposable(t.currentPointerDownCell$.subscribe(e))}onCellPointerUp(e){const t=this._injector.get(o.HoverManagerService);return i.toDisposable(t.currentPointerUpCell$.subscribe(e))}onPointerMove(e){const t=this._injector.get(o.HoverManagerService);return i.toDisposable(t.currentCellPosWithEvent$.pipe(v.filter(r=>!!r)).subscribe(r=>{e(r,r.event.buttons)}))}startEditing(){return this._injector.get(i.ICommandService).syncExecuteCommand(o.SetCellEditVisibleOperation.id,{eventType:c.DeviceInputEventType.Dblclick,unitId:this._workbook.getUnitId(),visible:!0})}async endEditing(e){return this._injector.get(i.ICommandService).syncExecuteCommand(o.SetCellEditVisibleOperation.id,{eventType:c.DeviceInputEventType.Keyboard,keycode:e?S.KeyCode.ENTER:S.KeyCode.ESC,visible:!1,unitId:this._workbook.getUnitId()}),await i.awaitTime(0),!0}endEditingAsync(e=!0){return this.endEditing(e)}getScrollStateBySheetId(e){const t=this._workbook.getUnitId(),n=this._injector.get(c.IRenderManagerService).getRenderById(t);return n?n.with(o.SheetScrollManagerService).getScrollStateByParam({unitId:t,sheetId:e}):null}disableSelection(){const e=this._workbook.getUnitId(),r=this._injector.get(c.IRenderManagerService).getRenderById(e);r&&r.with(o.ISheetSelectionRenderService).disableSelection()}enableSelection(){const e=this._workbook.getUnitId(),r=this._injector.get(c.IRenderManagerService).getRenderById(e);r&&r.with(o.ISheetSelectionRenderService).enableSelection()}transparentSelection(){const e=this._workbook.getUnitId(),r=this._injector.get(c.IRenderManagerService).getRenderById(e);r&&r.with(o.ISheetSelectionRenderService).transparentSelection()}showSelection(){const e=this._workbook.getUnitId(),r=this._injector.get(c.IRenderManagerService).getRenderById(e);r&&r.with(o.ISheetSelectionRenderService).showSelection()}}l.FWorkbook.extend(C);class _ extends l.FWorksheet{refreshCanvas(){const e=this._injector.get(c.IRenderManagerService),t=this._fWorkbook.id,r=e.getRenderById(t);if(!r)throw new Error(`Render Unit with unitId ${t} not found`);r.with(o.SheetSkeletonManagerService).reCalculate();const n=r.mainComponent;if(!n)throw new Error("Main component not found");n.makeDirty()}zoom(e){return this._injector.get(i.ICommandService).syncExecuteCommand(o.ChangeZoomRatioCommand.id,{unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),zoomRatio:e}),this}getZoom(){return this._worksheet.getZoomRatio()}getVisibleRange(){const e=this._workbook.getUnitId(),r=this._injector.get(c.IRenderManagerService).getRenderById(e);let n={startColumn:0,startRow:0,endColumn:0,endRow:0};if(!r)return n;const d=r.with(o.SheetSkeletonManagerService).getCurrentSkeleton();if(!d)return n;const h=d==null?void 0:d.getVisibleRanges();if(!h)return n;n=d.getVisibleRangeByViewport(c.SHEET_VIEWPORT_KEY.VIEW_MAIN);for(const[w,u]of h)c.sheetContentViewportKeys.indexOf(w)!==-1&&(n.startColumn=Math.min(n.startColumn,u.startColumn),n.startRow=Math.min(n.startRow,u.startRow),n.endColumn=Math.max(n.endColumn,u.endColumn),n.endRow=Math.max(n.endRow,u.endRow));return n}scrollToCell(e,t){const r=this._workbook.getUnitId(),s=this._injector.get(c.IRenderManagerService).getRenderById(r);s&&(s==null?void 0:s.with(o.SheetsScrollRenderController)).scrollToCell(e,t)}getScrollState(){const e=this._workbook.getUnitId(),t=this._worksheet.getSheetId(),n=this._injector.get(c.IRenderManagerService).getRenderById(e);return n?n.with(o.SheetScrollManagerService).getScrollStateByParam({unitId:e,sheetId:t}):null}onScroll(e){var s;const t=this._workbook.getUnitId(),n=(s=this._injector.get(c.IRenderManagerService).getRenderById(t))==null?void 0:s.with(o.SheetScrollManagerService);if(n){const d=n.validViewportScrollInfo$.subscribe(h=>{e(h)});return i.toDisposable(d)}return i.toDisposable(()=>{})}}l.FWorksheet.extend(_);class k extends l.FPermission{setPermissionDialogVisible(e){this._permissionService.setShowComponents(e)}}l.FPermission.extend(k);class b extends l.FSheetHooks{onCellPointerMove(e){return i.toDisposable(this._injector.get(o.HoverManagerService).currentPosition$.subscribe(e))}onCellPointerOver(e){return i.toDisposable(this._injector.get(o.HoverManagerService).currentCell$.subscribe(e))}onCellDragOver(e){return i.toDisposable(this._injector.get(o.DragManagerService).currentCell$.subscribe(e))}onCellDrop(e){return i.toDisposable(this._injector.get(o.DragManagerService).endCell$.subscribe(e))}onCellRender(e,t=i.InterceptorEffectEnum.Style,r=m.InterceptCellContentPriority.DATA_VALIDATION){return this._injector.get(m.SheetInterceptorService).intercept(m.INTERCEPTOR_POINT.CELL_CONTENT,{effect:t,handler:(n,s,d)=>d({...n,customRender:[...(n==null?void 0:n.customRender)||[],...e||[]]}),priority:r})}onBeforeCellEdit(e){return this._injector.get(i.ICommandService).beforeCommandExecuted(t=>{const r=t.params;t.id===o.SetCellEditVisibleOperation.id&&r.visible&&e(r)})}onAfterCellEdit(e){return this._injector.get(i.ICommandService).onCommandExecuted(t=>{const r=t.params;t.id===o.SetCellEditVisibleOperation.id&&!r.visible&&e(r)})}}l.FSheetHooks.extend(b);class M extends l.FRange{getCell(){const e=this._injector.get(c.IRenderManagerService),t=this._workbook.getUnitId(),r=this._worksheet.getSheetId();return e.getRenderById(t).with(o.SheetSkeletonManagerService).getWorksheetSkeleton(r).skeleton.getCellWithCoordByIndex(this._range.startRow,this._range.startColumn)}getCellRect(){const{startX:e,startY:t,endX:r,endY:n}=this.getCell(),s={x:e,y:t,width:r-e,height:n-t,top:t,left:e,bottom:n,right:r};return{...s,toJSON:()=>JSON.stringify(s)}}generateHTML(){var t;const e=this._injector.get(o.ISheetClipboardService).generateCopyContent(this._workbook.getUnitId(),this._worksheet.getSheetId(),this._range);return(t=e==null?void 0:e.html)!=null?t:""}attachPopup(e){const{key:t,disposableCollection:r}=p(e,this._injector.get(S.ComponentManager)),s=this._injector.get(o.SheetCanvasPopManagerService).attachPopupToCell(this._range.startRow,this._range.startColumn,{...e,componentKey:t},this.getUnitId(),this._worksheet.getSheetId());return s?(r.add(s),r):(r.dispose(),null)}attachAlertPopup(e){const t=this._injector.get(o.CellAlertManagerService),r={workbook:this._workbook,worksheet:this._worksheet,row:this._range.startRow,col:this._range.startColumn,unitId:this.getUnitId(),subUnitId:this._worksheet.getSheetId()};return t.showAlert({...e,location:r}),{dispose:()=>{t.removeAlert(e.key)}}}highlight(e,t){const r=this._injector.get(o.IMarkSelectionService),n=r.addShape({range:this._range,style:e,primary:t});if(!n)throw new Error("Failed to highlight current range");return i.toDisposable(()=>{r.removeShape(n)})}}l.FRange.extend(M);function p(g,e){const{componentKey:t,isVue3:r}=g;let n;const s=new i.DisposableCollection;return typeof t=="string"?n=t:(n=`External_${i.generateRandomId(6)}`,s.add(e.register(n,t,{framework:r?"vue3":"react"}))),{key:n,disposableCollection:s}}a.transformComponentKey=p,Object.defineProperty(a,Symbol.toStringTag,{value:"Module"})});
1
+ (function(h,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("@univerjs/core"),require("@univerjs/docs"),require("@univerjs/engine-render"),require("@univerjs/sheets-ui"),require("@univerjs/sheets/facade"),require("@univerjs/ui"),require("rxjs"),require("@univerjs/sheets")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/docs","@univerjs/engine-render","@univerjs/sheets-ui","@univerjs/sheets/facade","@univerjs/ui","rxjs","@univerjs/sheets"],o):(h=typeof globalThis<"u"?globalThis:h||self,o(h.UniverSheetsUiFacade={},h.UniverCore,h.UniverDocs,h.UniverEngineRender,h.UniverSheetsUi,h.UniverSheetsFacade,h.UniverUi,h.rxjs,h.UniverSheets))})(this,function(h,o,k,d,s,u,c,f,I){"use strict";class P extends o.FUniver{_initSheetUIEvent(e){const t=e.get(o.ICommandService);this.disposeWithMe(t.beforeCommandExecuted(r=>{if(r.id===s.SetCellEditVisibleOperation.id){if(!this._eventListend(this.Event.BeforeSheetEditStart)&&!this._eventListend(this.Event.BeforeSheetEditEnd))return;const n=this.getCommandSheetTarget(r);if(!n)return;const{workbook:i,worksheet:a}=n,l=e.get(s.IEditorBridgeService),g=e.get(o.IUniverInstanceService),C=r.params,{visible:v,keycode:b,eventType:m}=C,p=l.getEditLocation();if(v){const _={row:p.row,column:p.column,eventType:m,keycode:b,workbook:i,worksheet:a,isZenEditor:!1};if(this.fireEvent(this.Event.BeforeSheetEditStart,_),_.cancel)throw new o.CanceledError}else{const _={row:p.row,column:p.column,eventType:m,keycode:b,workbook:i,worksheet:a,isZenEditor:!1,value:o.RichTextValue.create(g.getUnit(o.DOCS_NORMAL_EDITOR_UNIT_ID_KEY).getSnapshot()),isConfirm:b!==c.KeyCode.ESC};if(this.fireEvent(this.Event.BeforeSheetEditEnd,_),_.cancel)throw new o.CanceledError}}})),this.disposeWithMe(t.onCommandExecuted(r=>{if(r.id===s.SetCellEditVisibleOperation.id){if(!this._eventListend(this.Event.SheetEditStarted)&&!this._eventListend(this.Event.SheetEditEnded))return;const n=this.getCommandSheetTarget(r);if(!n)return;const{workbook:i,worksheet:a}=n,l=e.get(s.IEditorBridgeService),g=r.params,{visible:C,keycode:v,eventType:b}=g,m=l.getEditLocation();if(C){const p={row:m.row,column:m.column,eventType:b,keycode:v,workbook:i,worksheet:a,isZenEditor:!1};this.fireEvent(this.Event.SheetEditStarted,p)}else{const p={row:m.row,column:m.column,eventType:b,keycode:v,workbook:i,worksheet:a,isZenEditor:!1,isConfirm:v!==c.KeyCode.ESC};this.fireEvent(this.Event.SheetEditEnded,p)}}if(r.id===k.RichTextEditingMutation.id){if(!this._eventListend(this.Event.SheetEditChanging))return;const n=this.getCommandSheetTarget(r);if(!n)return;const{workbook:i,worksheet:a}=n,l=e.get(s.IEditorBridgeService),g=e.get(o.IUniverInstanceService),C=r.params;if(!l.isVisible().visible)return;const{unitId:v}=C;if(v===o.DOCS_NORMAL_EDITOR_UNIT_ID_KEY){const{row:b,column:m}=l.getEditLocation(),p={workbook:i,worksheet:a,row:b,column:m,value:o.RichTextValue.create(g.getUnit(o.DOCS_NORMAL_EDITOR_UNIT_ID_KEY).getSnapshot()),isZenEditor:!1};this.fireEvent(this.Event.SheetEditChanging,p)}}}))}_initialize(e){this._initSheetUIEvent(e);const t=e.get(o.ICommandService);this.disposeWithMe(t.beforeCommandExecuted(r=>{switch(r.id){case c.CopyCommand.id:case c.CutCommand.id:this._beforeClipboardChange();break;case s.SheetPasteShortKeyCommand.id:this._beforeClipboardPaste(r.params);break}})),this.disposeWithMe(t.onCommandExecuted(r=>{switch(r.id){case c.CopyCommand.id:case c.CutCommand.id:this._clipboardChanged();break;case s.SheetPasteShortKeyCommand.id:this._clipboardPaste();break;case c.PasteCommand.id:this._clipboardPasteAsync();break}})),this.disposeWithMe(t.beforeCommandExecuted(async r=>{switch(r.id){case c.PasteCommand.id:await this._beforeClipboardPasteAsync();break}}))}_generateClipboardCopyParam(){const e=this.getActiveWorkbook(),t=e==null?void 0:e.getActiveSheet(),r=e==null?void 0:e.getActiveRange();if(!e||!t||!r)return;const i=this._injector.get(s.ISheetClipboardService).generateCopyContent(e.getId(),t.getSheetId(),r.getRange());if(!i)return;const{html:a,plain:l}=i;return{workbook:e,worksheet:t,text:l,html:a,fromSheet:t,fromRange:r}}_beforeClipboardChange(){if(!this.hasEventCallback(this.Event.BeforeClipboardChange))return;const e=this._generateClipboardCopyParam();if(e&&(this.fireEvent(this.Event.BeforeClipboardChange,e),e.cancel))throw new Error("Before clipboard change is canceled")}_clipboardChanged(){if(!this.hasEventCallback(this.Event.ClipboardChanged))return;const e=this._generateClipboardCopyParam();if(e&&(this.fireEvent(this.Event.ClipboardChanged,e),e.cancel))throw new Error("Clipboard changed is canceled")}_generateClipboardPasteParam(e){if(!e)return;const{htmlContent:t,textContent:r}=e,n=this.getActiveWorkbook(),i=n==null?void 0:n.getActiveSheet();return!n||!i?void 0:{workbook:n,worksheet:i,text:r,html:t}}async _generateClipboardPasteParamAsync(){const e=this.getActiveWorkbook(),t=e==null?void 0:e.getActiveSheet();if(!e||!t)return;const i=(await this._injector.get(c.IClipboardInterfaceService).read())[0];let a;if(i){const l=i.types,g=l.indexOf(c.PLAIN_TEXT_CLIPBOARD_MIME_TYPE)!==-1?await i.getType(c.PLAIN_TEXT_CLIPBOARD_MIME_TYPE).then(v=>v&&v.text()):"",C=l.indexOf(c.HTML_CLIPBOARD_MIME_TYPE)!==-1?await i.getType(c.HTML_CLIPBOARD_MIME_TYPE).then(v=>v&&v.text()):"";a={workbook:e,worksheet:t,text:g,html:C}}return a}_beforeClipboardPaste(e){if(!this.hasEventCallback(this.Event.BeforeClipboardPaste))return;const t=this._generateClipboardPasteParam(e);if(t&&(this.fireEvent(this.Event.BeforeClipboardPaste,t),t.cancel))throw new Error("Before clipboard paste is canceled")}_clipboardPaste(e){if(!this.hasEventCallback(this.Event.BeforeClipboardPaste))return;const t=this._generateClipboardPasteParam(e);if(t&&(this.fireEvent(this.Event.BeforeClipboardPaste,t),t.cancel))throw new Error("Clipboard pasted is canceled")}async _beforeClipboardPasteAsync(){if(!this.hasEventCallback(this.Event.BeforeClipboardPaste))return;if(!c.supportClipboardAPI()){this._injector.get(o.ILogService).warn("[Facade]: The navigator object only supports the browser environment");return}const e=await this._generateClipboardPasteParamAsync();if(e&&(this.fireEvent(this.Event.BeforeClipboardPaste,e),e.cancel))throw new Error("Before clipboard paste is canceled")}async _clipboardPasteAsync(){if(!this.hasEventCallback(this.Event.ClipboardPasted))return;if(!c.supportClipboardAPI()){this._injector.get(o.ILogService).warn("[Facade]: The navigator object only supports the browser environment");return}const e=await this._generateClipboardPasteParamAsync();if(e&&(this.fireEvent(this.Event.ClipboardPasted,e),e.cancel))throw new Error("Clipboard pasted is canceled")}customizeColumnHeader(e){const t=this.getActiveWorkbook();if(!t){console.error("WorkBook not exist");return}const r=t==null?void 0:t.getId();this._getSheetRenderComponent(r,s.SHEET_VIEW_KEY.COLUMN).setCustomHeader(e)}customizeRowHeader(e){const t=this.getActiveWorkbook();if(!t){console.error("WorkBook not exist");return}const r=t==null?void 0:t.getId();this._getSheetRenderComponent(r,s.SHEET_VIEW_KEY.ROW).setCustomHeader(e)}registerSheetRowHeaderExtension(e,...t){const r=this._getSheetRenderComponent(e,s.SHEET_VIEW_KEY.ROW),n=r.register(...t);return o.toDisposable(()=>{n.dispose(),r.makeDirty(!0)})}registerSheetColumnHeaderExtension(e,...t){const r=this._getSheetRenderComponent(e,s.SHEET_VIEW_KEY.COLUMN),n=r.register(...t);return o.toDisposable(()=>{n.dispose(),r.makeDirty(!0)})}registerSheetMainExtension(e,...t){const r=this._getSheetRenderComponent(e,s.SHEET_VIEW_KEY.MAIN),n=r.register(...t);return o.toDisposable(()=>{n.dispose(),r.makeDirty(!0)})}_getSheetRenderComponent(e,t){const n=this._injector.get(d.IRenderManagerService).getRenderById(e);if(!n)throw new Error(`Render Unit with unitId ${e} not found`);const{components:i}=n,a=i.get(t);if(!a)throw new Error("Render component not found");return a}getSheetHooks(){return this._injector.createInstance(u.FSheetHooks)}}o.FUniver.extend(P);const S={CellClicked:"CellClicked",CellPointerDown:"CellPointerDown",CellPointerUp:"CellPointerUp",CellPointerMove:"CellPointerMove",CellHover:"CellHover",DragOver:"DragOver",Drop:"Drop"};class M extends o.FEventName{get BeforeClipboardChange(){return"BeforeClipboardChange"}get ClipboardChanged(){return"ClipboardChanged"}get BeforeClipboardPaste(){return"BeforeClipboardPaste"}get ClipboardPasted(){return"ClipboardPasted"}get BeforeSheetEditStart(){return"BeforeSheetEditStart"}get SheetEditStarted(){return"SheetEditStarted"}get SheetEditChanging(){return"SheetEditChanging"}get BeforeSheetEditEnd(){return"BeforeSheetEditEnd"}get SheetEditEnded(){return"SheetEditEnded"}get CellClicked(){return S.CellClicked}get CellHover(){return S.CellHover}get CellPointerDown(){return S.CellPointerDown}get CellPointerUp(){return S.CellPointerUp}get CellPointerMove(){return S.CellPointerMove}get DragOver(){return"DragOver"}get Drop(){return"Drop"}}o.FEventName.extend(M);class y extends u.FWorkbook{openSiderbar(e){return this._logDeprecation("openSiderbar"),this._injector.get(c.ISidebarService).open(e)}openDialog(e){this._logDeprecation("openDialog");const r=this._injector.get(c.IDialogService).open({...e,onClose:()=>{r.dispose()}});return r}_logDeprecation(e){this._injector.get(o.ILogService).warn("[FWorkbook]",`${e} is deprecated. Please use the function of the same name on "FUniver".`)}addUIEvent(e,t){const r=this.getActiveSheet(),n={workbook:this,worksheet:r};switch(e){case S.CellClicked:this.onCellClick(i=>{this.fireEvent(this.Event.CellClicked,{row:i.location.row,column:i.location.col,...n})});break;case S.CellPointerDown:this.onCellPointerDown(i=>{this.fireEvent(this.Event.CellPointerDown,this.generateCellParams(i))});break;case S.CellPointerUp:this.onCellPointerUp(i=>{this.fireEvent(this.Event.CellPointerUp,this.generateCellParams(i))});break;case S.CellPointerMove:this.onCellPointerMove(i=>{this.fireEvent(this.Event.CellPointerMove,this.generateCellParams(i))});break;case S.CellHover:this.onCellHover(i=>{this.fireEvent(this.Event.CellHover,this.generateCellParams(i))});break;case S.DragOver:this.onDragOver(i=>{this.fireEvent(this.Event.DragOver,{row:i.location.row,column:i.location.col,...n})});break;case S.Drop:this.onDrop(i=>{this.fireEvent(this.Event.Drop,{row:i.location.row,column:i.location.col,...n})})}return o.toDisposable(()=>{})}generateCellParams(e){const t=this.getActiveSheet();return{row:e.row,column:e.col,workbook:this,worksheet:t}}onCellClick(e){const t=this._injector.get(s.HoverManagerService);return o.toDisposable(t.currentClickedCell$.pipe(f.filter(r=>!!r)).subscribe(r=>{e(r)}))}onCellHover(e){const t=this._injector.get(s.HoverManagerService);return o.toDisposable(t.currentRichText$.pipe(f.filter(r=>!!r)).subscribe(e))}onCellPointerDown(e){const t=this._injector.get(s.HoverManagerService);return o.toDisposable(t.currentPointerDownCell$.subscribe(e))}onCellPointerUp(e){const t=this._injector.get(s.HoverManagerService);return o.toDisposable(t.currentPointerUpCell$.subscribe(e))}onCellPointerMove(e){const t=this._injector.get(s.HoverManagerService);return o.toDisposable(t.currentCellPosWithEvent$.pipe(f.filter(r=>!!r)).subscribe(r=>{e(r,r.event)}))}onDragOver(e){const t=this._injector.get(s.DragManagerService);return o.toDisposable(t.currentCell$.pipe(f.filter(r=>!!r)).subscribe(r=>{e(r)}))}onDrop(e){const t=this._injector.get(s.DragManagerService);return o.toDisposable(t.endCell$.pipe(f.filter(r=>!!r)).subscribe(r=>{e(r)}))}startEditing(){return this._injector.get(o.ICommandService).syncExecuteCommand(s.SetCellEditVisibleOperation.id,{eventType:d.DeviceInputEventType.Dblclick,unitId:this._workbook.getUnitId(),visible:!0})}async endEditing(e){return this._injector.get(o.ICommandService).syncExecuteCommand(s.SetCellEditVisibleOperation.id,{eventType:d.DeviceInputEventType.Keyboard,keycode:e?c.KeyCode.ENTER:c.KeyCode.ESC,visible:!1,unitId:this._workbook.getUnitId()}),await o.awaitTime(0),!0}endEditingAsync(e=!0){return this.endEditing(e)}getScrollStateBySheetId(e){const t=this._workbook.getUnitId(),n=this._injector.get(d.IRenderManagerService).getRenderById(t);return n?n.with(s.SheetScrollManagerService).getScrollStateByParam({unitId:t,sheetId:e}):null}disableSelection(){const e=this._workbook.getUnitId(),r=this._injector.get(d.IRenderManagerService).getRenderById(e);return r&&r.with(s.ISheetSelectionRenderService).disableSelection(),this}enableSelection(){const e=this._workbook.getUnitId(),r=this._injector.get(d.IRenderManagerService).getRenderById(e);return r&&r.with(s.ISheetSelectionRenderService).enableSelection(),this}transparentSelection(){const e=this._workbook.getUnitId(),r=this._injector.get(d.IRenderManagerService).getRenderById(e);return r&&r.with(s.ISheetSelectionRenderService).transparentSelection(),this}showSelection(){const e=this._workbook.getUnitId(),r=this._injector.get(d.IRenderManagerService).getRenderById(e);return r&&r.with(s.ISheetSelectionRenderService).showSelection(),this}}u.FWorkbook.extend(y);class D extends u.FWorksheet{refreshCanvas(){const e=this._injector.get(d.IRenderManagerService),t=this._fWorkbook.id,r=e.getRenderById(t);if(!r)throw new Error(`Render Unit with unitId ${t} not found`);r.with(s.SheetSkeletonManagerService).reCalculate();const n=r.mainComponent;if(!n)throw new Error("Main component not found");return n.makeDirty(),this}zoom(e){return this._injector.get(o.ICommandService).syncExecuteCommand(s.ChangeZoomRatioCommand.id,{unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId(),zoomRatio:e}),this}getZoom(){return this._worksheet.getZoomRatio()}getVisibleRange(){const e=this._workbook.getUnitId(),r=this._injector.get(d.IRenderManagerService).getRenderById(e);let n={startColumn:0,startRow:0,endColumn:0,endRow:0};if(!r)return n;const a=r.with(s.SheetSkeletonManagerService).getCurrentSkeleton();if(!a)return n;const l=a==null?void 0:a.getVisibleRanges();if(!l)return n;n=a.getVisibleRangeByViewport(d.SHEET_VIEWPORT_KEY.VIEW_MAIN);for(const[g,C]of l)d.sheetContentViewportKeys.indexOf(g)!==-1&&(n.startColumn=Math.min(n.startColumn,C.startColumn),n.startRow=Math.min(n.startRow,C.startRow),n.endColumn=Math.max(n.endColumn,C.endColumn),n.endRow=Math.max(n.endRow,C.endRow));return n}scrollToCell(e,t){const r=this._workbook.getUnitId(),i=this._injector.get(d.IRenderManagerService).getRenderById(r);return i&&(i==null?void 0:i.with(s.SheetsScrollRenderController)).scrollToCell(e,t),this}getScrollState(){const e={offsetX:0,offsetY:0,sheetViewStartColumn:0,sheetViewStartRow:0},t=this._workbook.getUnitId(),r=this._worksheet.getSheetId(),i=this._injector.get(d.IRenderManagerService).getRenderById(t);return i&&i.with(s.SheetScrollManagerService).getScrollStateByParam({unitId:t,sheetId:r})||e}onScroll(e){var i;const t=this._workbook.getUnitId(),n=(i=this._injector.get(d.IRenderManagerService).getRenderById(t))==null?void 0:i.with(s.SheetScrollManagerService);if(n){const a=n.validViewportScrollInfo$.subscribe(l=>{e(l)});return o.toDisposable(a)}return o.toDisposable(()=>{})}}u.FWorksheet.extend(D);class R extends u.FPermission{setPermissionDialogVisible(e){this._permissionService.setShowComponents(e)}}u.FPermission.extend(R);class x extends u.FSheetHooks{onCellPointerMove(e){return o.toDisposable(this._injector.get(s.HoverManagerService).currentPosition$.subscribe(e))}onCellPointerOver(e){return o.toDisposable(this._injector.get(s.HoverManagerService).currentCell$.subscribe(e))}onCellDragOver(e){return o.toDisposable(this._injector.get(s.DragManagerService).currentCell$.subscribe(e))}onCellDrop(e){return o.toDisposable(this._injector.get(s.DragManagerService).endCell$.subscribe(e))}onCellRender(e,t=o.InterceptorEffectEnum.Style,r=I.InterceptCellContentPriority.DATA_VALIDATION){return this._injector.get(I.SheetInterceptorService).intercept(I.INTERCEPTOR_POINT.CELL_CONTENT,{effect:t,handler:(n,i,a)=>a({...n,customRender:[...(n==null?void 0:n.customRender)||[],...e||[]]}),priority:r})}onBeforeCellEdit(e){return this._injector.get(o.ICommandService).beforeCommandExecuted(t=>{const r=t.params;t.id===s.SetCellEditVisibleOperation.id&&r.visible&&e(r)})}onAfterCellEdit(e){return this._injector.get(o.ICommandService).onCommandExecuted(t=>{const r=t.params;t.id===s.SetCellEditVisibleOperation.id&&!r.visible&&e(r)})}}u.FSheetHooks.extend(x);class T extends u.FRange{getCell(){const e=this._injector.get(d.IRenderManagerService),t=this._workbook.getUnitId(),r=this._worksheet.getSheetId();return e.getRenderById(t).with(s.SheetSkeletonManagerService).getWorksheetSkeleton(r).skeleton.getCellWithCoordByIndex(this._range.startRow,this._range.startColumn)}getCellRect(){const{startX:e,startY:t,endX:r,endY:n}=this.getCell(),i={x:e,y:t,width:r-e,height:n-t,top:t,left:e,bottom:n,right:r};return{...i,toJSON:()=>JSON.stringify(i)}}generateHTML(){var t;const e=this._injector.get(s.ISheetClipboardService).generateCopyContent(this._workbook.getUnitId(),this._worksheet.getSheetId(),this._range);return(t=e==null?void 0:e.html)!=null?t:""}attachPopup(e){var a,l,g;e.direction=(a=e.direction)!=null?a:"horizontal",e.extraProps=(l=e.extraProps)!=null?l:{},e.offset=(g=e.offset)!=null?g:[0,0];const{key:t,disposableCollection:r}=w(e,this._injector.get(c.ComponentManager)),i=this._injector.get(s.SheetCanvasPopManagerService).attachPopupToCell(this._range.startRow,this._range.startColumn,{...e,componentKey:t},this.getUnitId(),this._worksheet.getSheetId());return i?(r.add(i),r):(r.dispose(),null)}attachAlertPopup(e){const t=this._injector.get(s.CellAlertManagerService),r={workbook:this._workbook,worksheet:this._worksheet,row:this._range.startRow,col:this._range.startColumn,unitId:this.getUnitId(),subUnitId:this._worksheet.getSheetId()};return t.showAlert({...e,location:r}),{dispose:()=>{t.removeAlert(e.key)}}}highlight(e,t){const r=this._injector.get(s.IMarkSelectionService),n=r.addShape({range:this._range,style:e,primary:t});if(!n)throw new Error("Failed to highlight current range");return o.toDisposable(()=>{r.removeShape(n)})}}u.FRange.extend(T);function w(E,e){const{componentKey:t,isVue3:r}=E;let n;const i=new o.DisposableCollection;return typeof t=="string"?n=t:(n=`External_${o.generateRandomId(6)}`,i.add(e.register(n,t,{framework:r?"vue3":"react"}))),{key:n,disposableCollection:i}}h.transformComponentKey=w,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});