@plait/mind 0.13.0 → 0.14.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/esm2020/interfaces/element.mjs +11 -3
- package/esm2020/plugins/with-mind-create.mjs +4 -3
- package/esm2020/plugins/with-mind.mjs +7 -5
- package/esm2020/plugins/with-node-dnd.mjs +3 -6
- package/esm2020/utils/clipboard.mjs +1 -1
- package/esm2020/utils/node/adjust-node.mjs +8 -7
- package/esm2020/utils/node/create-node.mjs +9 -9
- package/fesm2015/plait-mind.mjs +66 -55
- package/fesm2015/plait-mind.mjs.map +1 -1
- package/fesm2020/plait-mind.mjs +70 -60
- package/fesm2020/plait-mind.mjs.map +1 -1
- package/interfaces/element.d.ts +2 -1
- package/package.json +1 -1
- package/styles/styles.scss +5 -5
- package/utils/clipboard.d.ts +2 -1
- package/utils/node/create-node.d.ts +4 -3
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { idCreator, isNullOrUndefined } from '@plait/core';
|
|
2
|
-
import { TEXT_DEFAULT_HEIGHT } from '@plait/text';
|
|
2
|
+
import { TEXT_DEFAULT_HEIGHT, buildText } from '@plait/text';
|
|
3
3
|
import { MindLayoutType } from '@plait/layouts';
|
|
4
|
-
import { adjustNodeToRoot } from './adjust-node';
|
|
5
4
|
import { ROOT_TOPIC_HEIGHT } from '../../constants/node-topic-style';
|
|
6
|
-
export const createEmptyMind = (
|
|
7
|
-
const element = createMindElement('',
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
export const createEmptyMind = (point) => {
|
|
6
|
+
const element = createMindElement('思维导图', 72, ROOT_TOPIC_HEIGHT, { layout: MindLayoutType.right });
|
|
7
|
+
element.isRoot = true;
|
|
8
|
+
element.points = [point];
|
|
9
|
+
element.type = 'mindmap';
|
|
10
|
+
return element;
|
|
11
11
|
};
|
|
12
12
|
export const createDefaultMind = (point, rightNodeCount, layout) => {
|
|
13
13
|
const root = createMindElement('思维导图', 72, ROOT_TOPIC_HEIGHT, { layout });
|
|
@@ -25,7 +25,7 @@ export const createMindElement = (text, width, height, options) => {
|
|
|
25
25
|
const newElement = {
|
|
26
26
|
id: idCreator(),
|
|
27
27
|
data: {
|
|
28
|
-
topic:
|
|
28
|
+
topic: buildText(text)
|
|
29
29
|
},
|
|
30
30
|
children: [],
|
|
31
31
|
width,
|
|
@@ -49,4 +49,4 @@ export const INHERIT_ATTRIBUTE_KEYS = [
|
|
|
49
49
|
'branchWidth',
|
|
50
50
|
'branchShape'
|
|
51
51
|
];
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9ub2RlL2NyZWF0ZS1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBUyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHckUsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7SUFDNUMsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNuRyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUN0QixPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsT0FBTyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7SUFDekIsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFZLEVBQUUsY0FBc0IsRUFBRSxNQUFzQixFQUFFLEVBQUU7SUFDOUYsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDMUUsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7SUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RCLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1FBQ2hDLE9BQU8saUJBQWlCLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ3pCLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBc0IsRUFBRSxLQUFhLEVBQUUsTUFBYyxFQUFFLE9BQXlCLEVBQUUsRUFBRTtJQUNsSCxNQUFNLFVBQVUsR0FBZ0I7UUFDNUIsRUFBRSxFQUFFLFNBQVMsRUFBRTtRQUNmLElBQUksRUFBRTtZQUNGLEtBQUssRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDO1NBQ3pCO1FBQ0QsUUFBUSxFQUFFLEVBQUU7UUFDWixLQUFLO1FBQ0wsTUFBTTtLQUNULENBQUM7SUFFRixJQUFJLEdBQXlCLENBQUM7SUFDOUIsS0FBSyxHQUFHLElBQUksT0FBTyxFQUFFO1FBQ2pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNqQyxVQUFrQixDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMzQztLQUNKO0lBRUQsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBYUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDbEMsTUFBTTtJQUNOLGFBQWE7SUFDYixhQUFhO0lBQ2IsT0FBTztJQUNQLFFBQVE7SUFDUixhQUFhO0lBQ2IsYUFBYTtJQUNiLGFBQWE7Q0FDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvaW50LCBpZENyZWF0b3IsIGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgVEVYVF9ERUZBVUxUX0hFSUdIVCwgYnVpbGRUZXh0IH0gZnJvbSAnQHBsYWl0L3RleHQnO1xuaW1wb3J0IHsgTWluZExheW91dFR5cGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBCcmFuY2hTaGFwZSwgTWluZEVsZW1lbnQsIE1pbmRFbGVtZW50U2hhcGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgUk9PVF9UT1BJQ19IRUlHSFQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm9kZS10b3BpYy1zdHlsZSc7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRW1wdHlNaW5kID0gKHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBjcmVhdGVNaW5kRWxlbWVudCgn5oCd57u05a+85Zu+JywgNzIsIFJPT1RfVE9QSUNfSEVJR0hULCB7IGxheW91dDogTWluZExheW91dFR5cGUucmlnaHQgfSk7XG4gICAgZWxlbWVudC5pc1Jvb3QgPSB0cnVlO1xuICAgIGVsZW1lbnQucG9pbnRzID0gW3BvaW50XTtcbiAgICBlbGVtZW50LnR5cGUgPSAnbWluZG1hcCc7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGVmYXVsdE1pbmQgPSAocG9pbnQ6IFBvaW50LCByaWdodE5vZGVDb3VudDogbnVtYmVyLCBsYXlvdXQ6IE1pbmRMYXlvdXRUeXBlKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IGNyZWF0ZU1pbmRFbGVtZW50KCfmgJ3nu7Tlr7zlm74nLCA3MiwgUk9PVF9UT1BJQ19IRUlHSFQsIHsgbGF5b3V0IH0pO1xuICAgIHJvb3QucmlnaHROb2RlQ291bnQgPSByaWdodE5vZGVDb3VudDtcbiAgICByb290LmlzUm9vdCA9IHRydWU7XG4gICAgcm9vdC50eXBlID0gJ21pbmRtYXAnO1xuICAgIHJvb3QucG9pbnRzID0gW3BvaW50XTtcbiAgICBjb25zdCBjaGlsZHJlbiA9IFsxLCAxLCAxXS5tYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gY3JlYXRlTWluZEVsZW1lbnQoJ+aWsOW7uuiKgueCuScsIDU2LCBURVhUX0RFRkFVTFRfSEVJR0hULCB7fSk7XG4gICAgfSk7XG4gICAgcm9vdC5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgIHJldHVybiByb290O1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1pbmRFbGVtZW50ID0gKHRleHQ6IHN0cmluZyB8IEVsZW1lbnQsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBvcHRpb25zOiBJbmhlcml0QXR0cmlidXRlKSA9PiB7XG4gICAgY29uc3QgbmV3RWxlbWVudDogTWluZEVsZW1lbnQgPSB7XG4gICAgICAgIGlkOiBpZENyZWF0b3IoKSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdG9waWM6IGJ1aWxkVGV4dCh0ZXh0KVxuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICB9O1xuXG4gICAgbGV0IGtleToga2V5b2YgdHlwZW9mIG9wdGlvbnM7XG4gICAgZm9yIChrZXkgaW4gb3B0aW9ucykge1xuICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKG9wdGlvbnNba2V5XSkpIHtcbiAgICAgICAgICAgIChuZXdFbGVtZW50IGFzIGFueSlba2V5XSA9IG9wdGlvbnNba2V5XTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXdFbGVtZW50O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJbmhlcml0QXR0cmlidXRlIHtcbiAgICBmaWxsPzogc3RyaW5nO1xuICAgIHN0cm9rZUNvbG9yPzogc3RyaW5nO1xuICAgIHN0cm9rZVdpZHRoPzogbnVtYmVyO1xuICAgIHNoYXBlPzogTWluZEVsZW1lbnRTaGFwZTtcbiAgICBsYXlvdXQ/OiBNaW5kTGF5b3V0VHlwZTtcbiAgICBicmFuY2hDb2xvcj86IHN0cmluZztcbiAgICBicmFuY2hXaWR0aD86IG51bWJlcjtcbiAgICBicmFuY2hTaGFwZT86IEJyYW5jaFNoYXBlO1xufVxuXG5leHBvcnQgY29uc3QgSU5IRVJJVF9BVFRSSUJVVEVfS0VZUyA9IFtcbiAgICAnZmlsbCcsXG4gICAgJ3N0cm9rZUNvbG9yJyxcbiAgICAnc3Ryb2tlV2lkdGgnLFxuICAgICdzaGFwZScsXG4gICAgJ2xheW91dCcsXG4gICAgJ2JyYW5jaENvbG9yJyxcbiAgICAnYnJhbmNoV2lkdGgnLFxuICAgICdicmFuY2hTaGFwZSdcbl07XG4iXX0=
|
package/fesm2015/plait-mind.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import { Component, ChangeDetectionStrategy, NgModule, NgZone, Directive, Input,
|
|
|
3
3
|
import * as i2 from '@plait/core';
|
|
4
4
|
import { DefaultThemeColor, ColorfulThemeColor, SoftThemeColor, RetroThemeColor, DarkThemeColor, StarryThemeColor, RectangleClient, PlaitElement, idCreator, isNullOrUndefined, Transforms, clearSelectedElement, addSelectedElement, PlaitBoard, depthFirstRecursion, Path, drawLinearPath, createG, updateForeignObject, PlaitNode, drawRoundRectangle, getRectangleByElements, getSelectedElements, NODE_TO_PARENT, distanceBetweenPointAndRectangle, createForeignObject, drawAbstractRoundRectangle, createText, PlaitPointerType, PlaitPluginElementComponent, NODE_TO_INDEX, PlaitModule, transformPoint, toPoint, getHitElements, distanceBetweenPointAndPoint, CLIP_BOARD_FORMAT_KEY, isMainPointer, BOARD_TO_HOST, PlaitPluginKey, throttleRAF, BoardTransforms, removeSelectedElement, PlaitHistoryBoard, hotkeys } from '@plait/core';
|
|
5
5
|
import { MindLayoutType, isIndentedLayout, getNonAbstractChildren, isStandardLayout, AbstractNode, isLeftLayout, isRightLayout, isVerticalLogicLayout, isHorizontalLogicLayout, isTopLayout, isBottomLayout, isHorizontalLayout, getCorrectStartEnd, getAbstractLayout, ConnectingPosition, GlobalLayout } from '@plait/layouts';
|
|
6
|
-
import {
|
|
6
|
+
import { TEXT_DEFAULT_HEIGHT, buildText, getTextSize, TextManage, TextModule, getTextFromClipboard } from '@plait/text';
|
|
7
7
|
import { fromEvent, Subject } from 'rxjs';
|
|
8
8
|
import { Node, Path as Path$1 } from 'slate';
|
|
9
9
|
import { isKeyHotkey } from 'is-hotkey';
|
|
@@ -306,49 +306,12 @@ const ROOT_TOPIC_FONT_SIZE = 18;
|
|
|
306
306
|
const ROOT_TOPIC_HEIGHT = 25;
|
|
307
307
|
const TOPIC_DEFAULT_MAX_WORD_COUNT = 34;
|
|
308
308
|
|
|
309
|
-
const
|
|
310
|
-
const
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
const { width, height } = getTextSize(board, text, TOPIC_DEFAULT_MAX_WORD_COUNT);
|
|
316
|
-
newNode.width = Math.max(width, NODE_MIN_WIDTH);
|
|
317
|
-
newNode.height = height;
|
|
318
|
-
if (newNode.layout === MindLayoutType.standard) {
|
|
319
|
-
delete newNode.layout;
|
|
320
|
-
}
|
|
321
|
-
return newNode;
|
|
322
|
-
};
|
|
323
|
-
const adjustAbstractToNode = (node) => {
|
|
324
|
-
const newNode = Object.assign({}, node);
|
|
325
|
-
delete newNode.start;
|
|
326
|
-
delete newNode.end;
|
|
327
|
-
return newNode;
|
|
328
|
-
};
|
|
329
|
-
const adjustNodeToRoot = (board, node) => {
|
|
330
|
-
var _a;
|
|
331
|
-
const newElement = Object.assign({}, node);
|
|
332
|
-
let text = Node.string(newElement.data.topic);
|
|
333
|
-
if (!text) {
|
|
334
|
-
text = '思维导图';
|
|
335
|
-
newElement.data.topic = { children: [{ text }] };
|
|
336
|
-
}
|
|
337
|
-
newElement === null || newElement === void 0 ? true : delete newElement.strokeColor;
|
|
338
|
-
newElement === null || newElement === void 0 ? true : delete newElement.fill;
|
|
339
|
-
newElement === null || newElement === void 0 ? true : delete newElement.shape;
|
|
340
|
-
newElement === null || newElement === void 0 ? true : delete newElement.strokeWidth;
|
|
341
|
-
const { width, height } = getTextSize(board, text, TOPIC_DEFAULT_MAX_WORD_COUNT, ROOT_TOPIC_FONT_SIZE);
|
|
342
|
-
newElement.width = Math.max(width, NODE_MIN_WIDTH);
|
|
343
|
-
newElement.height = height;
|
|
344
|
-
return Object.assign(Object.assign({}, newElement), { layout: (_a = newElement.layout) !== null && _a !== void 0 ? _a : MindLayoutType.right, isCollapsed: false, isRoot: true, type: 'mindmap' });
|
|
345
|
-
};
|
|
346
|
-
|
|
347
|
-
const createEmptyMind = (board, point) => {
|
|
348
|
-
const element = createMindElement('', 0, 0, { layout: MindLayoutType.right });
|
|
349
|
-
const rootElement = adjustNodeToRoot(board, element);
|
|
350
|
-
rootElement.points = [point];
|
|
351
|
-
return rootElement;
|
|
309
|
+
const createEmptyMind = (point) => {
|
|
310
|
+
const element = createMindElement('思维导图', 72, ROOT_TOPIC_HEIGHT, { layout: MindLayoutType.right });
|
|
311
|
+
element.isRoot = true;
|
|
312
|
+
element.points = [point];
|
|
313
|
+
element.type = 'mindmap';
|
|
314
|
+
return element;
|
|
352
315
|
};
|
|
353
316
|
const createDefaultMind = (point, rightNodeCount, layout) => {
|
|
354
317
|
const root = createMindElement('思维导图', 72, ROOT_TOPIC_HEIGHT, { layout });
|
|
@@ -366,7 +329,7 @@ const createMindElement = (text, width, height, options) => {
|
|
|
366
329
|
const newElement = {
|
|
367
330
|
id: idCreator(),
|
|
368
331
|
data: {
|
|
369
|
-
topic:
|
|
332
|
+
topic: buildText(text)
|
|
370
333
|
},
|
|
371
334
|
children: [],
|
|
372
335
|
width,
|
|
@@ -587,6 +550,46 @@ const getRootLayout = (root) => {
|
|
|
587
550
|
return root.layout || getDefaultLayout();
|
|
588
551
|
};
|
|
589
552
|
|
|
553
|
+
const adjustRootToNode = (board, node) => {
|
|
554
|
+
const newNode = Object.assign({}, node);
|
|
555
|
+
delete newNode.isRoot;
|
|
556
|
+
delete newNode.rightNodeCount;
|
|
557
|
+
delete newNode.type;
|
|
558
|
+
const text = Node.string(node.data.topic.children[0]) || ' ';
|
|
559
|
+
const { width, height } = getTextSize(board, text, TOPIC_DEFAULT_MAX_WORD_COUNT);
|
|
560
|
+
newNode.width = Math.max(width, NODE_MIN_WIDTH);
|
|
561
|
+
newNode.height = height;
|
|
562
|
+
if (newNode.layout === MindLayoutType.standard) {
|
|
563
|
+
delete newNode.layout;
|
|
564
|
+
}
|
|
565
|
+
return newNode;
|
|
566
|
+
};
|
|
567
|
+
const adjustAbstractToNode = (node) => {
|
|
568
|
+
const newNode = Object.assign({}, node);
|
|
569
|
+
delete newNode.start;
|
|
570
|
+
delete newNode.end;
|
|
571
|
+
return newNode;
|
|
572
|
+
};
|
|
573
|
+
const adjustNodeToRoot = (board, node) => {
|
|
574
|
+
var _a;
|
|
575
|
+
const newElement = Object.assign({}, node);
|
|
576
|
+
if (!Node.string(newElement.data.topic)) {
|
|
577
|
+
newElement.data.topic = { children: [{ text: '思维导图' }] };
|
|
578
|
+
}
|
|
579
|
+
newElement === null || newElement === void 0 ? true : delete newElement.strokeColor;
|
|
580
|
+
newElement === null || newElement === void 0 ? true : delete newElement.fill;
|
|
581
|
+
newElement === null || newElement === void 0 ? true : delete newElement.shape;
|
|
582
|
+
newElement === null || newElement === void 0 ? true : delete newElement.strokeWidth;
|
|
583
|
+
newElement === null || newElement === void 0 ? true : delete newElement.isCollapsed;
|
|
584
|
+
const { width, height } = getTextSize(board, newElement.data.topic, TOPIC_DEFAULT_MAX_WORD_COUNT, {
|
|
585
|
+
fontSize: ROOT_TOPIC_FONT_SIZE,
|
|
586
|
+
fontFamily: 'PingFangSC-Medium, "PingFang SC"'
|
|
587
|
+
});
|
|
588
|
+
newElement.width = Math.max(width, NODE_MIN_WIDTH);
|
|
589
|
+
newElement.height = height;
|
|
590
|
+
return Object.assign(Object.assign({}, newElement), { layout: (_a = newElement.layout) !== null && _a !== void 0 ? _a : MindLayoutType.right, isRoot: true, type: 'mindmap' });
|
|
591
|
+
};
|
|
592
|
+
|
|
590
593
|
const DefaultAbstractNodeStyle = {
|
|
591
594
|
strokeColor: GRAY_COLOR,
|
|
592
595
|
strokeWidth: 2,
|
|
@@ -1866,8 +1869,16 @@ const MindElement = {
|
|
|
1866
1869
|
getEmojis(element) {
|
|
1867
1870
|
return element.data.emojis;
|
|
1868
1871
|
},
|
|
1869
|
-
|
|
1870
|
-
|
|
1872
|
+
hasMounted(element) {
|
|
1873
|
+
const component = PlaitElement.getComponent(element);
|
|
1874
|
+
return !!component;
|
|
1875
|
+
},
|
|
1876
|
+
getTextEditor(element) {
|
|
1877
|
+
const component = PlaitElement.getComponent(element);
|
|
1878
|
+
if (component) {
|
|
1879
|
+
return component.textManage.componentRef.instance.editor;
|
|
1880
|
+
}
|
|
1881
|
+
throw new Error('can not get correctly component in get text editor');
|
|
1871
1882
|
}
|
|
1872
1883
|
};
|
|
1873
1884
|
var MindElementShape;
|
|
@@ -2976,9 +2987,6 @@ const withNodeDnd = (board) => {
|
|
|
2976
2987
|
if (AbstractNode.isAbstract(element)) {
|
|
2977
2988
|
return adjustAbstractToNode(element);
|
|
2978
2989
|
}
|
|
2979
|
-
if (PlaitMind.isMind(element)) {
|
|
2980
|
-
return adjustRootToNode(board, element);
|
|
2981
|
-
}
|
|
2982
2990
|
return element;
|
|
2983
2991
|
});
|
|
2984
2992
|
const hasPreviousNode = targetPath[targetPath.length - 1] !== 0;
|
|
@@ -3288,7 +3296,7 @@ const withCreateMind = (board) => {
|
|
|
3288
3296
|
const movingPoint = PlaitBoard.getMovingPoint(board);
|
|
3289
3297
|
if (movingPoint) {
|
|
3290
3298
|
const targetPoint = transformPoint(board, toPoint(movingPoint[0], movingPoint[1], PlaitBoard.getHost(board)));
|
|
3291
|
-
const emptyMind = createEmptyMind(
|
|
3299
|
+
const emptyMind = createEmptyMind(targetPoint);
|
|
3292
3300
|
const nodeRectangle = getRectangleByElement(newBoard, targetPoint, emptyMind);
|
|
3293
3301
|
const nodeG = drawRoundRectangleByElement(board, nodeRectangle, emptyMind);
|
|
3294
3302
|
const topicRectangle = getTopicRectangleByElement(newBoard, nodeRectangle, emptyMind);
|
|
@@ -3307,6 +3315,7 @@ const withCreateMind = (board) => {
|
|
|
3307
3315
|
textManage
|
|
3308
3316
|
};
|
|
3309
3317
|
fakeCreateNodeRef.g.classList.add('root');
|
|
3318
|
+
fakeCreateNodeRef.g.setAttribute('plait-mind-temporary', 'true');
|
|
3310
3319
|
PlaitBoard.getHost(board).append(fakeCreateNodeRef.g);
|
|
3311
3320
|
fakeCreateNodeRef.g.append(...[fakeCreateNodeRef.nodeG, textManage.g]);
|
|
3312
3321
|
}
|
|
@@ -3329,7 +3338,7 @@ const withCreateMind = (board) => {
|
|
|
3329
3338
|
const movingPoint = PlaitBoard.getMovingPoint(board);
|
|
3330
3339
|
if (movingPoint && fakeCreateNodeRef && PlaitBoard.isPointer(board, MindPointerType.mind)) {
|
|
3331
3340
|
const targetPoint = transformPoint(board, toPoint(movingPoint[0], movingPoint[1], PlaitBoard.getHost(board)));
|
|
3332
|
-
const emptyMind = createEmptyMind(
|
|
3341
|
+
const emptyMind = createEmptyMind(targetPoint);
|
|
3333
3342
|
Transforms.insertNode(board, emptyMind, [board.children.length]);
|
|
3334
3343
|
clearSelectedElement(board);
|
|
3335
3344
|
addSelectedElement(board, emptyMind);
|
|
@@ -3621,11 +3630,13 @@ const withMind = (board) => {
|
|
|
3621
3630
|
insertClipboardData(board, elements, targetPoint || [0, 0]);
|
|
3622
3631
|
}
|
|
3623
3632
|
else {
|
|
3624
|
-
const text = data
|
|
3625
|
-
const { width, height } = getTextSize(board, text, TOPIC_DEFAULT_MAX_WORD_COUNT
|
|
3633
|
+
const text = getTextFromClipboard(data);
|
|
3634
|
+
const { width, height } = getTextSize(board, text, TOPIC_DEFAULT_MAX_WORD_COUNT, {
|
|
3635
|
+
fontFamily: 'PingFangSC-Regular, "PingFang SC"'
|
|
3636
|
+
});
|
|
3626
3637
|
const selectedElements = getSelectedElements(board);
|
|
3627
3638
|
if (text && selectedElements.length === 1) {
|
|
3628
|
-
insertClipboardText(board, selectedElements[0], text, width, height);
|
|
3639
|
+
insertClipboardText(board, selectedElements[0], buildText(text), width, height);
|
|
3629
3640
|
}
|
|
3630
3641
|
}
|
|
3631
3642
|
insertFragment(data, targetPoint);
|