@pie-element/drawing-response 3.9.8 → 3.9.10-beta.1443

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 (75) hide show
  1. package/CHANGELOG.md +381 -0
  2. package/configure/CHANGELOG.md +363 -0
  3. package/configure/lib/button.js.map +1 -1
  4. package/configure/lib/defaults.js +21 -2
  5. package/configure/lib/defaults.js.map +1 -1
  6. package/configure/lib/image-container.js +37 -21
  7. package/configure/lib/image-container.js.map +1 -1
  8. package/configure/lib/index.js +64 -11
  9. package/configure/lib/index.js.map +1 -1
  10. package/configure/lib/root.js +65 -30
  11. package/configure/lib/root.js.map +1 -1
  12. package/configure/package.json +4 -4
  13. package/configure/src/__tests__/__snapshots__/image-container.test.jsx.snap +3 -2
  14. package/configure/src/__tests__/__snapshots__/root.test.jsx.snap +34 -14
  15. package/configure/src/__tests__/image-container.test.jsx +42 -35
  16. package/configure/src/__tests__/index.test.js +7 -7
  17. package/configure/src/__tests__/root.test.jsx +18 -18
  18. package/configure/src/button.jsx +4 -4
  19. package/configure/src/defaults.js +24 -5
  20. package/configure/src/image-container.jsx +80 -59
  21. package/configure/src/index.js +46 -14
  22. package/configure/src/root.jsx +71 -63
  23. package/controller/CHANGELOG.md +20 -0
  24. package/controller/lib/defaults.js.map +1 -1
  25. package/controller/lib/index.js +13 -7
  26. package/controller/lib/index.js.map +1 -1
  27. package/controller/package.json +1 -1
  28. package/controller/src/__tests__/index.test.js +29 -19
  29. package/controller/src/defaults.js +2 -2
  30. package/controller/src/index.js +13 -14
  31. package/docs/config-schema.json +126 -0
  32. package/docs/config-schema.json.md +97 -1
  33. package/docs/demo/config.js +2 -2
  34. package/docs/demo/generate.js +4 -2
  35. package/docs/demo/session.js +4 -4
  36. package/docs/pie-schema.json +60 -0
  37. package/docs/pie-schema.json.md +44 -0
  38. package/lib/drawing-response/button.js.map +1 -1
  39. package/lib/drawing-response/constants.js.map +1 -1
  40. package/lib/drawing-response/container.js +73 -22
  41. package/lib/drawing-response/container.js.map +1 -1
  42. package/lib/drawing-response/drawable-image.js +1 -0
  43. package/lib/drawing-response/drawable-image.js.map +1 -1
  44. package/lib/drawing-response/drawable-main.js +45 -15
  45. package/lib/drawing-response/drawable-main.js.map +1 -1
  46. package/lib/drawing-response/drawable-palette.js +6 -1
  47. package/lib/drawing-response/drawable-palette.js.map +1 -1
  48. package/lib/drawing-response/drawable-text.js +15 -5
  49. package/lib/drawing-response/drawable-text.js.map +1 -1
  50. package/lib/drawing-response/drawable-transformer.js.map +1 -1
  51. package/lib/drawing-response/factory.js.map +1 -1
  52. package/lib/drawing-response/icon.js.map +1 -1
  53. package/lib/drawing-response/index.js +3 -0
  54. package/lib/drawing-response/index.js.map +1 -1
  55. package/lib/index.js +3 -0
  56. package/lib/index.js.map +1 -1
  57. package/package.json +4 -4
  58. package/src/__tests__/drawing-index-test.jsx +4 -4
  59. package/src/drawing-response/__tests__/__snapshots__/container.test.jsx.snap +174 -290
  60. package/src/drawing-response/__tests__/__snapshots__/drawing-main.test.jsx.snap +26 -2
  61. package/src/drawing-response/__tests__/container.test.jsx +9 -2
  62. package/src/drawing-response/__tests__/drawable-helper.test.jsx +1 -1
  63. package/src/drawing-response/__tests__/drawing-main.test.jsx +74 -86
  64. package/src/drawing-response/button.jsx +5 -8
  65. package/src/drawing-response/constants.js +42 -34
  66. package/src/drawing-response/container.jsx +93 -70
  67. package/src/drawing-response/drawable-image.jsx +5 -4
  68. package/src/drawing-response/drawable-main.jsx +46 -17
  69. package/src/drawing-response/drawable-palette.jsx +18 -35
  70. package/src/drawing-response/drawable-text.jsx +34 -48
  71. package/src/drawing-response/drawable-transformer.jsx +3 -1
  72. package/src/drawing-response/factory.js +3 -11
  73. package/src/drawing-response/icon.jsx +19 -20
  74. package/src/drawing-response/index.jsx +9 -15
  75. package/src/index.js +8 -11
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import {shallow} from 'enzyme';
2
+ import { shallow } from 'enzyme';
3
3
  import cloneDeep from 'lodash/cloneDeep';
4
4
  import FreePathDrawable from '../drawable-free-path';
5
5
  import LineDrawable from '../drawable-line';
@@ -7,7 +7,7 @@ import RectangleDrawable from '../drawable-rectangle';
7
7
  import CircleDrawable from '../drawable-circle';
8
8
  import EraserDrawable from '../drawable-eraser';
9
9
  import DrawableText from '../drawable-text';
10
- import {DrawableMain} from '../drawable-main';
10
+ import { DrawableMain } from '../drawable-main';
11
11
 
12
12
  const drawableClasses = {
13
13
  FreePathDrawable,
@@ -15,7 +15,7 @@ const drawableClasses = {
15
15
  RectangleDrawable,
16
16
  CircleDrawable,
17
17
  EraserDrawable,
18
- DrawableText
18
+ DrawableText,
19
19
  };
20
20
 
21
21
  describe('DrawingResponse', () => {
@@ -46,19 +46,19 @@ describe('DrawingResponse', () => {
46
46
  onSessionChange,
47
47
  imageDimensions: {},
48
48
  imageUrl: 'url',
49
- drawableDimensions: {height: 350, width: 353},
49
+ drawableDimensions: { height: 350, width: 353 },
50
50
  fillColor: 'white',
51
51
  outlineColor: 'black',
52
52
  paintColor: 'red',
53
53
  session: {},
54
- toolActive: {type: 'Select', label: 'Select', icon: 'mdiCursorDefault'},
55
- TextEntry
54
+ toolActive: { type: 'Select', label: 'Select', icon: 'mdiCursorDefault' },
55
+ TextEntry,
56
56
  };
57
- const props = {...defaults, ...extras};
57
+ const props = { ...defaults, ...extras };
58
58
  return shallow(<DrawableMain {...props} />, {
59
- ...renderOpts
59
+ ...renderOpts,
60
60
  });
61
- }
61
+ };
62
62
 
63
63
  describe('snapshot', () => {
64
64
  it('renders', () => {
@@ -67,7 +67,7 @@ describe('DrawingResponse', () => {
67
67
  });
68
68
 
69
69
  it('renders disabled', () => {
70
- const w = wrapperMain({disabled: true});
70
+ const w = wrapperMain({ disabled: true });
71
71
  expect(w).toMatchSnapshot();
72
72
  });
73
73
  });
@@ -90,7 +90,7 @@ describe('DrawingResponse', () => {
90
90
  it('handleUndo', () => {
91
91
  const w = wrapperMain();
92
92
 
93
- w.setState({drawables: [new RectangleDrawable(props), new RectangleDrawable(props)]});
93
+ w.setState({ drawables: [new RectangleDrawable(props), new RectangleDrawable(props)] });
94
94
  w.instance().handleUndo();
95
95
 
96
96
  expect(w.state('drawables').length).toEqual(1);
@@ -103,12 +103,12 @@ describe('DrawingResponse', () => {
103
103
  it('handleClearAll', () => {
104
104
  const w = wrapperMain();
105
105
 
106
- w.setState({drawables: [new RectangleDrawable(props), new RectangleDrawable(props)]});
106
+ w.setState({ drawables: [new RectangleDrawable(props), new RectangleDrawable(props)] });
107
107
  w.instance().handleClearAll();
108
108
 
109
109
  expect(w.state('drawables')).toEqual([]);
110
110
  });
111
- })
111
+ });
112
112
  });
113
113
 
114
114
  describe('CircleDrawable', () => {
@@ -154,8 +154,8 @@ describe('DrawingResponse', () => {
154
154
  const event = {
155
155
  target: {
156
156
  getX: jest.fn().mockReturnValue(300),
157
- getY: jest.fn().mockReturnValue(300)
158
- }
157
+ getY: jest.fn().mockReturnValue(300),
158
+ },
159
159
  };
160
160
 
161
161
  element.handleDragEnd(props, event);
@@ -170,8 +170,8 @@ describe('DrawingResponse', () => {
170
170
  const event = {
171
171
  target: {
172
172
  getX: jest.fn().mockReturnValue(300),
173
- getY: jest.fn().mockReturnValue(300)
174
- }
173
+ getY: jest.fn().mockReturnValue(300),
174
+ },
175
175
  };
176
176
 
177
177
  element.handleDragEnd(props, event);
@@ -220,8 +220,8 @@ describe('DrawingResponse', () => {
220
220
  const event = {
221
221
  target: {
222
222
  getX: jest.fn().mockReturnValue(300),
223
- getY: jest.fn().mockReturnValue(300)
224
- }
223
+ getY: jest.fn().mockReturnValue(300),
224
+ },
225
225
  };
226
226
 
227
227
  element.handleDragEnd(props, event);
@@ -236,8 +236,8 @@ describe('DrawingResponse', () => {
236
236
  const event = {
237
237
  target: {
238
238
  getX: jest.fn().mockReturnValue(300),
239
- getY: jest.fn().mockReturnValue(300)
240
- }
239
+ getY: jest.fn().mockReturnValue(300),
240
+ },
241
241
  };
242
242
 
243
243
  element.handleDragEnd(props, event);
@@ -293,8 +293,8 @@ describe('DrawingResponse', () => {
293
293
  const event = {
294
294
  target: {
295
295
  getX: jest.fn().mockReturnValue(300),
296
- getY: jest.fn().mockReturnValue(300)
297
- }
296
+ getY: jest.fn().mockReturnValue(300),
297
+ },
298
298
  };
299
299
 
300
300
  element.handleDragEnd(props, event);
@@ -309,8 +309,8 @@ describe('DrawingResponse', () => {
309
309
  const event = {
310
310
  target: {
311
311
  getX: jest.fn().mockReturnValue(300),
312
- getY: jest.fn().mockReturnValue(300)
313
- }
312
+ getY: jest.fn().mockReturnValue(300),
313
+ },
314
314
  };
315
315
 
316
316
  element.handleDragEnd(props, event);
@@ -366,8 +366,8 @@ describe('DrawingResponse', () => {
366
366
  const event = {
367
367
  target: {
368
368
  getX: jest.fn().mockReturnValue(300),
369
- getY: jest.fn().mockReturnValue(300)
370
- }
369
+ getY: jest.fn().mockReturnValue(300),
370
+ },
371
371
  };
372
372
 
373
373
  element.handleDragEnd(props, event);
@@ -382,8 +382,8 @@ describe('DrawingResponse', () => {
382
382
  const event = {
383
383
  target: {
384
384
  getX: jest.fn().mockReturnValue(300),
385
- getY: jest.fn().mockReturnValue(300)
386
- }
385
+ getY: jest.fn().mockReturnValue(300),
386
+ },
387
387
  };
388
388
 
389
389
  element.handleDragEnd(props, event);
@@ -437,8 +437,8 @@ describe('DrawingResponse', () => {
437
437
  const event = {
438
438
  target: {
439
439
  getX: jest.fn().mockReturnValue(300),
440
- getY: jest.fn().mockReturnValue(300)
441
- }
440
+ getY: jest.fn().mockReturnValue(300),
441
+ },
442
442
  };
443
443
 
444
444
  element.handleDragEnd(props, event);
@@ -453,8 +453,8 @@ describe('DrawingResponse', () => {
453
453
  const event = {
454
454
  target: {
455
455
  getX: jest.fn().mockReturnValue(300),
456
- getY: jest.fn().mockReturnValue(300)
457
- }
456
+ getY: jest.fn().mockReturnValue(300),
457
+ },
458
458
  };
459
459
 
460
460
  element.handleDragEnd(props, event);
@@ -481,8 +481,8 @@ describe('DrawingResponse', () => {
481
481
  transformerVisible: true,
482
482
  textareaVisible: false,
483
483
  createdAt: new Date(),
484
- type: 'text-entry'
485
- }
484
+ type: 'text-entry',
485
+ },
486
486
  ];
487
487
  let handleSessionChange = jest.fn();
488
488
  let forceUpdate = jest.fn();
@@ -493,7 +493,7 @@ describe('DrawingResponse', () => {
493
493
  beforeEach(() => {
494
494
  stage = {
495
495
  on: jest.fn(),
496
- off: jest.fn()
496
+ off: jest.fn(),
497
497
  };
498
498
 
499
499
  props = {
@@ -507,7 +507,8 @@ describe('DrawingResponse', () => {
507
507
  startx: 200,
508
508
  starty: 200,
509
509
  x: 300,
510
- y: 300
510
+ y: 300,
511
+ scale: 1,
511
512
  };
512
513
  wrapper = mkWrapper('DrawableText', props, 'div');
513
514
  });
@@ -528,7 +529,7 @@ describe('DrawingResponse', () => {
528
529
 
529
530
  describe('snapshot when there is no value', () => {
530
531
  beforeEach(() => {
531
- props.all.forEach(a => {
532
+ props.all.forEach((a) => {
532
533
  delete a.value;
533
534
  });
534
535
  wrapper = mkWrapper('DrawableText', props, 'div');
@@ -560,9 +561,9 @@ describe('DrawingResponse', () => {
560
561
  textVisible: true,
561
562
  transformerVisible: true,
562
563
  textareaVisible: false,
563
- type: 'text-entry'
564
- })
565
- ])
564
+ type: 'text-entry',
565
+ }),
566
+ ]),
566
567
  );
567
568
 
568
569
  expect(stage.on).toHaveBeenCalled();
@@ -579,9 +580,9 @@ describe('DrawingResponse', () => {
579
580
  expect.objectContaining({
580
581
  textVisible: true,
581
582
  transformerVisible: false,
582
- textareaVisible: false
583
- })
584
- ])
583
+ textareaVisible: false,
584
+ }),
585
+ ]),
585
586
  );
586
587
  });
587
588
  });
@@ -594,8 +595,8 @@ describe('DrawingResponse', () => {
594
595
  expect.objectContaining({
595
596
  textVisible: false,
596
597
  transformerVisible: false,
597
- textareaVisible: true
598
- })
598
+ textareaVisible: true,
599
+ }),
599
600
  );
600
601
 
601
602
  expect(forceUpdate).toHaveBeenCalled();
@@ -606,8 +607,8 @@ describe('DrawingResponse', () => {
606
607
  expect.objectContaining({
607
608
  textVisible: true,
608
609
  transformerVisible: true,
609
- textareaVisible: false
610
- })
610
+ textareaVisible: false,
611
+ }),
611
612
  );
612
613
 
613
614
  expect(forceUpdate).toHaveBeenCalled();
@@ -620,8 +621,8 @@ describe('DrawingResponse', () => {
620
621
 
621
622
  expect(element.all[0]).toEqual(
622
623
  expect.objectContaining({
623
- isDefault: false
624
- })
624
+ isDefault: false,
625
+ }),
625
626
  );
626
627
  });
627
628
  });
@@ -629,10 +630,10 @@ describe('DrawingResponse', () => {
629
630
  describe('saveValue', () => {
630
631
  it('should make the item with the right id default and call handleSessionChange', () => {
631
632
  const textNode = {
632
- text: jest.fn()
633
+ text: jest.fn(),
633
634
  };
634
635
  const textareaNode = {
635
- value: 'Foo bar'
636
+ value: 'Foo bar',
636
637
  };
637
638
 
638
639
  element.saveValue('gcifqhhimf8k2d6g8hs', textNode, textareaNode);
@@ -647,9 +648,9 @@ describe('DrawingResponse', () => {
647
648
  expect(element.all).toEqual(
648
649
  expect.not.arrayContaining([
649
650
  expect.objectContaining({
650
- id: 'gcifqhhimf8k2d6g8hs'
651
- })
652
- ])
651
+ id: 'gcifqhhimf8k2d6g8hs',
652
+ }),
653
+ ]),
653
654
  );
654
655
  expect(forceUpdate).toHaveBeenCalled();
655
656
  expect(handleSessionChange).toHaveBeenCalled();
@@ -671,9 +672,9 @@ describe('DrawingResponse', () => {
671
672
  expect(element.all).toEqual(
672
673
  expect.arrayContaining([
673
674
  expect.objectContaining({
674
- transformerVisible: true
675
- })
676
- ])
675
+ transformerVisible: true,
676
+ }),
677
+ ]),
677
678
  );
678
679
 
679
680
  expect(forceUpdate).toHaveBeenCalled();
@@ -682,13 +683,13 @@ describe('DrawingResponse', () => {
682
683
  it('should call the right functions onDblClick', () => {
683
684
  const text = {
684
685
  id: 'gcifqhhimf8k2d6g8hs',
685
- isDefault: false
686
+ isDefault: false,
686
687
  };
687
688
 
688
689
  const textNode = (element[`text_${text.id}`] = {
689
690
  _lastPos: {
690
691
  x: 200,
691
- y: 200
692
+ y: 200,
692
693
  },
693
694
  align: jest.fn().mockReturnValue('center'),
694
695
  fill: jest.fn().mockReturnValue('green'),
@@ -699,13 +700,13 @@ describe('DrawingResponse', () => {
699
700
  padding: jest.fn().mockReturnValue(0),
700
701
  rotation: jest.fn().mockReturnValue(0),
701
702
  text: jest.fn().mockReturnValue('foo bar'),
702
- width: jest.fn().mockReturnValue(200)
703
+ width: jest.fn().mockReturnValue(200),
703
704
  });
704
705
  const textareaNode = (element[`textarea_${text.id}`] = {
705
706
  focus: jest.fn(),
706
707
  addEventListener: jest.fn(),
707
708
  style: {},
708
- scrollHeight: 205
709
+ scrollHeight: 205,
709
710
  });
710
711
 
711
712
  const initSpy = jest.spyOn(element, 'initializeDefault');
@@ -736,23 +737,19 @@ describe('DrawingResponse', () => {
736
737
  transformOrigin: 'left top',
737
738
  textAlign: 'center',
738
739
  transform: 'translateY(-0px)',
739
- width: '200px'
740
+ width: '200px',
740
741
  });
741
742
 
742
743
  expect(textareaNode.focus).toHaveBeenCalled();
743
744
  expect(stage.on).toHaveBeenCalled();
744
745
  expect(initSpy).toHaveBeenCalledWith('gcifqhhimf8k2d6g8hs', false);
745
746
  expect(forceUpdate).toHaveBeenCalled();
746
- expect(textareaNode.addEventListener.mock.calls[0][0]).toEqual(
747
- 'keydown'
748
- );
749
- expect(textareaNode.addEventListener.mock.calls[1][0]).toEqual(
750
- 'blur'
751
- );
747
+ expect(textareaNode.addEventListener.mock.calls[0][0]).toEqual('keydown');
748
+ expect(textareaNode.addEventListener.mock.calls[1][0]).toEqual('blur');
752
749
 
753
750
  const event = {
754
751
  keyCode: 13,
755
- shiftKey: true
752
+ shiftKey: true,
756
753
  };
757
754
 
758
755
  textareaNode.addEventListener.mock.calls[0][1](event);
@@ -766,11 +763,7 @@ describe('DrawingResponse', () => {
766
763
  textareaNode.addEventListener.mock.calls[0][1](event);
767
764
 
768
765
  expect(toggleSpy).toHaveBeenCalledWith('gcifqhhimf8k2d6g8hs', false);
769
- expect(saveValueSpy).toHaveBeenCalledWith(
770
- 'gcifqhhimf8k2d6g8hs',
771
- textNode,
772
- textareaNode
773
- );
766
+ expect(saveValueSpy).toHaveBeenCalledWith('gcifqhhimf8k2d6g8hs', textNode, textareaNode);
774
767
 
775
768
  event.keyCode = 27;
776
769
 
@@ -785,11 +778,7 @@ describe('DrawingResponse', () => {
785
778
  stage.on.mock.calls[0][1](event);
786
779
 
787
780
  expect(showTextSpy).toHaveBeenCalled();
788
- expect(saveValueSpy).toHaveBeenCalledWith(
789
- 'gcifqhhimf8k2d6g8hs',
790
- textNode,
791
- textareaNode
792
- );
781
+ expect(saveValueSpy).toHaveBeenCalledWith('gcifqhhimf8k2d6g8hs', textNode, textareaNode);
793
782
  });
794
783
  });
795
784
 
@@ -798,14 +787,14 @@ describe('DrawingResponse', () => {
798
787
  const textNode = (element[`text_gcifqhhimf8k2d6g8hs`] = {
799
788
  setAttrs: jest.fn(),
800
789
  width: jest.fn().mockReturnValue(100),
801
- scaleX: jest.fn().mockReturnValue(1)
790
+ scaleX: jest.fn().mockReturnValue(1),
802
791
  });
803
792
 
804
793
  element.handleTransform(null, 'text_gcifqhhimf8k2d6g8hs');
805
794
 
806
795
  expect(textNode.setAttrs).toHaveBeenCalledWith({
807
796
  width: 100,
808
- scaleX: 1
797
+ scaleX: 1,
809
798
  });
810
799
  });
811
800
  });
@@ -824,11 +813,11 @@ describe('DrawingResponse', () => {
824
813
  it('should set the stage listener only once', () => {
825
814
  const separateStage = {
826
815
  on: jest.fn(),
827
- off: jest.fn()
816
+ off: jest.fn(),
828
817
  };
829
818
  const newProps = {
830
819
  ...cloneDeep(props),
831
- stage: separateStage
820
+ stage: separateStage,
832
821
  };
833
822
  const newElement = new drawableClasses['DrawableText'](newProps);
834
823
 
@@ -844,5 +833,4 @@ describe('DrawingResponse', () => {
844
833
  });
845
834
  });
846
835
  });
847
- })
848
- ;
836
+ });
@@ -22,12 +22,9 @@ RawButton.propTypes = {
22
22
  classes: PropTypes.object.isRequired,
23
23
  className: PropTypes.string,
24
24
  disabled: PropTypes.bool,
25
- label: PropTypes.oneOfType([
26
- PropTypes.string,
27
- PropTypes.object,
28
- ]),
25
+ label: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
29
26
  onClick: PropTypes.func,
30
- title: PropTypes.string
27
+ title: PropTypes.string,
31
28
  };
32
29
 
33
30
  RawButton.defaultProps = {
@@ -35,7 +32,7 @@ RawButton.defaultProps = {
35
32
  disabled: false,
36
33
  label: 'Add',
37
34
  onClick: () => {},
38
- title: ''
35
+ title: '',
39
36
  };
40
37
 
41
38
  const styles = () => ({
@@ -49,8 +46,8 @@ const styles = () => ({
49
46
  '& svg': {
50
47
  width: '1.3em !important',
51
48
  height: '1.3em !important',
52
- }
53
- }
49
+ },
50
+ },
54
51
  },
55
52
  });
56
53
 
@@ -1,36 +1,44 @@
1
1
  export default {
2
- tools: [{
3
- type: 'Select',
4
- label: 'Select',
5
- icon: 'mdiCursorDefault'
6
- },{
7
- type: 'FreePathDrawable',
8
- label: 'Free Draw',
9
- icon: 'mdiPencil'
10
- },{
11
- type: 'LineDrawable',
12
- label: 'Line',
13
- icon: 'mdiMinus'
14
- },{
15
- type: 'RectangleDrawable',
16
- label: 'Rectangle',
17
- icon: 'mdiRectangle'
18
- },{
19
- type: 'CircleDrawable',
20
- label: 'Circle',
21
- icon: 'mdiCircle'
22
- },{
23
- type: 'Text',
24
- label: 'Text Entry',
25
- icon: 'mdiFormatColorText'
26
- },{
27
- // ,{
28
- // type: 'PaintBucket',
29
- // label: 'Paint Bucket',
30
- // icon: 'mdiFormatColorFill'
31
- // },
32
- type: 'EraserDrawable',
33
- label: 'Eraser',
34
- icon: 'mdiEraser'
35
- }]
2
+ tools: [
3
+ {
4
+ type: 'Select',
5
+ label: 'Select',
6
+ icon: 'mdiCursorDefault',
7
+ },
8
+ {
9
+ type: 'FreePathDrawable',
10
+ label: 'Free Draw',
11
+ icon: 'mdiPencil',
12
+ },
13
+ {
14
+ type: 'LineDrawable',
15
+ label: 'Line',
16
+ icon: 'mdiMinus',
17
+ },
18
+ {
19
+ type: 'RectangleDrawable',
20
+ label: 'Rectangle',
21
+ icon: 'mdiRectangle',
22
+ },
23
+ {
24
+ type: 'CircleDrawable',
25
+ label: 'Circle',
26
+ icon: 'mdiCircle',
27
+ },
28
+ {
29
+ type: 'Text',
30
+ label: 'Text Entry',
31
+ icon: 'mdiFormatColorText',
32
+ },
33
+ {
34
+ // ,{
35
+ // type: 'PaintBucket',
36
+ // label: 'Paint Bucket',
37
+ // icon: 'mdiFormatColorFill'
38
+ // },
39
+ type: 'EraserDrawable',
40
+ label: 'Eraser',
41
+ icon: 'mdiEraser',
42
+ },
43
+ ],
36
44
  };