@plait/core 0.68.0 → 0.69.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/plugins/with-moving.mjs +3 -11
- package/esm2022/plugins/with-selection.mjs +6 -5
- package/esm2022/utils/dom/foreign.mjs +4 -4
- package/esm2022/utils/index.mjs +1 -2
- package/fesm2022/plait-core.mjs +9 -61
- package/fesm2022/plait-core.mjs.map +1 -1
- package/package.json +1 -1
- package/utils/index.d.ts +0 -1
- package/esm2022/utils/touch.mjs +0 -47
- package/utils/touch.d.ts +0 -16
package/fesm2022/plait-core.mjs
CHANGED
|
@@ -1278,14 +1278,14 @@ function createForeignObject(x, y, width, height) {
|
|
|
1278
1278
|
var newForeignObject = document.createElementNS(NS, 'foreignObject');
|
|
1279
1279
|
newForeignObject.setAttribute('x', `${x}`);
|
|
1280
1280
|
newForeignObject.setAttribute('y', `${y}`);
|
|
1281
|
-
newForeignObject.setAttribute('width', `${width}`);
|
|
1281
|
+
newForeignObject.setAttribute('width', `${ceilToDecimal(width, 0)}`);
|
|
1282
1282
|
newForeignObject.setAttribute('height', `${height}`);
|
|
1283
1283
|
return newForeignObject;
|
|
1284
1284
|
}
|
|
1285
1285
|
function updateForeignObject(target, width, height, x, y) {
|
|
1286
1286
|
const foreignObject = target instanceof SVGForeignObjectElement ? target : target.querySelector('foreignObject');
|
|
1287
1287
|
if (foreignObject) {
|
|
1288
|
-
foreignObject.setAttribute('width', `${ceilToDecimal(width,
|
|
1288
|
+
foreignObject.setAttribute('width', `${ceilToDecimal(width, 0)}`);
|
|
1289
1289
|
foreignObject.setAttribute('height', `${height}`);
|
|
1290
1290
|
foreignObject.setAttribute('x', `${x}`);
|
|
1291
1291
|
foreignObject.setAttribute('y', `${y}`);
|
|
@@ -1294,7 +1294,7 @@ function updateForeignObject(target, width, height, x, y) {
|
|
|
1294
1294
|
function updateForeignObjectWidth(target, width) {
|
|
1295
1295
|
const foreignObject = target instanceof SVGForeignObjectElement ? target : target.querySelector('foreignObject');
|
|
1296
1296
|
if (foreignObject) {
|
|
1297
|
-
foreignObject.setAttribute('width', `${ceilToDecimal(width,
|
|
1297
|
+
foreignObject.setAttribute('width', `${ceilToDecimal(width, 0)}`);
|
|
1298
1298
|
}
|
|
1299
1299
|
}
|
|
1300
1300
|
|
|
@@ -2843,51 +2843,6 @@ const setClipboardData = async (dataTransfer, clipboardContext) => {
|
|
|
2843
2843
|
}
|
|
2844
2844
|
};
|
|
2845
2845
|
|
|
2846
|
-
const BOARD_TO_TOUCH_REF = new WeakMap();
|
|
2847
|
-
const isPreventTouchMove = (board) => {
|
|
2848
|
-
return !!BOARD_TO_TOUCH_REF.get(board);
|
|
2849
|
-
};
|
|
2850
|
-
const preventTouchMove = (board, event, state) => {
|
|
2851
|
-
const hostElement = PlaitBoard.getElementHost(board);
|
|
2852
|
-
const activeHostElement = PlaitBoard.getElementActiveHost(board);
|
|
2853
|
-
if (state) {
|
|
2854
|
-
if ((event.target instanceof HTMLElement || event.target instanceof SVGElement) &&
|
|
2855
|
-
(hostElement.contains(event.target) || activeHostElement.contains(event.target))) {
|
|
2856
|
-
BOARD_TO_TOUCH_REF.set(board, { state, target: event.target instanceof SVGElement ? event.target : undefined });
|
|
2857
|
-
}
|
|
2858
|
-
else {
|
|
2859
|
-
BOARD_TO_TOUCH_REF.set(board, { state, target: undefined });
|
|
2860
|
-
}
|
|
2861
|
-
}
|
|
2862
|
-
else {
|
|
2863
|
-
const ref = BOARD_TO_TOUCH_REF.get(board);
|
|
2864
|
-
if (ref) {
|
|
2865
|
-
BOARD_TO_TOUCH_REF.delete(board);
|
|
2866
|
-
ref.host?.remove();
|
|
2867
|
-
}
|
|
2868
|
-
}
|
|
2869
|
-
};
|
|
2870
|
-
/**
|
|
2871
|
-
* some intersection maybe cause target is removed from current browser window,
|
|
2872
|
-
* after it was removed touch move event will not be fired
|
|
2873
|
-
* so scroll behavior will can not be prevented in mobile browser device
|
|
2874
|
-
* this function will prevent target element being remove.
|
|
2875
|
-
*/
|
|
2876
|
-
const handleTouchTarget = (board) => {
|
|
2877
|
-
const touchRef = BOARD_TO_TOUCH_REF.get(board);
|
|
2878
|
-
if (touchRef &&
|
|
2879
|
-
touchRef.target &&
|
|
2880
|
-
!PlaitBoard.getElementHost(board).contains(touchRef.target) &&
|
|
2881
|
-
!PlaitBoard.getElementActiveHost(board).contains(touchRef.target)) {
|
|
2882
|
-
touchRef.target.style.opacity = '0';
|
|
2883
|
-
const host = createG();
|
|
2884
|
-
host.appendChild(touchRef.target);
|
|
2885
|
-
touchRef.host = host;
|
|
2886
|
-
host.classList.add('touch-target');
|
|
2887
|
-
PlaitBoard.getElementActiveHost(board).append(host);
|
|
2888
|
-
}
|
|
2889
|
-
};
|
|
2890
|
-
|
|
2891
2846
|
function isSelectionMoving(board) {
|
|
2892
2847
|
return !!BOARD_TO_IS_SELECTION_MOVING.get(board);
|
|
2893
2848
|
}
|
|
@@ -5933,10 +5888,7 @@ function withMoving(board) {
|
|
|
5933
5888
|
keyUp(event);
|
|
5934
5889
|
};
|
|
5935
5890
|
board.pointerDown = (event) => {
|
|
5936
|
-
if (PlaitBoard.isReadonly(board) ||
|
|
5937
|
-
!PlaitBoard.isPointer(board, PlaitPointerType.selection) ||
|
|
5938
|
-
isPreventTouchMove(board) ||
|
|
5939
|
-
!isMainPointer(event)) {
|
|
5891
|
+
if (PlaitBoard.isReadonly(board) || !PlaitBoard.isPointer(board, PlaitPointerType.selection) || !isMainPointer(event)) {
|
|
5940
5892
|
pointerDown(event);
|
|
5941
5893
|
return;
|
|
5942
5894
|
}
|
|
@@ -5948,14 +5900,12 @@ function withMoving(board) {
|
|
|
5948
5900
|
startPoint = point;
|
|
5949
5901
|
activeElements = selectedTargetElements;
|
|
5950
5902
|
activeElementsRectangle = getRectangleByElements(board, activeElements, true);
|
|
5951
|
-
preventTouchMove(board, event, true);
|
|
5952
5903
|
}
|
|
5953
5904
|
else if (hitTargetElement) {
|
|
5954
5905
|
startPoint = point;
|
|
5955
5906
|
const relatedElements = board.getRelatedFragment([], [hitTargetElement]);
|
|
5956
5907
|
activeElements = [...getElementsInGroupByElement(board, hitTargetElement), ...relatedElements];
|
|
5957
5908
|
activeElementsRectangle = getRectangleByElements(board, activeElements, true);
|
|
5958
|
-
preventTouchMove(board, event, true);
|
|
5959
5909
|
}
|
|
5960
5910
|
else {
|
|
5961
5911
|
// 只有判定用户未击中元素之后才可以验证用户是否击中了已选元素所在的空白区域
|
|
@@ -5966,7 +5916,6 @@ function withMoving(board) {
|
|
|
5966
5916
|
startPoint = point;
|
|
5967
5917
|
activeElements = selectedTargetElements;
|
|
5968
5918
|
activeElementsRectangle = targetRectangle;
|
|
5969
|
-
preventTouchMove(board, event, true);
|
|
5970
5919
|
}
|
|
5971
5920
|
}
|
|
5972
5921
|
pointerDown(event);
|
|
@@ -6005,7 +5954,6 @@ function withMoving(board) {
|
|
|
6005
5954
|
snapG = ref.snapG;
|
|
6006
5955
|
snapG.classList.add(ACTIVE_MOVING_CLASS_NAME);
|
|
6007
5956
|
PlaitBoard.getElementActiveHost(board).append(snapG);
|
|
6008
|
-
handleTouchTarget(board);
|
|
6009
5957
|
if (event.altKey) {
|
|
6010
5958
|
pendingNodesG = drawPendingNodesG(board, activeElements, offsetX, offsetY);
|
|
6011
5959
|
pendingNodesG && PlaitBoard.getElementActiveHost(board).append(pendingNodesG);
|
|
@@ -6046,7 +5994,6 @@ function withMoving(board) {
|
|
|
6046
5994
|
if (startPoint) {
|
|
6047
5995
|
cancelMove(board);
|
|
6048
5996
|
}
|
|
6049
|
-
preventTouchMove(board, event, false);
|
|
6050
5997
|
globalPointerUp(event);
|
|
6051
5998
|
};
|
|
6052
5999
|
function cancelMove(board) {
|
|
@@ -6226,8 +6173,10 @@ function withSelection(board) {
|
|
|
6226
6173
|
const point = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
6227
6174
|
const isHitTarget = isHitElement(board, point);
|
|
6228
6175
|
const options = getSelectionOptions(board);
|
|
6229
|
-
if (PlaitBoard.isPointer(board, PlaitPointerType.selection) &&
|
|
6230
|
-
|
|
6176
|
+
if (PlaitBoard.isPointer(board, PlaitPointerType.selection) &&
|
|
6177
|
+
!isHitTarget &&
|
|
6178
|
+
options.isMultipleSelection &&
|
|
6179
|
+
!options.isDisabledSelection) {
|
|
6231
6180
|
// start rectangle selection
|
|
6232
6181
|
start = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
6233
6182
|
}
|
|
@@ -6289,7 +6238,6 @@ function withSelection(board) {
|
|
|
6289
6238
|
}
|
|
6290
6239
|
start = null;
|
|
6291
6240
|
end = null;
|
|
6292
|
-
preventTouchMove(board, event, false);
|
|
6293
6241
|
globalPointerUp(event);
|
|
6294
6242
|
};
|
|
6295
6243
|
board.onChange = () => {
|
|
@@ -6601,5 +6549,5 @@ function createModModifierKeys() {
|
|
|
6601
6549
|
* Generated bundle index. Do not edit.
|
|
6602
6550
|
*/
|
|
6603
6551
|
|
|
6604
|
-
export { A, ACTIVE_MOVING_CLASS_NAME, ACTIVE_STROKE_WIDTH, ALT, APOSTROPHE, ATTACHED_ELEMENT_CLASS_NAME, AT_SIGN, B, BACKSLASH, BACKSPACE, BOARD_TO_AFTER_CHANGE, BOARD_TO_CONTEXT, BOARD_TO_ELEMENT_HOST, BOARD_TO_HOST, BOARD_TO_IS_SELECTION_MOVING, BOARD_TO_MOVING_ELEMENT, BOARD_TO_MOVING_POINT, BOARD_TO_MOVING_POINT_IN_BOARD, BOARD_TO_ON_CHANGE, BOARD_TO_ROUGH_SVG, BOARD_TO_SELECTED_ELEMENT, BOARD_TO_TEMPORARY_ELEMENTS,
|
|
6552
|
+
export { A, ACTIVE_MOVING_CLASS_NAME, ACTIVE_STROKE_WIDTH, ALT, APOSTROPHE, ATTACHED_ELEMENT_CLASS_NAME, AT_SIGN, B, BACKSLASH, BACKSPACE, BOARD_TO_AFTER_CHANGE, BOARD_TO_CONTEXT, BOARD_TO_ELEMENT_HOST, BOARD_TO_HOST, BOARD_TO_IS_SELECTION_MOVING, BOARD_TO_MOVING_ELEMENT, BOARD_TO_MOVING_POINT, BOARD_TO_MOVING_POINT_IN_BOARD, BOARD_TO_ON_CHANGE, BOARD_TO_ROUGH_SVG, BOARD_TO_SELECTED_ELEMENT, BOARD_TO_TEMPORARY_ELEMENTS, BOARD_TO_VIEWPORT_ORIGINATION, BoardTransforms, C, CAPS_LOCK, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, ColorfulThemeColor, CoreTransforms, CursorClass, D, DASH, DEFAULT_COLOR, DELETE, DOWN_ARROW, DarkThemeColor, DebugGenerator, DefaultThemeColor, Direction, E, EIGHT, ELEMENT_TO_REF, END, ENTER, EQUALS, ESCAPE, ElementFlavour, F, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, FF_EQUALS, FF_MINUS, FF_MUTE, FF_SEMICOLON, FF_VOLUME_DOWN, FF_VOLUME_UP, FIRST_MEDIA, FIVE, FLUSHING, FOUR, G, H, HIT_DISTANCE_BUFFER, HOME, HOST_CLASS_NAME, I, INSERT, IS_APPLE, IS_BOARD_ALIVE, IS_BOARD_CACHE, IS_CHROME, IS_CHROME_LEGACY, IS_DRAGGING, IS_EDGE_LEGACY, IS_FIREFOX, IS_IOS, IS_MAC, IS_SAFARI, IS_TEXT_EDITABLE, J, K, KEY_TO_ELEMENT_MAP, L, LAST_MEDIA, LEFT_ARROW, ListRender, M, MAC_ENTER, MAC_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, MAX_RADIUS, MAX_ZOOM, MERGING, META, MIN_ZOOM, MUTE, N, NINE, NODE_TO_CONTAINER_G, NODE_TO_G, NODE_TO_INDEX, NODE_TO_PARENT, NS, NUMPAD_DIVIDE, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_MULTIPLY, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_PERIOD, NUMPAD_PLUS, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, NUM_CENTER, NUM_LOCK, O, ONE, OPEN_SQUARE_BRACKET, P, PAGE_DOWN, PAGE_UP, PATH_REFS, PAUSE, PERIOD, PLUS_SIGN, POINTER_BUTTON, PRESS_AND_MOVE_BUFFER, PRINT_SCREEN, Path, PlaitBoard, PlaitBoardContext, PlaitElement, PlaitGroupElement, PlaitHistoryBoard, PlaitNode, PlaitOperation, PlaitPluginKey, PlaitPointerType, Point, Q, QUESTION_MARK, R, RESIZE_CURSORS, RESIZE_HANDLE_CLASS_NAME, RIGHT_ARROW, ROTATE_HANDLE_CLASS_NAME, RectangleClient, ResizeCursorClass, RetroThemeColor, RgbaToHEX, S, SAVING, SCROLL_BAR_WIDTH, SCROLL_LOCK, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, SELECTION_RECTANGLE_BOUNDING_CLASS_NAME, SELECTION_RECTANGLE_CLASS_NAME, SEMICOLON, SEVEN, SHIFT, SINGLE_QUOTE, SIX, SLASH, SNAPPING_STROKE_WIDTH, SNAP_TOLERANCE, SPACE, Selection, SoftThemeColor, StarryThemeColor, T, TAB, THREE, TILDE, TWO, ThemeColorMode, ThemeColors, Transforms, U, UP_ARROW, V, VOLUME_DOWN, VOLUME_UP, Viewport, W, WritableClipboardOperationType, WritableClipboardType, X, Y, Z, ZERO, ZOOM_STEP, addClipboardContext, addSelectedElement, approximately, arrowPoints, buildPlaitHtml, cacheMovingElements, cacheSelectedElements, cacheSelectedElementsWithGroup, cacheSelectedElementsWithGroupOnShift, calcNewViewBox, canAddGroup, canRemoveGroup, canSetZIndex, catmullRomFitting, ceilToDecimal, clampZoomLevel, clearNodeWeakMap, clearSelectedElement, clearSelectionMoving, clearViewportOrigination, createBoard, createClipboardContext, createDebugGenerator, createFakeEvent, createForeignObject, createG, createGroup, createGroupRectangleG, createKeyboardEvent, createMask, createModModifierKeys, createMouseEvent, createPath, createPointerEvent, createRect, createSVG, createTestingBoard, createText, createTouchEvent, debounce, degreesToRadians, deleteFragment, deleteTemporaryElements, depthFirstRecursion, distanceBetweenPointAndPoint, distanceBetweenPointAndRectangle, distanceBetweenPointAndSegment, distanceBetweenPointAndSegments, downloadImage, drawArrow, drawBezierPath, drawCircle, drawDashedLines, drawLine, drawLinearPath, drawPendingNodesG, drawPointSnapLines, drawRectangle, drawRoundRectangle, drawSelectionRectangleG, drawSolidLines, duplicateElements, fakeNodeWeakMap, filterSelectedGroups, findElements, findIndex, findLastIndex, getAllElementsInGroup, getAllMoveOptions, getAngleBetweenPoints, getAngleByElement, getBarPoint, getBoardRectangle, getBoundingRectangleByElements, getClipboardData, getClipboardFromHtml, getCrossingPointsBetweenEllipseAndSegment, getDataTransferClipboard, getDataTransferClipboardText, getEditingGroup, getElementById, getElementHostBBox, getElementMap, getElementsInGroup, getElementsInGroupByElement, getElementsIndices, getEllipseTangentSlope, getGroupByElement, getHighestGroup, getHighestIndexOfElement, getHighestSelectedElements, getHighestSelectedGroup, getHighestSelectedGroups, getHitElementByPoint, getHitElementsByPoint, getHitElementsBySelection, getHitSelectedElements, getIsRecursionFunc, getMinPointDelta, getMovingElements, getNearestDelta, getNearestPointBetweenPointAndEllipse, getNearestPointBetweenPointAndSegment, getNearestPointBetweenPointAndSegments, getNearestPointRectangle, getOffsetAfterRotate, getOneMoveOptions, getProbablySupportsClipboardRead, getProbablySupportsClipboardWrite, getProbablySupportsClipboardWriteText, getRealScrollBarWidth, getRectangleByAngle, getRectangleByElements, getRectangleByGroup, getRotatedBoundingRectangle, getSelectedElements, getSelectedGroups, getSelectedIsolatedElements, getSelectedIsolatedElementsCanAddToGroup, getSelectedTargetElements, getSelectionAngle, getSelectionOptions, getSnapRectangles, getTemporaryElements, getTemporaryRef, getTripleAxis, getValidElements, getVectorFromPointAndSlope, getViewBox, getViewBoxCenterPoint, getViewportContainerRect, getViewportOrigination, hasBeforeContextChange, hasInputOrTextareaTarget, hasOnContextChanged, hasSameAngle, hasSelectedElementsInSameGroup, hasSetSelectionOperation, hasValidAngle, hotkeys, idCreator, initializeViewBox, initializeViewportContainer, initializeViewportOffset, inverse, isAxisChangedByAngle, isContextmenu, isDOMElement, isDOMNode, isDebug, isDragging, isFromScrolling, isFromViewportChange, isHandleSelection, isHitElement, isHitSelectedRectangle, isInPlaitBoard, isIndicesContinuous, isLineHitLine, isMainPointer, isMovingElements, isNullOrUndefined, isPointInEllipse, isPointInPolygon, isPointInRoundRectangle, isPolylineHitRectangle, isSecondaryPointer, isSelectedAllElementsInGroup, isSelectedElement, isSelectedElementOrGroup, isSelectionMoving, isSetSelectionOperation, isSetThemeOperation, isSetViewportOperation, isSnapPoint, mountElementG, moveElementsToNewPath, moveElementsToNewPathAfterAddGroup, nonGroupInHighestSelectedElements, normalizeAngle, normalizePoint, radiansToDegrees, removeMovingElements, removeSelectedElement, replaceAngleBrackets, replaceSelectedElement, reverseReplaceAngleBrackets, rotate, rotateAntiPointsByElement, rotateElements, rotatePoints, rotatePointsByElement, rotatedDataPoints, scrollToRectangle, setAngleForG, setClipboardData, setDataTransferClipboard, setDataTransferClipboardText, setDragging, setFragment, setIsFromScrolling, setIsFromViewportChange, setPathStrokeLinecap, setSVGViewBox, setSelectedElementsWithGroup, setSelectionMoving, setSelectionOptions, setStrokeLinecap, shouldClear, shouldMerge, shouldSave, sortElements, stripHtml, temporaryDisableSelection, throttleRAF, toDomPrecision, toFixed, toHostPoint, toHostPointFromViewBoxPoint, toImage, toScreenPointFromHostPoint, toViewBoxPoint, toViewBoxPoints, uniqueById, updateForeignObject, updateForeignObjectWidth, updatePoints, updateViewportByScrolling, updateViewportContainerScroll, updateViewportOffset, updateViewportOrigination, withArrowMoving, withBoard, withHandPointer, withHistory, withHotkey, withMoving, withOptions, withRelatedFragment, withSelection, withViewport };
|
|
6605
6553
|
//# sourceMappingURL=plait-core.mjs.map
|