@plait/mind 0.77.3 → 0.78.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/fesm2022/plait-mind.mjs +2 -2
  2. package/fesm2022/plait-mind.mjs.map +1 -1
  3. package/package.json +1 -3
  4. package/esm2022/constants/abstract-node.mjs +0 -5
  5. package/esm2022/constants/default.mjs +0 -17
  6. package/esm2022/constants/index.mjs +0 -5
  7. package/esm2022/constants/node-style.mjs +0 -19
  8. package/esm2022/constants/node-topic-style.mjs +0 -7
  9. package/esm2022/constants/theme.mjs +0 -73
  10. package/esm2022/emoji/emoji-base.component.mjs +0 -6
  11. package/esm2022/emoji/index.mjs +0 -3
  12. package/esm2022/emoji/with-emoji.mjs +0 -8
  13. package/esm2022/generators/node-active.generator.mjs +0 -46
  14. package/esm2022/generators/node-collapse.generator.mjs +0 -108
  15. package/esm2022/generators/node-emojis.generator.mjs +0 -63
  16. package/esm2022/generators/node-plus.generator.mjs +0 -100
  17. package/esm2022/generators/node-shape.generator.mjs +0 -22
  18. package/esm2022/interfaces/element-data.mjs +0 -2
  19. package/esm2022/interfaces/element.mjs +0 -103
  20. package/esm2022/interfaces/index.mjs +0 -8
  21. package/esm2022/interfaces/layout.mjs +0 -19
  22. package/esm2022/interfaces/node.mjs +0 -14
  23. package/esm2022/interfaces/options.mjs +0 -2
  24. package/esm2022/interfaces/pointer.mjs +0 -5
  25. package/esm2022/interfaces/theme-color.mjs +0 -57
  26. package/esm2022/interfaces/types.mjs +0 -13
  27. package/esm2022/mind-node.component.mjs +0 -193
  28. package/esm2022/mind.component.mjs +0 -34
  29. package/esm2022/plait-mind.mjs +0 -5
  30. package/esm2022/plugins/with-abstract-resize.board.mjs +0 -12
  31. package/esm2022/plugins/with-abstract-resize.mjs +0 -112
  32. package/esm2022/plugins/with-mind-create.mjs +0 -104
  33. package/esm2022/plugins/with-mind-extend.mjs +0 -7
  34. package/esm2022/plugins/with-mind-fragment.mjs +0 -101
  35. package/esm2022/plugins/with-mind-hotkey.mjs +0 -62
  36. package/esm2022/plugins/with-mind.board.mjs +0 -2
  37. package/esm2022/plugins/with-mind.mjs +0 -148
  38. package/esm2022/plugins/with-node-dnd.mjs +0 -176
  39. package/esm2022/plugins/with-node-hover-hit-test.mjs +0 -23
  40. package/esm2022/plugins/with-node-image-resize.mjs +0 -46
  41. package/esm2022/plugins/with-node-image.mjs +0 -113
  42. package/esm2022/plugins/with-node-resize.mjs +0 -69
  43. package/esm2022/public-api.mjs +0 -16
  44. package/esm2022/queries/get-available-sublayouts-by-element.mjs +0 -23
  45. package/esm2022/queries/get-branch-layouts.mjs +0 -18
  46. package/esm2022/queries/get-correct-layout-by-element.mjs +0 -48
  47. package/esm2022/queries/get-layout-by-element.mjs +0 -18
  48. package/esm2022/queries/index.mjs +0 -11
  49. package/esm2022/transforms/abstract-node.mjs +0 -73
  50. package/esm2022/transforms/emoji.mjs +0 -41
  51. package/esm2022/transforms/image.mjs +0 -31
  52. package/esm2022/transforms/index.mjs +0 -30
  53. package/esm2022/transforms/layout.mjs +0 -19
  54. package/esm2022/transforms/node.mjs +0 -99
  55. package/esm2022/transforms/property.mjs +0 -34
  56. package/esm2022/utils/abstract/common.mjs +0 -170
  57. package/esm2022/utils/abstract/resize.mjs +0 -194
  58. package/esm2022/utils/clipboard.mjs +0 -108
  59. package/esm2022/utils/common.mjs +0 -26
  60. package/esm2022/utils/dnd/common.mjs +0 -59
  61. package/esm2022/utils/dnd/detector.mjs +0 -176
  62. package/esm2022/utils/draw/abstract-outline.mjs +0 -118
  63. package/esm2022/utils/draw/node-dnd.mjs +0 -164
  64. package/esm2022/utils/draw/node-link/abstract-link.mjs +0 -60
  65. package/esm2022/utils/draw/node-link/draw-link.mjs +0 -9
  66. package/esm2022/utils/draw/node-link/indented-link.mjs +0 -46
  67. package/esm2022/utils/draw/node-link/logic-link.mjs +0 -76
  68. package/esm2022/utils/draw/node-shape.mjs +0 -26
  69. package/esm2022/utils/index.mjs +0 -17
  70. package/esm2022/utils/layout.mjs +0 -105
  71. package/esm2022/utils/mind.mjs +0 -98
  72. package/esm2022/utils/node/adjust-node.mjs +0 -36
  73. package/esm2022/utils/node/common.mjs +0 -15
  74. package/esm2022/utils/node/create-node.mjs +0 -46
  75. package/esm2022/utils/node/dynamic-width.mjs +0 -14
  76. package/esm2022/utils/node/image.mjs +0 -15
  77. package/esm2022/utils/node/index.mjs +0 -6
  78. package/esm2022/utils/node/right-node-count.mjs +0 -45
  79. package/esm2022/utils/node-hover/extend.mjs +0 -50
  80. package/esm2022/utils/node-style/branch.mjs +0 -63
  81. package/esm2022/utils/node-style/common.mjs +0 -4
  82. package/esm2022/utils/node-style/index.mjs +0 -4
  83. package/esm2022/utils/node-style/shape.mjs +0 -37
  84. package/esm2022/utils/normalize.mjs +0 -40
  85. package/esm2022/utils/path.mjs +0 -12
  86. package/esm2022/utils/point-placement.mjs +0 -119
  87. package/esm2022/utils/position/emoji.mjs +0 -31
  88. package/esm2022/utils/position/image.mjs +0 -36
  89. package/esm2022/utils/position/index.mjs +0 -5
  90. package/esm2022/utils/position/node.mjs +0 -36
  91. package/esm2022/utils/position/topic.mjs +0 -16
  92. package/esm2022/utils/space/emoji.mjs +0 -20
  93. package/esm2022/utils/space/index.mjs +0 -4
  94. package/esm2022/utils/space/layout-options.mjs +0 -69
  95. package/esm2022/utils/space/node-space.mjs +0 -134
  96. package/esm2022/utils/weak-maps.mjs +0 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plait/mind",
3
- "version": "0.77.3",
3
+ "version": "0.78.0-next.0",
4
4
  "peerDependencies": {},
5
5
  "dependencies": {
6
6
  "tslib": "^2.3.0"
@@ -22,8 +22,6 @@
22
22
  },
23
23
  ".": {
24
24
  "types": "./index.d.ts",
25
- "esm2022": "./esm2022/plait-mind.mjs",
26
- "esm": "./esm2022/plait-mind.mjs",
27
25
  "default": "./fesm2022/plait-mind.mjs"
28
26
  }
29
27
  },
@@ -1,5 +0,0 @@
1
- export const ABSTRACT_HANDLE_COLOR = '#6698FF80'; //primary color 50% opacity
2
- export const ABSTRACT_INCLUDED_OUTLINE_OFFSET = 3.5;
3
- export const ABSTRACT_HANDLE_LENGTH = 10;
4
- export const ABSTRACT_HANDLE_MASK_WIDTH = 8;
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL2NvbnN0YW50cy9hYnN0cmFjdC1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLFdBQVcsQ0FBQyxDQUFDLDJCQUEyQjtBQUM3RSxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxHQUFHLENBQUM7QUFDcEQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBQlNUUkFDVF9IQU5ETEVfQ09MT1IgPSAnIzY2OThGRjgwJzsgLy9wcmltYXJ5IGNvbG9yIDUwJSBvcGFjaXR5XG5leHBvcnQgY29uc3QgQUJTVFJBQ1RfSU5DTFVERURfT1VUTElORV9PRkZTRVQgPSAzLjU7XG5leHBvcnQgY29uc3QgQUJTVFJBQ1RfSEFORExFX0xFTkdUSCA9IDEwO1xuXG5leHBvcnQgY29uc3QgQUJTVFJBQ1RfSEFORExFX01BU0tfV0lEVEggPSA4O1xuIl19
@@ -1,17 +0,0 @@
1
- export const WithMindPluginKey = 'plait-mind-plugin-key';
2
- export const BASE = 4;
3
- export const PRIMARY_COLOR = '#6698FF';
4
- export const GRAY_COLOR = '#AAAAAA';
5
- export const STROKE_WIDTH = 3;
6
- export const EXTEND_OFFSET = 8;
7
- export const EXTEND_DIAMETER = 16;
8
- export const QUICK_INSERT_CIRCLE_OFFSET = 9;
9
- export const QUICK_INSERT_CIRCLE_COLOR = '#6698FF';
10
- export const QUICK_INSERT_INNER_CROSS_COLOR = 'white';
11
- export const DEFAULT_MIND_IMAGE_WIDTH = 240;
12
- export var MindI18nKey;
13
- (function (MindI18nKey) {
14
- MindI18nKey["mindCentralText"] = "mind-center-text";
15
- MindI18nKey["abstractNodeText"] = "abstract-node-text";
16
- })(MindI18nKey || (MindI18nKey = {}));
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL2NvbnN0YW50cy9kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDO0FBRXpELE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUM7QUFDdEIsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7QUFFOUIsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQztBQUMvQixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsQ0FBQztBQUM1QyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxTQUFTLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsT0FBTyxDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLEdBQUcsQ0FBQztBQUU1QyxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ25CLG1EQUFvQyxDQUFBO0lBQ3BDLHNEQUF1QyxDQUFBO0FBQzNDLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBXaXRoTWluZFBsdWdpbktleSA9ICdwbGFpdC1taW5kLXBsdWdpbi1rZXknO1xuXG5leHBvcnQgY29uc3QgQkFTRSA9IDQ7XG5leHBvcnQgY29uc3QgUFJJTUFSWV9DT0xPUiA9ICcjNjY5OEZGJztcbmV4cG9ydCBjb25zdCBHUkFZX0NPTE9SID0gJyNBQUFBQUEnO1xuZXhwb3J0IGNvbnN0IFNUUk9LRV9XSURUSCA9IDM7XG5cbmV4cG9ydCBjb25zdCBFWFRFTkRfT0ZGU0VUID0gODtcbmV4cG9ydCBjb25zdCBFWFRFTkRfRElBTUVURVIgPSAxNjtcblxuZXhwb3J0IGNvbnN0IFFVSUNLX0lOU0VSVF9DSVJDTEVfT0ZGU0VUID0gOTtcbmV4cG9ydCBjb25zdCBRVUlDS19JTlNFUlRfQ0lSQ0xFX0NPTE9SID0gJyM2Njk4RkYnO1xuZXhwb3J0IGNvbnN0IFFVSUNLX0lOU0VSVF9JTk5FUl9DUk9TU19DT0xPUiA9ICd3aGl0ZSc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX01JTkRfSU1BR0VfV0lEVEggPSAyNDA7XG5cbmV4cG9ydCBlbnVtIE1pbmRJMThuS2V5IHtcbiAgICBtaW5kQ2VudHJhbFRleHQgPSAnbWluZC1jZW50ZXItdGV4dCcsXG4gICAgYWJzdHJhY3ROb2RlVGV4dCA9ICdhYnN0cmFjdC1ub2RlLXRleHQnXG59Il19
@@ -1,5 +0,0 @@
1
- export * from './default';
2
- export * from './node-style';
3
- export * from './node-topic-style';
4
- export * from './abstract-node';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9jb25zdGFudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kZWZhdWx0JztcbmV4cG9ydCAqIGZyb20gJy4vbm9kZS1zdHlsZSc7XG5leHBvcnQgKiBmcm9tICcuL25vZGUtdG9waWMtc3R5bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9hYnN0cmFjdC1ub2RlJztcbiJdfQ==
@@ -1,19 +0,0 @@
1
- import { GRAY_COLOR } from './default';
2
- export const DefaultAbstractNodeStyle = {
3
- branch: { color: GRAY_COLOR, width: 2 },
4
- shape: {
5
- strokeColor: GRAY_COLOR,
6
- strokeWidth: 2
7
- }
8
- };
9
- export const DefaultNodeStyle = {
10
- branch: {
11
- width: 3
12
- },
13
- shape: {
14
- rectangleRadius: 4,
15
- strokeWidth: 3,
16
- fill: 'none'
17
- }
18
- };
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1zdHlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL2NvbnN0YW50cy9ub2RlLXN0eWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFDcEMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0lBQ3ZDLEtBQUssRUFBRTtRQUNILFdBQVcsRUFBRSxVQUFVO1FBQ3ZCLFdBQVcsRUFBRSxDQUFDO0tBQ2pCO0NBQ0osQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzVCLE1BQU0sRUFBRTtRQUNKLEtBQUssRUFBRSxDQUFDO0tBQ1g7SUFDRCxLQUFLLEVBQUU7UUFDSCxlQUFlLEVBQUUsQ0FBQztRQUNsQixXQUFXLEVBQUUsQ0FBQztRQUNkLElBQUksRUFBRSxNQUFNO0tBQ2Y7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR1JBWV9DT0xPUiB9IGZyb20gJy4vZGVmYXVsdCc7XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0QWJzdHJhY3ROb2RlU3R5bGUgPSB7XG4gICAgYnJhbmNoOiB7IGNvbG9yOiBHUkFZX0NPTE9SLCB3aWR0aDogMiB9LFxuICAgIHNoYXBlOiB7XG4gICAgICAgIHN0cm9rZUNvbG9yOiBHUkFZX0NPTE9SLFxuICAgICAgICBzdHJva2VXaWR0aDogMlxuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0Tm9kZVN0eWxlID0ge1xuICAgIGJyYW5jaDoge1xuICAgICAgICB3aWR0aDogM1xuICAgIH0sXG4gICAgc2hhcGU6IHtcbiAgICAgICAgcmVjdGFuZ2xlUmFkaXVzOiA0LFxuICAgICAgICBzdHJva2VXaWR0aDogMyxcbiAgICAgICAgZmlsbDogJ25vbmUnXG4gICAgfVxufTtcbiJdfQ==
@@ -1,7 +0,0 @@
1
- export const TOPIC_FONT_SIZE = 14;
2
- export const ROOT_TOPIC_FONT_SIZE = 18;
3
- export const TOPIC_DEFAULT_MAX_WORD_COUNT = 34;
4
- export const NodeTopicThreshold = {
5
- defaultTextMaxWidth: 34 * 14
6
- };
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS10b3BpYy1zdHlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL2NvbnN0YW50cy9ub2RlLXRvcGljLXN0eWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFFbEMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBRXZDLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLEVBQUUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUM5QixtQkFBbUIsRUFBRSxFQUFFLEdBQUcsRUFBRTtDQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFRPUElDX0ZPTlRfU0laRSA9IDE0O1xuXG5leHBvcnQgY29uc3QgUk9PVF9UT1BJQ19GT05UX1NJWkUgPSAxODtcblxuZXhwb3J0IGNvbnN0IFRPUElDX0RFRkFVTFRfTUFYX1dPUkRfQ09VTlQgPSAzNDtcblxuZXhwb3J0IGNvbnN0IE5vZGVUb3BpY1RocmVzaG9sZCA9IHtcbiAgICBkZWZhdWx0VGV4dE1heFdpZHRoOiAzNCAqIDE0XG59O1xuIl19
@@ -1,73 +0,0 @@
1
- export const DEFAULT_BRANCH_COLORS = [
2
- '#A287E0',
3
- '#6E80DB',
4
- '#6DC4C4',
5
- '#E0B75E',
6
- '#B1C675',
7
- '#77C386',
8
- '#C18976',
9
- '#E48484',
10
- '#E582D4',
11
- '#6AB1E4'
12
- ];
13
- export const COLORFUL_BRANCH_COLORS = [
14
- '#F94239',
15
- '#FF8612',
16
- '#F3D222',
17
- '#B3D431',
18
- '#00BC7B',
19
- '#06ADBF',
20
- '#476BFF',
21
- '#4E49BE',
22
- '#8957E5',
23
- '#FE5DA1'
24
- ];
25
- export const SOFT_BRANCH_COLORS = [
26
- '#6D89C1',
27
- '#F2BDC7',
28
- '#B796D9',
29
- '#5BA683',
30
- '#B3D431 ',
31
- '#F2DC6C',
32
- '#F7C98D',
33
- '#60B4D1',
34
- '#838F9E',
35
- '#C1A381'
36
- ];
37
- export const RETRO_BRANCH_COLORS = [
38
- '#459476',
39
- '#9A894F',
40
- '#D48444',
41
- '#E9C358 ',
42
- '#4B9D9D',
43
- '#C14C41',
44
- '#827086 ',
45
- '#60718D',
46
- '#D38183',
47
- '#9DC19D'
48
- ];
49
- export const DARK_BRANCH_COLORS = [
50
- '#3DD1AE',
51
- '#F6C659',
52
- '#A9E072',
53
- '#FF877B ',
54
- '#F693E7',
55
- '#5DCFFF',
56
- '#868AF6',
57
- '#4C6DC7',
58
- '#D97C26',
59
- '#268FAC'
60
- ];
61
- export const STARRY_BRANCH_COLORS = [
62
- '#E46C57',
63
- '#579360',
64
- '#B98339',
65
- '#3A62D1 ',
66
- '#B883B7',
67
- '#42ABE5',
68
- '#2B9D8F',
69
- '#A4705E',
70
- '#265833',
71
- '#787865'
72
- ];
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9jb25zdGFudHMvdGhlbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDakMsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztDQUNaLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRztJQUNsQyxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0NBQ1osQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQzlCLFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxVQUFVO0lBQ1YsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7Q0FDWixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDL0IsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsVUFBVTtJQUNWLFNBQVM7SUFDVCxTQUFTO0lBQ1QsVUFBVTtJQUNWLFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztDQUNaLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUM5QixTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxVQUFVO0lBQ1YsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0NBQ1osQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2hDLFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFVBQVU7SUFDVixTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7Q0FDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IERFRkFVTFRfQlJBTkNIX0NPTE9SUyA9IFtcbiAgICAnI0EyODdFMCcsXG4gICAgJyM2RTgwREInLFxuICAgICcjNkRDNEM0JyxcbiAgICAnI0UwQjc1RScsXG4gICAgJyNCMUM2NzUnLFxuICAgICcjNzdDMzg2JyxcbiAgICAnI0MxODk3NicsXG4gICAgJyNFNDg0ODQnLFxuICAgICcjRTU4MkQ0JyxcbiAgICAnIzZBQjFFNCdcbl07XG5cbmV4cG9ydCBjb25zdCBDT0xPUkZVTF9CUkFOQ0hfQ09MT1JTID0gW1xuICAgICcjRjk0MjM5JyxcbiAgICAnI0ZGODYxMicsXG4gICAgJyNGM0QyMjInLFxuICAgICcjQjNENDMxJyxcbiAgICAnIzAwQkM3QicsXG4gICAgJyMwNkFEQkYnLFxuICAgICcjNDc2QkZGJyxcbiAgICAnIzRFNDlCRScsXG4gICAgJyM4OTU3RTUnLFxuICAgICcjRkU1REExJ1xuXTtcblxuZXhwb3J0IGNvbnN0IFNPRlRfQlJBTkNIX0NPTE9SUyA9IFtcbiAgICAnIzZEODlDMScsXG4gICAgJyNGMkJEQzcnLFxuICAgICcjQjc5NkQ5JyxcbiAgICAnIzVCQTY4MycsXG4gICAgJyNCM0Q0MzEgJyxcbiAgICAnI0YyREM2QycsXG4gICAgJyNGN0M5OEQnLFxuICAgICcjNjBCNEQxJyxcbiAgICAnIzgzOEY5RScsXG4gICAgJyNDMUEzODEnXG5dO1xuXG5leHBvcnQgY29uc3QgUkVUUk9fQlJBTkNIX0NPTE9SUyA9IFtcbiAgICAnIzQ1OTQ3NicsXG4gICAgJyM5QTg5NEYnLFxuICAgICcjRDQ4NDQ0JyxcbiAgICAnI0U5QzM1OCAnLFxuICAgICcjNEI5RDlEJyxcbiAgICAnI0MxNEM0MScsXG4gICAgJyM4MjcwODYgJyxcbiAgICAnIzYwNzE4RCcsXG4gICAgJyNEMzgxODMnLFxuICAgICcjOURDMTlEJ1xuXTtcblxuZXhwb3J0IGNvbnN0IERBUktfQlJBTkNIX0NPTE9SUyA9IFtcbiAgICAnIzNERDFBRScsXG4gICAgJyNGNkM2NTknLFxuICAgICcjQTlFMDcyJyxcbiAgICAnI0ZGODc3QiAnLFxuICAgICcjRjY5M0U3JyxcbiAgICAnIzVEQ0ZGRicsXG4gICAgJyM4NjhBRjYnLFxuICAgICcjNEM2REM3JyxcbiAgICAnI0Q5N0MyNicsXG4gICAgJyMyNjhGQUMnXG5dO1xuXG5leHBvcnQgY29uc3QgU1RBUlJZX0JSQU5DSF9DT0xPUlMgPSBbXG4gICAgJyNFNDZDNTcnLFxuICAgICcjNTc5MzYwJyxcbiAgICAnI0I5ODMzOScsXG4gICAgJyMzQTYyRDEgJyxcbiAgICAnI0I4ODNCNycsXG4gICAgJyM0MkFCRTUnLFxuICAgICcjMkI5RDhGJyxcbiAgICAnI0E0NzA1RScsXG4gICAgJyMyNjU4MzMnLFxuICAgICcjNzg3ODY1J1xuXTtcbiJdfQ==
@@ -1,6 +0,0 @@
1
- export class MindEmojiBaseComponent {
2
- constructor() {
3
- this.fontSize = 14;
4
- }
5
- }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamktYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9lbW9qaS9lbW9qaS1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQWdCLHNCQUFzQjtJQUE1QztRQUNJLGFBQVEsR0FBVyxFQUFFLENBQUM7SUFTMUIsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW1vamlEYXRhLCBFbW9qaUl0ZW0gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQtZGF0YSc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1pbmRFbW9qaUJhc2VDb21wb25lbnQge1xuICAgIGZvbnRTaXplOiBudW1iZXIgPSAxNDtcblxuICAgIGVtb2ppSXRlbSE6IEVtb2ppSXRlbTtcblxuICAgIGJvYXJkITogUGxhaXRCb2FyZDtcblxuICAgIGVsZW1lbnQhOiBNaW5kRWxlbWVudDxFbW9qaURhdGE+O1xuXG4gICAgYWJzdHJhY3QgbmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudDtcbn1cbiJdfQ==
@@ -1,3 +0,0 @@
1
- export * from './emoji-base.component';
2
- export * from './with-emoji';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9lbW9qaS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9lbW9qaS1iYXNlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3dpdGgtZW1vamknO1xuIl19
@@ -1,8 +0,0 @@
1
- export const withEmoji = (board) => {
2
- const newBoard = board;
3
- newBoard.renderEmoji = (container, props) => {
4
- throw new Error('No implementation for renderEmoji method.');
5
- };
6
- return newBoard;
7
- };
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1lbW9qaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL2Vtb2ppL3dpdGgtZW1vamkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQW9DLEtBQVEsRUFBRSxFQUFFO0lBQ3JFLE1BQU0sUUFBUSxHQUFHLEtBQWdDLENBQUM7SUFFbEQsUUFBUSxDQUFDLFdBQVcsR0FBRyxDQUFDLFNBQXFDLEVBQUUsS0FBaUIsRUFBRSxFQUFFO1FBQ2hGLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztJQUNqRSxDQUFDLENBQUM7SUFDRixPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUmVuZGVyQ29tcG9uZW50UmVmIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBFbW9qaURhdGEsIEVtb2ppSXRlbSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudC1kYXRhJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdE1pbmRFbW9qaUJvYXJkIHtcbiAgICByZW5kZXJFbW9qaTogKGNvbnRhaW5lcjogRWxlbWVudCB8IERvY3VtZW50RnJhZ21lbnQsIHByb3BzOiBFbW9qaVByb3BzKSA9PiBFbW9qaUNvbXBvbmVudFJlZjtcbn1cblxuZXhwb3J0IGNvbnN0IHdpdGhFbW9qaSA9IDxUIGV4dGVuZHMgUGxhaXRCb2FyZCA9IFBsYWl0Qm9hcmQ+KGJvYXJkOiBUKSA9PiB7XG4gICAgY29uc3QgbmV3Qm9hcmQgPSBib2FyZCBhcyBUICYgUGxhaXRNaW5kRW1vamlCb2FyZDtcblxuICAgIG5ld0JvYXJkLnJlbmRlckVtb2ppID0gKGNvbnRhaW5lcjogRWxlbWVudCB8IERvY3VtZW50RnJhZ21lbnQsIHByb3BzOiBFbW9qaVByb3BzKSA9PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gaW1wbGVtZW50YXRpb24gZm9yIHJlbmRlckVtb2ppIG1ldGhvZC4nKTtcbiAgICB9O1xuICAgIHJldHVybiBuZXdCb2FyZDtcbn07XG5cbmV4cG9ydCB0eXBlIEVtb2ppQ29tcG9uZW50UmVmID0gUmVuZGVyQ29tcG9uZW50UmVmPEVtb2ppUHJvcHM+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEVtb2ppUHJvcHMge1xuICAgIGJvYXJkOiBQbGFpdEJvYXJkO1xuICAgIGVtb2ppSXRlbTogRW1vamlJdGVtO1xuICAgIGVsZW1lbnQ6IE1pbmRFbGVtZW50PEVtb2ppRGF0YT47XG4gICAgZm9udFNpemU6IG51bWJlcjtcbn1cbiJdfQ==
@@ -1,46 +0,0 @@
1
- import { ACTIVE_STROKE_WIDTH, PlaitBoard, RectangleClient, SELECTION_RECTANGLE_CLASS_NAME, createG, drawRoundRectangle, toActiveRectangleFromViewBoxRectangle } from '@plait/core';
2
- import { MindElement } from '../interfaces';
3
- import { getRectangleByNode } from '../utils/position/node';
4
- import { PRIMARY_COLOR } from '../constants/default';
5
- import { AbstractNode } from '@plait/layouts';
6
- import { drawAbstractIncludedOutline } from '../utils/draw/abstract-outline';
7
- import { DefaultNodeStyle } from '../constants/node-style';
8
- import { getStrokeWidthByElement } from '../utils/node-style/shape';
9
- import { Generator } from '@plait/common';
10
- export class NodeActiveGenerator extends Generator {
11
- static { this.key = 'mind-node-active'; }
12
- canDraw(element, data) {
13
- if (data.selected) {
14
- return true;
15
- }
16
- else {
17
- return false;
18
- }
19
- }
20
- draw(element, data) {
21
- const activeG = createG();
22
- const node = MindElement.getNode(element);
23
- const rectangle = getRectangleByNode(node);
24
- const activeRectangle1 = toActiveRectangleFromViewBoxRectangle(this.board, rectangle);
25
- const strokeWidth = getStrokeWidthByElement(this.board, element);
26
- const activeStrokeWidth = ACTIVE_STROKE_WIDTH;
27
- const activeRectangleWithInflated = RectangleClient.inflate(activeRectangle1, activeStrokeWidth);
28
- const strokeG = drawRoundRectangle(PlaitBoard.getRoughSVG(this.board), activeRectangleWithInflated.x, activeRectangleWithInflated.y, activeRectangleWithInflated.x + activeRectangleWithInflated.width, activeRectangleWithInflated.y + activeRectangleWithInflated.height, { stroke: PRIMARY_COLOR, strokeWidth: activeStrokeWidth, fill: '' }, true, DefaultNodeStyle.shape.rectangleRadius + (activeStrokeWidth + strokeWidth) / 2);
29
- if (AbstractNode.isAbstract(element)) {
30
- this.abstractOutlineG = drawAbstractIncludedOutline(this.board, PlaitBoard.getRoughSVG(this.board), element);
31
- activeG.append(this.abstractOutlineG);
32
- strokeG.classList.add('abstract-element');
33
- }
34
- activeG.appendChild(strokeG);
35
- activeG.classList.add(SELECTION_RECTANGLE_CLASS_NAME);
36
- return activeG;
37
- }
38
- updateAbstractOutline(element, activeHandlePosition, resizingLocation) {
39
- const abstractOutlineG = drawAbstractIncludedOutline(this.board, PlaitBoard.getRoughSVG(this.board), element, activeHandlePosition, resizingLocation);
40
- if (this.abstractOutlineG) {
41
- this.abstractOutlineG.replaceWith(abstractOutlineG);
42
- this.abstractOutlineG = abstractOutlineG;
43
- }
44
- }
45
- }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1hY3RpdmUuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvZ2VuZXJhdG9ycy9ub2RlLWFjdGl2ZS5nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILG1CQUFtQixFQUNuQixVQUFVLEVBQ1YsZUFBZSxFQUNmLDhCQUE4QixFQUM5QixPQUFPLEVBQ1Asa0JBQWtCLEVBQ2xCLHFDQUFxQyxFQUN4QyxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsV0FBVyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU0xQyxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsU0FBa0M7YUFDaEUsUUFBRyxHQUFHLGtCQUFrQixDQUFDO0lBSWhDLE9BQU8sQ0FBQyxPQUE4QixFQUFFLElBQWdCO1FBQ3BELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBOEIsRUFBRSxJQUFnQjtRQUNqRCxNQUFNLE9BQU8sR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUMxQixNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLE1BQU0sZ0JBQWdCLEdBQUcscUNBQXFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN0RixNQUFNLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLE1BQU0saUJBQWlCLEdBQUcsbUJBQW1CLENBQUM7UUFDOUMsTUFBTSwyQkFBMkIsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDakcsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQzlCLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUNsQywyQkFBMkIsQ0FBQyxDQUFDLEVBQzdCLDJCQUEyQixDQUFDLENBQUMsRUFDN0IsMkJBQTJCLENBQUMsQ0FBQyxHQUFHLDJCQUEyQixDQUFDLEtBQUssRUFDakUsMkJBQTJCLENBQUMsQ0FBQyxHQUFHLDJCQUEyQixDQUFDLE1BQU0sRUFDbEUsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQ25FLElBQUksRUFDSixnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLENBQUMsaUJBQWlCLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUNqRixDQUFDO1FBQ0YsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLDJCQUEyQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDN0csT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUN0QyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDdEQsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELHFCQUFxQixDQUFDLE9BQW9CLEVBQUUsb0JBQTZDLEVBQUUsZ0JBQXlCO1FBQ2hILE1BQU0sZ0JBQWdCLEdBQUcsMkJBQTJCLENBQ2hELElBQUksQ0FBQyxLQUFLLEVBQ1YsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQ2xDLE9BQU8sRUFDUCxvQkFBb0IsRUFDcEIsZ0JBQWdCLENBQ25CLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDN0MsQ0FBQztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFDVElWRV9TVFJPS0VfV0lEVEgsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgU0VMRUNUSU9OX1JFQ1RBTkdMRV9DTEFTU19OQU1FLFxuICAgIGNyZWF0ZUcsXG4gICAgZHJhd1JvdW5kUmVjdGFuZ2xlLFxuICAgIHRvQWN0aXZlUmVjdGFuZ2xlRnJvbVZpZXdCb3hSZWN0YW5nbGVcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIEJhc2VEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9ub2RlJztcbmltcG9ydCB7IFBSSU1BUllfQ09MT1IgfSBmcm9tICcuLi9jb25zdGFudHMvZGVmYXVsdCc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBkcmF3QWJzdHJhY3RJbmNsdWRlZE91dGxpbmUgfSBmcm9tICcuLi91dGlscy9kcmF3L2Fic3RyYWN0LW91dGxpbmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1hYnN0cmFjdC1yZXNpemUuYm9hcmQnO1xuaW1wb3J0IHsgRGVmYXVsdE5vZGVTdHlsZSB9IGZyb20gJy4uL2NvbnN0YW50cy9ub2RlLXN0eWxlJztcbmltcG9ydCB7IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvbm9kZS1zdHlsZS9zaGFwZSc7XG5pbXBvcnQgeyBHZW5lcmF0b3IgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmVEYXRhIHtcbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIE5vZGVBY3RpdmVHZW5lcmF0b3IgZXh0ZW5kcyBHZW5lcmF0b3I8TWluZEVsZW1lbnQsIEFjdGl2ZURhdGE+IHtcbiAgICBzdGF0aWMga2V5ID0gJ21pbmQtbm9kZS1hY3RpdmUnO1xuXG4gICAgYWJzdHJhY3RPdXRsaW5lRz86IFNWR0dFbGVtZW50O1xuXG4gICAgY2FuRHJhdyhlbGVtZW50OiBNaW5kRWxlbWVudDxCYXNlRGF0YT4sIGRhdGE6IEFjdGl2ZURhdGEpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGRhdGEuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhdyhlbGVtZW50OiBNaW5kRWxlbWVudDxCYXNlRGF0YT4sIGRhdGE6IEFjdGl2ZURhdGEpOiBTVkdHRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBNaW5kRWxlbWVudC5nZXROb2RlKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeU5vZGUobm9kZSk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVJlY3RhbmdsZTEgPSB0b0FjdGl2ZVJlY3RhbmdsZUZyb21WaWV3Qm94UmVjdGFuZ2xlKHRoaXMuYm9hcmQsIHJlY3RhbmdsZSk7XG4gICAgICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQodGhpcy5ib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVN0cm9rZVdpZHRoID0gQUNUSVZFX1NUUk9LRV9XSURUSDtcbiAgICAgICAgY29uc3QgYWN0aXZlUmVjdGFuZ2xlV2l0aEluZmxhdGVkID0gUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUoYWN0aXZlUmVjdGFuZ2xlMSwgYWN0aXZlU3Ryb2tlV2lkdGgpO1xuICAgICAgICBjb25zdCBzdHJva2VHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyh0aGlzLmJvYXJkKSxcbiAgICAgICAgICAgIGFjdGl2ZVJlY3RhbmdsZVdpdGhJbmZsYXRlZC54LFxuICAgICAgICAgICAgYWN0aXZlUmVjdGFuZ2xlV2l0aEluZmxhdGVkLnksXG4gICAgICAgICAgICBhY3RpdmVSZWN0YW5nbGVXaXRoSW5mbGF0ZWQueCArIGFjdGl2ZVJlY3RhbmdsZVdpdGhJbmZsYXRlZC53aWR0aCxcbiAgICAgICAgICAgIGFjdGl2ZVJlY3RhbmdsZVdpdGhJbmZsYXRlZC55ICsgYWN0aXZlUmVjdGFuZ2xlV2l0aEluZmxhdGVkLmhlaWdodCxcbiAgICAgICAgICAgIHsgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLCBzdHJva2VXaWR0aDogYWN0aXZlU3Ryb2tlV2lkdGgsIGZpbGw6ICcnIH0sXG4gICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgRGVmYXVsdE5vZGVTdHlsZS5zaGFwZS5yZWN0YW5nbGVSYWRpdXMgKyAoYWN0aXZlU3Ryb2tlV2lkdGggKyBzdHJva2VXaWR0aCkgLyAyXG4gICAgICAgICk7XG4gICAgICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChlbGVtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5hYnN0cmFjdE91dGxpbmVHID0gZHJhd0Fic3RyYWN0SW5jbHVkZWRPdXRsaW5lKHRoaXMuYm9hcmQsIFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcodGhpcy5ib2FyZCksIGVsZW1lbnQpO1xuICAgICAgICAgICAgYWN0aXZlRy5hcHBlbmQodGhpcy5hYnN0cmFjdE91dGxpbmVHKTtcbiAgICAgICAgICAgIHN0cm9rZUcuY2xhc3NMaXN0LmFkZCgnYWJzdHJhY3QtZWxlbWVudCcpO1xuICAgICAgICB9XG4gICAgICAgIGFjdGl2ZUcuYXBwZW5kQ2hpbGQoc3Ryb2tlRyk7XG4gICAgICAgIGFjdGl2ZUcuY2xhc3NMaXN0LmFkZChTRUxFQ1RJT05fUkVDVEFOR0xFX0NMQVNTX05BTUUpO1xuICAgICAgICByZXR1cm4gYWN0aXZlRztcbiAgICB9XG5cbiAgICB1cGRhdGVBYnN0cmFjdE91dGxpbmUoZWxlbWVudDogTWluZEVsZW1lbnQsIGFjdGl2ZUhhbmRsZVBvc2l0aW9uPzogQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiwgcmVzaXppbmdMb2NhdGlvbj86IG51bWJlcikge1xuICAgICAgICBjb25zdCBhYnN0cmFjdE91dGxpbmVHID0gZHJhd0Fic3RyYWN0SW5jbHVkZWRPdXRsaW5lKFxuICAgICAgICAgICAgdGhpcy5ib2FyZCxcbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcodGhpcy5ib2FyZCksXG4gICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgYWN0aXZlSGFuZGxlUG9zaXRpb24sXG4gICAgICAgICAgICByZXNpemluZ0xvY2F0aW9uXG4gICAgICAgICk7XG4gICAgICAgIGlmICh0aGlzLmFic3RyYWN0T3V0bGluZUcpIHtcbiAgICAgICAgICAgIHRoaXMuYWJzdHJhY3RPdXRsaW5lRy5yZXBsYWNlV2l0aChhYnN0cmFjdE91dGxpbmVHKTtcbiAgICAgICAgICAgIHRoaXMuYWJzdHJhY3RPdXRsaW5lRyA9IGFic3RyYWN0T3V0bGluZUc7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -1,108 +0,0 @@
1
- import { PlaitBoard, PlaitPointerType, Transforms, createG, createText, drawLinearPath } from '@plait/core';
2
- import { MindElement, PlaitMind, MindElementShape, LayoutDirection } from '../interfaces';
3
- import { getRectangleByNode } from '../utils/position/node';
4
- import { getShapeByElement } from '../utils/node-style/shape';
5
- import { EXTEND_OFFSET, EXTEND_DIAMETER } from '../constants/default';
6
- import { isHorizontalLayout, isIndentedLayout, isTopLayout } from '@plait/layouts';
7
- import { MindQueries } from '../queries';
8
- import { fromEvent } from 'rxjs';
9
- import { getChildrenCount } from '../utils/mind';
10
- import { filter, take } from 'rxjs/operators';
11
- import { getBranchColorByMindElement, getBranchWidthByMindElement } from '../utils/node-style/branch';
12
- import { getLayoutDirection, getPointByPlacement, moveXOfPoint, moveYOfPoint, transformPlacement } from '../utils/point-placement';
13
- import { HorizontalPlacement, VerticalPlacement } from '../interfaces/types';
14
- import { Generator } from '@plait/common';
15
- export class CollapseGenerator extends Generator {
16
- canDraw(element) {
17
- if (element.children.length && !PlaitMind.isMind(element)) {
18
- return true;
19
- }
20
- return false;
21
- }
22
- draw(element) {
23
- const collapseG = createG();
24
- collapseG.classList.add('collapse');
25
- const node = MindElement.getNode(element);
26
- const stroke = getBranchColorByMindElement(this.board, element);
27
- const branchWidth = getBranchWidthByMindElement(this.board, element);
28
- const layout = MindQueries.getLayoutByElement(element);
29
- const isUnderlineShape = getShapeByElement(this.board, element) === MindElementShape.underline;
30
- const isHorizontal = isHorizontalLayout(layout);
31
- const nodeClient = getRectangleByNode(node);
32
- let linkDirection = getLayoutDirection(node, isHorizontal);
33
- if (isIndentedLayout(layout)) {
34
- linkDirection = isTopLayout(layout) ? LayoutDirection.top : LayoutDirection.bottom;
35
- }
36
- let placement = [HorizontalPlacement.right, VerticalPlacement.middle];
37
- transformPlacement(placement, linkDirection);
38
- // underline shape and horizontal
39
- if (isHorizontal && isUnderlineShape && !element.isRoot) {
40
- placement[1] = VerticalPlacement.bottom;
41
- }
42
- let startPoint = getPointByPlacement(nodeClient, placement);
43
- const endPoint = moveXOfPoint(startPoint, EXTEND_OFFSET, linkDirection);
44
- const circleCenter = moveXOfPoint(endPoint, EXTEND_DIAMETER / 2, linkDirection);
45
- const arrowPoints = this.getArrowPoints(circleCenter, linkDirection);
46
- const arrowLine = drawLinearPath(arrowPoints, {
47
- stroke,
48
- strokeWidth: 2
49
- });
50
- const extendLine = PlaitBoard.getRoughSVG(this.board).line(startPoint[0], startPoint[1], endPoint[0], endPoint[1], {
51
- strokeWidth: branchWidth,
52
- stroke
53
- });
54
- const badge = PlaitBoard.getRoughSVG(this.board).circle(circleCenter[0], circleCenter[1], EXTEND_DIAMETER, {
55
- fill: stroke,
56
- stroke,
57
- fillStyle: 'solid'
58
- });
59
- const hideCircleG = PlaitBoard.getRoughSVG(this.board).circle(circleCenter[0], circleCenter[1], EXTEND_DIAMETER, {
60
- fill: '#fff',
61
- stroke,
62
- strokeWidth: branchWidth > 3 ? 3 : branchWidth,
63
- fillStyle: 'solid'
64
- });
65
- if (element.isCollapsed) {
66
- let numberOffset = 0;
67
- if (getChildrenCount(element) >= 10)
68
- numberOffset = -2;
69
- if (getChildrenCount(element) === 1)
70
- numberOffset = 1;
71
- const badgeText = createText(circleCenter[0] - 4 + numberOffset, circleCenter[1] + 4, stroke, `${getChildrenCount(element)}`);
72
- badge.setAttribute('style', 'opacity: 0.15');
73
- badgeText.setAttribute('style', 'font-size: 12px');
74
- collapseG.appendChild(badge);
75
- collapseG.appendChild(badgeText);
76
- collapseG.appendChild(extendLine);
77
- }
78
- else {
79
- collapseG.appendChild(hideCircleG);
80
- collapseG.appendChild(arrowLine);
81
- }
82
- collapseG.appendChild(extendLine);
83
- return collapseG;
84
- }
85
- afterDraw(element) {
86
- if (!this.g) {
87
- throw new Error(`can not find quick insert g`);
88
- }
89
- fromEvent(this.g, 'pointerdown')
90
- .pipe(filter(() => !PlaitBoard.isPointer(this.board, PlaitPointerType.hand) || !!PlaitBoard.isReadonly(this.board)), take(1))
91
- .subscribe((event) => {
92
- event.preventDefault();
93
- const isCollapsed = !element.isCollapsed;
94
- const newElement = { isCollapsed };
95
- const path = PlaitBoard.findPath(this.board, element);
96
- Transforms.setNode(this.board, newElement, path);
97
- });
98
- }
99
- getArrowPoints(circleCenter, linkDirection) {
100
- let arrowTopPoint = moveXOfPoint(circleCenter, 2, linkDirection);
101
- arrowTopPoint = moveYOfPoint(arrowTopPoint, 4, linkDirection);
102
- const arrowMiddlePoint = moveXOfPoint(circleCenter, -2, linkDirection);
103
- let arrowBottomPoint = moveXOfPoint(circleCenter, 2, linkDirection);
104
- arrowBottomPoint = moveYOfPoint(arrowBottomPoint, -4, linkDirection);
105
- return [arrowTopPoint, arrowMiddlePoint, arrowBottomPoint];
106
- }
107
- }
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jb2xsYXBzZS5nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9nZW5lcmF0b3JzL25vZGUtY29sbGFwc2UuZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQVMsVUFBVSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxXQUFXLEVBQVksU0FBUyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RFLE9BQU8sRUFBa0Isa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkksT0FBTyxFQUFFLG1CQUFtQixFQUFrQixp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Q3pDLE1BQU0sVUFBVSxHQUF5QixFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQ3pELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN0RCxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxZQUFtQixFQUFFLGFBQThCO1FBQ3RFLElBQUksYUFBYSxHQUFHLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2pFLGFBQWEsR0FBRyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUM5RCxNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDdkUsSUFBSSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNwRSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFckUsT0FBTyxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0UG9pbnRlclR5cGUsIFBvaW50LCBUcmFuc2Zvcm1zLCBjcmVhdGVHLCBjcmVhdGVUZXh0LCBkcmF3TGluZWFyUGF0aCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmRFbGVtZW50LCBCYXNlRGF0YSwgUGxhaXRNaW5kLCBNaW5kRWxlbWVudFNoYXBlLCBMYXlvdXREaXJlY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5Tm9kZSB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL25vZGUnO1xuaW1wb3J0IHsgZ2V0U2hhcGVCeUVsZW1lbnQgfSBmcm9tICcuLi91dGlscy9ub2RlLXN0eWxlL3NoYXBlJztcbmltcG9ydCB7IEVYVEVORF9PRkZTRVQsIEVYVEVORF9ESUFNRVRFUiB9IGZyb20gJy4uL2NvbnN0YW50cy9kZWZhdWx0JztcbmltcG9ydCB7IE1pbmRMYXlvdXRUeXBlLCBpc0hvcml6b250YWxMYXlvdXQsIGlzSW5kZW50ZWRMYXlvdXQsIGlzVG9wTGF5b3V0IH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuLi9xdWVyaWVzJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZ2V0Q2hpbGRyZW5Db3VudCB9IGZyb20gJy4uL3V0aWxzL21pbmQnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZ2V0QnJhbmNoQ29sb3JCeU1pbmRFbGVtZW50LCBnZXRCcmFuY2hXaWR0aEJ5TWluZEVsZW1lbnQgfSBmcm9tICcuLi91dGlscy9ub2RlLXN0eWxlL2JyYW5jaCc7XG5pbXBvcnQgeyBnZXRMYXlvdXREaXJlY3Rpb24sIGdldFBvaW50QnlQbGFjZW1lbnQsIG1vdmVYT2ZQb2ludCwgbW92ZVlPZlBvaW50LCB0cmFuc2Zvcm1QbGFjZW1lbnQgfSBmcm9tICcuLi91dGlscy9wb2ludC1wbGFjZW1lbnQnO1xuaW1wb3J0IHsgSG9yaXpvbnRhbFBsYWNlbWVudCwgUG9pbnRQbGFjZW1lbnQsIFZlcnRpY2FsUGxhY2VtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90eXBlcyc7XG5pbXBvcnQgeyBBZnRlckRyYXcsIEdlbmVyYXRvciB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuXG5leHBvcnQgY2xhc3MgQ29sbGFwc2VHZW5lcmF0b3IgZXh0ZW5kcyBHZW5lcmF0b3I8TWluZEVsZW1lbnQ+IGltcGxlbWVudHMgQWZ0ZXJEcmF3IHtcbiAgICBjYW5EcmF3KGVsZW1lbnQ6IE1pbmRFbGVtZW50PEJhc2VEYXRhPik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggJiYgIVBsYWl0TWluZC5pc01pbmQoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBkcmF3KGVsZW1lbnQ6IE1pbmRFbGVtZW50PEJhc2VEYXRhPik6IFNWR0dFbGVtZW50IHtcbiAgICAgICAgY29uc3QgY29sbGFwc2VHID0gY3JlYXRlRygpO1xuICAgICAgICBjb2xsYXBzZUcuY2xhc3NMaXN0LmFkZCgnY29sbGFwc2UnKTtcbiAgICAgICAgY29uc3Qgbm9kZSA9IE1pbmRFbGVtZW50LmdldE5vZGUoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHN0cm9rZSA9IGdldEJyYW5jaENvbG9yQnlNaW5kRWxlbWVudCh0aGlzLmJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgY29uc3QgYnJhbmNoV2lkdGggPSBnZXRCcmFuY2hXaWR0aEJ5TWluZEVsZW1lbnQodGhpcy5ib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGxheW91dCA9IE1pbmRRdWVyaWVzLmdldExheW91dEJ5RWxlbWVudChlbGVtZW50KSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICAgICAgY29uc3QgaXNVbmRlcmxpbmVTaGFwZSA9IGdldFNoYXBlQnlFbGVtZW50KHRoaXMuYm9hcmQsIGVsZW1lbnQpID09PSBNaW5kRWxlbWVudFNoYXBlLnVuZGVybGluZTtcbiAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gaXNIb3Jpem9udGFsTGF5b3V0KGxheW91dCk7XG4gICAgICAgIGNvbnN0IG5vZGVDbGllbnQgPSBnZXRSZWN0YW5nbGVCeU5vZGUobm9kZSk7XG4gICAgICAgIGxldCBsaW5rRGlyZWN0aW9uID0gZ2V0TGF5b3V0RGlyZWN0aW9uKG5vZGUsIGlzSG9yaXpvbnRhbCk7XG4gICAgICAgIGlmIChpc0luZGVudGVkTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgIGxpbmtEaXJlY3Rpb24gPSBpc1RvcExheW91dChsYXlvdXQpID8gTGF5b3V0RGlyZWN0aW9uLnRvcCA6IExheW91dERpcmVjdGlvbi5ib3R0b207XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGxhY2VtZW50OiBQb2ludFBsYWNlbWVudCA9IFtIb3Jpem9udGFsUGxhY2VtZW50LnJpZ2h0LCBWZXJ0aWNhbFBsYWNlbWVudC5taWRkbGVdO1xuXG4gICAgICAgIHRyYW5zZm9ybVBsYWNlbWVudChwbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgICAgIC8vIHVuZGVybGluZSBzaGFwZSBhbmQgaG9yaXpvbnRhbFxuICAgICAgICBpZiAoaXNIb3Jpem9udGFsICYmIGlzVW5kZXJsaW5lU2hhcGUgJiYgIWVsZW1lbnQuaXNSb290KSB7XG4gICAgICAgICAgICBwbGFjZW1lbnRbMV0gPSBWZXJ0aWNhbFBsYWNlbWVudC5ib3R0b207XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc3RhcnRQb2ludCA9IGdldFBvaW50QnlQbGFjZW1lbnQobm9kZUNsaWVudCwgcGxhY2VtZW50KTtcbiAgICAgICAgY29uc3QgZW5kUG9pbnQgPSBtb3ZlWE9mUG9pbnQoc3RhcnRQb2ludCwgRVhURU5EX09GRlNFVCwgbGlua0RpcmVjdGlvbik7XG4gICAgICAgIGNvbnN0IGNpcmNsZUNlbnRlciA9IG1vdmVYT2ZQb2ludChlbmRQb2ludCwgRVhURU5EX0RJQU1FVEVSIC8gMiwgbGlua0RpcmVjdGlvbik7XG5cbiAgICAgICAgY29uc3QgYXJyb3dQb2ludHMgPSB0aGlzLmdldEFycm93UG9pbnRzKGNpcmNsZUNlbnRlciwgbGlua0RpcmVjdGlvbik7XG5cbiAgICAgICAgY29uc3QgYXJyb3dMaW5lID0gZHJhd0xpbmVhclBhdGgoYXJyb3dQb2ludHMsIHtcbiAgICAgICAgICAgIHN0cm9rZSxcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGV4dGVuZExpbmUgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpLmxpbmUoc3RhcnRQb2ludFswXSwgc3RhcnRQb2ludFsxXSwgZW5kUG9pbnRbMF0sIGVuZFBvaW50WzFdLCB7XG4gICAgICAgICAgICBzdHJva2VXaWR0aDogYnJhbmNoV2lkdGgsXG4gICAgICAgICAgICBzdHJva2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgYmFkZ2UgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpLmNpcmNsZShjaXJjbGVDZW50ZXJbMF0sIGNpcmNsZUNlbnRlclsxXSwgRVhURU5EX0RJQU1FVEVSLCB7XG4gICAgICAgICAgICBmaWxsOiBzdHJva2UsXG4gICAgICAgICAgICBzdHJva2UsXG4gICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgaGlkZUNpcmNsZUcgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpLmNpcmNsZShjaXJjbGVDZW50ZXJbMF0sIGNpcmNsZUNlbnRlclsxXSwgRVhURU5EX0RJQU1FVEVSLCB7XG4gICAgICAgICAgICBmaWxsOiAnI2ZmZicsXG4gICAgICAgICAgICBzdHJva2UsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogYnJhbmNoV2lkdGggPiAzID8gMyA6IGJyYW5jaFdpZHRoLFxuICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChlbGVtZW50LmlzQ29sbGFwc2VkKSB7XG4gICAgICAgICAgICBsZXQgbnVtYmVyT2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGlmIChnZXRDaGlsZHJlbkNvdW50KGVsZW1lbnQpID49IDEwKSBudW1iZXJPZmZzZXQgPSAtMjtcbiAgICAgICAgICAgIGlmIChnZXRDaGlsZHJlbkNvdW50KGVsZW1lbnQpID09PSAxKSBudW1iZXJPZmZzZXQgPSAxO1xuXG4gICAgICAgICAgICBjb25zdCBiYWRnZVRleHQgPSBjcmVhdGVUZXh0KGNpcmNsZUNlbnRlclswXSAtIDQgKyBudW1iZXJPZmZzZXQsIGNpcmNsZUNlbnRlclsxXSArIDQsIHN0cm9rZSwgYCR7Z2V0Q2hpbGRyZW5Db3VudChlbGVtZW50KX1gKTtcbiAgICAgICAgICAgIGJhZGdlLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnb3BhY2l0eTogMC4xNScpO1xuICAgICAgICAgICAgYmFkZ2VUZXh0LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZm9udC1zaXplOiAxMnB4Jyk7XG4gICAgICAgICAgICBjb2xsYXBzZUcuYXBwZW5kQ2hpbGQoYmFkZ2UpO1xuICAgICAgICAgICAgY29sbGFwc2VHLmFwcGVuZENoaWxkKGJhZGdlVGV4dCk7XG4gICAgICAgICAgICBjb2xsYXBzZUcuYXBwZW5kQ2hpbGQoZXh0ZW5kTGluZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb2xsYXBzZUcuYXBwZW5kQ2hpbGQoaGlkZUNpcmNsZUcpO1xuICAgICAgICAgICAgY29sbGFwc2VHLmFwcGVuZENoaWxkKGFycm93TGluZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb2xsYXBzZUcuYXBwZW5kQ2hpbGQoZXh0ZW5kTGluZSk7XG4gICAgICAgIHJldHVybiBjb2xsYXBzZUc7XG4gICAgfVxuXG4gICAgYWZ0ZXJEcmF3KGVsZW1lbnQ6IE1pbmRFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNhbiBub3QgZmluZCBxdWljayBpbnNlcnQgZ2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5nLCAncG9pbnRlcmRvd24nKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+ICFQbGFpdEJvYXJkLmlzUG9pbnRlcih0aGlzLmJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLmhhbmQpIHx8ICEhUGxhaXRCb2FyZC5pc1JlYWRvbmx5KHRoaXMuYm9hcmQpKSxcbiAgICAgICAgICAgICAgICB0YWtlKDEpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0NvbGxhcHNlZCA9ICFlbGVtZW50LmlzQ29sbGFwc2VkO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ6IFBhcnRpYWw8TWluZEVsZW1lbnQ+ID0geyBpc0NvbGxhcHNlZCB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKHRoaXMuYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZSh0aGlzLmJvYXJkLCBuZXdFbGVtZW50LCBwYXRoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QXJyb3dQb2ludHMoY2lyY2xlQ2VudGVyOiBQb2ludCwgbGlua0RpcmVjdGlvbjogTGF5b3V0RGlyZWN0aW9uKSB7XG4gICAgICAgIGxldCBhcnJvd1RvcFBvaW50ID0gbW92ZVhPZlBvaW50KGNpcmNsZUNlbnRlciwgMiwgbGlua0RpcmVjdGlvbik7XG4gICAgICAgIGFycm93VG9wUG9pbnQgPSBtb3ZlWU9mUG9pbnQoYXJyb3dUb3BQb2ludCwgNCwgbGlua0RpcmVjdGlvbik7XG4gICAgICAgIGNvbnN0IGFycm93TWlkZGxlUG9pbnQgPSBtb3ZlWE9mUG9pbnQoY2lyY2xlQ2VudGVyLCAtMiwgbGlua0RpcmVjdGlvbik7XG4gICAgICAgIGxldCBhcnJvd0JvdHRvbVBvaW50ID0gbW92ZVhPZlBvaW50KGNpcmNsZUNlbnRlciwgMiwgbGlua0RpcmVjdGlvbik7XG4gICAgICAgIGFycm93Qm90dG9tUG9pbnQgPSBtb3ZlWU9mUG9pbnQoYXJyb3dCb3R0b21Qb2ludCwgLTQsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgICAgIHJldHVybiBbYXJyb3dUb3BQb2ludCwgYXJyb3dNaWRkbGVQb2ludCwgYXJyb3dCb3R0b21Qb2ludF07XG4gICAgfVxufVxuIl19
@@ -1,63 +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
- export const FOREIGN_OBJECT_EMOJI_CLASS_NAME = 'foreign-object-emoji';
6
- class EmojiGenerator {
7
- constructor(board) {
8
- this.board = board;
9
- this.emojiComponentRef = null;
10
- }
11
- draw(container, emoji, element) {
12
- this.destroy();
13
- const props = {
14
- board: this.board,
15
- emojiItem: emoji,
16
- element,
17
- fontSize: getEmojiFontSize(element)
18
- };
19
- this.emojiComponentRef = this.board.renderEmoji(container, props);
20
- }
21
- destroy() {
22
- if (this.emojiComponentRef) {
23
- this.emojiComponentRef.destroy();
24
- this.emojiComponentRef = null;
25
- }
26
- }
27
- }
28
- export class NodeEmojisGenerator {
29
- static { this.key = 'node-emojis-generator'; }
30
- constructor(board) {
31
- this.board = board;
32
- this.emojiGenerators = [];
33
- }
34
- drawEmojis(element) {
35
- this.destroy();
36
- if (MindElement.hasEmojis(element)) {
37
- this.g = createG();
38
- this.g.classList.add('emojis');
39
- const foreignRectangle = getEmojiForeignRectangle(this.board, element);
40
- const foreignObject = createForeignObject(foreignRectangle.x, foreignRectangle.y, foreignRectangle.width, foreignRectangle.height);
41
- foreignObject.classList.add(FOREIGN_OBJECT_EMOJI_CLASS_NAME);
42
- this.g.append(foreignObject);
43
- const container = document.createElement('div');
44
- container.classList.add('node-emojis-container');
45
- foreignObject.append(container);
46
- this.emojiGenerators = element.data.emojis.map(emojiItem => {
47
- const drawer = new EmojiGenerator(this.board);
48
- drawer.draw(container, emojiItem, element);
49
- return drawer;
50
- });
51
- return this.g;
52
- }
53
- return undefined;
54
- }
55
- destroy() {
56
- if (this.g) {
57
- this.g.remove();
58
- }
59
- this.emojiGenerators.forEach(drawer => drawer.destroy());
60
- this.emojiGenerators = [];
61
- }
62
- }
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1lbW9qaXMuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvZ2VuZXJhdG9ycy9ub2RlLWVtb2ppcy5nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFjLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUluRSxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxzQkFBc0IsQ0FBQztBQUV0RSxNQUFNLGNBQWM7SUFHaEIsWUFBb0IsS0FBdUM7UUFBdkMsVUFBSyxHQUFMLEtBQUssQ0FBa0M7UUFGM0Qsc0JBQWlCLEdBQTZCLElBQUksQ0FBQztJQUVXLENBQUM7SUFFL0QsSUFBSSxDQUFDLFNBQXFDLEVBQUUsS0FBZ0IsRUFBRSxPQUErQjtRQUN6RixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixNQUFNLEtBQUssR0FBZTtZQUN0QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsT0FBTztZQUNQLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7U0FDdEMsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLENBQUM7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sbUJBQW1CO2FBQ3JCLFFBQUcsR0FBRyx1QkFBdUIsQUFBMUIsQ0FBMkI7SUFNckMsWUFBb0IsS0FBcUI7UUFBckIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFKekMsb0JBQWUsR0FBcUIsRUFBRSxDQUFDO0lBSUssQ0FBQztJQUU3QyxVQUFVLENBQUMsT0FBb0I7UUFDM0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0IsTUFBTSxnQkFBZ0IsR0FBRyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZFLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUNyQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQ2xCLGdCQUFnQixDQUFDLENBQUMsRUFDbEIsZ0JBQWdCLENBQUMsS0FBSyxFQUN0QixnQkFBZ0IsQ0FBQyxNQUFNLENBQzFCLENBQUM7WUFDRixhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzdCLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUNqRCxhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUN2RCxNQUFNLE1BQU0sR0FBRyxJQUFJLGNBQWMsQ0FBRSxJQUFJLENBQUMsS0FBcUQsQ0FBQyxDQUFDO2dCQUMvRixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzNDLE9BQU8sTUFBTSxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsT0FBTztRQUNILElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQixDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW1vamlEYXRhLCBFbW9qaUl0ZW0sIE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBjcmVhdGVGb3JlaWduT2JqZWN0LCBjcmVhdGVHIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgZ2V0RW1vamlGb250U2l6ZSB9IGZyb20gJy4uL3V0aWxzL3NwYWNlL2Vtb2ppJztcbmltcG9ydCB7IGdldEVtb2ppRm9yZWlnblJlY3RhbmdsZSB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL2Vtb2ppJztcbmltcG9ydCB7IFBsYWl0TWluZEJvYXJkIH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLW1pbmQuYm9hcmQnO1xuaW1wb3J0IHsgRW1vamlDb21wb25lbnRSZWYsIEVtb2ppUHJvcHMsIFBsYWl0TWluZEVtb2ppQm9hcmQgfSBmcm9tICcuLi9lbW9qaS93aXRoLWVtb2ppJztcblxuZXhwb3J0IGNvbnN0IEZPUkVJR05fT0JKRUNUX0VNT0pJX0NMQVNTX05BTUUgPSAnZm9yZWlnbi1vYmplY3QtZW1vamknO1xuXG5jbGFzcyBFbW9qaUdlbmVyYXRvciB7XG4gICAgZW1vamlDb21wb25lbnRSZWY6IEVtb2ppQ29tcG9uZW50UmVmIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJvYXJkOiBQbGFpdE1pbmRFbW9qaUJvYXJkICYgUGxhaXRCb2FyZCkge31cblxuICAgIGRyYXcoY29udGFpbmVyOiBFbGVtZW50IHwgRG9jdW1lbnRGcmFnbWVudCwgZW1vamk6IEVtb2ppSXRlbSwgZWxlbWVudDogTWluZEVsZW1lbnQ8RW1vamlEYXRhPikge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgY29uc3QgcHJvcHM6IEVtb2ppUHJvcHMgPSB7XG4gICAgICAgICAgICBib2FyZDogdGhpcy5ib2FyZCxcbiAgICAgICAgICAgIGVtb2ppSXRlbTogZW1vamksXG4gICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgZm9udFNpemU6IGdldEVtb2ppRm9udFNpemUoZWxlbWVudClcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5lbW9qaUNvbXBvbmVudFJlZiA9IHRoaXMuYm9hcmQucmVuZGVyRW1vamkoY29udGFpbmVyLCBwcm9wcyk7XG4gICAgfVxuXG4gICAgZGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZW1vamlDb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuZW1vamlDb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5lbW9qaUNvbXBvbmVudFJlZiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb2RlRW1vamlzR2VuZXJhdG9yIHtcbiAgICBzdGF0aWMga2V5ID0gJ25vZGUtZW1vamlzLWdlbmVyYXRvcic7XG5cbiAgICBlbW9qaUdlbmVyYXRvcnM6IEVtb2ppR2VuZXJhdG9yW10gPSBbXTtcblxuICAgIGc/OiBTVkdHRWxlbWVudDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYm9hcmQ6IFBsYWl0TWluZEJvYXJkKSB7fVxuXG4gICAgZHJhd0Vtb2ppcyhlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgaWYgKE1pbmRFbGVtZW50Lmhhc0Vtb2ppcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5nID0gY3JlYXRlRygpO1xuICAgICAgICAgICAgdGhpcy5nLmNsYXNzTGlzdC5hZGQoJ2Vtb2ppcycpO1xuICAgICAgICAgICAgY29uc3QgZm9yZWlnblJlY3RhbmdsZSA9IGdldEVtb2ppRm9yZWlnblJlY3RhbmdsZSh0aGlzLmJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGZvcmVpZ25PYmplY3QgPSBjcmVhdGVGb3JlaWduT2JqZWN0KFxuICAgICAgICAgICAgICAgIGZvcmVpZ25SZWN0YW5nbGUueCxcbiAgICAgICAgICAgICAgICBmb3JlaWduUmVjdGFuZ2xlLnksXG4gICAgICAgICAgICAgICAgZm9yZWlnblJlY3RhbmdsZS53aWR0aCxcbiAgICAgICAgICAgICAgICBmb3JlaWduUmVjdGFuZ2xlLmhlaWdodFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGZvcmVpZ25PYmplY3QuY2xhc3NMaXN0LmFkZChGT1JFSUdOX09CSkVDVF9FTU9KSV9DTEFTU19OQU1FKTtcbiAgICAgICAgICAgIHRoaXMuZy5hcHBlbmQoZm9yZWlnbk9iamVjdCk7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdub2RlLWVtb2ppcy1jb250YWluZXInKTtcbiAgICAgICAgICAgIGZvcmVpZ25PYmplY3QuYXBwZW5kKGNvbnRhaW5lcik7XG4gICAgICAgICAgICB0aGlzLmVtb2ppR2VuZXJhdG9ycyA9IGVsZW1lbnQuZGF0YS5lbW9qaXMubWFwKGVtb2ppSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZHJhd2VyID0gbmV3IEVtb2ppR2VuZXJhdG9yKCh0aGlzLmJvYXJkIGFzIHVua25vd24pIGFzIFBsYWl0Qm9hcmQgJiBQbGFpdE1pbmRFbW9qaUJvYXJkKTtcbiAgICAgICAgICAgICAgICBkcmF3ZXIuZHJhdyhjb250YWluZXIsIGVtb2ppSXRlbSwgZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRyYXdlcjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmcpIHtcbiAgICAgICAgICAgIHRoaXMuZy5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVtb2ppR2VuZXJhdG9ycy5mb3JFYWNoKGRyYXdlciA9PiBkcmF3ZXIuZGVzdHJveSgpKTtcbiAgICAgICAgdGhpcy5lbW9qaUdlbmVyYXRvcnMgPSBbXTtcbiAgICB9XG59XG4iXX0=
@@ -1,100 +0,0 @@
1
- import { PlaitBoard, createG } from '@plait/core';
2
- import { MindElement, PlaitMind, MindElementShape, LayoutDirection } from '../interfaces';
3
- import { getRectangleByNode } from '../utils/position/node';
4
- import { getShapeByElement } from '../utils/node-style/shape';
5
- import { EXTEND_DIAMETER, QUICK_INSERT_CIRCLE_COLOR, QUICK_INSERT_INNER_CROSS_COLOR } from '../constants/default';
6
- import { isHorizontalLayout, isIndentedLayout, isTopLayout } from '@plait/layouts';
7
- import { MindQueries } from '../queries';
8
- import { fromEvent } from 'rxjs';
9
- import { insertMindElement } from '../utils/mind';
10
- import { take } from 'rxjs/operators';
11
- import { findNewChildNodePath } from '../utils/path';
12
- import { getBranchColorByMindElement, getBranchWidthByMindElement, getNextBranchColor } from '../utils/node-style/branch';
13
- import { getLayoutDirection, getPointByPlacement, moveXOfPoint, transformPlacement } from '../utils/point-placement';
14
- import { HorizontalPlacement, VerticalPlacement } from '../interfaces/types';
15
- import { Generator } from '@plait/common';
16
- export class NodePlusGenerator extends Generator {
17
- canDraw(element) {
18
- if (PlaitBoard.isReadonly(this.board) || element?.isCollapsed) {
19
- return false;
20
- }
21
- return true;
22
- }
23
- draw(element) {
24
- const plusG = createG();
25
- plusG.classList.add('plus');
26
- const node = MindElement.getNode(element);
27
- const layout = MindQueries.getLayoutByElement(element);
28
- const isHorizontal = isHorizontalLayout(layout);
29
- let linkDirection = getLayoutDirection(node, isHorizontal);
30
- if (isIndentedLayout(layout)) {
31
- linkDirection = isTopLayout(layout) ? LayoutDirection.top : LayoutDirection.bottom;
32
- }
33
- const isUnderlineShape = getShapeByElement(this.board, element) === MindElementShape.underline;
34
- const nodeClient = getRectangleByNode(node);
35
- const branchWidth = getBranchWidthByMindElement(this.board, element);
36
- const branchColor = PlaitMind.isMind(element)
37
- ? getNextBranchColor(this.board, element)
38
- : getBranchColorByMindElement(this.board, element);
39
- let distance = 8;
40
- let placement = [HorizontalPlacement.right, VerticalPlacement.middle];
41
- transformPlacement(placement, linkDirection);
42
- // underline shape and horizontal
43
- if (isHorizontal && isUnderlineShape && !element.isRoot) {
44
- placement[1] = VerticalPlacement.bottom;
45
- }
46
- let beginPoint = getPointByPlacement(nodeClient, placement);
47
- if (element.children.length > 0 && !element.isRoot) {
48
- beginPoint = moveXOfPoint(beginPoint, EXTEND_DIAMETER + 8, linkDirection);
49
- distance = 5;
50
- }
51
- const endPoint = moveXOfPoint(beginPoint, distance, linkDirection);
52
- const circleCenter = moveXOfPoint(endPoint, 8, linkDirection);
53
- const line = PlaitBoard.getRoughSVG(this.board).line(beginPoint[0], beginPoint[1], endPoint[0], endPoint[1], {
54
- stroke: branchColor,
55
- strokeWidth: branchWidth
56
- });
57
- const circle = PlaitBoard.getRoughSVG(this.board).circle(circleCenter[0], circleCenter[1], EXTEND_DIAMETER, {
58
- fill: QUICK_INSERT_CIRCLE_COLOR,
59
- stroke: QUICK_INSERT_CIRCLE_COLOR,
60
- fillStyle: 'solid'
61
- });
62
- const HLineBeginPoint = [circleCenter[0] - 5, circleCenter[1]];
63
- const HLineEndPoint = [circleCenter[0] + 5, circleCenter[1]];
64
- const VLineBeginPoint = [circleCenter[0], circleCenter[1] - 5];
65
- const VLineEndPoint = [circleCenter[0], circleCenter[1] + 5];
66
- const innerCrossHLine = PlaitBoard.getRoughSVG(this.board).line(HLineBeginPoint[0], HLineBeginPoint[1], HLineEndPoint[0], HLineEndPoint[1], {
67
- stroke: QUICK_INSERT_INNER_CROSS_COLOR,
68
- strokeWidth: 2
69
- });
70
- const innerCrossVLine = PlaitBoard.getRoughSVG(this.board).line(VLineBeginPoint[0], VLineBeginPoint[1], VLineEndPoint[0], VLineEndPoint[1], {
71
- stroke: QUICK_INSERT_INNER_CROSS_COLOR,
72
- strokeWidth: 2
73
- });
74
- plusG.appendChild(line);
75
- plusG.appendChild(circle);
76
- plusG.appendChild(innerCrossHLine);
77
- plusG.appendChild(innerCrossVLine);
78
- return plusG;
79
- }
80
- afterDraw(element) {
81
- if (!this.g) {
82
- throw new Error(`can not find quick insert g`);
83
- }
84
- fromEvent(this.g, 'pointerdown')
85
- .pipe(take(1))
86
- .subscribe(e => {
87
- e.preventDefault();
88
- });
89
- fromEvent(this.g, 'pointerup')
90
- .pipe(take(1))
91
- .subscribe((event) => {
92
- // wait the event period end of pointerup to otherwise the pointerup will cause new element lose selected state
93
- setTimeout(() => {
94
- const path = findNewChildNodePath(this.board, element);
95
- insertMindElement(this.board, element, path);
96
- }, 0);
97
- });
98
- }
99
- }
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1wbHVzLmdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL2dlbmVyYXRvcnMvbm9kZS1wbHVzLmdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFxQixPQUFPLEVBQTZCLE1BQU0sYUFBYSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxXQUFXLEVBQVksU0FBUyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEgsT0FBTyxFQUFrQixrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JILE9BQU8sRUFBRSxtQkFBbUIsRUFBa0Is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LEVBQUUsV0FBVyxDQUFDO2FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDYixTQUFTLENBQUMsQ0FBQyxLQUFtQixFQUFFLEVBQUU7WUFDL0IsK0dBQStHO1lBQy9HLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osTUFBTSxJQUFJLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDdkQsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQXVCLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ25FLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNWLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRPcHRpb25zQm9hcmQsIGNyZWF0ZUcsIHRlbXBvcmFyeURpc2FibGVTZWxlY3Rpb24gfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCwgQmFzZURhdGEsIFBsYWl0TWluZCwgTWluZEVsZW1lbnRTaGFwZSwgTGF5b3V0RGlyZWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9ub2RlJztcbmltcG9ydCB7IGdldFNoYXBlQnlFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvbm9kZS1zdHlsZS9zaGFwZSc7XG5pbXBvcnQgeyBFWFRFTkRfRElBTUVURVIsIFFVSUNLX0lOU0VSVF9DSVJDTEVfQ09MT1IsIFFVSUNLX0lOU0VSVF9JTk5FUl9DUk9TU19DT0xPUiB9IGZyb20gJy4uL2NvbnN0YW50cy9kZWZhdWx0JztcbmltcG9ydCB7IE1pbmRMYXlvdXRUeXBlLCBpc0hvcml6b250YWxMYXlvdXQsIGlzSW5kZW50ZWRMYXlvdXQsIGlzVG9wTGF5b3V0IH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuLi9xdWVyaWVzJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaW5zZXJ0TWluZEVsZW1lbnQgfSBmcm9tICcuLi91dGlscy9taW5kJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBmaW5kTmV3Q2hpbGROb2RlUGF0aCB9IGZyb20gJy4uL3V0aWxzL3BhdGgnO1xuaW1wb3J0IHsgZ2V0QnJhbmNoQ29sb3JCeU1pbmRFbGVtZW50LCBnZXRCcmFuY2hXaWR0aEJ5TWluZEVsZW1lbnQsIGdldE5leHRCcmFuY2hDb2xvciB9IGZyb20gJy4uL3V0aWxzL25vZGUtc3R5bGUvYnJhbmNoJztcbmltcG9ydCB7IGdldExheW91dERpcmVjdGlvbiwgZ2V0UG9pbnRCeVBsYWNlbWVudCwgbW92ZVhPZlBvaW50LCB0cmFuc2Zvcm1QbGFjZW1lbnQgfSBmcm9tICcuLi91dGlscy9wb2ludC1wbGFjZW1lbnQnO1xuaW1wb3J0IHsgSG9yaXpvbnRhbFBsYWNlbWVudCwgUG9pbnRQbGFjZW1lbnQsIFZlcnRpY2FsUGxhY2VtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90eXBlcyc7XG5pbXBvcnQgeyBBZnRlckRyYXcsIEdlbmVyYXRvciB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgUGxhaXRNaW5kQm9hcmQgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtbWluZC5ib2FyZCc7XG5cbmV4cG9ydCBjbGFzcyBOb2RlUGx1c0dlbmVyYXRvciBleHRlbmRzIEdlbmVyYXRvcjxNaW5kRWxlbWVudD4gaW1wbGVtZW50cyBBZnRlckRyYXcge1xuICAgIGNhbkRyYXcoZWxlbWVudDogTWluZEVsZW1lbnQ8QmFzZURhdGE+KTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChQbGFpdEJvYXJkLmlzUmVhZG9ubHkodGhpcy5ib2FyZCkgfHwgZWxlbWVudD8uaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBkcmF3KGVsZW1lbnQ6IE1pbmRFbGVtZW50PEJhc2VEYXRhPik6IFNWR0dFbGVtZW50IHtcbiAgICAgICAgY29uc3QgcGx1c0cgPSBjcmVhdGVHKCk7XG4gICAgICAgIHBsdXNHLmNsYXNzTGlzdC5hZGQoJ3BsdXMnKTtcbiAgICAgICAgY29uc3Qgbm9kZSA9IE1pbmRFbGVtZW50LmdldE5vZGUoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGxheW91dCA9IE1pbmRRdWVyaWVzLmdldExheW91dEJ5RWxlbWVudChlbGVtZW50KSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gaXNIb3Jpem9udGFsTGF5b3V0KGxheW91dCk7XG4gICAgICAgIGxldCBsaW5rRGlyZWN0aW9uID0gZ2V0TGF5b3V0RGlyZWN0aW9uKG5vZGUsIGlzSG9yaXpvbnRhbCk7XG4gICAgICAgIGlmIChpc0luZGVudGVkTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgIGxpbmtEaXJlY3Rpb24gPSBpc1RvcExheW91dChsYXlvdXQpID8gTGF5b3V0RGlyZWN0aW9uLnRvcCA6IExheW91dERpcmVjdGlvbi5ib3R0b207XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNVbmRlcmxpbmVTaGFwZSA9IGdldFNoYXBlQnlFbGVtZW50KHRoaXMuYm9hcmQsIGVsZW1lbnQpID09PSBNaW5kRWxlbWVudFNoYXBlLnVuZGVybGluZTtcbiAgICAgICAgY29uc3Qgbm9kZUNsaWVudCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShub2RlKTtcbiAgICAgICAgY29uc3QgYnJhbmNoV2lkdGggPSBnZXRCcmFuY2hXaWR0aEJ5TWluZEVsZW1lbnQodGhpcy5ib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGJyYW5jaENvbG9yID0gUGxhaXRNaW5kLmlzTWluZChlbGVtZW50KVxuICAgICAgICAgICAgPyBnZXROZXh0QnJhbmNoQ29sb3IodGhpcy5ib2FyZCwgZWxlbWVudClcbiAgICAgICAgICAgIDogZ2V0QnJhbmNoQ29sb3JCeU1pbmRFbGVtZW50KHRoaXMuYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBsZXQgZGlzdGFuY2UgPSA4O1xuXG4gICAgICAgIGxldCBwbGFjZW1lbnQ6IFBvaW50UGxhY2VtZW50ID0gW0hvcml6b250YWxQbGFjZW1lbnQucmlnaHQsIFZlcnRpY2FsUGxhY2VtZW50Lm1pZGRsZV07XG5cbiAgICAgICAgdHJhbnNmb3JtUGxhY2VtZW50KHBsYWNlbWVudCwgbGlua0RpcmVjdGlvbik7XG5cbiAgICAgICAgLy8gdW5kZXJsaW5lIHNoYXBlIGFuZCBob3Jpem9udGFsXG4gICAgICAgIGlmIChpc0hvcml6b250YWwgJiYgaXNVbmRlcmxpbmVTaGFwZSAmJiAhZWxlbWVudC5pc1Jvb3QpIHtcbiAgICAgICAgICAgIHBsYWNlbWVudFsxXSA9IFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBiZWdpblBvaW50ID0gZ2V0UG9pbnRCeVBsYWNlbWVudChub2RlQ2xpZW50LCBwbGFjZW1lbnQpO1xuXG4gICAgICAgIGlmIChlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA+IDAgJiYgIWVsZW1lbnQuaXNSb290KSB7XG4gICAgICAgICAgICBiZWdpblBvaW50ID0gbW92ZVhPZlBvaW50KGJlZ2luUG9pbnQsIEVYVEVORF9ESUFNRVRFUiArIDgsIGxpbmtEaXJlY3Rpb24pO1xuICAgICAgICAgICAgZGlzdGFuY2UgPSA1O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW5kUG9pbnQgPSBtb3ZlWE9mUG9pbnQoYmVnaW5Qb2ludCwgZGlzdGFuY2UsIGxpbmtEaXJlY3Rpb24pO1xuICAgICAgICBjb25zdCBjaXJjbGVDZW50ZXIgPSBtb3ZlWE9mUG9pbnQoZW5kUG9pbnQsIDgsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgICAgIGNvbnN0IGxpbmUgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpLmxpbmUoYmVnaW5Qb2ludFswXSwgYmVnaW5Qb2ludFsxXSwgZW5kUG9pbnRbMF0sIGVuZFBvaW50WzFdLCB7XG4gICAgICAgICAgICBzdHJva2U6IGJyYW5jaENvbG9yLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IGJyYW5jaFdpZHRoXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGNpcmNsZSA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcodGhpcy5ib2FyZCkuY2lyY2xlKGNpcmNsZUNlbnRlclswXSwgY2lyY2xlQ2VudGVyWzFdLCBFWFRFTkRfRElBTUVURVIsIHtcbiAgICAgICAgICAgIGZpbGw6IFFVSUNLX0lOU0VSVF9DSVJDTEVfQ09MT1IsXG4gICAgICAgICAgICBzdHJva2U6IFFVSUNLX0lOU0VSVF9DSVJDTEVfQ09MT1IsXG4gICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgSExpbmVCZWdpblBvaW50ID0gW2NpcmNsZUNlbnRlclswXSAtIDUsIGNpcmNsZUNlbnRlclsxXV07XG4gICAgICAgIGNvbnN0IEhMaW5lRW5kUG9pbnQgPSBbY2lyY2xlQ2VudGVyWzBdICsgNSwgY2lyY2xlQ2VudGVyWzFdXTtcbiAgICAgICAgY29uc3QgVkxpbmVCZWdpblBvaW50ID0gW2NpcmNsZUNlbnRlclswXSwgY2lyY2xlQ2VudGVyWzFdIC0gNV07XG4gICAgICAgIGNvbnN0IFZMaW5lRW5kUG9pbnQgPSBbY2lyY2xlQ2VudGVyWzBdLCBjaXJjbGVDZW50ZXJbMV0gKyA1XTtcblxuICAgICAgICBjb25zdCBpbm5lckNyb3NzSExpbmUgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpLmxpbmUoXG4gICAgICAgICAgICBITGluZUJlZ2luUG9pbnRbMF0sXG4gICAgICAgICAgICBITGluZUJlZ2luUG9pbnRbMV0sXG4gICAgICAgICAgICBITGluZUVuZFBvaW50WzBdLFxuICAgICAgICAgICAgSExpbmVFbmRQb2ludFsxXSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdHJva2U6IFFVSUNLX0lOU0VSVF9JTk5FUl9DUk9TU19DT0xPUixcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMlxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGlubmVyQ3Jvc3NWTGluZSA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcodGhpcy5ib2FyZCkubGluZShcbiAgICAgICAgICAgIFZMaW5lQmVnaW5Qb2ludFswXSxcbiAgICAgICAgICAgIFZMaW5lQmVnaW5Qb2ludFsxXSxcbiAgICAgICAgICAgIFZMaW5lRW5kUG9pbnRbMF0sXG4gICAgICAgICAgICBWTGluZUVuZFBvaW50WzFdLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0cm9rZTogUVVJQ0tfSU5TRVJUX0lOTkVSX0NST1NTX0NPTE9SLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHBsdXNHLmFwcGVuZENoaWxkKGxpbmUpO1xuICAgICAgICBwbHVzRy5hcHBlbmRDaGlsZChjaXJjbGUpO1xuICAgICAgICBwbHVzRy5hcHBlbmRDaGlsZChpbm5lckNyb3NzSExpbmUpO1xuICAgICAgICBwbHVzRy5hcHBlbmRDaGlsZChpbm5lckNyb3NzVkxpbmUpO1xuICAgICAgICByZXR1cm4gcGx1c0c7XG4gICAgfVxuXG4gICAgYWZ0ZXJEcmF3KGVsZW1lbnQ6IE1pbmRFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNhbiBub3QgZmluZCBxdWljayBpbnNlcnQgZ2ApO1xuICAgICAgICB9XG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmcsICdwb2ludGVyZG93bicpXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5nLCAncG9pbnRlcnVwJylcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gd2FpdCB0aGUgZXZlbnQgcGVyaW9kIGVuZCBvZiBwb2ludGVydXAgdG8gb3RoZXJ3aXNlIHRoZSBwb2ludGVydXAgd2lsbCBjYXVzZSBuZXcgZWxlbWVudCBsb3NlIHNlbGVjdGVkIHN0YXRlXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBmaW5kTmV3Q2hpbGROb2RlUGF0aCh0aGlzLmJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0TWluZEVsZW1lbnQodGhpcy5ib2FyZCBhcyBQbGFpdE1pbmRCb2FyZCwgZWxlbWVudCwgcGF0aCk7XG4gICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -1,22 +0,0 @@
1
- import { Generator } from '@plait/common';
2
- import { MindElementShape } from '../interfaces/element';
3
- import { getRectangleByNode } from '../utils/position/node';
4
- import { drawRoundRectangleByElement } from '../utils/draw/node-shape';
5
- import { getShapeByElement } from '../utils/node-style/shape';
6
- export class NodeShapeGenerator extends Generator {
7
- constructor(board) {
8
- super(board, { prepend: true });
9
- }
10
- canDraw(element, data) {
11
- const shape = getShapeByElement(this.board, element);
12
- if (shape === MindElementShape.roundRectangle) {
13
- return true;
14
- }
15
- return false;
16
- }
17
- draw(element, data) {
18
- const rectangle = getRectangleByNode(data.node);
19
- return drawRoundRectangleByElement(this.board, rectangle, data.node.origin);
20
- }
21
- }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1zaGFwZS5nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9nZW5lcmF0b3JzL25vZGUtc2hhcGUuZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFlLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFPOUQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFNBQWlDO0lBQ3JFLFlBQVksS0FBaUI7UUFDekIsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBb0IsRUFBRSxJQUFlO1FBQ3pDLE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckQsSUFBSSxLQUFLLEtBQUssZ0JBQWdCLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDNUMsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBb0IsRUFBRSxJQUFlO1FBQ3RDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRCxPQUFPLDJCQUEyQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEYsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2VuZXJhdG9yIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCwgTWluZEVsZW1lbnRTaGFwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9ub2RlJztcbmltcG9ydCB7IE1pbmROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IGRyYXdSb3VuZFJlY3RhbmdsZUJ5RWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL2RyYXcvbm9kZS1zaGFwZSc7XG5pbXBvcnQgeyBnZXRTaGFwZUJ5RWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL25vZGUtc3R5bGUvc2hhcGUnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBTaGFwZURhdGEge1xuICAgIG5vZGU6IE1pbmROb2RlO1xufVxuXG5leHBvcnQgY2xhc3MgTm9kZVNoYXBlR2VuZXJhdG9yIGV4dGVuZHMgR2VuZXJhdG9yPE1pbmRFbGVtZW50LCBTaGFwZURhdGE+IHtcbiAgICBjb25zdHJ1Y3Rvcihib2FyZDogUGxhaXRCb2FyZCkge1xuICAgICAgICBzdXBlcihib2FyZCwgeyBwcmVwZW5kOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIGNhbkRyYXcoZWxlbWVudDogTWluZEVsZW1lbnQsIGRhdGE6IFNoYXBlRGF0YSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBzaGFwZSA9IGdldFNoYXBlQnlFbGVtZW50KHRoaXMuYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBpZiAoc2hhcGUgPT09IE1pbmRFbGVtZW50U2hhcGUucm91bmRSZWN0YW5nbGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBkcmF3KGVsZW1lbnQ6IE1pbmRFbGVtZW50LCBkYXRhOiBTaGFwZURhdGEpIHtcbiAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKGRhdGEubm9kZSk7XG4gICAgICAgIHJldHVybiBkcmF3Um91bmRSZWN0YW5nbGVCeUVsZW1lbnQodGhpcy5ib2FyZCwgcmVjdGFuZ2xlLCBkYXRhLm5vZGUub3JpZ2luKTtcbiAgICB9XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvaW50ZXJmYWNlcy9lbGVtZW50LWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbkltYWdlSXRlbSwgUGFyYWdyYXBoRWxlbWVudCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVtb2ppSXRlbSB7XG4gICAgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VEYXRhIHtcbiAgICB0b3BpYzogUGFyYWdyYXBoRWxlbWVudDtcbiAgICBlbW9qaXM/OiBFbW9qaUl0ZW1bXTtcbiAgICBpbWFnZT86IENvbW1vbkltYWdlSXRlbTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbW9qaURhdGEgZXh0ZW5kcyBCYXNlRGF0YSB7XG4gICAgZW1vamlzOiBFbW9qaUl0ZW1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZURhdGEgZXh0ZW5kcyBCYXNlRGF0YSB7XG4gICAgaW1hZ2U6IENvbW1vbkltYWdlSXRlbTtcbn1cbiJdfQ==