@plait/mind 0.27.0-next.0 → 0.27.0-next.10

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 (162) hide show
  1. package/base/emoji-base.component.d.ts +2 -2
  2. package/base/index.d.ts +0 -1
  3. package/constants/default.d.ts +1 -0
  4. package/constants/node-topic-style.d.ts +4 -0
  5. package/drawer/{node-active.drawer.d.ts → node-active.generator.d.ts} +2 -2
  6. package/drawer/node-shape.generator.d.ts +10 -0
  7. package/esm2022/base/emoji-base.component.mjs +46 -0
  8. package/{esm2020 → esm2022}/base/index.mjs +1 -2
  9. package/{esm2020 → esm2022}/constants/abstract-node.mjs +1 -1
  10. package/{esm2020 → esm2022}/constants/default.mjs +2 -1
  11. package/{esm2020 → esm2022}/constants/index.mjs +1 -1
  12. package/esm2022/constants/node-topic-style.mjs +12 -0
  13. package/esm2022/drawer/node-active.generator.mjs +42 -0
  14. package/esm2022/drawer/node-shape.generator.mjs +19 -0
  15. package/esm2022/interfaces/element-data.mjs +2 -0
  16. package/esm2022/interfaces/element.mjs +118 -0
  17. package/{esm2020 → esm2022}/interfaces/index.mjs +2 -1
  18. package/esm2022/interfaces/options.mjs +2 -0
  19. package/{esm2020 → esm2022}/interfaces/theme-color.mjs +1 -1
  20. package/esm2022/mind-node.component.mjs +235 -0
  21. package/esm2022/mind.component.mjs +52 -0
  22. package/esm2022/plugins/with-abstract-resize.mjs +112 -0
  23. package/esm2022/plugins/with-mind-create.mjs +112 -0
  24. package/esm2022/plugins/with-mind-fragment.mjs +90 -0
  25. package/esm2022/plugins/with-mind-hotkey.mjs +67 -0
  26. package/esm2022/plugins/with-mind.mjs +91 -0
  27. package/esm2022/plugins/with-node-dnd.mjs +180 -0
  28. package/esm2022/plugins/with-node-image-resize.mjs +48 -0
  29. package/esm2022/plugins/with-node-image.mjs +98 -0
  30. package/esm2022/plugins/with-node-resize.mjs +133 -0
  31. package/{esm2020 → esm2022}/public-api.mjs +2 -3
  32. package/{esm2020 → esm2022}/transforms/image.mjs +1 -1
  33. package/esm2022/transforms/index.mjs +23 -0
  34. package/esm2022/transforms/node.mjs +66 -0
  35. package/{esm2020 → esm2022}/utils/abstract/common.mjs +2 -2
  36. package/{esm2020 → esm2022}/utils/abstract/resize.mjs +3 -3
  37. package/{esm2020 → esm2022}/utils/clipboard.mjs +3 -3
  38. package/{esm2020 → esm2022}/utils/dnd/common.mjs +1 -1
  39. package/esm2022/utils/draw/abstract-outline.mjs +117 -0
  40. package/esm2022/utils/draw/node-dnd.mjs +159 -0
  41. package/{esm2020 → esm2022}/utils/draw/node-shape.mjs +4 -3
  42. package/esm2022/utils/index.mjs +15 -0
  43. package/{esm2020 → esm2022}/utils/node/common.mjs +1 -1
  44. package/esm2022/utils/node/create-node.mjs +55 -0
  45. package/esm2022/utils/node/dynamic-width.mjs +19 -0
  46. package/esm2022/utils/node/image.mjs +23 -0
  47. package/esm2022/utils/position/image.mjs +36 -0
  48. package/esm2022/utils/position/node.mjs +36 -0
  49. package/esm2022/utils/position/topic.mjs +16 -0
  50. package/{esm2020 → esm2022}/utils/space/index.mjs +1 -1
  51. package/esm2022/utils/space/layout-options.mjs +69 -0
  52. package/esm2022/utils/space/node-space.mjs +137 -0
  53. package/{fesm2020 → fesm2022}/plait-mind.mjs +1383 -1569
  54. package/fesm2022/plait-mind.mjs.map +1 -0
  55. package/interfaces/element-data.d.ts +5 -9
  56. package/interfaces/element.d.ts +1 -0
  57. package/interfaces/index.d.ts +1 -0
  58. package/interfaces/options.d.ts +2 -4
  59. package/{node.component.d.ts → mind-node.component.d.ts} +11 -10
  60. package/mind.component.d.ts +2 -2
  61. package/package.json +7 -13
  62. package/plugins/with-mind-fragment.d.ts +5 -0
  63. package/plugins/with-mind-hotkey.d.ts +0 -6
  64. package/public-api.d.ts +1 -2
  65. package/styles/styles.scss +7 -3
  66. package/transforms/image.d.ts +3 -2
  67. package/transforms/index.d.ts +1 -2
  68. package/transforms/node.d.ts +0 -1
  69. package/utils/abstract/common.d.ts +2 -2
  70. package/utils/index.d.ts +0 -1
  71. package/utils/node/create-node.d.ts +2 -2
  72. package/utils/node/image.d.ts +0 -2
  73. package/utils/position/image.d.ts +1 -1
  74. package/utils/position/node.d.ts +1 -1
  75. package/utils/space/layout-options.d.ts +2 -2
  76. package/utils/space/node-space.d.ts +1 -5
  77. package/base/image-base.component.d.ts +0 -27
  78. package/constants/image.d.ts +0 -3
  79. package/drawer/node-image.drawer.d.ts +0 -15
  80. package/esm2020/base/emoji-base.component.mjs +0 -46
  81. package/esm2020/base/image-base.component.mjs +0 -67
  82. package/esm2020/constants/image.mjs +0 -4
  83. package/esm2020/constants/node-topic-style.mjs +0 -8
  84. package/esm2020/drawer/node-active.drawer.mjs +0 -44
  85. package/esm2020/drawer/node-image.drawer.mjs +0 -59
  86. package/esm2020/interfaces/element-data.mjs +0 -2
  87. package/esm2020/interfaces/element.mjs +0 -111
  88. package/esm2020/interfaces/options.mjs +0 -2
  89. package/esm2020/mind.component.mjs +0 -51
  90. package/esm2020/mind.module.mjs +0 -21
  91. package/esm2020/node.component.mjs +0 -248
  92. package/esm2020/plugins/with-abstract-resize.mjs +0 -112
  93. package/esm2020/plugins/with-mind-create.mjs +0 -109
  94. package/esm2020/plugins/with-mind-hotkey.mjs +0 -122
  95. package/esm2020/plugins/with-mind.mjs +0 -114
  96. package/esm2020/plugins/with-node-dnd.mjs +0 -180
  97. package/esm2020/plugins/with-node-image-resize.mjs +0 -48
  98. package/esm2020/plugins/with-node-image.mjs +0 -96
  99. package/esm2020/plugins/with-node-resize.mjs +0 -133
  100. package/esm2020/transforms/index.mjs +0 -24
  101. package/esm2020/transforms/node.mjs +0 -82
  102. package/esm2020/utils/draw/abstract-outline.mjs +0 -117
  103. package/esm2020/utils/draw/node-dnd.mjs +0 -159
  104. package/esm2020/utils/index.mjs +0 -16
  105. package/esm2020/utils/is-virtual-key.mjs +0 -13
  106. package/esm2020/utils/node/create-node.mjs +0 -52
  107. package/esm2020/utils/node/dynamic-width.mjs +0 -22
  108. package/esm2020/utils/node/image.mjs +0 -63
  109. package/esm2020/utils/position/image.mjs +0 -36
  110. package/esm2020/utils/position/node.mjs +0 -34
  111. package/esm2020/utils/position/topic.mjs +0 -17
  112. package/esm2020/utils/space/layout-options.mjs +0 -72
  113. package/esm2020/utils/space/node-space.mjs +0 -142
  114. package/fesm2015/plait-mind.mjs +0 -4402
  115. package/fesm2015/plait-mind.mjs.map +0 -1
  116. package/fesm2020/plait-mind.mjs.map +0 -1
  117. package/mind.module.d.ts +0 -11
  118. package/utils/is-virtual-key.d.ts +0 -1
  119. /package/{esm2020 → esm2022}/base/base.drawer.mjs +0 -0
  120. /package/{esm2020 → esm2022}/constants/node-style.mjs +0 -0
  121. /package/{esm2020 → esm2022}/constants/theme.mjs +0 -0
  122. /package/{esm2020 → esm2022}/drawer/node-collapse.drawer.mjs +0 -0
  123. /package/{esm2020 → esm2022}/drawer/node-emojis.drawer.mjs +0 -0
  124. /package/{esm2020 → esm2022}/drawer/node-insert.drawer.mjs +0 -0
  125. /package/{esm2020 → esm2022}/interfaces/layout.mjs +0 -0
  126. /package/{esm2020 → esm2022}/interfaces/node.mjs +0 -0
  127. /package/{esm2020 → esm2022}/interfaces/pointer.mjs +0 -0
  128. /package/{esm2020 → esm2022}/interfaces/types.mjs +0 -0
  129. /package/{esm2020 → esm2022}/plait-mind.mjs +0 -0
  130. /package/{esm2020 → esm2022}/plugins/with-abstract-resize.board.mjs +0 -0
  131. /package/{esm2020 → esm2022}/plugins/with-mind-extend.mjs +0 -0
  132. /package/{esm2020 → esm2022}/plugins/with-mind.board.mjs +0 -0
  133. /package/{esm2020 → esm2022}/plugins/with-node-hover-detect.mjs +0 -0
  134. /package/{esm2020 → esm2022}/queries/get-available-sublayouts-by-element.mjs +0 -0
  135. /package/{esm2020 → esm2022}/queries/get-branch-layouts.mjs +0 -0
  136. /package/{esm2020 → esm2022}/queries/get-correct-layout-by-element.mjs +0 -0
  137. /package/{esm2020 → esm2022}/queries/get-layout-by-element.mjs +0 -0
  138. /package/{esm2020 → esm2022}/queries/index.mjs +0 -0
  139. /package/{esm2020 → esm2022}/transforms/abstract-node.mjs +0 -0
  140. /package/{esm2020 → esm2022}/transforms/emoji.mjs +0 -0
  141. /package/{esm2020 → esm2022}/transforms/layout.mjs +0 -0
  142. /package/{esm2020 → esm2022}/utils/dnd/detector.mjs +0 -0
  143. /package/{esm2020 → esm2022}/utils/draw/node-link/abstract-link.mjs +0 -0
  144. /package/{esm2020 → esm2022}/utils/draw/node-link/draw-link.mjs +0 -0
  145. /package/{esm2020 → esm2022}/utils/draw/node-link/indented-link.mjs +0 -0
  146. /package/{esm2020 → esm2022}/utils/draw/node-link/logic-link.mjs +0 -0
  147. /package/{esm2020 → esm2022}/utils/layout.mjs +0 -0
  148. /package/{esm2020 → esm2022}/utils/mind.mjs +0 -0
  149. /package/{esm2020 → esm2022}/utils/node/adjust-node.mjs +0 -0
  150. /package/{esm2020 → esm2022}/utils/node/index.mjs +0 -0
  151. /package/{esm2020 → esm2022}/utils/node/right-node-count.mjs +0 -0
  152. /package/{esm2020 → esm2022}/utils/node-hover/extend.mjs +0 -0
  153. /package/{esm2020 → esm2022}/utils/node-style/branch.mjs +0 -0
  154. /package/{esm2020 → esm2022}/utils/node-style/common.mjs +0 -0
  155. /package/{esm2020 → esm2022}/utils/node-style/index.mjs +0 -0
  156. /package/{esm2020 → esm2022}/utils/node-style/shape.mjs +0 -0
  157. /package/{esm2020 → esm2022}/utils/path.mjs +0 -0
  158. /package/{esm2020 → esm2022}/utils/point-placement.mjs +0 -0
  159. /package/{esm2020 → esm2022}/utils/position/emoji.mjs +0 -0
  160. /package/{esm2020 → esm2022}/utils/position/index.mjs +0 -0
  161. /package/{esm2020 → esm2022}/utils/space/emoji.mjs +0 -0
  162. /package/{esm2020 → esm2022}/utils/weak-maps.mjs +0 -0
@@ -1,20 +1,16 @@
1
- import { Element } from 'slate';
1
+ import { CommonImageItem } from '@plait/common';
2
+ import { ParagraphElement } from '@plait/text';
2
3
  export interface EmojiItem {
3
4
  name: string;
4
5
  }
5
- export interface ImageItem {
6
- url: string;
7
- width: number;
8
- height: number;
9
- }
10
6
  export interface BaseData {
11
- topic: Element;
7
+ topic: ParagraphElement;
12
8
  emojis?: EmojiItem[];
13
- image?: ImageItem;
9
+ image?: CommonImageItem;
14
10
  }
15
11
  export interface EmojiData extends BaseData {
16
12
  emojis: EmojiItem[];
17
13
  }
18
14
  export interface ImageData extends BaseData {
19
- image: ImageItem;
15
+ image: CommonImageItem;
20
16
  }
@@ -43,6 +43,7 @@ export declare const MindElement: {
43
43
  getEmojis(element: MindElement<EmojiData>): import("./element-data").EmojiItem[];
44
44
  hasMounted(element: MindElement): boolean;
45
45
  getTextEditor(element: MindElement): import("slate").BaseEditor & import("slate-angular").AngularEditor & import("slate-history").HistoryEditor;
46
+ getTextManage(element: MindElement): import("@plait/text").TextManage;
46
47
  };
47
48
  export declare enum MindElementShape {
48
49
  roundRectangle = "round-rectangle",
@@ -4,3 +4,4 @@ export * from './node';
4
4
  export * from './layout';
5
5
  export * from './pointer';
6
6
  export * from './theme-color';
7
+ export * from './options';
@@ -1,9 +1,7 @@
1
+ import { ImageBaseComponent } from '@plait/common';
1
2
  import { ComponentType, WithPluginOptions } from '@plait/core';
2
- import { TextPlugin } from '@plait/text';
3
- import { MindImageBaseComponent } from '../base';
4
3
  export interface WithMindOptions extends WithPluginOptions {
5
4
  emojiPadding: number;
6
5
  spaceBetweenEmojis: number;
7
- textPlugins?: TextPlugin[];
8
- imageComponentType?: ComponentType<MindImageBaseComponent>;
6
+ imageComponentType?: ComponentType<ImageBaseComponent>;
9
7
  }
@@ -1,5 +1,5 @@
1
1
  import { ChangeDetectorRef, OnDestroy, OnInit, ViewContainerRef } from '@angular/core';
2
- import { PlaitPluginElementComponent, PlaitPluginElementContext, OnContextChanged } from '@plait/core';
2
+ import { PlaitPluginElementContext, OnContextChanged } from '@plait/core';
3
3
  import { TextManage } from '@plait/text';
4
4
  import { RoughSVG } from 'roughjs/bin/svg';
5
5
  import { Subject } from 'rxjs';
@@ -8,11 +8,13 @@ import { MindNode } from './interfaces/node';
8
8
  import { NodeEmojisDrawer } from './drawer/node-emojis.drawer';
9
9
  import { NodeInsertDrawer } from './drawer/node-insert.drawer';
10
10
  import { PlaitMindBoard } from './plugins/with-mind.board';
11
- import { NodeActiveDrawer } from './drawer/node-active.drawer';
11
+ import { NodeActiveGenerator } from './drawer/node-active.generator';
12
12
  import { CollapseDrawer } from './drawer/node-collapse.drawer';
13
- import { NodeImageDrawer } from './drawer/node-image.drawer';
13
+ import { CommonPluginElement, ImageGenerator } from '@plait/common';
14
+ import { NodeShapeGenerator } from './drawer/node-shape.generator';
15
+ import { ImageData } from './interfaces';
14
16
  import * as i0 from "@angular/core";
15
- export declare class MindNodeComponent extends PlaitPluginElementComponent<MindElement, PlaitMindBoard> implements OnInit, OnDestroy, OnContextChanged<MindElement, PlaitMindBoard> {
17
+ export declare class MindNodeComponent extends CommonPluginElement<MindElement, PlaitMindBoard> implements OnInit, OnDestroy, OnContextChanged<MindElement, PlaitMindBoard> {
16
18
  private viewContainerRef;
17
19
  protected cdr: ChangeDetectorRef;
18
20
  roughSVG: RoughSVG;
@@ -24,18 +26,17 @@ export declare class MindNodeComponent extends PlaitPluginElementComponent<MindE
24
26
  extendG?: SVGGElement;
25
27
  destroy$: Subject<void>;
26
28
  nodeEmojisDrawer: NodeEmojisDrawer;
29
+ nodeShapeGenerator: NodeShapeGenerator;
27
30
  nodeInsertDrawer: NodeInsertDrawer;
28
- imageDrawer: NodeImageDrawer;
29
- textManage: TextManage;
30
- activeDrawer: NodeActiveDrawer;
31
+ imageGenerator: ImageGenerator<MindElement<ImageData>>;
32
+ activeGenerator: NodeActiveGenerator;
31
33
  collapseDrawer: CollapseDrawer;
34
+ get textManage(): TextManage;
32
35
  constructor(viewContainerRef: ViewContainerRef, cdr: ChangeDetectorRef);
33
36
  initializeDrawer(): void;
34
37
  ngOnInit(): void;
35
38
  onContextChanged(value: PlaitPluginElementContext<MindElement, PlaitMindBoard>, previous: PlaitPluginElementContext<MindElement, PlaitMindBoard>): void;
36
39
  drawEmojis(): void;
37
- drawShape(): void;
38
- destroyShape(): void;
39
40
  drawLink(): void;
40
41
  destroyLine(): void;
41
42
  drawExtend(): void;
@@ -46,5 +47,5 @@ export declare class MindNodeComponent extends PlaitPluginElementComponent<MindE
46
47
  trackBy: (index: number, node: MindNode) => string;
47
48
  ngOnDestroy(): void;
48
49
  static ɵfac: i0.ɵɵFactoryDeclaration<MindNodeComponent, never>;
49
- static ɵcmp: i0.ɵɵComponentDeclaration<MindNodeComponent, "plait-mind-node", never, {}, {}, never, never, false, never>;
50
+ static ɵcmp: i0.ɵɵComponentDeclaration<MindNodeComponent, "plait-mind-node", never, {}, {}, never, never, true, never>;
50
51
  }
@@ -2,7 +2,7 @@ import { OnInit } from '@angular/core';
2
2
  import { PlaitMind } from './interfaces/element';
3
3
  import { MindNode } from './interfaces/node';
4
4
  import { BeforeContextChange, PlaitPluginElementContext } from '@plait/core';
5
- import { MindNodeComponent } from './node.component';
5
+ import { MindNodeComponent } from './mind-node.component';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class PlaitMindComponent extends MindNodeComponent implements OnInit, BeforeContextChange<PlaitMind> {
8
8
  root: MindNode;
@@ -12,5 +12,5 @@ export declare class PlaitMindComponent extends MindNodeComponent implements OnI
12
12
  updateMindLayout(element?: import("./interfaces/element").MindElement<import("@plait/mind").BaseData>): void;
13
13
  updateMindNodeLocation(element: PlaitMind): void;
14
14
  static ɵfac: i0.ɵɵFactoryDeclaration<PlaitMindComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<PlaitMindComponent, "plait-mind", never, {}, {}, never, never, false, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<PlaitMindComponent, "plait-mind", never, {}, {}, never, never, true, never>;
16
16
  }
package/package.json CHANGED
@@ -1,18 +1,14 @@
1
1
  {
2
2
  "name": "@plait/mind",
3
- "version": "0.27.0-next.0",
3
+ "version": "0.27.0-next.10",
4
4
  "peerDependencies": {
5
- "@angular/common": "^15.2.2",
6
- "@angular/core": "^15.2.2"
5
+ "@angular/common": "^16.0.0",
6
+ "@angular/core": "^16.0.0"
7
7
  },
8
8
  "dependencies": {
9
9
  "tslib": "^2.3.0"
10
10
  },
11
- "module": "fesm2015/plait-mind.mjs",
12
- "es2020": "fesm2020/plait-mind.mjs",
13
- "esm2020": "esm2020/plait-mind.mjs",
14
- "fesm2020": "fesm2020/plait-mind.mjs",
15
- "fesm2015": "fesm2015/plait-mind.mjs",
11
+ "module": "fesm2022/plait-mind.mjs",
16
12
  "typings": "index.d.ts",
17
13
  "exports": {
18
14
  "./package.json": {
@@ -20,11 +16,9 @@
20
16
  },
21
17
  ".": {
22
18
  "types": "./index.d.ts",
23
- "esm2020": "./esm2020/plait-mind.mjs",
24
- "es2020": "./fesm2020/plait-mind.mjs",
25
- "es2015": "./fesm2015/plait-mind.mjs",
26
- "node": "./fesm2015/plait-mind.mjs",
27
- "default": "./fesm2020/plait-mind.mjs"
19
+ "esm2022": "./esm2022/plait-mind.mjs",
20
+ "esm": "./esm2022/plait-mind.mjs",
21
+ "default": "./fesm2022/plait-mind.mjs"
28
22
  }
29
23
  },
30
24
  "sideEffects": false
@@ -0,0 +1,5 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ import { MindElement } from '../interfaces';
3
+ import { PlaitMindBoard } from './with-mind.board';
4
+ export declare const withMindFragment: (baseBoard: PlaitBoard) => PlaitBoard & PlaitMindBoard;
5
+ export declare const getNextSelectedElement: (board: PlaitBoard, firstLevelElements: MindElement[]) => MindElement<import("../interfaces").BaseData> | undefined;
@@ -1,9 +1,3 @@
1
1
  import { PlaitBoard } from '@plait/core';
2
- import { MindElement } from '../interfaces';
3
2
  import { PlaitMindBoard } from './with-mind.board';
4
3
  export declare const withMindHotkey: (baseBoard: PlaitBoard) => PlaitBoard & PlaitMindBoard;
5
- export declare const getNextSelectedElement: (board: PlaitBoard, firstLevelElements: MindElement[]) => MindElement<import("../interfaces").BaseData> | undefined;
6
- export declare const isExpandHotkey: (event: KeyboardEvent) => boolean;
7
- export declare const isTabHotkey: (event: KeyboardEvent) => boolean;
8
- export declare const isEnterHotkey: (event: KeyboardEvent) => boolean;
9
- export declare const isSpaceHotkey: (event: KeyboardEvent) => boolean;
package/public-api.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  export * from './mind.component';
2
- export * from './node.component';
3
- export * from './mind.module';
2
+ export * from './mind-node.component';
4
3
  export * from './utils';
5
4
  export * from './interfaces';
6
5
  export * from './plugins/with-mind';
@@ -22,9 +22,6 @@ $primary: #4e8afa;
22
22
  }
23
23
  .slate-editable-container {
24
24
  min-width: 5px;
25
- &.editing {
26
- max-width: 34em;
27
- }
28
25
  }
29
26
 
30
27
  .extend {
@@ -73,6 +70,13 @@ $primary: #4e8afa;
73
70
  }
74
71
  }
75
72
 
73
+ &.pointer-mind
74
+ {
75
+ .board-host-svg {
76
+ cursor: default !important;
77
+ }
78
+ }
79
+
76
80
  &.readonly {
77
81
  .collapsed {
78
82
  .extend:hover {
@@ -1,4 +1,5 @@
1
1
  import { PlaitBoard } from '@plait/core';
2
- import { ImageData, ImageItem, MindElement } from '../interfaces';
2
+ import { ImageData, MindElement } from '../interfaces';
3
+ import { CommonImageItem } from '@plait/common';
3
4
  export declare const removeImage: (board: PlaitBoard, element: MindElement<ImageData>) => void;
4
- export declare const setImage: (board: PlaitBoard, element: MindElement, imageItem: ImageItem) => void;
5
+ export declare const setImage: (board: PlaitBoard, element: MindElement, imageItem: CommonImageItem) => void;
@@ -9,10 +9,9 @@ export declare const MindTransforms: {
9
9
  insertAbstract: (board: import("@plait/core").PlaitBoard, elements: import("@plait/core").PlaitElement[]) => void;
10
10
  setAbstractsByRefs: (board: import("@plait/core").PlaitBoard, abstractRefs: import("@plait/mind").AbstractRefs) => void;
11
11
  setAbstractByStandardLayout: (board: import("@plait/core").PlaitBoard, element: import("@plait/mind").MindElement<import("@plait/mind").BaseData>) => void;
12
- removeElements: (board: import("@plait/core").PlaitBoard, elements: import("@plait/mind").MindElement<import("@plait/mind").BaseData>[]) => void;
13
12
  insertNodes: (board: import("@plait/core").PlaitBoard, elements: import("@plait/mind").MindElement<import("@plait/mind").BaseData>[], path: import("slate").Path) => void;
14
13
  insertAbstractNodes: (board: import("@plait/core").PlaitBoard, validAbstractRefs: import("@plait/mind").AbstractRef[], elements: import("@plait/mind").MindElement<import("@plait/mind").BaseData>[], path: import("slate").Path) => void;
15
14
  setRightNodeCountByRefs: (board: import("@plait/core").PlaitBoard, refs: import("@plait/mind").RightNodeCountRef[]) => void;
16
15
  removeImage: (board: import("@plait/core").PlaitBoard, element: import("@plait/mind").MindElement<import("@plait/mind").ImageData>) => void;
17
- setImage: (board: import("@plait/core").PlaitBoard, element: import("@plait/mind").MindElement<import("@plait/mind").BaseData>, imageItem: import("@plait/mind").ImageItem) => void;
16
+ setImage: (board: import("@plait/core").PlaitBoard, element: import("@plait/mind").MindElement<import("@plait/mind").BaseData>, imageItem: import("@plait/common").CommonImageItem) => void;
18
17
  };
@@ -7,7 +7,6 @@ import { PlaitMindBoard } from '../plugins/with-mind.board';
7
7
  export declare const setTopic: (board: PlaitMindBoard, element: MindElement, topic: Element, width: number, height: number) => void;
8
8
  export declare const setNodeManualWidth: (board: PlaitMindBoard, element: MindElement, width: number, height: number) => void;
9
9
  export declare const setTopicSize: (board: PlaitMindBoard, element: MindElement, width: number, height: number) => void;
10
- export declare const removeElements: (board: PlaitBoard, elements: MindElement[]) => void;
11
10
  export declare const insertNodes: (board: PlaitBoard, elements: MindElement[], path: Path) => void;
12
11
  export declare const insertAbstractNodes: (board: PlaitBoard, validAbstractRefs: AbstractRef[], elements: MindElement[], path: Path) => void;
13
12
  export declare const setRightNodeCountByRefs: (board: PlaitBoard, refs: RightNodeCountRef[]) => void;
@@ -25,6 +25,6 @@ export declare function getRelativeStartEndByAbstractRef(abstractRef: AbstractRe
25
25
  start: number;
26
26
  end: number;
27
27
  };
28
- export declare const insertElementHandleAbstract: (board: PlaitBoard, path: Path, step?: number, isExtendPreviousNode?: boolean, effectedAbstracts?: Map<MindElement<import("@plait/mind").BaseData>, Pick<AbstractNode, "end" | "start">>) => Map<MindElement<import("@plait/mind").BaseData>, Pick<AbstractNode, "end" | "start">>;
29
- export declare const deleteElementHandleAbstract: (board: PlaitBoard, deletableElements: MindElement[], effectedAbstracts?: Map<MindElement<import("@plait/mind").BaseData>, Pick<AbstractNode, "end" | "start">>) => Map<MindElement<import("@plait/mind").BaseData>, Pick<AbstractNode, "end" | "start">>;
28
+ export declare const insertElementHandleAbstract: (board: PlaitBoard, path: Path, step?: number, isExtendPreviousNode?: boolean, effectedAbstracts?: Map<MindElement<import("@plait/mind").BaseData>, Pick<AbstractNode, "start" | "end">>) => Map<MindElement<import("@plait/mind").BaseData>, Pick<AbstractNode, "start" | "end">>;
29
+ export declare const deleteElementHandleAbstract: (board: PlaitBoard, deletableElements: MindElement[], effectedAbstracts?: Map<MindElement<import("@plait/mind").BaseData>, Pick<AbstractNode, "start" | "end">>) => Map<MindElement<import("@plait/mind").BaseData>, Pick<AbstractNode, "start" | "end">>;
30
30
  export declare const isChildOfAbstract: (board: PlaitBoard, element: MindElement) => boolean;
package/utils/index.d.ts CHANGED
@@ -4,7 +4,6 @@ export * from './mind';
4
4
  export * from './layout';
5
5
  export * from './node';
6
6
  export * from './node-style';
7
- export * from './is-virtual-key';
8
7
  export * from './dnd/common';
9
8
  export * from './dnd/detector';
10
9
  export * from './draw/node-dnd';
@@ -1,8 +1,8 @@
1
- import { Point } from '@plait/core';
1
+ import { PlaitBoard, Point } from '@plait/core';
2
2
  import { MindLayoutType } from '@plait/layouts';
3
3
  import { BranchShape, MindElement, MindElementShape } from '../../interfaces/element';
4
4
  import { Element } from 'slate';
5
- export declare const createEmptyMind: (point: Point) => MindElement<import("@plait/mind").BaseData>;
5
+ export declare const createEmptyMind: (board: PlaitBoard, point: Point) => MindElement<import("@plait/mind").BaseData>;
6
6
  export declare const createDefaultMind: (point: Point, rightNodeCount: number, layout: MindLayoutType) => MindElement<import("@plait/mind").BaseData>;
7
7
  export declare const createMindElement: (text: string | Element, width: number, height: number, options: InheritAttribute) => MindElement<import("@plait/mind").BaseData>;
8
8
  export interface InheritAttribute {
@@ -5,5 +5,3 @@ export declare const getSelectedImageElement: (board: PlaitBoard) => MindElement
5
5
  export declare const addSelectedImageElement: (board: PlaitBoard, element: MindElement<ImageData>) => void;
6
6
  export declare const removeSelectedImageElement: (board: PlaitBoard) => void;
7
7
  export declare const setImageFocus: (board: PlaitBoard, element: MindElement<ImageData>, isFocus: boolean) => void;
8
- export declare const selectImage: (board: PlaitBoard, element: MindElement, acceptImageTypes?: string[]) => void;
9
- export declare const buildImage: (board: PlaitBoard, element: MindElement, imageFile: File) => Promise<void>;
@@ -11,6 +11,6 @@ export declare const getHitImageResizeHandleDirection: (board: PlaitBoard, eleme
11
11
  width: number;
12
12
  height: number;
13
13
  };
14
- direction: import("@plait/common").ResizeDirection;
14
+ handle: import("@plait/common").ResizeHandle;
15
15
  cursorClass: import("@plait/common").ResizeCursorClass;
16
16
  } | undefined;
@@ -3,7 +3,7 @@ import { MindNode } from '../../interfaces/node';
3
3
  import { MindElement } from '../../interfaces/element';
4
4
  import { PlaitMindBoard } from '../../plugins/with-mind.board';
5
5
  export declare function getRectangleByNode(node: MindNode): RectangleClient;
6
- export declare function getRectangleByElement(board: PlaitMindBoard, originPoint: Point, element: MindElement): {
6
+ export declare function getRectangleByElement(board: PlaitMindBoard, element: MindElement): {
7
7
  x: number;
8
8
  y: number;
9
9
  width: number;
@@ -1,3 +1,3 @@
1
- import { LayoutOptions } from "@plait/layouts";
2
- import { PlaitMindBoard } from "../../plugins/with-mind.board";
1
+ import { LayoutOptions } from '@plait/layouts';
2
+ import { PlaitMindBoard } from '../../plugins/with-mind.board';
3
3
  export declare const getLayoutOptions: (board: PlaitMindBoard) => LayoutOptions;
@@ -7,11 +7,7 @@ export declare const NodeSpace: {
7
7
  getNodeHeight(board: PlaitMindBoard, element: MindElement): number;
8
8
  getNodeDynamicWidth(board: PlaitMindBoard, element: MindElement): number;
9
9
  /**
10
- * use this when upload image first or resize image
11
- * @param board
12
- * @param element
13
- * @param imageWidth
14
- * @returns
10
+ * use it when upload image first or resize image
15
11
  */
16
12
  getNodeNewDynamicWidth(board: PlaitMindBoard, element: MindElement, imageWidth: number): number;
17
13
  getNodeResizableMinWidth(board: PlaitMindBoard, element: MindElement): number;
@@ -1,27 +0,0 @@
1
- import { ChangeDetectorRef, ElementRef, OnInit } from '@angular/core';
2
- import { ImageItem, ImageData } from '../interfaces/element-data';
3
- import { PlaitBoard } from '@plait/core';
4
- import { MindElement } from '../interfaces';
5
- import { ActiveGenerator } from '@plait/common';
6
- import * as i0 from "@angular/core";
7
- export declare abstract class MindImageBaseComponent implements OnInit {
8
- protected elementRef: ElementRef<HTMLElement>;
9
- cdr: ChangeDetectorRef;
10
- _imageItem: ImageItem;
11
- _isFocus: boolean;
12
- initialized: boolean;
13
- activeGenerator: ActiveGenerator<MindElement>;
14
- set imageItem(value: ImageItem);
15
- get imageItem(): ImageItem;
16
- board: PlaitBoard;
17
- element: MindElement<ImageData>;
18
- set isFocus(value: boolean);
19
- get isFocus(): boolean;
20
- get nativeElement(): HTMLElement;
21
- abstract afterImageItemChange(previous: ImageItem, current: ImageItem): void;
22
- constructor(elementRef: ElementRef<HTMLElement>, cdr: ChangeDetectorRef);
23
- ngOnInit(): void;
24
- drawFocus(): void;
25
- static ɵfac: i0.ɵɵFactoryDeclaration<MindImageBaseComponent, never>;
26
- static ɵdir: i0.ɵɵDirectiveDeclaration<MindImageBaseComponent, never, never, { "imageItem": "imageItem"; "board": "board"; "element": "element"; "isFocus": "isFocus"; }, {}, never, never, false, never>;
27
- }
@@ -1,3 +0,0 @@
1
- export declare const PICTURE_ACCEPTED_UPLOAD_SIZE = 20;
2
- export declare const acceptImageTypes: string[];
3
- export declare const DEFAULT_IMAGE_WIDTH = 240;
@@ -1,15 +0,0 @@
1
- import { MindElement } from '../interfaces';
2
- import { PlaitMindBoard } from '../plugins/with-mind.board';
3
- import { ComponentRef, ViewContainerRef } from '@angular/core';
4
- import { MindImageBaseComponent } from '../base/image-base.component';
5
- export declare class NodeImageDrawer {
6
- private board;
7
- private viewContainerRef;
8
- componentRef: ComponentRef<MindImageBaseComponent> | null;
9
- g?: SVGGElement;
10
- foreignObject: SVGForeignObjectElement;
11
- constructor(board: PlaitMindBoard, viewContainerRef: ViewContainerRef);
12
- drawImage(nodeG: SVGGElement, element: MindElement): void;
13
- updateImage(nodeG: SVGGElement, previous: MindElement, current: MindElement): void;
14
- destroy(): void;
15
- }
@@ -1,46 +0,0 @@
1
- import { Directive, HostListener, Input } from '@angular/core';
2
- import { PlaitPluginKey } from '@plait/core';
3
- import * as i0 from "@angular/core";
4
- export class MindEmojiBaseComponent {
5
- get nativeElement() {
6
- return this.elementRef.nativeElement;
7
- }
8
- handleClick() {
9
- const currentOptions = this.board.getPluginOptions(PlaitPluginKey.withSelection);
10
- this.board.setPluginOptions(PlaitPluginKey.withSelection, {
11
- isDisabledSelect: true
12
- });
13
- setTimeout(() => {
14
- this.board.setPluginOptions(PlaitPluginKey.withSelection, { ...currentOptions });
15
- }, 0);
16
- }
17
- constructor(elementRef) {
18
- this.elementRef = elementRef;
19
- this.fontSize = 14;
20
- }
21
- ngOnInit() {
22
- this.elementRef.nativeElement.style.fontSize = `${this.fontSize}px`;
23
- }
24
- }
25
- MindEmojiBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: MindEmojiBaseComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
26
- MindEmojiBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: MindEmojiBaseComponent, inputs: { fontSize: "fontSize", emojiItem: "emojiItem", board: "board", element: "element" }, host: { listeners: { "mousedown": "handleClick()" }, classAttribute: "mind-node-emoji" }, ngImport: i0 });
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: MindEmojiBaseComponent, decorators: [{
28
- type: Directive,
29
- args: [{
30
- host: {
31
- class: 'mind-node-emoji'
32
- }
33
- }]
34
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { fontSize: [{
35
- type: Input
36
- }], emojiItem: [{
37
- type: Input
38
- }], board: [{
39
- type: Input
40
- }], element: [{
41
- type: Input
42
- }], handleClick: [{
43
- type: HostListener,
44
- args: ['mousedown']
45
- }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamktYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9iYXNlL2Vtb2ppLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQWlDLGNBQWMsRUFBcUIsTUFBTSxhQUFhLENBQUM7O0FBUS9GLE1BQU0sT0FBTyxzQkFBc0I7SUFhL0IsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUN6QyxDQUFDO0lBR0QsV0FBVztRQUNQLE1BQU0sY0FBYyxHQUFJLElBQUksQ0FBQyxLQUEyQixDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2RyxJQUFJLENBQUMsS0FBMkIsQ0FBQyxnQkFBZ0IsQ0FBb0IsY0FBYyxDQUFDLGFBQWEsRUFBRTtZQUNoRyxnQkFBZ0IsRUFBRSxJQUFJO1NBQ3pCLENBQUMsQ0FBQztRQUNILFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWCxJQUFJLENBQUMsS0FBMkIsQ0FBQyxnQkFBZ0IsQ0FBb0IsY0FBYyxDQUFDLGFBQWEsRUFBRSxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUMvSCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsWUFBc0IsVUFBbUM7UUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUExQnpELGFBQVEsR0FBVyxFQUFFLENBQUM7SUEwQnNDLENBQUM7SUFFN0QsUUFBUTtRQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUM7SUFDeEUsQ0FBQzs7bUhBaENRLHNCQUFzQjt1R0FBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBTGxDLFNBQVM7bUJBQUM7b0JBQ1AsSUFBSSxFQUFFO3dCQUNGLEtBQUssRUFBRSxpQkFBaUI7cUJBQzNCO2lCQUNKO2lHQUdHLFFBQVE7c0JBRFAsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFRTixXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbW9qaURhdGEsIEVtb2ppSXRlbSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudC1kYXRhJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0T3B0aW9uc0JvYXJkLCBQbGFpdFBsdWdpbktleSwgV2l0aFBsdWdpbk9wdGlvbnMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnbWluZC1ub2RlLWVtb2ppJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgTWluZEVtb2ppQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KClcbiAgICBmb250U2l6ZTogbnVtYmVyID0gMTQ7XG5cbiAgICBASW5wdXQoKVxuICAgIGVtb2ppSXRlbSE6IEVtb2ppSXRlbTtcblxuICAgIEBJbnB1dCgpXG4gICAgYm9hcmQhOiBQbGFpdEJvYXJkO1xuXG4gICAgQElucHV0KClcbiAgICBlbGVtZW50ITogTWluZEVsZW1lbnQ8RW1vamlEYXRhPjtcblxuICAgIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJylcbiAgICBoYW5kbGVDbGljaygpIHtcbiAgICAgICAgY29uc3QgY3VycmVudE9wdGlvbnMgPSAodGhpcy5ib2FyZCBhcyBQbGFpdE9wdGlvbnNCb2FyZCkuZ2V0UGx1Z2luT3B0aW9ucyhQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uKTtcbiAgICAgICAgKHRoaXMuYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpLnNldFBsdWdpbk9wdGlvbnM8V2l0aFBsdWdpbk9wdGlvbnM+KFBsYWl0UGx1Z2luS2V5LndpdGhTZWxlY3Rpb24sIHtcbiAgICAgICAgICAgIGlzRGlzYWJsZWRTZWxlY3Q6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgKHRoaXMuYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpLnNldFBsdWdpbk9wdGlvbnM8V2l0aFBsdWdpbk9wdGlvbnM+KFBsYWl0UGx1Z2luS2V5LndpdGhTZWxlY3Rpb24sIHsgLi4uY3VycmVudE9wdGlvbnMgfSk7XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5mb250U2l6ZSA9IGAke3RoaXMuZm9udFNpemV9cHhgO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,67 +0,0 @@
1
- import { Directive, Input } from '@angular/core';
2
- import { PlaitElement } from '@plait/core';
3
- import { ActiveGenerator } from '@plait/common';
4
- import { getImageForeignRectangle } from '../utils/position/image';
5
- import * as i0 from "@angular/core";
6
- export class MindImageBaseComponent {
7
- set imageItem(value) {
8
- this.afterImageItemChange(this._imageItem, value);
9
- this._imageItem = value;
10
- this.drawFocus();
11
- }
12
- get imageItem() {
13
- return this._imageItem;
14
- }
15
- set isFocus(value) {
16
- this._isFocus = value;
17
- this.drawFocus();
18
- }
19
- get isFocus() {
20
- return this._isFocus;
21
- }
22
- get nativeElement() {
23
- return this.elementRef.nativeElement;
24
- }
25
- constructor(elementRef, cdr) {
26
- this.elementRef = elementRef;
27
- this.cdr = cdr;
28
- this.initialized = false;
29
- }
30
- ngOnInit() {
31
- this.activeGenerator = new ActiveGenerator(this.board, {
32
- activeStrokeWidth: 1,
33
- getRectangle: (element) => {
34
- return getImageForeignRectangle(this.board, this.element);
35
- },
36
- getStrokeWidthByElement: () => {
37
- return 0;
38
- }
39
- });
40
- this.initialized = true;
41
- }
42
- drawFocus() {
43
- if (this.initialized) {
44
- const com = PlaitElement.getComponent(this.element);
45
- this.activeGenerator.draw(this.element, com.g, { selected: this._isFocus });
46
- }
47
- }
48
- }
49
- 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 });
50
- MindImageBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: MindImageBaseComponent, inputs: { imageItem: "imageItem", board: "board", element: "element", isFocus: "isFocus" }, host: { classAttribute: "mind-node-image" }, ngImport: i0 });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: MindImageBaseComponent, decorators: [{
52
- type: Directive,
53
- args: [{
54
- host: {
55
- class: 'mind-node-image'
56
- }
57
- }]
58
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { imageItem: [{
59
- type: Input
60
- }], board: [{
61
- type: Input
62
- }], element: [{
63
- type: Input
64
- }], isFocus: [{
65
- type: Input
66
- }] } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9iYXNlL2ltYWdlLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFjLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV4RixPQUFPLEVBQWMsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBUW5FLE1BQU0sT0FBZ0Isc0JBQXNCO0lBT3hDLElBQ0ksU0FBUyxDQUFDLEtBQWdCO1FBQzFCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFRRCxJQUNJLE9BQU8sQ0FBQyxLQUFjO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO0lBQ3pDLENBQUM7SUFJRCxZQUFzQixVQUFtQyxFQUFTLEdBQXNCO1FBQWxFLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQVMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFyQ3hGLGdCQUFXLEdBQUcsS0FBSyxDQUFDO0lBcUN1RSxDQUFDO0lBRTVGLFFBQVE7UUFDSixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFjLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDaEUsaUJBQWlCLEVBQUUsQ0FBQztZQUNwQixZQUFZLEVBQUUsQ0FBQyxPQUFvQixFQUFFLEVBQUU7Z0JBQ25DLE9BQU8sd0JBQXdCLENBQUMsSUFBSSxDQUFDLEtBQXVCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hGLENBQUM7WUFDRCx1QkFBdUIsRUFBRSxHQUFHLEVBQUU7Z0JBQzFCLE9BQU8sQ0FBQyxDQUFDO1lBQ2IsQ0FBQztTQUNKLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxTQUFTO1FBQ0wsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUMvRTtJQUNMLENBQUM7O21IQTVEaUIsc0JBQXNCO3VHQUF0QixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFMM0MsU0FBUzttQkFBQztvQkFDUCxJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLGlCQUFpQjtxQkFDM0I7aUJBQ0o7aUlBU08sU0FBUztzQkFEWixLQUFLO2dCQVlOLEtBQUs7c0JBREosS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSUYsT0FBTztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VJdGVtLCBJbWFnZURhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQtZGF0YSc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQWN0aXZlR2VuZXJhdG9yIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRJbWFnZUZvcmVpZ25SZWN0YW5nbGUgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9pbWFnZSc7XG5pbXBvcnQgeyBQbGFpdE1pbmRCb2FyZCB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1taW5kLmJvYXJkJztcblxuQERpcmVjdGl2ZSh7XG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ21pbmQtbm9kZS1pbWFnZSdcbiAgICB9XG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1pbmRJbWFnZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIF9pbWFnZUl0ZW0hOiBJbWFnZUl0ZW07XG4gICAgX2lzRm9jdXMhOiBib29sZWFuO1xuICAgIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBhY3RpdmVHZW5lcmF0b3IhOiBBY3RpdmVHZW5lcmF0b3I8TWluZEVsZW1lbnQ+O1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgaW1hZ2VJdGVtKHZhbHVlOiBJbWFnZUl0ZW0pIHtcbiAgICAgICAgdGhpcy5hZnRlckltYWdlSXRlbUNoYW5nZSh0aGlzLl9pbWFnZUl0ZW0sIHZhbHVlKTtcbiAgICAgICAgdGhpcy5faW1hZ2VJdGVtID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZHJhd0ZvY3VzKCk7XG4gICAgfVxuXG4gICAgZ2V0IGltYWdlSXRlbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ltYWdlSXRlbTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIGJvYXJkITogUGxhaXRCb2FyZDtcblxuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudCE6IE1pbmRFbGVtZW50PEltYWdlRGF0YT47XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBpc0ZvY3VzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lzRm9jdXMgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5kcmF3Rm9jdXMoKTtcbiAgICB9XG5cbiAgICBnZXQgaXNGb2N1cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRm9jdXM7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBhYnN0cmFjdCBhZnRlckltYWdlSXRlbUNoYW5nZShwcmV2aW91czogSW1hZ2VJdGVtLCBjdXJyZW50OiBJbWFnZUl0ZW0pOiB2b2lkO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvciA9IG5ldyBBY3RpdmVHZW5lcmF0b3I8TWluZEVsZW1lbnQ+KHRoaXMuYm9hcmQsIHtcbiAgICAgICAgICAgIGFjdGl2ZVN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgICAgZ2V0UmVjdGFuZ2xlOiAoZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW1hZ2VGb3JlaWduUmVjdGFuZ2xlKHRoaXMuYm9hcmQgYXMgUGxhaXRNaW5kQm9hcmQsIHRoaXMuZWxlbWVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGRyYXdGb2N1cygpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbSA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQodGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLmRyYXcodGhpcy5lbGVtZW50LCBjb20uZywgeyBzZWxlY3RlZDogdGhpcy5faXNGb2N1cyB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -1,4 +0,0 @@
1
- export const PICTURE_ACCEPTED_UPLOAD_SIZE = 20;
2
- export const acceptImageTypes = ['png', 'jpeg', 'gif', 'bmp'];
3
- export const DEFAULT_IMAGE_WIDTH = 240;
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9jb25zdGFudHMvaW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsRUFBRSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFOUQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFBJQ1RVUkVfQUNDRVBURURfVVBMT0FEX1NJWkUgPSAyMDtcblxuZXhwb3J0IGNvbnN0IGFjY2VwdEltYWdlVHlwZXMgPSBbJ3BuZycsICdqcGVnJywgJ2dpZicsICdibXAnXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU1BR0VfV0lEVEggPSAyNDA7XG4iXX0=
@@ -1,8 +0,0 @@
1
- export const TOPIC_COLOR = '#333';
2
- export const TOPIC_FONT_SIZE = 14;
3
- export const ROOT_TOPIC_FONT_SIZE = 18;
4
- export const ROOT_TOPIC_HEIGHT = 25;
5
- export const TOPIC_DEFAULT_MAX_WORD_COUNT = 34;
6
- export const DEFAULT_FONT_FAMILY = 'PingFangSC-Regular, "PingFang SC"';
7
- export const BRANCH_FONT_FAMILY = 'PingFangSC-Medium, "PingFang SC"';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS10b3BpYy1zdHlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL2NvbnN0YW50cy9ub2RlLXRvcGljLXN0eWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUM7QUFDbEMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUVsQyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsRUFBRSxDQUFDO0FBRXBDLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLEVBQUUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxtQ0FBbUMsQ0FBQztBQUN2RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBUT1BJQ19DT0xPUiA9ICcjMzMzJztcbmV4cG9ydCBjb25zdCBUT1BJQ19GT05UX1NJWkUgPSAxNDtcblxuZXhwb3J0IGNvbnN0IFJPT1RfVE9QSUNfRk9OVF9TSVpFID0gMTg7XG5cbmV4cG9ydCBjb25zdCBST09UX1RPUElDX0hFSUdIVCA9IDI1O1xuXG5leHBvcnQgY29uc3QgVE9QSUNfREVGQVVMVF9NQVhfV09SRF9DT1VOVCA9IDM0O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9GT05UX0ZBTUlMWSA9ICdQaW5nRmFuZ1NDLVJlZ3VsYXIsIFwiUGluZ0ZhbmcgU0NcIic7XG5leHBvcnQgY29uc3QgQlJBTkNIX0ZPTlRfRkFNSUxZID0gJ1BpbmdGYW5nU0MtTWVkaXVtLCBcIlBpbmdGYW5nIFNDXCInOyJdfQ==
@@ -1,44 +0,0 @@
1
- import { PlaitBoard, RectangleClient, createG, drawRoundRectangle } from '@plait/core';
2
- import { MindElement } from '../interfaces';
3
- import { BaseDrawer } from '../base/base.drawer';
4
- import { getRectangleByNode } from '../utils/position/node';
5
- import { PRIMARY_COLOR } from '../constants/default';
6
- import { AbstractNode } from '@plait/layouts';
7
- import { drawAbstractIncludedOutline } from '../utils/draw/abstract-outline';
8
- import { DefaultNodeStyle } from '../constants/node-style';
9
- import { getStrokeWidthByElement } from '../utils/node-style/shape';
10
- export class NodeActiveDrawer extends BaseDrawer {
11
- canDraw(element, data) {
12
- if (data.selected) {
13
- return true;
14
- }
15
- else {
16
- return false;
17
- }
18
- }
19
- baseDraw(element, data) {
20
- const activeG = createG();
21
- this.g = activeG;
22
- if (AbstractNode.isAbstract(element)) {
23
- this.abstractOutlineG = drawAbstractIncludedOutline(this.board, PlaitBoard.getRoughSVG(this.board), element);
24
- activeG.append(this.abstractOutlineG);
25
- }
26
- const node = MindElement.getNode(element);
27
- const rectangle = getRectangleByNode(node);
28
- const activeStrokeWidth = 2;
29
- // add 0.1 to avoid white gap
30
- const offset = (getStrokeWidthByElement(this.board, element) + activeStrokeWidth) / 2 - 0.1;
31
- const activeRectangle = RectangleClient.getOutlineRectangle(rectangle, -offset);
32
- const strokeG = drawRoundRectangle(PlaitBoard.getRoughSVG(this.board), activeRectangle.x, activeRectangle.y, activeRectangle.x + activeRectangle.width, activeRectangle.y + activeRectangle.height, { stroke: PRIMARY_COLOR, strokeWidth: activeStrokeWidth, fill: '' }, true, DefaultNodeStyle.shape.rectangleRadius + offset);
33
- this.g.appendChild(strokeG);
34
- return activeG;
35
- }
36
- updateAbstractOutline(element, activeHandlePosition, resizingLocation) {
37
- if (this.abstractOutlineG) {
38
- this.abstractOutlineG.remove();
39
- }
40
- this.abstractOutlineG = drawAbstractIncludedOutline(this.board, PlaitBoard.getRoughSVG(this.board), element, activeHandlePosition, resizingLocation);
41
- this.g.append(this.abstractOutlineG);
42
- }
43
- }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1hY3RpdmUuZHJhd2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvZHJhd2VyL25vZGUtYWN0aXZlLmRyYXdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkYsT0FBTyxFQUFFLFdBQVcsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU9wRSxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsVUFBc0I7SUFHeEQsT0FBTyxDQUFDLE9BQThCLEVBQUUsSUFBZ0I7UUFDcEQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUM7U0FDZjthQUFNO1lBQ0gsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQThCLEVBQUUsSUFBZ0I7UUFDckQsTUFBTSxPQUFPLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7UUFFakIsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzdHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDekM7UUFDRCxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLDZCQUE2QjtRQUM3QixNQUFNLE1BQU0sR0FBRyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzVGLE1BQU0sZUFBZSxHQUFHLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRixNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FDOUIsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQ2xDLGVBQWUsQ0FBQyxDQUFDLEVBQ2pCLGVBQWUsQ0FBQyxDQUFDLEVBQ2pCLGVBQWUsQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFDLEtBQUssRUFDekMsZUFBZSxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsTUFBTSxFQUMxQyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFDbkUsSUFBSSxFQUNKLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUNsRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELHFCQUFxQixDQUFDLE9BQW9CLEVBQUUsb0JBQTZDLEVBQUUsZ0JBQXlCO1FBQ2hILElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRywyQkFBMkIsQ0FDL0MsSUFBSSxDQUFDLEtBQUssRUFDVixVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFDbEMsT0FBTyxFQUNQLG9CQUFvQixFQUNwQixnQkFBZ0IsQ0FDbkIsQ0FBQztRQUNGLElBQUksQ0FBQyxDQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFJlY3RhbmdsZUNsaWVudCwgY3JlYXRlRywgZHJhd1JvdW5kUmVjdGFuZ2xlIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIEJhc2VEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBCYXNlRHJhd2VyIH0gZnJvbSAnLi4vYmFzZS9iYXNlLmRyYXdlcic7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9ub2RlJztcbmltcG9ydCB7IFBSSU1BUllfQ09MT1IgfSBmcm9tICcuLi9jb25zdGFudHMvZGVmYXVsdCc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBkcmF3QWJzdHJhY3RJbmNsdWRlZE91dGxpbmUgfSBmcm9tICcuLi91dGlscy9kcmF3L2Fic3RyYWN0LW91dGxpbmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1hYnN0cmFjdC1yZXNpemUuYm9hcmQnO1xuaW1wb3J0IHsgRGVmYXVsdE5vZGVTdHlsZSB9IGZyb20gJy4uL2NvbnN0YW50cy9ub2RlLXN0eWxlJztcbmltcG9ydCB7IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvbm9kZS1zdHlsZS9zaGFwZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZlRGF0YSB7XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgaXNFZGl0aW5nOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgTm9kZUFjdGl2ZURyYXdlciBleHRlbmRzIEJhc2VEcmF3ZXI8QWN0aXZlRGF0YT4ge1xuICAgIGFic3RyYWN0T3V0bGluZUc/OiBTVkdHRWxlbWVudDtcblxuICAgIGNhbkRyYXcoZWxlbWVudDogTWluZEVsZW1lbnQ8QmFzZURhdGE+LCBkYXRhOiBBY3RpdmVEYXRhKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChkYXRhLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJhc2VEcmF3KGVsZW1lbnQ6IE1pbmRFbGVtZW50PEJhc2VEYXRhPiwgZGF0YTogQWN0aXZlRGF0YSk6IFNWR0dFbGVtZW50IHtcbiAgICAgICAgY29uc3QgYWN0aXZlRyA9IGNyZWF0ZUcoKTtcbiAgICAgICAgdGhpcy5nID0gYWN0aXZlRztcblxuICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuYWJzdHJhY3RPdXRsaW5lRyA9IGRyYXdBYnN0cmFjdEluY2x1ZGVkT3V0bGluZSh0aGlzLmJvYXJkLCBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpLCBlbGVtZW50KTtcbiAgICAgICAgICAgIGFjdGl2ZUcuYXBwZW5kKHRoaXMuYWJzdHJhY3RPdXRsaW5lRyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgbm9kZSA9IE1pbmRFbGVtZW50LmdldE5vZGUoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5Tm9kZShub2RlKTtcbiAgICAgICAgY29uc3QgYWN0aXZlU3Ryb2tlV2lkdGggPSAyO1xuICAgICAgICAvLyBhZGQgMC4xIHRvIGF2b2lkIHdoaXRlIGdhcFxuICAgICAgICBjb25zdCBvZmZzZXQgPSAoZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQodGhpcy5ib2FyZCwgZWxlbWVudCkgKyBhY3RpdmVTdHJva2VXaWR0aCkgLyAyIC0gMC4xO1xuICAgICAgICBjb25zdCBhY3RpdmVSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0T3V0bGluZVJlY3RhbmdsZShyZWN0YW5nbGUsIC1vZmZzZXQpO1xuICAgICAgICBjb25zdCBzdHJva2VHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyh0aGlzLmJvYXJkKSxcbiAgICAgICAgICAgIGFjdGl2ZVJlY3RhbmdsZS54LFxuICAgICAgICAgICAgYWN0aXZlUmVjdGFuZ2xlLnksXG4gICAgICAgICAgICBhY3RpdmVSZWN0YW5nbGUueCArIGFjdGl2ZVJlY3RhbmdsZS53aWR0aCxcbiAgICAgICAgICAgIGFjdGl2ZVJlY3RhbmdsZS55ICsgYWN0aXZlUmVjdGFuZ2xlLmhlaWdodCxcbiAgICAgICAgICAgIHsgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLCBzdHJva2VXaWR0aDogYWN0aXZlU3Ryb2tlV2lkdGgsIGZpbGw6ICcnIH0sXG4gICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgRGVmYXVsdE5vZGVTdHlsZS5zaGFwZS5yZWN0YW5nbGVSYWRpdXMgKyBvZmZzZXRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5nLmFwcGVuZENoaWxkKHN0cm9rZUcpO1xuICAgICAgICByZXR1cm4gYWN0aXZlRztcbiAgICB9XG5cbiAgICB1cGRhdGVBYnN0cmFjdE91dGxpbmUoZWxlbWVudDogTWluZEVsZW1lbnQsIGFjdGl2ZUhhbmRsZVBvc2l0aW9uPzogQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiwgcmVzaXppbmdMb2NhdGlvbj86IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5hYnN0cmFjdE91dGxpbmVHKSB7XG4gICAgICAgICAgICB0aGlzLmFic3RyYWN0T3V0bGluZUcucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hYnN0cmFjdE91dGxpbmVHID0gZHJhd0Fic3RyYWN0SW5jbHVkZWRPdXRsaW5lKFxuICAgICAgICAgICAgdGhpcy5ib2FyZCxcbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcodGhpcy5ib2FyZCksXG4gICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgYWN0aXZlSGFuZGxlUG9zaXRpb24sXG4gICAgICAgICAgICByZXNpemluZ0xvY2F0aW9uXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZyEuYXBwZW5kKHRoaXMuYWJzdHJhY3RPdXRsaW5lRyk7XG4gICAgfVxufVxuIl19