|
@@ -132,44 +132,158 @@ const state = createState({
|
132
|
132
|
else: ['zoomCameraToActual'],
|
133
|
133
|
},
|
134
|
134
|
on: {
|
135
|
|
- COPIED: { if: 'hasSelection', do: 'copyToClipboard' },
|
136
|
|
- PASTED: { do: 'pasteFromClipboard' },
|
137
|
|
- PASTED_SHAPES_FROM_CLIPBOARD: 'pasteShapesFromClipboard',
|
138
|
|
- COPIED_STATE_TO_CLIPBOARD: 'copyStateToClipboard',
|
139
|
135
|
LOADED_FONTS: 'resetShapes',
|
140
|
|
- TOGGLED_SHAPE_LOCK: { if: 'hasSelection', do: 'lockSelection' },
|
141
|
|
- TOGGLED_SHAPE_HIDE: { if: 'hasSelection', do: 'hideSelection' },
|
|
136
|
+ USED_PEN_DEVICE: 'enablePenLock',
|
|
137
|
+ DISABLED_PEN_LOCK: 'disablePenLock',
|
|
138
|
+ TOGGLED_CODE_PANEL_OPEN: 'toggleCodePanel',
|
|
139
|
+ TOGGLED_STYLE_PANEL_OPEN: 'toggleStylePanel',
|
|
140
|
+ PANNED_CAMERA: 'panCamera',
|
|
141
|
+ POINTED_CANVAS: ['closeStylePanel', 'clearCurrentParentId'],
|
|
142
|
+ COPIED_STATE_TO_CLIPBOARD: 'copyStateToClipboard',
|
|
143
|
+ COPIED: { if: 'hasSelection', do: 'copyToClipboard' },
|
|
144
|
+ PASTED: {
|
|
145
|
+ unlessAny: ['isReadOnly', 'isInSession'],
|
|
146
|
+ do: 'pasteFromClipboard',
|
|
147
|
+ },
|
|
148
|
+ PASTED_SHAPES_FROM_CLIPBOARD: {
|
|
149
|
+ unlessAny: ['isReadOnly', 'isInSession'],
|
|
150
|
+ do: 'pasteShapesFromClipboard',
|
|
151
|
+ },
|
|
152
|
+ TOGGLED_SHAPE_LOCK: {
|
|
153
|
+ unlessAny: ['isReadOnly', 'isInSession'],
|
|
154
|
+ if: 'hasSelection',
|
|
155
|
+ do: 'lockSelection',
|
|
156
|
+ },
|
|
157
|
+ TOGGLED_SHAPE_HIDE: {
|
|
158
|
+ unlessAny: ['isReadOnly', 'isInSession'],
|
|
159
|
+ if: 'hasSelection',
|
|
160
|
+ do: 'hideSelection',
|
|
161
|
+ },
|
142
|
162
|
TOGGLED_SHAPE_ASPECT_LOCK: {
|
|
163
|
+ unlessAny: ['isReadOnly', 'isInSession'],
|
143
|
164
|
if: 'hasSelection',
|
144
|
165
|
do: 'aspectLockSelection',
|
145
|
166
|
},
|
146
|
|
- TOGGLED_CODE_PANEL_OPEN: 'toggleCodePanel',
|
147
|
|
- TOGGLED_STYLE_PANEL_OPEN: 'toggleStylePanel',
|
148
|
|
- POINTED_CANVAS: ['closeStylePanel', 'clearCurrentParentId'],
|
149
|
|
- CHANGED_STYLE: ['updateStyles', 'applyStylesToSelection'],
|
150
|
|
- USED_PEN_DEVICE: 'enablePenLock',
|
151
|
|
- DISABLED_PEN_LOCK: 'disablePenLock',
|
|
167
|
+ CHANGED_STYLE: {
|
|
168
|
+ unlessAny: ['isReadOnly', 'isInSession'],
|
|
169
|
+ do: ['updateStyles', 'applyStylesToSelection'],
|
|
170
|
+ },
|
152
|
171
|
CLEARED_PAGE: {
|
|
172
|
+ unlessAny: ['isReadOnly', 'isInSession'],
|
153
|
173
|
if: 'hasSelection',
|
154
|
174
|
do: 'deleteSelection',
|
155
|
175
|
else: ['selectAll', 'deleteSelection'],
|
156
|
176
|
},
|
157
|
|
- SELECTED_ALL: { to: 'selecting', do: 'selectAll' },
|
158
|
|
- CHANGED_PAGE: 'changePage',
|
159
|
|
- CREATED_PAGE: ['clearSelectedIds', 'createPage'],
|
160
|
|
- DELETED_PAGE: { unless: 'hasOnlyOnePage', do: 'deletePage' },
|
161
|
|
- LOADED_FROM_FILE: ['loadDocumentFromJson', 'resetHistory'],
|
162
|
|
- PANNED_CAMERA: 'panCamera',
|
163
|
|
- SELECTED_SELECT_TOOL: { to: 'selecting' },
|
164
|
|
- SELECTED_DRAW_TOOL: { unless: 'isReadOnly', to: 'draw' },
|
165
|
|
- SELECTED_ARROW_TOOL: { unless: 'isReadOnly', to: 'arrow' },
|
166
|
|
- SELECTED_DOT_TOOL: { unless: 'isReadOnly', to: 'dot' },
|
167
|
|
- SELECTED_ELLIPSE_TOOL: { unless: 'isReadOnly', to: 'ellipse' },
|
168
|
|
- SELECTED_RAY_TOOL: { unless: 'isReadOnly', to: 'ray' },
|
169
|
|
- SELECTED_LINE_TOOL: { unless: 'isReadOnly', to: 'line' },
|
170
|
|
- SELECTED_POLYLINE_TOOL: { unless: 'isReadOnly', to: 'polyline' },
|
171
|
|
- SELECTED_RECTANGLE_TOOL: { unless: 'isReadOnly', to: 'rectangle' },
|
172
|
|
- SELECTED_TEXT_TOOL: { unless: 'isReadOnly', to: 'text' },
|
|
177
|
+ CREATED_PAGE: {
|
|
178
|
+ unless: ['isReadOnly', 'isInSession'],
|
|
179
|
+ do: ['clearSelectedIds', 'createPage'],
|
|
180
|
+ },
|
|
181
|
+ DELETED_PAGE: {
|
|
182
|
+ unlessAny: ['isReadOnly', 'isInSession', 'hasOnlyOnePage'],
|
|
183
|
+ do: 'deletePage',
|
|
184
|
+ },
|
|
185
|
+ SELECTED_SELECT_TOOL: {
|
|
186
|
+ unless: 'isInSession',
|
|
187
|
+ to: 'selecting',
|
|
188
|
+ },
|
|
189
|
+ SELECTED_DRAW_TOOL: {
|
|
190
|
+ unlessAny: ['isReadOnly', 'isInSession'],
|
|
191
|
+ to: 'draw',
|
|
192
|
+ },
|
|
193
|
+ SELECTED_ARROW_TOOL: {
|
|
194
|
+ unless: ['isReadOnly', 'isInSession'],
|
|
195
|
+ to: 'arrow',
|
|
196
|
+ },
|
|
197
|
+ SELECTED_DOT_TOOL: {
|
|
198
|
+ unless: ['isReadOnly', 'isInSession'],
|
|
199
|
+ to: 'dot',
|
|
200
|
+ },
|
|
201
|
+ SELECTED_ELLIPSE_TOOL: {
|
|
202
|
+ unless: ['isReadOnly', 'isInSession'],
|
|
203
|
+ to: 'ellipse',
|
|
204
|
+ },
|
|
205
|
+ SELECTED_RAY_TOOL: {
|
|
206
|
+ unless: ['isReadOnly', 'isInSession'],
|
|
207
|
+ to: 'ray',
|
|
208
|
+ },
|
|
209
|
+ SELECTED_LINE_TOOL: {
|
|
210
|
+ unless: ['isReadOnly', 'isInSession'],
|
|
211
|
+ to: 'line',
|
|
212
|
+ },
|
|
213
|
+ SELECTED_POLYLINE_TOOL: {
|
|
214
|
+ unless: ['isReadOnly', 'isInSession'],
|
|
215
|
+ to: 'polyline',
|
|
216
|
+ },
|
|
217
|
+ SELECTED_RECTANGLE_TOOL: {
|
|
218
|
+ unless: ['isReadOnly', 'isInSession'],
|
|
219
|
+ to: 'rectangle',
|
|
220
|
+ },
|
|
221
|
+ SELECTED_TEXT_TOOL: {
|
|
222
|
+ unless: ['isReadOnly', 'isInSession'],
|
|
223
|
+ to: 'text',
|
|
224
|
+ },
|
|
225
|
+ GENERATED_FROM_CODE: {
|
|
226
|
+ unless: ['isReadOnly', 'isInSession'],
|
|
227
|
+ do: ['setCodeControls', 'setGeneratedShapes'],
|
|
228
|
+ },
|
|
229
|
+ UNDO: {
|
|
230
|
+ unless: 'isInSession',
|
|
231
|
+ do: 'undo',
|
|
232
|
+ },
|
|
233
|
+ REDO: {
|
|
234
|
+ unless: 'isInSession',
|
|
235
|
+ do: 'redo',
|
|
236
|
+ },
|
|
237
|
+ SAVED: {
|
|
238
|
+ unlessAny: ['isInSession', 'isReadOnly'],
|
|
239
|
+ do: 'forceSave',
|
|
240
|
+ },
|
|
241
|
+ LOADED_FROM_FILE: {
|
|
242
|
+ unless: 'isInSession',
|
|
243
|
+ do: ['loadDocumentFromJson', 'resetHistory'],
|
|
244
|
+ },
|
|
245
|
+ SELECTED_ALL: {
|
|
246
|
+ unless: 'isInSession',
|
|
247
|
+ to: 'selecting',
|
|
248
|
+ do: 'selectAll',
|
|
249
|
+ },
|
|
250
|
+ CHANGED_PAGE: {
|
|
251
|
+ unless: 'isInSession',
|
|
252
|
+ do: 'changePage',
|
|
253
|
+ },
|
|
254
|
+ ZOOMED_TO_ACTUAL: {
|
|
255
|
+ if: 'hasSelection',
|
|
256
|
+ do: 'zoomCameraToSelectionActual',
|
|
257
|
+ else: 'zoomCameraToActual',
|
|
258
|
+ },
|
|
259
|
+ ZOOMED_CAMERA: 'zoomCamera',
|
|
260
|
+ INCREASED_CODE_FONT_SIZE: 'increaseCodeFontSize',
|
|
261
|
+ DECREASED_CODE_FONT_SIZE: 'decreaseCodeFontSize',
|
|
262
|
+ CHANGED_CODE_CONTROL: 'updateControls',
|
|
263
|
+ TOGGLED_TOOL_LOCK: 'toggleToolLock',
|
|
264
|
+ ZOOMED_TO_SELECTION: {
|
|
265
|
+ if: 'hasSelection',
|
|
266
|
+ do: 'zoomCameraToSelection',
|
|
267
|
+ },
|
|
268
|
+ STARTED_PINCHING: {
|
|
269
|
+ unless: 'isInSession',
|
|
270
|
+ to: 'pinching',
|
|
271
|
+ },
|
|
272
|
+ ZOOMED_TO_FIT: ['zoomCameraToFit', 'zoomCameraToActual'],
|
|
273
|
+ ZOOMED_IN: 'zoomIn',
|
|
274
|
+ ZOOMED_OUT: 'zoomOut',
|
|
275
|
+ RESET_CAMERA: 'resetCamera',
|
|
276
|
+ COPIED_TO_SVG: 'copyToSvg',
|
|
277
|
+ LOADED_FROM_FILE_STSTEM: 'loadFromFileSystem',
|
|
278
|
+ SAVED_AS_TO_FILESYSTEM: 'saveAsToFileSystem',
|
|
279
|
+ SAVED_TO_FILESYSTEM: {
|
|
280
|
+ unless: 'isReadOnly',
|
|
281
|
+ then: {
|
|
282
|
+ if: 'isReadOnly',
|
|
283
|
+ do: 'saveAsToFileSystem',
|
|
284
|
+ else: 'saveToFileSystem',
|
|
285
|
+ },
|
|
286
|
+ },
|
173
|
287
|
},
|
174
|
288
|
initial: 'selecting',
|
175
|
289
|
states: {
|
|
@@ -179,52 +293,60 @@ const state = createState({
|
179
|
293
|
UNDO: 'undo',
|
180
|
294
|
REDO: 'redo',
|
181
|
295
|
SAVED: 'forceSave',
|
182
|
|
- LOADED_FROM_FILE_STSTEM: 'loadFromFileSystem',
|
183
|
|
- SAVED_TO_FILESYSTEM: 'saveToFileSystem',
|
184
|
|
- SAVED_AS_TO_FILESYSTEM: 'saveAsToFileSystem',
|
185
|
|
- SAVED_CODE: 'saveCode',
|
186
|
|
- DELETED: 'deleteSelection',
|
187
|
|
- INCREASED_CODE_FONT_SIZE: 'increaseCodeFontSize',
|
188
|
|
- DECREASED_CODE_FONT_SIZE: 'decreaseCodeFontSize',
|
189
|
|
- CHANGED_CODE_CONTROL: 'updateControls',
|
190
|
|
- GENERATED_FROM_CODE: ['setCodeControls', 'setGeneratedShapes'],
|
191
|
|
- TOGGLED_TOOL_LOCK: 'toggleToolLock',
|
|
296
|
+ DELETED: {
|
|
297
|
+ unless: 'isReadOnly',
|
|
298
|
+ do: 'deleteSelection',
|
|
299
|
+ },
|
|
300
|
+ SAVED_CODE: {
|
|
301
|
+ unless: 'isReadOnly',
|
|
302
|
+ do: 'saveCode',
|
|
303
|
+ },
|
192
|
304
|
MOVED_TO_PAGE: {
|
|
305
|
+ unless: 'isReadOnly',
|
193
|
306
|
if: 'hasSelection',
|
194
|
307
|
do: ['moveSelectionToPage', 'zoomCameraToSelectionActual'],
|
195
|
308
|
},
|
196
|
|
- MOVED: { if: 'hasSelection', do: 'moveSelection' },
|
197
|
|
- DUPLICATED: { if: 'hasSelection', do: 'duplicateSelection' },
|
198
|
|
- ROTATED_CCW: { if: 'hasSelection', do: 'rotateSelectionCcw' },
|
199
|
|
- ALIGNED: { if: 'hasMultipleSelection', do: 'alignSelection' },
|
200
|
|
- STRETCHED: { if: 'hasMultipleSelection', do: 'stretchSelection' },
|
|
309
|
+ MOVED: {
|
|
310
|
+ unless: 'isReadOnly',
|
|
311
|
+ if: 'hasSelection',
|
|
312
|
+ do: 'moveSelection',
|
|
313
|
+ },
|
|
314
|
+ DUPLICATED: {
|
|
315
|
+ unless: 'isReadOnly',
|
|
316
|
+ if: 'hasSelection',
|
|
317
|
+ do: 'duplicateSelection',
|
|
318
|
+ },
|
|
319
|
+ ROTATED_CCW: {
|
|
320
|
+ unless: 'isReadOnly',
|
|
321
|
+ if: 'hasSelection',
|
|
322
|
+ do: 'rotateSelectionCcw',
|
|
323
|
+ },
|
|
324
|
+ ALIGNED: {
|
|
325
|
+ unless: 'isReadOnly',
|
|
326
|
+ if: 'hasMultipleSelection',
|
|
327
|
+ do: 'alignSelection',
|
|
328
|
+ },
|
|
329
|
+ STRETCHED: {
|
|
330
|
+ unless: 'isReadOnly',
|
|
331
|
+ if: 'hasMultipleSelection',
|
|
332
|
+ do: 'stretchSelection',
|
|
333
|
+ },
|
201
|
334
|
DISTRIBUTED: {
|
|
335
|
+ unless: 'isReadOnly',
|
202
|
336
|
if: 'hasMultipleSelection',
|
203
|
337
|
do: 'distributeSelection',
|
204
|
338
|
},
|
205
|
|
- GROUPED: { if: 'hasMultipleSelection', do: 'groupSelection' },
|
|
339
|
+ GROUPED: {
|
|
340
|
+ unless: 'isReadOnly',
|
|
341
|
+ if: 'hasMultipleSelection',
|
|
342
|
+ do: 'groupSelection',
|
|
343
|
+ },
|
206
|
344
|
UNGROUPED: {
|
|
345
|
+ unless: 'isReadOnly',
|
207
|
346
|
if: ['hasSelection', 'selectionIncludesGroups'],
|
208
|
347
|
do: 'ungroupSelection',
|
209
|
348
|
},
|
210
|
349
|
NUDGED: { do: 'nudgeSelection' },
|
211
|
|
- ZOOMED_CAMERA: {
|
212
|
|
- do: 'zoomCamera',
|
213
|
|
- },
|
214
|
|
- ZOOMED_TO_ACTUAL: {
|
215
|
|
- if: 'hasSelection',
|
216
|
|
- do: 'zoomCameraToSelectionActual',
|
217
|
|
- else: 'zoomCameraToActual',
|
218
|
|
- },
|
219
|
|
- ZOOMED_TO_SELECTION: {
|
220
|
|
- if: 'hasSelection',
|
221
|
|
- do: 'zoomCameraToSelection',
|
222
|
|
- },
|
223
|
|
- ZOOMED_TO_FIT: ['zoomCameraToFit', 'zoomCameraToActual'],
|
224
|
|
- ZOOMED_IN: 'zoomIn',
|
225
|
|
- ZOOMED_OUT: 'zoomOut',
|
226
|
|
- RESET_CAMERA: 'resetCamera',
|
227
|
|
- COPIED_TO_SVG: 'copyToSvg',
|
228
|
350
|
},
|
229
|
351
|
initial: 'notPointing',
|
230
|
352
|
states: {
|
|
@@ -232,7 +354,6 @@ const state = createState({
|
232
|
354
|
onEnter: 'clearPointedId',
|
233
|
355
|
on: {
|
234
|
356
|
CANCELLED: 'clearSelectedIds',
|
235
|
|
- STARTED_PINCHING: { to: 'pinching' },
|
236
|
357
|
POINTED_CANVAS: { to: 'brushSelecting' },
|
237
|
358
|
POINTED_BOUNDS: [
|
238
|
359
|
{
|
|
@@ -242,21 +363,27 @@ const state = createState({
|
242
|
363
|
{ to: 'pointingBounds' },
|
243
|
364
|
],
|
244
|
365
|
POINTED_BOUNDS_HANDLE: {
|
|
366
|
+ unless: 'isReadOnly',
|
245
|
367
|
if: 'isPointingRotationHandle',
|
246
|
368
|
to: 'rotatingSelection',
|
247
|
369
|
else: { to: 'transformingSelection' },
|
248
|
370
|
},
|
249
|
371
|
STARTED_EDITING_SHAPE: {
|
|
372
|
+ unless: 'isReadOnly',
|
250
|
373
|
get: 'firstSelectedShape',
|
251
|
374
|
if: ['hasSingleSelection', 'canEditSelectedShape'],
|
252
|
375
|
do: 'setEditingId',
|
253
|
376
|
to: 'editingShape',
|
254
|
377
|
},
|
255
|
378
|
DOUBLE_POINTED_BOUNDS_HANDLE: {
|
|
379
|
+ unless: 'isReadOnly',
|
256
|
380
|
if: 'hasSingleSelection',
|
257
|
381
|
do: 'resetShapeBounds',
|
258
|
382
|
},
|
259
|
|
- POINTED_HANDLE: { to: 'translatingHandles' },
|
|
383
|
+ POINTED_HANDLE: {
|
|
384
|
+ unless: 'isReadOnly',
|
|
385
|
+ to: 'translatingHandles',
|
|
386
|
+ },
|
260
|
387
|
MOVED_OVER_SHAPE: {
|
261
|
388
|
if: 'pointHitsShape',
|
262
|
389
|
then: {
|
|
@@ -360,7 +487,7 @@ const state = createState({
|
360
|
487
|
{ to: 'notPointing' },
|
361
|
488
|
],
|
362
|
489
|
MOVED_POINTER: {
|
363
|
|
- unless: 'isReadOnly',
|
|
490
|
+ unless: ['isReadOnly', 'isInSession'],
|
364
|
491
|
if: 'distanceImpliesDrag',
|
365
|
492
|
to: 'translatingSelection',
|
366
|
493
|
},
|
|
@@ -506,12 +633,6 @@ const state = createState({
|
506
|
633
|
do: 'createShape',
|
507
|
634
|
to: 'draw.editing',
|
508
|
635
|
},
|
509
|
|
- UNDO: 'undo',
|
510
|
|
- REDO: 'redo',
|
511
|
|
- SAVED: 'forceSave',
|
512
|
|
- LOADED_FROM_FILE_STSTEM: 'loadFromFileSystem',
|
513
|
|
- SAVED_TO_FILESYSTEM: 'saveToFileSystem',
|
514
|
|
- SAVED_AS_TO_FILESYSTEM: 'saveAsToFileSystem',
|
515
|
636
|
},
|
516
|
637
|
},
|
517
|
638
|
editing: {
|
|
@@ -883,6 +1004,9 @@ const state = createState({
|
883
|
1004
|
isReadOnly(data) {
|
884
|
1005
|
return data.isReadOnly
|
885
|
1006
|
},
|
|
1007
|
+ isInSession() {
|
|
1008
|
+ return session.isInSession
|
|
1009
|
+ },
|
886
|
1010
|
canEditSelectedShape(data, payload, result: Shape) {
|
887
|
1011
|
return getShapeUtils(result).canEdit && !result.isLocked
|
888
|
1012
|
},
|