@univerjs-pro/slides-table-ui 1.0.0-alpha.1 → 1.0.0-alpha.3

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 (108) hide show
  1. package/README.md +4 -2
  2. package/lib/cjs/index.js +1 -1
  3. package/lib/cjs/locale/ar-SA.js +1 -1
  4. package/lib/cjs/locale/ca-ES.js +1 -1
  5. package/lib/cjs/locale/de-DE.js +1 -1
  6. package/lib/cjs/locale/en-US.js +1 -1
  7. package/lib/cjs/locale/es-ES.js +1 -1
  8. package/lib/cjs/locale/fa-IR.js +1 -1
  9. package/lib/cjs/locale/fr-FR.js +1 -1
  10. package/lib/cjs/locale/id-ID.js +1 -1
  11. package/lib/cjs/locale/it-IT.js +1 -1
  12. package/lib/cjs/locale/ja-JP.js +1 -1
  13. package/lib/cjs/locale/ko-KR.js +1 -1
  14. package/lib/cjs/locale/pl-PL.js +1 -1
  15. package/lib/cjs/locale/pt-BR.js +1 -1
  16. package/lib/cjs/locale/ru-RU.js +1 -1
  17. package/lib/cjs/locale/sk-SK.js +1 -1
  18. package/lib/cjs/locale/vi-VN.js +1 -1
  19. package/lib/cjs/locale/zh-CN.js +1 -1
  20. package/lib/cjs/locale/zh-HK.js +1 -1
  21. package/lib/cjs/locale/zh-TW.js +1 -1
  22. package/lib/es/index.js +1 -1
  23. package/lib/es/locale/ar-SA.js +1 -1
  24. package/lib/es/locale/ca-ES.js +1 -1
  25. package/lib/es/locale/de-DE.js +1 -1
  26. package/lib/es/locale/en-US.js +1 -1
  27. package/lib/es/locale/es-ES.js +1 -1
  28. package/lib/es/locale/fa-IR.js +1 -1
  29. package/lib/es/locale/fr-FR.js +1 -1
  30. package/lib/es/locale/id-ID.js +1 -1
  31. package/lib/es/locale/it-IT.js +1 -1
  32. package/lib/es/locale/ja-JP.js +1 -1
  33. package/lib/es/locale/ko-KR.js +1 -1
  34. package/lib/es/locale/pl-PL.js +1 -1
  35. package/lib/es/locale/pt-BR.js +1 -1
  36. package/lib/es/locale/ru-RU.js +1 -1
  37. package/lib/es/locale/sk-SK.js +1 -1
  38. package/lib/es/locale/vi-VN.js +1 -1
  39. package/lib/es/locale/zh-CN.js +1 -1
  40. package/lib/es/locale/zh-HK.js +1 -1
  41. package/lib/es/locale/zh-TW.js +1 -1
  42. package/lib/index.css +188 -0
  43. package/lib/index.js +1 -1
  44. package/lib/locale/ar-SA.js +1 -1
  45. package/lib/locale/ca-ES.js +1 -1
  46. package/lib/locale/de-DE.js +1 -1
  47. package/lib/locale/en-US.js +1 -1
  48. package/lib/locale/es-ES.js +1 -1
  49. package/lib/locale/fa-IR.js +1 -1
  50. package/lib/locale/fr-FR.js +1 -1
  51. package/lib/locale/id-ID.js +1 -1
  52. package/lib/locale/it-IT.js +1 -1
  53. package/lib/locale/ja-JP.js +1 -1
  54. package/lib/locale/ko-KR.js +1 -1
  55. package/lib/locale/pl-PL.js +1 -1
  56. package/lib/locale/pt-BR.js +1 -1
  57. package/lib/locale/ru-RU.js +1 -1
  58. package/lib/locale/sk-SK.js +1 -1
  59. package/lib/locale/vi-VN.js +1 -1
  60. package/lib/locale/zh-CN.js +1 -1
  61. package/lib/locale/zh-HK.js +1 -1
  62. package/lib/locale/zh-TW.js +1 -1
  63. package/lib/types/commands/operations/table-contextmenu.operation.d.ts +22 -36
  64. package/lib/types/config/config.d.ts +5 -0
  65. package/lib/types/controllers/slide-table-interaction.render-controller.d.ts +9 -4
  66. package/lib/types/index.d.ts +28 -6
  67. package/lib/types/locale/en-US.d.ts +17 -0
  68. package/lib/types/menu/contextmenu.menu.d.ts +0 -3
  69. package/lib/types/plugin.d.ts +4 -2
  70. package/lib/types/render-objects/slide-table-document-render-resources.util.d.ts +42 -0
  71. package/lib/types/render-objects/slide-table-document-text-render.util.d.ts +26 -0
  72. package/lib/types/render-objects/slide-table-object.d.ts +127 -0
  73. package/lib/types/services/slide-table-cell-editor.service.d.ts +50 -0
  74. package/lib/types/services/slide-table-keyboard.service.d.ts +7 -21
  75. package/lib/types/services/table-keyboard.service-base.d.ts +18 -0
  76. package/lib/types/utils/slide-table-clipboard-model.d.ts +7 -0
  77. package/lib/types/utils/slide-table-contextmenu-model.d.ts +69 -0
  78. package/lib/types/utils/slide-table-editor-model.d.ts +78 -0
  79. package/lib/types/utils/slide-table-keyboard-input.d.ts +13 -0
  80. package/lib/types/utils/slide-table-keyboard-model.d.ts +43 -0
  81. package/lib/types/utils/slide-table-object-selection-model.d.ts +7 -0
  82. package/lib/types/utils/slide-table-structural-insert.util.d.ts +15 -0
  83. package/lib/types/utils/slide-table-toolbar-model.d.ts +17 -0
  84. package/lib/types/utils/slide-table-toolbar-shared-model.d.ts +70 -0
  85. package/lib/types/utils/slide-table-toolbar-values.d.ts +33 -0
  86. package/lib/types/views/TableThemeGallery.d.ts +10 -0
  87. package/lib/umd/index.js +1 -1
  88. package/lib/umd/locale/ar-SA.js +1 -1
  89. package/lib/umd/locale/ca-ES.js +1 -1
  90. package/lib/umd/locale/de-DE.js +1 -1
  91. package/lib/umd/locale/en-US.js +1 -1
  92. package/lib/umd/locale/es-ES.js +1 -1
  93. package/lib/umd/locale/fa-IR.js +1 -1
  94. package/lib/umd/locale/fr-FR.js +1 -1
  95. package/lib/umd/locale/id-ID.js +1 -1
  96. package/lib/umd/locale/it-IT.js +1 -1
  97. package/lib/umd/locale/ja-JP.js +1 -1
  98. package/lib/umd/locale/ko-KR.js +1 -1
  99. package/lib/umd/locale/pl-PL.js +1 -1
  100. package/lib/umd/locale/pt-BR.js +1 -1
  101. package/lib/umd/locale/ru-RU.js +1 -1
  102. package/lib/umd/locale/sk-SK.js +1 -1
  103. package/lib/umd/locale/vi-VN.js +1 -1
  104. package/lib/umd/locale/zh-CN.js +1 -1
  105. package/lib/umd/locale/zh-HK.js +1 -1
  106. package/lib/umd/locale/zh-TW.js +1 -1
  107. package/package.json +17 -18
  108. /package/lib/types/{views → utils}/slide-table-hit-test.d.ts +0 -0
@@ -5,7 +5,7 @@ import { ISlideDrawingService } from '@univerjs-pro/slides';
5
5
  import { SlideTableResourceService } from '@univerjs-pro/slides-table';
6
6
  import { IEditorUIService, ISlideDrawingStateService, ISlideTransformerVisibilityService, SlideHitTestService } from '@univerjs-pro/slides-ui';
7
7
  import { ICommandService, IContextService, RxDisposable } from '@univerjs/core';
8
- import { IContextMenuService } from '@univerjs/ui';
8
+ import { IClipboardInterfaceService, IContextMenuService } from '@univerjs/ui';
9
9
  import { SlideTableKeyboardService } from '../services/slide-table-keyboard.service';
10
10
  import { SlideTableSelectionService } from '../services/slide-table-selection.service';
11
11
  export type SlideTableResizeAxis = 'column' | 'row';
@@ -32,6 +32,7 @@ export declare class SlideTableInteractionRenderController extends RxDisposable
32
32
  private readonly _contextService;
33
33
  private readonly _slideDrawingService;
34
34
  private readonly _transformerVisibilityService;
35
+ private readonly _clipboardInterfaceService;
35
36
  private _editorDisposable;
36
37
  private _resizeDragContext;
37
38
  private _rangeDragContext;
@@ -48,17 +49,19 @@ export declare class SlideTableInteractionRenderController extends RxDisposable
48
49
  private _rowColumnMoveState;
49
50
  private _rowColumnMoveTarget;
50
51
  private _headerSelectionDragCleanup;
51
- private _insertTooltipState;
52
52
  private _resizeHoverActive;
53
53
  private _resizeWireScheduled;
54
+ private _structuralInsertHoverObject;
54
55
  private readonly _wiredResizeObjectRefs;
55
- constructor(_renderContext: IRenderContext<UnitModel>, _hitTestService: SlideHitTestService, _tableResourceService: SlideTableResourceService, _tableSelectionService: SlideTableSelectionService, _editorUIService: IEditorUIService, _drawingStateService: ISlideDrawingStateService, _contextMenuService: IContextMenuService, _commandService: ICommandService, _keyboardService: SlideTableKeyboardService, _contextService: IContextService, _slideDrawingService: ISlideDrawingService, _transformerVisibilityService: ISlideTransformerVisibilityService);
56
+ constructor(_renderContext: IRenderContext<UnitModel>, _hitTestService: SlideHitTestService, _tableResourceService: SlideTableResourceService, _tableSelectionService: SlideTableSelectionService, _editorUIService: IEditorUIService, _drawingStateService: ISlideDrawingStateService, _contextMenuService: IContextMenuService, _commandService: ICommandService, _keyboardService: SlideTableKeyboardService, _contextService: IContextService, _slideDrawingService: ISlideDrawingService, _transformerVisibilityService: ISlideTransformerVisibilityService, _clipboardInterfaceService: IClipboardInterfaceService);
56
57
  dispose(): void;
57
58
  private _init;
58
59
  private _syncActiveTableFromDrawingState;
59
60
  private _isLastActiveTableSelected;
60
61
  private _isExternalDrawingSelection;
61
62
  private _resolveSelectedTableDrawing;
63
+ private _resolveInsertDotAtScenePoint;
64
+ private _resolveInsertDotTriggerForObject;
62
65
  private _initPointerDownContextMenu;
63
66
  private _handleActiveTableControlPointerDown;
64
67
  private _handleHitTestPointerDown;
@@ -78,6 +81,7 @@ export declare class SlideTableInteractionRenderController extends RxDisposable
78
81
  private _resolveTableControlHit;
79
82
  private _updateTableControlHover;
80
83
  private _clearTableControlHover;
84
+ private _clearStructuralInsertHoverObject;
81
85
  private _setTableControlHover;
82
86
  private _updateCellHover;
83
87
  private _setTableCellHover;
@@ -93,7 +97,6 @@ export declare class SlideTableInteractionRenderController extends RxDisposable
93
97
  private _getSelectedHeaderRange;
94
98
  private _resolveRowColumnMoveTarget;
95
99
  private _handleStructuralInsertTrigger;
96
- private _getTooltipKeyForTrigger;
97
100
  private _resolveActiveTableObject;
98
101
  private _resolveTableObjectFromContext;
99
102
  private _openContextMenu;
@@ -128,6 +131,8 @@ export declare class SlideTableInteractionRenderController extends RxDisposable
128
131
  private _shouldShowTransformerForDrawing;
129
132
  private _hideTableTransformerControls;
130
133
  private _handleKeyboardAction;
134
+ private _copySelectedCellContents;
135
+ private _pasteClipboardCellContents;
131
136
  private _handleKeyboardInput;
132
137
  private _clearSelectedCellContents;
133
138
  private _openSelectionEditor;
@@ -1,9 +1,31 @@
1
1
  import './global.css';
2
- export { SlideTableInteractionRenderController } from './controllers/slide-table-interaction.render-controller';
3
2
  export { UniverSlidesTableUIPlugin } from './plugin';
4
- export type { ISlideTableKeyboardCommandParams, SlideTableKeyboardAction } from './services/slide-table-keyboard.service';
5
- export { FOCUSING_SLIDE_TABLE, SlideTableKeyboardService } from './services/slide-table-keyboard.service';
6
- export type { ISelectSlideTableCellParams, ISelectSlideTableColumnsParams, ISelectSlideTableParams, ISelectSlideTableRangeParams, ISelectSlideTableRowsParams, ISlideTableSelection, ISlideTableSelectionBase, SlideTableSelectionKind, } from './services/slide-table-selection.service';
3
+ export type { ISlideTableObjectControlState, ISlideTableObjectProps, } from './render-objects/slide-table-object';
4
+ export { SlideTableObject } from './render-objects/slide-table-object';
5
+ export type { ISlideTableCellEditorSession } from './services/slide-table-cell-editor.service';
6
+ export { SlideTableCellEditorService } from './services/slide-table-cell-editor.service';
7
+ export type { ISlideTableSelection } from './services/slide-table-selection.service';
7
8
  export { SlideTableSelectionService } from './services/slide-table-selection.service';
8
- export type { SlideTableHit } from './views/slide-table-hit-test';
9
- export { hitTestSlideTable } from './views/slide-table-hit-test';
9
+ export { TableKeyboardServiceBase } from './services/table-keyboard.service-base';
10
+ export { buildSlideTableClearTextPatch, buildSlideTablePasteTextPatch, serializeSlideTableSelectionToText, } from './utils/slide-table-clipboard-model';
11
+ export { SLIDE_TABLE_CONTEXT_MENU_ACTIONS } from './utils/slide-table-contextmenu-model';
12
+ export type { ISlideTableContextMenuAction, ISlideTableContextMenuCommand, SlideTableContextMenuActionId, } from './utils/slide-table-contextmenu-model';
13
+ export { buildSlideTableBackgroundColorPatch, buildSlideTableBackgroundFillPatch, buildSlideTableBorderPresetPatch, buildSlideTableBorderStylePatch, buildSlideTableFontFamilyPatch, buildSlideTableFontSizePatch, buildSlideTableTextAlignPatch, buildSlideTableTextColorPatch, buildSlideTableTextFillPatch, buildSlideTableTextStylePatch, getSlideTableSelectionContext, } from './utils/slide-table-contextmenu-model';
14
+ export type { ISlideTableContextMenuCommandIds, SlideTableTextAlignPreset, } from './utils/slide-table-contextmenu-model';
15
+ export { buildSlideTableContextMenuCommand, resolveSlideTableContextMenuActions, } from './utils/slide-table-contextmenu-model';
16
+ export { buildSlideTableCellEditorCommitCommand, normalizeSlideTableCellDocumentData, replaceSlideTableCellDocumentText, resolveSlideTableCellEditorLayout, resolveSlideTableCellEditorTarget, } from './utils/slide-table-editor-model';
17
+ export type { ISlideTableCellEditorLayout, } from './utils/slide-table-editor-model';
18
+ export { isSlideTableDocumentEditorTarget, isSlideTableEditableTarget, } from './utils/slide-table-keyboard-input';
19
+ export type { SlideTableKeyboardInput, } from './utils/slide-table-keyboard-input';
20
+ export type { SlideTableKeyboardAction } from './utils/slide-table-keyboard-model';
21
+ export { buildSlideTableKeyboardShortcutBindings, resolveNextSlideTableKeyboardCell, resolveSlideTableKeyboardMovement, SLIDE_TABLE_KEYBOARD_SHORTCUT_DESCRIPTORS, } from './utils/slide-table-keyboard-model';
22
+ export type { SlideTableKeyboardShortcutKey, } from './utils/slide-table-keyboard-model';
23
+ export { resolveFirstSlideTableSelectionCell, resolveSlideTableObjectSelection, } from './utils/slide-table-object-selection-model';
24
+ export { buildSlideTableInsertDotControlState, isSlideTableInsertDotTrigger, } from './utils/slide-table-structural-insert.util';
25
+ export type { ISlideTableInsertDotTrigger, } from './utils/slide-table-structural-insert.util';
26
+ export { buildSlideTableBorderPresetCommandParams, buildSlideTableCellStyleCommandParams, buildSlideTableMergeCellsCommandParams, buildSlideTableUnmergeCellsCommandParams, resolveSlideTableMergeToolbarAction, SLIDE_TABLE_TOOLBAR_ACTIONS, } from './utils/slide-table-toolbar-shared-model';
27
+ export type { ISlideTableMergeToolbarState, ISlideTableToolbarAction, SlideTableToolbarActionId, } from './utils/slide-table-toolbar-shared-model';
28
+ export { buildSlideTableDeleteToolbarCommand, buildSlideTableMergeToolbarCommand, resolveSlideTableToolbarActions, } from './utils/slide-table-toolbar-shared-model';
29
+ export { getSlideTableFillType, resolveSlideTableDocumentHorizontalAlign, resolveSlideTableSelectionValues, SLIDE_TABLE_DEFAULT_BACKGROUND_COLOR, toCoreVerticalAlign, } from './utils/slide-table-toolbar-values';
30
+ export type { ISlideTableToolbarCellValues, SlideTableFillType, } from './utils/slide-table-toolbar-values';
31
+ export { TableThemeGallery } from './views/TableThemeGallery';
@@ -3,6 +3,11 @@ declare const locale: {
3
3
  editorToolbar: {
4
4
  fontFamily: string;
5
5
  fontSize: string;
6
+ textFormat: string;
7
+ bold: string;
8
+ italic: string;
9
+ underline: string;
10
+ strikethrough: string;
6
11
  textColor: string;
7
12
  textBackgroundColor: string;
8
13
  tableBackgroundColor: string;
@@ -36,6 +41,18 @@ declare const locale: {
36
41
  alignBottom: string;
37
42
  mergeCells: string;
38
43
  unmergeCells: string;
44
+ tableTheme: string;
45
+ tableLook: string;
46
+ headerRow: string;
47
+ footerRow: string;
48
+ bandedRows: string;
49
+ bandedColumns: string;
50
+ firstColumn: string;
51
+ lastColumn: string;
52
+ bestMatch: string;
53
+ light: string;
54
+ medium: string;
55
+ minimal: string;
39
56
  };
40
57
  shapePanel: {
41
58
  fill: {
@@ -1,6 +1,5 @@
1
1
  import type { IAccessor } from '@univerjs/core';
2
2
  import type { IMenuButtonItem, IMenuSelectorItem } from '@univerjs/ui';
3
- import type { SlideTablePresetOperation } from '../commands/operations/table-contextmenu.operation';
4
3
  import type { LocaleKey } from '../locale/types';
5
4
  export declare const SLIDE_TABLE_INSERT_MENU_ID = "slide-table.menu.insert";
6
5
  export declare const SLIDE_TABLE_DELETE_MENU_ID = "slide-table.menu.delete";
@@ -37,8 +36,6 @@ export declare function SlideTableBorderAllFactory(): IMenuButtonItem<LocaleKey>
37
36
  export declare function SlideTableBorderOuterFactory(): IMenuButtonItem<LocaleKey>;
38
37
  export declare function SlideTableBorderInnerFactory(): IMenuButtonItem<LocaleKey>;
39
38
  export declare function SlideTableBorderNoneFactory(): IMenuButtonItem<LocaleKey>;
40
- export declare function getSlideTableBackgroundColorMenuItems(): SlideTablePresetOperation[];
41
- export declare function getSlideTableTextColorMenuItems(): SlideTablePresetOperation[];
42
39
  export declare function SlideTableAlignLeftFactory(): IMenuButtonItem<LocaleKey>;
43
40
  export declare function SlideTableAlignCenterFactory(): IMenuButtonItem<LocaleKey>;
44
41
  export declare function SlideTableAlignRightFactory(): IMenuButtonItem<LocaleKey>;
@@ -1,9 +1,11 @@
1
- import { ICommandService, Injector, Plugin, UniverInstanceType } from '@univerjs/core';
1
+ import type { IUniverSlidesTableUIConfig } from './config/config';
2
+ import { ICommandService, IConfigService, Injector, Plugin, UniverInstanceType } from '@univerjs/core';
2
3
  import { IRenderManagerService } from '@univerjs/engine-render';
3
4
  import { IMenuManagerService, IShortcutService, IUIPartsService } from '@univerjs/ui';
4
5
  export declare class UniverSlidesTableUIPlugin extends Plugin {
5
6
  private readonly _config;
6
7
  protected readonly _injector: Injector;
8
+ private readonly _configService;
7
9
  private readonly _renderManagerService;
8
10
  private readonly _commandService;
9
11
  private readonly _menuManagerService;
@@ -13,7 +15,7 @@ export declare class UniverSlidesTableUIPlugin extends Plugin {
13
15
  static pluginName: string;
14
16
  static packageName: string;
15
17
  static version: string;
16
- constructor(_config: {} | undefined, _injector: Injector, _renderManagerService: IRenderManagerService, _commandService: ICommandService, _menuManagerService: IMenuManagerService, _shortcutService: IShortcutService, _uiPartsService: IUIPartsService);
18
+ constructor(_config: Partial<IUniverSlidesTableUIConfig> | undefined, _injector: Injector, _configService: IConfigService, _renderManagerService: IRenderManagerService, _commandService: ICommandService, _menuManagerService: IMenuManagerService, _shortcutService: IShortcutService, _uiPartsService: IUIPartsService);
17
19
  onStarting(): void;
18
20
  onReady(): void;
19
21
  private _initCommands;
@@ -0,0 +1,42 @@
1
+ import type { BooleanNumber, HorizontalAlign, IDocumentData, LocaleService } from '@univerjs/core';
2
+ import type { UniverRenderingContext } from '@univerjs/engine-render';
3
+ import { DocumentDataModel, VerticalAlign, WrapStrategy } from '@univerjs/core';
4
+ import { Documents, DocumentSkeleton, DocumentViewModel } from '@univerjs/engine-render';
5
+ export interface ICreateSlideTableDocumentRenderResourcesOptions {
6
+ documentData: IDocumentData;
7
+ id?: string;
8
+ isHorizontal?: boolean;
9
+ horizontalAlign?: HorizontalAlign;
10
+ verticalAlign?: VerticalAlign;
11
+ localeService: LocaleService;
12
+ shapeTextOpticalVerticalAlign?: BooleanNumber | boolean;
13
+ size: {
14
+ width: number;
15
+ height: number;
16
+ };
17
+ wrapStrategy?: WrapStrategy;
18
+ }
19
+ export interface ISlideTableDocumentRenderResources {
20
+ actualHeight: number;
21
+ contentHeight: number;
22
+ dispose: () => void;
23
+ documents: Documents;
24
+ docModel: DocumentDataModel;
25
+ docViewModel: DocumentViewModel;
26
+ marginTop: number;
27
+ minHeight: number;
28
+ opticalVerticalOffset: number;
29
+ skeleton: DocumentSkeleton;
30
+ width: number;
31
+ }
32
+ export declare function getSlideTableTextOpticalVerticalOffset(skeleton: DocumentSkeleton, targetHeight: number, verticalAlign?: VerticalAlign): number;
33
+ export declare function prepareSlideTableDocumentRenderData(documentData: IDocumentData, options: {
34
+ height: number;
35
+ horizontalAlign?: HorizontalAlign;
36
+ isHorizontal?: boolean;
37
+ verticalAlign?: VerticalAlign;
38
+ width: number;
39
+ wrapStrategy?: WrapStrategy;
40
+ }): IDocumentData;
41
+ export declare function createSlideTableDocumentRenderResources(options: ICreateSlideTableDocumentRenderResourcesOptions): ISlideTableDocumentRenderResources;
42
+ export declare function drawSlideTableDocumentRenderResources(context: UniverRenderingContext, resources: ISlideTableDocumentRenderResources, left: number, top: number, clip: boolean): void;
@@ -0,0 +1,26 @@
1
+ import type { BooleanNumber, HorizontalAlign, IDocumentData, LocaleService, VerticalAlign } from '@univerjs/core';
2
+ import type { UniverRenderingContext } from '@univerjs/engine-render';
3
+ import type { ISlideTableDocumentRenderResources } from './slide-table-document-render-resources.util';
4
+ import { WrapStrategy } from '@univerjs/core';
5
+ export interface IRenderSlideTableDocumentTextOptions {
6
+ clip?: boolean;
7
+ documentData?: IDocumentData;
8
+ height: number;
9
+ horizontalAlign?: HorizontalAlign;
10
+ isHorizontal?: boolean;
11
+ key: string;
12
+ left: number;
13
+ localeService?: LocaleService;
14
+ shapeTextOpticalVerticalAlign?: BooleanNumber | boolean;
15
+ text?: string;
16
+ top: number;
17
+ verticalAlign?: VerticalAlign;
18
+ width: number;
19
+ wrapStrategy?: WrapStrategy;
20
+ }
21
+ export interface ISlideTableDocumentTextRenderCache {
22
+ resources?: ISlideTableDocumentRenderResources;
23
+ signature?: string;
24
+ }
25
+ export declare function disposeSlideTableDocumentTextRenderCache(cache?: ISlideTableDocumentTextRenderCache): void;
26
+ export declare function renderSlideTableTextWithDocumentModel(ctx: UniverRenderingContext, options: IRenderSlideTableDocumentTextOptions, cache?: ISlideTableDocumentTextRenderCache): boolean;
@@ -0,0 +1,127 @@
1
+ import type { ISlideTableCellRange, ISlideTableControl, ISlideTableResolvedCell, ISlideTableSnapshot, ISlideTableThemePalette, ISlideTableTrigger } from '@univerjs-pro/slides-table';
2
+ import type { LocaleService } from '@univerjs/core';
3
+ import type { IRectProps, IViewportInfo, UniverRenderingContext, Vector2 } from '@univerjs/engine-render';
4
+ import type { SlideTableHit } from '../utils/slide-table-hit-test';
5
+ import { Rect } from '@univerjs/engine-render';
6
+ export interface ISlideTableObjectProps extends IRectProps {
7
+ controlButtonMode?: 'all' | 'table-handle';
8
+ localeService?: LocaleService;
9
+ table?: ISlideTableSnapshot | null;
10
+ tableThemePalette?: ISlideTableThemePalette;
11
+ }
12
+ export interface ISlideTableCellTextRect {
13
+ left: number;
14
+ top: number;
15
+ width: number;
16
+ height: number;
17
+ row: number;
18
+ column: number;
19
+ }
20
+ export interface ISlideTableObjectSelection {
21
+ kind?: 'table' | 'cell' | 'range' | 'row' | 'column' | 'text';
22
+ ranges: ISlideTableCellRange[];
23
+ active?: {
24
+ row: number;
25
+ column: number;
26
+ };
27
+ }
28
+ export interface ISlideTableObjectControlHover {
29
+ kind?: ISlideTableControl['kind'];
30
+ row?: number | null;
31
+ column?: number | null;
32
+ }
33
+ export interface ISlideTableObjectCellHover {
34
+ row: number;
35
+ column: number;
36
+ }
37
+ export interface ISlideTableObjectEditingCell {
38
+ row: number;
39
+ column: number;
40
+ }
41
+ export interface ISlideTableObjectStructuralRange {
42
+ kind: 'row' | 'column';
43
+ start: number;
44
+ end: number;
45
+ }
46
+ export interface ISlideTableObjectStructuralGuide {
47
+ kind: 'row' | 'column';
48
+ index: number;
49
+ }
50
+ export interface ISlideTableObjectControlState {
51
+ visible?: boolean;
52
+ hoveredTrigger?: ISlideTableTrigger | null;
53
+ selectedStructuralRange?: ISlideTableObjectStructuralRange | null;
54
+ insertGuide?: ISlideTableObjectStructuralGuide | null;
55
+ reorderGuide?: ISlideTableObjectStructuralGuide | null;
56
+ }
57
+ export declare function isSlideTableRenderCellIntersectingSelection(cell: Pick<ISlideTableResolvedCell, 'row' | 'column' | 'rowSpan' | 'columnSpan'>, ranges: ISlideTableCellRange[]): boolean;
58
+ export declare class SlideTableObject extends Rect<ISlideTableObjectProps> {
59
+ isDrawingObject: boolean;
60
+ private readonly _controlButtonMode;
61
+ private _table;
62
+ private _previewTable;
63
+ private _selection;
64
+ private _cellHover;
65
+ private _editingCell;
66
+ private _controlHover;
67
+ private _controlState;
68
+ private _localeService?;
69
+ private _tableThemePalette?;
70
+ private _textRenderCaches;
71
+ constructor(key: string, props: ISlideTableObjectProps);
72
+ setTable(table: ISlideTableSnapshot | null | undefined): void;
73
+ getTable(): ISlideTableSnapshot | null;
74
+ setPreviewTable(table: ISlideTableSnapshot | null): void;
75
+ setLocaleService(localeService: LocaleService | undefined): void;
76
+ setTableThemePalette(palette: ISlideTableThemePalette | undefined): void;
77
+ setTableSelection(selection: ISlideTableObjectSelection | null): void;
78
+ getTableSelection(): ISlideTableObjectSelection | null;
79
+ setEditingCell(cell: ISlideTableObjectEditingCell | null): void;
80
+ getEditingCell(): ISlideTableObjectEditingCell | null;
81
+ setTableControlHover(hover: ISlideTableObjectControlHover | null): boolean;
82
+ setTableCellHover(hover: ISlideTableObjectCellHover | null): boolean;
83
+ setTableControlState(state: ISlideTableObjectControlState | null): boolean;
84
+ getInverseCoord(coord: Vector2): Vector2;
85
+ isHit(coord: Vector2): boolean;
86
+ getCellTextRect(row: number, column: number, width?: number, height?: number): ISlideTableCellTextRect | null;
87
+ hitTestCellAtScenePoint(scenePoint: Vector2, width?: number, height?: number): SlideTableHit | null;
88
+ hitTestControlAtScenePoint(scenePoint: Vector2, width?: number, height?: number): ISlideTableControl | null;
89
+ hitTestStructuralTriggerAtScenePoint(scenePoint: Vector2, width?: number, height?: number): ISlideTableTrigger | null;
90
+ hitTestFloatingStructuralTriggerAtScenePoint(scenePoint: Vector2, width?: number, height?: number): ISlideTableTrigger | null;
91
+ render(mainCtx: UniverRenderingContext, bounds: IViewportInfo): this;
92
+ _draw(ctx: UniverRenderingContext, _bounds?: IViewportInfo, renderWidth?: number, renderHeight?: number): void;
93
+ private _getRenderTable;
94
+ private _resolveRenderModel;
95
+ private _drawRowFills;
96
+ private _drawCellFills;
97
+ private _drawCellTexts;
98
+ private _isEditingCell;
99
+ private _getTextRenderCache;
100
+ private _disposeTextRenderCaches;
101
+ private _drawCellBorders;
102
+ private _drawGrid;
103
+ private _drawTableOutline;
104
+ private _drawSelection;
105
+ private _drawCellHover;
106
+ private _drawControls;
107
+ private _drawStructuralHeaders;
108
+ private _drawStructuralHeaderRect;
109
+ private _drawInsertDots;
110
+ private _drawInsertGuide;
111
+ private _drawReorderGuide;
112
+ private _drawGuideLine;
113
+ private _drawTableHandle;
114
+ private _shouldDrawControls;
115
+ private _shouldDrawStructuralHeaders;
116
+ private _shouldDrawInsertDots;
117
+ private _isActiveOuterChromeHit;
118
+ private _buildControlButtons;
119
+ private _isPointInStructuralTriggerEnvelope;
120
+ private _isControlHovered;
121
+ private _isControlSelected;
122
+ private _isStructuralHeaderHovered;
123
+ private _isHoveredStructuralTrigger;
124
+ private _isStructuralRangeSelected;
125
+ private _buildStructuralTriggers;
126
+ private _getStructuralControlZoom;
127
+ }
@@ -0,0 +1,50 @@
1
+ import type { HorizontalAlign, IDisposable, IDocumentData, ITransformState, VerticalAlign } from '@univerjs/core';
2
+ import { Disposable } from '@univerjs/core';
3
+ export interface ISlideTableCellEditorRect {
4
+ height: number;
5
+ left: number;
6
+ top: number;
7
+ width: number;
8
+ }
9
+ export interface ISlideTableCellEditorMeasurement {
10
+ width: number;
11
+ minHeight: number;
12
+ actualHeight: number;
13
+ contentHeight: number;
14
+ marginTop: number;
15
+ }
16
+ export interface ISlideTableCellEditorSession {
17
+ column: number;
18
+ documentData: IDocumentData;
19
+ elementId: string;
20
+ horizontalAlign?: HorizontalAlign;
21
+ isHorizontal?: boolean;
22
+ measurement?: ISlideTableCellEditorMeasurement;
23
+ rect: ISlideTableCellEditorRect;
24
+ row: number;
25
+ subUnitId: string;
26
+ tableId: string;
27
+ tableTransform: ITransformState;
28
+ unitId: string;
29
+ verticalAlign?: VerticalAlign;
30
+ onCancel?: (session: ISlideTableCellEditorSession) => void;
31
+ onChange?: (session: ISlideTableCellEditorSession) => void;
32
+ onComplete?: (session: ISlideTableCellEditorSession) => void;
33
+ }
34
+ export type IOpenSlideTableCellEditorSession = Omit<ISlideTableCellEditorSession, 'onCancel' | 'onChange' | 'onComplete'> & {
35
+ onCancel?: (session: ISlideTableCellEditorSession) => void;
36
+ onChange?: (session: ISlideTableCellEditorSession) => void;
37
+ onComplete?: (session: ISlideTableCellEditorSession) => void;
38
+ };
39
+ export declare class SlideTableCellEditorService extends Disposable {
40
+ private readonly _session$;
41
+ readonly session$: import("rxjs").Observable<ISlideTableCellEditorSession | null>;
42
+ open(session: IOpenSlideTableCellEditorSession): IDisposable;
43
+ update(params: Partial<Pick<ISlideTableCellEditorSession, 'documentData' | 'measurement' | 'rect' | 'tableTransform'>>): void;
44
+ complete(documentData?: IDocumentData): void;
45
+ cancel(): void;
46
+ close(): void;
47
+ getSession(): ISlideTableCellEditorSession | null;
48
+ subscribe(listener: (session: ISlideTableCellEditorSession | null) => void): IDisposable;
49
+ dispose(): void;
50
+ }
@@ -1,28 +1,14 @@
1
- import type { IDisposable } from '@univerjs/core';
2
- import { Disposable, IContextService } from '@univerjs/core';
1
+ import type { SlideTableKeyboardAction } from '../utils/slide-table-keyboard-model';
2
+ import { IContextService } from '@univerjs/core';
3
+ import { TableKeyboardServiceBase } from './table-keyboard.service-base';
3
4
  export declare const FOCUSING_SLIDE_TABLE = "FOCUSING_SLIDE_TABLE";
4
- export type SlideTableKeyboardAction = 'move-left' | 'move-right' | 'move-up' | 'move-down' | 'extend-left' | 'extend-right' | 'extend-up' | 'extend-down' | 'tab-forward' | 'tab-backward' | 'edit-cell' | 'clear-cells';
5
- export type SlideTableKeyboardInput = {
6
- kind: 'text';
7
- text: string;
8
- } | {
9
- kind: 'composition-start';
10
- } | {
11
- kind: 'composition';
12
- text?: string;
13
- };
14
5
  export interface ISlideTableKeyboardCommandParams {
15
6
  action: SlideTableKeyboardAction;
16
7
  }
17
- export declare class SlideTableKeyboardService extends Disposable {
8
+ export declare class SlideTableKeyboardService extends TableKeyboardServiceBase {
18
9
  private readonly _contextService?;
19
- private _handler;
20
- private _inputHandler;
21
10
  constructor(_contextService?: IContextService | undefined);
22
- setHandler(handler: (action: SlideTableKeyboardAction) => boolean): IDisposable;
23
- setInputHandler(handler: (input: SlideTableKeyboardInput) => boolean): IDisposable;
24
- handle(action: SlideTableKeyboardAction): boolean;
25
- handleInput(input: SlideTableKeyboardInput): boolean;
26
- private _initNativeInputListeners;
27
- private _canHandleNativeInput;
11
+ protected canHandleNativeInput(event: Event, options?: {
12
+ allowDocsEditor?: boolean;
13
+ }): boolean;
28
14
  }
@@ -0,0 +1,18 @@
1
+ import type { IDisposable } from '@univerjs/core';
2
+ import type { SlideTableKeyboardInput } from '../utils/slide-table-keyboard-input';
3
+ import type { SlideTableKeyboardAction } from '../utils/slide-table-keyboard-model';
4
+ import { Disposable } from '@univerjs/core';
5
+ export type TableKeyboardHandlerResult = boolean | Promise<boolean>;
6
+ export declare abstract class TableKeyboardServiceBase extends Disposable {
7
+ private _handler;
8
+ private _inputHandler;
9
+ constructor();
10
+ setHandler(handler: (action: SlideTableKeyboardAction) => TableKeyboardHandlerResult): IDisposable;
11
+ setInputHandler(handler: (input: SlideTableKeyboardInput) => boolean): IDisposable;
12
+ handle(action: SlideTableKeyboardAction): TableKeyboardHandlerResult;
13
+ handleInput(input: SlideTableKeyboardInput): boolean;
14
+ protected abstract canHandleNativeInput(event: Event, options?: {
15
+ allowDocsEditor?: boolean;
16
+ }): boolean;
17
+ private _initNativeInputListeners;
18
+ }
@@ -0,0 +1,7 @@
1
+ import type { ISlideTableSnapshot } from '@univerjs-pro/slides-table';
2
+ import type { IDocumentData } from '@univerjs/core';
3
+ import type { ISlideTableSelection } from '../services/slide-table-selection.service';
4
+ export declare function serializeSlideTableSelectionToText(table: ISlideTableSnapshot | null | undefined, selection: ISlideTableSelection | null | undefined): string;
5
+ export declare function buildSlideTablePasteTextPatch(table: ISlideTableSnapshot | null | undefined, selection: ISlideTableSelection | null | undefined, text: string): Partial<ISlideTableSnapshot> | null;
6
+ export declare function buildSlideTableClearTextPatch(table: ISlideTableSnapshot | null | undefined, selection: ISlideTableSelection | null | undefined): Partial<ISlideTableSnapshot> | null;
7
+ export declare function extractSlideTableCellPlainText(documentData: IDocumentData | undefined): string;
@@ -0,0 +1,69 @@
1
+ import type { ISlideTableBorder, ISlideTableCellRange, ISlideTableFill, ISlideTableSnapshot, SlideTableBorderPresetEnum } from '@univerjs-pro/slides-table';
2
+ import type { HorizontalAlign, IDocTextFill } from '@univerjs/core';
3
+ import type { ISlideTableSelection } from '../services/slide-table-selection.service';
4
+ import { VerticalAlign } from '@univerjs/core';
5
+ export type SlideTableDistributeAxis = 'row' | 'column';
6
+ export type SlideTableTextAlignPreset = {
7
+ axis: 'horizontal';
8
+ value: HorizontalAlign;
9
+ } | {
10
+ axis: 'vertical';
11
+ value: VerticalAlign;
12
+ };
13
+ export declare const SLIDE_TABLE_CONTEXT_MENU_ACTIONS: {
14
+ readonly InsertRowAbove: "insert-row-above";
15
+ readonly InsertRowBelow: "insert-row-below";
16
+ readonly InsertColumnLeft: "insert-column-left";
17
+ readonly InsertColumnRight: "insert-column-right";
18
+ readonly DeleteRows: "delete-rows";
19
+ readonly DeleteColumns: "delete-columns";
20
+ readonly MergeCells: "merge-cells";
21
+ readonly UnmergeCells: "unmerge-cells";
22
+ readonly DistributeRows: "distribute-rows";
23
+ readonly DistributeColumns: "distribute-columns";
24
+ };
25
+ export type SlideTableContextMenuActionId = typeof SLIDE_TABLE_CONTEXT_MENU_ACTIONS[keyof typeof SLIDE_TABLE_CONTEXT_MENU_ACTIONS];
26
+ export interface ISlideTableContextMenuCommandIds {
27
+ insertRows: string;
28
+ insertColumns: string;
29
+ deleteRows: string;
30
+ deleteColumns: string;
31
+ mergeCells: string;
32
+ unmergeCells: string;
33
+ updateTable: string;
34
+ }
35
+ export interface ISlideTableContextMenuAction {
36
+ id: SlideTableContextMenuActionId;
37
+ commandId: string;
38
+ enabled: boolean;
39
+ }
40
+ export interface ISlideTableContextMenuCommand {
41
+ commandId: string;
42
+ params: object;
43
+ }
44
+ export declare function getSlideTableSelectionContext(selection: ISlideTableSelection | null): {
45
+ elementId: string;
46
+ range: ISlideTableCellRange;
47
+ subUnitId: string;
48
+ tableId: string;
49
+ unitId: string;
50
+ } | null;
51
+ export declare function resolveSlideTableContextMenuActions(table: ISlideTableSnapshot | null | undefined, selection: ISlideTableSelection | null, commandIds: ISlideTableContextMenuCommandIds): ISlideTableContextMenuAction[];
52
+ export declare function buildSlideTableContextMenuCommand(table: ISlideTableSnapshot | null | undefined, selection: ISlideTableSelection | null, actionId: SlideTableContextMenuActionId, commandIds: ISlideTableContextMenuCommandIds): ISlideTableContextMenuCommand | null;
53
+ export declare function buildSlideTableDistributePatch(table: ISlideTableSnapshot, axis: SlideTableDistributeAxis, sourceRange?: ISlideTableCellRange): Partial<ISlideTableSnapshot>;
54
+ export declare function buildSlideTableTextAlignPatch(table: ISlideTableSnapshot, sourceRange: ISlideTableCellRange, preset: SlideTableTextAlignPreset): Partial<ISlideTableSnapshot>;
55
+ export declare function buildSlideTableBackgroundColorPatch(table: ISlideTableSnapshot, sourceRange: ISlideTableCellRange, color: string | undefined): Partial<ISlideTableSnapshot>;
56
+ export declare function buildSlideTableBackgroundFillPatch(table: ISlideTableSnapshot, sourceRange: ISlideTableCellRange, fill: ISlideTableFill | undefined): Partial<ISlideTableSnapshot>;
57
+ export declare function buildSlideTableTextColorPatch(table: ISlideTableSnapshot, sourceRange: ISlideTableCellRange, color: string | undefined): Partial<ISlideTableSnapshot>;
58
+ export declare function buildSlideTableTextFillPatch(table: ISlideTableSnapshot, sourceRange: ISlideTableCellRange, fill: IDocTextFill | undefined): Partial<ISlideTableSnapshot>;
59
+ export declare function buildSlideTableBorderStylePatch(table: ISlideTableSnapshot, sourceRange: ISlideTableCellRange, borderPatch: Partial<ISlideTableBorder>): Partial<ISlideTableSnapshot>;
60
+ export declare function buildSlideTableBorderPresetPatch(table: ISlideTableSnapshot, sourceRange: ISlideTableCellRange, preset: SlideTableBorderPresetEnum, border?: ISlideTableBorder): Partial<ISlideTableSnapshot>;
61
+ export declare function buildSlideTableFontFamilyPatch(table: ISlideTableSnapshot, sourceRange: ISlideTableCellRange, fontFamily: string): Partial<ISlideTableSnapshot>;
62
+ export declare function buildSlideTableFontSizePatch(table: ISlideTableSnapshot, sourceRange: ISlideTableCellRange, fontSize: number): Partial<ISlideTableSnapshot>;
63
+ export declare function canMergeSlideTableSelection(selection: ISlideTableSelection | null): boolean;
64
+ export declare function canUnmergeSlideTableSelection(table: ISlideTableSnapshot | null | undefined, selection: ISlideTableSelection | null): boolean;
65
+ export declare function canDeleteSlideTableRows(table: ISlideTableSnapshot | null | undefined, selection: ISlideTableSelection | null): boolean;
66
+ export declare function canDeleteSlideTableColumns(table: ISlideTableSnapshot | null | undefined, selection: ISlideTableSelection | null): boolean;
67
+ export declare function canDistributeSlideTableRows(table: ISlideTableSnapshot | null | undefined, selection: ISlideTableSelection | null): boolean;
68
+ export declare function canDistributeSlideTableColumns(table: ISlideTableSnapshot | null | undefined, selection: ISlideTableSelection | null): boolean;
69
+ export declare function buildSlideTableTextStylePatch(table: ISlideTableSnapshot, sourceRange: ISlideTableCellRange, textStylePatch: Record<string, unknown>): Partial<ISlideTableSnapshot>;
@@ -0,0 +1,78 @@
1
+ import type { ISlideTableCellStyle, ISlideTableSnapshot } from '@univerjs-pro/slides-table';
2
+ import type { HorizontalAlign, IDocumentData, ITransformState, VerticalAlign } from '@univerjs/core';
3
+ import type { ISlideTableCellEditorSession } from '../services/slide-table-cell-editor.service';
4
+ import type { ISlideTableSelection } from '../services/slide-table-selection.service';
5
+ export interface IResolveSlideTableCellEditorTargetParams {
6
+ selection: ISlideTableSelection | null;
7
+ table: ISlideTableSnapshot | null | undefined;
8
+ tableHeight: number;
9
+ tableWidth: number;
10
+ }
11
+ export interface ISlideTableCellEditorTarget {
12
+ column: number;
13
+ documentData: IDocumentData;
14
+ cellStyle?: ISlideTableCellStyle;
15
+ rect: {
16
+ height: number;
17
+ left: number;
18
+ top: number;
19
+ width: number;
20
+ };
21
+ row: number;
22
+ }
23
+ export interface ISlideTableCellEditorLayout {
24
+ rect: {
25
+ height: number;
26
+ left: number;
27
+ top: number;
28
+ width: number;
29
+ };
30
+ scale: {
31
+ scaleX: number;
32
+ scaleY: number;
33
+ };
34
+ transform: {
35
+ angle: number;
36
+ flipX: boolean;
37
+ flipY?: boolean;
38
+ };
39
+ horizontalAlign?: HorizontalAlign;
40
+ verticalAlign?: VerticalAlign;
41
+ isHorizontal?: boolean;
42
+ }
43
+ export interface IResolveSlideTableCellEditorLayoutParams {
44
+ rect: {
45
+ height: number;
46
+ left: number;
47
+ top: number;
48
+ width: number;
49
+ };
50
+ scale?: {
51
+ scaleX?: number;
52
+ scaleY?: number;
53
+ };
54
+ scenePointToViewportPoint: (point: {
55
+ x: number;
56
+ y: number;
57
+ }) => {
58
+ x: number;
59
+ y: number;
60
+ };
61
+ tableTransform: ITransformState;
62
+ }
63
+ export interface ISlideTableCellEditorCommitCommand {
64
+ commandId: string;
65
+ params: {
66
+ column: number;
67
+ row: number;
68
+ tableId: string;
69
+ textData: IDocumentData;
70
+ unitId: string;
71
+ };
72
+ }
73
+ export declare function resolveSlideTableCellEditorTarget(params: IResolveSlideTableCellEditorTargetParams): ISlideTableCellEditorTarget | null;
74
+ export declare function createSlideTableCellDocumentData(tableId: string, row: number, column: number, text?: string): IDocumentData;
75
+ export declare function replaceSlideTableCellDocumentText(documentData: IDocumentData, text: string): IDocumentData;
76
+ export declare function resolveSlideTableCellEditorLayout(params: IResolveSlideTableCellEditorLayoutParams): ISlideTableCellEditorLayout;
77
+ export declare function buildSlideTableCellEditorCommitCommand(session: ISlideTableCellEditorSession | null, documentData: IDocumentData, commandId: string): ISlideTableCellEditorCommitCommand | null;
78
+ export declare function normalizeSlideTableCellDocumentData(documentData: IDocumentData | undefined, fallbackId: string): IDocumentData;
@@ -0,0 +1,13 @@
1
+ export type SlideTableKeyboardInput = {
2
+ kind: 'text';
3
+ text: string;
4
+ } | {
5
+ kind: 'composition-start';
6
+ } | {
7
+ kind: 'composition';
8
+ text?: string;
9
+ };
10
+ export declare function isSlideTablePlainTextKeyEvent(event: Pick<KeyboardEvent, 'altKey' | 'ctrlKey' | 'key' | 'metaKey'>): boolean;
11
+ export declare function isSlideTableInsertTextInputType(inputType: string): boolean;
12
+ export declare function isSlideTableEditableTarget(target: EventTarget | null): boolean;
13
+ export declare function isSlideTableDocumentEditorTarget(target: EventTarget | null): boolean;