UNPKG

@univerjs/sheets-ui

Version:

Spreadsheet UI layer for Univer Sheets.

1,165 lines (1,159 loc) • 57.2 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); let _univerjs_core = require("@univerjs/core"); let _univerjs_core_facade = require("@univerjs/core/facade"); let _univerjs_docs = require("@univerjs/docs"); let _univerjs_engine_render = require("@univerjs/engine-render"); let _univerjs_sheets = require("@univerjs/sheets"); let _univerjs_sheets_ui = require("@univerjs/sheets-ui"); let _univerjs_sheets_facade = require("@univerjs/sheets/facade"); let _univerjs_ui = require("@univerjs/ui"); let rxjs = require("rxjs"); //#region src/facade/f-univer.ts var FUniverSheetsUIMixin = class extends _univerjs_core_facade.FUniver { _initSheetUIEvent(injector) { const commandService = injector.get(_univerjs_core.ICommandService); this.disposeWithMe(this.registerEventHandler(this.Event.BeforeSheetEditStart, () => commandService.beforeCommandExecuted((commandInfo) => { if (commandInfo.id !== _univerjs_sheets_ui.SetCellEditVisibleOperation.id) return; const target = this.getActiveSheet(); if (!target) return; const { workbook, worksheet } = target; const editorBridgeService = injector.get(_univerjs_sheets_ui.IEditorBridgeService); const { visible, keycode, eventType } = commandInfo.params; const loc = editorBridgeService.getEditLocation(); if (!visible) return; const eventParams = { row: loc.row, column: loc.column, eventType, keycode, workbook, worksheet, isZenEditor: false }; this.fireEvent(this.Event.BeforeSheetEditStart, eventParams); if (eventParams.cancel) throw new _univerjs_core.CanceledError(); }))); this.disposeWithMe(this.registerEventHandler(this.Event.BeforeSheetEditEnd, () => commandService.beforeCommandExecuted((commandInfo) => { if (commandInfo.id !== _univerjs_sheets_ui.SetCellEditVisibleOperation.id) return; const target = this.getActiveSheet(); if (!target) return; const { workbook, worksheet } = target; const editorBridgeService = injector.get(_univerjs_sheets_ui.IEditorBridgeService); const univerInstanceService = injector.get(_univerjs_core.IUniverInstanceService); const { visible, keycode, eventType } = commandInfo.params; const loc = editorBridgeService.getEditLocation(); if (visible) return; const eventParams = { row: loc.row, column: loc.column, eventType, keycode, workbook, worksheet, isZenEditor: false, value: _univerjs_core.RichTextValue.create(univerInstanceService.getUnit(_univerjs_core.DOCS_NORMAL_EDITOR_UNIT_ID_KEY).getSnapshot()), isConfirm: keycode !== _univerjs_ui.KeyCode.ESC }; this.fireEvent(this.Event.BeforeSheetEditEnd, eventParams); if (eventParams.cancel) throw new _univerjs_core.CanceledError(); }))); this.disposeWithMe(this.registerEventHandler(this.Event.SheetEditStarted, () => commandService.onCommandExecuted((commandInfo) => { if (commandInfo.id !== _univerjs_sheets_ui.SetCellEditVisibleOperation.id) return; const target = this.getCommandSheetTarget(commandInfo); if (!target) return; const { workbook, worksheet } = target; const editorBridgeService = injector.get(_univerjs_sheets_ui.IEditorBridgeService); const { visible, keycode, eventType } = commandInfo.params; const loc = editorBridgeService.getEditLocation(); if (!visible) return; const eventParams = { row: loc.row, column: loc.column, eventType, keycode, workbook, worksheet, isZenEditor: false }; this.fireEvent(this.Event.SheetEditStarted, eventParams); }))); this.disposeWithMe(this.registerEventHandler(this.Event.SheetEditEnded, () => commandService.onCommandExecuted((commandInfo) => { if (commandInfo.id !== _univerjs_sheets_ui.SetCellEditVisibleOperation.id) return; const target = this.getCommandSheetTarget(commandInfo); if (!target) return; const { workbook, worksheet } = target; const editorBridgeService = injector.get(_univerjs_sheets_ui.IEditorBridgeService); const { visible, keycode, eventType } = commandInfo.params; const loc = editorBridgeService.getEditLocation(); if (visible) return; const eventParams = { row: loc.row, column: loc.column, eventType, keycode, workbook, worksheet, isZenEditor: false, isConfirm: keycode !== _univerjs_ui.KeyCode.ESC }; this.fireEvent(this.Event.SheetEditEnded, eventParams); }))); this.disposeWithMe(this.registerEventHandler(this.Event.SheetEditChanging, () => commandService.onCommandExecuted((commandInfo) => { if (commandInfo.id !== _univerjs_docs.RichTextEditingMutation.id) return; const target = this.getActiveSheet(); if (!target) return; const { workbook, worksheet } = target; const editorBridgeService = injector.get(_univerjs_sheets_ui.IEditorBridgeService); const univerInstanceService = injector.get(_univerjs_core.IUniverInstanceService); const params = commandInfo.params; if (!editorBridgeService.isVisible().visible) return; const { unitId } = params; if (unitId === _univerjs_core.DOCS_NORMAL_EDITOR_UNIT_ID_KEY) { const { row, column } = editorBridgeService.getEditLocation(); const eventParams = { workbook, worksheet, row, column, value: _univerjs_core.RichTextValue.create(univerInstanceService.getUnit(_univerjs_core.DOCS_NORMAL_EDITOR_UNIT_ID_KEY).getSnapshot()), isZenEditor: false }; this.fireEvent(this.Event.SheetEditChanging, eventParams); } }))); this.disposeWithMe(this.registerEventHandler(this.Event.BeforeSheetZoomChange, () => commandService.beforeCommandExecuted((commandInfo) => { if (commandInfo.id !== _univerjs_sheets_ui.SetZoomRatioCommand.id) return; const target = this.getCommandSheetTarget(commandInfo); if (!target) return; const { workbook, worksheet } = target; const eventParams = { zoom: commandInfo.params.zoomRatio, workbook, worksheet }; this.fireEvent(this.Event.BeforeSheetZoomChange, eventParams); if (eventParams.cancel) throw new _univerjs_core.CanceledError(); }))); this.disposeWithMe(this.registerEventHandler(this.Event.SheetZoomChanged, () => commandService.onCommandExecuted((commandInfo) => { if (commandInfo.id !== _univerjs_sheets_ui.SetZoomRatioCommand.id) return; const target = this.getCommandSheetTarget(commandInfo); if (!target) return; const { workbook, worksheet } = target; const eventParams = { zoom: worksheet.getZoom(), workbook, worksheet }; this.fireEvent(this.Event.SheetZoomChanged, eventParams); }))); } _initObserverListener(injector) { const renderManagerService = injector.get(_univerjs_engine_render.IRenderManagerService); const lifeCycleService = injector.get(_univerjs_core.LifecycleService); const lifecycle$Disposable = new _univerjs_core.DisposableCollection(); this.disposeWithMe(lifeCycleService.lifecycle$.subscribe((lifecycle) => { if (lifecycle !== _univerjs_core.LifecycleStages.Rendered) return; const hoverManagerService = injector.get(_univerjs_sheets_ui.HoverManagerService); const dragManagerService = injector.get(_univerjs_sheets_ui.DragManagerService); if (!hoverManagerService) return; lifecycle$Disposable.dispose(); lifecycle$Disposable.add(this.registerEventHandler(this.Event.CellClicked, () => { var _hoverManagerService$; return (_hoverManagerService$ = hoverManagerService.currentClickedCell$) === null || _hoverManagerService$ === void 0 ? void 0 : _hoverManagerService$.pipe((0, rxjs.filter)((cell) => !!cell)).subscribe((cell) => { const baseParams = this.getSheetTarget(cell.location.unitId, cell.location.subUnitId); if (!baseParams) return; const eventParams = { ...baseParams, ...cell, row: cell.location.row, column: cell.location.col }; this.fireEvent(this.Event.CellClicked, eventParams); }); })); lifecycle$Disposable.add(this.registerEventHandler(this.Event.CellHover, () => { var _hoverManagerService$2; return (_hoverManagerService$2 = hoverManagerService.currentRichText$) === null || _hoverManagerService$2 === void 0 ? void 0 : _hoverManagerService$2.pipe((0, rxjs.filter)((cell) => !!cell)).subscribe((cell) => { const baseParams = this.getSheetTarget(cell.unitId, cell.subUnitId); if (!baseParams) return; const eventParams = { ...baseParams, ...cell, row: cell.row, column: cell.col }; this.fireEvent(this.Event.CellHover, eventParams); }); })); lifecycle$Disposable.add(this.registerEventHandler(this.Event.CellPointerDown, () => { var _hoverManagerService$3; return (_hoverManagerService$3 = hoverManagerService.currentPointerDownCell$) === null || _hoverManagerService$3 === void 0 ? void 0 : _hoverManagerService$3.pipe((0, rxjs.filter)((cell) => !!cell)).subscribe((cell) => { const baseParams = this.getSheetTarget(cell.unitId, cell.subUnitId); if (!baseParams) return; const eventParams = { ...baseParams, ...cell, row: cell.row, column: cell.col }; this.fireEvent(this.Event.CellPointerDown, eventParams); }); })); lifecycle$Disposable.add(this.registerEventHandler(this.Event.CellPointerUp, () => { var _hoverManagerService$4; return (_hoverManagerService$4 = hoverManagerService.currentPointerUpCell$) === null || _hoverManagerService$4 === void 0 ? void 0 : _hoverManagerService$4.pipe((0, rxjs.filter)((cell) => !!cell)).subscribe((cell) => { const baseParams = this.getSheetTarget(cell.unitId, cell.subUnitId); if (!baseParams) return; const eventParams = { ...baseParams, ...cell, row: cell.row, column: cell.col }; this.fireEvent(this.Event.CellPointerUp, eventParams); }); })); lifecycle$Disposable.add(this.registerEventHandler(this.Event.CellPointerMove, () => { var _hoverManagerService$5; return (_hoverManagerService$5 = hoverManagerService.currentCellPosWithEvent$) === null || _hoverManagerService$5 === void 0 ? void 0 : _hoverManagerService$5.pipe((0, rxjs.filter)((cell) => !!cell)).subscribe((cell) => { const baseParams = this.getSheetTarget(cell.unitId, cell.subUnitId); if (!baseParams) return; const eventParams = { ...baseParams, ...cell, row: cell.row, column: cell.col }; this.fireEvent(this.Event.CellPointerMove, eventParams); }); })); lifecycle$Disposable.add(this.registerEventHandler(this.Event.DragOver, () => { var _dragManagerService$c; return (_dragManagerService$c = dragManagerService.currentCell$) === null || _dragManagerService$c === void 0 ? void 0 : _dragManagerService$c.pipe((0, rxjs.filter)((cell) => !!cell)).subscribe((cell) => { const baseParams = this.getSheetTarget(cell.location.unitId, cell.location.subUnitId); if (!baseParams) return; const eventParams = { ...baseParams, ...cell, row: cell.location.row, column: cell.location.col }; this.fireEvent(this.Event.DragOver, eventParams); }); })); lifecycle$Disposable.add(this.registerEventHandler(this.Event.Drop, () => { var _dragManagerService$e; return (_dragManagerService$e = dragManagerService.endCell$) === null || _dragManagerService$e === void 0 ? void 0 : _dragManagerService$e.pipe((0, rxjs.filter)((cell) => !!cell)).subscribe((cell) => { const baseParams = this.getSheetTarget(cell.location.unitId, cell.location.subUnitId); if (!baseParams) return; const eventParams = { ...baseParams, ...cell, row: cell.location.row, column: cell.location.col }; this.fireEvent(this.Event.Drop, eventParams); }); })); lifecycle$Disposable.add(this.registerEventHandler(this.Event.RowHeaderClick, () => { var _hoverManagerService$6; return (_hoverManagerService$6 = hoverManagerService.currentRowHeaderClick$) === null || _hoverManagerService$6 === void 0 ? void 0 : _hoverManagerService$6.pipe((0, rxjs.filter)((header) => !!header)).subscribe((header) => { const baseParams = this.getSheetTarget(header.unitId, header.subUnitId); if (!baseParams) return; const eventParams = { ...baseParams, row: header.index }; this.fireEvent(this.Event.RowHeaderClick, eventParams); }); })); lifecycle$Disposable.add(this.registerEventHandler(this.Event.RowHeaderPointerDown, () => { var _hoverManagerService$7; return (_hoverManagerService$7 = hoverManagerService.currentRowHeaderPointerDown$) === null || _hoverManagerService$7 === void 0 ? void 0 : _hoverManagerService$7.pipe((0, rxjs.filter)((header) => !!header)).subscribe((header) => { const baseParams = this.getSheetTarget(header.unitId, header.subUnitId); if (!baseParams) return; const eventParams = { ...baseParams, row: header.index }; this.fireEvent(this.Event.RowHeaderPointerDown, eventParams); }); })); lifecycle$Disposable.add(this.registerEventHandler(this.Event.RowHeaderPointerUp, () => { var _hoverManagerService$8; return (_hoverManagerService$8 = hoverManagerService.currentRowHeaderPointerUp$) === null || _hoverManagerService$8 === void 0 ? void 0 : _hoverManagerService$8.pipe((0, rxjs.filter)((header) => !!header)).subscribe((header) => { const baseParams = this.getSheetTarget(header.unitId, header.subUnitId); if (!baseParams) return; const eventParams = { ...baseParams, row: header.index }; this.fireEvent(this.Event.RowHeaderPointerUp, eventParams); }); })); lifecycle$Disposable.add(this.registerEventHandler(this.Event.RowHeaderHover, () => { var _hoverManagerService$9; return (_hoverManagerService$9 = hoverManagerService.currentHoveredRowHeader$) === null || _hoverManagerService$9 === void 0 ? void 0 : _hoverManagerService$9.pipe((0, rxjs.filter)((header) => !!header)).subscribe((header) => { const baseParams = this.getSheetTarget(header.unitId, header.subUnitId); if (!baseParams) return; const eventParams = { ...baseParams, row: header.index }; this.fireEvent(this.Event.RowHeaderHover, eventParams); }); })); lifecycle$Disposable.add(this.registerEventHandler(this.Event.ColumnHeaderClick, () => { var _hoverManagerService$10; return (_hoverManagerService$10 = hoverManagerService.currentColHeaderClick$) === null || _hoverManagerService$10 === void 0 ? void 0 : _hoverManagerService$10.pipe((0, rxjs.filter)((header) => !!header)).subscribe((header) => { const baseParams = this.getSheetTarget(header.unitId, header.subUnitId); if (!baseParams) return; const eventParams = { ...baseParams, column: header.index }; this.fireEvent(this.Event.ColumnHeaderClick, eventParams); }); })); lifecycle$Disposable.add(this.registerEventHandler(this.Event.ColumnHeaderPointerDown, () => { var _hoverManagerService$11; return (_hoverManagerService$11 = hoverManagerService.currentColHeaderPointerDown$) === null || _hoverManagerService$11 === void 0 ? void 0 : _hoverManagerService$11.pipe((0, rxjs.filter)((header) => !!header)).subscribe((header) => { const baseParams = this.getSheetTarget(header.unitId, header.subUnitId); if (!baseParams) return; const eventParams = { ...baseParams, column: header.index }; this.fireEvent(this.Event.ColumnHeaderPointerDown, eventParams); }); })); lifecycle$Disposable.add(this.registerEventHandler(this.Event.ColumnHeaderPointerUp, () => { var _hoverManagerService$12; return (_hoverManagerService$12 = hoverManagerService.currentColHeaderPointerUp$) === null || _hoverManagerService$12 === void 0 ? void 0 : _hoverManagerService$12.pipe((0, rxjs.filter)((header) => !!header)).subscribe((header) => { const baseParams = this.getSheetTarget(header.unitId, header.subUnitId); if (!baseParams) return; const eventParams = { ...baseParams, column: header.index }; this.fireEvent(this.Event.ColumnHeaderPointerUp, eventParams); }); })); lifecycle$Disposable.add(this.registerEventHandler(this.Event.ColumnHeaderHover, () => { var _hoverManagerService$13; return (_hoverManagerService$13 = hoverManagerService.currentHoveredColHeader$) === null || _hoverManagerService$13 === void 0 ? void 0 : _hoverManagerService$13.pipe((0, rxjs.filter)((header) => !!header)).subscribe((header) => { const baseParams = this.getSheetTarget(header.unitId, header.subUnitId); if (!baseParams) return; const eventParams = { ...baseParams, column: header.index }; this.fireEvent(this.Event.ColumnHeaderHover, eventParams); }); })); this.disposeWithMe(lifecycle$Disposable); })); let sheetRenderUnit; const combined$ = (0, rxjs.combineLatest)([renderManagerService.created$, lifeCycleService.lifecycle$]); const combined$Disposable = new _univerjs_core.DisposableCollection(); this.disposeWithMe(combined$.subscribe(([created, lifecycle]) => { if (created.type === _univerjs_core.UniverInstanceType.UNIVER_SHEET) sheetRenderUnit = created; if (lifecycle <= _univerjs_core.LifecycleStages.Rendered) return; if (!sheetRenderUnit) return; const workbook = this.getWorkbook(sheetRenderUnit.unitId); if (!workbook) return; combined$Disposable.dispose(); const scrollManagerService = sheetRenderUnit.with(_univerjs_sheets_ui.SheetScrollManagerService); const selectionService = sheetRenderUnit.with(_univerjs_sheets.SheetsSelectionsService); combined$Disposable.add(this.registerEventHandler(this.Event.Scroll, () => scrollManagerService.validViewportScrollInfo$.subscribe((params) => { if (!params) return; const eventParams = { workbook, worksheet: workbook.getActiveSheet(), ...params }; this.fireEvent(this.Event.Scroll, eventParams); }))); combined$Disposable.add(this.registerEventHandler(this.Event.SelectionMoveStart, () => selectionService.selectionMoveStart$.subscribe((selections) => { var _selections$map; const eventParams = { workbook, worksheet: workbook.getActiveSheet(), selections: (_selections$map = selections === null || selections === void 0 ? void 0 : selections.map((s) => s.range)) !== null && _selections$map !== void 0 ? _selections$map : [] }; this.fireEvent(this.Event.SelectionMoveStart, eventParams); }))); combined$Disposable.add(this.registerEventHandler(this.Event.SelectionMoving, () => selectionService.selectionMoving$.subscribe((selections) => { var _selections$map2; const eventParams = { workbook, worksheet: workbook.getActiveSheet(), selections: (_selections$map2 = selections === null || selections === void 0 ? void 0 : selections.map((s) => s.range)) !== null && _selections$map2 !== void 0 ? _selections$map2 : [] }; this.fireEvent(this.Event.SelectionMoving, eventParams); }))); combined$Disposable.add(this.registerEventHandler(this.Event.SelectionMoveEnd, () => selectionService.selectionMoveEnd$.subscribe((selections) => { var _selections$map3; const eventParams = { workbook, worksheet: workbook.getActiveSheet(), selections: (_selections$map3 = selections === null || selections === void 0 ? void 0 : selections.map((s) => s.range)) !== null && _selections$map3 !== void 0 ? _selections$map3 : [] }; this.fireEvent(this.Event.SelectionMoveEnd, eventParams); }))); combined$Disposable.add(this.registerEventHandler(this.Event.SelectionChanged, () => selectionService.selectionChanged$.subscribe((selections) => { var _selections$map4; const eventParams = { workbook, worksheet: workbook.getActiveSheet(), selections: (_selections$map4 = selections === null || selections === void 0 ? void 0 : selections.map((s) => s.range)) !== null && _selections$map4 !== void 0 ? _selections$map4 : [] }; this.fireEvent(this.Event.SelectionChanged, eventParams); }))); sheetRenderUnit = null; this.disposeWithMe(combined$Disposable); })); } /** * @ignore */ _initialize(injector) { this._initSheetUIEvent(injector); this._initObserverListener(injector); const commandService = injector.get(_univerjs_core.ICommandService); this.disposeWithMe(this.registerEventHandler(this.Event.BeforeClipboardChange, () => commandService.beforeCommandExecuted((commandInfo) => { switch (commandInfo.id) { case _univerjs_ui.CopyCommand.id: case _univerjs_ui.CutCommand.id: this._beforeClipboardChange(); break; } }))); this.disposeWithMe(this.registerEventHandler(this.Event.ClipboardChanged, () => commandService.onCommandExecuted((commandInfo) => { switch (commandInfo.id) { case _univerjs_ui.CopyCommand.id: case _univerjs_ui.CutCommand.id: this._clipboardChanged(); break; } }))); this.disposeWithMe(this.registerEventHandler(this.Event.BeforeClipboardPaste, () => commandService.beforeCommandExecuted((commandInfo) => { switch (commandInfo.id) { case _univerjs_sheets_ui.SheetPasteShortKeyCommand.id: this._beforeClipboardPaste(commandInfo.params); break; case _univerjs_ui.PasteCommand.id: this._beforeClipboardPasteAsync(); break; } }))); this.disposeWithMe(this.registerEventHandler(this.Event.ClipboardPasted, () => commandService.onCommandExecuted((commandInfo) => { switch (commandInfo.id) { case _univerjs_sheets_ui.SheetPasteShortKeyCommand.id: this._clipboardPaste(commandInfo.params); break; case _univerjs_ui.PasteCommand.id: this._clipboardPasteAsync(); break; } }))); this.disposeWithMe(this.registerEventHandler(this.Event.SheetSkeletonChanged, () => commandService.onCommandExecuted((commandInfo) => { if (_univerjs_sheets.COMMAND_LISTENER_SKELETON_CHANGE.indexOf(commandInfo.id) > -1) { const sheet = this.getActiveSheet(); if (!sheet) return; const ranges = (0, _univerjs_sheets.getSkeletonChangedEffectedRange)(commandInfo, sheet.worksheet.getMaxColumns()).map((range) => { var _this$getWorkbook; return (_this$getWorkbook = this.getWorkbook(range.unitId)) === null || _this$getWorkbook === void 0 || (_this$getWorkbook = _this$getWorkbook.getSheetBySheetId(range.subUnitId)) === null || _this$getWorkbook === void 0 ? void 0 : _this$getWorkbook.getRange(range.range); }).filter(Boolean); if (!ranges.length) return; const eventParams = { workbook: sheet.workbook, worksheet: sheet.worksheet, payload: commandInfo, skeleton: sheet.worksheet.getSkeleton(), effectedRanges: ranges }; this.fireEvent(this.Event.SheetSkeletonChanged, eventParams); } }))); } _generateClipboardCopyParam() { const workbook = this.getActiveWorkbook(); const worksheet = workbook === null || workbook === void 0 ? void 0 : workbook.getActiveSheet(); const range = workbook === null || workbook === void 0 ? void 0 : workbook.getActiveRange(); if (!workbook || !worksheet || !range) return; const content = this._injector.get(_univerjs_sheets_ui.ISheetClipboardService).generateCopyContent(workbook.getId(), worksheet.getSheetId(), range.getRange()); if (!content) return; const { html, plain } = content; return { workbook, worksheet, text: plain, html, fromSheet: worksheet, fromRange: range }; } _beforeClipboardChange() { const eventParams = this._generateClipboardCopyParam(); if (!eventParams) return; this.fireEvent(this.Event.BeforeClipboardChange, eventParams); if (eventParams.cancel) throw new _univerjs_core.CanceledError(); } _clipboardChanged() { const eventParams = this._generateClipboardCopyParam(); if (!eventParams) return; this.fireEvent(this.Event.ClipboardChanged, eventParams); } _generateClipboardPasteParam(params) { if (!params) return; const { htmlContent, textContent } = params; const workbook = this.getActiveWorkbook(); const worksheet = workbook === null || workbook === void 0 ? void 0 : workbook.getActiveSheet(); if (!workbook || !worksheet) return; return { workbook, worksheet, text: textContent, html: htmlContent }; } async _generateClipboardPasteParamAsync() { const workbook = this.getActiveWorkbook(); const worksheet = workbook === null || workbook === void 0 ? void 0 : workbook.getActiveSheet(); if (!workbook || !worksheet) return; const item = (await this._injector.get(_univerjs_ui.IClipboardInterfaceService).read())[0]; let eventParams; if (item) { const types = item.types; eventParams = { workbook, worksheet, text: types.indexOf(_univerjs_ui.PLAIN_TEXT_CLIPBOARD_MIME_TYPE) !== -1 ? await item.getType(_univerjs_ui.PLAIN_TEXT_CLIPBOARD_MIME_TYPE).then((blob) => blob && blob.text()) : "", html: types.indexOf(_univerjs_ui.HTML_CLIPBOARD_MIME_TYPE) !== -1 ? await item.getType(_univerjs_ui.HTML_CLIPBOARD_MIME_TYPE).then((blob) => blob && blob.text()) : "" }; } return eventParams; } _beforeClipboardPaste(params) { const eventParams = this._generateClipboardPasteParam(params); if (!eventParams) return; this.fireEvent(this.Event.BeforeClipboardPaste, eventParams); if (eventParams.cancel) throw new _univerjs_core.CanceledError(); } _clipboardPaste(params) { const eventParams = this._generateClipboardPasteParam(params); if (!eventParams) return; this.fireEvent(this.Event.ClipboardPasted, eventParams); if (eventParams.cancel) throw new _univerjs_core.CanceledError(); } async _beforeClipboardPasteAsync() { if (!(0, _univerjs_ui.supportClipboardAPI)()) { this._injector.get(_univerjs_core.ILogService).warn("[Facade]: The navigator object only supports the browser environment"); return; } const eventParams = await this._generateClipboardPasteParamAsync(); if (!eventParams) return; this.fireEvent(this.Event.BeforeClipboardPaste, eventParams); if (eventParams.cancel) throw new _univerjs_core.CanceledError(); } async _clipboardPasteAsync() { if (!(0, _univerjs_ui.supportClipboardAPI)()) { this._injector.get(_univerjs_core.ILogService).warn("[Facade]: The navigator object only supports the browser environment"); return; } const eventParams = await this._generateClipboardPasteParamAsync(); if (!eventParams) return; this.fireEvent(this.Event.ClipboardPasted, eventParams); if (eventParams.cancel) throw new _univerjs_core.CanceledError(); } customizeColumnHeader(cfg) { var _cfg$headerStyle; const wb = this.getActiveWorkbook(); if (!wb) { console.error("WorkBook not exist"); return; } const unitId = wb === null || wb === void 0 ? void 0 : wb.getId(); const renderManagerService = this._injector.get(_univerjs_engine_render.IRenderManagerService); const activeSheet = wb.getActiveSheet(); const subUnitId = activeSheet.getSheetId(); const render = renderManagerService.getRenderById(unitId); if (render && ((_cfg$headerStyle = cfg.headerStyle) === null || _cfg$headerStyle === void 0 ? void 0 : _cfg$headerStyle.size)) { var _cfg$headerStyle2; render.with(_univerjs_sheets_ui.SheetSkeletonManagerService).setColumnHeaderSize(render, subUnitId, (_cfg$headerStyle2 = cfg.headerStyle) === null || _cfg$headerStyle2 === void 0 ? void 0 : _cfg$headerStyle2.size); activeSheet === null || activeSheet === void 0 || activeSheet.refreshCanvas(); } this._getSheetRenderComponent(unitId, _univerjs_sheets_ui.SHEET_VIEW_KEY.COLUMN).setCustomHeader(cfg); activeSheet === null || activeSheet === void 0 || activeSheet.refreshCanvas(); } customizeRowHeader(cfg) { const wb = this.getActiveWorkbook(); if (!wb) { console.error("WorkBook not exist"); return; } const unitId = wb === null || wb === void 0 ? void 0 : wb.getId(); this._getSheetRenderComponent(unitId, _univerjs_sheets_ui.SHEET_VIEW_KEY.ROW).setCustomHeader(cfg); } registerSheetRowHeaderExtension(unitId, ...extensions) { const sheetComponent = this._getSheetRenderComponent(unitId, _univerjs_sheets_ui.SHEET_VIEW_KEY.ROW); const registerDisposable = sheetComponent.register(...extensions); return (0, _univerjs_core.toDisposable)(() => { registerDisposable.dispose(); sheetComponent.makeDirty(true); }); } registerSheetColumnHeaderExtension(unitId, ...extensions) { const sheetComponent = this._getSheetRenderComponent(unitId, _univerjs_sheets_ui.SHEET_VIEW_KEY.COLUMN); const registerDisposable = sheetComponent.register(...extensions); return (0, _univerjs_core.toDisposable)(() => { registerDisposable.dispose(); sheetComponent.makeDirty(true); }); } registerSheetMainExtension(unitId, ...extensions) { const sheetComponent = this._getSheetRenderComponent(unitId, _univerjs_sheets_ui.SHEET_VIEW_KEY.MAIN); const registerDisposable = sheetComponent.register(...extensions); return (0, _univerjs_core.toDisposable)(() => { registerDisposable.dispose(); sheetComponent.makeDirty(true); }); } /** * Get sheet render component from render by unitId and view key. * @private * @param {string} unitId The unit id of the spreadsheet. * @param {SHEET_VIEW_KEY} viewKey The view key of the spreadsheet. * @returns {Nullable<RenderComponentType>} The render component. */ _getSheetRenderComponent(unitId, viewKey) { const render = this._injector.get(_univerjs_engine_render.IRenderManagerService).getRenderById(unitId); if (!render) throw new Error(`Render Unit with unitId ${unitId} not found`); const { components } = render; const renderComponent = components.get(viewKey); if (!renderComponent) throw new Error("Render component not found"); return renderComponent; } /** * Get sheet hooks. * @returns {FSheetHooks} FSheetHooks instance */ getSheetHooks() { return this._injector.createInstance(_univerjs_sheets_facade.FSheetHooks); } pasteIntoSheet(htmlContent, textContent, files) { return this._commandService.executeCommand(_univerjs_sheets_ui.SheetPasteShortKeyCommand.id, { htmlContent, textContent, files }); } setProtectedRangeShadowStrategy(strategy) { this._injector.get(_univerjs_sheets_ui.SheetPermissionRenderManagerService).setProtectedRangeShadowStrategy(strategy); } getProtectedRangeShadowStrategy() { return this._injector.get(_univerjs_sheets_ui.SheetPermissionRenderManagerService).getProtectedRangeShadowStrategy(); } getProtectedRangeShadowStrategy$() { return this._injector.get(_univerjs_sheets_ui.SheetPermissionRenderManagerService).getProtectedRangeShadowStrategy$(); } setPermissionDialogVisible(visible) { this._injector.get(_univerjs_core.IPermissionService).setShowComponents(visible); } }; _univerjs_core_facade.FUniver.extend(FUniverSheetsUIMixin); //#endregion //#region src/facade/f-workbook.ts var FWorkbookSheetsUIMixin = class extends _univerjs_sheets_facade.FWorkbook { openSiderbar(params) { this._logDeprecation("openSiderbar"); return this._injector.get(_univerjs_ui.ISidebarService).open(params); } openDialog(dialog) { this._logDeprecation("openDialog"); const disposable = this._injector.get(_univerjs_ui.IDialogService).open({ ...dialog, onClose: () => { disposable.dispose(); } }); return disposable; } customizeColumnHeader(cfg) { const unitId = this._workbook.getUnitId(); this._getSheetRenderComponent(unitId, _univerjs_sheets_ui.SHEET_VIEW_KEY.COLUMN).setCustomHeader(cfg); } customizeRowHeader(cfg) { const unitId = this._workbook.getUnitId(); this._getSheetRenderComponent(unitId, _univerjs_sheets_ui.SHEET_VIEW_KEY.ROW).setCustomHeader(cfg); } /** * Get sheet render component from render by unitId and view key. * @private * @param {string} unitId The unit id of the spreadsheet. * @param {SHEET_VIEW_KEY} viewKey The view key of the spreadsheet. * @returns {Nullable<RenderComponentType>} The render component. */ _getSheetRenderComponent(unitId, viewKey) { const render = this._injector.get(_univerjs_engine_render.IRenderManagerService).getRenderById(unitId); if (!render) throw new Error(`Render Unit with unitId ${unitId} not found`); const { components } = render; const renderComponent = components.get(viewKey); if (!renderComponent) throw new Error("Render component not found"); return renderComponent; } _logDeprecation(name) { this._injector.get(_univerjs_core.ILogService).warn("[FWorkbook]", `${name} is deprecated. Please use the function of the same name on "FUniver".`); } onCellClick(callback) { return (0, _univerjs_core.toDisposable)(this._injector.get(_univerjs_sheets_ui.HoverManagerService).currentClickedCell$.pipe((0, rxjs.filter)((cell) => !!cell)).subscribe((cell) => { callback(cell); })); } onCellHover(callback) { return (0, _univerjs_core.toDisposable)(this._injector.get(_univerjs_sheets_ui.HoverManagerService).currentRichText$.pipe((0, rxjs.filter)((cell) => !!cell)).subscribe(callback)); } onCellPointerDown(callback) { return (0, _univerjs_core.toDisposable)(this._injector.get(_univerjs_sheets_ui.HoverManagerService).currentPointerDownCell$.subscribe(callback)); } onCellPointerUp(callback) { return (0, _univerjs_core.toDisposable)(this._injector.get(_univerjs_sheets_ui.HoverManagerService).currentPointerUpCell$.subscribe(callback)); } onCellPointerMove(callback) { return (0, _univerjs_core.toDisposable)(this._injector.get(_univerjs_sheets_ui.HoverManagerService).currentCellPosWithEvent$.pipe((0, rxjs.filter)((cell) => !!cell)).subscribe((cell) => { callback(cell, cell.event); })); } onDragOver(callback) { return (0, _univerjs_core.toDisposable)(this._injector.get(_univerjs_sheets_ui.DragManagerService).currentCell$.pipe((0, rxjs.filter)((cell) => !!cell)).subscribe((cell) => { callback(cell); })); } onDrop(callback) { return (0, _univerjs_core.toDisposable)(this._injector.get(_univerjs_sheets_ui.DragManagerService).endCell$.pipe((0, rxjs.filter)((cell) => !!cell)).subscribe((cell) => { callback(cell); })); } startEditing() { const commandService = this._injector.get(_univerjs_core.ICommandService); if (this._injector.get(_univerjs_sheets_ui.IEditorBridgeService).isVisible().visible) return true; return commandService.syncExecuteCommand(_univerjs_sheets_ui.SetCellEditVisibleOperation.id, { eventType: _univerjs_engine_render.DeviceInputEventType.Dblclick, unitId: this._workbook.getUnitId(), visible: true }); } async endEditing(save) { const commandService = this._injector.get(_univerjs_core.ICommandService); if (this._injector.get(_univerjs_sheets_ui.IEditorBridgeService).isVisible().visible) commandService.syncExecuteCommand(_univerjs_sheets_ui.SetCellEditVisibleOperation.id, { eventType: _univerjs_engine_render.DeviceInputEventType.Keyboard, keycode: save ? _univerjs_ui.KeyCode.ENTER : _univerjs_ui.KeyCode.ESC, visible: false, unitId: this._workbook.getUnitId() }); await (0, _univerjs_core.awaitTime)(0); return true; } endEditingAsync(save = true) { return this.endEditing(save); } abortEditingAsync() { return this.endEditingAsync(false); } isCellEditing() { return this._injector.get(_univerjs_sheets_ui.IEditorBridgeService).isVisible().visible; } /** * Get scroll state of specified sheet. * @param {string} sheetId - sheet id * @returns {IScrollState} scroll state * @example * ``` ts * univerAPI.getActiveWorkbook().getScrollStateBySheetId($sheetId) * ``` */ getScrollStateBySheetId(sheetId) { const unitId = this._workbook.getUnitId(); const render = this._injector.get(_univerjs_engine_render.IRenderManagerService).getRenderById(unitId); if (!render) return null; return render.with(_univerjs_sheets_ui.SheetScrollManagerService).getScrollStateByParam({ unitId, sheetId }); } disableSelection() { const unitId = this._workbook.getUnitId(); const render = this._injector.get(_univerjs_engine_render.IRenderManagerService).getRenderById(unitId); if (render) render.with(_univerjs_sheets_ui.ISheetSelectionRenderService).disableSelection(); return this; } enableSelection() { const unitId = this._workbook.getUnitId(); const render = this._injector.get(_univerjs_engine_render.IRenderManagerService).getRenderById(unitId); if (render) render.with(_univerjs_sheets_ui.ISheetSelectionRenderService).enableSelection(); return this; } transparentSelection() { const unitId = this._workbook.getUnitId(); const render = this._injector.get(_univerjs_engine_render.IRenderManagerService).getRenderById(unitId); if (render) render.with(_univerjs_sheets_ui.ISheetSelectionRenderService).transparentSelection(); return this; } showSelection() { const unitId = this._workbook.getUnitId(); const render = this._injector.get(_univerjs_engine_render.IRenderManagerService).getRenderById(unitId); if (render) render.with(_univerjs_sheets_ui.ISheetSelectionRenderService).showSelection(); return this; } }; _univerjs_sheets_facade.FWorkbook.extend(FWorkbookSheetsUIMixin); //#endregion //#region src/facade/f-worksheet.ts var FWorksheetUIMixin = class extends _univerjs_sheets_facade.FWorksheet { refreshCanvas() { const renderManagerService = this._injector.get(_univerjs_engine_render.IRenderManagerService); const unitId = this._fWorkbook.id; const render = renderManagerService.getRenderById(unitId); if (!render) throw new Error(`Render Unit with unitId ${unitId} not found`); render.with(_univerjs_sheets_ui.SheetSkeletonManagerService).reCalculate(); render.components.forEach((component) => { var _component$makeDirty; (_component$makeDirty = component.makeDirty) === null || _component$makeDirty === void 0 || _component$makeDirty.call(component); }); return this; } highlightRanges(ranges, style, primary) { const markSelectionService = this._injector.get(_univerjs_sheets_ui.IMarkSelectionService); const ids = []; for (const range of ranges) { const iRange = range.getRange(); const id = markSelectionService.addShapeWithNoFresh({ range: iRange, style, primary }); if (id) ids.push(id); } markSelectionService.refreshShapes(); if (ids.length === 0) throw new Error("Failed to highlight current range"); return (0, _univerjs_core.toDisposable)(() => { ids.forEach((id) => { markSelectionService.removeShape(id); }); }); } zoom(zoomRatio) { const commandService = this._injector.get(_univerjs_core.ICommandService); const _zoomRatio = Math.min(Math.max(zoomRatio, .1), 4); commandService.executeCommand(_univerjs_sheets_ui.SetZoomRatioCommand.id, { unitId: this._workbook.getUnitId(), subUnitId: this._worksheet.getSheetId(), zoomRatio: _zoomRatio }); return this; } getZoom() { return this._worksheet.getZoomRatio(); } getVisibleRange() { const unitId = this._workbook.getUnitId(); const render = this._injector.get(_univerjs_engine_render.IRenderManagerService).getRenderById(unitId); if (!render) return null; const sk = render.with(_univerjs_sheets_ui.SheetSkeletonManagerService).getCurrentSkeleton(); if (!sk) return null; return sk.getVisibleRangeByViewport(_univerjs_engine_render.SHEET_VIEWPORT_KEY.VIEW_MAIN); } getVisibleRangesOfAllViewports() { const unitId = this._workbook.getUnitId(); const render = this._injector.get(_univerjs_engine_render.IRenderManagerService).getRenderById(unitId); if (!render) return null; const sk = render.with(_univerjs_sheets_ui.SheetSkeletonManagerService).getCurrentSkeleton(); if (!sk) return null; return sk.getVisibleRanges(); } scrollToCell(row, column, duration) { const unitId = this._workbook.getUnitId(); const render = this._injector.get(_univerjs_engine_render.IRenderManagerService).getRenderById(unitId); if (render) (render === null || render === void 0 ? void 0 : render.with(_univerjs_sheets_ui.SheetsScrollRenderController)).scrollToCell(row, column, duration); return this; } getScrollState() { const emptyScrollState = { offsetX: 0, offsetY: 0, sheetViewStartColumn: 0, sheetViewStartRow: 0 }; const unitId = this._workbook.getUnitId(); const sheetId = this._worksheet.getSheetId(); const render = this._injector.get(_univerjs_engine_render.IRenderManagerService).getRenderById(unitId); if (!render) return emptyScrollState; return render.with(_univerjs_sheets_ui.SheetScrollManagerService).getScrollStateByParam({ unitId, sheetId }) || emptyScrollState; } onScroll(callback) { var _renderManagerService; const unitId = this._workbook.getUnitId(); const scrollManagerService = (_renderManagerService = this._injector.get(_univerjs_engine_render.IRenderManagerService).getRenderById(unitId)) === null || _renderManagerService === void 0 ? void 0 : _renderManagerService.with(_univerjs_sheets_ui.SheetScrollManagerService); if (scrollManagerService) return (0, _univerjs_core.toDisposable)(scrollManagerService.validViewportScrollInfo$.subscribe((params) => { callback(params); })); return (0, _univerjs_core.toDisposable)(() => {}); } getSkeleton() { var _this$_injector$get$g; const service = (_this$_injector$get$g = this._injector.get(_univerjs_engine_render.IRenderManagerService).getRenderById(this._workbook.getUnitId())) === null || _this$_injector$get$g === void 0 ? void 0 : _this$_injector$get$g.with(_univerjs_sheets_ui.SheetSkeletonManagerService); return service === null || service === void 0 ? void 0 : service.getSkeleton(this._worksheet.getSheetId()); } autoResizeColumn(columnPosition) { return this.autoResizeColumns(columnPosition, 1); } autoResizeColumns(startColumn, numColumns) { const unitId = this._workbook.getUnitId(); const subUnitId = this._worksheet.getSheetId(); const ranges = [{ startColumn, endColumn: startColumn + numColumns - 1, startRow: 0, endRow: this._worksheet.getRowCount() - 1 }]; this._commandService.syncExecuteCommand(_univerjs_sheets_ui.SetWorksheetColAutoWidthCommand.id, { unitId, subUnitId, ranges }); return this; } setColumnAutoWidth(columnPosition, numColumn) { return this.autoResizeColumns(columnPosition, numColumn); } autoResizeRows(startRow, numRows) { const unitId = this._workbook.getUnitId(); const subUnitId = this._worksheet.getSheetId(); const ranges = [{ startRow, endRow: startRow + numRows - 1, startColumn: 0, endColumn: this._worksheet.getColumnCount() - 1 }]; this._commandService.syncExecuteCommand(_univerjs_sheets.SetWorksheetRowIsAutoHeightCommand.id, { unitId, subUnitId, ranges }); return this; } customizeColumnHeader(cfg) { var _cfg$headerStyle; const unitId = this._workbook.getUnitId(); const subUnitId = this._worksheet.getSheetId(); const render = this._injector.get(_univerjs_engine_render.IRenderManagerService).getRenderById(unitId); if (render && ((_cfg$headerStyle = cfg.headerStyle) === null || _cfg$headerStyle === void 0 ? void 0 : _cfg$headerStyle.size)) { var _cfg$headerStyle2; render.with(_univerjs_sheets_ui.SheetSkeletonManagerService).setColumnHeaderSize(render, subUnitId, (_cfg$headerStyle2 = cfg.headerStyle) === null || _cfg$headerStyle2 === void 0 ? void 0 : _cfg$headerStyle2.size); } this._getSheetRenderComponent(unitId, _univerjs_sheets_ui.SHEET_VIEW_KEY.COLUMN).setCustomHeader(cfg, subUnitId); } customizeRowHeader(cfg) { var _cfg$headerStyle3; const unitId = this._workbook.getUnitId(); const subUnitId = this._worksheet.getSheetId(); const render = this._injector.get(_univerjs_engine_render.IRenderManagerService).getRenderById(unitId); if (render && ((_cfg$headerStyle3 = cfg.headerStyle) === null || _cfg$headerStyle3 === void 0 ? void 0 : _cfg$headerStyle3.size)) { var _cfg$headerStyle4; render.with(_univerjs_sheets_ui.SheetSkeletonManagerService).setRowHeaderSize(render, subUnitId, (_cfg$headerStyle4 = cfg.headerStyle) === null || _cfg$headerStyle4 === void 0 ? void 0 : _cfg$headerStyle4.size); } this._getSheetRenderComponent(unitId, _univerjs_sheets_ui.SHEET_VIEW_KEY.ROW).setCustomHeader(cfg, subUnitId); } setColumnHeaderHeight(height) { const unitId = this._workbook.getUnitId(); const subUnitId = this._worksheet.getSheetId(); this._commandService.executeCommand(_univerjs_sheets_ui.SetColumnHeaderHeightCommand.id, { unitId, subUnitId, size: height }); return this; } setRowHeaderWidth(width) { const unitId = this._workbook.getUnitId(); const subUnitId = this._worksheet.getSheetId(); this._commandService.executeCommand(_univerjs_sheets_ui.SetRowHeaderWidthCommand.id, { unitId, subUnitId, size: width }); return this; } /** * Get sheet render component from render by unitId and view key. * @private * @param {string} unitId The unit id of the spreadsheet. * @param {SHEET_VIEW_KEY} viewKey The view key of the spreadsheet. * @returns {Nullable<RenderComponentType>} The render component. */ _getSheetRenderComponent(unitId, viewKey) { const render = this._injector.get(_univerjs_engine_render.IRenderManagerService).getRenderById(unitId); if (!render) throw new Error(`Render Unit with unitId ${unitId} not found`); const { components } = render; const renderComponent = components.get(viewKey); if (!renderComponent) throw new Error("Render component not found"); return renderComponent; } }; _univerjs_sheets_facade.FWorksheet.extend(FWorksheetUIMixin); //#endregion //#region src/facade/f-workbook-permission.ts /** * Copyright 2023-present DreamNum Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var FWorkbookPermissionSheetsUIMixin = class extends _univerjs_sheets_facade.FWorkbookPermission { setPermissionDialogVisible(visible) { this._permissionService.setShowComponents(visible); } }; _univerjs_sheets_facade.FWorkbookPermission.extend(FWorkbookPermissionSheetsUIMixin); //#endregion //#region src/facade/f-sheet-hooks.ts var FSheetHooksUIMixin = class extends _univerjs_sheets_facade.FSheetHooks { onCellPointerMove(callback) { return (0, _univerjs_core.toDisposable)(this._injector.get(_univerjs_sheets_ui.HoverManagerService).currentPosition$.subscribe(callback)); } onCellPointerOver(callback) { return (0, _univerjs_core.toDisposable)(this._injector.get(_univerjs_sheets_ui.HoverManagerService).currentCell$.subscribe(callback)); } onCellDragOver(callback) { return (0, _univerjs_core.toDisposable)(this._injector.get(_univerjs_sheets_ui.DragManagerService).currentCell$.subscribe(callback)); } onCellDrop(callback) { return (0, _univerjs_core.toDisposable)(this._injector.get(_univerjs_sheets_ui.DragManagerService).endCell$.subscribe(callback)); } onCellRender(customRender, effect = _univerjs_core.InterceptorEffectEnum.Style, priority = _univerjs_sheets.InterceptCellContentPriority.DATA_VALIDATION) { return this._injector.get(_univerjs_sheets.SheetInterceptorService).intercept(_univerjs_sheets.INTERCEPTOR_POINT.CELL_CONTENT, { effect, handler: (cell, pos, next) => { if (!cell) return next(cell); if (!cell.customRender && customRender) cell.customRender = [...customRender]; return next(cell); }, priority }); } onBeforeCellEdit(callback) { return this._injector.get(_univerjs_core.ICommandService).beforeCommandExecuted((command) => { const params = command.params; if (command.id === _univerjs_sheets_ui.SetCellEditVisibleOperation.id && params.visible) callback(params); }); } onAfterCellEdit(callback) { return this._injector.get(_univerjs_core.ICommandService).onCommandExecuted((command) => { const params = command.params; if (command.id === _univerjs_sheets_ui.SetCellEditVisibleOperation.id && !params.visible) callback(params); }); } }; _univerjs_sheets_facade.FSheetHooks.extend(FSheetHooksUIMixin); //#endregion //#region src/facade/f-event.ts var FSheetsUIEventNameMixin = class extends _univerjs_core_facade.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 "CellClicked"; } get CellHover() { return "CellHover"; } get CellPointerDown() { return "CellPointerDown"; } get CellPointerUp() { return "CellPointerUp"; } get CellPointerMove() { return "CellPointerMove"; } get DragOver() { return "DragOver"; } get Drop() { return "Drop"; } get Scroll() { return "Scroll"; } get SelectionMoveStart() { return "SelectionMoveStart"; } get SelectionChanged() { return "SelectionChanged"; } get SelectionMoving() { return "SelectionMoving"; } get SelectionMoveEnd() { return "SelectionMoveEnd"; } get RowHeaderClick() { return "RowHeaderClick"; } get RowHeaderPointerDown() { return "RowHeaderPointerDown"; } get RowHeaderPointerUp() { return "RowHeaderPointerUp"; } get RowHeaderHover() { return "RowHeaderHover"; } get ColumnHeaderClick() { return "ColumnHeaderClick"; } get ColumnHeaderPointerDown() { return "ColumnHeaderPointerDown"; } get ColumnHeaderPointerUp() { return "ColumnHeaderPointerUp"; } get ColumnHeaderHover() { return "ColumnH