From ad8a747328459626c4f145d3c7ff1c5b68ccaab5 Mon Sep 17 00:00:00 2001 From: chenshenhai Date: Sun, 8 Aug 2021 22:15:20 +0800 Subject: [PATCH] feat: add getScreenTransform --- packages/core/examples/features/lib/scale.js | 2 +- packages/core/examples/features/lib/scroll.js | 2 ++ packages/core/src/index.ts | 19 ++++++++++++++----- packages/types/src/lib/screen.ts | 6 +++--- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/packages/core/examples/features/lib/scale.js b/packages/core/examples/features/lib/scale.js index b41354b..5be9e2b 100644 --- a/packages/core/examples/features/lib/scale.js +++ b/packages/core/examples/features/lib/scale.js @@ -10,9 +10,9 @@ export function doScale(core, scale) { } input.addEventListener('change', () => { const val = input.value * 1; - console.log('scale ===', val); if (val > 0) { core.scale(val); + console.log(core.getScreenTransform()); } }); hasInited = true; diff --git a/packages/core/examples/features/lib/scroll.js b/packages/core/examples/features/lib/scroll.js index 1ed6c4d..73c9942 100644 --- a/packages/core/examples/features/lib/scroll.js +++ b/packages/core/examples/features/lib/scroll.js @@ -20,12 +20,14 @@ export function doScroll(core, conf = {}) { const val = inputX.value * 1; if (val >= 0 || val < 0) { core.scrollLeft(val); + console.log(core.getScreenTransform()); } }); inputY.addEventListener('change', () => { const val = inputY.value * 1; if (val >= 0 || val < 0) { core.scrollTop(val); + console.log(core.getScreenTransform()); } }); hasInited = true; diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 33d1489..63ef502 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,7 +1,7 @@ import { TypeData, TypePoint, TypeBoardSizeOptions, TypeHelperWrapperDotDirection, TypeConfig, TypeConfigStrict, TypeElementBase, - TypeElement, TypeElemDesc, TypeContext, TypeCoreOptions, TypeScreenContext, + TypeElement, TypeElemDesc, TypeContext, TypeCoreOptions, TypeScreenContext, TypeScreenData, } from '@idraw/types'; import Board from '@idraw/board'; import util from '@idraw/util'; @@ -168,6 +168,15 @@ class Core { return screen; } + getScreenTransform(): TypeScreenData { + const transform = this[_board].getTransform(); + return { + scale: transform.scale, + scrollTop: Math.max(0, 0 - transform.scrollY), + scrollLeft: Math.max(0, 0 - transform.scrollX), + } + } + getData(): TypeData { return deepClone(this[_data]); } @@ -439,10 +448,10 @@ class Core { private [_emitChangeScreen]() { if (this[_coreEvent].has('changeScreen')) { this[_coreEvent].trigger('changeScreen', { - ...this[_board].getTransform(), - ...{ - selectedElementUUID: this[_tempData].get('selectedUUID') - } + ...this.getScreenTransform(), + // ...{ + // selectedElementUUID: this[_tempData].get('selectedUUID') + // } }); } } diff --git a/packages/types/src/lib/screen.ts b/packages/types/src/lib/screen.ts index 89ac700..10f6bb3 100644 --- a/packages/types/src/lib/screen.ts +++ b/packages/types/src/lib/screen.ts @@ -1,8 +1,8 @@ type TypeScreenData = { scale: number; - scrollY: number; - scrollX: number; - selectedElementUUID: string | null; + scrollLeft: number; + scrollTop: number; + // selectedElementUUID: string | null; } type TypeScreenPosition = {