@pie-element/inline-dropdown 4.7.1-beta.0 → 4.7.1-beta.1

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.
@@ -1,463 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
- Object.defineProperty(exports, "__esModule", {
8
- value: true
9
- });
10
- exports["default"] = exports.RespAreaToolbar = void 0;
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
-
18
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
-
20
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
-
22
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
-
24
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
-
26
- var _react = _interopRequireDefault(require("react"));
27
-
28
- var _reactDom = _interopRequireDefault(require("react-dom"));
29
-
30
- var _slateReact = require("slate-react");
31
-
32
- var _propTypes = _interopRequireDefault(require("prop-types"));
33
-
34
- var _editableHtml = _interopRequireWildcard(require("@pie-lib/editable-html"));
35
-
36
- var _mathRendering = require("@pie-lib/math-rendering");
37
-
38
- var _styles = require("@material-ui/core/styles");
39
-
40
- var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
41
-
42
- var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
43
-
44
- var _classnames2 = _interopRequireDefault(require("classnames"));
45
-
46
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
47
-
48
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
49
-
50
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
51
-
52
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
53
-
54
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
55
-
56
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
57
-
58
- var MenuItemComp = /*#__PURE__*/function (_React$Component) {
59
- (0, _inherits2["default"])(MenuItemComp, _React$Component);
60
-
61
- var _super = _createSuper(MenuItemComp);
62
-
63
- function MenuItemComp() {
64
- var _this;
65
-
66
- (0, _classCallCheck2["default"])(this, MenuItemComp);
67
-
68
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
69
- args[_key] = arguments[_key];
70
- }
71
-
72
- _this = _super.call.apply(_super, [this].concat(args));
73
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onRemoveClick", function (e) {
74
- var onRemoveChoice = _this.props.onRemoveChoice;
75
- e.preventDefault();
76
- e.stopPropagation();
77
- onRemoveChoice();
78
- });
79
- return _this;
80
- }
81
-
82
- (0, _createClass2["default"])(MenuItemComp, [{
83
- key: "render",
84
- value: function render() {
85
- var _this$props = this.props,
86
- classes = _this$props.classes,
87
- correct = _this$props.correct,
88
- onClick = _this$props.onClick,
89
- value = _this$props.value;
90
- return /*#__PURE__*/_react["default"].createElement("div", {
91
- className: (0, _classnames2["default"])(classes.wrapper, (0, _defineProperty2["default"])({}, classes.correct, correct)),
92
- onClick: onClick
93
- }, /*#__PURE__*/_react["default"].createElement("div", {
94
- className: classes.valueHolder,
95
- dangerouslySetInnerHTML: {
96
- __html: value
97
- }
98
- }), /*#__PURE__*/_react["default"].createElement("i", {
99
- className: classes.removeIcon,
100
- onClick: this.onRemoveClick
101
- }, "x"));
102
- }
103
- }]);
104
- return MenuItemComp;
105
- }(_react["default"].Component);
106
-
107
- (0, _defineProperty2["default"])(MenuItemComp, "propTypes", {
108
- classes: _propTypes["default"].object.isRequired,
109
- correct: _propTypes["default"].bool.isRequired,
110
- onClick: _propTypes["default"].func.isRequired,
111
- onRemoveChoice: _propTypes["default"].func.isRequired,
112
- value: _propTypes["default"].string.isRequired
113
- });
114
- var MenuItem = (0, _styles.withStyles)({
115
- wrapper: {
116
- background: '#fff',
117
- borderBottom: '1px solid black',
118
- boxSizing: 'border-box',
119
- display: 'block',
120
- cursor: 'pointer',
121
- lineHeight: '30px',
122
- padding: '10px 25px 10px 10px',
123
- position: 'relative'
124
- },
125
- correct: {
126
- background: '#C4DCFA'
127
- },
128
- removeIcon: {
129
- cursor: 'pointer',
130
- fontSize: '20px',
131
- fontStyle: 'normal',
132
- position: 'absolute',
133
- transform: 'translate(0, -50%)',
134
- top: '50%',
135
- right: '5px',
136
- zIndex: 3
137
- },
138
- valueHolder: {
139
- wordBreak: 'break-all'
140
- }
141
- })(MenuItemComp);
142
-
143
- var createElementFromHTML = function createElementFromHTML(htmlString) {
144
- var div = document.createElement('div');
145
- div.innerHTML = (htmlString || '').trim();
146
- return div;
147
- };
148
-
149
- var RespAreaToolbar = /*#__PURE__*/function (_React$Component2) {
150
- (0, _inherits2["default"])(RespAreaToolbar, _React$Component2);
151
-
152
- var _super2 = _createSuper(RespAreaToolbar);
153
-
154
- function RespAreaToolbar() {
155
- var _this2;
156
-
157
- (0, _classCallCheck2["default"])(this, RespAreaToolbar);
158
-
159
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
160
- args[_key2] = arguments[_key2];
161
- }
162
-
163
- _this2 = _super2.call.apply(_super2, [this].concat(args));
164
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "state", {
165
- respAreaMarkup: ''
166
- });
167
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onRespAreaChange", function (respAreaMarkup) {
168
- _this2.setState({
169
- respAreaMarkup: respAreaMarkup
170
- });
171
- });
172
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onAddChoice", function () {
173
- if (_this2.editorRef) {
174
- _this2.editorRef.finishEditing();
175
- }
176
- });
177
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onDone", function (val) {
178
- var _this2$props = _this2.props,
179
- node = _this2$props.node,
180
- onAddChoice = _this2$props.onAddChoice;
181
- var onlyText = createElementFromHTML(val).textContent.trim();
182
-
183
- if (!(0, _isEmpty["default"])(onlyText)) {
184
- onAddChoice(node.data.index, val);
185
- }
186
- });
187
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onSelectChoice", function (newValue, index) {
188
- var _this2$props2 = _this2.props,
189
- node = _this2$props2.node,
190
- nodePath = _this2$props2.nodePath,
191
- editor = _this2$props2.editor,
192
- onToolbarDone = _this2$props2.onToolbarDone,
193
- onSelectChoice = _this2$props2.onSelectChoice;
194
-
195
- var update = _objectSpread(_objectSpread({}, node.data), {}, {
196
- value: newValue
197
- });
198
-
199
- editor.apply({
200
- type: 'set_node',
201
- path: nodePath,
202
- properties: {
203
- data: node.data
204
- },
205
- newProperties: {
206
- data: update
207
- }
208
- });
209
- onToolbarDone(false);
210
- onSelectChoice(index);
211
- });
212
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onRemoveChoice", function (val, index) {
213
- var _this2$props3 = _this2.props,
214
- node = _this2$props3.node,
215
- nodePath = _this2$props3.nodePath,
216
- editor = _this2$props3.editor,
217
- onToolbarDone = _this2$props3.onToolbarDone,
218
- onRemoveChoice = _this2$props3.onRemoveChoice;
219
-
220
- if ((0, _isEqual["default"])(val, node.data.value)) {
221
- var update = _objectSpread(_objectSpread({}, node.data), {}, {
222
- value: null
223
- });
224
-
225
- editor.apply({
226
- type: 'set_node',
227
- path: nodePath,
228
- properties: {
229
- data: node.data
230
- },
231
- newProperties: {
232
- data: update
233
- }
234
- });
235
- onToolbarDone(false);
236
- }
237
-
238
- onRemoveChoice(index);
239
- });
240
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onKeyDown", function (event) {
241
- if (event.key === 'Enter') {
242
- _this2.onAddChoice(); // Cancelling event
243
-
244
-
245
- return false;
246
- }
247
- });
248
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onBlur", function () {
249
- if (_this2.clickedInside) {
250
- _this2.clickedInside = false;
251
- return;
252
- }
253
-
254
- var _this2$props4 = _this2.props,
255
- nodePath = _this2$props4.nodePath,
256
- choices = _this2$props4.choices,
257
- onCheck = _this2$props4.onCheck,
258
- onToolbarDone = _this2$props4.onToolbarDone,
259
- editor = _this2$props4.editor;
260
- var correctResponse = (choices || []).find(function (choice) {
261
- return choice.correct;
262
- });
263
-
264
- _this2.onAddChoice();
265
-
266
- if (!choices || choices && choices.length < 2 || !correctResponse) {
267
- onCheck(function () {
268
- editor.apply({
269
- type: 'remove_node',
270
- path: nodePath
271
- });
272
- onToolbarDone(false);
273
- });
274
- }
275
- });
276
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onClickInside", function () {
277
- _this2.clickedInside = true;
278
- });
279
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "focusInput", function () {
280
- // we need to focus the input so that math is saved even without pressing the green checkmark
281
- var slateEditorRef = _this2.editorRef && _this2.editorRef.rootRef && _this2.editorRef.rootRef.slateEditor;
282
- var inputRef = slateEditorRef && slateEditorRef.editorRef && slateEditorRef.editorRef.element;
283
-
284
- if (inputRef) {
285
- inputRef.focus();
286
- }
287
- });
288
- return _this2;
289
- }
290
-
291
- (0, _createClass2["default"])(RespAreaToolbar, [{
292
- key: "componentDidMount",
293
- value: function componentDidMount() {
294
- var _this$props2 = this.props,
295
- node = _this$props2.node,
296
- editor = _this$props2.editor;
297
-
298
- var domNode = _slateReact.ReactEditor.toDOMNode(editor, node);
299
-
300
- if (domNode) {
301
- //eslint-disable-next-line
302
- var domNodeRect = domNode.getBoundingClientRect();
303
-
304
- var _editor = domNode.closest('[data-slate-editor]');
305
-
306
- var editorRect = _editor.getBoundingClientRect();
307
-
308
- var top = domNodeRect.top - editorRect.top;
309
- var left = domNodeRect.left - editorRect.left;
310
- this.setState({
311
- toolbarStyle: {
312
- position: 'absolute',
313
- top: "".concat(top + domNodeRect.height + 60, "px"),
314
- left: "".concat(left + 25, "px"),
315
- width: domNodeRect.width
316
- }
317
- });
318
- }
319
- }
320
- }, {
321
- key: "componentDidUpdate",
322
- value: function componentDidUpdate() {
323
- //eslint-disable-next-line
324
- var domNode = _reactDom["default"].findDOMNode(this);
325
-
326
- (0, _mathRendering.renderMath)(domNode);
327
- }
328
- }, {
329
- key: "render",
330
- value: function render() {
331
- var _this3 = this;
332
-
333
- var _this$props3 = this.props,
334
- classes = _this$props3.classes,
335
- choices = _this$props3.choices,
336
- spellCheck = _this$props3.spellCheck,
337
- uploadSoundSupport = _this$props3.uploadSoundSupport;
338
- var _this$state = this.state,
339
- respAreaMarkup = _this$state.respAreaMarkup,
340
- toolbarStyle = _this$state.toolbarStyle;
341
- var filteredDefaultPlugins = (_editableHtml.DEFAULT_PLUGINS || []).filter(function (p) {
342
- return p !== 'table' && p !== 'bulleted-list' && p !== 'numbered-list';
343
- });
344
- var labelPlugins = {
345
- audio: {
346
- disabled: true
347
- },
348
- video: {
349
- disabled: true
350
- }
351
- };
352
-
353
- if (!toolbarStyle) {
354
- return null;
355
- }
356
-
357
- return /*#__PURE__*/_react["default"].createElement("div", {
358
- style: _objectSpread(_objectSpread({}, toolbarStyle), {}, {
359
- backgroundColor: '#E0E1E6'
360
- }),
361
- onMouseDown: this.onClickInside
362
- }, /*#__PURE__*/_react["default"].createElement("div", {
363
- className: classes.itemBuilder
364
- }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
365
- ref: function ref(_ref) {
366
- if (_ref) {
367
- _this3.editorRef = _ref;
368
- }
369
- },
370
- autoFocus: true,
371
- autoSave: true,
372
- className: classes.respArea,
373
- toolbarOpts: {
374
- position: 'top',
375
- alwaysVisible: false,
376
- showDone: false,
377
- doneOn: 'blur'
378
- },
379
- markup: respAreaMarkup,
380
- onKeyDown: this.onKeyDown,
381
- onChange: this.onRespAreaChange,
382
- onDone: this.onDone,
383
- placeholder: "Add Choice",
384
- activePlugins: filteredDefaultPlugins,
385
- pluginProps: labelPlugins,
386
- onBlur: this.onBlur,
387
- spellCheck: spellCheck,
388
- uploadSoundSupport: uploadSoundSupport
389
- }), /*#__PURE__*/_react["default"].createElement("i", {
390
- style: {
391
- cursor: 'pointer',
392
- fontSize: '20px',
393
- fontStyle: 'normal',
394
- position: 'absolute',
395
- top: '50%',
396
- right: '15px',
397
- transform: 'translate(0, -50%)'
398
- },
399
- contentEditable: false,
400
- onMouseDown: function onMouseDown() {
401
- return _this3.focusInput();
402
- },
403
- onClick: function onClick() {
404
- return _this3.onAddChoice();
405
- }
406
- }, "+")), choices && /*#__PURE__*/_react["default"].createElement("div", {
407
- className: classes.choicesHolder
408
- }, choices.map(function (_ref2, index) {
409
- var label = _ref2.label,
410
- correct = _ref2.correct;
411
- return /*#__PURE__*/_react["default"].createElement(MenuItem, {
412
- key: index,
413
- onClick: function onClick() {
414
- return _this3.onSelectChoice(label, index);
415
- },
416
- onRemoveChoice: function onRemoveChoice() {
417
- return _this3.onRemoveChoice(label, index);
418
- },
419
- value: label,
420
- correct: correct
421
- });
422
- })));
423
- }
424
- }]);
425
- return RespAreaToolbar;
426
- }(_react["default"].Component);
427
-
428
- exports.RespAreaToolbar = RespAreaToolbar;
429
- (0, _defineProperty2["default"])(RespAreaToolbar, "propTypes", {
430
- classes: _propTypes["default"].object,
431
- node: _propTypes["default"].object,
432
- uploadSoundSupport: _propTypes["default"].object,
433
- onDone: _propTypes["default"].func,
434
- choices: _propTypes["default"].array,
435
- onAddChoice: _propTypes["default"].func.isRequired,
436
- onRemoveChoice: _propTypes["default"].func.isRequired,
437
- onSelectChoice: _propTypes["default"].func.isRequired,
438
- onToolbarDone: _propTypes["default"].func.isRequired,
439
- editor: _propTypes["default"].object.isRequired,
440
- nodePath: _propTypes["default"].array.isRequired
441
- });
442
- var StyledRespAreaToolbar = (0, _styles.withStyles)({
443
- respArea: {
444
- backgroundColor: '#fff',
445
- '& [data-slate-editor="true"]': {
446
- minHeight: 'initial !important'
447
- }
448
- },
449
- choicesHolder: {
450
- display: 'flex',
451
- flexDirection: 'column',
452
- '& > div:last-child': {
453
- border: 'none'
454
- }
455
- },
456
- itemBuilder: {
457
- padding: '8px',
458
- position: 'relative'
459
- }
460
- })(RespAreaToolbar);
461
- var _default = StyledRespAreaToolbar;
462
- exports["default"] = _default;
463
- //# sourceMappingURL=inline-dropdown-toolbar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/inline-dropdown-toolbar.jsx"],"names":["MenuItemComp","e","onRemoveChoice","props","preventDefault","stopPropagation","classes","correct","onClick","value","wrapper","valueHolder","__html","removeIcon","onRemoveClick","React","Component","PropTypes","object","isRequired","bool","func","string","MenuItem","background","borderBottom","boxSizing","display","cursor","lineHeight","padding","position","fontSize","fontStyle","transform","top","right","zIndex","wordBreak","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","RespAreaToolbar","respAreaMarkup","setState","editorRef","finishEditing","val","node","onAddChoice","onlyText","textContent","data","index","newValue","nodePath","editor","onToolbarDone","onSelectChoice","update","apply","type","path","properties","newProperties","event","key","clickedInside","choices","onCheck","correctResponse","find","choice","length","slateEditorRef","rootRef","slateEditor","inputRef","element","focus","domNode","ReactEditor","toDOMNode","domNodeRect","getBoundingClientRect","closest","editorRect","left","toolbarStyle","height","width","ReactDOM","findDOMNode","spellCheck","uploadSoundSupport","state","filteredDefaultPlugins","DEFAULT_PLUGINS","filter","p","labelPlugins","audio","disabled","video","backgroundColor","onClickInside","itemBuilder","ref","respArea","alwaysVisible","showDone","doneOn","onKeyDown","onRespAreaChange","onDone","onBlur","focusInput","choicesHolder","map","label","array","StyledRespAreaToolbar","minHeight","flexDirection","border"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { ReactEditor } from 'slate-react';\nimport PropTypes from 'prop-types';\nimport EditableHtml from '@pie-lib/editable-html';\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 { DEFAULT_PLUGINS } from '@pie-lib/editable-html';\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 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 render() {\n const { classes, correct, onClick, value } = this.props;\n\n return (\n <div className={classnames(classes.wrapper, { [classes.correct]: correct })} onClick={onClick}>\n <div\n className={classes.valueHolder}\n dangerouslySetInnerHTML={{\n __html: value,\n }}\n />\n <i className={classes.removeIcon} onClick={this.onRemoveClick}>\n x\n </i>\n </div>\n );\n }\n}\n\nconst MenuItem = withStyles({\n wrapper: {\n background: '#fff',\n borderBottom: '1px solid black',\n boxSizing: 'border-box',\n display: 'block',\n cursor: 'pointer',\n lineHeight: '30px',\n padding: '10px 25px 10px 10px',\n position: 'relative',\n },\n correct: {\n background: '#C4DCFA',\n },\n removeIcon: {\n cursor: 'pointer',\n fontSize: '20px',\n fontStyle: 'normal',\n position: 'absolute',\n transform: 'translate(0, -50%)',\n top: '50%',\n right: '5px',\n zIndex: 3,\n },\n valueHolder: {\n wordBreak: 'break-all',\n },\n})(MenuItemComp);\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 onRemoveChoice: PropTypes.func.isRequired,\n onSelectChoice: PropTypes.func.isRequired,\n onToolbarDone: PropTypes.func.isRequired,\n editor: PropTypes.object.isRequired,\n nodePath: PropTypes.array.isRequired,\n };\n\n state = {\n respAreaMarkup: '',\n };\n\n componentDidMount() {\n const { node, editor } = this.props;\n const domNode = ReactEditor.toDOMNode(editor, node);\n\n if (domNode) {\n //eslint-disable-next-line\n const domNodeRect = domNode.getBoundingClientRect();\n const editor = domNode.closest('[data-slate-editor]');\n const editorRect = editor.getBoundingClientRect();\n const top = domNodeRect.top - editorRect.top;\n const left = domNodeRect.left - editorRect.left;\n\n this.setState({\n toolbarStyle: {\n position: 'absolute',\n top: `${top + domNodeRect.height + 60}px`,\n left: `${left + 25}px`,\n width: domNodeRect.width,\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 { node, onAddChoice } = this.props;\n const onlyText = createElementFromHTML(val).textContent.trim();\n\n if (!isEmpty(onlyText)) {\n onAddChoice(node.data.index, val);\n }\n };\n\n onSelectChoice = (newValue, index) => {\n const { node, nodePath, editor, onToolbarDone, onSelectChoice } = this.props;\n const update = { ...node.data, value: newValue };\n\n editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: node.data\n },\n newProperties: { data: update }\n });\n\n onToolbarDone(false);\n onSelectChoice(index);\n };\n\n onRemoveChoice = (val, index) => {\n const { node, nodePath, editor, onToolbarDone, onRemoveChoice } = this.props;\n\n if (isEqual(val, node.data.value)) {\n const update = { ...node.data, value: null };\n\n editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: node.data\n },\n newProperties: { data: update }\n });\n\n onToolbarDone(false);\n }\n\n onRemoveChoice(index);\n };\n\n onKeyDown = (event) => {\n if (event.key === 'Enter') {\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 { nodePath, choices, onCheck, onToolbarDone, editor } = this.props;\n const correctResponse = (choices || []).find((choice) => choice.correct);\n\n this.onAddChoice();\n\n if (!choices || (choices && choices.length < 2) || !correctResponse) {\n onCheck(() => {\n editor.apply({\n type: 'remove_node',\n path: nodePath\n });\n\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 { classes, choices, spellCheck, uploadSoundSupport } = this.props;\n const { respAreaMarkup, toolbarStyle } = this.state;\n\n const filteredDefaultPlugins = (DEFAULT_PLUGINS || []).filter(\n (p) => p !== 'table' && p !== 'bulleted-list' && p !== 'numbered-list',\n );\n const labelPlugins = {\n audio: { disabled: true },\n video: { disabled: true },\n };\n\n if (!toolbarStyle) {\n return null;\n }\n\n return (\n <div\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 onChange={this.onRespAreaChange}\n onDone={this.onDone}\n placeholder=\"Add Choice\"\n activePlugins={filteredDefaultPlugins}\n pluginProps={labelPlugins}\n onBlur={this.onBlur}\n spellCheck={spellCheck}\n uploadSoundSupport={uploadSoundSupport}\n />\n <i\n style={{\n cursor: 'pointer',\n fontSize: '20px',\n fontStyle: 'normal',\n position: 'absolute',\n top: '50%',\n right: '15px',\n transform: 'translate(0, -50%)',\n }}\n contentEditable={false}\n onMouseDown={() => this.focusInput()}\n onClick={() => this.onAddChoice()}\n >\n +\n </i>\n </div>\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 value={label}\n correct={correct}\n />\n ))}\n </div>\n )}\n </div>\n );\n }\n}\n\nconst StyledRespAreaToolbar = withStyles({\n respArea: {\n backgroundColor: '#fff',\n '& [data-slate-editor=\"true\"]': {\n minHeight: 'initial !important',\n },\n },\n choicesHolder: {\n display: 'flex',\n flexDirection: 'column',\n '& > div:last-child': {\n border: 'none',\n },\n },\n itemBuilder: {\n padding: '8px',\n position: 'relative',\n },\n})(RespAreaToolbar);\n\nexport default StyledRespAreaToolbar;\n"],"file":"inline-dropdown-toolbar.js"}