1 | import inherits from 'inherits';
|
2 |
|
3 | import Ids from 'ids';
|
4 |
|
5 | import Viewer from './Viewer';
|
6 |
|
7 | import NavigatedViewer from './NavigatedViewer';
|
8 |
|
9 | import KeyboardMoveModule from 'diagram-js/lib/navigation/keyboard-move';
|
10 | import MoveCanvasModule from 'diagram-js/lib/navigation/movecanvas';
|
11 | import TouchModule from 'diagram-js/lib/navigation/touch';
|
12 | import ZoomScrollModule from 'diagram-js/lib/navigation/zoomscroll';
|
13 |
|
14 | import AlignElementsModule from 'diagram-js/lib/features/align-elements';
|
15 | import AutoPlaceModule from './features/auto-place';
|
16 | import AutoResizeModule from './features/auto-resize';
|
17 | import AutoScrollModule from 'diagram-js/lib/features/auto-scroll';
|
18 | import BendpointsModule from 'diagram-js/lib/features/bendpoints';
|
19 | import ConnectModule from 'diagram-js/lib/features/connect';
|
20 | import ConnectionPreviewModule from 'diagram-js/lib/features/connection-preview';
|
21 | import ContextPadModule from './features/context-pad';
|
22 | import CopyPasteModule from './features/copy-paste';
|
23 | import CreateModule from 'diagram-js/lib/features/create';
|
24 | import DistributeElementsModule from './features/distribute-elements';
|
25 | import EditorActionsModule from './features/editor-actions';
|
26 | import GridSnappingModule from './features/grid-snapping';
|
27 | import InteractionEventsModule from './features/interaction-events';
|
28 | import KeyboardModule from './features/keyboard';
|
29 | import KeyboardMoveSelectionModule from 'diagram-js/lib/features/keyboard-move-selection';
|
30 | import LabelEditingModule from './features/label-editing';
|
31 | import ModelingModule from './features/modeling';
|
32 | import MoveModule from 'diagram-js/lib/features/move';
|
33 | import PaletteModule from './features/palette';
|
34 | import ReplacePreviewModule from './features/replace-preview';
|
35 | import ResizeModule from 'diagram-js/lib/features/resize';
|
36 | import SnappingModule from './features/snapping';
|
37 | import SearchModule from './features/search';
|
38 |
|
39 |
|
40 | var initialDiagram =
|
41 | '<?xml version="1.0" encoding="UTF-8"?>' +
|
42 | '<bpmn:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
|
43 | 'xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" ' +
|
44 | 'xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" ' +
|
45 | 'xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" ' +
|
46 | 'targetNamespace="http://bpmn.io/schema/bpmn" ' +
|
47 | 'id="Definitions_1">' +
|
48 | '<bpmn:process id="Process_1" isExecutable="false">' +
|
49 | '<bpmn:startEvent id="StartEvent_1"/>' +
|
50 | '</bpmn:process>' +
|
51 | '<bpmndi:BPMNDiagram id="BPMNDiagram_1">' +
|
52 | '<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">' +
|
53 | '<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">' +
|
54 | '<dc:Bounds height="36.0" width="36.0" x="173.0" y="102.0"/>' +
|
55 | '</bpmndi:BPMNShape>' +
|
56 | '</bpmndi:BPMNPlane>' +
|
57 | '</bpmndi:BPMNDiagram>' +
|
58 | '</bpmn:definitions>';
|
59 |
|
60 |
|
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 |
|
67 |
|
68 |
|
69 |
|
70 |
|
71 |
|
72 |
|
73 |
|
74 |
|
75 |
|
76 |
|
77 |
|
78 |
|
79 |
|
80 |
|
81 |
|
82 |
|
83 |
|
84 |
|
85 |
|
86 |
|
87 |
|
88 |
|
89 |
|
90 |
|
91 |
|
92 |
|
93 |
|
94 |
|
95 |
|
96 |
|
97 |
|
98 |
|
99 |
|
100 |
|
101 |
|
102 |
|
103 |
|
104 |
|
105 |
|
106 |
|
107 |
|
108 |
|
109 |
|
110 |
|
111 |
|
112 |
|
113 |
|
114 |
|
115 |
|
116 |
|
117 |
|
118 |
|
119 |
|
120 |
|
121 |
|
122 |
|
123 |
|
124 |
|
125 |
|
126 |
|
127 |
|
128 |
|
129 |
|
130 |
|
131 |
|
132 |
|
133 | export default function Modeler(options) {
|
134 | Viewer.call(this, options);
|
135 |
|
136 |
|
137 | this.on('import.parse.complete', function(event) {
|
138 | if (!event.error) {
|
139 | this._collectIds(event.definitions, event.context);
|
140 | }
|
141 | }, this);
|
142 |
|
143 | this.on('diagram.destroy', function() {
|
144 | this.get('moddle').ids.clear();
|
145 | }, this);
|
146 | }
|
147 |
|
148 | inherits(Modeler, Viewer);
|
149 |
|
150 | Modeler.Viewer = Viewer;
|
151 | Modeler.NavigatedViewer = NavigatedViewer;
|
152 |
|
153 |
|
154 |
|
155 |
|
156 |
|
157 |
|
158 | Modeler.prototype.createDiagram = function(done) {
|
159 | return this.importXML(initialDiagram, done);
|
160 | };
|
161 |
|
162 |
|
163 |
|
164 |
|
165 |
|
166 |
|
167 | Modeler.prototype._createModdle = function(options) {
|
168 | var moddle = Viewer.prototype._createModdle.call(this, options);
|
169 |
|
170 |
|
171 |
|
172 |
|
173 | moddle.ids = new Ids([ 32, 36, 1 ]);
|
174 |
|
175 | return moddle;
|
176 | };
|
177 |
|
178 |
|
179 |
|
180 |
|
181 |
|
182 |
|
183 |
|
184 |
|
185 | Modeler.prototype._collectIds = function(definitions, context) {
|
186 |
|
187 | var moddle = definitions.$model,
|
188 | ids = moddle.ids,
|
189 | id;
|
190 |
|
191 |
|
192 | ids.clear();
|
193 |
|
194 | for (id in context.elementsById) {
|
195 | ids.claim(id, context.elementsById[id]);
|
196 | }
|
197 | };
|
198 |
|
199 | Modeler.prototype._interactionModules = [
|
200 |
|
201 |
|
202 | KeyboardMoveModule,
|
203 | MoveCanvasModule,
|
204 | TouchModule,
|
205 | ZoomScrollModule
|
206 | ];
|
207 |
|
208 | Modeler.prototype._modelingModules = [
|
209 |
|
210 |
|
211 | AlignElementsModule,
|
212 | AutoPlaceModule,
|
213 | AutoScrollModule,
|
214 | AutoResizeModule,
|
215 | BendpointsModule,
|
216 | ConnectModule,
|
217 | ConnectionPreviewModule,
|
218 | ContextPadModule,
|
219 | CopyPasteModule,
|
220 | CreateModule,
|
221 | DistributeElementsModule,
|
222 | EditorActionsModule,
|
223 | GridSnappingModule,
|
224 | InteractionEventsModule,
|
225 | KeyboardModule,
|
226 | KeyboardMoveSelectionModule,
|
227 | LabelEditingModule,
|
228 | ModelingModule,
|
229 | MoveModule,
|
230 | PaletteModule,
|
231 | ReplacePreviewModule,
|
232 | ResizeModule,
|
233 | SnappingModule,
|
234 | SearchModule
|
235 | ];
|
236 |
|
237 |
|
238 |
|
239 |
|
240 |
|
241 |
|
242 |
|
243 |
|
244 | Modeler.prototype._modules = [].concat(
|
245 | Modeler.prototype._modules,
|
246 | Modeler.prototype._interactionModules,
|
247 | Modeler.prototype._modelingModules);
|