@plait/mind 0.24.1 → 0.25.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/drawer/node-image.drawer.mjs +2 -1
- package/esm2020/plugins/with-mind.mjs +9 -7
- package/esm2020/plugins/with-node-image.mjs +23 -2
- package/esm2020/utils/clipboard.mjs +16 -2
- package/fesm2015/plait-mind.mjs +45 -8
- package/fesm2015/plait-mind.mjs.map +1 -1
- package/fesm2020/plait-mind.mjs +45 -8
- package/fesm2020/plait-mind.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/styles.scss +0 -1
- package/utils/clipboard.d.ts +3 -1
package/fesm2020/plait-mind.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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, getSelectedElements, NODE_TO_PARENT, distanceBetweenPointAndRectangle, createForeignObject, createText, PlaitPointerType, PlaitPluginElementComponent, NODE_TO_INDEX, PlaitModule, isMainPointer, transformPoint, toPoint, getHitElements, distanceBetweenPointAndPoint, CLIP_BOARD_FORMAT_KEY, BOARD_TO_HOST, throttleRAF, BoardTransforms, removeSelectedElement, PlaitHistoryBoard, hotkeys, PRESS_AND_MOVE_BUFFER, MERGING, ResizeCursorClass } 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, getSelectedElements, NODE_TO_PARENT, distanceBetweenPointAndRectangle, createForeignObject, createText, PlaitPointerType, PlaitPluginElementComponent, NODE_TO_INDEX, PlaitModule, isMainPointer, transformPoint, toPoint, getHitElements, distanceBetweenPointAndPoint, CLIP_BOARD_FORMAT_KEY, CLIP_BOARD_IMAGE_FORMAT_KEY, BOARD_TO_HOST, throttleRAF, BoardTransforms, removeSelectedElement, PlaitHistoryBoard, hotkeys, PRESS_AND_MOVE_BUFFER, MERGING, ResizeCursorClass } 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';
|
|
@@ -3002,6 +3002,7 @@ class NodeImageDrawer {
|
|
|
3002
3002
|
this.g = createG();
|
|
3003
3003
|
const foreignRectangle = getImageForeignRectangle(this.board, element);
|
|
3004
3004
|
this.foreignObject = createForeignObject(foreignRectangle.x, foreignRectangle.y, foreignRectangle.width, foreignRectangle.height);
|
|
3005
|
+
this.foreignObject.style.padding = `6px`;
|
|
3005
3006
|
this.g.append(this.foreignObject);
|
|
3006
3007
|
const componentType = this.board.getPluginOptions(WithMindPluginKey).imageComponentType;
|
|
3007
3008
|
if (!componentType) {
|
|
@@ -3540,6 +3541,20 @@ const setClipboardData = (data, elements) => {
|
|
|
3540
3541
|
data?.setData(`application/${CLIP_BOARD_FORMAT_KEY}`, encoded);
|
|
3541
3542
|
data?.setData(`text/plain`, text);
|
|
3542
3543
|
};
|
|
3544
|
+
const setClipboardDataByImage = (data, image) => {
|
|
3545
|
+
const stringObj = JSON.stringify(image);
|
|
3546
|
+
const encoded = window.btoa(encodeURIComponent(stringObj));
|
|
3547
|
+
data?.setData(`application/${CLIP_BOARD_IMAGE_FORMAT_KEY}`, encoded);
|
|
3548
|
+
};
|
|
3549
|
+
const getImageItemFromClipboard = (data) => {
|
|
3550
|
+
const encoded = data?.getData(`application/${CLIP_BOARD_IMAGE_FORMAT_KEY}`);
|
|
3551
|
+
let imageItem = null;
|
|
3552
|
+
if (encoded) {
|
|
3553
|
+
const decoded = decodeURIComponent(window.atob(encoded));
|
|
3554
|
+
imageItem = JSON.parse(decoded);
|
|
3555
|
+
}
|
|
3556
|
+
return imageItem;
|
|
3557
|
+
};
|
|
3543
3558
|
const getDataFromClipboard = (data) => {
|
|
3544
3559
|
const encoded = data?.getData(`application/${CLIP_BOARD_FORMAT_KEY}`);
|
|
3545
3560
|
let nodesData = [];
|
|
@@ -3996,7 +4011,7 @@ const withNodeHoverDetect = (board) => {
|
|
|
3996
4011
|
};
|
|
3997
4012
|
|
|
3998
4013
|
const withNodeImage = (board) => {
|
|
3999
|
-
const { keydown, mousedown, globalMouseup, insertFragment } = board;
|
|
4014
|
+
const { keydown, mousedown, globalMouseup, setFragment, insertFragment, deleteFragment } = board;
|
|
4000
4015
|
board.mousedown = (event) => {
|
|
4001
4016
|
const selectedImageElement = getSelectedImageElement(board);
|
|
4002
4017
|
if (PlaitBoard.isReadonly(board) || !isMainPointer(event) || !PlaitBoard.isPointer(board, PlaitPointerType.selection)) {
|
|
@@ -4045,6 +4060,21 @@ const withNodeImage = (board) => {
|
|
|
4045
4060
|
}
|
|
4046
4061
|
globalMouseup(event);
|
|
4047
4062
|
};
|
|
4063
|
+
board.setFragment = (data) => {
|
|
4064
|
+
const selectedImageElement = getSelectedImageElement(board);
|
|
4065
|
+
if (selectedImageElement) {
|
|
4066
|
+
setClipboardDataByImage(data, selectedImageElement.data.image);
|
|
4067
|
+
return;
|
|
4068
|
+
}
|
|
4069
|
+
setFragment(data);
|
|
4070
|
+
};
|
|
4071
|
+
board.deleteFragment = (data) => {
|
|
4072
|
+
const selectedImageElement = getSelectedImageElement(board);
|
|
4073
|
+
if (selectedImageElement) {
|
|
4074
|
+
MindTransforms.removeImage(board, selectedImageElement);
|
|
4075
|
+
}
|
|
4076
|
+
deleteFragment(data);
|
|
4077
|
+
};
|
|
4048
4078
|
board.insertFragment = (data, targetPoint) => {
|
|
4049
4079
|
const selectedElements = getSelectedElements(board);
|
|
4050
4080
|
const isSelectedImage = !!getSelectedImageElement(board);
|
|
@@ -4058,6 +4088,11 @@ const withNodeImage = (board) => {
|
|
|
4058
4088
|
return;
|
|
4059
4089
|
}
|
|
4060
4090
|
}
|
|
4091
|
+
const imageItem = getImageItemFromClipboard(data);
|
|
4092
|
+
if (imageItem && (isSingleSelection || isSelectedImage)) {
|
|
4093
|
+
const selectedElement = (selectedElements[0] || getSelectedImageElement(board));
|
|
4094
|
+
MindTransforms.setImage(board, selectedElement, imageItem);
|
|
4095
|
+
}
|
|
4061
4096
|
insertFragment(data, targetPoint);
|
|
4062
4097
|
};
|
|
4063
4098
|
return board;
|
|
@@ -4278,12 +4313,14 @@ const withMind = (baseBoard) => {
|
|
|
4278
4313
|
};
|
|
4279
4314
|
board.deleteFragment = (data) => {
|
|
4280
4315
|
const selectedElements = getSelectedElements(board);
|
|
4281
|
-
|
|
4282
|
-
|
|
4283
|
-
|
|
4284
|
-
|
|
4285
|
-
|
|
4286
|
-
|
|
4316
|
+
if (selectedElements.length) {
|
|
4317
|
+
const deletableElements = getFirstLevelElement(selectedElements).reverse();
|
|
4318
|
+
const abstractRefs = deleteElementHandleAbstract(board, deletableElements);
|
|
4319
|
+
MindTransforms.setAbstractsByRefs(board, abstractRefs);
|
|
4320
|
+
const refs = deleteElementsHandleRightNodeCount(board, selectedElements);
|
|
4321
|
+
MindTransforms.setRightNodeCountByRefs(board, refs);
|
|
4322
|
+
MindTransforms.removeElements(board, selectedElements);
|
|
4323
|
+
}
|
|
4287
4324
|
deleteFragment(data);
|
|
4288
4325
|
};
|
|
4289
4326
|
return withNodeResize(withNodeImage(withNodeHoverDetect(withMindHotkey(withMindExtend(withCreateMind(withAbstract(withNodeDnd(board))))))));
|