@pie-element/inline-dropdown 8.3.2-tip-tap.2 → 8.3.2-tip-tap.4

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.
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+
3
+ var _markupUtils = require("../markupUtils");
4
+
5
+ describe('markupUtils', function () {
6
+ describe('createElementFromHTML', function () {
7
+ it('should create dom element from string', function () {
8
+ var el = (0, _markupUtils.createElementFromHTML)("<div>Foo Bar</div>");
9
+ expect(el.outerHTML).toEqual('<div><div>Foo Bar</div></div>');
10
+ });
11
+ });
12
+ describe('removeUnwantedCharacters', function () {
13
+ it('should remove \\t and \\n characters', function () {
14
+ expect((0, _markupUtils.removeUnwantedCharacters)('<div>foo\t\nbar</div>')).toEqual('<div>foobar</div>');
15
+ });
16
+ it('should remove \\t and \\n characters', function () {
17
+ expect((0, _markupUtils.removeUnwantedCharacters)('<div>foo\\t\\nbar</div>')).toEqual('<div>foobar</div>');
18
+ });
19
+ it('should replace \\" with "', function () {
20
+ expect((0, _markupUtils.removeUnwantedCharacters)('<div>"foo bar"</div>')).toEqual('<div>"foo bar"</div>');
21
+ });
22
+ it('should replace \\/ with /', function () {
23
+ expect((0, _markupUtils.removeUnwantedCharacters)('<div>foo/bar</div>')).toEqual('<div>foo/bar</div>');
24
+ });
25
+ it('should not remove \\t character which has latex like \\times', function () {
26
+ expect((0, _markupUtils.removeUnwantedCharacters)('<div><span data-latex="" data-raw="3\\times3\\div2">3\\times3\\div2</span></div>')).toEqual('<div><span data-latex="" data-raw="3\\times3\\div2">3\\times3\\div2</span></div>');
27
+ });
28
+ });
29
+ describe('processMarkup', function () {
30
+ it('should get processed markup', function () {
31
+ var markup = ['<div>', '<span data-type="inline_dropdown" data-value="foobar" data-index="0"></span>', '<span data-type="inline_dropdown" data-value="barfoo" data-index="1"></span>', '</div>'].join('');
32
+ var processed = (0, _markupUtils.processMarkup)(markup);
33
+ expect(processed).toEqual(['<div>', '{{0}}', '{{1}}', '</div>'].join(''));
34
+ });
35
+ });
36
+ describe('createSlateMarkup', function () {
37
+ it('should create slate markup from the regular markup and choices', function () {
38
+ var markup = ['<div>', '{{0}}', '{{1}}', '</div>'].join('');
39
+ var choices = {
40
+ 0: [{
41
+ id: '0',
42
+ value: 'foobar',
43
+ label: 'foobar'
44
+ }, {
45
+ id: '1',
46
+ value: 'barfoo',
47
+ label: 'barfoo'
48
+ }, {
49
+ id: '2',
50
+ value: 'hufu',
51
+ label: 'hufu',
52
+ correct: true
53
+ }],
54
+ 1: [{
55
+ id: '0',
56
+ value: 'foobar',
57
+ label: 'foobar'
58
+ }, {
59
+ id: '1',
60
+ value: 'barfoo',
61
+ label: 'barfoo'
62
+ }, {
63
+ id: '2',
64
+ value: 'hufu',
65
+ label: 'hufu',
66
+ correct: true
67
+ }]
68
+ };
69
+ var slateMarkup = (0, _markupUtils.createSlateMarkup)(markup, choices);
70
+ expect(slateMarkup).toEqual(['<div>', '<span data-type="inline_dropdown" data-index="0" data-value="hufu"></span>', '<span data-type="inline_dropdown" data-index="1" data-value="hufu"></span>', '</div>'].join(''));
71
+ });
72
+ it('should handle choices with empty values', function () {
73
+ var markup = ['<div>', '{{0}}', '{{1}}', '</div>'].join('');
74
+ var choices = {
75
+ 0: [{
76
+ id: '0',
77
+ value: 'foobar',
78
+ label: 'foobar'
79
+ }, {
80
+ id: '1',
81
+ value: 'barfoo',
82
+ label: 'barfoo'
83
+ }, {
84
+ id: '2',
85
+ value: 'hufu',
86
+ label: 'hufu',
87
+ correct: true
88
+ }],
89
+ 1: [{
90
+ id: '0',
91
+ value: 'foobar',
92
+ label: 'foobar'
93
+ }, {
94
+ id: '1',
95
+ value: 'barfoo',
96
+ label: 'barfoo'
97
+ }, {
98
+ id: '2',
99
+ value: 'hufu',
100
+ label: 'hufu'
101
+ }]
102
+ };
103
+ var slateMarkup = (0, _markupUtils.createSlateMarkup)(markup, choices);
104
+ expect(slateMarkup).toEqual(['<div>', '<span data-type="inline_dropdown" data-index="0" data-value="hufu"></span>', '<span data-type="inline_dropdown" data-index="1" data-value=""></span>', '</div>'].join(''));
105
+ });
106
+ });
107
+ });
108
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vbWFya3VwVXRpbHMudGVzdC5qc3giXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJpdCIsImVsIiwiZXhwZWN0Iiwib3V0ZXJIVE1MIiwidG9FcXVhbCIsIm1hcmt1cCIsImpvaW4iLCJwcm9jZXNzZWQiLCJjaG9pY2VzIiwiaWQiLCJ2YWx1ZSIsImxhYmVsIiwiY29ycmVjdCIsInNsYXRlTWFya3VwIl0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUVBQSxRQUFRLENBQUMsYUFBRCxFQUFnQixZQUFNO0FBQzVCQSxFQUFBQSxRQUFRLENBQUMsdUJBQUQsRUFBMEIsWUFBTTtBQUN0Q0MsSUFBQUEsRUFBRSxDQUFDLHVDQUFELEVBQTBDLFlBQU07QUFDaEQsVUFBTUMsRUFBRSxHQUFHLDZEQUFYO0FBRUFDLE1BQUFBLE1BQU0sQ0FBQ0QsRUFBRSxDQUFDRSxTQUFKLENBQU4sQ0FBcUJDLE9BQXJCLENBQTZCLCtCQUE3QjtBQUNELEtBSkMsQ0FBRjtBQUtELEdBTk8sQ0FBUjtBQVFBTCxFQUFBQSxRQUFRLENBQUMsMEJBQUQsRUFBNkIsWUFBTTtBQUN6Q0MsSUFBQUEsRUFBRSxDQUFDLHNDQUFELEVBQXlDLFlBQU07QUFDL0NFLE1BQUFBLE1BQU0sQ0FBQywyQ0FBeUIsdUJBQXpCLENBQUQsQ0FBTixDQUEwREUsT0FBMUQsQ0FBa0UsbUJBQWxFO0FBQ0QsS0FGQyxDQUFGO0FBSUFKLElBQUFBLEVBQUUsQ0FBQyxzQ0FBRCxFQUF5QyxZQUFNO0FBQy9DRSxNQUFBQSxNQUFNLENBQUMsMkNBQXlCLHlCQUF6QixDQUFELENBQU4sQ0FBNERFLE9BQTVELENBQW9FLG1CQUFwRTtBQUNELEtBRkMsQ0FBRjtBQUlBSixJQUFBQSxFQUFFLENBQUMsMkJBQUQsRUFBOEIsWUFBTTtBQUNwQ0UsTUFBQUEsTUFBTSxDQUFDLDJDQUF5QixzQkFBekIsQ0FBRCxDQUFOLENBQXlERSxPQUF6RCxDQUFpRSxzQkFBakU7QUFDRCxLQUZDLENBQUY7QUFJQUos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bGF0ZU1hcmt1cCwgcHJvY2Vzc01hcmt1cCwgcmVtb3ZlVW53YW50ZWRDaGFyYWN0ZXJzIH0gZnJvbSAnLi4vbWFya3VwVXRpbHMnO1xuXG5kZXNjcmliZSgnbWFya3VwVXRpbHMnLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdjcmVhdGVFbGVtZW50RnJvbUhUTUwnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBjcmVhdGUgZG9tIGVsZW1lbnQgZnJvbSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IGNyZWF0ZUVsZW1lbnRGcm9tSFRNTChgPGRpdj5Gb28gQmFyPC9kaXY+YCk7XG5cbiAgICAgIGV4cGVjdChlbC5vdXRlckhUTUwpLnRvRXF1YWwoJzxkaXY+PGRpdj5Gb28gQmFyPC9kaXY+PC9kaXY+Jyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW1vdmVVbndhbnRlZENoYXJhY3RlcnMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZW1vdmUgXFxcXHQgYW5kIFxcXFxuIGNoYXJhY3RlcnMnLCAoKSA9PiB7XG4gICAgICBleHBlY3QocmVtb3ZlVW53YW50ZWRDaGFyYWN0ZXJzKCc8ZGl2PmZvb1xcdFxcbmJhcjwvZGl2PicpKS50b0VxdWFsKCc8ZGl2PmZvb2JhcjwvZGl2PicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZW1vdmUgXFxcXHQgYW5kIFxcXFxuIGNoYXJhY3RlcnMnLCAoKSA9PiB7XG4gICAgICBleHBlY3QocmVtb3ZlVW53YW50ZWRDaGFyYWN0ZXJzKCc8ZGl2PmZvb1xcXFx0XFxcXG5iYXI8L2Rpdj4nKSkudG9FcXVhbCgnPGRpdj5mb29iYXI8L2Rpdj4nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVwbGFjZSBcXFxcXCIgd2l0aCBcIicsICgpID0+IHtcbiAgICAgIGV4cGVjdChyZW1vdmVVbndhbnRlZENoYXJhY3RlcnMoJzxkaXY+XCJmb28gYmFyXCI8L2Rpdj4nKSkudG9FcXVhbCgnPGRpdj5cImZvbyBiYXJcIjwvZGl2PicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXBsYWNlIFxcXFwvIHdpdGggLycsICgpID0+IHtcbiAgICAgIGV4cGVjdChyZW1vdmVVbndhbnRlZENoYXJhY3RlcnMoJzxkaXY+Zm9vL2JhcjwvZGl2PicpKS50b0VxdWFsKCc8ZGl2PmZvby9iYXI8L2Rpdj4nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IHJlbW92ZSBcXFxcdCBjaGFyYWN0ZXIgd2hpY2ggaGFzIGxhdGV4IGxpa2UgXFxcXHRpbWVzJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KFxuICAgICAgICByZW1vdmVVbndhbnRlZENoYXJhY3RlcnMoJzxkaXY+PHNwYW4gZGF0YS1sYXRleD1cIlwiIGRhdGEtcmF3PVwiM1xcXFx0aW1lczNcXFxcZGl2MlwiPjNcXFxcdGltZXMzXFxcXGRpdjI8L3NwYW4+PC9kaXY+JyksXG4gICAgICApLnRvRXF1YWwoJzxkaXY+PHNwYW4gZGF0YS1sYXRleD1cIlwiIGRhdGEtcmF3PVwiM1xcXFx0aW1lczNcXFxcZGl2MlwiPjNcXFxcdGltZXMzXFxcXGRpdjI8L3NwYW4+PC9kaXY+Jyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdwcm9jZXNzTWFya3VwJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZ2V0IHByb2Nlc3NlZCBtYXJrdXAnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtYXJrdXAgPSBbXG4gICAgICAgICc8ZGl2PicsXG4gICAgICAgICc8c3BhbiBkYXRhLXR5cGU9XCJpbmxpbmVfZHJvcGRvd25cIiBkYXRhLXZhbHVlPVwiZm9vYmFyXCIgZGF0YS1pbmRleD1cIjBcIj48L3NwYW4+JyxcbiAgICAgICAgJzxzcGFuIGRhdGEtdHlwZT1cImlubGluZV9kcm9wZG93blwiIGRhdGEtdmFsdWU9XCJiYXJmb29cIiBkYXRhLWluZGV4PVwiMVwiPjwvc3Bhbj4nLFxuICAgICAgICAnPC9kaXY+JyxcbiAgICAgIF0uam9pbignJyk7XG4gICAgICBjb25zdCBwcm9jZXNzZWQgPSBwcm9jZXNzTWFya3VwKG1hcmt1cCk7XG5cbiAgICAgIGV4cGVjdChwcm9jZXNzZWQpLnRvRXF1YWwoWyc8ZGl2PicsICd7ezB9fScsICd7ezF9fScsICc8L2Rpdj4nXS5qb2luKCcnKSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjcmVhdGVTbGF0ZU1hcmt1cCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGNyZWF0ZSBzbGF0ZSBtYXJrdXAgZnJvbSB0aGUgcmVndWxhciBtYXJrdXAgYW5kIGNob2ljZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtYXJrdXAgPSBbJzxkaXY+JywgJ3t7MH19JywgJ3t7MX19JywgJzwvZGl2PiddLmpvaW4oJycpO1xuICAgICAgY29uc3QgY2hvaWNlcyA9IHtcbiAgICAgICAgMDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnMCcsXG4gICAgICAgICAgICB2YWx1ZTogJ2Zvb2JhcicsXG4gICAgICAgICAgICBsYWJlbDogJ2Zvb2JhcicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAgdmFsdWU6ICdiYXJmb28nLFxuICAgICAgICAgICAgbGFiZWw6ICdiYXJmb28nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICcyJyxcbiAgICAgICAgICAgIHZhbHVlOiAnaHVmdScsXG4gICAgICAgICAgICBsYWJlbDogJ2h1ZnUnLFxuICAgICAgICAgICAgY29ycmVjdDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICAxOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICcwJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZm9vYmFyJyxcbiAgICAgICAgICAgIGxhYmVsOiAnZm9vYmFyJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICB2YWx1ZTogJ2JhcmZvbycsXG4gICAgICAgICAgICBsYWJlbDogJ2JhcmZvbycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJzInLFxuICAgICAgICAgICAgdmFsdWU6ICdodWZ1JyxcbiAgICAgICAgICAgIGxhYmVsOiAnaHVmdScsXG4gICAgICAgICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3Qgc2xhdGVNYXJrdXAgPSBjcmVhdGVTbGF0ZU1hcmt1cChtYXJrdXAsIGNob2ljZXMpO1xuXG4gICAgICBleHBlY3Qoc2xhdGVNYXJrdXApLnRvRXF1YWwoXG4gICAgICAgIFtcbiAgICAgICAgICAnPGRpdj4nLFxuICAgICAgICAgICc8c3BhbiBkYXRhLXR5cGU9XCJpbmxpbmVfZHJvcGRvd25cIiBkYXRhLWluZGV4PVwiMFwiIGRhdGEtdmFsdWU9XCJodWZ1XCI+PC9zcGFuPicsXG4gICAgICAgICAgJzxzcGFuIGRhdGEtdHlwZT1cImlubGluZV9kcm9wZG93blwiIGRhdGEtaW5kZXg9XCIxXCIgZGF0YS12YWx1ZT1cImh1ZnVcIj48L3NwYW4+JyxcbiAgICAgICAgICAnPC9kaXY+JyxcbiAgICAgICAgXS5qb2luKCcnKSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBjaG9pY2VzIHdpdGggZW1wdHkgdmFsdWVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWFya3VwID0gWyc8ZGl2PicsICd7ezB9fScsICd7ezF9fScsICc8L2Rpdj4nXS5qb2luKCcnKTtcbiAgICAgIGNvbnN0IGNob2ljZXMgPSB7XG4gICAgICAgIDA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJzAnLFxuICAgICAgICAgICAgdmFsdWU6ICdmb29iYXInLFxuICAgICAgICAgICAgbGFiZWw6ICdmb29iYXInLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIHZhbHVlOiAnYmFyZm9vJyxcbiAgICAgICAgICAgIGxhYmVsOiAnYmFyZm9vJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnMicsXG4gICAgICAgICAgICB2YWx1ZTogJ2h1ZnUnLFxuICAgICAgICAgICAgbGFiZWw6ICdodWZ1JyxcbiAgICAgICAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgMTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnMCcsXG4gICAgICAgICAgICB2YWx1ZTogJ2Zvb2JhcicsXG4gICAgICAgICAgICBsYWJlbDogJ2Zvb2JhcicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAgdmFsdWU6ICdiYXJmb28nLFxuICAgICAgICAgICAgbGFiZWw6ICdiYXJmb28nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICcyJyxcbiAgICAgICAgICAgIHZhbHVlOiAnaHVmdScsXG4gICAgICAgICAgICBsYWJlbDogJ2h1ZnUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3Qgc2xhdGVNYXJrdXAgPSBjcmVhdGVTbGF0ZU1hcmt1cChtYXJrdXAsIGNob2ljZXMpO1xuXG4gICAgICBleHBlY3Qoc2xhdGVNYXJrdXApLnRvRXF1YWwoXG4gICAgICAgIFtcbiAgICAgICAgICAnPGRpdj4nLFxuICAgICAgICAgICc8c3BhbiBkYXRhLXR5cGU9XCJpbmxpbmVfZHJvcGRvd25cIiBkYXRhLWluZGV4PVwiMFwiIGRhdGEtdmFsdWU9XCJodWZ1XCI+PC9zcGFuPicsXG4gICAgICAgICAgJzxzcGFuIGRhdGEtdHlwZT1cImlubGluZV9kcm9wZG93blwiIGRhdGEtaW5kZXg9XCIxXCIgZGF0YS12YWx1ZT1cIlwiPjwvc3Bhbj4nLFxuICAgICAgICAgICc8L2Rpdj4nLFxuICAgICAgICBdLmpvaW4oJycpLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -225,9 +225,10 @@ var RespAreaToolbar = /*#__PURE__*/function (_React$Component2) {
225
225
  });
226
226
  });
227
227
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onAddChoice", function () {
228
- if (_this2.editorRef) {
229
- _this2.editorRef.finishEditing();
230
- }
228
+ var editor = _this2.props.editor;
229
+ var tr = editor.state.tr;
230
+ tr.isDone = true;
231
+ editor.view.dispatch(tr);
231
232
  });
232
233
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onDone", function (val) {
233
234
  var _choices$editedChoice;
@@ -250,6 +251,7 @@ var RespAreaToolbar = /*#__PURE__*/function (_React$Component2) {
250
251
 
251
252
  if (!(0, _isEmpty["default"])(onlyText)) {
252
253
  onAddChoice(node.attrs.index, val, editedChoiceIndex);
254
+ editor.commands.refreshResponseArea();
253
255
  }
254
256
 
255
257
  _this2.setState({
@@ -264,12 +266,10 @@ var RespAreaToolbar = /*#__PURE__*/function (_React$Component2) {
264
266
  onSelectChoice = _this2$props2.onSelectChoice;
265
267
  editor.commands.updateAttributes('inline_dropdown', {
266
268
  value: newValue
267
- }); // const nextText = value.document.getNextText(node.key);
268
- //
269
- // change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);
270
-
269
+ });
271
270
  onToolbarDone(false);
272
271
  onSelectChoice(index);
272
+ editor.commands.refreshResponseArea();
273
273
  });
274
274
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onRemoveChoice", function (val, index) {
275
275
  var _this2$props3 = _this2.props,
@@ -286,6 +286,7 @@ var RespAreaToolbar = /*#__PURE__*/function (_React$Component2) {
286
286
  }
287
287
 
288
288
  onRemoveChoice(index);
289
+ editor.commands.refreshResponseArea();
289
290
  });
290
291
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onEditChoice", function (val, index) {
291
292
  _this2.onRespAreaChange(val);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/inline-dropdown-toolbar.jsx"],"names":["MenuItemComp","e","onRemoveChoice","props","preventDefault","stopPropagation","onEditChoice","classes","correct","onClick","value","wrapper","selectedIcon","valueHolder","__html","actionButtons","iconButton","onEditClick","onRemoveClick","React","Component","PropTypes","object","isRequired","bool","func","string","MenuItem","theme","display","alignItems","position","background","palette","common","white","borderBottom","grey","borderRadius","color","correctSecondary","margin","spacing","unit","fontSize","typography","padding","black","justifyContent","fontStyle","transform","backgroundColor","top","left","zIndex","flex","paddingLeft","findSlateNode","key","window","document","querySelector","createElementFromHTML","htmlString","div","createElement","innerHTML","trim","RespAreaToolbar","respAreaMarkup","editedChoiceIndex","setState","editorRef","finishEditing","val","choices","node","editor","onAddChoice","onToolbarDone","state","onlyText","textContent","commands","updateAttributes","attrs","index","newValue","onSelectChoice","onRespAreaChange","event","preventDone","clickedInside","onCheck","correctResponse","find","choice","length","tr","deleteSelection","view","dispatch","slateEditorRef","rootRef","slateEditor","inputRef","element","focus","domNode","nodeDOM","selection","from","nodeType","domNodeRect","getBoundingClientRect","editorNode","closest","editorRect","height","toolbarStyle","ReactDOM","findDOMNode","spellCheck","uploadSoundSupport","mathMlOptions","baseInputConfiguration","responseAreaInputConfiguration","responseContainer","onClickInside","itemBuilder","ref","respArea","alwaysVisible","showDone","doneOn","onKeyDown","language","onDone","relatedTarget","isInInsertCharacter","isInDoneButton","onBlur","inputConfiguration","addButton","focusInput","choicesHolder","map","label","array","StyledRespAreaToolbar","boxShadow","shadows","width","minHeight","right","flexDirection","border"],"mappings":"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","sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { withStyles } from '@material-ui/core/styles';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport classnames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\n\nimport AddIcon from '@material-ui/icons/Add';\nimport CheckIcon from '@material-ui/icons/Check';\nimport CloseIcon from '@material-ui/icons/Close';\nimport EditIcon from '@material-ui/icons/Edit';\nimport IconButton from '@material-ui/core/IconButton';\n\nclass MenuItemComp extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n correct: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n onRemoveChoice: PropTypes.func.isRequired,\n onEditChoice: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n };\n\n onRemoveClick = (e) => {\n const { onRemoveChoice } = this.props;\n\n e.preventDefault();\n e.stopPropagation();\n\n onRemoveChoice();\n };\n\n onEditClick = (e) => {\n const { onEditChoice } = this.props;\n\n e.preventDefault();\n e.stopPropagation();\n\n onEditChoice();\n };\n\n render() {\n const { classes, correct, onClick, value } = this.props;\n\n return (\n <div className={classes.wrapper}>\n {correct && (\n <div className={classes.selectedIcon} onClick={onClick}>\n <CheckIcon fontSize=\"inherit\" />\n </div>\n )}\n <div\n className={classnames(classes.valueHolder, { [classes.correct]: correct })}\n onClick={onClick}\n dangerouslySetInnerHTML={{\n __html: value,\n }}\n />\n <div className={classes.actionButtons}>\n <IconButton className={classes.iconButton} onClick={this.onEditClick} size=\"small\" aria-label=\"Edit\">\n <EditIcon fontSize=\"inherit\" />\n </IconButton>\n <IconButton className={classes.iconButton} onClick={this.onRemoveClick} size=\"small\" aria-label=\"Remove\">\n <CloseIcon fontSize=\"inherit\" />\n </IconButton>\n </div>\n </div>\n );\n }\n}\n\nconst MenuItem = withStyles((theme) => ({\n wrapper: {\n display: 'flex',\n alignItems: 'flex-start',\n position: 'relative',\n background: theme.palette.common.white,\n borderBottom: `1px solid ${theme.palette.grey[400]}`,\n\n '&:last-child': {\n borderRadius: '0 0 4px 4px',\n },\n },\n correct: {\n background: color.correctSecondary(),\n },\n actionButtons: {\n margin: theme.spacing.unit / 2,\n display: 'flex',\n },\n iconButton: {\n fontSize: theme.typography.fontSize,\n padding: theme.spacing.unit / 2,\n color: theme.palette.common.black,\n },\n selectedIcon: {\n display: 'flex',\n justifyContent: 'center',\n color: theme.palette.common.white,\n fontSize: theme.typography.fontSize,\n fontStyle: 'normal',\n position: 'absolute',\n transform: 'translate(0, -50%)',\n backgroundColor: color.correct(),\n borderRadius: '50%',\n top: theme.spacing.unit * 2,\n left: theme.spacing.unit,\n zIndex: 3,\n },\n valueHolder: {\n flex: 1,\n padding: theme.spacing.unit * 0.75,\n paddingLeft: theme.spacing.unit * 3.5,\n },\n}))(MenuItemComp);\n\nconst findSlateNode = (key) => {\n return window.document.querySelector('[data-key=\"' + key + '\"]');\n};\n\nconst createElementFromHTML = (htmlString) => {\n const div = document.createElement('div');\n\n div.innerHTML = (htmlString || '').trim();\n\n return div;\n};\n\nexport class RespAreaToolbar extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n node: PropTypes.object,\n uploadSoundSupport: PropTypes.object,\n onDone: PropTypes.func,\n choices: PropTypes.array,\n onAddChoice: PropTypes.func.isRequired,\n onCheck: PropTypes.func,\n onRemoveChoice: PropTypes.func.isRequired,\n onSelectChoice: PropTypes.func.isRequired,\n onToolbarDone: PropTypes.func.isRequired,\n editor: PropTypes.object,\n spellCheck: PropTypes.bool,\n };\n clickedInside = false;\n preventDone = false;\n\n state = {\n respAreaMarkup: '',\n editedChoiceIndex: -1,\n };\n\n componentDidMount() {\n const { editor } = this.props;\n\n const domNode = editor.view.nodeDOM(editor.state.selection.from);\n\n if (domNode?.nodeType === 1) {\n //eslint-disable-next-line\n const domNodeRect = domNode.getBoundingClientRect();\n const editorNode = domNode.closest('.tiptap');\n const editorRect = editorNode.getBoundingClientRect();\n const top = domNodeRect.top - domNodeRect.height;\n const left = domNodeRect.left - editorRect.left;\n\n this.setState({\n toolbarStyle: {\n position: 'absolute',\n top: `${top + domNodeRect.height + 40}px`,\n left: `${left + 25}px`,\n },\n });\n }\n }\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onRespAreaChange = (respAreaMarkup) => {\n this.setState({ respAreaMarkup });\n };\n\n onAddChoice = () => {\n if (this.editorRef) {\n this.editorRef.finishEditing();\n }\n };\n\n onDone = (val) => {\n const { choices, node, editor, onAddChoice, onToolbarDone } = this.props;\n const { editedChoiceIndex } = this.state;\n const onlyText = createElementFromHTML(val).textContent.trim();\n\n if (editedChoiceIndex >= 0 && choices?.[editedChoiceIndex]?.correct) {\n editor.commands.updateAttributes('inline_dropdown', { value: val });\n onToolbarDone(false);\n }\n\n if (!isEmpty(onlyText)) {\n onAddChoice(node.attrs.index, val, editedChoiceIndex);\n }\n\n this.setState({ editedChoiceIndex: -1 });\n };\n\n onSelectChoice = (newValue, index) => {\n const { node, editor, onToolbarDone, onSelectChoice } = this.props;\n\n editor.commands.updateAttributes('inline_dropdown', { value: newValue });\n\n // const nextText = value.document.getNextText(node.key);\n //\n // change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);\n\n onToolbarDone(false);\n onSelectChoice(index);\n };\n\n onRemoveChoice = (val, index) => {\n const { node, editor, onToolbarDone, onRemoveChoice } = this.props;\n\n if (isEqual(val, node.attrs.value)) {\n editor.commands.updateAttributes('explicit_constructed_response', { value: null });\n onToolbarDone(false);\n }\n\n onRemoveChoice(index);\n };\n\n onEditChoice = (val, index) => {\n this.onRespAreaChange(val);\n this.setState({ editedChoiceIndex: index });\n };\n\n onKeyDown = (event) => {\n if (event.key === 'Enter') {\n this.preventDone = false;\n this.onAddChoice();\n // Cancelling event\n return false;\n }\n };\n\n onBlur = () => {\n if (this.clickedInside) {\n this.clickedInside = false;\n return;\n }\n\n const { node, choices, onCheck, onToolbarDone, editor } = this.props;\n const correctResponse = (choices || []).find((choice) => choice.correct);\n\n this.onAddChoice();\n if (!choices || (choices && choices.length < 2) || !correctResponse) {\n onCheck(() => {\n const { tr } = editor.state;\n\n tr.deleteSelection();\n editor.view.dispatch(tr);\n onToolbarDone(false);\n });\n }\n };\n\n onClickInside = () => {\n this.clickedInside = true;\n };\n\n focusInput = () => {\n // we need to focus the input so that math is saved even without pressing the green checkmark\n const slateEditorRef = this.editorRef && this.editorRef.rootRef && this.editorRef.rootRef.slateEditor;\n const inputRef = slateEditorRef && slateEditorRef.editorRef && slateEditorRef.editorRef.element;\n\n if (inputRef) {\n inputRef.focus();\n }\n };\n\n render() {\n const {\n classes,\n choices,\n spellCheck,\n uploadSoundSupport,\n mathMlOptions = {},\n baseInputConfiguration = {},\n responseAreaInputConfiguration = {},\n } = this.props;\n const { respAreaMarkup, toolbarStyle } = this.state;\n\n if (!toolbarStyle) {\n return null;\n }\n\n return (\n <div\n className={classes.responseContainer}\n style={{\n ...toolbarStyle,\n backgroundColor: '#E0E1E6',\n }}\n onMouseDown={this.onClickInside}\n >\n <div className={classes.itemBuilder}>\n <EditableHtml\n ref={(ref) => {\n if (ref) {\n this.editorRef = ref;\n }\n }}\n autoFocus={true}\n autoSave\n className={classes.respArea}\n toolbarOpts={{\n position: 'top',\n alwaysVisible: false,\n showDone: false,\n doneOn: 'blur',\n }}\n markup={respAreaMarkup}\n onKeyDown={this.onKeyDown}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n onChange={(respAreaMarkup) => {\n if (this.preventDone) {\n return;\n }\n\n this.onRespAreaChange(respAreaMarkup);\n }}\n onDone={(val) => {\n if (this.preventDone) {\n return;\n }\n\n this.onDone(val);\n }}\n onBlur={(e) => {\n if (!e.relatedTarget) {\n return;\n }\n\n const isInInsertCharacter = !!(e.relatedTarget && e.relatedTarget.closest('.insert-character-dialog'));\n const isInDoneButton = !!(e.relatedTarget && e.relatedTarget.closest('[aria-label=\"Done\"]'));\n\n this.preventDone = isInInsertCharacter || isInDoneButton;\n if (isInInsertCharacter || isInDoneButton) {\n this.clickedInside = true;\n }\n this.onBlur(e);\n }}\n placeholder=\"Add Choice\"\n pluginProps={getPluginProps(responseAreaInputConfiguration?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheck}\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n />\n <IconButton\n className={classes.addButton}\n onMouseDown={() => this.focusInput()}\n onClick={() => this.onAddChoice()}\n size=\"small\"\n aria-label=\"Add\"\n >\n <AddIcon fontSize=\"inherit\" />\n </IconButton>\n </div>\n\n {choices && (\n <div className={classes.choicesHolder}>\n {choices.map(({ label, correct }, index) => (\n <MenuItem\n key={index}\n onClick={() => this.onSelectChoice(label, index)}\n onRemoveChoice={() => this.onRemoveChoice(label, index)}\n onEditChoice={() => this.onEditChoice(label, index)}\n value={label}\n correct={correct}\n />\n ))}\n </div>\n )}\n </div>\n );\n }\n}\n\nconst StyledRespAreaToolbar = withStyles((theme) => ({\n responseContainer: {\n boxShadow: theme.shadows[2],\n borderRadius: '4px',\n width: '400px',\n },\n respArea: {\n borderRadius: '4px',\n backgroundColor: theme.palette.common.white,\n '& [data-slate-editor=\"true\"]': {\n minHeight: 'initial !important',\n },\n },\n addButton: {\n fontSize: theme.typography.fontSize + 2,\n padding: theme.spacing.unit / 2,\n color: theme.palette.common.black,\n position: 'absolute',\n top: '50%',\n right: theme.spacing.unit * 2,\n transform: 'translate(0, -50%)',\n },\n choicesHolder: {\n display: 'flex',\n flexDirection: 'column',\n '& > div:last-child': {\n border: 'none',\n },\n },\n itemBuilder: {\n padding: theme.spacing.unit / 2,\n position: 'relative',\n },\n}))(RespAreaToolbar);\n\nexport default StyledRespAreaToolbar;\n"],"file":"inline-dropdown-toolbar.js"}
1
+ {"version":3,"sources":["../src/inline-dropdown-toolbar.jsx"],"names":["MenuItemComp","e","onRemoveChoice","props","preventDefault","stopPropagation","onEditChoice","classes","correct","onClick","value","wrapper","selectedIcon","valueHolder","__html","actionButtons","iconButton","onEditClick","onRemoveClick","React","Component","PropTypes","object","isRequired","bool","func","string","MenuItem","theme","display","alignItems","position","background","palette","common","white","borderBottom","grey","borderRadius","color","correctSecondary","margin","spacing","unit","fontSize","typography","padding","black","justifyContent","fontStyle","transform","backgroundColor","top","left","zIndex","flex","paddingLeft","findSlateNode","key","window","document","querySelector","createElementFromHTML","htmlString","div","createElement","innerHTML","trim","RespAreaToolbar","respAreaMarkup","editedChoiceIndex","setState","editor","tr","state","isDone","view","dispatch","val","choices","node","onAddChoice","onToolbarDone","onlyText","textContent","commands","updateAttributes","attrs","index","refreshResponseArea","newValue","onSelectChoice","onRespAreaChange","event","preventDone","clickedInside","onCheck","correctResponse","find","choice","length","deleteSelection","slateEditorRef","editorRef","rootRef","slateEditor","inputRef","element","focus","domNode","nodeDOM","selection","from","nodeType","domNodeRect","getBoundingClientRect","editorNode","closest","editorRect","height","toolbarStyle","ReactDOM","findDOMNode","spellCheck","uploadSoundSupport","mathMlOptions","baseInputConfiguration","responseAreaInputConfiguration","responseContainer","onClickInside","itemBuilder","ref","respArea","alwaysVisible","showDone","doneOn","onKeyDown","language","onDone","relatedTarget","isInInsertCharacter","isInDoneButton","onBlur","inputConfiguration","addButton","focusInput","choicesHolder","map","label","array","StyledRespAreaToolbar","boxShadow","shadows","width","minHeight","right","flexDirection","border"],"mappings":"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","sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { withStyles } from '@material-ui/core/styles';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport classnames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\n\nimport AddIcon from '@material-ui/icons/Add';\nimport CheckIcon from '@material-ui/icons/Check';\nimport CloseIcon from '@material-ui/icons/Close';\nimport EditIcon from '@material-ui/icons/Edit';\nimport IconButton from '@material-ui/core/IconButton';\n\nclass MenuItemComp extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n correct: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n onRemoveChoice: PropTypes.func.isRequired,\n onEditChoice: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n };\n\n onRemoveClick = (e) => {\n const { onRemoveChoice } = this.props;\n\n e.preventDefault();\n e.stopPropagation();\n\n onRemoveChoice();\n };\n\n onEditClick = (e) => {\n const { onEditChoice } = this.props;\n\n e.preventDefault();\n e.stopPropagation();\n\n onEditChoice();\n };\n\n render() {\n const { classes, correct, onClick, value } = this.props;\n\n return (\n <div className={classes.wrapper}>\n {correct && (\n <div className={classes.selectedIcon} onClick={onClick}>\n <CheckIcon fontSize=\"inherit\" />\n </div>\n )}\n <div\n className={classnames(classes.valueHolder, { [classes.correct]: correct })}\n onClick={onClick}\n dangerouslySetInnerHTML={{\n __html: value,\n }}\n />\n <div className={classes.actionButtons}>\n <IconButton className={classes.iconButton} onClick={this.onEditClick} size=\"small\" aria-label=\"Edit\">\n <EditIcon fontSize=\"inherit\" />\n </IconButton>\n <IconButton className={classes.iconButton} onClick={this.onRemoveClick} size=\"small\" aria-label=\"Remove\">\n <CloseIcon fontSize=\"inherit\" />\n </IconButton>\n </div>\n </div>\n );\n }\n}\n\nconst MenuItem = withStyles((theme) => ({\n wrapper: {\n display: 'flex',\n alignItems: 'flex-start',\n position: 'relative',\n background: theme.palette.common.white,\n borderBottom: `1px solid ${theme.palette.grey[400]}`,\n\n '&:last-child': {\n borderRadius: '0 0 4px 4px',\n },\n },\n correct: {\n background: color.correctSecondary(),\n },\n actionButtons: {\n margin: theme.spacing.unit / 2,\n display: 'flex',\n },\n iconButton: {\n fontSize: theme.typography.fontSize,\n padding: theme.spacing.unit / 2,\n color: theme.palette.common.black,\n },\n selectedIcon: {\n display: 'flex',\n justifyContent: 'center',\n color: theme.palette.common.white,\n fontSize: theme.typography.fontSize,\n fontStyle: 'normal',\n position: 'absolute',\n transform: 'translate(0, -50%)',\n backgroundColor: color.correct(),\n borderRadius: '50%',\n top: theme.spacing.unit * 2,\n left: theme.spacing.unit,\n zIndex: 3,\n },\n valueHolder: {\n flex: 1,\n padding: theme.spacing.unit * 0.75,\n paddingLeft: theme.spacing.unit * 3.5,\n },\n}))(MenuItemComp);\n\nconst findSlateNode = (key) => {\n return window.document.querySelector('[data-key=\"' + key + '\"]');\n};\n\nconst createElementFromHTML = (htmlString) => {\n const div = document.createElement('div');\n\n div.innerHTML = (htmlString || '').trim();\n\n return div;\n};\n\nexport class RespAreaToolbar extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n node: PropTypes.object,\n uploadSoundSupport: PropTypes.object,\n onDone: PropTypes.func,\n choices: PropTypes.array,\n onAddChoice: PropTypes.func.isRequired,\n onCheck: PropTypes.func,\n onRemoveChoice: PropTypes.func.isRequired,\n onSelectChoice: PropTypes.func.isRequired,\n onToolbarDone: PropTypes.func.isRequired,\n editor: PropTypes.object,\n spellCheck: PropTypes.bool,\n };\n clickedInside = false;\n preventDone = false;\n\n state = {\n respAreaMarkup: '',\n editedChoiceIndex: -1,\n };\n\n componentDidMount() {\n const { editor } = this.props;\n\n const domNode = editor.view.nodeDOM(editor.state.selection.from);\n\n if (domNode?.nodeType === 1) {\n //eslint-disable-next-line\n const domNodeRect = domNode.getBoundingClientRect();\n const editorNode = domNode.closest('.tiptap');\n const editorRect = editorNode.getBoundingClientRect();\n const top = domNodeRect.top - domNodeRect.height;\n const left = domNodeRect.left - editorRect.left;\n\n this.setState({\n toolbarStyle: {\n position: 'absolute',\n top: `${top + domNodeRect.height + 40}px`,\n left: `${left + 25}px`,\n },\n });\n }\n }\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onRespAreaChange = (respAreaMarkup) => {\n this.setState({ respAreaMarkup });\n };\n\n onAddChoice = () => {\n const { editor } = this.props;\n const { tr } = editor.state;\n\n tr.isDone = true;\n editor.view.dispatch(tr);\n };\n\n onDone = (val) => {\n const { choices, node, editor, onAddChoice, onToolbarDone } = this.props;\n const { editedChoiceIndex } = this.state;\n const onlyText = createElementFromHTML(val).textContent.trim();\n\n if (editedChoiceIndex >= 0 && choices?.[editedChoiceIndex]?.correct) {\n editor.commands.updateAttributes('inline_dropdown', { value: val });\n onToolbarDone(false);\n }\n\n if (!isEmpty(onlyText)) {\n onAddChoice(node.attrs.index, val, editedChoiceIndex);\n editor.commands.refreshResponseArea();\n }\n\n this.setState({ editedChoiceIndex: -1 });\n };\n\n onSelectChoice = (newValue, index) => {\n const { node, editor, onToolbarDone, onSelectChoice } = this.props;\n\n editor.commands.updateAttributes('inline_dropdown', { value: newValue });\n\n onToolbarDone(false);\n onSelectChoice(index);\n editor.commands.refreshResponseArea();\n };\n\n onRemoveChoice = (val, index) => {\n const { node, editor, onToolbarDone, onRemoveChoice } = this.props;\n\n if (isEqual(val, node.attrs.value)) {\n editor.commands.updateAttributes('explicit_constructed_response', { value: null });\n onToolbarDone(false);\n }\n\n onRemoveChoice(index);\n editor.commands.refreshResponseArea();\n };\n\n onEditChoice = (val, index) => {\n this.onRespAreaChange(val);\n this.setState({ editedChoiceIndex: index });\n };\n\n onKeyDown = (event) => {\n if (event.key === 'Enter') {\n this.preventDone = false;\n this.onAddChoice();\n // Cancelling event\n return false;\n }\n };\n\n onBlur = () => {\n if (this.clickedInside) {\n this.clickedInside = false;\n return;\n }\n\n const { node, choices, onCheck, onToolbarDone, editor } = this.props;\n const correctResponse = (choices || []).find((choice) => choice.correct);\n\n this.onAddChoice();\n if (!choices || (choices && choices.length < 2) || !correctResponse) {\n onCheck(() => {\n const { tr } = editor.state;\n\n tr.deleteSelection();\n editor.view.dispatch(tr);\n onToolbarDone(false);\n });\n }\n };\n\n onClickInside = () => {\n this.clickedInside = true;\n };\n\n focusInput = () => {\n // we need to focus the input so that math is saved even without pressing the green checkmark\n const slateEditorRef = this.editorRef && this.editorRef.rootRef && this.editorRef.rootRef.slateEditor;\n const inputRef = slateEditorRef && slateEditorRef.editorRef && slateEditorRef.editorRef.element;\n\n if (inputRef) {\n inputRef.focus();\n }\n };\n\n render() {\n const {\n classes,\n choices,\n spellCheck,\n uploadSoundSupport,\n mathMlOptions = {},\n baseInputConfiguration = {},\n responseAreaInputConfiguration = {},\n } = this.props;\n const { respAreaMarkup, toolbarStyle } = this.state;\n\n if (!toolbarStyle) {\n return null;\n }\n\n return (\n <div\n className={classes.responseContainer}\n style={{\n ...toolbarStyle,\n backgroundColor: '#E0E1E6',\n }}\n onMouseDown={this.onClickInside}\n >\n <div className={classes.itemBuilder}>\n <EditableHtml\n ref={(ref) => {\n if (ref) {\n this.editorRef = ref;\n }\n }}\n autoFocus={true}\n autoSave\n className={classes.respArea}\n toolbarOpts={{\n position: 'top',\n alwaysVisible: false,\n showDone: false,\n doneOn: 'blur',\n }}\n markup={respAreaMarkup}\n onKeyDown={this.onKeyDown}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n onChange={(respAreaMarkup) => {\n if (this.preventDone) {\n return;\n }\n\n this.onRespAreaChange(respAreaMarkup);\n }}\n onDone={(val) => {\n if (this.preventDone) {\n return;\n }\n\n this.onDone(val);\n }}\n onBlur={(e) => {\n if (!e.relatedTarget) {\n return;\n }\n\n const isInInsertCharacter = !!(e.relatedTarget && e.relatedTarget.closest('.insert-character-dialog'));\n const isInDoneButton = !!(e.relatedTarget && e.relatedTarget.closest('[aria-label=\"Done\"]'));\n\n this.preventDone = isInInsertCharacter || isInDoneButton;\n if (isInInsertCharacter || isInDoneButton) {\n this.clickedInside = true;\n }\n this.onBlur(e);\n }}\n placeholder=\"Add Choice\"\n pluginProps={getPluginProps(responseAreaInputConfiguration?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheck}\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n />\n <IconButton\n className={classes.addButton}\n onMouseDown={() => this.focusInput()}\n onClick={() => this.onAddChoice()}\n size=\"small\"\n aria-label=\"Add\"\n >\n <AddIcon fontSize=\"inherit\" />\n </IconButton>\n </div>\n\n {choices && (\n <div className={classes.choicesHolder}>\n {choices.map(({ label, correct }, index) => (\n <MenuItem\n key={index}\n onClick={() => this.onSelectChoice(label, index)}\n onRemoveChoice={() => this.onRemoveChoice(label, index)}\n onEditChoice={() => this.onEditChoice(label, index)}\n value={label}\n correct={correct}\n />\n ))}\n </div>\n )}\n </div>\n );\n }\n}\n\nconst StyledRespAreaToolbar = withStyles((theme) => ({\n responseContainer: {\n boxShadow: theme.shadows[2],\n borderRadius: '4px',\n width: '400px',\n },\n respArea: {\n borderRadius: '4px',\n backgroundColor: theme.palette.common.white,\n '& [data-slate-editor=\"true\"]': {\n minHeight: 'initial !important',\n },\n },\n addButton: {\n fontSize: theme.typography.fontSize + 2,\n padding: theme.spacing.unit / 2,\n color: theme.palette.common.black,\n position: 'absolute',\n top: '50%',\n right: theme.spacing.unit * 2,\n transform: 'translate(0, -50%)',\n },\n choicesHolder: {\n display: 'flex',\n flexDirection: 'column',\n '& > div:last-child': {\n border: 'none',\n },\n },\n itemBuilder: {\n padding: theme.spacing.unit / 2,\n position: 'relative',\n },\n}))(RespAreaToolbar);\n\nexport default StyledRespAreaToolbar;\n"],"file":"inline-dropdown-toolbar.js"}
@@ -8,8 +8,8 @@
8
8
  "@material-ui/core": "^3.9.2",
9
9
  "@material-ui/icons": "^3.0.1",
10
10
  "@pie-framework/pie-configure-events": "^1.3.0",
11
- "@pie-lib/config-ui": "11.30.2-beta-9",
12
- "@pie-lib/editable-html-tip-tap": "^1.0.14",
11
+ "@pie-lib/config-ui": "11.30.2-beta-11",
12
+ "@pie-lib/editable-html-tip-tap": "^1.0.16",
13
13
  "@pie-lib/math-rendering": "^3.22.1",
14
14
  "@pie-lib/math-toolbar": "1.31.2-beta.3",
15
15
  "@pie-lib/render-ui": "^4.35.1",