@logicflow/extension 2.0.0-beta.1 → 2.0.0-beta.11

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 (237) hide show
  1. package/.turbo/turbo-build.log +389 -34
  2. package/dist/index.css +63 -0
  3. package/dist/index.min.js +32 -2
  4. package/es/NodeResize/control/Control.d.ts +3 -3
  5. package/es/NodeResize/control/Control.js +13 -3
  6. package/es/NodeResize/control/Control.js.map +1 -1
  7. package/es/NodeResize/index.d.ts +4 -0
  8. package/es/NodeResize/index.js.map +1 -1
  9. package/es/NodeResize/node/DiamondResize.d.ts +1 -0
  10. package/es/NodeResize/node/DiamondResize.js +2 -1
  11. package/es/NodeResize/node/DiamondResize.js.map +1 -1
  12. package/es/NodeResize/node/EllipseResize.d.ts +1 -0
  13. package/es/NodeResize/node/EllipseResize.js +2 -1
  14. package/es/NodeResize/node/EllipseResize.js.map +1 -1
  15. package/es/NodeResize/node/HtmlResize.js +1 -1
  16. package/es/NodeResize/node/HtmlResize.js.map +1 -1
  17. package/es/NodeResize/node/RectResize.js +1 -1
  18. package/es/NodeResize/node/RectResize.js.map +1 -1
  19. package/es/bpmn/constant.d.ts +1 -1
  20. package/es/bpmn/constant.js +3 -0
  21. package/es/bpmn/constant.js.map +1 -1
  22. package/es/bpmn/index.d.ts +3 -6
  23. package/es/bpmn/index.js +5 -7
  24. package/es/bpmn/index.js.map +1 -1
  25. package/es/bpmn-elements/presets/Pool/Pool.d.ts +21 -1
  26. package/es/components/control/index.d.ts +4 -4
  27. package/es/components/control/index.js.map +1 -1
  28. package/es/components/highlight/index.d.ts +6 -4
  29. package/es/components/highlight/index.js +32 -5
  30. package/es/components/highlight/index.js.map +1 -1
  31. package/es/components/menu/index.d.ts +1 -1
  32. package/es/components/menu/index.js +9 -10
  33. package/es/components/menu/index.js.map +1 -1
  34. package/es/components/mini-map/index.d.ts +1 -1
  35. package/es/components/mini-map/index.js +2 -2
  36. package/es/components/mini-map/index.js.map +1 -1
  37. package/es/components/selection-select/index.d.ts +1 -1
  38. package/es/components/selection-select/index.js +10 -6
  39. package/es/components/selection-select/index.js.map +1 -1
  40. package/es/dynamic-group/index.d.ts +106 -0
  41. package/es/dynamic-group/index.js +536 -0
  42. package/es/dynamic-group/index.js.map +1 -0
  43. package/es/dynamic-group/model.d.ts +135 -0
  44. package/es/dynamic-group/model.js +413 -0
  45. package/es/dynamic-group/model.js.map +1 -0
  46. package/es/dynamic-group/node.d.ts +16 -0
  47. package/es/dynamic-group/node.js +143 -0
  48. package/es/dynamic-group/node.js.map +1 -0
  49. package/es/dynamic-group/utils.d.ts +17 -0
  50. package/es/dynamic-group/utils.js +27 -0
  51. package/es/dynamic-group/utils.js.map +1 -0
  52. package/es/index.css +63 -0
  53. package/es/index.d.ts +16 -8
  54. package/es/index.js +24 -8
  55. package/es/index.js.map +1 -1
  56. package/es/insert-node-in-polyline/index.js +3 -3
  57. package/es/insert-node-in-polyline/index.js.map +1 -1
  58. package/es/materials/group/GroupNode.d.ts +6 -10
  59. package/es/materials/group/GroupNode.js +8 -6
  60. package/es/materials/group/GroupNode.js.map +1 -1
  61. package/es/materials/group/index.d.ts +5 -5
  62. package/es/materials/group/index.js +25 -26
  63. package/es/materials/group/index.js.map +1 -1
  64. package/es/materials/node-selection/index.d.ts +6 -1
  65. package/es/materials/node-selection/index.js +64 -56
  66. package/es/materials/node-selection/index.js.map +1 -1
  67. package/es/mindmap/index.d.ts +2 -2
  68. package/es/style/index.css +63 -0
  69. package/es/style/index.less +73 -0
  70. package/es/style/raw.d.ts +1 -1
  71. package/es/style/raw.js +1 -1
  72. package/es/style/raw.js.map +1 -1
  73. package/es/tools/flow-path/index.js +0 -1
  74. package/es/tools/flow-path/index.js.map +1 -1
  75. package/es/tools/label/Label.d.ts +30 -0
  76. package/es/tools/label/Label.js +241 -0
  77. package/es/tools/label/Label.js.map +1 -0
  78. package/es/tools/label/LabelModel.d.ts +26 -0
  79. package/es/tools/label/LabelModel.js +86 -0
  80. package/es/tools/label/LabelModel.js.map +1 -0
  81. package/es/tools/label/LabelOverlay.d.ts +28 -0
  82. package/es/tools/label/LabelOverlay.js +161 -0
  83. package/es/tools/label/LabelOverlay.js.map +1 -0
  84. package/es/tools/label/algorithm.d.ts +16 -0
  85. package/es/tools/label/algorithm.js +27 -0
  86. package/es/tools/label/algorithm.js.map +1 -0
  87. package/es/tools/label/index.d.ts +59 -0
  88. package/es/tools/label/index.js +292 -0
  89. package/es/tools/label/index.js.map +1 -0
  90. package/es/tools/label/mediumEditor.d.ts +17 -0
  91. package/es/tools/label/mediumEditor.js +92 -0
  92. package/es/tools/label/mediumEditor.js.map +1 -0
  93. package/es/tools/label/utils.d.ts +64 -0
  94. package/es/tools/label/utils.js +336 -0
  95. package/es/tools/label/utils.js.map +1 -0
  96. package/es/tools/snapshot/index.d.ts +107 -11
  97. package/es/tools/snapshot/index.js +366 -149
  98. package/es/tools/snapshot/index.js.map +1 -1
  99. package/es/tools/snapshot/utils.d.ts +35 -0
  100. package/es/tools/snapshot/utils.js +238 -0
  101. package/es/tools/snapshot/utils.js.map +1 -0
  102. package/lib/NodeResize/control/Control.d.ts +3 -3
  103. package/lib/NodeResize/control/Control.js +13 -3
  104. package/lib/NodeResize/control/Control.js.map +1 -1
  105. package/lib/NodeResize/index.d.ts +4 -0
  106. package/lib/NodeResize/index.js.map +1 -1
  107. package/lib/NodeResize/node/DiamondResize.d.ts +1 -0
  108. package/lib/NodeResize/node/DiamondResize.js +2 -1
  109. package/lib/NodeResize/node/DiamondResize.js.map +1 -1
  110. package/lib/NodeResize/node/EllipseResize.d.ts +1 -0
  111. package/lib/NodeResize/node/EllipseResize.js +2 -1
  112. package/lib/NodeResize/node/EllipseResize.js.map +1 -1
  113. package/lib/NodeResize/node/HtmlResize.js +1 -1
  114. package/lib/NodeResize/node/HtmlResize.js.map +1 -1
  115. package/lib/NodeResize/node/RectResize.js +1 -1
  116. package/lib/NodeResize/node/RectResize.js.map +1 -1
  117. package/lib/bpmn/constant.d.ts +1 -1
  118. package/lib/bpmn/constant.js +3 -0
  119. package/lib/bpmn/constant.js.map +1 -1
  120. package/lib/bpmn/index.d.ts +3 -6
  121. package/lib/bpmn/index.js +5 -7
  122. package/lib/bpmn/index.js.map +1 -1
  123. package/lib/bpmn-elements/presets/Pool/Pool.d.ts +21 -1
  124. package/lib/components/control/index.d.ts +4 -4
  125. package/lib/components/control/index.js.map +1 -1
  126. package/lib/components/highlight/index.d.ts +6 -4
  127. package/lib/components/highlight/index.js +32 -5
  128. package/lib/components/highlight/index.js.map +1 -1
  129. package/lib/components/menu/index.d.ts +1 -1
  130. package/lib/components/menu/index.js +9 -10
  131. package/lib/components/menu/index.js.map +1 -1
  132. package/lib/components/mini-map/index.d.ts +1 -1
  133. package/lib/components/mini-map/index.js +2 -2
  134. package/lib/components/mini-map/index.js.map +1 -1
  135. package/lib/components/selection-select/index.d.ts +1 -1
  136. package/lib/components/selection-select/index.js +10 -6
  137. package/lib/components/selection-select/index.js.map +1 -1
  138. package/lib/dynamic-group/index.d.ts +106 -0
  139. package/lib/dynamic-group/index.js +553 -0
  140. package/lib/dynamic-group/index.js.map +1 -0
  141. package/lib/dynamic-group/model.d.ts +135 -0
  142. package/lib/dynamic-group/model.js +416 -0
  143. package/lib/dynamic-group/model.js.map +1 -0
  144. package/lib/dynamic-group/node.d.ts +16 -0
  145. package/lib/dynamic-group/node.js +146 -0
  146. package/lib/dynamic-group/node.js.map +1 -0
  147. package/lib/dynamic-group/utils.d.ts +17 -0
  148. package/lib/dynamic-group/utils.js +32 -0
  149. package/lib/dynamic-group/utils.js.map +1 -0
  150. package/lib/index.css +63 -0
  151. package/lib/index.d.ts +16 -8
  152. package/lib/index.js +24 -8
  153. package/lib/index.js.map +1 -1
  154. package/lib/insert-node-in-polyline/index.js +2 -2
  155. package/lib/insert-node-in-polyline/index.js.map +1 -1
  156. package/lib/materials/group/GroupNode.d.ts +6 -10
  157. package/lib/materials/group/GroupNode.js +8 -6
  158. package/lib/materials/group/GroupNode.js.map +1 -1
  159. package/lib/materials/group/index.d.ts +5 -5
  160. package/lib/materials/group/index.js +24 -25
  161. package/lib/materials/group/index.js.map +1 -1
  162. package/lib/materials/node-selection/index.d.ts +6 -1
  163. package/lib/materials/node-selection/index.js +63 -55
  164. package/lib/materials/node-selection/index.js.map +1 -1
  165. package/lib/mindmap/index.d.ts +2 -2
  166. package/lib/style/index.css +63 -0
  167. package/lib/style/index.less +73 -0
  168. package/lib/style/raw.d.ts +1 -1
  169. package/lib/style/raw.js +1 -1
  170. package/lib/style/raw.js.map +1 -1
  171. package/lib/tools/flow-path/index.js +0 -1
  172. package/lib/tools/flow-path/index.js.map +1 -1
  173. package/lib/tools/label/Label.d.ts +30 -0
  174. package/lib/tools/label/Label.js +247 -0
  175. package/lib/tools/label/Label.js.map +1 -0
  176. package/lib/tools/label/LabelModel.d.ts +26 -0
  177. package/lib/tools/label/LabelModel.js +89 -0
  178. package/lib/tools/label/LabelModel.js.map +1 -0
  179. package/lib/tools/label/LabelOverlay.d.ts +28 -0
  180. package/lib/tools/label/LabelOverlay.js +167 -0
  181. package/lib/tools/label/LabelOverlay.js.map +1 -0
  182. package/lib/tools/label/algorithm.d.ts +16 -0
  183. package/lib/tools/label/algorithm.js +32 -0
  184. package/lib/tools/label/algorithm.js.map +1 -0
  185. package/lib/tools/label/index.d.ts +59 -0
  186. package/lib/tools/label/index.js +298 -0
  187. package/lib/tools/label/index.js.map +1 -0
  188. package/lib/tools/label/mediumEditor.d.ts +17 -0
  189. package/lib/tools/label/mediumEditor.js +98 -0
  190. package/lib/tools/label/mediumEditor.js.map +1 -0
  191. package/lib/tools/label/utils.d.ts +64 -0
  192. package/lib/tools/label/utils.js +349 -0
  193. package/lib/tools/label/utils.js.map +1 -0
  194. package/lib/tools/snapshot/index.d.ts +107 -11
  195. package/lib/tools/snapshot/index.js +366 -149
  196. package/lib/tools/snapshot/index.js.map +1 -1
  197. package/lib/tools/snapshot/utils.d.ts +35 -0
  198. package/lib/tools/snapshot/utils.js +247 -0
  199. package/lib/tools/snapshot/utils.js.map +1 -0
  200. package/package.json +9 -3
  201. package/rollup.config.js +1 -1
  202. package/src/NodeResize/control/Control.tsx +13 -3
  203. package/src/NodeResize/index.ts +4 -0
  204. package/src/NodeResize/node/DiamondResize.tsx +2 -1
  205. package/src/NodeResize/node/EllipseResize.tsx +2 -1
  206. package/src/NodeResize/node/HtmlResize.tsx +1 -1
  207. package/src/NodeResize/node/RectResize.tsx +1 -1
  208. package/src/bpmn/constant.ts +4 -1
  209. package/src/bpmn/index.ts +7 -4
  210. package/src/bpmn-elements-adapter/README.md +1 -3
  211. package/src/components/control/index.ts +4 -4
  212. package/src/components/highlight/index.ts +33 -6
  213. package/src/components/menu/index.ts +16 -13
  214. package/src/components/mini-map/index.ts +3 -3
  215. package/src/components/selection-select/index.ts +16 -8
  216. package/src/dynamic-group/index.ts +609 -0
  217. package/src/dynamic-group/model.ts +503 -0
  218. package/src/dynamic-group/node.ts +140 -0
  219. package/src/dynamic-group/utils.ts +33 -0
  220. package/src/index.ts +30 -8
  221. package/src/insert-node-in-polyline/index.ts +3 -3
  222. package/src/materials/group/GroupNode.ts +12 -12
  223. package/src/materials/group/index.ts +40 -40
  224. package/src/materials/node-selection/index.ts +78 -70
  225. package/src/style/index.less +73 -0
  226. package/src/style/raw.ts +64 -1
  227. package/src/tools/flow-path/index.ts +0 -1
  228. package/src/tools/label/Label.tsx +297 -0
  229. package/src/tools/label/LabelModel.ts +82 -0
  230. package/src/tools/label/LabelOverlay.tsx +159 -0
  231. package/src/tools/label/algorithm.ts +42 -0
  232. package/src/tools/label/index.ts +401 -0
  233. package/src/tools/label/mediumEditor.ts +94 -0
  234. package/src/tools/label/utils.ts +395 -0
  235. package/src/tools/snapshot/README.md +141 -5
  236. package/src/tools/snapshot/index.ts +288 -101
  237. package/src/tools/snapshot/utils.ts +163 -0
@@ -0,0 +1,298 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.Label = void 0;
18
+ var core_1 = require("@logicflow/core");
19
+ var lodash_es_1 = require("lodash-es");
20
+ var LabelOverlay_1 = __importDefault(require("./LabelOverlay"));
21
+ var utils_1 = require("./utils");
22
+ var Label = /** @class */ (function () {
23
+ function Label(_a) {
24
+ var lf = _a.lf, options = _a.options;
25
+ var _b, _c, _d;
26
+ this.labelInitPositionMap = new Map();
27
+ this.lf = lf;
28
+ // DONE: 根据 options 初始化一些插件配置,比如是否支持多个 label 等,生效在所有 label 中
29
+ this.options = options !== null && options !== void 0 ? options : {};
30
+ this.textOverflowMode = (_b = options.textOverflowMode) !== null && _b !== void 0 ? _b : 'default';
31
+ this.isMultiple = (_c = options.isMultiple) !== null && _c !== void 0 ? _c : true;
32
+ this.labelWidth = options.labelWidth;
33
+ this.maxCount = (_d = options.maxCount) !== null && _d !== void 0 ? _d : Infinity;
34
+ // DONE: 1. 启用插件时,将当前画布的 textMode 更新为 TextMode.LABEL。
35
+ // 如果将其又重新设置为 TextModel.TEXT,则需要 disable 掉 Label 工具,enable TextEditTool
36
+ lf.graphModel.editConfigModel.updateTextMode(core_1.TextMode.LABEL);
37
+ // TODO: 2. 做一些插件需要的事件监听
38
+ this.addEventListeners();
39
+ // TODO: 3. 自定义快捷键,比如 delete,选中 label 时,移除 label
40
+ // this.rewriteShortcut()
41
+ // 插件中注册 LabelOverlay 工具,用于 label 的编辑
42
+ lf.tool.registerTool(LabelOverlay_1.default.toolName, LabelOverlay_1.default);
43
+ // LabelOverlay 和 TextEditTool 互斥,所以将它 disable 掉
44
+ lf.tool.disableTool('text-edit-tool');
45
+ }
46
+ /**
47
+ * 格式化元素的 Label 配置,后续初始化 Label 用统一的数据格式
48
+ * 主要是将 _label 类型 string | LabelConfig | LabelConfig[] 统一转换为 LabelConfig[]
49
+ * @param graphModel 当前图的 model
50
+ * @param element 当前元素 model
51
+ * @return LabelConfig[]
52
+ */
53
+ Label.prototype.formatConfig = function (graphModel, element) {
54
+ var _a = graphModel.editConfigModel, nodeTextEdit = _a.nodeTextEdit, edgeTextEdit = _a.edgeTextEdit, nodeTextDraggable = _a.nodeTextDraggable, edgeTextDraggable = _a.edgeTextDraggable;
55
+ var _b = this, textOverflowMode = _b.textOverflowMode, isMultiple = _b.isMultiple, maxCount = _b.maxCount, labelWidth = _b.labelWidth;
56
+ var text = element.text, zIndex = element.zIndex, _c = element.properties, _label = _c._label, _d = _c._labelOption, _labelOption = _d === void 0 ? {} : _d;
57
+ // 当前元素的 Label 相关配置
58
+ var curLabelConfig = _label;
59
+ var _e = _labelOption, curIsMultiple = _e.isMultiple, curMaxCount = _e.maxCount;
60
+ // REMIND: 对 3 种可能得数据类型进行处理
61
+ var formatConfig = []; // 保存格式化后的 LabelConfig
62
+ if ((0, lodash_es_1.isArray)(curLabelConfig)) {
63
+ // 1. 数组的话就是 LabelConfig[] 类型
64
+ // 判断是否开启 isMultiple, 如果开启了,判断是否超过最大数量。超出就截取
65
+ var size = curMaxCount !== null && curMaxCount !== void 0 ? curMaxCount : maxCount; // 优先级,当设置 multiple 时,元素的 maxCount 优先级高于插件的 maxCount
66
+ if (isMultiple && curIsMultiple) {
67
+ if (curLabelConfig.length > size) {
68
+ formatConfig = curLabelConfig.slice(0, size);
69
+ }
70
+ else {
71
+ formatConfig = curLabelConfig;
72
+ }
73
+ }
74
+ else {
75
+ formatConfig = [curLabelConfig[0]];
76
+ }
77
+ }
78
+ else if ((0, lodash_es_1.isObject)(curLabelConfig)) {
79
+ // 2. 对象的话就是 LabelConfig 类型
80
+ formatConfig = [curLabelConfig];
81
+ }
82
+ else if (typeof curLabelConfig === 'string' || !curLabelConfig) {
83
+ // 3. 字符串或者为空的话就是 string 类型,基于 text 的数据合成 LabelConfig 信息(主要复用 text 的 x,y 信息)
84
+ var config = __assign(__assign({}, text), { content: curLabelConfig || text.value, draggable: element.BaseType === 'edge' ? edgeTextDraggable : nodeTextDraggable });
85
+ formatConfig = config.value ? [config] : [];
86
+ }
87
+ // TODO: 针对 Edge,在 edge 更新时 重新计算 Label 的位置
88
+ if (element.BaseType === 'edge') {
89
+ // 判断当前 label,是否在 edge 的路径上,如果不在,就重新计算位置
90
+ formatConfig = (0, lodash_es_1.map)(formatConfig, function (config) {
91
+ var x = config.x, y = config.y;
92
+ console.log('x, y --->>>', x, y);
93
+ return config;
94
+ });
95
+ }
96
+ // DONE: 再根据一些全局配置,比如是否支持垂直显示等,对 LabelConfig 进行二次处理
97
+ // 优先级:全局配置 > 元素配置。比如全局设置 isMultiple 为 true 时,才可以使用 局部的 isMultiple 设置才生效
98
+ // 当全局 isMultiple 为 false 时,局部的 isMultiple 不生效
99
+ return (0, lodash_es_1.map)(formatConfig, function (config) {
100
+ if (!config.id) {
101
+ config.id = (0, core_1.createUuid)();
102
+ }
103
+ var value = config.value, content = config.content, vertical = config.vertical, editable = config.editable, draggable = config.draggable, labelTextOverflowMode = config.textOverflowMode;
104
+ var textEdit = element.BaseType === 'node' ? nodeTextEdit : edgeTextEdit;
105
+ var textDraggable = element.BaseType === 'node' ? nodeTextDraggable : edgeTextDraggable;
106
+ return __assign(__assign({}, config), { zIndex: zIndex, labelWidth: labelWidth, content: content !== null && content !== void 0 ? content : value, vertical: vertical !== null && vertical !== void 0 ? vertical : false, editable: textEdit && editable, draggable: textDraggable && draggable, textOverflowMode: labelTextOverflowMode !== null && labelTextOverflowMode !== void 0 ? labelTextOverflowMode : textOverflowMode });
107
+ });
108
+ };
109
+ /**
110
+ * 根据初始化的数据,格式化 Label 的数据格式后,统一更新到元素的 properties._label 中,保证后续的渲染以这个数据格式进行
111
+ * @param graphModel
112
+ */
113
+ Label.prototype.setupLabels = function (graphModel) {
114
+ var _this = this;
115
+ // const elements = [...graphModel.nodes, ...graphModel.edges]
116
+ var elements = graphModel.sortElements;
117
+ // TODO: 1. 筛选出当前画布上,textMode 为 TextMode.LABEL 的元素(在支持元素级别的 textMode 时,需要做这个筛选)
118
+ // REMIND: 本期先只支持全局配置,所以判断全局的 textMode 即可
119
+ (0, lodash_es_1.forEach)(elements, function (element) {
120
+ // DONE: 2. 在此处做数据的转换
121
+ // 输入:NodeConfig.properties._label: string | LabelConfig | LabelConfig[]
122
+ // 输出:NodeData.properties._label: LabelData | LabelData[]
123
+ // 是否需要根据 isMultiple 控制是否返回数组或对象 or 直接全部返回数组 ❓❓❓ -> 目前直接全部返回数组
124
+ _this.rewriteInnerMethods(element);
125
+ var formatLabelConfig = _this.formatConfig(graphModel, element);
126
+ // FIX: BUG Here: 格式化后的 labelConfig 没有同步到 element 上,导致每次重新渲染时,都会重新格式化,且重新生成 id
127
+ // 但如果在此处通过 setProperty 更新元素的 _label 时,又会导致死循环
128
+ element.setProperty('_label', formatLabelConfig);
129
+ });
130
+ };
131
+ /**
132
+ * 给元素添加一个 label
133
+ * @param element
134
+ * @param position
135
+ */
136
+ Label.prototype.addLabel = function (element, position) {
137
+ var _a, _b, _c;
138
+ var _d = this, isMultiple = _d.isMultiple, maxCount = _d.maxCount;
139
+ var _e = element.properties, _label = _e._label, _labelOption = _e._labelOption;
140
+ var curLabelConfig = (_a = _label) !== null && _a !== void 0 ? _a : [];
141
+ var curLabelOption = (_b = _labelOption) !== null && _b !== void 0 ? _b : {};
142
+ var len = curLabelConfig.length;
143
+ var newLabel = {
144
+ id: (0, core_1.createUuid)(),
145
+ x: position.x,
146
+ y: position.y,
147
+ content: "Label".concat(len + 1),
148
+ value: "Label".concat(len + 1),
149
+ style: {},
150
+ draggable: true,
151
+ editable: true,
152
+ vertical: false,
153
+ };
154
+ if (!isMultiple || len >= ((_c = curLabelOption === null || curLabelOption === void 0 ? void 0 : curLabelOption.maxCount) !== null && _c !== void 0 ? _c : maxCount)) {
155
+ return;
156
+ }
157
+ curLabelConfig.push(newLabel);
158
+ element.setProperty('_label', curLabelConfig);
159
+ };
160
+ /**
161
+ * 移除元素的某个 label
162
+ * @private
163
+ */
164
+ // private removeLabel() {}
165
+ Label.prototype.addEventListeners = function () {
166
+ var _this = this;
167
+ var graphModel = this.lf.graphModel;
168
+ var eventCenter = graphModel.eventCenter, editConfigModel = graphModel.editConfigModel;
169
+ eventCenter.on('graph:rendered', function (_a) {
170
+ var graphModel = _a.graphModel;
171
+ _this.setupLabels(graphModel);
172
+ });
173
+ // 监听元素双击事件,给元素增加 Label
174
+ eventCenter.on('node:dbclick,edge:dbclick', function (_a) {
175
+ var e = _a.e, data = _a.data;
176
+ // DONE: 增加 label 的数据信息到 element model
177
+ var target = graphModel.getElement(data.id);
178
+ // DONE: 将 clientX 和 clientY 转换为画布坐标
179
+ var _b = graphModel.getPointByClient({
180
+ x: e.clientX,
181
+ y: e.clientY,
182
+ }).canvasOverlayPosition, x1 = _b.x, y1 = _b.y;
183
+ var point = {
184
+ x: x1,
185
+ y: y1,
186
+ };
187
+ if (target && editConfigModel.textMode === core_1.TextMode.LABEL) {
188
+ _this.addLabel(target, point);
189
+ }
190
+ });
191
+ // 监听 node:resize 事件,在 resize 时,重新计算 label 的位置信息
192
+ eventCenter.on('node:resize', function (_a) {
193
+ var _b, _c;
194
+ var preData = _a.preData, data = _a.data, model = _a.model;
195
+ var _d = (_b = preData.properties) !== null && _b !== void 0 ? _b : {}, preWidth = _d.width, preHeight = _d.height, _e = _d._label, _label = _e === void 0 ? [] : _e;
196
+ var _f = (_c = data.properties) !== null && _c !== void 0 ? _c : {}, curWidth = _f.width, curHeight = _f.height;
197
+ if (preWidth && preHeight && curWidth && curHeight) {
198
+ var origin_1 = {
199
+ x: preData.x,
200
+ y: preData.y,
201
+ width: preWidth,
202
+ height: preHeight,
203
+ };
204
+ var scaled_1 = {
205
+ x: data.x,
206
+ y: data.y,
207
+ width: curWidth,
208
+ height: curHeight,
209
+ };
210
+ var newLabelConfig = (0, lodash_es_1.map)(_label, function (label) {
211
+ var x = label.x, y = label.y;
212
+ var newPoint = (0, utils_1.calcPointAfterResize)(origin_1, scaled_1, { x: x, y: y });
213
+ return __assign(__assign({}, label), newPoint);
214
+ });
215
+ model.setProperty('_label', newLabelConfig);
216
+ }
217
+ });
218
+ // 监听 node:rotate 事件,在 rotate 时,重新计算 Label 的位置信息
219
+ eventCenter.on('node:rotate', function (_a) {
220
+ var model = _a.model;
221
+ var x = model.x, y = model.y, rotate = model.rotate, _b = model.properties._label, _label = _b === void 0 ? [] : _b;
222
+ var center = { x: x, y: y };
223
+ var newLabelConfig = (0, lodash_es_1.map)(_label, function (label) {
224
+ if (!label.id)
225
+ return label;
226
+ var point = { x: label.x, y: label.y };
227
+ if (_this.labelInitPositionMap.has(label.id)) {
228
+ point = _this.labelInitPositionMap.get(label.id);
229
+ }
230
+ else {
231
+ _this.labelInitPositionMap.set(label.id, point);
232
+ }
233
+ // 弧度转角度
234
+ var theta = rotate * (180 / Math.PI);
235
+ if (theta < 0)
236
+ theta += 360;
237
+ var radian = theta * (Math.PI / 180);
238
+ var newPoint = (0, utils_1.rotatePointAroundCenter)(point, center, radian);
239
+ return __assign(__assign(__assign({}, label), newPoint), { rotate: theta });
240
+ });
241
+ model.setProperty('_label', newLabelConfig);
242
+ });
243
+ };
244
+ /**
245
+ * 重写元素的一些方法,以支持 Label 的拖拽、编辑等
246
+ * @param element
247
+ */
248
+ Label.prototype.rewriteInnerMethods = function (element) {
249
+ // 重写 edgeModel/nodeModel moveText 方法,在 move text 时,以相同的逻辑移动 label
250
+ element.moveText = function (deltaX, deltaY) {
251
+ if (!element.text)
252
+ return;
253
+ var _a = element.text, x = _a.x, y = _a.y, value = _a.value, draggable = _a.draggable, editable = _a.editable;
254
+ element.text = {
255
+ value: value,
256
+ editable: editable,
257
+ draggable: draggable,
258
+ x: x + deltaX,
259
+ y: y + deltaY,
260
+ };
261
+ var properties = (0, lodash_es_1.cloneDeep)(element.getProperties());
262
+ // 重新计算新的 label 位置信息
263
+ if ((0, lodash_es_1.isArray)(properties._label)) {
264
+ var nextLabel = (0, lodash_es_1.map)(properties._label, function (label) {
265
+ return __assign(__assign({}, label), { x: label.x + deltaX, y: label.y + deltaY });
266
+ });
267
+ // console.log('Label --->>>', nextLabel)
268
+ element === null || element === void 0 ? void 0 : element.setProperty('_label', nextLabel);
269
+ }
270
+ };
271
+ // TODO: others methods ???
272
+ };
273
+ // private rewriteShortcut() {}
274
+ /**
275
+ * 更新当前渲染使用的 Text or Label 模式
276
+ */
277
+ Label.prototype.updateTextMode = function (textMode) {
278
+ var editConfigModel = this.lf.graphModel.editConfigModel;
279
+ if (textMode === editConfigModel.textMode)
280
+ return;
281
+ editConfigModel.updateTextMode(textMode);
282
+ if (textMode === core_1.TextMode.LABEL) {
283
+ this.lf.tool.enableTool(LabelOverlay_1.default.toolName);
284
+ this.lf.tool.disableTool('text-edit-tool');
285
+ }
286
+ else if (textMode === core_1.TextMode.TEXT) {
287
+ this.lf.tool.enableTool('text-edit-tool');
288
+ this.lf.tool.disableTool(LabelOverlay_1.default.toolName);
289
+ }
290
+ };
291
+ Label.prototype.render = function () { };
292
+ Label.prototype.destroy = function () { };
293
+ Label.pluginName = 'label';
294
+ return Label;
295
+ }());
296
+ exports.Label = Label;
297
+ exports.default = Label;
298
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/label/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import MediumEditor from 'medium-editor';
2
+ import 'rangy/lib/rangy-classapplier';
3
+ export declare const defaultOptions: {
4
+ toolbar: {
5
+ allowMultiParagraphSelection: boolean;
6
+ buttons: string[];
7
+ standardizeSelectionStart: boolean;
8
+ updateOnEmptySelection: boolean;
9
+ };
10
+ placeholder: {
11
+ text: string;
12
+ hideOnClick: boolean;
13
+ };
14
+ disableEditing: boolean;
15
+ };
16
+ export declare const ColorPickerButton: any;
17
+ export { MediumEditor };
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MediumEditor = exports.ColorPickerButton = exports.defaultOptions = void 0;
7
+ var medium_editor_1 = __importDefault(require("medium-editor"));
8
+ exports.MediumEditor = medium_editor_1.default;
9
+ var vanilla_picker_1 = __importDefault(require("vanilla-picker"));
10
+ var rangy_1 = __importDefault(require("rangy"));
11
+ require("rangy/lib/rangy-classapplier");
12
+ exports.defaultOptions = {
13
+ toolbar: {
14
+ allowMultiParagraphSelection: true,
15
+ buttons: [
16
+ 'bold',
17
+ 'colorpicker',
18
+ 'italic',
19
+ 'underline',
20
+ 'strikethrough',
21
+ 'quote',
22
+ 'justifyLeft',
23
+ 'justifyCenter',
24
+ 'justifyRight',
25
+ 'justifyFull',
26
+ 'superscript',
27
+ 'subscript',
28
+ 'orderedlist',
29
+ 'unorderedlist',
30
+ 'pre',
31
+ 'removeFormat',
32
+ 'outdent',
33
+ 'indent',
34
+ 'h2',
35
+ 'h3',
36
+ ],
37
+ standardizeSelectionStart: false,
38
+ updateOnEmptySelection: false,
39
+ },
40
+ placeholder: {
41
+ text: '请输入内容',
42
+ hideOnClick: true,
43
+ },
44
+ disableEditing: true,
45
+ };
46
+ exports.ColorPickerButton = medium_editor_1.default.extensions.button.extend({
47
+ name: 'colorpicker',
48
+ tagNames: ['mark'],
49
+ contentDefault: '<b>Color</b>',
50
+ aria: 'Color Picker',
51
+ action: 'colorPicker',
52
+ init: function () {
53
+ var _this = this;
54
+ rangy_1.default.init();
55
+ medium_editor_1.default.extensions.button.prototype.init.call(this);
56
+ this.colorPicker = new vanilla_picker_1.default({
57
+ parent: this.button,
58
+ color: '#000',
59
+ onDone: function (res) {
60
+ if (_this.coloredText && _this.coloredText.isAppliedToSelection()) {
61
+ _this.coloredText.undoToSelection();
62
+ }
63
+ _this.coloredText = rangy_1.default.createClassApplier('colored', {
64
+ elementTagName: 'span',
65
+ elementProperties: {
66
+ style: {
67
+ color: res.hex,
68
+ },
69
+ },
70
+ normalize: true,
71
+ });
72
+ _this.coloredText.toggleSelection();
73
+ _this.base.checkContentChanged();
74
+ _this.setInactive();
75
+ },
76
+ });
77
+ },
78
+ getButton: function () {
79
+ return this.button;
80
+ },
81
+ handleClick: function () {
82
+ this.setActive();
83
+ this.colorPicker.show();
84
+ },
85
+ isAlreadyApplied: function (node) {
86
+ return node.nodeName.toLowerCase() === 'mark';
87
+ },
88
+ isActive: function () {
89
+ return this.button.classList.contains('medium-editor-button-active');
90
+ },
91
+ setInactive: function () {
92
+ this.button.classList.remove('medium-editor-button-active');
93
+ },
94
+ setActive: function () {
95
+ this.button.classList.add('medium-editor-button-active');
96
+ },
97
+ });
98
+ //# sourceMappingURL=mediumEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mediumEditor.js","sourceRoot":"","sources":["../../../src/tools/label/mediumEditor.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAwC;AA6F/B,uBA7FF,uBAAY,CA6FE;AA5FrB,kEAAmC;AACnC,gDAAyB;AACzB,wCAAqC;AAExB,QAAA,cAAc,GAAG;IAC5B,OAAO,EAAE;QACP,4BAA4B,EAAE,IAAI;QAClC,OAAO,EAAE;YACP,MAAM;YACN,aAAa;YACb,QAAQ;YACR,WAAW;YACX,eAAe;YACf,OAAO;YACP,aAAa;YACb,eAAe;YACf,cAAc;YACd,aAAa;YACb,aAAa;YACb,WAAW;YACX,aAAa;YACb,eAAe;YACf,KAAK;YACL,cAAc;YACd,SAAS;YACT,QAAQ;YACR,IAAI;YACJ,IAAI;SACL;QACD,yBAAyB,EAAE,KAAK;QAChC,sBAAsB,EAAE,KAAK;KAC9B;IAED,WAAW,EAAE;QACX,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,IAAI;KAClB;IACD,cAAc,EAAE,IAAI;CACrB,CAAA;AAEY,QAAA,iBAAiB,GAAG,uBAAY,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;IACrE,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,cAAc,EAAE,cAAc;IAC9B,IAAI,EAAE,cAAc;IACpB,MAAM,EAAE,aAAa;IACrB,IAAI,EAAE;QAAA,iBAwBL;QAvBC,eAAK,CAAC,IAAI,EAAE,CAAA;QACZ,uBAAY,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxD,IAAI,CAAC,WAAW,GAAG,IAAI,wBAAM,CAAC;YAC5B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,UAAC,GAAG;gBACV,IAAI,KAAI,CAAC,WAAW,IAAI,KAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,EAAE,CAAC;oBAChE,KAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAA;gBACpC,CAAC;gBACD,KAAI,CAAC,WAAW,GAAG,eAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE;oBACrD,cAAc,EAAE,MAAM;oBACtB,iBAAiB,EAAE;wBACjB,KAAK,EAAE;4BACL,KAAK,EAAE,GAAG,CAAC,GAAG;yBACf;qBACF;oBACD,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAA;gBACF,KAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAA;gBAClC,KAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAA;gBAC/B,KAAI,CAAC,WAAW,EAAE,CAAA;YACpB,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;IACD,SAAS,EAAE;QACT,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IACD,WAAW,EAAE;QACX,IAAI,CAAC,SAAS,EAAE,CAAA;QAChB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;IACzB,CAAC;IACD,gBAAgB,EAAE,UAAU,IAAI;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,MAAM,CAAA;IAC/C,CAAC;IACD,QAAQ,EAAE;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAA;IACtE,CAAC;IACD,WAAW,EAAE;QACX,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAA;IAC7D,CAAC;IACD,SAAS,EAAE;QACT,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;IAC1D,CAAC;CACF,CAAC,CAAA"}
@@ -0,0 +1,64 @@
1
+ import LogicFlow, { BaseEdgeModel, BaseNodeModel, BezierEdgeModel } from '@logicflow/core';
2
+ import Point = LogicFlow.Point;
3
+ import LabelConfig = LogicFlow.LabelConfig;
4
+ export type BBoxInfo = {
5
+ x: number;
6
+ y: number;
7
+ width: number;
8
+ height: number;
9
+ };
10
+ export declare function calcPointAfterResize(origin: BBoxInfo, scaled: BBoxInfo, point: Point): Point;
11
+ export declare function rotatePointAroundCenter(target: Point, center: Point, radian: number): Point;
12
+ /** Edge 相关工具方法 */
13
+ /**
14
+ * 获取某点在一个矩形图形(节点 or 边的 outline)内的偏移量
15
+ * @param point 目标点(此处即 Label 的坐标信息)
16
+ * @param element 目标元素
17
+ */
18
+ export declare const getPointOffsetOfElementOutline: (point: Point, element: BaseNodeModel | BaseEdgeModel) => {
19
+ xDeltaPercent: number;
20
+ yDeltaPercent: number;
21
+ xDeltaDistance: number;
22
+ yDeltaDistance: number;
23
+ } | undefined;
24
+ /**
25
+ * 给定一个点 P = (x_0, y_0) 和线段的两个端点 A = (x_1, y_1) 和 B = (x_2, y_2) ,可以使用以下步骤计算点到线段的距离:
26
+ * 1. 计算向量 AB 和 AP 。
27
+ * 2. 计算 AB 的平方长度。
28
+ * 3. 计算点 P 在直线 AB 上的投影点 Q 。
29
+ * 4. 判断 Q 是否在线段 AB 上。
30
+ * 5. 根据 Q 是否在线段上,计算点到线段的距离。
31
+ *
32
+ * 计算点到线段质检的距离
33
+ * @param point
34
+ * @param start
35
+ * @param end
36
+ */
37
+ export declare const pointToSegmentDistance: (point: Point, start: Point, end: Point) => number;
38
+ export declare const calcPolylineTotalLength: (points: Point[]) => number;
39
+ /**
40
+ * TODO: 确认该函数的意义,写完还是没看懂什么意思
41
+ * @param point
42
+ * @param points
43
+ */
44
+ export declare const pointPositionRatio: (point: Point, points: Point[]) => number;
45
+ /**
46
+ * 计算一个坐标在贝塞尔曲线上最近的一个点
47
+ * @param point
48
+ * @param edge
49
+ * @param step
50
+ */
51
+ export declare const calcClosestPointOnBezierEdge: (point: Point, edge: BezierEdgeModel, step?: number) => Point;
52
+ export declare const getNewPointAtDistance: (points: Point[], ratio: number) => Point | undefined;
53
+ /**
54
+ * 计算一个坐标离折线(包括 PolylineEdge 和 LineEdge 直线)最近的一个点
55
+ * @param point
56
+ * @param edge
57
+ */
58
+ export declare const calcLabelPositionOnPolyline: (point: Point, edge: BaseEdgeModel) => Point;
59
+ /**
60
+ * 计算 Label 离边最近的点的坐标,用于更新为 Label 的坐标
61
+ * @param label LabelConfig -> 当前 Label 的配置项
62
+ * @param edge
63
+ */
64
+ export declare const getLabelPositionOfLine: (label: LabelConfig, edge: BaseEdgeModel) => Point;