From 479d84f83a4cc2c50efd6231217f370da4f38dda Mon Sep 17 00:00:00 2001 From: Wenzhao Hu <12122021+wzhudev@users.noreply.github.com> Date: Tue, 18 Jun 2024 09:30:50 +0800 Subject: [PATCH] WIP --- examples/src/docs/main.ts | 4 +- .../doc-drawing-update.controller.ts | 91 ++----------------- packages/docs-drawing-ui/src/plugin.ts | 8 +- .../back-scroll.render-controller.ts | 4 +- .../src/controllers/ime-input.controller.ts | 2 +- .../services/doc-skeleton-manager.service.ts | 2 +- 6 files changed, 19 insertions(+), 92 deletions(-) diff --git a/examples/src/docs/main.ts b/examples/src/docs/main.ts index 5ae6f0a9756..9bd7211c3bc 100644 --- a/examples/src/docs/main.ts +++ b/examples/src/docs/main.ts @@ -24,6 +24,8 @@ import { UniverRenderEnginePlugin } from '@univerjs/engine-render'; import { UniverUIPlugin } from '@univerjs/ui'; import { UniverFormulaEnginePlugin } from '@univerjs/engine-formula'; import { UniverDebuggerPlugin } from '@univerjs/debugger'; +import { UniverDocsDrawingUIPlugin } from '@univerjs/docs-drawing-ui'; + import { DEFAULT_DOCUMENT_DATA_CN } from '../data'; import { enUS, ruRU, zhCN } from '../locales'; @@ -66,7 +68,7 @@ univer.registerPlugin(UniverDocsUIPlugin, { }, }); -// univer.registerPlugin(UniverDocsDrawingUIPlugin); +univer.registerPlugin(UniverDocsDrawingUIPlugin); univer.createUnit(UniverInstanceType.UNIVER_DOC, DEFAULT_DOCUMENT_DATA_CN); diff --git a/packages/docs-drawing-ui/src/controllers/doc-drawing-update.controller.ts b/packages/docs-drawing-ui/src/controllers/doc-drawing-update.controller.ts index 014fc87952f..cfd156ff96a 100644 --- a/packages/docs-drawing-ui/src/controllers/doc-drawing-update.controller.ts +++ b/packages/docs-drawing-ui/src/controllers/doc-drawing-update.controller.ts @@ -177,7 +177,7 @@ export class DocDrawingUpdateController extends Disposable { drawings: [docDrawingParam], } as IInsertDrawingCommandParams); - this._docSkeletonManagerService.getCurrent()?.skeleton.calculate(); + this._docSkeletonManagerService.getSkeleton()?.calculate(); } private _getUnitInfo() { @@ -275,99 +275,20 @@ export class DocDrawingUpdateController extends Disposable { }); if (drawings.length > 0) { + const unitId = params[0].unitId; this._commandService.syncExecuteCommand(SetDocDrawingCommand.id, { - unitId: params[0].unitId, + unitId, drawings, } as ISetDrawingCommandParams); - this._refreshDocSkeleton(); + this._refreshDocSkeleton(unitId); } }); } - private _getDocsOffsetInfo() { - const docsSkeletonObject = this._docSkeletonManagerService.getCurrent(); - if (docsSkeletonObject == null) { - return { - pageMarginCache: new Map(), - docsLeft: 0, - docsTop: 0, - }; - } - - const { unitId, skeleton } = docsSkeletonObject; - + private _refreshDocSkeleton(unitId: string) { + const skeleton = this._docSkeletonManagerService.getSkeleton(); const currentRender = this._renderManagerService.getRenderById(unitId); - - const skeletonData = skeleton?.getSkeletonData(); - - if (currentRender == null || !skeletonData) { - return { - pageMarginCache: new Map(), - docsLeft: 0, - docsTop: 0, - }; - } - - const { mainComponent } = currentRender; - - const documentComponent = mainComponent as Documents; - - const { left: docsLeft, top: docsTop, pageLayoutType, pageMarginLeft, pageMarginTop } = documentComponent; - - const { pages } = skeletonData; - - const liquid = new Liquid(); - - const pageMarginCache = new Map(); - - for (let i = 0, len = pages.length; i < len; i++) { - const page = pages[i]; - const { skeDrawings, marginLeft, marginTop } = page; - // cumPageLeft + = pageWidth + documents.pageMarginLeft; - - liquid.translatePagePadding(page); - - skeDrawings.forEach((drawing) => { - const { aLeft, aTop, height, width, drawingId, drawingOrigin } = drawing; - // const behindText = drawingOrigin.layoutType === PositionedObjectLayoutType.WRAP_NONE && drawingOrigin.behindDoc === BooleanNumber.TRUE; - // floatObjects.push({ - // unitId, - // subUnitId: DEFAULT_DOCUMENT_SUB_COMPONENT_ID, - // floatingObjectId: drawingId, - // behindText, - // floatingObject: { - // left: aLeft + docsLeft + liquid.x, - // top: aTop + docsTop + liquid.y, - // width, - // height, - // }, - // }); - - pageMarginCache.set(drawingId, { - marginLeft: liquid.x, - marginTop: liquid.y, - }); - }); - - liquid.restorePagePadding(page); - - liquid.translatePage(page, pageLayoutType, pageMarginLeft, pageMarginTop); - } - - return { pageMarginCache, docsLeft, docsTop }; - } - - private _refreshDocSkeleton() { - const docsSkeletonObject = this._docSkeletonManagerService.getCurrent(); - if (docsSkeletonObject == null) { - return; - } - - const { unitId, skeleton } = docsSkeletonObject; - - const currentRender = this._renderManagerService.getRenderById(unitId); - if (currentRender == null) { return; } diff --git a/packages/docs-drawing-ui/src/plugin.ts b/packages/docs-drawing-ui/src/plugin.ts index 024795686c6..6f83ad96744 100644 --- a/packages/docs-drawing-ui/src/plugin.ts +++ b/packages/docs-drawing-ui/src/plugin.ts @@ -14,15 +14,19 @@ * limitations under the License. */ -import { LocaleService, Plugin, UniverInstanceType } from '@univerjs/core'; +import { DependentOn, LocaleService, Plugin, UniverInstanceType } from '@univerjs/core'; import type { Dependency } from '@wendellhu/redi'; import { Inject, Injector } from '@wendellhu/redi'; +import { UniverDrawingUIPlugin } from '@univerjs/drawing-ui'; +import { UniverDrawingPlugin } from '@univerjs/drawing'; +import { UniverDocsDrawingPlugin } from '@univerjs/docs-drawing'; import { DocDrawingPopupMenuController } from './controllers/drawing-popup-menu.controller'; import { DocDrawingUIController } from './controllers/doc-drawing.controller'; import { DocDrawingUpdateController } from './controllers/doc-drawing-update.controller'; -const PLUGIN_NAME = 'Docs_Drawing_UI_PLUGIN'; +const PLUGIN_NAME = 'DOCS_DRAWING_UI_PLUGIN'; +@DependentOn(UniverDrawingUIPlugin, UniverDrawingPlugin, UniverDocsDrawingPlugin) export class UniverDocsDrawingUIPlugin extends Plugin { static override type = UniverInstanceType.UNIVER_DOC; static override pluginName = PLUGIN_NAME; diff --git a/packages/docs-ui/src/controllers/render-controllers/back-scroll.render-controller.ts b/packages/docs-ui/src/controllers/render-controllers/back-scroll.render-controller.ts index 79d386efeef..d634f08cc64 100644 --- a/packages/docs-ui/src/controllers/render-controllers/back-scroll.render-controller.ts +++ b/packages/docs-ui/src/controllers/render-controllers/back-scroll.render-controller.ts @@ -55,9 +55,9 @@ export class DocBackScrollRenderController extends RxDisposable implements IRend private _scrollToSelection(unitId: string) { const activeTextRange = this._textSelectionManagerService.getActiveRange(); const docObject = neoGetDocObject(this._context); - const skeleton = this._docSkeletonManagerService.getSkeleton()?.skeleton; + const skeleton = this._docSkeletonManagerService.getSkeleton(); - if (activeTextRange == null || docObject == null || skeleton == null) { + if (activeTextRange == null || docObject == null) { return; } diff --git a/packages/docs/src/controllers/ime-input.controller.ts b/packages/docs/src/controllers/ime-input.controller.ts index 8b8b2f68330..06ab2c8c671 100644 --- a/packages/docs/src/controllers/ime-input.controller.ts +++ b/packages/docs/src/controllers/ime-input.controller.ts @@ -111,7 +111,7 @@ export class IMEInputController extends Disposable { } const skeleton = this._renderManagerSrv.getRenderById(documentModel.getUnitId()) - ?.with(DocSkeletonManagerService).getSkeleton()?.skeleton; + ?.with(DocSkeletonManagerService).getSkeleton(); const { event, activeRange } = config; diff --git a/packages/docs/src/services/doc-skeleton-manager.service.ts b/packages/docs/src/services/doc-skeleton-manager.service.ts index 508ee578f12..4e41c470802 100644 --- a/packages/docs/src/services/doc-skeleton-manager.service.ts +++ b/packages/docs/src/services/doc-skeleton-manager.service.ts @@ -70,7 +70,7 @@ export class DocSkeletonManagerService extends RxDisposable implements IRenderMo }); } - getSkeleton(): Nullable { + getSkeleton(): DocumentSkeleton { return this._skeleton; }