update 0.11.7
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
* @Author: yehuozhili
|
||||
* @Date: 2021-03-14 04:29:09
|
||||
* @LastEditors: yehuozhili
|
||||
* @LastEditTime: 2021-12-31 00:25:43
|
||||
* @LastEditTime: 2022-01-12 09:15:44
|
||||
* @FilePath: \dooringx\packages\dooringx-lib\src\core\markline\calcRender.ts
|
||||
*/
|
||||
import { innerDragState } from '../innerDrag/state';
|
||||
@@ -105,137 +105,140 @@ export function marklineCalRender(config: UserConfig, iframe: boolean): LinesTyp
|
||||
|
||||
// 只要cache里有东西,说明有缓存
|
||||
if (marklineState.cache) {
|
||||
if (!marklineState.sortLeft) {
|
||||
marklineState.sortLeft = Object.values(marklineState.cache).sort((a, b) => {
|
||||
return a.left - b.left;
|
||||
});
|
||||
}
|
||||
if (!marklineState.sortTop) {
|
||||
marklineState.sortTop = Object.values(marklineState.cache).sort((a, b) => {
|
||||
return a.top - b.top;
|
||||
});
|
||||
}
|
||||
if (!marklineState.sortBottom) {
|
||||
marklineState.sortBottom = Object.values(marklineState.cache).sort((a, b) => {
|
||||
return a.bottom - b.bottom;
|
||||
});
|
||||
}
|
||||
if (!marklineState.sortRight) {
|
||||
marklineState.sortRight = Object.values(marklineState.cache).sort((a, b) => {
|
||||
return a.right - b.right;
|
||||
});
|
||||
}
|
||||
// 划线的元素不应该冲突
|
||||
// 当横向或者纵向已经吸附过,则后续不进行吸附,差值为0则划线。
|
||||
// 未吸附过时的第一次划线会带吸附,后续按上述走
|
||||
const dirty = {
|
||||
dirtyX: false,
|
||||
dirtyY: false,
|
||||
};
|
||||
const indexLeft = binarySearchRemain<RealStyleType>(
|
||||
realStyle.left,
|
||||
marklineState.sortLeft,
|
||||
'left',
|
||||
marklineConfig.indent
|
||||
);
|
||||
if (indexLeft) {
|
||||
marklineDisplay(realStyle, indexLeft[0], lines, focus, indexLeft[1], dirty, 'left');
|
||||
}
|
||||
|
||||
const indexLeftRight = binarySearchRemain<RealStyleType>(
|
||||
realStyle.left,
|
||||
marklineState.sortRight,
|
||||
'right',
|
||||
marklineConfig.indent
|
||||
);
|
||||
if (indexLeftRight) {
|
||||
marklineDisplay(
|
||||
realStyle,
|
||||
indexLeftRight[0],
|
||||
lines,
|
||||
focus,
|
||||
indexLeftRight[1],
|
||||
dirty,
|
||||
'l-r'
|
||||
const focusItem = config.getFocusState();
|
||||
const isMulti = focusItem.blocks.length > 1;
|
||||
if (!isMulti) {
|
||||
if (!marklineState.sortLeft) {
|
||||
marklineState.sortLeft = Object.values(marklineState.cache).sort((a, b) => {
|
||||
return a.left - b.left;
|
||||
});
|
||||
}
|
||||
if (!marklineState.sortTop) {
|
||||
marklineState.sortTop = Object.values(marklineState.cache).sort((a, b) => {
|
||||
return a.top - b.top;
|
||||
});
|
||||
}
|
||||
if (!marklineState.sortBottom) {
|
||||
marklineState.sortBottom = Object.values(marklineState.cache).sort((a, b) => {
|
||||
return a.bottom - b.bottom;
|
||||
});
|
||||
}
|
||||
if (!marklineState.sortRight) {
|
||||
marklineState.sortRight = Object.values(marklineState.cache).sort((a, b) => {
|
||||
return a.right - b.right;
|
||||
});
|
||||
}
|
||||
// 划线的元素不应该冲突
|
||||
// 当横向或者纵向已经吸附过,则后续不进行吸附,差值为0则划线。
|
||||
// 未吸附过时的第一次划线会带吸附,后续按上述走
|
||||
const dirty = {
|
||||
dirtyX: false,
|
||||
dirtyY: false,
|
||||
};
|
||||
const indexLeft = binarySearchRemain<RealStyleType>(
|
||||
realStyle.left,
|
||||
marklineState.sortLeft,
|
||||
'left',
|
||||
marklineConfig.indent
|
||||
);
|
||||
}
|
||||
const indexRightLeft = binarySearchRemain<RealStyleType>(
|
||||
realStyle.right,
|
||||
marklineState.sortLeft,
|
||||
'left',
|
||||
marklineConfig.indent
|
||||
);
|
||||
if (indexRightLeft) {
|
||||
marklineDisplay(
|
||||
realStyle,
|
||||
indexRightLeft[0],
|
||||
lines,
|
||||
focus,
|
||||
indexRightLeft[1],
|
||||
dirty,
|
||||
'r-l'
|
||||
if (indexLeft) {
|
||||
marklineDisplay(realStyle, indexLeft[0], lines, focus, indexLeft[1], dirty, 'left');
|
||||
}
|
||||
const indexLeftRight = binarySearchRemain<RealStyleType>(
|
||||
realStyle.left,
|
||||
marklineState.sortRight,
|
||||
'right',
|
||||
marklineConfig.indent
|
||||
);
|
||||
}
|
||||
const indexTopBottom = binarySearchRemain<RealStyleType>(
|
||||
realStyle.top,
|
||||
marklineState.sortBottom,
|
||||
'bottom',
|
||||
marklineConfig.indent
|
||||
);
|
||||
if (indexTopBottom) {
|
||||
marklineDisplay(
|
||||
realStyle,
|
||||
indexTopBottom[0],
|
||||
lines,
|
||||
focus,
|
||||
indexTopBottom[1],
|
||||
dirty,
|
||||
't-b'
|
||||
if (indexLeftRight) {
|
||||
marklineDisplay(
|
||||
realStyle,
|
||||
indexLeftRight[0],
|
||||
lines,
|
||||
focus,
|
||||
indexLeftRight[1],
|
||||
dirty,
|
||||
'l-r'
|
||||
);
|
||||
}
|
||||
const indexRightLeft = binarySearchRemain<RealStyleType>(
|
||||
realStyle.right,
|
||||
marklineState.sortLeft,
|
||||
'left',
|
||||
marklineConfig.indent
|
||||
);
|
||||
}
|
||||
const indexBottomTop = binarySearchRemain<RealStyleType>(
|
||||
realStyle.bottom,
|
||||
marklineState.sortTop,
|
||||
'top',
|
||||
marklineConfig.indent
|
||||
);
|
||||
if (indexBottomTop) {
|
||||
marklineDisplay(
|
||||
realStyle,
|
||||
indexBottomTop[0],
|
||||
lines,
|
||||
focus,
|
||||
indexBottomTop[1],
|
||||
dirty,
|
||||
'b-t'
|
||||
if (indexRightLeft) {
|
||||
marklineDisplay(
|
||||
realStyle,
|
||||
indexRightLeft[0],
|
||||
lines,
|
||||
focus,
|
||||
indexRightLeft[1],
|
||||
dirty,
|
||||
'r-l'
|
||||
);
|
||||
}
|
||||
const indexTopBottom = binarySearchRemain<RealStyleType>(
|
||||
realStyle.top,
|
||||
marklineState.sortBottom,
|
||||
'bottom',
|
||||
marklineConfig.indent
|
||||
);
|
||||
}
|
||||
const indexTop = binarySearchRemain<RealStyleType>(
|
||||
realStyle.top,
|
||||
marklineState.sortTop,
|
||||
'top',
|
||||
marklineConfig.indent
|
||||
);
|
||||
if (indexTop) {
|
||||
marklineDisplay(realStyle, indexTop[0], lines, focus, indexTop[1], dirty, 'top');
|
||||
}
|
||||
const indexRight = binarySearchRemain<RealStyleType>(
|
||||
realStyle.right,
|
||||
marklineState.sortRight,
|
||||
'right',
|
||||
marklineConfig.indent
|
||||
);
|
||||
if (indexRight) {
|
||||
marklineDisplay(realStyle, indexRight[0], lines, focus, indexRight[1], dirty, 'right');
|
||||
}
|
||||
const indexBottom = binarySearchRemain<RealStyleType>(
|
||||
realStyle.bottom,
|
||||
marklineState.sortBottom,
|
||||
'bottom',
|
||||
marklineConfig.indent
|
||||
);
|
||||
if (indexBottom) {
|
||||
marklineDisplay(realStyle, indexBottom[0], lines, focus, indexBottom[1], dirty, 'bottom');
|
||||
if (indexTopBottom) {
|
||||
marklineDisplay(
|
||||
realStyle,
|
||||
indexTopBottom[0],
|
||||
lines,
|
||||
focus,
|
||||
indexTopBottom[1],
|
||||
dirty,
|
||||
't-b'
|
||||
);
|
||||
}
|
||||
const indexBottomTop = binarySearchRemain<RealStyleType>(
|
||||
realStyle.bottom,
|
||||
marklineState.sortTop,
|
||||
'top',
|
||||
marklineConfig.indent
|
||||
);
|
||||
if (indexBottomTop) {
|
||||
marklineDisplay(
|
||||
realStyle,
|
||||
indexBottomTop[0],
|
||||
lines,
|
||||
focus,
|
||||
indexBottomTop[1],
|
||||
dirty,
|
||||
'b-t'
|
||||
);
|
||||
}
|
||||
const indexTop = binarySearchRemain<RealStyleType>(
|
||||
realStyle.top,
|
||||
marklineState.sortTop,
|
||||
'top',
|
||||
marklineConfig.indent
|
||||
);
|
||||
if (indexTop) {
|
||||
marklineDisplay(realStyle, indexTop[0], lines, focus, indexTop[1], dirty, 'top');
|
||||
}
|
||||
const indexRight = binarySearchRemain<RealStyleType>(
|
||||
realStyle.right,
|
||||
marklineState.sortRight,
|
||||
'right',
|
||||
marklineConfig.indent
|
||||
);
|
||||
if (indexRight) {
|
||||
marklineDisplay(realStyle, indexRight[0], lines, focus, indexRight[1], dirty, 'right');
|
||||
}
|
||||
const indexBottom = binarySearchRemain<RealStyleType>(
|
||||
realStyle.bottom,
|
||||
marklineState.sortBottom,
|
||||
'bottom',
|
||||
marklineConfig.indent
|
||||
);
|
||||
if (indexBottom) {
|
||||
marklineDisplay(realStyle, indexBottom[0], lines, focus, indexBottom[1], dirty, 'bottom');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (let i = 0; i < len; i++) {
|
||||
|
Reference in New Issue
Block a user