@logicflow/extension 1.2.9 → 1.2.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 (141) hide show
  1. package/CHANGELOG.md +1727 -0
  2. package/cjs/NodeResize/Control/Control.js +35 -49
  3. package/cjs/bpmn/getBpmnId.js +25 -2
  4. package/cjs/bpmn-elements/index.js +102 -0
  5. package/cjs/bpmn-elements/presets/Event/EndEventFactory.js +134 -0
  6. package/cjs/bpmn-elements/presets/Event/IntermediateCatchEvent.js +118 -0
  7. package/cjs/bpmn-elements/presets/Event/IntermediateThrowEvent.js +119 -0
  8. package/cjs/bpmn-elements/presets/Event/StartEventFactory.js +133 -0
  9. package/cjs/bpmn-elements/presets/Event/boundaryEventFactory.js +125 -0
  10. package/cjs/bpmn-elements/presets/Event/index.js +16 -0
  11. package/cjs/bpmn-elements/presets/Flow/index.js +9 -0
  12. package/cjs/bpmn-elements/presets/Flow/sequenceFlow.js +78 -0
  13. package/cjs/bpmn-elements/presets/Gateway/gateway.js +109 -0
  14. package/cjs/bpmn-elements/presets/Gateway/index.js +14 -0
  15. package/cjs/bpmn-elements/presets/Task/index.js +134 -0
  16. package/cjs/bpmn-elements/presets/Task/subProcess.js +190 -0
  17. package/cjs/bpmn-elements/presets/Task/task.js +190 -0
  18. package/cjs/bpmn-elements/presets/icons.js +116 -0
  19. package/cjs/bpmn-elements/utils.js +45 -0
  20. package/cjs/bpmn-elements-adapter/constant.js +69 -0
  21. package/cjs/bpmn-elements-adapter/index.js +1066 -0
  22. package/cjs/bpmn-elements-adapter/json2xml.js +91 -0
  23. package/cjs/bpmn-elements-adapter/xml2json.js +554 -0
  24. package/cjs/components/control/index.js +1 -1
  25. package/cjs/components/menu/index.js +76 -7
  26. package/cjs/index.js +3 -1
  27. package/cjs/materials/group/index.js +16 -7
  28. package/cjs/tools/snapshot/index.js +14 -0
  29. package/es/NodeResize/Control/Control.d.ts +1 -0
  30. package/es/NodeResize/Control/Control.js +36 -50
  31. package/es/bpmn/getBpmnId.js +25 -2
  32. package/es/bpmn-elements/index.d.ts +16 -0
  33. package/es/bpmn-elements/index.js +88 -0
  34. package/es/bpmn-elements/presets/Event/EndEventFactory.d.ts +5 -0
  35. package/es/bpmn-elements/presets/Event/EndEventFactory.js +130 -0
  36. package/es/bpmn-elements/presets/Event/IntermediateCatchEvent.d.ts +5 -0
  37. package/es/bpmn-elements/presets/Event/IntermediateCatchEvent.js +114 -0
  38. package/es/bpmn-elements/presets/Event/IntermediateThrowEvent.d.ts +5 -0
  39. package/es/bpmn-elements/presets/Event/IntermediateThrowEvent.js +115 -0
  40. package/es/bpmn-elements/presets/Event/StartEventFactory.d.ts +5 -0
  41. package/es/bpmn-elements/presets/Event/StartEventFactory.js +129 -0
  42. package/es/bpmn-elements/presets/Event/boundaryEventFactory.d.ts +5 -0
  43. package/es/bpmn-elements/presets/Event/boundaryEventFactory.js +121 -0
  44. package/es/bpmn-elements/presets/Event/index.d.ts +2 -0
  45. package/es/bpmn-elements/presets/Event/index.js +12 -0
  46. package/es/bpmn-elements/presets/Flow/index.d.ts +7 -0
  47. package/es/bpmn-elements/presets/Flow/index.js +5 -0
  48. package/es/bpmn-elements/presets/Flow/sequenceFlow.d.ts +5 -0
  49. package/es/bpmn-elements/presets/Flow/sequenceFlow.js +74 -0
  50. package/es/bpmn-elements/presets/Gateway/gateway.d.ts +17 -0
  51. package/es/bpmn-elements/presets/Gateway/gateway.js +105 -0
  52. package/es/bpmn-elements/presets/Gateway/index.d.ts +2 -0
  53. package/es/bpmn-elements/presets/Gateway/index.js +10 -0
  54. package/es/bpmn-elements/presets/Task/index.d.ts +2 -0
  55. package/es/bpmn-elements/presets/Task/index.js +130 -0
  56. package/es/bpmn-elements/presets/Task/subProcess.d.ts +5 -0
  57. package/es/bpmn-elements/presets/Task/subProcess.js +186 -0
  58. package/es/bpmn-elements/presets/Task/task.d.ts +12 -0
  59. package/es/bpmn-elements/presets/Task/task.js +186 -0
  60. package/es/bpmn-elements/presets/icons.d.ts +25 -0
  61. package/es/bpmn-elements/presets/icons.js +113 -0
  62. package/es/bpmn-elements/utils.d.ts +2 -0
  63. package/es/bpmn-elements/utils.js +40 -0
  64. package/{types/bpmn → es/bpmn-elements-adapter}/constant.d.ts +20 -0
  65. package/es/bpmn-elements-adapter/constant.js +66 -0
  66. package/es/bpmn-elements-adapter/index.d.ts +103 -0
  67. package/es/bpmn-elements-adapter/index.js +1060 -0
  68. package/es/bpmn-elements-adapter/json2xml.d.ts +3 -0
  69. package/es/bpmn-elements-adapter/json2xml.js +87 -0
  70. package/es/bpmn-elements-adapter/xml2json.js +551 -0
  71. package/es/components/control/index.js +1 -1
  72. package/es/components/menu/index.js +76 -7
  73. package/es/index.d.ts +3 -1
  74. package/es/index.js +3 -1
  75. package/es/materials/group/index.js +16 -7
  76. package/es/tools/snapshot/index.js +14 -0
  77. package/lib/AutoLayout.js +1 -1
  78. package/lib/BpmnAdapter.js +1 -1
  79. package/lib/BpmnElement.js +1 -1
  80. package/lib/ContextMenu.js +1 -1
  81. package/lib/Control.js +1 -1
  82. package/lib/CurvedEdge.js +1 -1
  83. package/lib/DndPanel.js +1 -1
  84. package/lib/FlowPath.js +1 -1
  85. package/lib/Group.js +1 -1
  86. package/lib/Highlight.js +1 -1
  87. package/lib/InsertNodeInPolyline.js +1 -1
  88. package/lib/Menu.js +1 -1
  89. package/lib/MiniMap.js +1 -1
  90. package/lib/NodeResize.js +1 -1
  91. package/lib/RectLabelNode.js +1 -1
  92. package/lib/SelectionSelect.js +1 -1
  93. package/lib/Snapshot.js +1 -1
  94. package/lib/TurboAdapter.js +1 -1
  95. package/lib/lfJson2Xml.js +1 -1
  96. package/lib/lfXml2Json.js +1 -1
  97. package/package.json +3 -3
  98. package/types/NodeResize/BasicShape/Polygon.d.ts +0 -10
  99. package/types/NodeResize/BasicShape/Rect.d.ts +0 -17
  100. package/types/NodeResize/Control/Control.d.ts +0 -65
  101. package/types/NodeResize/Control/ControlGroup.d.ts +0 -13
  102. package/types/NodeResize/Control/Util.d.ts +0 -33
  103. package/types/NodeResize/Node/DiamondResize.d.ts +0 -30
  104. package/types/NodeResize/Node/EllipseResize.d.ts +0 -30
  105. package/types/NodeResize/Node/HtmlResize.d.ts +0 -30
  106. package/types/NodeResize/Node/RectResize.d.ts +0 -32
  107. package/types/NodeResize/index.d.ts +0 -11
  108. package/types/bpmn/events/EndEvent.d.ts +0 -21
  109. package/types/bpmn/events/StartEvent.d.ts +0 -17
  110. package/types/bpmn/flow/SequenceFlow.d.ts +0 -15
  111. package/types/bpmn/gateways/ExclusiveGateway.d.ts +0 -16
  112. package/types/bpmn/getBpmnId.d.ts +0 -1
  113. package/types/bpmn/index.d.ts +0 -13
  114. package/types/bpmn/tasks/ServiceTask.d.ts +0 -17
  115. package/types/bpmn/tasks/UserTask.d.ts +0 -17
  116. package/types/bpmn-adapter/bpmnIds.d.ts +0 -1
  117. package/types/bpmn-adapter/index.d.ts +0 -63
  118. package/types/bpmn-adapter/json2xml.d.ts +0 -3
  119. package/types/components/context-menu/index.d.ts +0 -34
  120. package/types/components/control/index.d.ts +0 -26
  121. package/types/components/dnd-panel/index.d.ts +0 -25
  122. package/types/components/highlight/index.d.ts +0 -21
  123. package/types/components/menu/index.d.ts +0 -50
  124. package/types/components/mini-map/index.d.ts +0 -88
  125. package/types/components/selection-select/index.d.ts +0 -42
  126. package/types/index.d.ts +0 -19
  127. package/types/insert-node-in-polyline/edge.d.ts +0 -31
  128. package/types/insert-node-in-polyline/index.d.ts +0 -28
  129. package/types/locale/en-locale/en.d.ts +0 -19
  130. package/types/locale/en-locale/index.d.ts +0 -9
  131. package/types/locale/locale.d.ts +0 -6
  132. package/types/materials/curved-edge/index.d.ts +0 -8
  133. package/types/materials/curved-edge/searchMiddleIndex.d.ts +0 -1
  134. package/types/materials/group/GroupNode.d.ts +0 -125
  135. package/types/materials/group/index.d.ts +0 -56
  136. package/types/tools/auto-layout/index.d.ts +0 -40
  137. package/types/tools/flow-path/index.d.ts +0 -47
  138. package/types/tools/snapshot/index.d.ts +0 -25
  139. package/types/turbo-adapter/index.d.ts +0 -21
  140. package/types/type/index.d.ts +0 -6
  141. /package/{types/bpmn-adapter → es/bpmn-elements-adapter}/xml2json.d.ts +0 -0
@@ -0,0 +1,1066 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ extendStatics(d, b);
11
+ function __() { this.constructor = d; }
12
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
+ };
14
+ })();
15
+ var __assign = (this && this.__assign) || function () {
16
+ __assign = Object.assign || function(t) {
17
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
18
+ s = arguments[i];
19
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
20
+ t[p] = s[p];
21
+ }
22
+ return t;
23
+ };
24
+ return __assign.apply(this, arguments);
25
+ };
26
+ var __rest = (this && this.__rest) || function (s, e) {
27
+ var t = {};
28
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
29
+ t[p] = s[p];
30
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
31
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
32
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
33
+ t[p[i]] = s[p[i]];
34
+ }
35
+ return t;
36
+ };
37
+ var __values = (this && this.__values) || function(o) {
38
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
39
+ if (m) return m.call(o);
40
+ if (o && typeof o.length === "number") return {
41
+ next: function () {
42
+ if (o && i >= o.length) o = void 0;
43
+ return { value: o && o[i++], done: !o };
44
+ }
45
+ };
46
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
47
+ };
48
+ var __read = (this && this.__read) || function (o, n) {
49
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
50
+ if (!m) return o;
51
+ var i = m.call(o), r, ar = [], e;
52
+ try {
53
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
54
+ }
55
+ catch (error) { e = { error: error }; }
56
+ finally {
57
+ try {
58
+ if (r && !r.done && (m = i["return"])) m.call(i);
59
+ }
60
+ finally { if (e) throw e.error; }
61
+ }
62
+ return ar;
63
+ };
64
+ var __spread = (this && this.__spread) || function () {
65
+ for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
66
+ return ar;
67
+ };
68
+ Object.defineProperty(exports, "__esModule", { value: true });
69
+ exports.convertXmlToNormal = exports.convertNormalToXml = exports.BPMNAdapter = exports.BPMNBaseAdapter = void 0;
70
+ /* eslint-disable func-names */
71
+ /* eslint-disable no-continue */
72
+ /* eslint-disable @typescript-eslint/naming-convention */
73
+ /* eslint-disable no-cond-assign */
74
+ /* eslint-disable no-shadow */
75
+ var lodash_es_1 = require("lodash-es");
76
+ var constant_1 = require("./constant");
77
+ var xml2json_1 = require("./xml2json");
78
+ var json2xml_1 = require("./json2xml");
79
+ var BpmnElements;
80
+ (function (BpmnElements) {
81
+ BpmnElements["START"] = "bpmn:startEvent";
82
+ BpmnElements["END"] = "bpmn:endEvent";
83
+ BpmnElements["INTERMEDIATE_CATCH"] = "bpmn:intermediateCatchEvent";
84
+ BpmnElements["INTERMEDIATE_THROW"] = "bpmn:intermediateThrowEvent";
85
+ BpmnElements["BOUNDARY"] = "bpmn:boundaryEvent";
86
+ BpmnElements["PARALLEL_GATEWAY"] = "bpmn:parallelGateway";
87
+ BpmnElements["INCLUSIVE_GATEWAY"] = "bpmn:inclusiveGateway";
88
+ BpmnElements["EXCLUSIVE_GATEWAY"] = "bpmn:exclusiveGateway";
89
+ BpmnElements["USER"] = "bpmn:userTask";
90
+ BpmnElements["SYSTEM"] = "bpmn:serviceTask";
91
+ BpmnElements["FLOW"] = "bpmn:sequenceFlow";
92
+ BpmnElements["SUBPROCESS"] = "bpmn:subProcess";
93
+ })(BpmnElements || (BpmnElements = {}));
94
+ var defaultAttrsForInput = [
95
+ '-name',
96
+ '-id',
97
+ 'bpmn:incoming',
98
+ 'bpmn:outgoing',
99
+ '-sourceRef',
100
+ '-targetRef',
101
+ '-children',
102
+ ];
103
+ var defaultRetainedProperties = [
104
+ 'properties',
105
+ 'startPoint',
106
+ 'endPoint',
107
+ 'pointsList',
108
+ ];
109
+ var defaultExcludeFields = {
110
+ in: [],
111
+ out: [
112
+ 'properties.panels',
113
+ 'properties.nodeSize',
114
+ 'properties.definitionId',
115
+ 'properties.timerValue',
116
+ 'properties.timerType',
117
+ 'properties.definitionType',
118
+ 'properties.parent',
119
+ 'properties.isBoundaryEventTouchingTask',
120
+ ],
121
+ };
122
+ var mergeInNOutObject = function (target, source) {
123
+ var sourceKeys = Object.keys(source || {});
124
+ sourceKeys.forEach(function (key) {
125
+ if (target[key]) {
126
+ var _a = source[key], fnIn = _a.in, fnOut = _a.out;
127
+ if (fnIn) {
128
+ target[key].in = fnIn;
129
+ }
130
+ if (fnOut) {
131
+ target[key].out = fnOut;
132
+ }
133
+ }
134
+ else {
135
+ target[key] = source[key];
136
+ }
137
+ });
138
+ return target;
139
+ };
140
+ // @ts-ignore
141
+ var defaultTransformer = {
142
+ 'bpmn:startEvent': {
143
+ out: function (data) {
144
+ var _a, _b;
145
+ var properties = data.properties;
146
+ return ((_b = (_a = defaultTransformer[properties.definitionType]) === null || _a === void 0 ? void 0 : _a.out) === null || _b === void 0 ? void 0 : _b.call(_a, data)) || {};
147
+ },
148
+ },
149
+ // 'bpmn:endEvent': undefined,
150
+ 'bpmn:intermediateCatchEvent': {
151
+ out: function (data) {
152
+ var _a, _b;
153
+ var properties = data.properties;
154
+ return ((_b = (_a = defaultTransformer[properties.definitionType]) === null || _a === void 0 ? void 0 : _a.out) === null || _b === void 0 ? void 0 : _b.call(_a, data)) || {};
155
+ },
156
+ },
157
+ 'bpmn:intermediateThrowEvent': {
158
+ out: function (data) {
159
+ var _a, _b;
160
+ var properties = data.properties;
161
+ return ((_b = (_a = defaultTransformer[properties.definitionType]) === null || _a === void 0 ? void 0 : _a.out) === null || _b === void 0 ? void 0 : _b.call(_a, data)) || {};
162
+ },
163
+ },
164
+ 'bpmn:boundaryEvent': {
165
+ out: function (data) {
166
+ var _a, _b;
167
+ var properties = data.properties;
168
+ return ((_b = (_a = defaultTransformer[properties.definitionType]) === null || _a === void 0 ? void 0 : _a.out) === null || _b === void 0 ? void 0 : _b.call(_a, data)) || {};
169
+ },
170
+ },
171
+ // 'bpmn:userTask': undefined,
172
+ 'bpmn:sequenceFlow': {
173
+ out: function (data) {
174
+ var _a = data.properties, expressionType = _a.expressionType, condition = _a.condition;
175
+ if (condition) {
176
+ if (expressionType === 'cdata') {
177
+ return {
178
+ json: "<bpmn:conditionExpression xsi:type=\"bpmn2:tFormalExpression\"><![CDATA[${" + condition + "}]]></bpmn:conditionExpression>",
179
+ };
180
+ }
181
+ return {
182
+ json: "<bpmn:conditionExpression xsi:type=\"bpmn2:tFormalExpression\">" + condition + "</bpmn:conditionExpression>",
183
+ };
184
+ }
185
+ return {
186
+ json: '',
187
+ };
188
+ },
189
+ },
190
+ // 'bpmn:subProcess': undefined,
191
+ // 'bpmn:participant': undefined,
192
+ 'bpmn:timerEventDefinition': {
193
+ out: function (data) {
194
+ var _a = data.properties, timerType = _a.timerType, timerValue = _a.timerValue, definitionId = _a.definitionId;
195
+ var typeFunc = function () { return "<bpmn:" + timerType + " xsi:type=\"bpmn:tFormalExpression\">" + timerValue + "</bpmn:" + timerType + ">"; };
196
+ return {
197
+ json: "<bpmn:timerEventDefinition id=\"" + definitionId + "\"" + (timerType && timerValue
198
+ ? ">" + typeFunc() + "</bpmn:timerEventDefinition>"
199
+ : '/>'),
200
+ };
201
+ },
202
+ in: function (key, data) {
203
+ var e_1, _a, _b;
204
+ var _c;
205
+ var definitionType = key;
206
+ var definitionId = data['-id'];
207
+ var timerType = '';
208
+ var timerValue = '';
209
+ try {
210
+ for (var _d = __values(Object.keys(data)), _e = _d.next(); !_e.done; _e = _d.next()) {
211
+ var key_1 = _e.value;
212
+ if (key_1.includes('bpmn:')) {
213
+ _b = __read(key_1.split(':'), 2), timerType = _b[1];
214
+ timerValue = (_c = data[key_1]) === null || _c === void 0 ? void 0 : _c['#text'];
215
+ }
216
+ }
217
+ }
218
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
219
+ finally {
220
+ try {
221
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
222
+ }
223
+ finally { if (e_1) throw e_1.error; }
224
+ }
225
+ return {
226
+ '-definitionId': definitionId,
227
+ '-definitionType': definitionType,
228
+ '-timerType': timerType,
229
+ '-timerValue': timerValue,
230
+ };
231
+ },
232
+ },
233
+ 'bpmn:conditionExpression': {
234
+ in: function (_key, data) {
235
+ var _a;
236
+ var condition = '';
237
+ var expressionType = '';
238
+ if (data['#cdata-section']) {
239
+ expressionType = 'cdata';
240
+ condition = ((_a = /^\$\{(.*)\}$/g.exec(data['#cdata-section'])) === null || _a === void 0 ? void 0 : _a[1]) || '';
241
+ }
242
+ else if (data['#text']) {
243
+ expressionType = 'normal';
244
+ condition = data['#text'];
245
+ }
246
+ return {
247
+ '-condition': condition,
248
+ '-expressionType': expressionType,
249
+ };
250
+ },
251
+ },
252
+ };
253
+ /**
254
+ * 将普通json转换为xmlJson
255
+ * xmlJson中property会以“-”开头
256
+ * 如果没有“-”表示为子节点
257
+ * fix issue https://github.com/didi/LogicFlow/issues/718, contain the process of #text/#cdata and array
258
+ * @reference node type reference https://www.w3schools.com/xml/dom_nodetype.asp
259
+ * @param retainedAttrsFields retainedAttrsFields会和默认的defaultRetainedProperties:
260
+ * ["properties", "startPoint", "endPoint", "pointsList"]合并
261
+ * 这意味着出现在这个数组里的字段当它的值是数组或是对象时不会被视为一个节点而是一个属性
262
+ * @param excludeFields excludeFields会和默认的defaultExcludeFields合并,出现在这个数组中的字段在转换时会被忽略
263
+ * @param transformer 对应节点或者边的子内容转换规则
264
+ */
265
+ function convertNormalToXml(other) {
266
+ var _a = other !== null && other !== void 0 ? other : {}, retainedAttrsFields = _a.retainedAttrsFields, excludeFields = _a.excludeFields, transformer = _a.transformer;
267
+ var retainedAttrsSet = new Set(__spread(defaultRetainedProperties, (retainedAttrsFields || [])));
268
+ var excludeFieldsSet = {
269
+ in: new Set(__spread(defaultExcludeFields.in, ((excludeFields === null || excludeFields === void 0 ? void 0 : excludeFields.in) || []))),
270
+ out: new Set(__spread(defaultExcludeFields.out, ((excludeFields === null || excludeFields === void 0 ? void 0 : excludeFields.out) || []))),
271
+ };
272
+ defaultTransformer = mergeInNOutObject(defaultTransformer, transformer);
273
+ return function (object) {
274
+ var nodes = object.nodes;
275
+ var edges = object.edges;
276
+ function ToXmlJson(obj, path) {
277
+ var e_2, _a;
278
+ var _b;
279
+ if ((obj === null || obj === void 0 ? void 0 : obj.flag) === 1) {
280
+ return;
281
+ }
282
+ var fn;
283
+ // @ts-ignore
284
+ if ((fn = defaultTransformer[obj.type]) && fn.out) {
285
+ var output_1 = fn.out(obj);
286
+ var keys = Object.keys(output_1);
287
+ if (keys.length > 0) {
288
+ keys.forEach(function (key) {
289
+ obj[key] = output_1[key];
290
+ });
291
+ }
292
+ }
293
+ if (obj === null || obj === void 0 ? void 0 : obj.children) {
294
+ obj.children = obj.children.map(function (key) {
295
+ var target = nodes.find(function (item) { return item.id === key; })
296
+ || edges.find(function (item) { return item.id === key; });
297
+ return target || {};
298
+ });
299
+ }
300
+ var xmlJson = {};
301
+ if (typeof obj === 'string') {
302
+ return obj;
303
+ }
304
+ if (Array.isArray(obj)) {
305
+ return (obj
306
+ .map(function (item) { return ToXmlJson(item, ''); })
307
+ // eslint-disable-next-line eqeqeq
308
+ .filter(function (item) { return item != undefined; }));
309
+ }
310
+ try {
311
+ for (var _c = __values(Object.entries(obj)), _d = _c.next(); !_d.done; _d = _c.next()) {
312
+ var _e = __read(_d.value, 2), key = _e[0], value = _e[1];
313
+ if (((_b = value) === null || _b === void 0 ? void 0 : _b['flag']) === 1) {
314
+ return;
315
+ }
316
+ var newPath = [path, key].filter(function (item) { return item; }).join('.');
317
+ if (excludeFieldsSet.out.has(newPath)) {
318
+ continue;
319
+ }
320
+ else if (typeof value !== 'object') {
321
+ // node type reference https://www.w3schools.com/xml/dom_nodetype.asp
322
+ if (key.indexOf('-') === 0
323
+ || ['#text', '#cdata-section', '#comment'].includes(key)) {
324
+ xmlJson[key] = value;
325
+ }
326
+ else {
327
+ xmlJson["-" + key] = value;
328
+ }
329
+ }
330
+ else if (retainedAttrsSet.has(newPath)) {
331
+ xmlJson["-" + key] = ToXmlJson(value, newPath);
332
+ }
333
+ else {
334
+ xmlJson[key] = ToXmlJson(value, newPath);
335
+ }
336
+ }
337
+ }
338
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
339
+ finally {
340
+ try {
341
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
342
+ }
343
+ finally { if (e_2) throw e_2.error; }
344
+ }
345
+ return xmlJson;
346
+ }
347
+ return ToXmlJson(object, '');
348
+ };
349
+ }
350
+ exports.convertNormalToXml = convertNormalToXml;
351
+ /**
352
+ * 将xmlJson转换为普通的json,在内部使用。
353
+ */
354
+ function convertXmlToNormal(xmlJson) {
355
+ var e_3, _a;
356
+ var json = {};
357
+ try {
358
+ for (var _b = __values(Object.entries(xmlJson)), _c = _b.next(); !_c.done; _c = _b.next()) {
359
+ var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
360
+ if (key.indexOf('-') === 0) {
361
+ json[key.substring(1)] = json2xml_1.handleAttributes(value);
362
+ }
363
+ else if (typeof value === 'string') {
364
+ json[key] = value;
365
+ }
366
+ else if (Object.prototype.toString.call(value) === '[object Object]') {
367
+ json[key] = convertXmlToNormal(value);
368
+ }
369
+ else if (Array.isArray(value)) {
370
+ // contain the process of array
371
+ json[key] = value.map(function (v) { return convertXmlToNormal(v); });
372
+ }
373
+ else {
374
+ json[key] = value;
375
+ }
376
+ }
377
+ }
378
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
379
+ finally {
380
+ try {
381
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
382
+ }
383
+ finally { if (e_3) throw e_3.error; }
384
+ }
385
+ return json;
386
+ }
387
+ exports.convertXmlToNormal = convertXmlToNormal;
388
+ /**
389
+ * 设置bpmn process信息
390
+ * 目标格式请参考examples/bpmn.json
391
+ * bpmn因为是默认基于xml格式的,其特点与json存在差异。
392
+ * 1) 如果是xml的属性,json中属性用'-'开头
393
+ * 2)如果只有一个子元素,json中表示为正常属性
394
+ * 3)如果是多个子元素,json中使用数组存储
395
+ */
396
+ function convertLf2ProcessData(bpmnData, data, other) {
397
+ var _a;
398
+ var nodeIdMap = new Map();
399
+ var xmlJsonData = convertNormalToXml(other)(data);
400
+ xmlJsonData.nodes.forEach(function (node) {
401
+ var nodeId = node["-id"], nodeType = node["-type"], text = node.text, children = node.children, otherProps = __rest(node, ['-id', '-type', "text", "children"]);
402
+ var processNode = { '-id': nodeId };
403
+ if (text === null || text === void 0 ? void 0 : text['-value']) {
404
+ processNode['-name'] = text['-value'];
405
+ }
406
+ if (otherProps['-json']) {
407
+ processNode['-json'] = otherProps['-json'];
408
+ }
409
+ if (otherProps['-properties']) {
410
+ Object.assign(processNode, otherProps['-properties']);
411
+ }
412
+ if (children) {
413
+ processNode.children = children;
414
+ }
415
+ // (bpmnData[nodeType] ??= []).push(processNode);
416
+ if (!bpmnData[nodeType]) {
417
+ bpmnData[nodeType] = [];
418
+ }
419
+ bpmnData[nodeType].push(processNode);
420
+ nodeIdMap.set(nodeId, processNode);
421
+ });
422
+ var sequenceFlow = xmlJsonData.edges.map(function (edge) {
423
+ var id = edge["-id"], type = edge["-type"], sourceNodeId = edge["-sourceNodeId"], targetNodeId = edge["-targetNodeId"], text = edge.text, otherProps = __rest(edge, ['-id', '-type', '-sourceNodeId', '-targetNodeId', "text"]);
424
+ var targetNode = nodeIdMap.get(targetNodeId);
425
+ // (targetNode['bpmn:incoming'] ??= []).push(id);
426
+ if (!targetNode['bpmn:incoming']) {
427
+ targetNode['bpmn:incoming'] = [];
428
+ }
429
+ targetNode['bpmn:incoming'].push(id);
430
+ var edgeConfig = {
431
+ '-id': id,
432
+ '-sourceRef': sourceNodeId,
433
+ '-targetRef': targetNodeId,
434
+ };
435
+ if (text === null || text === void 0 ? void 0 : text['-value']) {
436
+ edgeConfig['-name'] = text['-value'];
437
+ }
438
+ if (otherProps['-json']) {
439
+ edgeConfig['-json'] = otherProps['-json'];
440
+ }
441
+ if (otherProps['-properties']) {
442
+ Object.assign(edgeConfig, otherProps['-properties']);
443
+ }
444
+ return edgeConfig;
445
+ });
446
+ // @see https://github.com/didi/LogicFlow/issues/325
447
+ // 需要保证incoming在outgoing之前
448
+ data.edges.forEach(function (_a) {
449
+ var sourceNodeId = _a.sourceNodeId, id = _a.id;
450
+ var sourceNode = nodeIdMap.get(sourceNodeId);
451
+ // (sourceNode['bpmn:outgoing'] ??= []).push(id);
452
+ if (!sourceNode['bpmn:outgoing']) {
453
+ sourceNode['bpmn:outgoing'] = [];
454
+ }
455
+ sourceNode['bpmn:outgoing'].push(id);
456
+ });
457
+ (_a = bpmnData['bpmn:subProcess']) === null || _a === void 0 ? void 0 : _a.forEach(function (item) {
458
+ var setMap = {
459
+ 'bpmn:incoming': new Set(),
460
+ 'bpmn:outgoing': new Set(),
461
+ };
462
+ var edgesInSubProcess = [];
463
+ item.children.forEach(function (child) {
464
+ var _a;
465
+ var target = nodeIdMap.get(child['-id']);
466
+ ['bpmn:incoming', 'bpmn:outgoing'].forEach(function (key) {
467
+ target[key]
468
+ && target[key].forEach(function (value) {
469
+ setMap[key].add(value);
470
+ });
471
+ });
472
+ var index = (_a = bpmnData[child['-type']]) === null || _a === void 0 ? void 0 : _a.findIndex(function (_item) { return _item['-id'] === child['-id']; });
473
+ if (index >= 0) {
474
+ bpmnData[child['-type']].splice(index, 1);
475
+ }
476
+ nodeIdMap.delete(child['-id']);
477
+ // (item[child['-type']] ??= []).push(target);
478
+ if (!item[child['-type']]) {
479
+ item[child['-type']] = [];
480
+ }
481
+ item[child['-type']].push(target);
482
+ });
483
+ var incomingSet = setMap["bpmn:incoming"], outgoingSet = setMap["bpmn:outgoing"];
484
+ outgoingSet.forEach(function (value) {
485
+ incomingSet.has(value) && edgesInSubProcess.push(value);
486
+ });
487
+ var _loop_1 = function (i) {
488
+ var index = sequenceFlow.findIndex(function (item) { return item['-id'] === edgesInSubProcess[i]; });
489
+ if (index >= 0) {
490
+ // (item['bpmn:sequenceFlow'] ??= []).push(sequenceFlow[index]);
491
+ if (!item['bpmn:sequenceFlow']) {
492
+ item['bpmn:sequenceFlow'] = [];
493
+ }
494
+ item['bpmn:sequenceFlow'].push(sequenceFlow[index]);
495
+ sequenceFlow.splice(index, 1);
496
+ }
497
+ else {
498
+ i++;
499
+ }
500
+ out_i_1 = i;
501
+ };
502
+ var out_i_1;
503
+ for (var i = 0; i < edgesInSubProcess.length;) {
504
+ _loop_1(i);
505
+ i = out_i_1;
506
+ }
507
+ delete item.children;
508
+ });
509
+ bpmnData[BpmnElements.FLOW] = sequenceFlow;
510
+ return bpmnData;
511
+ }
512
+ /**
513
+ * adapterOut 设置bpmn diagram信息
514
+ */
515
+ function convertLf2DiagramData(bpmnDiagramData, data) {
516
+ bpmnDiagramData['bpmndi:BPMNEdge'] = data.edges.map(function (edge) {
517
+ var _a;
518
+ var edgeId = edge.id;
519
+ var pointsList = edge.pointsList.map(function (_a) {
520
+ var x = _a.x, y = _a.y;
521
+ return ({
522
+ '-x': x,
523
+ '-y': y,
524
+ });
525
+ });
526
+ var diagramData = {
527
+ '-id': edgeId + "_di",
528
+ '-bpmnElement': edgeId,
529
+ 'di:waypoint': pointsList,
530
+ };
531
+ if ((_a = edge.text) === null || _a === void 0 ? void 0 : _a.value) {
532
+ diagramData['bpmndi:BPMNLabel'] = {
533
+ 'dc:Bounds': {
534
+ '-x': edge.text.x - (edge.text.value.length * 10) / 2,
535
+ '-y': edge.text.y - 7,
536
+ '-width': edge.text.value.length * 10,
537
+ '-height': 14,
538
+ },
539
+ };
540
+ }
541
+ return diagramData;
542
+ });
543
+ bpmnDiagramData['bpmndi:BPMNShape'] = data.nodes.map(function (node) {
544
+ var _a;
545
+ var nodeId = node.id;
546
+ var width = 100;
547
+ var height = 80;
548
+ var x = node.x, y = node.y;
549
+ // bpmn坐标是基于左上角,LogicFlow基于中心点,此处处理一下。
550
+ var shapeConfig = BPMNBaseAdapter.shapeConfigMap.get(node.type);
551
+ if (shapeConfig) {
552
+ width = shapeConfig.width;
553
+ height = shapeConfig.height;
554
+ }
555
+ x -= width / 2;
556
+ y -= height / 2;
557
+ var diagramData = {
558
+ '-id': nodeId + "_di",
559
+ '-bpmnElement': nodeId,
560
+ 'dc:Bounds': {
561
+ '-x': x,
562
+ '-y': y,
563
+ '-width': width,
564
+ '-height': height,
565
+ },
566
+ };
567
+ if ((_a = node.text) === null || _a === void 0 ? void 0 : _a.value) {
568
+ diagramData['bpmndi:BPMNLabel'] = {
569
+ 'dc:Bounds': {
570
+ '-x': node.text.x - (node.text.value.length * 10) / 2,
571
+ '-y': node.text.y - 7,
572
+ '-width': node.text.value.length * 10,
573
+ '-height': 14,
574
+ },
575
+ };
576
+ }
577
+ return diagramData;
578
+ });
579
+ }
580
+ var ignoreType = ['bpmn:incoming', 'bpmn:outgoing'];
581
+ /**
582
+ * 将bpmn数据转换为LogicFlow内部能识别数据
583
+ */
584
+ function convertBpmn2LfData(bpmnData, other) {
585
+ var nodes = [];
586
+ var edges = [];
587
+ var eleMap = new Map();
588
+ var _a = other !== null && other !== void 0 ? other : {}, transformer = _a.transformer, excludeFields = _a.excludeFields;
589
+ var excludeFieldsSet = {
590
+ in: new Set(__spread(defaultExcludeFields.in, ((excludeFields === null || excludeFields === void 0 ? void 0 : excludeFields.in) || []))),
591
+ out: new Set(__spread(defaultExcludeFields.out, ((excludeFields === null || excludeFields === void 0 ? void 0 : excludeFields.out) || []))),
592
+ };
593
+ defaultTransformer = mergeInNOutObject(defaultTransformer, transformer);
594
+ var definitions = bpmnData['bpmn:definitions'];
595
+ if (definitions) {
596
+ var process_1 = definitions['bpmn:process'];
597
+ (function (data, callbacks) {
598
+ callbacks.forEach(function (callback) {
599
+ try {
600
+ Object.keys(data).forEach(function (key) {
601
+ try {
602
+ callback(key);
603
+ }
604
+ catch (error) {
605
+ console.error(error);
606
+ }
607
+ });
608
+ }
609
+ catch (error) {
610
+ console.error(error);
611
+ }
612
+ });
613
+ }(process_1, [
614
+ function (key) {
615
+ // 将bpmn:subProcess中的数据提升到process中
616
+ function subProcessProcessing(data) {
617
+ // data['-children'] ??= [];
618
+ if (!data['-children']) {
619
+ data['-children'] = [];
620
+ }
621
+ Object.keys(data).forEach(function (key) {
622
+ var _a;
623
+ if (key.indexOf('bpmn:') === 0 && !ignoreType.includes(key)) {
624
+ // process[key] ??= [];
625
+ if (!process_1[key]) {
626
+ process_1[key] = [];
627
+ }
628
+ !Array.isArray(process_1[key]) && (process_1[key] = [process_1[key]]);
629
+ Array.isArray(data[key])
630
+ ? (_a = process_1[key]).push.apply(_a, __spread(data[key])) : process_1[key].push(data[key]);
631
+ if (Array.isArray(data[key])) {
632
+ data[key].forEach(function (item) {
633
+ !key.includes('Flow') && data['-children'].push(item['-id']);
634
+ });
635
+ }
636
+ else {
637
+ !key.includes('Flow')
638
+ && data['-children'].push(data[key]['-id']);
639
+ }
640
+ delete data[key];
641
+ }
642
+ });
643
+ }
644
+ if (key === 'bpmn:subProcess') {
645
+ var data = process_1[key];
646
+ if (Array.isArray(data)) {
647
+ data.forEach(function (item) {
648
+ key === 'bpmn:subProcess' && subProcessProcessing(item);
649
+ });
650
+ }
651
+ else {
652
+ subProcessProcessing(data);
653
+ }
654
+ }
655
+ },
656
+ function (key) {
657
+ // 处理被提升的节点、边, 主要是通过definitionTransformer处理出节点的属性
658
+ var fn = function (obj) {
659
+ Object.keys(obj).forEach(function (key) {
660
+ var _a, _b;
661
+ if (key.includes('bpmn:')) {
662
+ var props_1 = {};
663
+ if (defaultTransformer[key] && defaultTransformer[key].in) {
664
+ props_1 = (_b = (_a = defaultTransformer[key]).in) === null || _b === void 0 ? void 0 : _b.call(_a, key, lodash_es_1.default.cloneDeep(obj[key]));
665
+ delete obj[key];
666
+ }
667
+ else {
668
+ func(obj[key]);
669
+ }
670
+ var keys = void 0;
671
+ if ((keys = Reflect.ownKeys(props_1)).length > 0) {
672
+ keys.forEach(function (key) {
673
+ Reflect.set(obj, key, props_1[key]);
674
+ });
675
+ }
676
+ }
677
+ });
678
+ };
679
+ function func(data) {
680
+ eleMap.set(data['-id'], data);
681
+ if (Array.isArray(data)) {
682
+ data.forEach(function (item) {
683
+ func(item);
684
+ });
685
+ }
686
+ else if (typeof data === 'object') {
687
+ fn(data);
688
+ }
689
+ }
690
+ func(process_1[key]);
691
+ },
692
+ function (key) {
693
+ if (key.indexOf('bpmn:') === 0) {
694
+ var value = process_1[key];
695
+ if (key === 'bpmn:sequenceFlow') {
696
+ var bpmnEdges = definitions['bpmndi:BPMNDiagram']['bpmndi:BPMNPlane']['bpmndi:BPMNEdge'];
697
+ edges = getLfEdges(value, bpmnEdges);
698
+ }
699
+ else {
700
+ var shapes = definitions['bpmndi:BPMNDiagram']['bpmndi:BPMNPlane']['bpmndi:BPMNShape'];
701
+ if (key === 'bpmn:boundaryEvent') {
702
+ var data = process_1[key];
703
+ var fn_1 = function (item) {
704
+ var attachedToRef = item["-attachedToRef"];
705
+ var attachedToNode = eleMap.get(attachedToRef);
706
+ // attachedToNode['-boundaryEvents'] ??= [];
707
+ if (!attachedToNode['-boundaryEvents']) {
708
+ attachedToNode['-boundaryEvents'] = [];
709
+ }
710
+ attachedToNode['-boundaryEvents'].push(item['-id']);
711
+ };
712
+ if (Array.isArray(data)) {
713
+ data.forEach(function (item) {
714
+ fn_1(item);
715
+ });
716
+ }
717
+ else {
718
+ fn_1(data);
719
+ }
720
+ }
721
+ nodes = nodes.concat(getLfNodes(value, shapes, key));
722
+ }
723
+ }
724
+ },
725
+ ]));
726
+ }
727
+ var ignoreFields = function (obj, filterSet, path) {
728
+ Object.keys(obj).forEach(function (key) {
729
+ var tmpPath = path ? path + "." + key : key;
730
+ if (filterSet.has(tmpPath)) {
731
+ delete obj[key];
732
+ }
733
+ else if (typeof obj[key] === 'object') {
734
+ ignoreFields(obj[key], filterSet, tmpPath);
735
+ }
736
+ });
737
+ };
738
+ nodes.forEach(function (node) {
739
+ var _a, _b;
740
+ if ((_a = other === null || other === void 0 ? void 0 : other.mapping) === null || _a === void 0 ? void 0 : _a.in) {
741
+ var mapping = (_b = other === null || other === void 0 ? void 0 : other.mapping) === null || _b === void 0 ? void 0 : _b.in;
742
+ var type = node.type;
743
+ if (mapping[type]) {
744
+ node.type = mapping[type];
745
+ }
746
+ }
747
+ ignoreFields(node, excludeFieldsSet.in, '');
748
+ // Object.keys(node.properties).forEach((key) => {
749
+ // excludeFieldsSet.in.has(key) && delete node.properties[key];
750
+ // });
751
+ });
752
+ edges.forEach(function (edge) {
753
+ var _a, _b;
754
+ if ((_a = other === null || other === void 0 ? void 0 : other.mapping) === null || _a === void 0 ? void 0 : _a.in) {
755
+ var mapping = (_b = other === null || other === void 0 ? void 0 : other.mapping) === null || _b === void 0 ? void 0 : _b.in;
756
+ var type = edge.type;
757
+ if (mapping[type]) {
758
+ edge.type = mapping[type];
759
+ }
760
+ }
761
+ ignoreFields(edge, excludeFieldsSet.in, '');
762
+ // Object.keys(edge.properties).forEach((key) => {
763
+ // excludeFieldsSet.in.has(key) && delete edge.properties[key];
764
+ // });
765
+ });
766
+ return {
767
+ nodes: nodes,
768
+ edges: edges,
769
+ };
770
+ }
771
+ function getLfNodes(value, shapes, key) {
772
+ var nodes = [];
773
+ if (Array.isArray(value)) {
774
+ // 数组
775
+ value.forEach(function (val) {
776
+ var shapeValue;
777
+ if (Array.isArray(shapes)) {
778
+ shapeValue = shapes.find(function (shape) { return shape['-bpmnElement'] === val['-id']; });
779
+ }
780
+ else {
781
+ shapeValue = shapes;
782
+ }
783
+ var node = getNodeConfig(shapeValue, key, val);
784
+ nodes.push(node);
785
+ });
786
+ }
787
+ else {
788
+ var shapeValue = void 0;
789
+ if (Array.isArray(shapes)) {
790
+ shapeValue = shapes.find(function (shape) { return shape['-bpmnElement'] === value['-id']; });
791
+ }
792
+ else {
793
+ shapeValue = shapes;
794
+ }
795
+ var node = getNodeConfig(shapeValue, key, value);
796
+ nodes.push(node);
797
+ }
798
+ return nodes;
799
+ }
800
+ function getNodeConfig(shapeValue, type, processValue) {
801
+ var x = Number(shapeValue['dc:Bounds']['-x']);
802
+ var y = Number(shapeValue['dc:Bounds']['-y']);
803
+ var children = processValue["-children"];
804
+ var name = processValue['-name'];
805
+ var shapeConfig = BPMNBaseAdapter.shapeConfigMap.get(type);
806
+ if (shapeConfig) {
807
+ x += shapeConfig.width / 2;
808
+ y += shapeConfig.height / 2;
809
+ }
810
+ var properties = {};
811
+ // 判断是否存在额外的属性,将额外的属性放到properties中
812
+ Object.entries(processValue).forEach(function (_a) {
813
+ var _b = __read(_a, 2), key = _b[0], value = _b[1];
814
+ if (!defaultAttrsForInput.includes(key)) {
815
+ properties[key] = value;
816
+ }
817
+ });
818
+ properties = convertXmlToNormal(properties);
819
+ var text;
820
+ if (name) {
821
+ text = {
822
+ x: x,
823
+ y: y,
824
+ value: name,
825
+ };
826
+ // 自定义文本位置
827
+ if (shapeValue['bpmndi:BPMNLabel'] && shapeValue['bpmndi:BPMNLabel']['dc:Bounds']) {
828
+ var textBounds = shapeValue['bpmndi:BPMNLabel']['dc:Bounds'];
829
+ text.x = Number(textBounds['-x']) + Number(textBounds['-width']) / 2;
830
+ text.y = Number(textBounds['-y']) + Number(textBounds['-height']) / 2;
831
+ }
832
+ }
833
+ var nodeConfig = {
834
+ id: shapeValue['-bpmnElement'],
835
+ type: type,
836
+ x: x,
837
+ y: y,
838
+ properties: properties,
839
+ };
840
+ children && (nodeConfig.children = children);
841
+ if (text) {
842
+ nodeConfig.text = text;
843
+ }
844
+ return nodeConfig;
845
+ }
846
+ function getLfEdges(value, bpmnEdges) {
847
+ var edges = [];
848
+ if (Array.isArray(value)) {
849
+ value.forEach(function (val) {
850
+ var edgeValue;
851
+ if (Array.isArray(bpmnEdges)) {
852
+ edgeValue = bpmnEdges.find(function (edge) { return edge['-bpmnElement'] === val['-id']; });
853
+ }
854
+ else {
855
+ edgeValue = bpmnEdges;
856
+ }
857
+ edges.push(getEdgeConfig(edgeValue, val));
858
+ });
859
+ }
860
+ else {
861
+ var edgeValue = void 0;
862
+ if (Array.isArray(bpmnEdges)) {
863
+ edgeValue = bpmnEdges.find(function (edge) { return edge['-bpmnElement'] === value['-id']; });
864
+ }
865
+ else {
866
+ edgeValue = bpmnEdges;
867
+ }
868
+ edges.push(getEdgeConfig(edgeValue, value));
869
+ }
870
+ return edges;
871
+ }
872
+ function getEdgeConfig(edgeValue, processValue) {
873
+ var text;
874
+ var textVal = processValue['-name'];
875
+ if (textVal) {
876
+ var textBounds = edgeValue['bpmndi:BPMNLabel']['dc:Bounds'];
877
+ // 如果边文本换行,则其偏移量应该是最长一行的位置
878
+ var textLength_1 = 0;
879
+ textVal.split('\n').forEach(function (textSpan) {
880
+ if (textLength_1 < textSpan.length) {
881
+ textLength_1 = textSpan.length;
882
+ }
883
+ });
884
+ text = {
885
+ value: textVal,
886
+ x: Number(textBounds['-x']) + (textLength_1 * 10) / 2,
887
+ y: Number(textBounds['-y']) + 7,
888
+ };
889
+ }
890
+ var properties = {};
891
+ // 判断是否存在额外的属性,将额外的属性放到properties中
892
+ Object.entries(processValue).forEach(function (_a) {
893
+ var _b = __read(_a, 2), key = _b[0], value = _b[1];
894
+ if (!defaultAttrsForInput.includes(key)) {
895
+ properties[key] = value;
896
+ }
897
+ });
898
+ properties = convertXmlToNormal(properties);
899
+ var pointsList = edgeValue['di:waypoint'].map(function (point) { return ({
900
+ x: Number(point['-x']),
901
+ y: Number(point['-y']),
902
+ }); });
903
+ var edge = {
904
+ id: processValue['-id'],
905
+ type: BpmnElements.FLOW,
906
+ pointsList: pointsList,
907
+ sourceNodeId: processValue['-sourceRef'],
908
+ targetNodeId: processValue['-targetRef'],
909
+ properties: properties,
910
+ };
911
+ if (text) {
912
+ edge.text = text;
913
+ }
914
+ return edge;
915
+ }
916
+ var BPMNBaseAdapter = /** @class */ (function () {
917
+ function BPMNBaseAdapter(_a) {
918
+ var _this = this;
919
+ var lf = _a.lf;
920
+ /**
921
+ * @param retainedAttrsFields?: string[] (可选)属性保留字段,retainedField会和默认的defaultRetainedFields:
922
+ * ["properties", "startPoint", "endPoint", "pointsList"]合并,
923
+ * 这意味着出现在这个数组里的字段当它的值是数组或是对象时不会被视为一个节点而是一个属性。
924
+ * @param excludeFields excludeFields会和默认的defaultExcludeFields合并,出现在这个数组中的字段在转换时会被忽略
925
+ * @param transformer 对应节点或者边的内容转换规则
926
+ */
927
+ this.adapterOut = function (data, other) {
928
+ var _a, _b;
929
+ var bpmnProcessData = __assign({}, _this.processAttributes);
930
+ convertLf2ProcessData(bpmnProcessData, data, other);
931
+ var bpmnDiagramData = {
932
+ '-id': 'BPMNPlane_1',
933
+ '-bpmnElement': bpmnProcessData['-id'],
934
+ };
935
+ convertLf2DiagramData(bpmnDiagramData, data);
936
+ var definitions = _this.definitionAttributes;
937
+ definitions['bpmn:process'] = bpmnProcessData;
938
+ definitions['bpmndi:BPMNDiagram'] = {
939
+ '-id': 'BPMNDiagram_1',
940
+ 'bpmndi:BPMNPlane': bpmnDiagramData,
941
+ };
942
+ var bpmnData = {
943
+ 'bpmn:definitions': definitions,
944
+ };
945
+ if ((_a = other === null || other === void 0 ? void 0 : other.mapping) === null || _a === void 0 ? void 0 : _a.out) {
946
+ var mapping_1 = (_b = other === null || other === void 0 ? void 0 : other.mapping) === null || _b === void 0 ? void 0 : _b.out;
947
+ var nameMapping_1 = function (obj) {
948
+ if (Array.isArray(obj)) {
949
+ obj.forEach(function (item) { return nameMapping_1(item); });
950
+ }
951
+ if (typeof obj === 'object') {
952
+ Object.keys(obj).forEach(function (key) {
953
+ var mappingName;
954
+ if (mappingName = mapping_1[key]) {
955
+ obj[mappingName] = lodash_es_1.default.cloneDeep(obj[key]);
956
+ delete obj[key];
957
+ nameMapping_1(obj[mappingName]);
958
+ }
959
+ else {
960
+ nameMapping_1(obj[key]);
961
+ }
962
+ });
963
+ }
964
+ };
965
+ nameMapping_1(bpmnData);
966
+ }
967
+ return bpmnData;
968
+ };
969
+ this.adapterIn = function (bpmnData, other) {
970
+ if (bpmnData) {
971
+ return convertBpmn2LfData(bpmnData, other);
972
+ }
973
+ };
974
+ lf.adapterIn = this.adapterIn;
975
+ lf.adapterOut = this.adapterOut;
976
+ this.processAttributes = {
977
+ '-isExecutable': 'true',
978
+ '-id': 'Process',
979
+ };
980
+ this.definitionAttributes = {
981
+ '-id': 'Definitions',
982
+ '-xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',
983
+ '-xmlns:bpmn': 'http://www.omg.org/spec/BPMN/20100524/MODEL',
984
+ '-xmlns:bpmndi': 'http://www.omg.org/spec/BPMN/20100524/DI',
985
+ '-xmlns:dc': 'http://www.omg.org/spec/DD/20100524/DC',
986
+ '-xmlns:di': 'http://www.omg.org/spec/DD/20100524/DI',
987
+ '-targetNamespace': 'http://logic-flow.org',
988
+ '-exporter': 'logicflow',
989
+ '-exporterVersion': '1.2.10',
990
+ };
991
+ }
992
+ BPMNBaseAdapter.prototype.setCustomShape = function (key, val) {
993
+ BPMNBaseAdapter.shapeConfigMap.set(key, val);
994
+ };
995
+ BPMNBaseAdapter.pluginName = 'bpmn-adapter';
996
+ BPMNBaseAdapter.shapeConfigMap = new Map();
997
+ return BPMNBaseAdapter;
998
+ }());
999
+ exports.BPMNBaseAdapter = BPMNBaseAdapter;
1000
+ BPMNBaseAdapter.shapeConfigMap.set(BpmnElements.START, {
1001
+ width: constant_1.StartEventConfig.width,
1002
+ height: constant_1.StartEventConfig.height,
1003
+ });
1004
+ BPMNBaseAdapter.shapeConfigMap.set(BpmnElements.END, {
1005
+ width: constant_1.EndEventConfig.width,
1006
+ height: constant_1.EndEventConfig.height,
1007
+ });
1008
+ BPMNBaseAdapter.shapeConfigMap.set(BpmnElements.INTERMEDIATE_CATCH, {
1009
+ width: constant_1.IntermediateEventConfig.width,
1010
+ height: constant_1.IntermediateEventConfig.height,
1011
+ });
1012
+ BPMNBaseAdapter.shapeConfigMap.set(BpmnElements.INTERMEDIATE_THROW, {
1013
+ width: constant_1.IntermediateEventConfig.width,
1014
+ height: constant_1.IntermediateEventConfig.height,
1015
+ });
1016
+ BPMNBaseAdapter.shapeConfigMap.set(BpmnElements.BOUNDARY, {
1017
+ width: constant_1.BoundaryEventConfig.width,
1018
+ height: constant_1.BoundaryEventConfig.height,
1019
+ });
1020
+ BPMNBaseAdapter.shapeConfigMap.set(BpmnElements.PARALLEL_GATEWAY, {
1021
+ width: constant_1.ParallelGatewayConfig.width,
1022
+ height: constant_1.ParallelGatewayConfig.height,
1023
+ });
1024
+ BPMNBaseAdapter.shapeConfigMap.set(BpmnElements.INCLUSIVE_GATEWAY, {
1025
+ width: constant_1.InclusiveGatewayConfig.width,
1026
+ height: constant_1.InclusiveGatewayConfig.height,
1027
+ });
1028
+ BPMNBaseAdapter.shapeConfigMap.set(BpmnElements.EXCLUSIVE_GATEWAY, {
1029
+ width: constant_1.ExclusiveGatewayConfig.width,
1030
+ height: constant_1.ExclusiveGatewayConfig.height,
1031
+ });
1032
+ BPMNBaseAdapter.shapeConfigMap.set(BpmnElements.SYSTEM, {
1033
+ width: constant_1.ServiceTaskConfig.width,
1034
+ height: constant_1.ServiceTaskConfig.height,
1035
+ });
1036
+ BPMNBaseAdapter.shapeConfigMap.set(BpmnElements.USER, {
1037
+ width: constant_1.UserTaskConfig.width,
1038
+ height: constant_1.UserTaskConfig.height,
1039
+ });
1040
+ BPMNBaseAdapter.shapeConfigMap.set(BpmnElements.SUBPROCESS, {
1041
+ width: constant_1.SubProcessConfig.width,
1042
+ height: constant_1.SubProcessConfig.height,
1043
+ });
1044
+ var BPMNAdapter = /** @class */ (function (_super) {
1045
+ __extends(BPMNAdapter, _super);
1046
+ function BPMNAdapter(data) {
1047
+ var _this = _super.call(this, data) || this;
1048
+ _this.adapterXmlIn = function (bpmnData) {
1049
+ var json = xml2json_1.lfXml2Json(bpmnData);
1050
+ return _this.adapterIn(json, _this.props);
1051
+ };
1052
+ _this.adapterXmlOut = function (data) {
1053
+ var outData = _this.adapterOut(data, _this.props);
1054
+ return json2xml_1.lfJson2Xml(outData);
1055
+ };
1056
+ var lf = data.lf, props = data.props;
1057
+ lf.adapterIn = _this.adapterXmlIn;
1058
+ lf.adapterOut = _this.adapterXmlOut;
1059
+ _this.props = props;
1060
+ return _this;
1061
+ }
1062
+ BPMNAdapter.pluginName = 'BPMNAdapter';
1063
+ return BPMNAdapter;
1064
+ }(BPMNBaseAdapter));
1065
+ exports.BPMNAdapter = BPMNAdapter;
1066
+ exports.default = BPMNAdapter;