diff --git a/packages/dooringx-doc/README.md b/packages/dooringx-doc/README.md
index 82510ca..8710f91 100644
--- a/packages/dooringx-doc/README.md
+++ b/packages/dooringx-doc/README.md
@@ -1,38 +1,3 @@
-# create-svelte
+# dooringx-lib文档
-Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte);
-
-## Creating a project
-
-If you're seeing this, you've probably already done this step. Congrats!
-
-```bash
-# create a new project in the current directory
-npm init svelte@next
-
-# create a new project in my-app
-npm init svelte@next my-app
-```
-
-> Note: the `@next` is temporary
-
-## Developing
-
-Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
-
-```bash
-npm run dev
-
-# or start the server and open the app in a new browser tab
-npm run dev -- --open
-```
-
-## Building
-
-Before creating a production version of your app, install an [adapter](https://kit.svelte.dev/docs#adapters) for your target environment. Then:
-
-```bash
-npm run build
-```
-
-> You can preview the built app with `npm run preview`, regardless of whether you installed an adapter. This should _not_ be used to serve your app in production.
+用svelte制作。
\ No newline at end of file
diff --git a/packages/dooringx-example/src/plugin/registComponents/button.tsx b/packages/dooringx-example/src/plugin/registComponents/button.tsx
index 6d44a64..19853a9 100644
--- a/packages/dooringx-example/src/plugin/registComponents/button.tsx
+++ b/packages/dooringx-example/src/plugin/registComponents/button.tsx
@@ -2,7 +2,7 @@
* @Author: yehuozhili
* @Date: 2021-07-07 14:35:38
* @LastEditors: yehuozhili
- * @LastEditTime: 2021-07-10 23:04:56
+ * @LastEditTime: 2021-07-26 14:03:01
* @FilePath: \dooringx\packages\dooringx-example\src\plugin\registComponents\button.tsx
*/
@@ -125,6 +125,12 @@ const MButton = new ComponentItemFactory(
fontWeight: 'normal',
},
},
+ width: 100, // 绝对定位元素初始必须有宽高,否则适配会有问题。
+ height: 30, // 绝对定位元素初始必须有宽高,否则适配会有问题。
+ rotate: {
+ canRotate: true,
+ value: 0,
+ },
},
(data, context, store, config) => {
return ;
diff --git a/packages/dooringx-lib/src/components/blocks.tsx b/packages/dooringx-lib/src/components/blocks.tsx
index fae0302..5a8beed 100644
--- a/packages/dooringx-lib/src/components/blocks.tsx
+++ b/packages/dooringx-lib/src/components/blocks.tsx
@@ -73,8 +73,7 @@ function Blocks(props: PropsWithChildren) {
props.data.left,
props.data.height,
props.data.width,
- props.data.fixed,
- props.data.rotate.value
+ props.data.fixed
);
setPreviewState({ top, left, width, height });
@@ -94,7 +93,6 @@ function Blocks(props: PropsWithChildren) {
props.data.top,
props.data.width,
props.data.fixed,
- props.data.rotate,
]);
const animatecss = useMemo(() => {
diff --git a/packages/dooringx-lib/src/core/components/abstract.ts b/packages/dooringx-lib/src/core/components/abstract.ts
index 26ba323..b95d40c 100644
--- a/packages/dooringx-lib/src/core/components/abstract.ts
+++ b/packages/dooringx-lib/src/core/components/abstract.ts
@@ -2,8 +2,8 @@
* @Author: yehuozhili
* @Date: 2021-03-14 04:29:09
* @LastEditors: yehuozhili
- * @LastEditTime: 2021-04-04 23:14:00
- * @FilePath: \dooringv2\src\core\components\abstract.ts
+ * @LastEditTime: 2021-07-26 12:06:00
+ * @FilePath: \dooringx\packages\dooringx-lib\src\core\components\abstract.ts
*/
import { ComponentItem } from './componentItem';
diff --git a/packages/dooringx-lib/src/core/markline/calcRender.ts b/packages/dooringx-lib/src/core/markline/calcRender.ts
index b6fc550..c0a6ac4 100644
--- a/packages/dooringx-lib/src/core/markline/calcRender.ts
+++ b/packages/dooringx-lib/src/core/markline/calcRender.ts
@@ -2,11 +2,10 @@
* @Author: yehuozhili
* @Date: 2021-03-14 04:29:09
* @LastEditors: yehuozhili
- * @LastEditTime: 2021-07-12 20:56:02
+ * @LastEditTime: 2021-07-26 11:38:11
* @FilePath: \dooringx\packages\dooringx-lib\src\core\markline\calcRender.ts
*/
import { innerDragState } from '../innerDrag/state';
-import { grideModeRender, gridModeDisplay } from './gridMode';
import { switchMarklineDisplay } from './normalMode';
import { resizeCurrentCalculate } from './resizeMarkline';
import { marklineConfig } from './marklineConfig';
@@ -65,14 +64,14 @@ export function marklineCalRender(config: UserConfig) {
}
}
});
- if (marklineConfig.mode === 'grid' && marklineConfig.isAbsorb) {
- gridModeDisplay(left, top, focus, config);
- }
+ // if (marklineConfig.mode === 'grid' && marklineConfig.isAbsorb) {
+ // gridModeDisplay(left, top, focus, config);该模式暂废弃
+ // }
}
- if (marklineConfig.mode === 'grid') {
- grideModeRender(lines, config);
- }
+ // if (marklineConfig.mode === 'grid') {
+ // grideModeRender(lines, config);该模式暂废弃
+ // }
resizeCurrentCalculate(lines, config);
diff --git a/packages/dooringx-lib/src/core/resizeHandler/calcWithRotate.ts b/packages/dooringx-lib/src/core/resizeHandler/calcWithRotate.ts
index c3e5abc..ba31820 100644
--- a/packages/dooringx-lib/src/core/resizeHandler/calcWithRotate.ts
+++ b/packages/dooringx-lib/src/core/resizeHandler/calcWithRotate.ts
@@ -2,7 +2,7 @@
* @Author: yehuozhili
* @Date: 2021-07-22 16:55:10
* @LastEditors: yehuozhili
- * @LastEditTime: 2021-07-26 11:10:48
+ * @LastEditTime: 2021-07-26 14:01:14
* @FilePath: \dooringx\packages\dooringx-lib\src\core\resizeHandler\calcWithRotate.ts
*/
@@ -34,23 +34,27 @@ export function getRect(
item: IBlockType,
rotate: number,
curPositon: Point,
- symmetricPoint: Point
+ symmetricPoint: Point,
+ itemWH: {
+ width: number;
+ height: number;
+ }
) {
switch (direction) {
case 'lt':
calculateTopLeft(item, rotate, curPositon, symmetricPoint);
break;
case 'r':
- calculateRight(item, rotate, curPositon, symmetricPoint);
+ calculateRight(item, rotate, curPositon, symmetricPoint, itemWH);
break;
case 'b':
- calculateBottom(item, rotate, curPositon, symmetricPoint);
+ calculateBottom(item, rotate, curPositon, symmetricPoint, itemWH);
break;
case 'l':
- calculateLeft(item, rotate, curPositon, symmetricPoint);
+ calculateLeft(item, rotate, curPositon, symmetricPoint, itemWH);
break;
case 't':
- calculateTop(item, rotate, curPositon, symmetricPoint);
+ calculateTop(item, rotate, curPositon, symmetricPoint, itemWH);
break;
case 'rb':
calculateBottomRight(item, rotate, curPositon, symmetricPoint);
@@ -72,15 +76,15 @@ function calculateTopLeft(
curPositon: Point,
symmetricPoint: Point
) {
- let newCenterPoint = getCenterPoint(curPositon, symmetricPoint);
- let newTopLeftPoint = calculateRotatedPointCoordinate(curPositon, newCenterPoint, -rotate);
- let newBottomRightPoint = calculateRotatedPointCoordinate(
+ const newCenterPoint = getCenterPoint(curPositon, symmetricPoint);
+ const newTopLeftPoint = calculateRotatedPointCoordinate(curPositon, newCenterPoint, -rotate);
+ const newBottomRightPoint = calculateRotatedPointCoordinate(
symmetricPoint,
newCenterPoint,
-rotate
);
- let newWidth = newBottomRightPoint.x - newTopLeftPoint.x;
- let newHeight = newBottomRightPoint.y - newTopLeftPoint.y;
+ const newWidth = newBottomRightPoint.x - newTopLeftPoint.x;
+ const newHeight = newBottomRightPoint.y - newTopLeftPoint.y;
if (newWidth > 0 && newHeight > 0) {
item.width = Math.round(newWidth);
item.height = Math.round(newHeight);
@@ -95,12 +99,16 @@ function calculateTopRight(
curPositon: Point,
symmetricPoint: Point
) {
- let newCenterPoint = getCenterPoint(curPositon, symmetricPoint);
- let newTopRightPoint = calculateRotatedPointCoordinate(curPositon, newCenterPoint, -rotate);
- let newBottomLeftPoint = calculateRotatedPointCoordinate(symmetricPoint, newCenterPoint, -rotate);
+ const newCenterPoint = getCenterPoint(curPositon, symmetricPoint);
+ const newTopRightPoint = calculateRotatedPointCoordinate(curPositon, newCenterPoint, -rotate);
+ const newBottomLeftPoint = calculateRotatedPointCoordinate(
+ symmetricPoint,
+ newCenterPoint,
+ -rotate
+ );
- let newWidth = newTopRightPoint.x - newBottomLeftPoint.x;
- let newHeight = newBottomLeftPoint.y - newTopRightPoint.y;
+ const newWidth = newTopRightPoint.x - newBottomLeftPoint.x;
+ const newHeight = newBottomLeftPoint.y - newTopRightPoint.y;
if (newWidth > 0 && newHeight > 0) {
item.width = Math.round(newWidth);
@@ -116,12 +124,12 @@ function calculateBottomRight(
curPositon: Point,
symmetricPoint: Point
) {
- let newCenterPoint = getCenterPoint(curPositon, symmetricPoint);
- let newTopLeftPoint = calculateRotatedPointCoordinate(symmetricPoint, newCenterPoint, -rotate);
- let newBottomRightPoint = calculateRotatedPointCoordinate(curPositon, newCenterPoint, -rotate);
+ const newCenterPoint = getCenterPoint(curPositon, symmetricPoint);
+ const newTopLeftPoint = calculateRotatedPointCoordinate(symmetricPoint, newCenterPoint, -rotate);
+ const newBottomRightPoint = calculateRotatedPointCoordinate(curPositon, newCenterPoint, -rotate);
- let newWidth = newBottomRightPoint.x - newTopLeftPoint.x;
- let newHeight = newBottomRightPoint.y - newTopLeftPoint.y;
+ const newWidth = newBottomRightPoint.x - newTopLeftPoint.x;
+ const newHeight = newBottomRightPoint.y - newTopLeftPoint.y;
if (newWidth > 0 && newHeight > 0) {
item.width = Math.round(newWidth);
@@ -137,12 +145,12 @@ function calculateBottomLeft(
curPositon: Point,
symmetricPoint: Point
) {
- let newCenterPoint = getCenterPoint(curPositon, symmetricPoint);
- let newTopRightPoint = calculateRotatedPointCoordinate(symmetricPoint, newCenterPoint, -rotate);
- let newBottomLeftPoint = calculateRotatedPointCoordinate(curPositon, newCenterPoint, -rotate);
+ const newCenterPoint = getCenterPoint(curPositon, symmetricPoint);
+ const newTopRightPoint = calculateRotatedPointCoordinate(symmetricPoint, newCenterPoint, -rotate);
+ const newBottomLeftPoint = calculateRotatedPointCoordinate(curPositon, newCenterPoint, -rotate);
- let newWidth = newTopRightPoint.x - newBottomLeftPoint.x;
- let newHeight = newBottomLeftPoint.y - newTopRightPoint.y;
+ const newWidth = newTopRightPoint.x - newBottomLeftPoint.x;
+ const newHeight = newBottomLeftPoint.y - newTopRightPoint.y;
if (newWidth > 0 && newHeight > 0) {
item.width = Math.round(newWidth);
@@ -152,10 +160,19 @@ function calculateBottomLeft(
}
}
-function calculateTop(item: IBlockType, rotate: number, curPositon: Point, symmetricPoint: Point) {
+function calculateTop(
+ item: IBlockType,
+ rotate: number,
+ curPositon: Point,
+ symmetricPoint: Point,
+ itemWH: {
+ width: number;
+ height: number;
+ }
+) {
const curPoint = resizeState.curPosition;
- let rotatedcurPositon = calculateRotatedPointCoordinate(curPositon, curPoint, -rotate);
- let rotatedTopMiddlePoint = calculateRotatedPointCoordinate(
+ const rotatedcurPositon = calculateRotatedPointCoordinate(curPositon, curPoint, -rotate);
+ const rotatedTopMiddlePoint = calculateRotatedPointCoordinate(
{
x: curPoint.x,
y: rotatedcurPositon.y,
@@ -164,23 +181,20 @@ function calculateTop(item: IBlockType, rotate: number, curPositon: Point, symme
rotate
);
- let newHeight = Math.sqrt(
+ const newHeight = Math.sqrt(
(rotatedTopMiddlePoint.x - symmetricPoint.x) ** 2 +
(rotatedTopMiddlePoint.y - symmetricPoint.y) ** 2
);
-
if (newHeight > 0) {
const newCenter = {
x: rotatedTopMiddlePoint.x - (rotatedTopMiddlePoint.x - symmetricPoint.x) / 2,
y: rotatedTopMiddlePoint.y + (symmetricPoint.y - rotatedTopMiddlePoint.y) / 2,
};
- if (typeof item.width === 'number') {
- let width = item.width;
- item.width = width;
- item.height = Math.round(newHeight);
- item.top = Math.round(newCenter.y - newHeight / 2);
- item.left = Math.round(newCenter.x - item.width / 2);
- }
+ const width = typeof item.width === 'number' ? item.width : itemWH.width;
+ item.width = width;
+ item.height = Math.round(newHeight);
+ item.top = Math.round(newCenter.y - newHeight / 2);
+ item.left = Math.round(newCenter.x - width / 2);
}
}
@@ -188,7 +202,11 @@ function calculateRight(
item: IBlockType,
rotate: number,
curPositon: Point,
- symmetricPoint: Point
+ symmetricPoint: Point,
+ itemWH: {
+ width: number;
+ height: number;
+ }
) {
const curPoint = resizeState.curPosition;
const rotatedcurPositon = calculateRotatedPointCoordinate(curPositon, curPoint, -rotate);
@@ -201,7 +219,7 @@ function calculateRight(
rotate
);
- let newWidth = Math.sqrt(
+ const newWidth = Math.sqrt(
(rotatedRightMiddlePoint.x - symmetricPoint.x) ** 2 +
(rotatedRightMiddlePoint.y - symmetricPoint.y) ** 2
);
@@ -210,13 +228,11 @@ function calculateRight(
x: rotatedRightMiddlePoint.x - (rotatedRightMiddlePoint.x - symmetricPoint.x) / 2,
y: rotatedRightMiddlePoint.y + (symmetricPoint.y - rotatedRightMiddlePoint.y) / 2,
};
- if (typeof item.height === 'number') {
- let height = item.height;
- item.height = height;
- item.width = Math.round(newWidth);
- item.top = Math.round(newCenter.y - item.height / 2);
- item.left = Math.round(newCenter.x - newWidth / 2);
- }
+ const height = typeof item.height === 'number' ? item.height : itemWH.height;
+ item.height = height;
+ item.width = Math.round(newWidth);
+ item.top = Math.round(newCenter.y - height / 2);
+ item.left = Math.round(newCenter.x - newWidth / 2);
}
}
@@ -224,7 +240,11 @@ function calculateBottom(
item: IBlockType,
rotate: number,
curPositon: Point,
- symmetricPoint: Point
+ symmetricPoint: Point,
+ itemWH: {
+ width: number;
+ height: number;
+ }
) {
const curPoint = resizeState.curPosition;
const rotatedcurPositon = calculateRotatedPointCoordinate(curPositon, curPoint, -rotate);
@@ -246,17 +266,24 @@ function calculateBottom(
x: rotatedBottomMiddlePoint.x - (rotatedBottomMiddlePoint.x - symmetricPoint.x) / 2,
y: rotatedBottomMiddlePoint.y + (symmetricPoint.y - rotatedBottomMiddlePoint.y) / 2,
};
- if (typeof item.width === 'number') {
- let width = item.width;
- item.width = width;
- item.height = Math.round(newHeight);
- item.top = Math.round(newCenter.y - newHeight / 2);
- item.left = Math.round(newCenter.x - item.width / 2);
- }
+ const width = typeof item.width === 'number' ? item.width : itemWH.width;
+ item.width = width;
+ item.height = Math.round(newHeight);
+ item.top = Math.round(newCenter.y - newHeight / 2);
+ item.left = Math.round(newCenter.x - width / 2);
}
}
-function calculateLeft(item: IBlockType, rotate: number, curPositon: Point, symmetricPoint: Point) {
+function calculateLeft(
+ item: IBlockType,
+ rotate: number,
+ curPositon: Point,
+ symmetricPoint: Point,
+ itemWH: {
+ width: number;
+ height: number;
+ }
+) {
const curPoint = resizeState.curPosition;
const rotatedcurPositon = calculateRotatedPointCoordinate(curPositon, curPoint, -rotate);
const rotatedLeftMiddlePoint = calculateRotatedPointCoordinate(
@@ -277,12 +304,10 @@ function calculateLeft(item: IBlockType, rotate: number, curPositon: Point, symm
x: rotatedLeftMiddlePoint.x - (rotatedLeftMiddlePoint.x - symmetricPoint.x) / 2,
y: rotatedLeftMiddlePoint.y + (symmetricPoint.y - rotatedLeftMiddlePoint.y) / 2,
};
- if (typeof item.height === 'number') {
- let height = item.height;
- item.height = height;
- item.width = Math.round(newWidth);
- item.top = Math.round(newCenter.y - item.height / 2);
- item.left = Math.round(newCenter.x - newWidth / 2);
- }
+ const height = typeof item.height === 'number' ? item.height : itemWH.height;
+ item.height = height;
+ item.width = Math.round(newWidth);
+ item.top = Math.round(newCenter.y - height / 2);
+ item.left = Math.round(newCenter.x - newWidth / 2);
}
}
diff --git a/packages/dooringx-lib/src/core/resizeHandler/index.tsx b/packages/dooringx-lib/src/core/resizeHandler/index.tsx
index aecaf79..a94eb1b 100644
--- a/packages/dooringx-lib/src/core/resizeHandler/index.tsx
+++ b/packages/dooringx-lib/src/core/resizeHandler/index.tsx
@@ -51,15 +51,6 @@ const onMouseDown = (
x: poffsetLeft / scale,
y: poffsetTop / scale,
};
-
- console.log(
- curPosition,
- 'ww',
- centerX,
- centerY,
- resizeState.currentTarget.getBoundingClientRect().top,
- containerRect.top
- );
resizeState.symmetricPoint = {
x: centerX - (curPosition.x - centerX),
y: centerY - (curPosition.y - centerY),
@@ -176,12 +167,18 @@ export const resizerMouseMove = (e: React.MouseEvent, config: UserConfig) => {
y: (moveY - containerRect.top) / scale,
};
+ const itemRef = resizeState.ref.current.getBoundingClientRect();
+ const itemWH = {
+ width: itemRef.width,
+ height: itemRef.height,
+ };
+
const symmetricPoint = resizeState.symmetricPoint;
const clonedata = deepCopy(store.getData());
const id = resizeState.item.id;
const newblock: IBlockType[] = clonedata.block.map((v: IBlockType) => {
if (v.id === id) {
- getRect(resizeState.direction, v, rotate, movePoint, symmetricPoint);
+ getRect(resizeState.direction, v, rotate, movePoint, symmetricPoint, itemWH);
}
return v;
});
diff --git a/packages/dooringx-lib/src/core/transfer/index.ts b/packages/dooringx-lib/src/core/transfer/index.ts
index 879cadc..e30da81 100644
--- a/packages/dooringx-lib/src/core/transfer/index.ts
+++ b/packages/dooringx-lib/src/core/transfer/index.ts
@@ -2,7 +2,7 @@
* @Author: yehuozhili
* @Date: 2021-04-21 22:59:57
* @LastEditors: yehuozhili
- * @LastEditTime: 2021-07-21 14:33:57
+ * @LastEditTime: 2021-07-26 11:47:19
* @FilePath: \dooringx\packages\dooringx-lib\src\core\transfer\index.ts
*/
@@ -22,10 +22,8 @@ export function transfer(
left: number,
height: string | number | undefined,
width: string | number | undefined,
- isFixed: boolean,
- rotate: number
+ isFixed: boolean
) {
- console.log(rotate);
if (isFixed) {
// 由于是375x667基准,所以top大于667的,那么top为底部高度
let newtop = 0;