@plait/mind 0.25.0 → 0.27.0-next.0
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/base/image-base.component.d.ts +10 -3
- package/esm2020/base/image-base.component.mjs +31 -2
- package/esm2020/drawer/node-image.drawer.mjs +1 -2
- package/esm2020/interfaces/element.mjs +2 -4
- package/esm2020/node.component.mjs +18 -14
- package/esm2020/plugins/with-abstract-resize.mjs +3 -3
- package/esm2020/plugins/with-mind-create.mjs +5 -3
- package/esm2020/plugins/with-mind-hotkey.mjs +20 -22
- package/esm2020/plugins/with-mind.mjs +23 -37
- package/esm2020/plugins/with-node-dnd.mjs +11 -11
- package/esm2020/plugins/with-node-image-resize.mjs +48 -0
- package/esm2020/plugins/with-node-image.mjs +20 -19
- package/esm2020/plugins/with-node-resize.mjs +25 -17
- package/esm2020/utils/clipboard.mjs +7 -33
- package/esm2020/utils/node/common.mjs +7 -2
- package/esm2020/utils/node/image.mjs +1 -1
- package/esm2020/utils/position/image.mjs +14 -4
- package/fesm2015/plait-mind.mjs +202 -149
- package/fesm2015/plait-mind.mjs.map +1 -1
- package/fesm2020/plait-mind.mjs +202 -149
- package/fesm2020/plait-mind.mjs.map +1 -1
- package/package.json +1 -1
- package/plugins/with-node-image-resize.d.ts +2 -0
- package/plugins/with-node-resize.d.ts +1 -1
- package/styles/styles.scss +0 -2
- package/utils/clipboard.d.ts +3 -6
- package/utils/node/common.d.ts +2 -1
- package/utils/node/image.d.ts +5 -4
- package/utils/position/image.d.ts +11 -1
package/fesm2015/plait-mind.mjs
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Component, ChangeDetectionStrategy, NgModule, NgZone, Directive, Input, HostListener } from '@angular/core';
|
|
3
3
|
import * as i2 from '@plait/core';
|
|
4
|
-
import { DefaultThemeColor, ColorfulThemeColor, SoftThemeColor, RetroThemeColor, DarkThemeColor, StarryThemeColor, RectangleClient, PlaitElement, PlaitPluginKey, idCreator, isNullOrUndefined, Transforms, clearSelectedElement, addSelectedElement, PlaitBoard, Path, PlaitNode, PlaitContextService, depthFirstRecursion, getIsRecursionFunc, drawLinearPath, drawBezierPath, createG, updateForeignObject, drawRoundRectangle, getRectangleByElements,
|
|
4
|
+
import { DefaultThemeColor, ColorfulThemeColor, SoftThemeColor, RetroThemeColor, DarkThemeColor, StarryThemeColor, RectangleClient, PlaitElement, PlaitPluginKey, getSelectedElements, idCreator, isNullOrUndefined, Transforms, clearSelectedElement, addSelectedElement, PlaitBoard, Path, PlaitNode, PlaitContextService, depthFirstRecursion, getIsRecursionFunc, drawLinearPath, drawBezierPath, createG, updateForeignObject, drawRoundRectangle, getRectangleByElements, NODE_TO_PARENT, distanceBetweenPointAndRectangle, createForeignObject, createText, PlaitPointerType, PlaitPluginElementComponent, NODE_TO_INDEX, PlaitModule, isMainPointer, transformPoint, toPoint, getHitElements, distanceBetweenPointAndPoint, setClipboardData, setClipboardDataByText, BOARD_TO_HOST, throttleRAF, BoardTransforms, removeSelectedElement, PlaitHistoryBoard, hotkeys, setClipboardDataByMedia, getClipboardDataByMedia, ResizeCursorClass, preventTouchMove, PRESS_AND_MOVE_BUFFER, MERGING, getDataFromClipboard } from '@plait/core';
|
|
5
5
|
import { MindLayoutType, isIndentedLayout, AbstractNode, isStandardLayout, isHorizontalLogicLayout, isVerticalLogicLayout, getNonAbstractChildren, isLeftLayout, isRightLayout, isTopLayout, isBottomLayout, isHorizontalLayout, getCorrectStartEnd, ConnectingPosition, getAbstractLayout, GlobalLayout } from '@plait/layouts';
|
|
6
6
|
import { PlaitMarkEditor, MarkTypes, DEFAULT_FONT_SIZE, TEXT_DEFAULT_HEIGHT, buildText, getTextSize, TextManage, ExitOrigin, TextModule, getTextFromClipboard } from '@plait/text';
|
|
7
7
|
import { fromEvent, Subject } from 'rxjs';
|
|
8
|
+
import { RESIZE_HANDLE_DIAMETER, getRectangleResizeTargets, MediaKeys, ResizeDirection, withResize, ActiveGenerator } from '@plait/common';
|
|
8
9
|
import { Node as Node$1, Path as Path$1 } from 'slate';
|
|
9
10
|
import { __awaiter } from 'tslib';
|
|
10
11
|
import { isKeyHotkey } from 'is-hotkey';
|
|
@@ -381,11 +382,20 @@ function getImageForeignRectangle(board, element) {
|
|
|
381
382
|
width,
|
|
382
383
|
height
|
|
383
384
|
};
|
|
384
|
-
return
|
|
385
|
+
return rectangle;
|
|
385
386
|
}
|
|
386
387
|
const isHitImage = (board, element, range) => {
|
|
387
|
-
const
|
|
388
|
-
|
|
388
|
+
const imageRectangle = getImageForeignRectangle(board, element);
|
|
389
|
+
const imageOutlineRectangle = RectangleClient.getOutlineRectangle(imageRectangle, -RESIZE_HANDLE_DIAMETER / 2);
|
|
390
|
+
return RectangleClient.isHit(RectangleClient.toRectangleClient([range.anchor, range.focus]), imageOutlineRectangle);
|
|
391
|
+
};
|
|
392
|
+
const getHitImageResizeHandleDirection = (board, element, point) => {
|
|
393
|
+
const imageRectangle = getImageForeignRectangle(board, element);
|
|
394
|
+
const resizeTargets = getRectangleResizeTargets(imageRectangle, RESIZE_HANDLE_DIAMETER);
|
|
395
|
+
const result = resizeTargets.find(resizeTarget => {
|
|
396
|
+
return RectangleClient.isHit(RectangleClient.toRectangleClient([point, point]), resizeTarget.rectangle);
|
|
397
|
+
});
|
|
398
|
+
return result;
|
|
389
399
|
};
|
|
390
400
|
|
|
391
401
|
function editTopic(element) {
|
|
@@ -401,6 +411,10 @@ const temporaryDisableSelection = (board) => {
|
|
|
401
411
|
board.setPluginOptions(PlaitPluginKey.withSelection, Object.assign({}, currentOptions));
|
|
402
412
|
}, 0);
|
|
403
413
|
};
|
|
414
|
+
const getSelectedMindElements = (board) => {
|
|
415
|
+
const selectedElements = getSelectedElements(board).filter(value => MindElement.isMindElement(board, value));
|
|
416
|
+
return selectedElements;
|
|
417
|
+
};
|
|
404
418
|
|
|
405
419
|
const createEmptyMind = (point) => {
|
|
406
420
|
const element = createMindElement('思维导图', 72, ROOT_TOPIC_HEIGHT, { layout: MindLayoutType.right });
|
|
@@ -2313,9 +2327,7 @@ const MindElement = {
|
|
|
2313
2327
|
return isIndentedLayout(_layout);
|
|
2314
2328
|
},
|
|
2315
2329
|
isMindElement(board, element) {
|
|
2316
|
-
|
|
2317
|
-
const rootElement = PlaitNode.get(board, path.slice(0, 1));
|
|
2318
|
-
if (PlaitMind.isMind(rootElement)) {
|
|
2330
|
+
if (element.data && element.data.topic && element.width && element.height) {
|
|
2319
2331
|
return true;
|
|
2320
2332
|
}
|
|
2321
2333
|
else {
|
|
@@ -2942,7 +2954,6 @@ class NodeImageDrawer {
|
|
|
2942
2954
|
this.g = createG();
|
|
2943
2955
|
const foreignRectangle = getImageForeignRectangle(this.board, element);
|
|
2944
2956
|
this.foreignObject = createForeignObject(foreignRectangle.x, foreignRectangle.y, foreignRectangle.width, foreignRectangle.height);
|
|
2945
|
-
this.foreignObject.style.padding = `6px`;
|
|
2946
2957
|
this.g.append(this.foreignObject);
|
|
2947
2958
|
const componentType = this.board.getPluginOptions(WithMindPluginKey).imageComponentType;
|
|
2948
2959
|
if (!componentType) {
|
|
@@ -3006,19 +3017,23 @@ class MindNodeComponent extends PlaitPluginElementComponent {
|
|
|
3006
3017
|
this.collapseDrawer = new CollapseDrawer(this.board);
|
|
3007
3018
|
this.imageDrawer = new NodeImageDrawer(this.board, this.viewContainerRef);
|
|
3008
3019
|
const plugins = this.board.getPluginOptions(WithMindPluginKey).textPlugins;
|
|
3009
|
-
this.textManage = new TextManage(this.board, this.viewContainerRef,
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3020
|
+
this.textManage = new TextManage(this.board, this.viewContainerRef, {
|
|
3021
|
+
getRectangle: () => {
|
|
3022
|
+
const rect = getTopicRectangleByNode(this.board, this.node);
|
|
3023
|
+
return rect;
|
|
3024
|
+
},
|
|
3025
|
+
onValueChangeHandle: (textManageRef) => {
|
|
3026
|
+
const width = textManageRef.width;
|
|
3027
|
+
const height = textManageRef.height;
|
|
3028
|
+
if (textManageRef.newValue) {
|
|
3029
|
+
MindTransforms.setTopic(this.board, this.element, textManageRef.newValue, width, height);
|
|
3030
|
+
}
|
|
3031
|
+
else {
|
|
3032
|
+
MindTransforms.setTopicSize(this.board, this.element, width, height);
|
|
3033
|
+
}
|
|
3034
|
+
},
|
|
3035
|
+
textPlugins: plugins
|
|
3036
|
+
});
|
|
3022
3037
|
}
|
|
3023
3038
|
ngOnInit() {
|
|
3024
3039
|
super.ngOnInit();
|
|
@@ -3261,7 +3276,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
|
|
|
3261
3276
|
|
|
3262
3277
|
const DRAG_MOVE_BUFFER = 5;
|
|
3263
3278
|
const withNodeDnd = (board) => {
|
|
3264
|
-
const {
|
|
3279
|
+
const { pointerDown, pointerMove, globalPointerUp } = board;
|
|
3265
3280
|
let activeElements = [];
|
|
3266
3281
|
let correspondingElements = [];
|
|
3267
3282
|
let startPoint;
|
|
@@ -3269,12 +3284,12 @@ const withNodeDnd = (board) => {
|
|
|
3269
3284
|
let fakeDropNodeG;
|
|
3270
3285
|
let dropTarget = null;
|
|
3271
3286
|
let targetPath;
|
|
3272
|
-
board.
|
|
3287
|
+
board.pointerDown = (event) => {
|
|
3273
3288
|
if (PlaitBoard.isReadonly(board) ||
|
|
3274
3289
|
PlaitBoard.hasBeenTextEditing(board) ||
|
|
3275
3290
|
!PlaitBoard.isPointer(board, PlaitPointerType.selection) ||
|
|
3276
3291
|
!isMainPointer(event)) {
|
|
3277
|
-
|
|
3292
|
+
pointerDown(event);
|
|
3278
3293
|
return;
|
|
3279
3294
|
}
|
|
3280
3295
|
const point = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
@@ -3299,14 +3314,14 @@ const withNodeDnd = (board) => {
|
|
|
3299
3314
|
}
|
|
3300
3315
|
}
|
|
3301
3316
|
if (activeElements.length) {
|
|
3302
|
-
// prevent text from being selected
|
|
3303
|
-
event.preventDefault();
|
|
3304
3317
|
correspondingElements = getOverallAbstracts(board, activeElements);
|
|
3305
3318
|
}
|
|
3306
|
-
|
|
3319
|
+
pointerDown(event);
|
|
3307
3320
|
};
|
|
3308
|
-
board.
|
|
3321
|
+
board.pointerMove = (event) => {
|
|
3309
3322
|
if (!board.options.readonly && (activeElements === null || activeElements === void 0 ? void 0 : activeElements.length) && startPoint) {
|
|
3323
|
+
// prevent text from being selected
|
|
3324
|
+
event.preventDefault();
|
|
3310
3325
|
const endPoint = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
3311
3326
|
const distance = distanceBetweenPointAndPoint(startPoint[0], startPoint[1], endPoint[0], endPoint[1]);
|
|
3312
3327
|
if (distance < DRAG_MOVE_BUFFER) {
|
|
@@ -3334,9 +3349,9 @@ const withNodeDnd = (board) => {
|
|
|
3334
3349
|
});
|
|
3335
3350
|
PlaitBoard.getHost(board).appendChild(dragFakeNodeG);
|
|
3336
3351
|
}
|
|
3337
|
-
|
|
3352
|
+
pointerMove(event);
|
|
3338
3353
|
};
|
|
3339
|
-
board.
|
|
3354
|
+
board.globalPointerUp = (event) => {
|
|
3340
3355
|
const firstLevelElements = getFirstLevelElement(activeElements);
|
|
3341
3356
|
if (!board.options.readonly && firstLevelElements.length) {
|
|
3342
3357
|
firstLevelElements.push(...correspondingElements);
|
|
@@ -3425,12 +3440,12 @@ const withNodeDnd = (board) => {
|
|
|
3425
3440
|
fakeDropNodeG = undefined;
|
|
3426
3441
|
dropTarget = null;
|
|
3427
3442
|
}
|
|
3428
|
-
|
|
3443
|
+
globalPointerUp(event);
|
|
3429
3444
|
};
|
|
3430
3445
|
return board;
|
|
3431
3446
|
};
|
|
3432
3447
|
|
|
3433
|
-
const buildClipboardData = (board, selectedElements) => {
|
|
3448
|
+
const buildClipboardData = (board, selectedElements, startPoint) => {
|
|
3434
3449
|
let result = [];
|
|
3435
3450
|
// get overall abstract
|
|
3436
3451
|
const overallAbstracts = getOverallAbstracts(board, selectedElements);
|
|
@@ -3440,11 +3455,10 @@ const buildClipboardData = (board, selectedElements) => {
|
|
|
3440
3455
|
const newSelectedElements = selectedElements.filter(value => !validAbstractRefs.find(ref => ref.abstract === value));
|
|
3441
3456
|
newSelectedElements.push(...validAbstractRefs.map(value => value.abstract));
|
|
3442
3457
|
const selectedMindNodes = newSelectedElements.map(value => MindElement.getNode(value));
|
|
3443
|
-
const nodesRectangle = getRectangleByElements(board, newSelectedElements, true);
|
|
3444
3458
|
newSelectedElements.forEach((element, index) => {
|
|
3445
3459
|
// handle relative location
|
|
3446
3460
|
const nodeRectangle = getRectangleByNode(selectedMindNodes[index]);
|
|
3447
|
-
const points = [[nodeRectangle.x -
|
|
3461
|
+
const points = [[nodeRectangle.x - startPoint[0], nodeRectangle.y - startPoint[1]]];
|
|
3448
3462
|
// handle invalid abstract
|
|
3449
3463
|
const abstractRef = validAbstractRefs.find(ref => ref.abstract === element);
|
|
3450
3464
|
if (AbstractNode.isAbstract(element) && abstractRef) {
|
|
@@ -3467,37 +3481,12 @@ const buildClipboardData = (board, selectedElements) => {
|
|
|
3467
3481
|
});
|
|
3468
3482
|
return result;
|
|
3469
3483
|
};
|
|
3470
|
-
const
|
|
3471
|
-
const stringObj = JSON.stringify(elements);
|
|
3472
|
-
const encoded = window.btoa(encodeURIComponent(stringObj));
|
|
3484
|
+
const setMindClipboardData = (data, elements) => {
|
|
3473
3485
|
const text = elements.reduce((string, currentNode) => {
|
|
3474
3486
|
return string + extractNodesText(currentNode);
|
|
3475
3487
|
}, '');
|
|
3476
|
-
data
|
|
3477
|
-
data
|
|
3478
|
-
};
|
|
3479
|
-
const setClipboardDataByImage = (data, image) => {
|
|
3480
|
-
const stringObj = JSON.stringify(image);
|
|
3481
|
-
const encoded = window.btoa(encodeURIComponent(stringObj));
|
|
3482
|
-
data === null || data === void 0 ? void 0 : data.setData(`application/${CLIP_BOARD_IMAGE_FORMAT_KEY}`, encoded);
|
|
3483
|
-
};
|
|
3484
|
-
const getImageItemFromClipboard = (data) => {
|
|
3485
|
-
const encoded = data === null || data === void 0 ? void 0 : data.getData(`application/${CLIP_BOARD_IMAGE_FORMAT_KEY}`);
|
|
3486
|
-
let imageItem = null;
|
|
3487
|
-
if (encoded) {
|
|
3488
|
-
const decoded = decodeURIComponent(window.atob(encoded));
|
|
3489
|
-
imageItem = JSON.parse(decoded);
|
|
3490
|
-
}
|
|
3491
|
-
return imageItem;
|
|
3492
|
-
};
|
|
3493
|
-
const getDataFromClipboard = (data) => {
|
|
3494
|
-
const encoded = data === null || data === void 0 ? void 0 : data.getData(`application/${CLIP_BOARD_FORMAT_KEY}`);
|
|
3495
|
-
let nodesData = [];
|
|
3496
|
-
if (encoded) {
|
|
3497
|
-
const decoded = decodeURIComponent(window.atob(encoded));
|
|
3498
|
-
nodesData = JSON.parse(decoded);
|
|
3499
|
-
}
|
|
3500
|
-
return nodesData;
|
|
3488
|
+
setClipboardData(data, elements);
|
|
3489
|
+
setClipboardDataByText(data, text);
|
|
3501
3490
|
};
|
|
3502
3491
|
const insertClipboardData = (board, elements, targetPoint) => {
|
|
3503
3492
|
let newElement, path;
|
|
@@ -3570,8 +3559,6 @@ const withAbstract = (board) => {
|
|
|
3570
3559
|
return abstractHandlePosition;
|
|
3571
3560
|
});
|
|
3572
3561
|
if (activeAbstractElement) {
|
|
3573
|
-
// prevent text from being selected
|
|
3574
|
-
event.preventDefault();
|
|
3575
3562
|
if (newBoard === null || newBoard === void 0 ? void 0 : newBoard.onAbstractResize) {
|
|
3576
3563
|
newBoard.onAbstractResize(AbstractResizeState.start);
|
|
3577
3564
|
}
|
|
@@ -3586,6 +3573,8 @@ const withAbstract = (board) => {
|
|
|
3586
3573
|
const endPoint = transformPoint(board, toPoint(event.x, event.y, host));
|
|
3587
3574
|
touchedAbstract = handleTouchedAbstract(board, touchedAbstract, endPoint);
|
|
3588
3575
|
if (abstractHandlePosition && activeAbstractElement) {
|
|
3576
|
+
// prevent text from being selected
|
|
3577
|
+
event.preventDefault();
|
|
3589
3578
|
const abstractComponent = PlaitElement.getComponent(activeAbstractElement);
|
|
3590
3579
|
const element = abstractComponent.element;
|
|
3591
3580
|
const nodeLayout = MindQueries.getCorrectLayoutByElement(board, activeAbstractElement);
|
|
@@ -3695,8 +3684,10 @@ const withCreateMind = (board) => {
|
|
|
3695
3684
|
const nodeG = drawRoundRectangleByElement(board, nodeRectangle, emptyMind);
|
|
3696
3685
|
const topicRectangle = getTopicRectangleByElement(newBoard, nodeRectangle, emptyMind);
|
|
3697
3686
|
if (!fakeCreateNodeRef) {
|
|
3698
|
-
const textManage = new TextManage(board, PlaitBoard.getComponent(board).viewContainerRef,
|
|
3699
|
-
|
|
3687
|
+
const textManage = new TextManage(board, PlaitBoard.getComponent(board).viewContainerRef, {
|
|
3688
|
+
getRectangle: () => {
|
|
3689
|
+
return topicRectangle;
|
|
3690
|
+
}
|
|
3700
3691
|
});
|
|
3701
3692
|
PlaitBoard.getComponent(board)
|
|
3702
3693
|
.viewContainerRef.injector.get(NgZone)
|
|
@@ -3765,7 +3756,7 @@ const withCreateMind = (board) => {
|
|
|
3765
3756
|
|
|
3766
3757
|
const withMindHotkey = (baseBoard) => {
|
|
3767
3758
|
const board = baseBoard;
|
|
3768
|
-
const { keydown } = board;
|
|
3759
|
+
const { keydown, deleteFragment } = board;
|
|
3769
3760
|
board.keydown = (event) => {
|
|
3770
3761
|
const selectedElements = getSelectedElements(board);
|
|
3771
3762
|
const isSingleSelection = selectedElements.length === 1;
|
|
@@ -3805,24 +3796,6 @@ const withMindHotkey = (baseBoard) => {
|
|
|
3805
3796
|
insertMindElement(board, targetElement, findNewSiblingNodePath(board, targetElement));
|
|
3806
3797
|
return;
|
|
3807
3798
|
}
|
|
3808
|
-
if (selectedElements.length > 0 && (hotkeys.isDeleteBackward(event) || hotkeys.isDeleteForward(event))) {
|
|
3809
|
-
event.preventDefault();
|
|
3810
|
-
const targetMindElements = selectedElements.filter(el => MindElement.isMindElement(board, el));
|
|
3811
|
-
const firstLevelElements = getFirstLevelElement(targetMindElements);
|
|
3812
|
-
if (firstLevelElements.length > 0) {
|
|
3813
|
-
const deletableElements = [...firstLevelElements].reverse();
|
|
3814
|
-
const abstractRefs = deleteElementHandleAbstract(board, deletableElements);
|
|
3815
|
-
MindTransforms.setAbstractsByRefs(board, abstractRefs);
|
|
3816
|
-
const refs = deleteElementsHandleRightNodeCount(board, targetMindElements);
|
|
3817
|
-
MindTransforms.setRightNodeCountByRefs(board, refs);
|
|
3818
|
-
MindTransforms.removeElements(board, targetMindElements);
|
|
3819
|
-
const nextSelected = getNextSelectedElement(board, firstLevelElements);
|
|
3820
|
-
if (nextSelected) {
|
|
3821
|
-
addSelectedElement(board, nextSelected);
|
|
3822
|
-
}
|
|
3823
|
-
}
|
|
3824
|
-
return;
|
|
3825
|
-
}
|
|
3826
3799
|
if (!isVirtualKey(event) && !isSpaceHotkey(event) && isSingleSelection) {
|
|
3827
3800
|
event.preventDefault();
|
|
3828
3801
|
editTopic(targetElement);
|
|
@@ -3831,6 +3804,22 @@ const withMindHotkey = (baseBoard) => {
|
|
|
3831
3804
|
}
|
|
3832
3805
|
keydown(event);
|
|
3833
3806
|
};
|
|
3807
|
+
board.deleteFragment = (data) => {
|
|
3808
|
+
const targetMindElements = getSelectedMindElements(board);
|
|
3809
|
+
if (targetMindElements.length) {
|
|
3810
|
+
const firstLevelElements = getFirstLevelElement(targetMindElements).reverse();
|
|
3811
|
+
const abstractRefs = deleteElementHandleAbstract(board, firstLevelElements);
|
|
3812
|
+
MindTransforms.setAbstractsByRefs(board, abstractRefs);
|
|
3813
|
+
const refs = deleteElementsHandleRightNodeCount(board, targetMindElements);
|
|
3814
|
+
MindTransforms.setRightNodeCountByRefs(board, refs);
|
|
3815
|
+
MindTransforms.removeElements(board, targetMindElements);
|
|
3816
|
+
const nextSelected = getNextSelectedElement(board, firstLevelElements);
|
|
3817
|
+
if (nextSelected) {
|
|
3818
|
+
addSelectedElement(board, nextSelected);
|
|
3819
|
+
}
|
|
3820
|
+
}
|
|
3821
|
+
deleteFragment(data);
|
|
3822
|
+
};
|
|
3834
3823
|
return board;
|
|
3835
3824
|
};
|
|
3836
3825
|
const getNextSelectedElement = (board, firstLevelElements) => {
|
|
@@ -3943,24 +3932,24 @@ const withNodeHoverDetect = (board) => {
|
|
|
3943
3932
|
};
|
|
3944
3933
|
|
|
3945
3934
|
const withNodeImage = (board) => {
|
|
3946
|
-
const { keydown,
|
|
3947
|
-
board.
|
|
3935
|
+
const { keydown, pointerDown, globalPointerUp, setFragment, insertFragment, deleteFragment } = board;
|
|
3936
|
+
board.pointerDown = (event) => {
|
|
3948
3937
|
const selectedImageElement = getSelectedImageElement(board);
|
|
3949
3938
|
if (PlaitBoard.isReadonly(board) || !isMainPointer(event) || !PlaitBoard.isPointer(board, PlaitPointerType.selection)) {
|
|
3950
3939
|
if (selectedImageElement) {
|
|
3951
3940
|
setImageFocus(board, selectedImageElement, false);
|
|
3952
3941
|
}
|
|
3953
|
-
|
|
3942
|
+
pointerDown(event);
|
|
3954
3943
|
return;
|
|
3955
3944
|
}
|
|
3956
3945
|
const point = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
3957
3946
|
const range = { anchor: point, focus: point };
|
|
3958
|
-
const
|
|
3959
|
-
const hasImage =
|
|
3960
|
-
const hitImage = hasImage && isHitImage(board,
|
|
3961
|
-
if (selectedImageElement && hitImage &&
|
|
3947
|
+
const hitImageElements = getHitElements(board, { ranges: [range] }, (value) => MindElement.isMindElement(board, value) && MindElement.hasImage(value));
|
|
3948
|
+
const hasImage = hitImageElements.length;
|
|
3949
|
+
const hitImage = hasImage > 0 && isHitImage(board, hitImageElements[0], range);
|
|
3950
|
+
if (selectedImageElement && hitImage && hitImageElements[0] === selectedImageElement) {
|
|
3962
3951
|
temporaryDisableSelection(board);
|
|
3963
|
-
|
|
3952
|
+
pointerDown(event);
|
|
3964
3953
|
return;
|
|
3965
3954
|
}
|
|
3966
3955
|
if (selectedImageElement) {
|
|
@@ -3968,9 +3957,9 @@ const withNodeImage = (board) => {
|
|
|
3968
3957
|
}
|
|
3969
3958
|
if (hitImage) {
|
|
3970
3959
|
temporaryDisableSelection(board);
|
|
3971
|
-
setImageFocus(board,
|
|
3960
|
+
setImageFocus(board, hitImageElements[0], true);
|
|
3972
3961
|
}
|
|
3973
|
-
|
|
3962
|
+
pointerDown(event);
|
|
3974
3963
|
};
|
|
3975
3964
|
board.keydown = (event) => {
|
|
3976
3965
|
const selectedImageElement = getSelectedImageElement(board);
|
|
@@ -3981,7 +3970,7 @@ const withNodeImage = (board) => {
|
|
|
3981
3970
|
}
|
|
3982
3971
|
keydown(event);
|
|
3983
3972
|
};
|
|
3984
|
-
board.
|
|
3973
|
+
board.globalPointerUp = (event) => {
|
|
3985
3974
|
if (PlaitBoard.isFocus(board)) {
|
|
3986
3975
|
const isInBoard = event.target instanceof Node && PlaitBoard.getBoardContainer(board).contains(event.target);
|
|
3987
3976
|
const selectedImageElement = getSelectedImageElement(board);
|
|
@@ -3990,15 +3979,15 @@ const withNodeImage = (board) => {
|
|
|
3990
3979
|
setImageFocus(board, selectedImageElement, false);
|
|
3991
3980
|
}
|
|
3992
3981
|
}
|
|
3993
|
-
|
|
3982
|
+
globalPointerUp(event);
|
|
3994
3983
|
};
|
|
3995
|
-
board.setFragment = (data) => {
|
|
3984
|
+
board.setFragment = (data, rectangle) => {
|
|
3996
3985
|
const selectedImageElement = getSelectedImageElement(board);
|
|
3997
3986
|
if (selectedImageElement) {
|
|
3998
|
-
|
|
3987
|
+
setClipboardDataByMedia(data, selectedImageElement.data.image, MediaKeys.image);
|
|
3999
3988
|
return;
|
|
4000
3989
|
}
|
|
4001
|
-
setFragment(data);
|
|
3990
|
+
setFragment(data, rectangle);
|
|
4002
3991
|
};
|
|
4003
3992
|
board.deleteFragment = (data) => {
|
|
4004
3993
|
const selectedImageElement = getSelectedImageElement(board);
|
|
@@ -4020,10 +4009,11 @@ const withNodeImage = (board) => {
|
|
|
4020
4009
|
return;
|
|
4021
4010
|
}
|
|
4022
4011
|
}
|
|
4023
|
-
const imageItem =
|
|
4012
|
+
const imageItem = getClipboardDataByMedia(data, MediaKeys.image);
|
|
4024
4013
|
if (imageItem && (isSingleSelection || isSelectedImage)) {
|
|
4025
4014
|
const selectedElement = (selectedElements[0] || getSelectedImageElement(board));
|
|
4026
4015
|
MindTransforms.setImage(board, selectedElement, imageItem);
|
|
4016
|
+
return;
|
|
4027
4017
|
}
|
|
4028
4018
|
insertFragment(data, targetPoint);
|
|
4029
4019
|
};
|
|
@@ -4031,25 +4021,30 @@ const withNodeImage = (board) => {
|
|
|
4031
4021
|
};
|
|
4032
4022
|
|
|
4033
4023
|
const withNodeResize = (board) => {
|
|
4034
|
-
const {
|
|
4024
|
+
const { pointerDown, pointerMove, globalPointerUp } = board;
|
|
4035
4025
|
let targetElement = null;
|
|
4036
4026
|
let targetElementRef = null;
|
|
4037
4027
|
let startPoint = null;
|
|
4038
|
-
board.
|
|
4039
|
-
|
|
4028
|
+
board.pointerDown = (event) => {
|
|
4029
|
+
const point = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
4030
|
+
const newTargetElement = getSelectedTarget(board, point);
|
|
4031
|
+
if (newTargetElement) {
|
|
4032
|
+
PlaitBoard.getBoardContainer(board).classList.add(ResizeCursorClass['ew-resize']);
|
|
4033
|
+
targetElement = newTargetElement;
|
|
4040
4034
|
startPoint = [event.x, event.y];
|
|
4041
|
-
// prevent text from being selected
|
|
4042
|
-
event.preventDefault();
|
|
4043
4035
|
return;
|
|
4044
4036
|
}
|
|
4045
|
-
|
|
4037
|
+
pointerDown(event);
|
|
4046
4038
|
};
|
|
4047
|
-
board.
|
|
4039
|
+
board.pointerMove = (event) => {
|
|
4048
4040
|
if (PlaitBoard.isReadonly(board) || PlaitBoard.hasBeenTextEditing(board)) {
|
|
4049
|
-
|
|
4041
|
+
pointerMove(event);
|
|
4050
4042
|
return;
|
|
4051
4043
|
}
|
|
4052
4044
|
if (startPoint && targetElement && !isMindNodeResizing(board)) {
|
|
4045
|
+
// prevent text from being selected
|
|
4046
|
+
event.preventDefault();
|
|
4047
|
+
preventTouchMove(board, true);
|
|
4053
4048
|
const endPoint = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
4054
4049
|
const distance = distanceBetweenPointAndPoint(startPoint[0], startPoint[1], endPoint[0], endPoint[1]);
|
|
4055
4050
|
if (distance > PRESS_AND_MOVE_BUFFER) {
|
|
@@ -4064,6 +4059,9 @@ const withNodeResize = (board) => {
|
|
|
4064
4059
|
}
|
|
4065
4060
|
}
|
|
4066
4061
|
if (isMindNodeResizing(board) && startPoint && targetElementRef) {
|
|
4062
|
+
// prevent text from being selected
|
|
4063
|
+
event.preventDefault();
|
|
4064
|
+
preventTouchMove(board, true);
|
|
4067
4065
|
throttleRAF(() => {
|
|
4068
4066
|
if (!startPoint) {
|
|
4069
4067
|
return;
|
|
@@ -4088,26 +4086,26 @@ const withNodeResize = (board) => {
|
|
|
4088
4086
|
// press and start drag when node is non selected
|
|
4089
4087
|
if (!isDragging(board)) {
|
|
4090
4088
|
const point = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
4091
|
-
const newTargetElement =
|
|
4089
|
+
const newTargetElement = getSelectedTarget(board, point);
|
|
4092
4090
|
if (newTargetElement) {
|
|
4093
4091
|
PlaitBoard.getBoardContainer(board).classList.add(ResizeCursorClass['ew-resize']);
|
|
4094
4092
|
}
|
|
4095
4093
|
else {
|
|
4096
4094
|
PlaitBoard.getBoardContainer(board).classList.remove(ResizeCursorClass['ew-resize']);
|
|
4097
4095
|
}
|
|
4098
|
-
targetElement = newTargetElement;
|
|
4099
4096
|
}
|
|
4100
4097
|
}
|
|
4101
|
-
|
|
4098
|
+
pointerMove(event);
|
|
4102
4099
|
};
|
|
4103
|
-
board.
|
|
4104
|
-
|
|
4100
|
+
board.globalPointerUp = (event) => {
|
|
4101
|
+
globalPointerUp(event);
|
|
4105
4102
|
if (isMindNodeResizing(board) || targetElement) {
|
|
4106
4103
|
targetElement && removeResizing(board, targetElement);
|
|
4107
4104
|
targetElementRef = null;
|
|
4108
4105
|
targetElement = null;
|
|
4109
4106
|
startPoint = null;
|
|
4110
4107
|
MERGING.set(board, false);
|
|
4108
|
+
preventTouchMove(board, false);
|
|
4111
4109
|
}
|
|
4112
4110
|
};
|
|
4113
4111
|
return board;
|
|
@@ -4131,7 +4129,7 @@ const removeResizing = (board, element) => {
|
|
|
4131
4129
|
}
|
|
4132
4130
|
IS_MIND_NODE_RESIZING.set(board, false);
|
|
4133
4131
|
};
|
|
4134
|
-
const
|
|
4132
|
+
const getSelectedTarget = (board, point) => {
|
|
4135
4133
|
const selectedElements = getSelectedElements(board).filter(value => MindElement.isMindElement(board, value));
|
|
4136
4134
|
if (selectedElements.length > 0) {
|
|
4137
4135
|
const target = selectedElements.find(value => {
|
|
@@ -4148,9 +4146,52 @@ const getResizeActiveRectangle = (board, element) => {
|
|
|
4148
4146
|
return { x: rectangle.x + rectangle.width - EXTEND_OFFSET, y: rectangle.y, width: EXTEND_OFFSET * 2, height: rectangle.height };
|
|
4149
4147
|
};
|
|
4150
4148
|
|
|
4149
|
+
const withNodeImageResize = (board) => {
|
|
4150
|
+
const options = {
|
|
4151
|
+
key: 'mind-node-image',
|
|
4152
|
+
canResize: () => {
|
|
4153
|
+
return true;
|
|
4154
|
+
},
|
|
4155
|
+
detect: (point) => {
|
|
4156
|
+
const selectedMindElement = getSelectedImageElement(board);
|
|
4157
|
+
if (selectedMindElement) {
|
|
4158
|
+
const result = getHitImageResizeHandleDirection(board, selectedMindElement, point);
|
|
4159
|
+
if (result) {
|
|
4160
|
+
return {
|
|
4161
|
+
element: selectedMindElement,
|
|
4162
|
+
direction: result.direction,
|
|
4163
|
+
cursorClass: result.cursorClass
|
|
4164
|
+
};
|
|
4165
|
+
}
|
|
4166
|
+
}
|
|
4167
|
+
return null;
|
|
4168
|
+
},
|
|
4169
|
+
onResize: (resizeRef, resizeState) => {
|
|
4170
|
+
let offsetX = resizeState.offsetX;
|
|
4171
|
+
let offsetY = resizeState.offsetY;
|
|
4172
|
+
if (resizeRef.direction === ResizeDirection.nw || resizeRef.direction === ResizeDirection.sw) {
|
|
4173
|
+
offsetX = -offsetX;
|
|
4174
|
+
}
|
|
4175
|
+
const originWidth = resizeRef.element.data.image.width;
|
|
4176
|
+
const originHeight = resizeRef.element.data.image.height;
|
|
4177
|
+
let width = originWidth + offsetX;
|
|
4178
|
+
if (width <= 100) {
|
|
4179
|
+
width = 100;
|
|
4180
|
+
}
|
|
4181
|
+
const ratio = originWidth / width;
|
|
4182
|
+
const height = originHeight / ratio;
|
|
4183
|
+
const imageItem = Object.assign(Object.assign({}, resizeRef.element.data.image), { width, height });
|
|
4184
|
+
MindTransforms.setImage(board, PlaitNode.get(board, resizeRef.path), imageItem);
|
|
4185
|
+
addSelectedImageElement(board, PlaitNode.get(board, resizeRef.path));
|
|
4186
|
+
}
|
|
4187
|
+
};
|
|
4188
|
+
withResize(board, options);
|
|
4189
|
+
return board;
|
|
4190
|
+
};
|
|
4191
|
+
|
|
4151
4192
|
const withMind = (baseBoard) => {
|
|
4152
4193
|
const board = baseBoard;
|
|
4153
|
-
const { drawElement, dblclick, insertFragment, setFragment,
|
|
4194
|
+
const { drawElement, dblclick, insertFragment, setFragment, isHitSelection, getRectangle, isMovable, isRecursion } = board;
|
|
4154
4195
|
board.drawElement = (context) => {
|
|
4155
4196
|
if (PlaitMind.isMind(context.element)) {
|
|
4156
4197
|
return PlaitMindComponent;
|
|
@@ -4214,48 +4255,34 @@ const withMind = (baseBoard) => {
|
|
|
4214
4255
|
}
|
|
4215
4256
|
dblclick(event);
|
|
4216
4257
|
};
|
|
4217
|
-
board.setFragment = (data) => {
|
|
4218
|
-
const
|
|
4219
|
-
|
|
4220
|
-
|
|
4221
|
-
|
|
4222
|
-
|
|
4223
|
-
}
|
|
4224
|
-
setFragment(data);
|
|
4258
|
+
board.setFragment = (data, rectangle) => {
|
|
4259
|
+
const targetMindElements = getSelectedMindElements(board);
|
|
4260
|
+
const firstLevelElements = getFirstLevelElement(targetMindElements);
|
|
4261
|
+
if (firstLevelElements.length) {
|
|
4262
|
+
const elements = buildClipboardData(board, firstLevelElements, rectangle ? [rectangle.x, rectangle.y] : [0, 0]);
|
|
4263
|
+
setMindClipboardData(data, elements);
|
|
4264
|
+
}
|
|
4265
|
+
setFragment(data, rectangle);
|
|
4225
4266
|
};
|
|
4226
4267
|
board.insertFragment = (data, targetPoint) => {
|
|
4227
|
-
if (board.options.readonly) {
|
|
4228
|
-
insertFragment(data, targetPoint);
|
|
4229
|
-
return;
|
|
4230
|
-
}
|
|
4231
4268
|
const elements = getDataFromClipboard(data);
|
|
4232
|
-
|
|
4233
|
-
|
|
4269
|
+
const mindElements = elements.filter(value => MindElement.isMindElement(board, value));
|
|
4270
|
+
if (elements.length > 0 && mindElements.length > 0) {
|
|
4271
|
+
insertClipboardData(board, mindElements, targetPoint);
|
|
4234
4272
|
}
|
|
4235
|
-
else {
|
|
4236
|
-
const
|
|
4237
|
-
if (
|
|
4273
|
+
else if (elements.length === 0) {
|
|
4274
|
+
const mindElements = getSelectedMindElements(board);
|
|
4275
|
+
if (mindElements.length === 1) {
|
|
4238
4276
|
const text = getTextFromClipboard(data);
|
|
4239
4277
|
if (text) {
|
|
4240
|
-
insertClipboardText(board,
|
|
4278
|
+
insertClipboardText(board, mindElements[0], buildText(text));
|
|
4279
|
+
return;
|
|
4241
4280
|
}
|
|
4242
4281
|
}
|
|
4243
4282
|
}
|
|
4244
4283
|
insertFragment(data, targetPoint);
|
|
4245
4284
|
};
|
|
4246
|
-
|
|
4247
|
-
const selectedElements = getSelectedElements(board);
|
|
4248
|
-
if (selectedElements.length) {
|
|
4249
|
-
const deletableElements = getFirstLevelElement(selectedElements).reverse();
|
|
4250
|
-
const abstractRefs = deleteElementHandleAbstract(board, deletableElements);
|
|
4251
|
-
MindTransforms.setAbstractsByRefs(board, abstractRefs);
|
|
4252
|
-
const refs = deleteElementsHandleRightNodeCount(board, selectedElements);
|
|
4253
|
-
MindTransforms.setRightNodeCountByRefs(board, refs);
|
|
4254
|
-
MindTransforms.removeElements(board, selectedElements);
|
|
4255
|
-
}
|
|
4256
|
-
deleteFragment(data);
|
|
4257
|
-
};
|
|
4258
|
-
return withNodeResize(withNodeImage(withNodeHoverDetect(withMindHotkey(withMindExtend(withCreateMind(withAbstract(withNodeDnd(board))))))));
|
|
4285
|
+
return withNodeResize(withNodeImageResize(withNodeImage(withNodeHoverDetect(withMindHotkey(withMindExtend(withCreateMind(withAbstract(withNodeDnd(board)))))))));
|
|
4259
4286
|
};
|
|
4260
4287
|
|
|
4261
4288
|
class MindEmojiBaseComponent {
|
|
@@ -4305,17 +4332,43 @@ class MindImageBaseComponent {
|
|
|
4305
4332
|
set imageItem(value) {
|
|
4306
4333
|
this.afterImageItemChange(this._imageItem, value);
|
|
4307
4334
|
this._imageItem = value;
|
|
4335
|
+
this.drawFocus();
|
|
4308
4336
|
}
|
|
4309
4337
|
get imageItem() {
|
|
4310
4338
|
return this._imageItem;
|
|
4311
4339
|
}
|
|
4340
|
+
set isFocus(value) {
|
|
4341
|
+
this._isFocus = value;
|
|
4342
|
+
this.drawFocus();
|
|
4343
|
+
}
|
|
4344
|
+
get isFocus() {
|
|
4345
|
+
return this._isFocus;
|
|
4346
|
+
}
|
|
4312
4347
|
get nativeElement() {
|
|
4313
4348
|
return this.elementRef.nativeElement;
|
|
4314
4349
|
}
|
|
4315
4350
|
constructor(elementRef, cdr) {
|
|
4316
4351
|
this.elementRef = elementRef;
|
|
4317
4352
|
this.cdr = cdr;
|
|
4318
|
-
this.
|
|
4353
|
+
this.initialized = false;
|
|
4354
|
+
}
|
|
4355
|
+
ngOnInit() {
|
|
4356
|
+
this.activeGenerator = new ActiveGenerator(this.board, {
|
|
4357
|
+
activeStrokeWidth: 1,
|
|
4358
|
+
getRectangle: (element) => {
|
|
4359
|
+
return getImageForeignRectangle(this.board, this.element);
|
|
4360
|
+
},
|
|
4361
|
+
getStrokeWidthByElement: () => {
|
|
4362
|
+
return 0;
|
|
4363
|
+
}
|
|
4364
|
+
});
|
|
4365
|
+
this.initialized = true;
|
|
4366
|
+
}
|
|
4367
|
+
drawFocus() {
|
|
4368
|
+
if (this.initialized) {
|
|
4369
|
+
const com = PlaitElement.getComponent(this.element);
|
|
4370
|
+
this.activeGenerator.draw(this.element, com.g, { selected: this._isFocus });
|
|
4371
|
+
}
|
|
4319
4372
|
}
|
|
4320
4373
|
}
|
|
4321
4374
|
MindImageBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: MindImageBaseComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -4345,5 +4398,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
|
|
|
4345
4398
|
* Generated bundle index. Do not edit.
|
|
4346
4399
|
*/
|
|
4347
4400
|
|
|
4348
|
-
export { ABSTRACT_HANDLE_COLOR, ABSTRACT_HANDLE_LENGTH, ABSTRACT_HANDLE_MASK_WIDTH, ABSTRACT_INCLUDED_OUTLINE_OFFSET, AbstractHandlePosition, AbstractResizeState, BASE, BRANCH_FONT_FAMILY, BRANCH_WIDTH, BaseDrawer, BranchShape, DEFAULT_FONT_FAMILY, DefaultAbstractNodeStyle, DefaultNodeStyle, ELEMENT_TO_NODE, EXTEND_DIAMETER, EXTEND_OFFSET, GRAY_COLOR, INHERIT_ATTRIBUTE_KEYS, IS_DRAGGING, LayoutDirection, LayoutDirectionsMap, MindColorfulThemeColor, MindDarkThemeColor, MindDefaultThemeColor, MindElement, MindElementShape, MindEmojiBaseComponent, MindImageBaseComponent, MindModule, MindNode, MindNodeComponent, MindPointerType, MindQueries, MindRetroThemeColor, MindSoftThemeColor, MindStarryThemeColor, MindThemeColor, MindThemeColors, MindTransforms, NodeSpace, PRIMARY_COLOR, PlaitMind, PlaitMindComponent, QUICK_INSERT_CIRCLE_COLOR, QUICK_INSERT_CIRCLE_OFFSET, QUICK_INSERT_INNER_CROSS_COLOR, ROOT_TOPIC_FONT_SIZE, ROOT_TOPIC_HEIGHT, STROKE_WIDTH, TOPIC_COLOR, TOPIC_DEFAULT_MAX_WORD_COUNT, TOPIC_FONT_SIZE, TRANSPARENT, WithMindPluginKey, addActiveOnDragOrigin, addSelectedImageElement, adjustAbstractToNode, adjustNodeToRoot, adjustRootToNode, buildImage, canSetAbstract, copyNewNode, correctLayoutByDirection, createDefaultMind, createEmptyMind, createMindElement, deleteElementHandleAbstract, deleteElementsHandleRightNodeCount, detectDropTarget, directionCorrector, directionDetector, divideElementByParent, drawFakeDragNode, drawFakeDropNode, editTopic, extractNodesText, findLastChild, findLocationLeftIndex, getAbstractBranchColor, getAbstractBranchWidth, getAbstractHandleRectangle, getAllowedDirection, getAvailableSubLayoutsByLayoutDirections, getBehindAbstracts, getBranchColorByMindElement, getBranchDirectionsByLayouts, getBranchShapeByMindElement, getBranchWidthByMindElement, getChildrenCount, getCorrespondingAbstract, getDefaultBranchColor, getDefaultBranchColorByIndex, getDefaultLayout, getEmojiFontSize, getEmojiForeignRectangle, getEmojiRectangle, getEmojisWidthHeight, getFillByElement, getFirstLevelElement, getFontSizeBySlateElement, getHitAbstractHandle, getImageForeignRectangle, getInCorrectLayoutDirection, getLayoutDirection$1 as getLayoutDirection, getLayoutOptions, getLayoutReverseDirection, getLocationScope, getMindThemeColor, getNewNodeHeight, getNextBranchColor, getNodeDefaultFontSize, getOverallAbstracts, getPathByDropTarget, getRectangleByElement, getRectangleByNode, getRectangleByResizingLocation, getRelativeStartEndByAbstractRef, getRootLayout, getSelectedImageElement, getShapeByElement, getStrokeByMindElement, getStrokeWidthByElement, getTopicRectangleByElement, getTopicRectangleByNode, getValidAbstractRefs, handleTouchedAbstract, hasAfterDraw, hasPreviousOrNextOfDropPath, insertElementHandleAbstract, insertElementHandleRightNodeCount, insertMindElement, isChildElement, isChildOfAbstract, isChildRight, isChildUp, isCorrectLayout, isDragging, isDropStandardRight, isHitEmojis, isHitImage, isHitMindElement, isInRightBranchOfStandardLayout, isMixedLayout, isSetAbstract, isValidTarget, isVirtualKey, removeActiveOnDragOrigin, removeSelectedImageElement, selectImage, separateChildren, setImageFocus, setIsDragging, temporaryDisableSelection, withMind, withMindExtend };
|
|
4401
|
+
export { ABSTRACT_HANDLE_COLOR, ABSTRACT_HANDLE_LENGTH, ABSTRACT_HANDLE_MASK_WIDTH, ABSTRACT_INCLUDED_OUTLINE_OFFSET, AbstractHandlePosition, AbstractResizeState, BASE, BRANCH_FONT_FAMILY, BRANCH_WIDTH, BaseDrawer, BranchShape, DEFAULT_FONT_FAMILY, DefaultAbstractNodeStyle, DefaultNodeStyle, ELEMENT_TO_NODE, EXTEND_DIAMETER, EXTEND_OFFSET, GRAY_COLOR, INHERIT_ATTRIBUTE_KEYS, IS_DRAGGING, LayoutDirection, LayoutDirectionsMap, MindColorfulThemeColor, MindDarkThemeColor, MindDefaultThemeColor, MindElement, MindElementShape, MindEmojiBaseComponent, MindImageBaseComponent, MindModule, MindNode, MindNodeComponent, MindPointerType, MindQueries, MindRetroThemeColor, MindSoftThemeColor, MindStarryThemeColor, MindThemeColor, MindThemeColors, MindTransforms, NodeSpace, PRIMARY_COLOR, PlaitMind, PlaitMindComponent, QUICK_INSERT_CIRCLE_COLOR, QUICK_INSERT_CIRCLE_OFFSET, QUICK_INSERT_INNER_CROSS_COLOR, ROOT_TOPIC_FONT_SIZE, ROOT_TOPIC_HEIGHT, STROKE_WIDTH, TOPIC_COLOR, TOPIC_DEFAULT_MAX_WORD_COUNT, TOPIC_FONT_SIZE, TRANSPARENT, WithMindPluginKey, addActiveOnDragOrigin, addSelectedImageElement, adjustAbstractToNode, adjustNodeToRoot, adjustRootToNode, buildImage, canSetAbstract, copyNewNode, correctLayoutByDirection, createDefaultMind, createEmptyMind, createMindElement, deleteElementHandleAbstract, deleteElementsHandleRightNodeCount, detectDropTarget, directionCorrector, directionDetector, divideElementByParent, drawFakeDragNode, drawFakeDropNode, editTopic, extractNodesText, findLastChild, findLocationLeftIndex, getAbstractBranchColor, getAbstractBranchWidth, getAbstractHandleRectangle, getAllowedDirection, getAvailableSubLayoutsByLayoutDirections, getBehindAbstracts, getBranchColorByMindElement, getBranchDirectionsByLayouts, getBranchShapeByMindElement, getBranchWidthByMindElement, getChildrenCount, getCorrespondingAbstract, getDefaultBranchColor, getDefaultBranchColorByIndex, getDefaultLayout, getEmojiFontSize, getEmojiForeignRectangle, getEmojiRectangle, getEmojisWidthHeight, getFillByElement, getFirstLevelElement, getFontSizeBySlateElement, getHitAbstractHandle, getHitImageResizeHandleDirection, getImageForeignRectangle, getInCorrectLayoutDirection, getLayoutDirection$1 as getLayoutDirection, getLayoutOptions, getLayoutReverseDirection, getLocationScope, getMindThemeColor, getNewNodeHeight, getNextBranchColor, getNodeDefaultFontSize, getOverallAbstracts, getPathByDropTarget, getRectangleByElement, getRectangleByNode, getRectangleByResizingLocation, getRelativeStartEndByAbstractRef, getRootLayout, getSelectedImageElement, getSelectedMindElements, getShapeByElement, getStrokeByMindElement, getStrokeWidthByElement, getTopicRectangleByElement, getTopicRectangleByNode, getValidAbstractRefs, handleTouchedAbstract, hasAfterDraw, hasPreviousOrNextOfDropPath, insertElementHandleAbstract, insertElementHandleRightNodeCount, insertMindElement, isChildElement, isChildOfAbstract, isChildRight, isChildUp, isCorrectLayout, isDragging, isDropStandardRight, isHitEmojis, isHitImage, isHitMindElement, isInRightBranchOfStandardLayout, isMixedLayout, isSetAbstract, isValidTarget, isVirtualKey, removeActiveOnDragOrigin, removeSelectedImageElement, selectImage, separateChildren, setImageFocus, setIsDragging, temporaryDisableSelection, withMind, withMindExtend };
|
|
4349
4402
|
//# sourceMappingURL=plait-mind.mjs.map
|