@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,35 @@
1
+ /**
2
+ * 当获取图片失败时会返回失败信息,是 text/plain 类型的数据
3
+ * @param str - 图片内容
4
+ * @returns
5
+ */
6
+ export declare function isTextPlainBase64(str: string): boolean;
7
+ /**
8
+ * 将网络图片转为 base64
9
+ * @param url - 图片地址
10
+ * @returns
11
+ */
12
+ export declare function convertImageToBase64(url: string): Promise<string>;
13
+ /**
14
+ * 使用 base64 的图片替换 img 标签的 src 或 image 标签的 href
15
+ * @param node - html 节点或 svg 节点
16
+ */
17
+ export declare function updateImageSrcOrHrefWithBase64Image(node: HTMLImageElement | SVGImageElement, attrName: 'src' | 'href'): Promise<void>;
18
+ /**
19
+ * 使用 base64 的图片替换背景图片
20
+ * @param node - html 节点
21
+ * @param styleAttr - 样式属性名称
22
+ */
23
+ export declare function updateBackgroundImageWithBase64Image(node: HTMLElement, url: string): Promise<void>;
24
+ /**
25
+ * 更新图片数据
26
+ * @param node - 节点
27
+ */
28
+ export declare function updateImageSource(node: HTMLElement | SVGElement): Promise<void>;
29
+ /**
30
+ * 重新复制canvas 用于在不裁剪原canvas的基础上通过拉伸方式达到自定义宽高目的
31
+ * @param originCanvas HTMLCanvasElement
32
+ * @param targetWidth number
33
+ * @param targetHeight number
34
+ */
35
+ export declare function copyCanvas(originCanvas: HTMLCanvasElement, targetWidth: number, targetHeight: number): HTMLCanvasElement;
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __read = (this && this.__read) || function (o, n) {
39
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
40
+ if (!m) return o;
41
+ var i = m.call(o), r, ar = [], e;
42
+ try {
43
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
44
+ }
45
+ catch (error) { e = { error: error }; }
46
+ finally {
47
+ try {
48
+ if (r && !r.done && (m = i["return"])) m.call(i);
49
+ }
50
+ finally { if (e) throw e.error; }
51
+ }
52
+ return ar;
53
+ };
54
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
55
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
56
+ if (ar || !(i in from)) {
57
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
58
+ ar[i] = from[i];
59
+ }
60
+ }
61
+ return to.concat(ar || Array.prototype.slice.call(from));
62
+ };
63
+ Object.defineProperty(exports, "__esModule", { value: true });
64
+ exports.copyCanvas = exports.updateImageSource = exports.updateBackgroundImageWithBase64Image = exports.updateImageSrcOrHrefWithBase64Image = exports.convertImageToBase64 = exports.isTextPlainBase64 = void 0;
65
+ /**
66
+ * 图片缓存, 已请求过的图片直接从缓存中获取
67
+ */
68
+ var imageCache = {};
69
+ /**
70
+ * 当获取图片失败时会返回失败信息,是 text/plain 类型的数据
71
+ * @param str - 图片内容
72
+ * @returns
73
+ */
74
+ function isTextPlainBase64(str) {
75
+ return str.startsWith('data:text/plain');
76
+ }
77
+ exports.isTextPlainBase64 = isTextPlainBase64;
78
+ /**
79
+ * 将网络图片转为 base64
80
+ * @param url - 图片地址
81
+ * @returns
82
+ */
83
+ function convertImageToBase64(url) {
84
+ return __awaiter(this, void 0, void 0, function () {
85
+ return __generator(this, function (_a) {
86
+ if (imageCache[url]) {
87
+ return [2 /*return*/, imageCache[url]];
88
+ }
89
+ return [2 /*return*/, new Promise(function (resolve, reject) {
90
+ try {
91
+ fetch(url)
92
+ .then(function (response) { return response.blob(); })
93
+ .then(function (blob) {
94
+ var reader = new FileReader();
95
+ reader.onloadend = function () {
96
+ resolve((imageCache[url] = reader.result));
97
+ };
98
+ reader.onerror = reject;
99
+ reader.readAsDataURL(blob);
100
+ })
101
+ .catch(function () {
102
+ resolve((imageCache[url] = url));
103
+ });
104
+ }
105
+ catch (error) {
106
+ // 如果转换失败,后续大概率仍然会失败,因此直接缓存
107
+ return (imageCache[url] = url);
108
+ }
109
+ })];
110
+ });
111
+ });
112
+ }
113
+ exports.convertImageToBase64 = convertImageToBase64;
114
+ /**
115
+ * 使用 base64 的图片替换 img 标签的 src 或 image 标签的 href
116
+ * @param node - html 节点或 svg 节点
117
+ */
118
+ function updateImageSrcOrHrefWithBase64Image(node, attrName) {
119
+ return __awaiter(this, void 0, void 0, function () {
120
+ var url, base64Image, error_1;
121
+ return __generator(this, function (_a) {
122
+ switch (_a.label) {
123
+ case 0:
124
+ _a.trys.push([0, 2, , 3]);
125
+ url = node.getAttribute(attrName) || '';
126
+ // 已经是 base64 图片,不需要处理
127
+ if (url.startsWith('data:')) {
128
+ return [2 /*return*/];
129
+ }
130
+ return [4 /*yield*/, convertImageToBase64(url)];
131
+ case 1:
132
+ base64Image = _a.sent();
133
+ if (isTextPlainBase64(base64Image)) {
134
+ return [2 /*return*/];
135
+ }
136
+ node.setAttribute(attrName, base64Image);
137
+ return [3 /*break*/, 3];
138
+ case 2:
139
+ error_1 = _a.sent();
140
+ console.error(error_1);
141
+ return [3 /*break*/, 3];
142
+ case 3: return [2 /*return*/];
143
+ }
144
+ });
145
+ });
146
+ }
147
+ exports.updateImageSrcOrHrefWithBase64Image = updateImageSrcOrHrefWithBase64Image;
148
+ /**
149
+ * 使用 base64 的图片替换背景图片
150
+ * @param node - html 节点
151
+ * @param styleAttr - 样式属性名称
152
+ */
153
+ function updateBackgroundImageWithBase64Image(node, url) {
154
+ return __awaiter(this, void 0, void 0, function () {
155
+ var base64Image, error_2;
156
+ return __generator(this, function (_a) {
157
+ switch (_a.label) {
158
+ case 0:
159
+ _a.trys.push([0, 2, , 3]);
160
+ // 已经是 base64 图片,不需要处理
161
+ if (url.startsWith('data:')) {
162
+ return [2 /*return*/];
163
+ }
164
+ return [4 /*yield*/, convertImageToBase64(url)];
165
+ case 1:
166
+ base64Image = _a.sent();
167
+ if (isTextPlainBase64(base64Image)) {
168
+ return [2 /*return*/];
169
+ }
170
+ node.style.backgroundImage = "url(".concat(base64Image, ")");
171
+ return [3 /*break*/, 3];
172
+ case 2:
173
+ error_2 = _a.sent();
174
+ console.error(error_2);
175
+ return [3 /*break*/, 3];
176
+ case 3: return [2 /*return*/];
177
+ }
178
+ });
179
+ });
180
+ }
181
+ exports.updateBackgroundImageWithBase64Image = updateBackgroundImageWithBase64Image;
182
+ /**
183
+ * 更新图片数据
184
+ * @param node - 节点
185
+ */
186
+ function updateImageSource(node) {
187
+ return __awaiter(this, void 0, void 0, function () {
188
+ var nodes, nodePtr, promises, _a, background, backgroundImage, backgroundUrlMatch, imageUrl, backgroundImageUrlMatch, imageUrl;
189
+ return __generator(this, function (_b) {
190
+ switch (_b.label) {
191
+ case 0:
192
+ nodes = [node];
193
+ promises = [];
194
+ while (nodes.length) {
195
+ nodePtr = nodes.shift();
196
+ if (nodePtr.children.length) {
197
+ nodes.push.apply(nodes, __spreadArray([], __read(nodePtr.children), false));
198
+ }
199
+ if (nodePtr instanceof HTMLElement) {
200
+ _a = nodePtr.style, background = _a.background, backgroundImage = _a.backgroundImage;
201
+ backgroundUrlMatch = background.match(/url\(["']?(.*?)["']?\)/);
202
+ if (backgroundUrlMatch && backgroundUrlMatch[1]) {
203
+ imageUrl = backgroundUrlMatch[1];
204
+ promises.push(updateBackgroundImageWithBase64Image(nodePtr, imageUrl));
205
+ }
206
+ backgroundImageUrlMatch = backgroundImage.match(/url\(["']?(.*?)["']?\)/);
207
+ if (backgroundImageUrlMatch && backgroundImageUrlMatch[1]) {
208
+ imageUrl = backgroundImageUrlMatch[1];
209
+ promises.push(updateBackgroundImageWithBase64Image(nodePtr, imageUrl));
210
+ }
211
+ }
212
+ // 如果有 img 和 image 标签,尝试将 src 和 href 替换为 base64 图片
213
+ if (nodePtr instanceof HTMLImageElement) {
214
+ promises.push(updateImageSrcOrHrefWithBase64Image(nodePtr, 'src'));
215
+ }
216
+ else if (nodePtr instanceof SVGImageElement) {
217
+ promises.push(updateImageSrcOrHrefWithBase64Image(nodePtr, 'href'));
218
+ }
219
+ }
220
+ return [4 /*yield*/, Promise.all(promises)];
221
+ case 1:
222
+ _b.sent();
223
+ return [2 /*return*/];
224
+ }
225
+ });
226
+ });
227
+ }
228
+ exports.updateImageSource = updateImageSource;
229
+ /**
230
+ * 重新复制canvas 用于在不裁剪原canvas的基础上通过拉伸方式达到自定义宽高目的
231
+ * @param originCanvas HTMLCanvasElement
232
+ * @param targetWidth number
233
+ * @param targetHeight number
234
+ */
235
+ function copyCanvas(originCanvas, targetWidth, targetHeight) {
236
+ var newCanvas = document.createElement('canvas');
237
+ newCanvas.width = targetWidth;
238
+ newCanvas.height = targetHeight;
239
+ var newCtx = newCanvas.getContext('2d');
240
+ if (newCtx) {
241
+ // 注意: 自定义宽高时,可能会拉伸图形,这时候padding也会被拉伸导致不准确
242
+ newCtx.drawImage(originCanvas, 0, 0, originCanvas.width, originCanvas.height, 0, 0, targetWidth, targetHeight);
243
+ }
244
+ return newCanvas;
245
+ }
246
+ exports.copyCanvas = copyCanvas;
247
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/tools/snapshot/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@logicflow/extension",
3
- "version": "2.0.0-beta.1",
3
+ "version": "2.0.0-beta.11",
4
4
  "description": "LogicFlow Extensions",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -20,12 +20,18 @@
20
20
  "author": "Logicflow-Team",
21
21
  "license": "Apache-2.0",
22
22
  "peerDependencies": {
23
- "@logicflow/core": "2.0.0-beta.1"
23
+ "@logicflow/core": "2.0.0-beta.11"
24
24
  },
25
25
  "dependencies": {
26
26
  "@antv/hierarchy": "^0.6.11",
27
+ "classnames": "^2.3.2",
28
+ "lodash-es": "^4.17.21",
29
+ "medium-editor": "^5.23.3",
30
+ "mobx": "^5.15.7",
27
31
  "preact": "^10.17.1",
28
- "@logicflow/core": "2.0.0-beta.1"
32
+ "rangy": "^1.3.1",
33
+ "vanilla-picker": "^2.12.3",
34
+ "@logicflow/core": "2.0.0-beta.11"
29
35
  },
30
36
  "scripts": {
31
37
  "clean:turbo": "rss",
package/rollup.config.js CHANGED
@@ -1,3 +1,3 @@
1
1
  import { rollupConfig } from '../../rollup.config'
2
2
 
3
- export default rollupConfig()
3
+ export default rollupConfig({})
@@ -307,6 +307,8 @@ class Control extends Component<IControlProps, IControlState> {
307
307
  // 更新边
308
308
  this.updateEdgePointByAnchors()
309
309
  this.eventEmit({
310
+ deltaX,
311
+ deltaY,
310
312
  beforeNode,
311
313
  afterNode,
312
314
  })
@@ -373,6 +375,8 @@ class Control extends Component<IControlProps, IControlState> {
373
375
  // 更新边
374
376
  this.updateEdgePointByAnchors()
375
377
  this.eventEmit({
378
+ deltaX,
379
+ deltaY,
376
380
  beforeNode: {
377
381
  ...beforeNode,
378
382
  rx,
@@ -444,11 +448,13 @@ class Control extends Component<IControlProps, IControlState> {
444
448
  // 更新边
445
449
  this.updateEdgePointByAnchors()
446
450
  this.eventEmit({
451
+ deltaX,
452
+ deltaY,
447
453
  beforeNode,
448
454
  afterNode,
449
455
  })
450
456
  }
451
- eventEmit = ({ beforeNode, afterNode }: any) => {
457
+ eventEmit = ({ deltaX, deltaY, beforeNode, afterNode }: any) => {
452
458
  const { id, modelType, type } = this.nodeModel
453
459
  const oldNodeSize = {
454
460
  id,
@@ -463,8 +469,12 @@ class Control extends Component<IControlProps, IControlState> {
463
469
  ...afterNode,
464
470
  }
465
471
  this.graphModel.eventCenter.emit('node:resize', {
466
- oldNodeSize,
467
- newNodeSize,
472
+ preData: oldNodeSize,
473
+ data: newNodeSize,
474
+ deltaX,
475
+ deltaY,
476
+ index: this.index,
477
+ model: this.nodeModel,
468
478
  })
469
479
  }
470
480
  onDragging = ({ deltaX, deltaY }: VectorData) => {
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @deprecated
3
+ * 待废弃,2.0 版本将 NodeResize 能力内置,该插件设计和实现有比较多的问题,后续不再维护,请及时切换
4
+ */
1
5
  import LogicFlow from '@logicflow/core'
2
6
 
3
7
  import EllipseResize from './node/EllipseResize'
@@ -58,7 +58,8 @@ export class DiamondResizeModel extends DiamondNodeModel {
58
58
 
59
59
  getResizeOutlineStyle() {
60
60
  return {
61
- stroke: '#000000',
61
+ fill: 'none',
62
+ stroke: 'transparent',
62
63
  strokeWidth: 1,
63
64
  strokeDasharray: '3,3',
64
65
  }
@@ -56,7 +56,8 @@ export class EllipseResizeModel extends EllipseNodeModel {
56
56
 
57
57
  getResizeOutlineStyle() {
58
58
  return {
59
- stroke: '#000000',
59
+ fill: 'none',
60
+ stroke: 'transparent',
60
61
  strokeWidth: 1,
61
62
  strokeDasharray: '3,3',
62
63
  }
@@ -41,7 +41,7 @@ export class HtmlResizeModel extends HtmlNodeModel {
41
41
 
42
42
  getResizeOutlineStyle() {
43
43
  return {
44
- fill: 'transparent',
44
+ fill: 'none',
45
45
  stroke: 'transparent',
46
46
  strokeWidth: 1,
47
47
  strokeDasharray: '3,3',
@@ -62,7 +62,7 @@ export class RectResizeModel extends RectNodeModel {
62
62
 
63
63
  getResizeOutlineStyle() {
64
64
  return {
65
- fill: 'transparent',
65
+ fill: 'none',
66
66
  stroke: 'transparent', // 矩形默认不显示调整边框
67
67
  strokeWidth: 1,
68
68
  strokeDasharray: '3,3',
@@ -25,7 +25,7 @@ export const UserTaskConfig = {
25
25
  height: 80,
26
26
  }
27
27
 
28
- export const theme: LogicFlow.CommonTheme = {
28
+ export const theme: Partial<LogicFlow.Theme> = {
29
29
  rect: {
30
30
  radius: 5,
31
31
  stroke: 'rgb(24, 125, 255)',
@@ -43,6 +43,9 @@ export const theme: LogicFlow.CommonTheme = {
43
43
  selectedStroke: 'rgb(24, 125, 255)',
44
44
  },
45
45
  edgeText: {
46
+ textWidth: 100,
47
+ overflowMode: 'default',
48
+ fontSize: 12,
46
49
  background: {
47
50
  fill: 'white',
48
51
  height: 14,
package/src/bpmn/index.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import LogicFlow from '@logicflow/core'
1
2
  import { theme } from './constant'
2
3
  import {
3
4
  StartEvent,
@@ -22,10 +23,12 @@ import {
22
23
  ServiceTaskModel,
23
24
  } from './tasks'
24
25
 
25
- class BpmnElement {
26
- static pluginName = 'bpmnElement'
26
+ import ExtensionDefinition = LogicFlow.ExtensionDefinition
27
27
 
28
- constructor({ lf }) {
28
+ const BpmnElement: ExtensionDefinition = {
29
+ pluginName: 'bpmnElement',
30
+
31
+ install(lf) {
29
32
  lf.setTheme(theme)
30
33
  lf.register(StartEvent)
31
34
  lf.register(EndEvent)
@@ -37,7 +40,7 @@ class BpmnElement {
37
40
  lf.register(SequenceFlow)
38
41
  lf.setDefaultEdgeType('bpmn:sequenceFlow')
39
42
  }
40
- }
43
+ },
41
44
  }
42
45
 
43
46
  export {
@@ -290,6 +290,4 @@ const mergeInNOutObject = (target: any, source: any): TransformerType => {
290
290
  });
291
291
  return target;
292
292
  };
293
- ```
294
-
295
- 进行合并
293
+ ```
@@ -5,9 +5,9 @@ type ControlItem = {
5
5
  iconClass: string
6
6
  title: string
7
7
  text: string
8
- onClick?: (lf: LogicFlow) => void
9
- onMouseEnter?: (lf: LogicFlow) => void
10
- onMouseLeave?: (lf: LogicFlow) => void
8
+ onClick?: (lf: LogicFlow, e: MouseEvent) => void
9
+ onMouseEnter?: (lf: LogicFlow, e: MouseEvent) => void
10
+ onMouseLeave?: (lf: LogicFlow, e: MouseEvent) => void
11
11
  }
12
12
 
13
13
  export class Control {
@@ -64,7 +64,7 @@ export class Control {
64
64
  private domContainer?: HTMLElement
65
65
  private toolEl?: HTMLElement
66
66
 
67
- constructor({ lf }: LogicFlow.ExtensionProps) {
67
+ constructor({ lf }: LogicFlow.IExtensionProps) {
68
68
  this.lf = lf
69
69
  }
70
70
 
@@ -1,4 +1,5 @@
1
1
  import LogicFlow, { BaseNodeModel } from '@logicflow/core'
2
+ import { concat } from 'lodash-es'
2
3
 
3
4
  // 后续并入FlowPath
4
5
  const getPath = (id: string, lf: LogicFlow) => {
@@ -80,25 +81,28 @@ const getNodePath = (node, lf: LogicFlow) => {
80
81
  return [...new Set([...incomingPaths.flat(), ...outgoingPaths.flat()])]
81
82
  }
82
83
 
83
- type IMode = 'single' | 'path'
84
+ type IMode = 'single' | 'path' | 'neighbour'
84
85
 
85
86
  export class Highlight {
86
87
  lf: LogicFlow
87
88
  static pluginName = 'highlight'
88
89
  mode: IMode = 'path'
89
- manual = false
90
+ enable = true
90
91
  tempStyles = {}
91
92
 
92
- constructor({ lf }) {
93
+ constructor({ lf, options }) {
94
+ const { mode = 'path', enable = true } = options
93
95
  this.lf = lf
96
+ this.mode = mode
97
+ this.enable = enable
94
98
  }
95
99
 
96
100
  setMode(mode: IMode) {
97
101
  this.mode = mode
98
102
  }
99
103
 
100
- setManual(manual: boolean) {
101
- this.manual = manual
104
+ setEnable(enable: boolean) {
105
+ this.enable = enable
102
106
  }
103
107
 
104
108
  private highlightSingle(id: string) {
@@ -115,6 +119,28 @@ export class Highlight {
115
119
  }
116
120
  }
117
121
 
122
+ private highlightNeighbours(id: string) {
123
+ const model = this.lf.getModelById(id)
124
+
125
+ if (model?.BaseType === 'node') {
126
+ // 高亮节点
127
+ model.updateStyles(this.tempStyles[id])
128
+ const { nodes: incomingNodes, edges: incomingEdges } = model.incoming
129
+ const { nodes: outgoingNodes, edges: outgoingEdges } = model.outgoing
130
+ concat(incomingNodes, outgoingNodes).forEach((node) => {
131
+ node.updateStyles(this.tempStyles[node.id])
132
+ })
133
+ concat(incomingEdges, outgoingEdges).forEach((edge) => {
134
+ edge.updateStyles(this.tempStyles[edge.id])
135
+ })
136
+ } else if (model?.BaseType === 'edge') {
137
+ // 高亮边及对应的节点
138
+ model.updateStyles(this.tempStyles[id])
139
+ model.sourceNode.updateStyles(this.tempStyles[model.sourceNode.id])
140
+ model.targetNode.updateStyles(this.tempStyles[model.targetNode.id])
141
+ }
142
+ }
143
+
118
144
  private highlightPath(id: string) {
119
145
  const path = getPath(id, this.lf)
120
146
  path.forEach((_id) => {
@@ -124,7 +150,7 @@ export class Highlight {
124
150
  }
125
151
 
126
152
  highlight(id: string, mode: IMode = this.mode) {
127
- if (this.manual) return
153
+ if (!this.enable) return
128
154
  if (Object.keys(this.tempStyles).length) {
129
155
  this.restoreHighlight()
130
156
  }
@@ -141,6 +167,7 @@ export class Highlight {
141
167
 
142
168
  const modeTrigger = {
143
169
  single: this.highlightSingle.bind(this),
170
+ neighbour: this.highlightNeighbours.bind(this),
144
171
  path: this.highlightPath.bind(this),
145
172
  }
146
173