@plait/mind 0.9.0 → 0.10.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.
Files changed (52) hide show
  1. package/README.md +132 -13
  2. package/base/base.drawer.d.ts +4 -3
  3. package/constants/default.d.ts +1 -1
  4. package/constants/node-topic-style.d.ts +1 -0
  5. package/drawer/node-active.drawer.d.ts +13 -0
  6. package/drawer/node-collapse.drawer.d.ts +8 -0
  7. package/drawer/{emojis.drawer.d.ts → node-emojis.drawer.d.ts} +1 -1
  8. package/drawer/{quick-insert.drawer.d.ts → node-insert.drawer.d.ts} +2 -2
  9. package/esm2020/base/base.drawer.mjs +13 -1
  10. package/esm2020/constants/default.mjs +2 -2
  11. package/esm2020/constants/node-rule.mjs +1 -1
  12. package/esm2020/constants/node-topic-style.mjs +2 -1
  13. package/esm2020/drawer/node-active.drawer.mjs +43 -0
  14. package/esm2020/drawer/node-collapse.drawer.mjs +108 -0
  15. package/esm2020/drawer/node-emojis.drawer.mjs +72 -0
  16. package/esm2020/drawer/node-insert.drawer.mjs +98 -0
  17. package/esm2020/interfaces/element.mjs +5 -2
  18. package/esm2020/mind.component.mjs +2 -1
  19. package/esm2020/mind.module.mjs +5 -5
  20. package/esm2020/node.component.mjs +57 -424
  21. package/esm2020/plugins/with-abstract-resize.mjs +3 -3
  22. package/esm2020/plugins/with-mind-create.mjs +22 -15
  23. package/esm2020/plugins/with-mind.mjs +9 -8
  24. package/esm2020/plugins/with-node-dnd.mjs +2 -2
  25. package/esm2020/plugins/with-node-hover.mjs +65 -0
  26. package/esm2020/transforms/node.mjs +10 -7
  27. package/esm2020/utils/abstract/resize.mjs +4 -6
  28. package/esm2020/utils/dnd/common.mjs +8 -2
  29. package/esm2020/utils/draw/node-dnd.mjs +3 -3
  30. package/esm2020/utils/mind.mjs +4 -4
  31. package/esm2020/utils/node/adjust-node.mjs +4 -5
  32. package/esm2020/utils/node/common.mjs +3 -3
  33. package/esm2020/utils/node/create-node.mjs +4 -3
  34. package/fesm2015/plait-mind.mjs +547 -726
  35. package/fesm2015/plait-mind.mjs.map +1 -1
  36. package/fesm2020/plait-mind.mjs +547 -714
  37. package/fesm2020/plait-mind.mjs.map +1 -1
  38. package/interfaces/element.d.ts +1 -0
  39. package/mind.module.d.ts +2 -2
  40. package/node.component.d.ts +15 -31
  41. package/package.json +1 -1
  42. package/plugins/with-mind-create.d.ts +3 -5
  43. package/plugins/with-node-dnd.d.ts +1 -1
  44. package/plugins/with-node-hover.d.ts +5 -0
  45. package/styles/mixins.scss +13 -15
  46. package/styles/styles.scss +11 -10
  47. package/utils/abstract/resize.d.ts +2 -2
  48. package/utils/node/common.d.ts +1 -1
  49. package/esm2020/drawer/emojis.drawer.mjs +0 -72
  50. package/esm2020/drawer/quick-insert.drawer.mjs +0 -98
  51. package/esm2020/utils/draw/node-topic.mjs +0 -32
  52. package/utils/draw/node-topic.d.ts +0 -16
@@ -39,6 +39,7 @@ export declare const MindElement: {
39
39
  findParentNode(element: MindElement): import("@plait/mind").MindNode | undefined;
40
40
  hasEmojis(element: MindElement): element is MindElement<EmojiData>;
41
41
  getEmojis(element: MindElement<EmojiData>): import("./element-data").EmojiItem[];
42
+ getEditor(element: MindElement): import("slate").BaseEditor & import("slate-angular").AngularEditor & import("slate-history").HistoryEditor;
42
43
  };
43
44
  export declare enum MindElementShape {
44
45
  roundRectangle = "round-rectangle",
package/mind.module.d.ts CHANGED
@@ -2,10 +2,10 @@ import * as i0 from "@angular/core";
2
2
  import * as i1 from "./mind.component";
3
3
  import * as i2 from "./node.component";
4
4
  import * as i3 from "@angular/common";
5
- import * as i4 from "@plait/richtext";
5
+ import * as i4 from "@plait/text";
6
6
  import * as i5 from "@plait/core";
7
7
  export declare class MindModule {
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<MindModule, never>;
9
- static ɵmod: i0.ɵɵNgModuleDeclaration<MindModule, [typeof i1.PlaitMindComponent, typeof i2.MindNodeComponent], [typeof i3.CommonModule, typeof i4.RichtextModule, typeof i5.PlaitModule], [typeof i1.PlaitMindComponent, typeof i2.MindNodeComponent]>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<MindModule, [typeof i1.PlaitMindComponent, typeof i2.MindNodeComponent], [typeof i3.CommonModule, typeof i4.TextModule, typeof i5.PlaitModule], [typeof i1.PlaitMindComponent, typeof i2.MindNodeComponent]>;
10
10
  static ɵinj: i0.ɵɵInjectorDeclaration<MindModule>;
11
11
  }
@@ -1,61 +1,45 @@
1
- import { ChangeDetectorRef, ComponentRef, NgZone, OnDestroy, OnInit, Renderer2, ViewContainerRef } from '@angular/core';
1
+ import { ChangeDetectorRef, OnDestroy, OnInit, ViewContainerRef } from '@angular/core';
2
2
  import { PlaitPluginElementComponent, PlaitPluginElementContext, OnContextChanged } from '@plait/core';
3
- import { PlaitRichtextComponent } from '@plait/richtext';
3
+ import { TextManage } from '@plait/text';
4
4
  import { RoughSVG } from 'roughjs/bin/svg';
5
5
  import { Subject } from 'rxjs';
6
6
  import { MindElement } from './interfaces/element';
7
7
  import { MindNode } from './interfaces/node';
8
- import { EmojisDrawer } from './drawer/emojis.drawer';
9
- import { QuickInsertDrawer } from './drawer/quick-insert.drawer';
8
+ import { NodeEmojisDrawer } from './drawer/node-emojis.drawer';
9
+ import { NodeInsertDrawer } from './drawer/node-insert.drawer';
10
10
  import { PlaitMindBoard } from './plugins/with-mind.board';
11
- import { AbstractHandlePosition } from './plugins/with-abstract-resize.board';
11
+ import { NodeActiveDrawer } from './drawer/node-active.drawer';
12
+ import { CollapseDrawer } from './drawer/node-collapse.drawer';
12
13
  import * as i0 from "@angular/core";
13
14
  export declare class MindNodeComponent extends PlaitPluginElementComponent<MindElement, PlaitMindBoard> implements OnInit, OnDestroy, OnContextChanged<MindElement, PlaitMindBoard> {
14
15
  private viewContainerRef;
15
16
  protected cdr: ChangeDetectorRef;
16
- private render2;
17
- private ngZone;
18
- isEditable: boolean;
19
17
  roughSVG: RoughSVG;
20
18
  node: MindNode;
21
19
  index: number;
22
- abstractIncludedOutlineG?: SVGGElement;
23
20
  parentG: SVGGElement;
24
- activeG: SVGGElement[];
25
21
  shapeG: SVGGElement | null;
26
22
  linkG?: SVGGElement;
27
- richtextG?: SVGGElement;
28
- foreignObject?: SVGForeignObjectElement;
29
23
  extendG?: SVGGElement;
30
- maskG: SVGGElement;
31
- richtextComponentRef?: ComponentRef<PlaitRichtextComponent>;
32
24
  destroy$: Subject<void>;
33
- emojisDrawer: EmojisDrawer;
34
- quickInsertDrawer: QuickInsertDrawer;
35
- get handActive(): boolean;
36
- constructor(viewContainerRef: ViewContainerRef, cdr: ChangeDetectorRef, render2: Renderer2, ngZone: NgZone);
25
+ nodeEmojisDrawer: NodeEmojisDrawer;
26
+ nodeInsertDrawer: NodeInsertDrawer;
27
+ textManage: TextManage;
28
+ activeDrawer: NodeActiveDrawer;
29
+ collapseDrawer: CollapseDrawer;
30
+ constructor(viewContainerRef: ViewContainerRef, cdr: ChangeDetectorRef);
31
+ initializeDrawer(): void;
37
32
  ngOnInit(): void;
33
+ editTopic(): void;
38
34
  onContextChanged(value: PlaitPluginElementContext<MindElement, PlaitMindBoard>, previous: PlaitPluginElementContext<MindElement, PlaitMindBoard>): void;
39
35
  drawEmojis(): void;
40
- drawQuickInsert(): void;
41
36
  drawShape(): void;
42
37
  destroyShape(): void;
43
38
  drawLink(): void;
44
39
  destroyLine(): void;
45
- drawMaskG(): void;
46
- destroyMaskG(): void;
47
- enableMaskG(): void;
48
- disabledMaskG(): void;
49
- drawActiveG(): void;
50
- destroyActiveG(): void;
51
- updateActiveClass(): void;
52
- drawRichtext(): void;
53
40
  drawExtend(): void;
54
41
  destroyExtend(): void;
55
- destroyRichtext(): void;
56
- updateAbstractIncludedOutline(activeHandlePosition?: AbstractHandlePosition, resizingLocation?: number): void;
57
- updateRichtext(): void;
58
- startEditText(isEnd: boolean, isClear: boolean): void;
42
+ drawText(): void;
59
43
  trackBy: (index: number, node: MindNode) => string;
60
44
  ngOnDestroy(): void;
61
45
  static ɵfac: i0.ɵɵFactoryDeclaration<MindNodeComponent, never>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plait/mind",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^15.2.2",
6
6
  "@angular/core": "^15.2.2"
@@ -1,11 +1,9 @@
1
1
  import { PlaitBoard } from '@plait/core';
2
2
  import { PlaitMindBoard } from './with-mind.board';
3
- import { ComponentRef } from '@angular/core';
4
- import { PlaitRichtextComponent } from '@plait/richtext';
3
+ import { TextManage } from '@plait/text';
5
4
  export interface FakeCreateNodeRef {
5
+ g: SVGGElement;
6
6
  nodeG: SVGGElement;
7
- instanceRef: ComponentRef<PlaitRichtextComponent>;
8
- foreignObject: SVGForeignObjectElement;
9
- topicG: SVGGElement;
7
+ textManage: TextManage;
10
8
  }
11
9
  export declare const withCreateMind: (board: PlaitBoard) => PlaitBoard & PlaitMindBoard;
@@ -1,2 +1,2 @@
1
1
  import { PlaitBoard } from '@plait/core';
2
- export declare const withDnd: (board: PlaitBoard) => PlaitBoard;
2
+ export declare const withNodeDnd: (board: PlaitBoard) => PlaitBoard;
@@ -0,0 +1,5 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ import { MindElement } from '../interfaces/element';
3
+ export declare const withNodeHover: (board: PlaitBoard) => PlaitBoard;
4
+ export declare const addHovered: (element: MindElement) => void;
5
+ export declare const removeHovered: (element: MindElement) => void;
@@ -1,31 +1,29 @@
1
- @mixin node-color{
1
+ @mixin node-color {
2
2
  &.theme-default,
3
3
  &.theme-soft {
4
- .root-node {
5
- color: #333333;
6
- }
7
- .child-node {
4
+ .plait-richtext-container {
8
5
  color: #333333;
9
6
  }
10
7
  }
11
8
 
12
9
  &.theme-colorful,
13
10
  &.theme-retro {
14
- .root-node {
15
- color: #ffffff;
16
- }
17
- .child-node {
18
- color: #333333;
11
+ .root {
12
+ .plait-richtext-container {
13
+ color: #ffffff;
14
+ }
19
15
  }
20
16
  }
21
17
 
22
18
  &.theme-dark,
23
19
  &.theme-starry {
24
- .root-node {
25
- color: #333333;
26
- }
27
- .child-node {
20
+ .plait-richtext-container {
28
21
  color: #ffffff;
29
22
  }
23
+ .root {
24
+ .plait-richtext-container {
25
+ color: #333333;
26
+ }
27
+ }
30
28
  }
31
- }
29
+ }
@@ -3,10 +3,10 @@
3
3
  $primary: #4e8afa;
4
4
 
5
5
  g[plait-mindmap='true'] {
6
- .plait-richtext-container {
6
+ .slate-editable-container {
7
7
  cursor: default;
8
8
  min-width: 5px;
9
- &[readonly='false'] {
9
+ &[contenteditable='true'] {
10
10
  cursor: text;
11
11
  max-width: 34em;
12
12
  }
@@ -29,7 +29,7 @@ g[plait-mindmap='true'] {
29
29
  }
30
30
 
31
31
  .plait-board-container {
32
- &.focused:not(.selection-moving):not(.element-moving):not(.abstract-resizing-horizontal):not(.abstract-resizing-vertical):not(.pointer-mind) {
32
+ &.focused:not(.selection-moving):not(.element-moving):not(.abstract-resizing-horizontal):not(.abstract-resizing-vertical):not(.pointer-mind):not(.mind-node-dragging) {
33
33
  .extend {
34
34
  cursor: pointer;
35
35
  &:hover {
@@ -93,13 +93,6 @@ g[plait-mindmap='true'] {
93
93
  position: initial;
94
94
  align-items: center;
95
95
  height: 100%;
96
- ::-moz-selection {
97
- /* Code for Firefox */
98
- background: none;
99
- }
100
- ::selection {
101
- background: none;
102
- }
103
96
  }
104
97
 
105
98
  .fake-node {
@@ -112,5 +105,13 @@ g[plait-mindmap='true'] {
112
105
  }
113
106
  }
114
107
 
108
+ .root {
109
+ .plait-richtext-container {
110
+ font-size: 18px;
111
+ min-height: 25px;
112
+ line-height: 25px;
113
+ }
114
+ }
115
+
115
116
  @include mixins.node-color();
116
117
  }
@@ -1,4 +1,4 @@
1
- import { PlaitBoard, PlaitElement, Point, RectangleClient } from '@plait/core';
1
+ import { PlaitBoard, Point, RectangleClient } from '@plait/core';
2
2
  import { MindElement } from '../../interfaces';
3
3
  import { LayoutNode } from '@plait/layouts';
4
4
  import { AbstractHandlePosition } from '../../plugins/with-abstract-resize.board';
@@ -20,4 +20,4 @@ export declare const getAbstractHandleRectangle: (rectangle: RectangleClient, is
20
20
  width: number;
21
21
  };
22
22
  export declare function findLocationLeftIndex(board: PlaitBoard, parentChildren: MindElement[], location: number, isHorizontal: boolean): number;
23
- export declare function handleTouchedAbstract(board: PlaitBoard, touchedAbstract: PlaitElement | undefined, endPoint: Point): PlaitElement | undefined;
23
+ export declare function handleTouchedAbstract(board: PlaitBoard, touchedAbstract: MindElement | undefined, endPoint: Point): MindElement<import("../../interfaces").BaseData> | undefined;
@@ -1,2 +1,2 @@
1
1
  import { MindElement } from '../../interfaces/element';
2
- export declare function enterNodeEditing(element: MindElement): void;
2
+ export declare function editTopic(element: MindElement): void;
@@ -1,72 +0,0 @@
1
- import { MindElement } from '../interfaces';
2
- import { createForeignObject, createG } from '@plait/core';
3
- import { getEmojiFontSize } from '../utils/space/emoji';
4
- import { getEmojiForeignRectangle } from '../utils/position/emoji';
5
- class EmojiDrawer {
6
- constructor(board, viewContainerRef) {
7
- this.board = board;
8
- this.viewContainerRef = viewContainerRef;
9
- this.componentRef = null;
10
- }
11
- draw(emoji, element) {
12
- this.destroy();
13
- const componentType = this.board.drawEmoji(emoji, element);
14
- this.componentRef = this.viewContainerRef.createComponent(componentType);
15
- this.componentRef.instance.emojiItem = emoji;
16
- this.componentRef.instance.board = this.board;
17
- this.componentRef.instance.element = element;
18
- this.componentRef.instance.fontSize = getEmojiFontSize(element);
19
- }
20
- get nativeElement() {
21
- if (this.componentRef) {
22
- return this.componentRef.instance.nativeElement;
23
- }
24
- else {
25
- return null;
26
- }
27
- }
28
- destroy() {
29
- if (this.componentRef) {
30
- this.componentRef.destroy();
31
- this.componentRef = null;
32
- }
33
- }
34
- }
35
- export class EmojisDrawer {
36
- constructor(board, viewContainerRef) {
37
- this.board = board;
38
- this.viewContainerRef = viewContainerRef;
39
- this.emojiDrawers = [];
40
- }
41
- drawEmojis(element) {
42
- this.destroy();
43
- if (MindElement.hasEmojis(element)) {
44
- this.g = createG();
45
- this.g.classList.add('emojis');
46
- const foreignRectangle = getEmojiForeignRectangle(this.board, element);
47
- const foreignObject = createForeignObject(foreignRectangle.x, foreignRectangle.y, foreignRectangle.width, foreignRectangle.height);
48
- this.g.append(foreignObject);
49
- const container = document.createElement('div');
50
- container.classList.add('node-emojis-container');
51
- foreignObject.append(container);
52
- this.emojiDrawers = element.data.emojis.map(emojiItem => {
53
- const drawer = new EmojiDrawer(this.board, this.viewContainerRef);
54
- drawer.draw(emojiItem, element);
55
- return drawer;
56
- });
57
- this.emojiDrawers.forEach(drawer => {
58
- container.append(drawer.nativeElement);
59
- });
60
- return this.g;
61
- }
62
- return undefined;
63
- }
64
- destroy() {
65
- if (this.g) {
66
- this.g.remove();
67
- }
68
- this.emojiDrawers.forEach(drawer => drawer.destroy());
69
- this.emojiDrawers = [];
70
- }
71
- }
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamlzLmRyYXdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL2RyYXdlci9lbW9qaXMuZHJhd2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBd0IsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHbkUsTUFBTSxXQUFXO0lBR2IsWUFBb0IsS0FBcUIsRUFBVSxnQkFBa0M7UUFBakUsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBRnJGLGlCQUFZLEdBQWdELElBQUksQ0FBQztJQUV1QixDQUFDO0lBRXpGLElBQUksQ0FBQyxLQUFnQixFQUFFLE9BQStCO1FBQ2xELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUM3QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFFB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bmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbW9qaURhdGEsIEVtb2ppSXRlbSwgTWluZEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE1pbmRFbW9qaUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlL2Vtb2ppLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IGNyZWF0ZUZvcmVpZ25PYmplY3QsIGNyZWF0ZUcgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBnZXRFbW9qaUZvbnRTaXplIH0gZnJvbSAnLi4vdXRpbHMvc3BhY2UvZW1vamknO1xuaW1wb3J0IHsgZ2V0RW1vamlGb3JlaWduUmVjdGFuZ2xlIH0gZnJvbSAnLi4vdXRpbHMvcG9zaXRpb24vZW1vamknO1xuaW1wb3J0IHsgUGxhaXRNaW5kQm9hcmQgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtbWluZC5ib2FyZCc7XG5cbmNsYXNzIEVtb2ppRHJhd2VyIHtcbiAgICBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxNaW5kRW1vamlCYXNlQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBib2FyZDogUGxhaXRNaW5kQm9hcmQsIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cblxuICAgIGRyYXcoZW1vamk6IEVtb2ppSXRlbSwgZWxlbWVudDogTWluZEVsZW1lbnQ8RW1vamlEYXRhPikge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50VHlwZSA9IHRoaXMuYm9hcmQuZHJhd0Vtb2ppKGVtb2ppLCBlbGVtZW50KTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUpO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5lbW9qaUl0ZW0gPSBlbW9qaTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuYm9hcmQgPSB0aGlzLmJvYXJkO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5lbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuZm9udFNpemUgPSBnZXRFbW9qaUZvbnRTaXplKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5uYXRpdmVFbGVtZW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVtb2ppc0RyYXdlciB7XG4gICAgZW1vamlEcmF3ZXJzOiBFbW9qaURyYXdlcltdID0gW107XG5cbiAgICBnPzogU1ZHR0VsZW1lbnQ7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJvYXJkOiBQbGFpdE1pbmRCb2FyZCwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxuXG4gICAgZHJhd0Vtb2ppcyhlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgaWYgKE1pbmRFbGVtZW50Lmhhc0Vtb2ppcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5nID0gY3JlYXRlRygpO1xuICAgICAgICAgICAgdGhpcy5nLmNsYXNzTGlzdC5hZGQoJ2Vtb2ppcycpO1xuICAgICAgICAgICAgY29uc3QgZm9yZWlnblJlY3RhbmdsZSA9IGdldEVtb2ppRm9yZWlnblJlY3RhbmdsZSh0aGlzLmJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGZvcmVpZ25PYmplY3QgPSBjcmVhdGVGb3JlaWduT2JqZWN0KFxuICAgICAgICAgICAgICAgIGZvcmVpZ25SZWN0YW5nbGUueCxcbiAgICAgICAgICAgICAgICBmb3JlaWduUmVjdGFuZ2xlLnksXG4gICAgICAgICAgICAgICAgZm9yZWlnblJlY3RhbmdsZS53aWR0aCxcbiAgICAgICAgICAgICAgICBmb3JlaWduUmVjdGFuZ2xlLmhlaWdodFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZy5hcHBlbmQoZm9yZWlnbk9iamVjdCk7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdub2RlLWVtb2ppcy1jb250YWluZXInKTtcbiAgICAgICAgICAgIGZvcmVpZ25PYmplY3QuYXBwZW5kKGNvbnRhaW5lcik7XG4gICAgICAgICAgICB0aGlzLmVtb2ppRHJhd2VycyA9IGVsZW1lbnQuZGF0YS5lbW9qaXMubWFwKGVtb2ppSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZHJhd2VyID0gbmV3IEVtb2ppRHJhd2VyKHRoaXMuYm9hcmQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgICAgICAgICAgZHJhd2VyLmRyYXcoZW1vamlJdGVtLCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZHJhd2VyO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmVtb2ppRHJhd2Vycy5mb3JFYWNoKGRyYXdlciA9PiB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZChkcmF3ZXIubmF0aXZlRWxlbWVudCEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZykge1xuICAgICAgICAgICAgdGhpcy5nLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW1vamlEcmF3ZXJzLmZvckVhY2goZHJhd2VyID0+IGRyYXdlci5kZXN0cm95KCkpO1xuICAgICAgICB0aGlzLmVtb2ppRHJhd2VycyA9IFtdO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,98 +0,0 @@
1
- import { PlaitBoard, createG } from '@plait/core';
2
- import { MindElement, PlaitMind, MindElementShape, LayoutDirection } from '../interfaces';
3
- import { BaseDrawer } from '../base/base.drawer';
4
- import { getRectangleByNode } from '../utils/position/node';
5
- import { getShapeByElement } from '../utils/node-style/shape';
6
- import { EXTEND_RADIUS, QUICK_INSERT_CIRCLE_COLOR, QUICK_INSERT_INNER_CROSS_COLOR } from '../constants/default';
7
- import { isHorizontalLayout, isIndentedLayout, isTopLayout } from '@plait/layouts';
8
- import { MindQueries } from '../queries';
9
- import { fromEvent } from 'rxjs';
10
- import { insertMindElement } from '../utils/mind';
11
- import { take } from 'rxjs/operators';
12
- import { findNewChildNodePath } from '../utils/path';
13
- import { getBranchColorByMindElement, getBranchWidthByMindElement, getNextBranchColor } from '../utils/node-style/branch';
14
- import { getLayoutDirection, getPointByPlacement, moveXOfPoint, transformPlacement } from '../utils/point-placement';
15
- import { HorizontalPlacement, VerticalPlacement } from '../interfaces/types';
16
- export class QuickInsertDrawer extends BaseDrawer {
17
- canDraw(element) {
18
- if (PlaitBoard.isReadonly(this.board) || element?.isCollapsed) {
19
- return false;
20
- }
21
- return true;
22
- }
23
- draw(element) {
24
- const quickInsertG = createG();
25
- this.g = quickInsertG;
26
- quickInsertG.classList.add('quick-insert');
27
- const node = MindElement.getNode(element);
28
- const layout = MindQueries.getLayoutByElement(element);
29
- const isHorizontal = isHorizontalLayout(layout);
30
- let linkDirection = getLayoutDirection(node, isHorizontal);
31
- if (isIndentedLayout(layout)) {
32
- linkDirection = isTopLayout(layout) ? LayoutDirection.top : LayoutDirection.bottom;
33
- }
34
- const isUnderlineShape = getShapeByElement(this.board, element) === MindElementShape.underline;
35
- const nodeClient = getRectangleByNode(node);
36
- const branchWidth = getBranchWidthByMindElement(this.board, element);
37
- const branchColor = PlaitMind.isMind(element)
38
- ? getNextBranchColor(this.board, element)
39
- : getBranchColorByMindElement(this.board, element);
40
- let distance = 8;
41
- let placement = [HorizontalPlacement.right, VerticalPlacement.middle];
42
- transformPlacement(placement, linkDirection);
43
- // underline shape and horizontal
44
- if (isHorizontal && isUnderlineShape && !element.isRoot) {
45
- placement[1] = VerticalPlacement.bottom;
46
- }
47
- let beginPoint = getPointByPlacement(nodeClient, placement);
48
- if (element.children.length > 0 && !element.isRoot) {
49
- beginPoint = moveXOfPoint(beginPoint, EXTEND_RADIUS + 8, linkDirection);
50
- distance = 5;
51
- }
52
- const endPoint = moveXOfPoint(beginPoint, distance, linkDirection);
53
- const circleCenter = moveXOfPoint(endPoint, 8, linkDirection);
54
- const line = PlaitBoard.getRoughSVG(this.board).line(beginPoint[0], beginPoint[1], endPoint[0], endPoint[1], {
55
- stroke: branchColor,
56
- strokeWidth: branchWidth
57
- });
58
- const circle = PlaitBoard.getRoughSVG(this.board).circle(circleCenter[0], circleCenter[1], EXTEND_RADIUS, {
59
- fill: QUICK_INSERT_CIRCLE_COLOR,
60
- stroke: QUICK_INSERT_CIRCLE_COLOR,
61
- fillStyle: 'solid'
62
- });
63
- const HLineBeginPoint = [circleCenter[0] - 5, circleCenter[1]];
64
- const HLineEndPoint = [circleCenter[0] + 5, circleCenter[1]];
65
- const VLineBeginPoint = [circleCenter[0], circleCenter[1] - 5];
66
- const VLineEndPoint = [circleCenter[0], circleCenter[1] + 5];
67
- const innerCrossHLine = PlaitBoard.getRoughSVG(this.board).line(HLineBeginPoint[0], HLineBeginPoint[1], HLineEndPoint[0], HLineEndPoint[1], {
68
- stroke: QUICK_INSERT_INNER_CROSS_COLOR,
69
- strokeWidth: 2
70
- });
71
- const innerCrossVLine = PlaitBoard.getRoughSVG(this.board).line(VLineBeginPoint[0], VLineBeginPoint[1], VLineEndPoint[0], VLineEndPoint[1], {
72
- stroke: QUICK_INSERT_INNER_CROSS_COLOR,
73
- strokeWidth: 2
74
- });
75
- quickInsertG.appendChild(line);
76
- quickInsertG.appendChild(circle);
77
- quickInsertG.appendChild(innerCrossHLine);
78
- quickInsertG.appendChild(innerCrossVLine);
79
- return quickInsertG;
80
- }
81
- afterDraw(element) {
82
- if (!this.g) {
83
- throw new Error(`can not find quick insert g`);
84
- }
85
- fromEvent(this.g, 'mousedown')
86
- .pipe(take(1))
87
- .subscribe(e => {
88
- e.stopPropagation();
89
- });
90
- fromEvent(this.g, 'mouseup')
91
- .pipe(take(1))
92
- .subscribe(() => {
93
- const path = findNewChildNodePath(this.board, element);
94
- insertMindElement(this.board, element, path);
95
- });
96
- }
97
- }
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2staW5zZXJ0LmRyYXdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL2RyYXdlci9xdWljay1pbnNlcnQuZHJhd2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQVksU0FBUyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQWEsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSx5QkFBeUIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hILE9BQU8sRUFBa0Isa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSwyQkFBMkIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNySCxPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0YsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFVBQVU7SUFDN0MsT0FBTyxDQUFDLE9BQThCO1FBQ2xDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksT0FBTyxFQUFFLFdBQVcsRUFBRTtZQUMzRCxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBOEI7UUFDL0IsTUFBTSxZQUFZLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDdEIsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFM0MsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFtQixDQUFDO1FBQ3pFLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELElBQUksYUFBYSxHQUFHLGtCQUFrQixDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMzRCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzFCLGFBQWEsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7U0FDdEY7UUFDRCxNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssZ0JBQWdCLENBQUMsU0FBUyxDQUFDO1FBQy9GLE1BQU0sVUFBVSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLE1BQU0sV0FBVyxHQUFHLDJCQUEyQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckUsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDekMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO1lBQ3pDLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztRQUVqQixJQUFJLFNBQVMsR0FBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdEYsa0JBQWtCLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRTdDLGlDQUFpQztRQUNqQyxJQUFJLFlBQVksSUFBSSxnQkFBZ0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDckQsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztTQUMzQztRQUVELElBQUksVUFBVSxHQUFHLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUU1RCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDaEQsVUFBVSxHQUFHLFlBQVksQ0FBQyxVQUFVLEVBQUUsYUFBYSxHQUFHLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN4RSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1NBQ2hCO1FBRUQsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDbkUsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFOUQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN6RyxNQUFNLEVBQUUsV0FBVztZQUNuQixXQUFXLEVBQUUsV0FBVztTQUMzQixDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUU7WUFDdEcsSUFBSSxFQUFFLHlCQUF5QjtZQUMvQixNQUFNLEVBQUUseUJBQXlCO1lBQ2pDLFNBQVMsRUFBRSxPQUFPO1NBQ3JCLENBQUMsQ0FBQztRQUVILE1BQU0sZUFBZSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRCxNQUFNLGFBQWEsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsTUFBTSxlQUFlLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sYUFBYSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUU3RCxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQzNELGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFDbEIsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUNsQixhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDaEI7WUFDSSxNQUFNLEVBQUUsOEJBQThCO1lBQ3RDLFdBQVcsRUFBRSxDQUFDO1NBQ2pCLENBQ0osQ0FBQztRQUVGLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDM0QsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUNsQixlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQ2xCLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDaEIsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUNoQjtZQUNJLE1BQU0sRUFBRSw4QkFBOEI7WUFDdEMsV0FBVyxFQUFFLENBQUM7U0FDakIsQ0FDSixDQUFDO1FBRUYsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLFlBQVksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUxQyxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQW9CO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQ2xEO1FBQ0QsU0FBUyxDQUFhLElBQUksQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDO2FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDYixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDWCxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFDUCxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUM7YUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixNQUFNLElBQUksR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZELGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgY3JlYXRlRyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmRFbGVtZW50LCBCYXNlRGF0YSwgUGxhaXRNaW5kLCBNaW5kRWxlbWVudFNoYXBlLCBMYXlvdXREaXJlY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFmdGVyRHJhdywgQmFzZURyYXdlciB9IGZyb20gJy4uL2Jhc2UvYmFzZS5kcmF3ZXInO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlOb2RlIH0gZnJvbSAnLi4vdXRpbHMvcG9zaXRpb24vbm9kZSc7XG5pbXBvcnQgeyBnZXRTaGFwZUJ5RWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL25vZGUtc3R5bGUvc2hhcGUnO1xuaW1wb3J0IHsgRVhURU5EX1JBRElVUywgUVVJQ0tfSU5TRVJUX0NJUkNMRV9DT0xPUiwgUVVJQ0tfSU5TRVJUX0lOTkVSX0NST1NTX0NPTE9SIH0gZnJvbSAnLi4vY29uc3RhbnRzL2RlZmF1bHQnO1xuaW1wb3J0IHsgTWluZExheW91dFR5cGUsIGlzSG9yaXpvbnRhbExheW91dCwgaXNJbmRlbnRlZExheW91dCwgaXNUb3BMYXlvdXQgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBNaW5kUXVlcmllcyB9IGZyb20gJy4uL3F1ZXJpZXMnO1xuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpbnNlcnRNaW5kRWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL21pbmQnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGZpbmROZXdDaGlsZE5vZGVQYXRoIH0gZnJvbSAnLi4vdXRpbHMvcGF0aCc7XG5pbXBvcnQgeyBnZXRCcmFuY2hDb2xvckJ5TWluZEVsZW1lbnQsIGdldEJyYW5jaFdpZHRoQnlNaW5kRWxlbWVudCwgZ2V0TmV4dEJyYW5jaENvbG9yIH0gZnJvbSAnLi4vdXRpbHMvbm9kZS1zdHlsZS9icmFuY2gnO1xuaW1wb3J0IHsgZ2V0TGF5b3V0RGlyZWN0aW9uLCBnZXRQb2ludEJ5UGxhY2VtZW50LCBtb3ZlWE9mUG9pbnQsIHRyYW5zZm9ybVBsYWNlbWVudCB9IGZyb20gJy4uL3V0aWxzL3BvaW50LXBsYWNlbWVudCc7XG5pbXBvcnQgeyBIb3Jpem9udGFsUGxhY2VtZW50LCBQb2ludFBsYWNlbWVudCwgVmVydGljYWxQbGFjZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIFF1aWNrSW5zZXJ0RHJhd2VyIGV4dGVuZHMgQmFzZURyYXdlciBpbXBsZW1lbnRzIEFmdGVyRHJhdyB7XG4gICAgY2FuRHJhdyhlbGVtZW50OiBNaW5kRWxlbWVudDxCYXNlRGF0YT4pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaXNSZWFkb25seSh0aGlzLmJvYXJkKSB8fCBlbGVtZW50Py5pc0NvbGxhcHNlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGRyYXcoZWxlbWVudDogTWluZEVsZW1lbnQ8QmFzZURhdGE+KTogU1ZHR0VsZW1lbnQge1xuICAgICAgICBjb25zdCBxdWlja0luc2VydEcgPSBjcmVhdGVHKCk7XG4gICAgICAgIHRoaXMuZyA9IHF1aWNrSW5zZXJ0RztcbiAgICAgICAgcXVpY2tJbnNlcnRHLmNsYXNzTGlzdC5hZGQoJ3F1aWNrLWluc2VydCcpO1xuXG4gICAgICAgIGNvbnN0IG5vZGUgPSBNaW5kRWxlbWVudC5nZXROb2RlKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBsYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRMYXlvdXRCeUVsZW1lbnQoZWxlbWVudCkgYXMgTWluZExheW91dFR5cGU7XG4gICAgICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IGlzSG9yaXpvbnRhbExheW91dChsYXlvdXQpO1xuICAgICAgICBsZXQgbGlua0RpcmVjdGlvbiA9IGdldExheW91dERpcmVjdGlvbihub2RlLCBpc0hvcml6b250YWwpO1xuICAgICAgICBpZiAoaXNJbmRlbnRlZExheW91dChsYXlvdXQpKSB7XG4gICAgICAgICAgICBsaW5rRGlyZWN0aW9uID0gaXNUb3BMYXlvdXQobGF5b3V0KSA/IExheW91dERpcmVjdGlvbi50b3AgOiBMYXlvdXREaXJlY3Rpb24uYm90dG9tO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzVW5kZXJsaW5lU2hhcGUgPSBnZXRTaGFwZUJ5RWxlbWVudCh0aGlzLmJvYXJkLCBlbGVtZW50KSA9PT0gTWluZEVsZW1lbnRTaGFwZS51bmRlcmxpbmU7XG4gICAgICAgIGNvbnN0IG5vZGVDbGllbnQgPSBnZXRSZWN0YW5nbGVCeU5vZGUobm9kZSk7XG4gICAgICAgIGNvbnN0IGJyYW5jaFdpZHRoID0gZ2V0QnJhbmNoV2lkdGhCeU1pbmRFbGVtZW50KHRoaXMuYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBicmFuY2hDb2xvciA9IFBsYWl0TWluZC5pc01pbmQoZWxlbWVudClcbiAgICAgICAgICAgID8gZ2V0TmV4dEJyYW5jaENvbG9yKHRoaXMuYm9hcmQsIGVsZW1lbnQpXG4gICAgICAgICAgICA6IGdldEJyYW5jaENvbG9yQnlNaW5kRWxlbWVudCh0aGlzLmJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgbGV0IGRpc3RhbmNlID0gODtcblxuICAgICAgICBsZXQgcGxhY2VtZW50OiBQb2ludFBsYWNlbWVudCA9IFtIb3Jpem9udGFsUGxhY2VtZW50LnJpZ2h0LCBWZXJ0aWNhbFBsYWNlbWVudC5taWRkbGVdO1xuXG4gICAgICAgIHRyYW5zZm9ybVBsYWNlbWVudChwbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgICAgIC8vIHVuZGVybGluZSBzaGFwZSBhbmQgaG9yaXpvbnRhbFxuICAgICAgICBpZiAoaXNIb3Jpem9udGFsICYmIGlzVW5kZXJsaW5lU2hhcGUgJiYgIWVsZW1lbnQuaXNSb290KSB7XG4gICAgICAgICAgICBwbGFjZW1lbnRbMV0gPSBWZXJ0aWNhbFBsYWNlbWVudC5ib3R0b207XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYmVnaW5Qb2ludCA9IGdldFBvaW50QnlQbGFjZW1lbnQobm9kZUNsaWVudCwgcGxhY2VtZW50KTtcblxuICAgICAgICBpZiAoZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPiAwICYmICFlbGVtZW50LmlzUm9vdCkge1xuICAgICAgICAgICAgYmVnaW5Qb2ludCA9IG1vdmVYT2ZQb2ludChiZWdpblBvaW50LCBFWFRFTkRfUkFESVVTICsgOCwgbGlua0RpcmVjdGlvbik7XG4gICAgICAgICAgICBkaXN0YW5jZSA9IDU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbmRQb2ludCA9IG1vdmVYT2ZQb2ludChiZWdpblBvaW50LCBkaXN0YW5jZSwgbGlua0RpcmVjdGlvbik7XG4gICAgICAgIGNvbnN0IGNpcmNsZUNlbnRlciA9IG1vdmVYT2ZQb2ludChlbmRQb2ludCwgOCwgbGlua0RpcmVjdGlvbik7XG5cbiAgICAgICAgY29uc3QgbGluZSA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcodGhpcy5ib2FyZCkubGluZShiZWdpblBvaW50WzBdLCBiZWdpblBvaW50WzFdLCBlbmRQb2ludFswXSwgZW5kUG9pbnRbMV0sIHtcbiAgICAgICAgICAgIHN0cm9rZTogYnJhbmNoQ29sb3IsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogYnJhbmNoV2lkdGhcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgY2lyY2xlID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyh0aGlzLmJvYXJkKS5jaXJjbGUoY2lyY2xlQ2VudGVyWzBdLCBjaXJjbGVDZW50ZXJbMV0sIEVYVEVORF9SQURJVVMsIHtcbiAgICAgICAgICAgIGZpbGw6IFFVSUNLX0lOU0VSVF9DSVJDTEVfQ09MT1IsXG4gICAgICAgICAgICBzdHJva2U6IFFVSUNLX0lOU0VSVF9DSVJDTEVfQ09MT1IsXG4gICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgSExpbmVCZWdpblBvaW50ID0gW2NpcmNsZUNlbnRlclswXSAtIDUsIGNpcmNsZUNlbnRlclsxXV07XG4gICAgICAgIGNvbnN0IEhMaW5lRW5kUG9pbnQgPSBbY2lyY2xlQ2VudGVyWzBdICsgNSwgY2lyY2xlQ2VudGVyWzFdXTtcbiAgICAgICAgY29uc3QgVkxpbmVCZWdpblBvaW50ID0gW2NpcmNsZUNlbnRlclswXSwgY2lyY2xlQ2VudGVyWzFdIC0gNV07XG4gICAgICAgIGNvbnN0IFZMaW5lRW5kUG9pbnQgPSBbY2lyY2xlQ2VudGVyWzBdLCBjaXJjbGVDZW50ZXJbMV0gKyA1XTtcblxuICAgICAgICBjb25zdCBpbm5lckNyb3NzSExpbmUgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpLmxpbmUoXG4gICAgICAgICAgICBITGluZUJlZ2luUG9pbnRbMF0sXG4gICAgICAgICAgICBITGluZUJlZ2luUG9pbnRbMV0sXG4gICAgICAgICAgICBITGluZUVuZFBvaW50WzBdLFxuICAgICAgICAgICAgSExpbmVFbmRQb2ludFsxXSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdHJva2U6IFFVSUNLX0lOU0VSVF9JTk5FUl9DUk9TU19DT0xPUixcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMlxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGlubmVyQ3Jvc3NWTGluZSA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcodGhpcy5ib2FyZCkubGluZShcbiAgICAgICAgICAgIFZMaW5lQmVnaW5Qb2ludFswXSxcbiAgICAgICAgICAgIFZMaW5lQmVnaW5Qb2ludFsxXSxcbiAgICAgICAgICAgIFZMaW5lRW5kUG9pbnRbMF0sXG4gICAgICAgICAgICBWTGluZUVuZFBvaW50WzFdLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0cm9rZTogUVVJQ0tfSU5TRVJUX0lOTkVSX0NST1NTX0NPTE9SLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgcXVpY2tJbnNlcnRHLmFwcGVuZENoaWxkKGxpbmUpO1xuICAgICAgICBxdWlja0luc2VydEcuYXBwZW5kQ2hpbGQoY2lyY2xlKTtcbiAgICAgICAgcXVpY2tJbnNlcnRHLmFwcGVuZENoaWxkKGlubmVyQ3Jvc3NITGluZSk7XG4gICAgICAgIHF1aWNrSW5zZXJ0Ry5hcHBlbmRDaGlsZChpbm5lckNyb3NzVkxpbmUpO1xuXG4gICAgICAgIHJldHVybiBxdWlja0luc2VydEc7XG4gICAgfVxuXG4gICAgYWZ0ZXJEcmF3KGVsZW1lbnQ6IE1pbmRFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNhbiBub3QgZmluZCBxdWljayBpbnNlcnQgZ2ApO1xuICAgICAgICB9XG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmcsICdtb3VzZWRvd24nKVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoZSA9PiB7XG4gICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBmcm9tRXZlbnQodGhpcy5nLCAnbW91c2V1cCcpXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IGZpbmROZXdDaGlsZE5vZGVQYXRoKHRoaXMuYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGluc2VydE1pbmRFbGVtZW50KHRoaXMuYm9hcmQsIGVsZW1lbnQsIHBhdGgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -1,32 +0,0 @@
1
- import { drawRichtext } from '@plait/richtext';
2
- import { getTopicRectangleByNode } from '../position/topic';
3
- import { PlaitBoard, updateForeignObject } from '@plait/core';
4
- export function drawTopicByNode(board, node, viewContainerRef) {
5
- const rectangle = getTopicRectangleByNode(board, node);
6
- return drawTopicByElement(board, rectangle, node.origin, viewContainerRef);
7
- }
8
- export function drawTopicByElement(board, rectangle, element, viewContainerRef) {
9
- const containerRef = viewContainerRef || PlaitBoard.getComponent(board).viewContainerRef;
10
- const classList = [];
11
- if (element.isRoot) {
12
- classList.push('root-node');
13
- classList.push('font-size-18');
14
- }
15
- else {
16
- classList.push('child-node');
17
- }
18
- // COMPAT: last character can not show in safari browser
19
- return drawRichtext(rectangle.x, rectangle.y, rectangle.width, rectangle.height, element.data.topic, containerRef, classList);
20
- }
21
- export function updateMindNodeTopicSize(board, node, g, isEditable) {
22
- const { x, y, width, height } = getTopicRectangleByNode(board, node);
23
- if (isEditable) {
24
- // add 999, avoid changing lines when paste more text
25
- updateForeignObject(g, width + 999, height + 999, x, y);
26
- }
27
- else {
28
- // COMPAT: last character can not show in safari browser
29
- updateForeignObject(g, width, height, x, y);
30
- }
31
- }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS10b3BpYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXcvbm9kZS10b3BpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUQsT0FBTyxFQUFFLFVBQVUsRUFBbUIsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHL0UsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFxQixFQUFFLElBQWMsRUFBRSxnQkFBbUM7SUFDdEcsTUFBTSxTQUFTLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZELE9BQU8sa0JBQWtCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FDOUIsS0FBcUIsRUFDckIsU0FBMEIsRUFDMUIsT0FBb0IsRUFDcEIsZ0JBQW1DO0lBRW5DLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7SUFDekYsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNoQixTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVCLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDbEM7U0FBTTtRQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDaEM7SUFDRCx3REFBd0Q7SUFDeEQsT0FBTyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDbEksQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxLQUFxQixFQUFFLElBQWMsRUFBRSxDQUFjLEVBQUUsVUFBbUI7SUFDOUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLHVCQUF1QixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRSxJQUFJLFVBQVUsRUFBRTtRQUNaLHFEQUFxRDtRQUNyRCxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUMzRDtTQUFNO1FBQ0gsd0RBQXdEO1FBQ3hELG1CQUFtQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUMvQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkcmF3UmljaHRleHQgfSBmcm9tICdAcGxhaXQvcmljaHRleHQnO1xuaW1wb3J0IHsgTWluZE5vZGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgZ2V0VG9waWNSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuLi9wb3NpdGlvbi90b3BpYyc7XG5pbXBvcnQgeyBQbGFpdE1pbmRCb2FyZCB9IGZyb20gJy4uLy4uL3BsdWdpbnMvd2l0aC1taW5kLmJvYXJkJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFJlY3RhbmdsZUNsaWVudCwgdXBkYXRlRm9yZWlnbk9iamVjdCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3VG9waWNCeU5vZGUoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBub2RlOiBNaW5kTm9kZSwgdmlld0NvbnRhaW5lclJlZj86IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBnZXRUb3BpY1JlY3RhbmdsZUJ5Tm9kZShib2FyZCwgbm9kZSk7XG4gICAgcmV0dXJuIGRyYXdUb3BpY0J5RWxlbWVudChib2FyZCwgcmVjdGFuZ2xlLCBub2RlLm9yaWdpbiwgdmlld0NvbnRhaW5lclJlZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3VG9waWNCeUVsZW1lbnQoXG4gICAgYm9hcmQ6IFBsYWl0TWluZEJvYXJkLFxuICAgIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGVsZW1lbnQ6IE1pbmRFbGVtZW50LFxuICAgIHZpZXdDb250YWluZXJSZWY/OiBWaWV3Q29udGFpbmVyUmVmXG4pIHtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB2aWV3Q29udGFpbmVyUmVmIHx8IFBsYWl0Qm9hcmQuZ2V0Q29tcG9uZW50KGJvYXJkKS52aWV3Q29udGFpbmVyUmVmO1xuICAgIGNvbnN0IGNsYXNzTGlzdCA9IFtdO1xuICAgIGlmIChlbGVtZW50LmlzUm9vdCkge1xuICAgICAgICBjbGFzc0xpc3QucHVzaCgncm9vdC1ub2RlJyk7XG4gICAgICAgIGNsYXNzTGlzdC5wdXNoKCdmb250LXNpemUtMTgnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjbGFzc0xpc3QucHVzaCgnY2hpbGQtbm9kZScpO1xuICAgIH1cbiAgICAvLyBDT01QQVQ6IGxhc3QgY2hhcmFjdGVyIGNhbiBub3Qgc2hvdyBpbiBzYWZhcmkgYnJvd3NlclxuICAgIHJldHVybiBkcmF3UmljaHRleHQocmVjdGFuZ2xlLngsIHJlY3RhbmdsZS55LCByZWN0YW5nbGUud2lkdGgsIHJlY3RhbmdsZS5oZWlnaHQsIGVsZW1lbnQuZGF0YS50b3BpYywgY29udGFpbmVyUmVmLCBjbGFzc0xpc3QpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlTWluZE5vZGVUb3BpY1NpemUoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBub2RlOiBNaW5kTm9kZSwgZzogU1ZHR0VsZW1lbnQsIGlzRWRpdGFibGU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IGdldFRvcGljUmVjdGFuZ2xlQnlOb2RlKGJvYXJkLCBub2RlKTtcbiAgICBpZiAoaXNFZGl0YWJsZSkge1xuICAgICAgICAvLyBhZGQgOTk577yMIGF2b2lkIGNoYW5naW5nIGxpbmVzIHdoZW4gcGFzdGUgbW9yZSB0ZXh0XG4gICAgICAgIHVwZGF0ZUZvcmVpZ25PYmplY3QoZywgd2lkdGggKyA5OTksIGhlaWdodCArIDk5OSwgeCwgeSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ09NUEFUOiBsYXN0IGNoYXJhY3RlciBjYW4gbm90IHNob3cgaW4gc2FmYXJpIGJyb3dzZXJcbiAgICAgICAgdXBkYXRlRm9yZWlnbk9iamVjdChnLCB3aWR0aCwgaGVpZ2h0LCB4LCB5KTtcbiAgICB9XG59XG4iXX0=
@@ -1,16 +0,0 @@
1
- import { ViewContainerRef } from '@angular/core';
2
- import { MindNode } from '../../interfaces/node';
3
- import { PlaitMindBoard } from '../../plugins/with-mind.board';
4
- import { RectangleClient } from '@plait/core';
5
- import { MindElement } from '../../interfaces';
6
- export declare function drawTopicByNode(board: PlaitMindBoard, node: MindNode, viewContainerRef?: ViewContainerRef): {
7
- richtextComponentRef: import("@angular/core").ComponentRef<import("@plait/richtext").PlaitRichtextComponent>;
8
- richtextG: SVGGElement;
9
- foreignObject: SVGForeignObjectElement;
10
- };
11
- export declare function drawTopicByElement(board: PlaitMindBoard, rectangle: RectangleClient, element: MindElement, viewContainerRef?: ViewContainerRef): {
12
- richtextComponentRef: import("@angular/core").ComponentRef<import("@plait/richtext").PlaitRichtextComponent>;
13
- richtextG: SVGGElement;
14
- foreignObject: SVGForeignObjectElement;
15
- };
16
- export declare function updateMindNodeTopicSize(board: PlaitMindBoard, node: MindNode, g: SVGGElement, isEditable: boolean): void;