From e6d1bbd7ea809a15b5b41776e2da24f2a036da60 Mon Sep 17 00:00:00 2001 From: jocs Date: Sat, 24 Feb 2024 19:44:33 +0800 Subject: [PATCH 1/2] feat: export is active for share cursor use --- packages/core/src/types/interfaces/i-selection-data.ts | 1 + .../src/commands/operations/text-selection.operation.ts | 6 +++--- .../docs/src/services/text-selection-manager.service.ts | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/core/src/types/interfaces/i-selection-data.ts b/packages/core/src/types/interfaces/i-selection-data.ts index fcfed6f468..524a0fcad8 100644 --- a/packages/core/src/types/interfaces/i-selection-data.ts +++ b/packages/core/src/types/interfaces/i-selection-data.ts @@ -63,4 +63,5 @@ export interface ITextRange extends ITextRangeStart { export interface ITextRangeParam extends ITextRange { segmentId?: string; //The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document's body. + isActive?: boolean; // Whether the text range is active or current range. } diff --git a/packages/docs/src/commands/operations/text-selection.operation.ts b/packages/docs/src/commands/operations/text-selection.operation.ts index 148d992cfc..9b51e63459 100644 --- a/packages/docs/src/commands/operations/text-selection.operation.ts +++ b/packages/docs/src/commands/operations/text-selection.operation.ts @@ -16,14 +16,14 @@ import type { IOperation } from '@univerjs/core'; import { CommandType } from '@univerjs/core'; -import type { ITextSelectionStyle, TextRange } from '@univerjs/engine-render'; +import type { ITextRangeWithStyle, ITextSelectionStyle } from '@univerjs/engine-render'; export interface ISetTextSelectionsOperationParams { unitId: string; subUnitId: string; segmentId: string; style: ITextSelectionStyle; - ranges: TextRange[]; + ranges: ITextRangeWithStyle[]; } export const SetTextSelectionsOperation: IOperation = { @@ -32,7 +32,7 @@ export const SetTextSelectionsOperation: IOperation { - // for live share only. + // for live share and share cursor. return true; }, }; diff --git a/packages/docs/src/services/text-selection-manager.service.ts b/packages/docs/src/services/text-selection-manager.service.ts index d4958c8da3..c2792eb657 100644 --- a/packages/docs/src/services/text-selection-manager.service.ts +++ b/packages/docs/src/services/text-selection-manager.service.ts @@ -57,6 +57,7 @@ export function serializeTextRange(textRange: TextRange): ITextRangeWithStyle { startOffset: startOffset!, endOffset: endOffset!, collapsed, + isActive: textRange.isActive(), }; } From 5f115b41ca4e332c5f6cfb23bfa029cafbcecb8a Mon Sep 17 00:00:00 2001 From: jocs Date: Sat, 24 Feb 2024 19:52:06 +0800 Subject: [PATCH 2/2] feat: export is active for share cursor use --- .../docs/src/services/text-selection-manager.service.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/docs/src/services/text-selection-manager.service.ts b/packages/docs/src/services/text-selection-manager.service.ts index c2792eb657..a852a63ef3 100644 --- a/packages/docs/src/services/text-selection-manager.service.ts +++ b/packages/docs/src/services/text-selection-manager.service.ts @@ -53,12 +53,17 @@ type ITextSelectionInfo = Map>; export function serializeTextRange(textRange: TextRange): ITextRangeWithStyle { const { startOffset, endOffset, collapsed } = textRange; - return { + const serializedTextRange: ITextRangeWithStyle = { startOffset: startOffset!, endOffset: endOffset!, collapsed, - isActive: textRange.isActive(), }; + + if (typeof textRange.isActive === 'function') { + serializedTextRange.isActive = textRange.isActive(); + } + + return serializedTextRange; } /**