@pie-element/inline-dropdown 10.2.2-beta.4 → 10.2.2-beta.6

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 (35) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/configure/CHANGELOG.md +8 -0
  3. package/configure/package.json +3 -3
  4. package/controller/CHANGELOG.md +8 -0
  5. package/controller/package.json +1 -1
  6. package/package.json +3 -3
  7. package/configure/lib/__tests__/inline-dropdown-toolbar.test.js +0 -1654
  8. package/configure/lib/__tests__/main.test.js +0 -598
  9. package/configure/lib/__tests__/markupUtils.test.js +0 -107
  10. package/configure/lib/defaults.js +0 -192
  11. package/configure/lib/defaults.js.map +0 -1
  12. package/configure/lib/index.js +0 -139
  13. package/configure/lib/index.js.map +0 -1
  14. package/configure/lib/inline-dropdown-toolbar.js +0 -462
  15. package/configure/lib/inline-dropdown-toolbar.js.map +0 -1
  16. package/configure/lib/main.js +0 -612
  17. package/configure/lib/main.js.map +0 -1
  18. package/configure/lib/markupUtils.js +0 -50
  19. package/configure/lib/markupUtils.js.map +0 -1
  20. package/configure/lib/response-area.js +0 -48
  21. package/configure/lib/response-area.js.map +0 -1
  22. package/configure/lib/utils.js +0 -22
  23. package/configure/lib/utils.js.map +0 -1
  24. package/controller/lib/__tests__/index.test.js +0 -705
  25. package/controller/lib/defaults.js +0 -25
  26. package/controller/lib/defaults.js.map +0 -1
  27. package/controller/lib/index.js +0 -295
  28. package/controller/lib/index.js.map +0 -1
  29. package/controller/lib/utils.js +0 -32
  30. package/controller/lib/utils.js.map +0 -1
  31. package/docs/demo/pie.manifest.json +0 -11
  32. package/lib/index.js +0 -86
  33. package/lib/index.js.map +0 -1
  34. package/lib/inline-dropdown.js +0 -176
  35. package/lib/inline-dropdown.js.map +0 -1
@@ -1,462 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _utils = require("./utils");
10
- var _react = _interopRequireDefault(require("react"));
11
- var _reactDom = _interopRequireDefault(require("react-dom"));
12
- var _propTypes = _interopRequireDefault(require("prop-types"));
13
- var _editableHtmlTipTap = _interopRequireDefault(require("@pie-lib/editable-html-tip-tap"));
14
- var _mathRendering = require("@pie-lib/math-rendering");
15
- var _styles = require("@mui/material/styles");
16
- var _lodashEs = require("lodash-es");
17
- var _renderUi = require("@pie-lib/render-ui");
18
- var _Add = _interopRequireDefault(require("@mui/icons-material/Add"));
19
- var _Check = _interopRequireDefault(require("@mui/icons-material/Check"));
20
- var _Close = _interopRequireDefault(require("@mui/icons-material/Close"));
21
- var _Edit = _interopRequireDefault(require("@mui/icons-material/Edit"));
22
- var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
23
- const MenuItemWrapper = (0, _styles.styled)('div')(({
24
- theme
25
- }) => ({
26
- display: 'flex',
27
- alignItems: 'flex-start',
28
- position: 'relative',
29
- background: theme.palette.common.white,
30
- borderBottom: `1px solid ${theme.palette.grey[400]}`,
31
- '&:last-child': {
32
- borderRadius: '0 0 4px 4px'
33
- }
34
- }));
35
- const SelectedIcon = (0, _styles.styled)('div')(({
36
- theme
37
- }) => ({
38
- display: 'flex',
39
- justifyContent: 'center',
40
- color: theme.palette.common.white,
41
- fontSize: theme.typography.fontSize,
42
- fontStyle: 'normal',
43
- position: 'absolute',
44
- transform: 'translate(0, -50%)',
45
- backgroundColor: _renderUi.color.correct(),
46
- borderRadius: '50%',
47
- top: theme.spacing(2),
48
- left: theme.spacing(1),
49
- zIndex: 3
50
- }));
51
- const ValueHolder = (0, _styles.styled)('div')(({
52
- theme,
53
- correct
54
- }) => ({
55
- flex: 1,
56
- padding: theme.spacing(0.75),
57
- paddingLeft: theme.spacing(3.5),
58
- ...(correct && {
59
- background: _renderUi.color.correctSecondary()
60
- }),
61
- '& p': {
62
- // browser adds extra margin for p tags by default
63
- margin: 0
64
- }
65
- }));
66
- const ActionButtons = (0, _styles.styled)('div')(({
67
- theme
68
- }) => ({
69
- margin: theme.spacing(0.5),
70
- display: 'flex'
71
- }));
72
- const StyledIconButton = (0, _styles.styled)(_IconButton.default)(({
73
- theme
74
- }) => ({
75
- fontSize: theme.typography.fontSize,
76
- padding: theme.spacing(0.5),
77
- color: theme.palette.common.black
78
- }));
79
- class MenuItemComp extends _react.default.Component {
80
- constructor(...args) {
81
- super(...args);
82
- (0, _defineProperty2.default)(this, "onRemoveClick", e => {
83
- const {
84
- onRemoveChoice
85
- } = this.props;
86
- e.preventDefault();
87
- e.stopPropagation();
88
- onRemoveChoice();
89
- });
90
- (0, _defineProperty2.default)(this, "onEditClick", e => {
91
- const {
92
- onEditChoice
93
- } = this.props;
94
- e.preventDefault();
95
- e.stopPropagation();
96
- onEditChoice();
97
- });
98
- }
99
- render() {
100
- const {
101
- correct,
102
- onClick,
103
- value
104
- } = this.props;
105
- return /*#__PURE__*/_react.default.createElement(MenuItemWrapper, null, correct && /*#__PURE__*/_react.default.createElement(SelectedIcon, {
106
- onClick: onClick
107
- }, /*#__PURE__*/_react.default.createElement(_Check.default, {
108
- fontSize: "inherit"
109
- })), /*#__PURE__*/_react.default.createElement(ValueHolder, {
110
- correct: correct,
111
- onClick: onClick,
112
- dangerouslySetInnerHTML: {
113
- __html: value
114
- }
115
- }), /*#__PURE__*/_react.default.createElement(ActionButtons, null, /*#__PURE__*/_react.default.createElement(StyledIconButton, {
116
- onClick: this.onEditClick,
117
- size: "small",
118
- "aria-label": "Edit"
119
- }, /*#__PURE__*/_react.default.createElement(_Edit.default, {
120
- fontSize: "inherit"
121
- })), /*#__PURE__*/_react.default.createElement(StyledIconButton, {
122
- onClick: this.onRemoveClick,
123
- size: "small",
124
- "aria-label": "Remove"
125
- }, /*#__PURE__*/_react.default.createElement(_Close.default, {
126
- fontSize: "inherit"
127
- }))));
128
- }
129
- }
130
- (0, _defineProperty2.default)(MenuItemComp, "propTypes", {
131
- correct: _propTypes.default.bool.isRequired,
132
- onClick: _propTypes.default.func.isRequired,
133
- onRemoveChoice: _propTypes.default.func.isRequired,
134
- onEditChoice: _propTypes.default.func.isRequired,
135
- value: _propTypes.default.string.isRequired
136
- });
137
- const MenuItem = MenuItemComp;
138
- const findSlateNode = key => {
139
- return window.document.querySelector('[data-key="' + key + '"]');
140
- };
141
- const createElementFromHTML = htmlString => {
142
- const div = document.createElement('div');
143
- div.innerHTML = (htmlString || '').trim();
144
- return div;
145
- };
146
- const ResponseContainer = (0, _styles.styled)('div')(({
147
- theme
148
- }) => ({
149
- boxShadow: theme.shadows[2],
150
- borderRadius: '4px',
151
- width: '400px'
152
- }));
153
- const RespArea = (0, _styles.styled)(_editableHtmlTipTap.default)(({
154
- theme
155
- }) => ({
156
- borderRadius: '4px',
157
- backgroundColor: theme.palette.common.white,
158
- '& [data-slate-editor="true"]': {
159
- minHeight: 'initial !important'
160
- }
161
- }));
162
- const ToolbarButton = (0, _styles.styled)(_IconButton.default)(({
163
- theme
164
- }) => ({
165
- fontSize: theme.typography.fontSize + 2,
166
- padding: theme.spacing(0.5),
167
- color: theme.palette.common.black,
168
- position: 'absolute',
169
- top: '50%',
170
- right: theme.spacing(2),
171
- transform: 'translate(0, -50%)'
172
- }));
173
- const ChoicesHolder = (0, _styles.styled)('div')({
174
- display: 'flex',
175
- flexDirection: 'column',
176
- '& > div:last-child': {
177
- border: 'none'
178
- }
179
- });
180
- const ItemBuilder = (0, _styles.styled)('div')(({
181
- theme
182
- }) => ({
183
- padding: theme.spacing(0.5),
184
- position: 'relative'
185
- }));
186
- class RespAreaToolbar extends _react.default.Component {
187
- constructor(...args) {
188
- super(...args);
189
- (0, _defineProperty2.default)(this, "clickedInside", false);
190
- (0, _defineProperty2.default)(this, "preventDone", false);
191
- (0, _defineProperty2.default)(this, "state", {
192
- respAreaMarkup: '',
193
- editedChoiceIndex: -1
194
- });
195
- (0, _defineProperty2.default)(this, "commitPendingEdit", () => {
196
- const {
197
- editedChoiceIndex
198
- } = this.state;
199
- if (editedChoiceIndex < 0 || !this.editorRef?.getHTML) {
200
- return;
201
- }
202
- this.preventDone = false;
203
- this.onDone(this.editorRef.getHTML() || '');
204
- });
205
- (0, _defineProperty2.default)(this, "onRespAreaChange", respAreaMarkup => {
206
- this.setState({
207
- respAreaMarkup
208
- });
209
- });
210
- (0, _defineProperty2.default)(this, "onAddChoice", () => {
211
- const {
212
- editor
213
- } = this.props;
214
- const {
215
- tr
216
- } = editor.state;
217
- tr.isDone = true;
218
- editor.view.dispatch(tr);
219
- });
220
- (0, _defineProperty2.default)(this, "onDone", val => {
221
- const {
222
- choices,
223
- node,
224
- editor,
225
- onAddChoice,
226
- onToolbarDone
227
- } = this.props;
228
- const {
229
- editedChoiceIndex
230
- } = this.state;
231
- const onlyText = createElementFromHTML(val).textContent.trim();
232
- if (editedChoiceIndex >= 0 && choices?.[editedChoiceIndex]?.correct) {
233
- editor.commands.updateAttributes('inline_dropdown', {
234
- value: val
235
- });
236
- }
237
- if (!(0, _lodashEs.isEmpty)(onlyText)) {
238
- onAddChoice(node.attrs.index, val, editedChoiceIndex);
239
- editor.commands.refreshResponseArea();
240
- }
241
- this.setState({
242
- editedChoiceIndex: -1
243
- });
244
- });
245
- (0, _defineProperty2.default)(this, "onSelectChoice", (newValue, index) => {
246
- const {
247
- node,
248
- editor,
249
- onToolbarDone,
250
- onSelectChoice
251
- } = this.props;
252
- editor.commands.updateAttributes('inline_dropdown', {
253
- value: newValue
254
- });
255
- onSelectChoice(index);
256
- editor.commands.refreshResponseArea();
257
- });
258
- (0, _defineProperty2.default)(this, "onRemoveChoice", (val, index) => {
259
- const {
260
- node,
261
- editor,
262
- onToolbarDone,
263
- onRemoveChoice
264
- } = this.props;
265
- if ((0, _lodashEs.isEqual)(val, node.attrs.value)) {
266
- editor.commands.updateAttributes('inline_dropdown', {
267
- value: null
268
- });
269
- }
270
- onRemoveChoice(index);
271
- editor.commands.refreshResponseArea();
272
- });
273
- (0, _defineProperty2.default)(this, "onEditChoice", (val, index) => {
274
- const {
275
- editedChoiceIndex
276
- } = this.state;
277
- this.clickedInside = true;
278
- this.preventDone = true;
279
- if (editedChoiceIndex >= 0) {
280
- const html = this.editorRef.getHTML() || '';
281
- this.onDone(html);
282
- }
283
- this.onRespAreaChange(val);
284
- this.setState({
285
- editedChoiceIndex: index
286
- });
287
- });
288
- (0, _defineProperty2.default)(this, "finishEditing", () => {
289
- const html = this.editorRef.getHTML() || '';
290
- this.onDone(html);
291
- this.preventDone = true;
292
- });
293
- (0, _defineProperty2.default)(this, "onKeyDown", event => {
294
- if (event.key === 'Enter') {
295
- this.finishEditing();
296
-
297
- // Cancelling event
298
- return true;
299
- }
300
- return false;
301
- });
302
- (0, _defineProperty2.default)(this, "onBlur", () => {
303
- if (this.clickedInside) {
304
- this.clickedInside = false;
305
- return;
306
- }
307
- const {
308
- editedChoiceIndex
309
- } = this.state;
310
- if (editedChoiceIndex >= 0) {
311
- this.commitPendingEdit();
312
- return;
313
- }
314
- this.onAddChoice();
315
- });
316
- (0, _defineProperty2.default)(this, "onClickInside", () => {
317
- this.clickedInside = true;
318
- });
319
- }
320
- componentDidMount() {
321
- const {
322
- editor
323
- } = this.props;
324
- const domNode = editor.view.nodeDOM(editor.state.selection.from);
325
- if (domNode?.nodeType === 1) {
326
- //eslint-disable-next-line
327
- const domNodeRect = domNode.getBoundingClientRect();
328
- const editorNode = domNode.closest('.tiptap');
329
- const editorRect = editorNode.getBoundingClientRect();
330
- const top = domNodeRect.top - editorRect.top;
331
- const left = domNodeRect.left - editorRect.left;
332
- this.setState({
333
- toolbarStyle: {
334
- position: 'absolute',
335
- top: `${top + domNodeRect.height + 25}px`,
336
- left: `${left}px`
337
- }
338
- });
339
- }
340
- }
341
- componentDidUpdate() {
342
- //eslint-disable-next-line
343
- const domNode = _reactDom.default.findDOMNode(this);
344
- (0, _mathRendering.renderMath)(domNode);
345
- }
346
- componentWillUnmount() {
347
- this.commitPendingEdit();
348
- }
349
- render() {
350
- const {
351
- choices,
352
- spellCheck,
353
- uploadSoundSupport,
354
- mathMlOptions = {},
355
- baseInputConfiguration = {},
356
- responseAreaInputConfiguration = {}
357
- } = this.props;
358
- const {
359
- respAreaMarkup,
360
- toolbarStyle,
361
- editedChoiceIndex
362
- } = this.state;
363
- if (!toolbarStyle) {
364
- return null;
365
- }
366
- return /*#__PURE__*/_react.default.createElement(ResponseContainer, {
367
- "data-inline-dropdown-toolbar": "",
368
- style: {
369
- ...toolbarStyle,
370
- backgroundColor: '#E0E1E6',
371
- zIndex: 999
372
- },
373
- onMouseDown: this.onClickInside
374
- }, /*#__PURE__*/_react.default.createElement(ItemBuilder, null, /*#__PURE__*/_react.default.createElement(RespArea, {
375
- editorRef: ref => {
376
- if (ref) {
377
- this.editorRef = ref;
378
- this.props.editorCallback?.(ref);
379
- }
380
- },
381
- autoFocus: true,
382
- autoSave: true,
383
- toolbarOpts: {
384
- position: 'top',
385
- alwaysVisible: false,
386
- showDone: false,
387
- doneOn: 'blur'
388
- },
389
- markup: respAreaMarkup,
390
- onKeyDown: this.onKeyDown,
391
- languageCharactersProps: [{
392
- language: 'spanish'
393
- }, {
394
- language: 'special'
395
- }],
396
- onChange: respAreaMarkup => {
397
- if (this.preventDone) {
398
- return;
399
- }
400
- this.onRespAreaChange(respAreaMarkup);
401
- },
402
- onDone: val => {
403
- if (this.preventDone) {
404
- this.preventDone = false;
405
- return;
406
- }
407
- this.onDone(val);
408
- },
409
- onBlur: e => {
410
- const isInInsertCharacter = !!(e.relatedTarget && e.relatedTarget.closest('.insert-character-dialog'));
411
- const isInDoneButton = !!(e.relatedTarget && e.relatedTarget.closest('[aria-label="Done"]'));
412
- if (e.relatedTarget) {
413
- this.preventDone = isInInsertCharacter || isInDoneButton;
414
- if (isInInsertCharacter || isInDoneButton) {
415
- this.clickedInside = true;
416
- }
417
- }
418
- this.onBlur();
419
- },
420
- placeholder: "Add Choice",
421
- pluginProps: (0, _utils.getPluginProps)(responseAreaInputConfiguration?.inputConfiguration, baseInputConfiguration),
422
- spellCheck: spellCheck,
423
- uploadSoundSupport: uploadSoundSupport,
424
- mathMlOptions: mathMlOptions
425
- }), /*#__PURE__*/_react.default.createElement(ToolbarButton, {
426
- onClick: () => editedChoiceIndex >= 0 ? this.finishEditing() : this.onAddChoice(),
427
- size: "small",
428
- "aria-label": "Add"
429
- }, editedChoiceIndex >= 0 ? /*#__PURE__*/_react.default.createElement(_Check.default, {
430
- fontSize: "inherit"
431
- }) : /*#__PURE__*/_react.default.createElement(_Add.default, {
432
- fontSize: "inherit"
433
- }))), choices && /*#__PURE__*/_react.default.createElement(ChoicesHolder, null, choices.map(({
434
- label,
435
- correct
436
- }, index) => /*#__PURE__*/_react.default.createElement(MenuItem, {
437
- key: index,
438
- onClick: () => this.onSelectChoice(label, index),
439
- onRemoveChoice: () => this.onRemoveChoice(label, index),
440
- onEditChoice: () => this.onEditChoice(label, index),
441
- value: label,
442
- correct: correct
443
- }))));
444
- }
445
- }
446
- (0, _defineProperty2.default)(RespAreaToolbar, "propTypes", {
447
- node: _propTypes.default.object,
448
- pos: _propTypes.default.number,
449
- uploadSoundSupport: _propTypes.default.object,
450
- onDone: _propTypes.default.func,
451
- choices: _propTypes.default.array,
452
- onAddChoice: _propTypes.default.func.isRequired,
453
- editorCallback: _propTypes.default.func,
454
- onRemoveChoice: _propTypes.default.func.isRequired,
455
- onSelectChoice: _propTypes.default.func.isRequired,
456
- onToolbarDone: _propTypes.default.func.isRequired,
457
- editor: _propTypes.default.object,
458
- spellCheck: _propTypes.default.bool
459
- });
460
- const StyledRespAreaToolbar = RespAreaToolbar;
461
- var _default = exports.default = StyledRespAreaToolbar;
462
- //# sourceMappingURL=inline-dropdown-toolbar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inline-dropdown-toolbar.js","names":["_utils","require","_react","_interopRequireDefault","_reactDom","_propTypes","_editableHtmlTipTap","_mathRendering","_styles","_lodashEs","_renderUi","_Add","_Check","_Close","_Edit","_IconButton","MenuItemWrapper","styled","theme","display","alignItems","position","background","palette","common","white","borderBottom","grey","borderRadius","SelectedIcon","justifyContent","color","fontSize","typography","fontStyle","transform","backgroundColor","correct","top","spacing","left","zIndex","ValueHolder","flex","padding","paddingLeft","correctSecondary","margin","ActionButtons","StyledIconButton","IconButton","black","MenuItemComp","React","Component","constructor","args","_defineProperty2","default","e","onRemoveChoice","props","preventDefault","stopPropagation","onEditChoice","render","onClick","value","createElement","dangerouslySetInnerHTML","__html","onEditClick","size","onRemoveClick","PropTypes","bool","isRequired","func","string","MenuItem","findSlateNode","key","window","document","querySelector","createElementFromHTML","htmlString","div","innerHTML","trim","ResponseContainer","boxShadow","shadows","width","RespArea","EditableHtml","minHeight","ToolbarButton","right","ChoicesHolder","flexDirection","border","ItemBuilder","RespAreaToolbar","respAreaMarkup","editedChoiceIndex","state","editorRef","getHTML","preventDone","onDone","setState","editor","tr","isDone","view","dispatch","val","choices","node","onAddChoice","onToolbarDone","onlyText","textContent","commands","updateAttributes","isEmpty","attrs","index","refreshResponseArea","newValue","onSelectChoice","isEqual","clickedInside","html","onRespAreaChange","event","finishEditing","commitPendingEdit","componentDidMount","domNode","nodeDOM","selection","from","nodeType","domNodeRect","getBoundingClientRect","editorNode","closest","editorRect","toolbarStyle","height","componentDidUpdate","ReactDOM","findDOMNode","renderMath","componentWillUnmount","spellCheck","uploadSoundSupport","mathMlOptions","baseInputConfiguration","responseAreaInputConfiguration","style","onMouseDown","onClickInside","ref","editorCallback","autoFocus","autoSave","toolbarOpts","alwaysVisible","showDone","doneOn","markup","onKeyDown","languageCharactersProps","language","onChange","onBlur","isInInsertCharacter","relatedTarget","isInDoneButton","placeholder","pluginProps","getPluginProps","inputConfiguration","map","label","object","pos","number","array","StyledRespAreaToolbar","_default","exports"],"sources":["../src/inline-dropdown-toolbar.jsx"],"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 { styled } from '@mui/material/styles';\nimport { isEmpty, isEqual } from 'lodash-es';\nimport { color } from '@pie-lib/render-ui';\n\nimport AddIcon from '@mui/icons-material/Add';\nimport CheckIcon from '@mui/icons-material/Check';\nimport CloseIcon from '@mui/icons-material/Close';\nimport EditIcon from '@mui/icons-material/Edit';\nimport IconButton from '@mui/material/IconButton';\n\nconst MenuItemWrapper = styled('div')(({ theme }) => ({\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\nconst SelectedIcon = styled('div')(({ theme }) => ({\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(2),\n left: theme.spacing(1),\n zIndex: 3,\n}));\n\nconst ValueHolder = styled('div')(({ theme, correct }) => ({\n flex: 1,\n padding: theme.spacing(0.75),\n paddingLeft: theme.spacing(3.5),\n ...(correct && {\n background: color.correctSecondary(),\n }),\n '& p': {\n // browser adds extra margin for p tags by default\n margin: 0,\n },\n}));\n\nconst ActionButtons = styled('div')(({ theme }) => ({\n margin: theme.spacing(0.5),\n display: 'flex',\n}));\n\nconst StyledIconButton = styled(IconButton)(({ theme }) => ({\n fontSize: theme.typography.fontSize,\n padding: theme.spacing(0.5),\n color: theme.palette.common.black,\n}));\n\nclass MenuItemComp extends React.Component {\n static propTypes = {\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 { correct, onClick, value } = this.props;\n\n return (\n <MenuItemWrapper>\n {correct && (\n <SelectedIcon onClick={onClick}>\n <CheckIcon fontSize=\"inherit\" />\n </SelectedIcon>\n )}\n <ValueHolder\n correct={correct}\n onClick={onClick}\n dangerouslySetInnerHTML={{\n __html: value,\n }}\n />\n <ActionButtons>\n <StyledIconButton onClick={this.onEditClick} size=\"small\" aria-label=\"Edit\">\n <EditIcon fontSize=\"inherit\" />\n </StyledIconButton>\n <StyledIconButton onClick={this.onRemoveClick} size=\"small\" aria-label=\"Remove\">\n <CloseIcon fontSize=\"inherit\" />\n </StyledIconButton>\n </ActionButtons>\n </MenuItemWrapper>\n );\n }\n}\n\nconst MenuItem = 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\nconst ResponseContainer = styled('div')(({ theme }) => ({\n boxShadow: theme.shadows[2],\n borderRadius: '4px',\n width: '400px',\n}));\n\nconst RespArea = styled(EditableHtml)(({ theme }) => ({\n borderRadius: '4px',\n backgroundColor: theme.palette.common.white,\n '& [data-slate-editor=\"true\"]': {\n minHeight: 'initial !important',\n },\n}));\n\nconst ToolbarButton = styled(IconButton)(({ theme }) => ({\n fontSize: theme.typography.fontSize + 2,\n padding: theme.spacing(0.5),\n color: theme.palette.common.black,\n position: 'absolute',\n top: '50%',\n right: theme.spacing(2),\n transform: 'translate(0, -50%)',\n}));\n\nconst ChoicesHolder = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n '& > div:last-child': {\n border: 'none',\n },\n});\n\nconst ItemBuilder = styled('div')(({ theme }) => ({\n padding: theme.spacing(0.5),\n position: 'relative',\n}));\n\nclass RespAreaToolbar extends React.Component {\n static propTypes = {\n node: PropTypes.object,\n pos: PropTypes.number,\n uploadSoundSupport: PropTypes.object,\n onDone: PropTypes.func,\n choices: PropTypes.array,\n onAddChoice: PropTypes.func.isRequired,\n editorCallback: 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 - editorRect.top;\n const left = domNodeRect.left - editorRect.left;\n\n this.setState({\n toolbarStyle: {\n position: 'absolute',\n top: `${top + domNodeRect.height + 25}px`,\n left: `${left}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 componentWillUnmount() {\n this.commitPendingEdit();\n }\n\n commitPendingEdit = () => {\n const { editedChoiceIndex } = this.state;\n\n if (editedChoiceIndex < 0 || !this.editorRef?.getHTML) {\n return;\n }\n\n this.preventDone = false;\n this.onDone(this.editorRef.getHTML() || '');\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\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 }\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 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('inline_dropdown', { value: null });\n }\n\n onRemoveChoice(index);\n editor.commands.refreshResponseArea();\n };\n\n onEditChoice = (val, index) => {\n const { editedChoiceIndex } = this.state;\n\n this.clickedInside = true;\n this.preventDone = true;\n\n if (editedChoiceIndex >= 0) {\n const html = this.editorRef.getHTML() || '';\n\n this.onDone(html);\n }\n\n this.onRespAreaChange(val);\n this.setState({ editedChoiceIndex: index });\n };\n\n finishEditing = () => {\n const html = this.editorRef.getHTML() || '';\n\n this.onDone(html);\n this.preventDone = true;\n };\n\n onKeyDown = (event) => {\n if (event.key === 'Enter') {\n this.finishEditing();\n\n // Cancelling event\n return true;\n }\n\n return false;\n };\n\n onBlur = () => {\n if (this.clickedInside) {\n this.clickedInside = false;\n return;\n }\n\n const { editedChoiceIndex } = this.state;\n\n if (editedChoiceIndex >= 0) {\n this.commitPendingEdit();\n return;\n }\n\n this.onAddChoice();\n };\n\n onClickInside = () => {\n this.clickedInside = true;\n };\n\n render() {\n const {\n choices,\n spellCheck,\n uploadSoundSupport,\n mathMlOptions = {},\n baseInputConfiguration = {},\n responseAreaInputConfiguration = {},\n } = this.props;\n const { respAreaMarkup, toolbarStyle, editedChoiceIndex } = this.state;\n\n if (!toolbarStyle) {\n return null;\n }\n\n return (\n <ResponseContainer\n data-inline-dropdown-toolbar=\"\"\n style={{\n ...toolbarStyle,\n backgroundColor: '#E0E1E6',\n zIndex: 999,\n }}\n onMouseDown={this.onClickInside}\n >\n <ItemBuilder>\n <RespArea\n editorRef={(ref) => {\n if (ref) {\n this.editorRef = ref;\n this.props.editorCallback?.(ref);\n }\n }}\n autoFocus={true}\n autoSave\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 this.preventDone = false;\n return;\n }\n\n this.onDone(val);\n }}\n onBlur={(e) => {\n const isInInsertCharacter = !!(e.relatedTarget && e.relatedTarget.closest('.insert-character-dialog'));\n const isInDoneButton = !!(e.relatedTarget && e.relatedTarget.closest('[aria-label=\"Done\"]'));\n\n if (e.relatedTarget) {\n this.preventDone = isInInsertCharacter || isInDoneButton;\n\n if (isInInsertCharacter || isInDoneButton) {\n this.clickedInside = true;\n }\n }\n\n this.onBlur();\n }}\n placeholder=\"Add Choice\"\n pluginProps={getPluginProps(responseAreaInputConfiguration?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheck}\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n />\n <ToolbarButton\n onClick={() => editedChoiceIndex >= 0 ? this.finishEditing() : this.onAddChoice()}\n size=\"small\"\n aria-label=\"Add\"\n >\n {editedChoiceIndex >= 0 ? <CheckIcon fontSize=\"inherit\" /> : <AddIcon fontSize=\"inherit\"/>}\n </ToolbarButton>\n </ItemBuilder>\n\n {choices && (\n <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 </ChoicesHolder>\n )}\n </ResponseContainer>\n );\n }\n}\n\nconst StyledRespAreaToolbar = RespAreaToolbar;\n\nexport default StyledRespAreaToolbar;\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,SAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,UAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,mBAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,cAAA,GAAAN,OAAA;AACA,IAAAO,OAAA,GAAAP,OAAA;AACA,IAAAQ,SAAA,GAAAR,OAAA;AACA,IAAAS,SAAA,GAAAT,OAAA;AAEA,IAAAU,IAAA,GAAAR,sBAAA,CAAAF,OAAA;AACA,IAAAW,MAAA,GAAAT,sBAAA,CAAAF,OAAA;AACA,IAAAY,MAAA,GAAAV,sBAAA,CAAAF,OAAA;AACA,IAAAa,KAAA,GAAAX,sBAAA,CAAAF,OAAA;AACA,IAAAc,WAAA,GAAAZ,sBAAA,CAAAF,OAAA;AAEA,MAAMe,eAAe,GAAG,IAAAC,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEC;AAAM,CAAC,MAAM;EACpDC,OAAO,EAAE,MAAM;EACfC,UAAU,EAAE,YAAY;EACxBC,QAAQ,EAAE,UAAU;EACpBC,UAAU,EAAEJ,KAAK,CAACK,OAAO,CAACC,MAAM,CAACC,KAAK;EACtCC,YAAY,EAAE,aAAaR,KAAK,CAACK,OAAO,CAACI,IAAI,CAAC,GAAG,CAAC,EAAE;EAEpD,cAAc,EAAE;IACdC,YAAY,EAAE;EAChB;AACF,CAAC,CAAC,CAAC;AAEH,MAAMC,YAAY,GAAG,IAAAZ,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEC;AAAM,CAAC,MAAM;EACjDC,OAAO,EAAE,MAAM;EACfW,cAAc,EAAE,QAAQ;EACxBC,KAAK,EAAEb,KAAK,CAACK,OAAO,CAACC,MAAM,CAACC,KAAK;EACjCO,QAAQ,EAAEd,KAAK,CAACe,UAAU,CAACD,QAAQ;EACnCE,SAAS,EAAE,QAAQ;EACnBb,QAAQ,EAAE,UAAU;EACpBc,SAAS,EAAE,oBAAoB;EAC/BC,eAAe,EAAEL,eAAK,CAACM,OAAO,CAAC,CAAC;EAChCT,YAAY,EAAE,KAAK;EACnBU,GAAG,EAAEpB,KAAK,CAACqB,OAAO,CAAC,CAAC,CAAC;EACrBC,IAAI,EAAEtB,KAAK,CAACqB,OAAO,CAAC,CAAC,CAAC;EACtBE,MAAM,EAAE;AACV,CAAC,CAAC,CAAC;AAEH,MAAMC,WAAW,GAAG,IAAAzB,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEC,KAAK;EAAEmB;AAAQ,CAAC,MAAM;EACzDM,IAAI,EAAE,CAAC;EACPC,OAAO,EAAE1B,KAAK,CAACqB,OAAO,CAAC,IAAI,CAAC;EAC5BM,WAAW,EAAE3B,KAAK,CAACqB,OAAO,CAAC,GAAG,CAAC;EAC/B,IAAIF,OAAO,IAAI;IACbf,UAAU,EAAES,eAAK,CAACe,gBAAgB,CAAC;EACrC,CAAC,CAAC;EACF,KAAK,EAAE;IACL;IACAC,MAAM,EAAE;EACV;AACF,CAAC,CAAC,CAAC;AAEH,MAAMC,aAAa,GAAG,IAAA/B,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEC;AAAM,CAAC,MAAM;EAClD6B,MAAM,EAAE7B,KAAK,CAACqB,OAAO,CAAC,GAAG,CAAC;EAC1BpB,OAAO,EAAE;AACX,CAAC,CAAC,CAAC;AAEH,MAAM8B,gBAAgB,GAAG,IAAAhC,cAAM,EAACiC,mBAAU,CAAC,CAAC,CAAC;EAAEhC;AAAM,CAAC,MAAM;EAC1Dc,QAAQ,EAAEd,KAAK,CAACe,UAAU,CAACD,QAAQ;EACnCY,OAAO,EAAE1B,KAAK,CAACqB,OAAO,CAAC,GAAG,CAAC;EAC3BR,KAAK,EAAEb,KAAK,CAACK,OAAO,CAACC,MAAM,CAAC2B;AAC9B,CAAC,CAAC,CAAC;AAEH,MAAMC,YAAY,SAASC,cAAK,CAACC,SAAS,CAAC;EAAAC,YAAA,GAAAC,IAAA;IAAA,SAAAA,IAAA;IAAA,IAAAC,gBAAA,CAAAC,OAAA,yBASxBC,CAAC,IAAK;MACrB,MAAM;QAAEC;MAAe,CAAC,GAAG,IAAI,CAACC,KAAK;MAErCF,CAAC,CAACG,cAAc,CAAC,CAAC;MAClBH,CAAC,CAACI,eAAe,CAAC,CAAC;MAEnBH,cAAc,CAAC,CAAC;IAClB,CAAC;IAAA,IAAAH,gBAAA,CAAAC,OAAA,uBAEcC,CAAC,IAAK;MACnB,MAAM;QAAEK;MAAa,CAAC,GAAG,IAAI,CAACH,KAAK;MAEnCF,CAAC,CAACG,cAAc,CAAC,CAAC;MAClBH,CAAC,CAACI,eAAe,CAAC,CAAC;MAEnBC,YAAY,CAAC,CAAC;IAChB,CAAC;EAAA;EAEDC,MAAMA,CAAA,EAAG;IACP,MAAM;MAAE5B,OAAO;MAAE6B,OAAO;MAAEC;IAAM,CAAC,GAAG,IAAI,CAACN,KAAK;IAE9C,oBACE3D,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAACpD,eAAe,QACbqB,OAAO,iBACNnC,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAACvC,YAAY;MAACqC,OAAO,EAAEA;IAAQ,gBAC7BhE,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAACxD,MAAA,CAAA8C,OAAS;MAAC1B,QAAQ,EAAC;IAAS,CAAE,CACnB,CACf,eACD9B,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAAC1B,WAAW;MACVL,OAAO,EAAEA,OAAQ;MACjB6B,OAAO,EAAEA,OAAQ;MACjBG,uBAAuB,EAAE;QACvBC,MAAM,EAAEH;MACV;IAAE,CACH,CAAC,eACFjE,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAACpB,aAAa,qBACZ9C,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAACnB,gBAAgB;MAACiB,OAAO,EAAE,IAAI,CAACK,WAAY;MAACC,IAAI,EAAC,OAAO;MAAC,cAAW;IAAM,gBACzEtE,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAACtD,KAAA,CAAA4C,OAAQ;MAAC1B,QAAQ,EAAC;IAAS,CAAE,CACd,CAAC,eACnB9B,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAACnB,gBAAgB;MAACiB,OAAO,EAAE,IAAI,CAACO,aAAc;MAACD,IAAI,EAAC,OAAO;MAAC,cAAW;IAAQ,gBAC7EtE,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAACvD,MAAA,CAAA6C,OAAS;MAAC1B,QAAQ,EAAC;IAAS,CAAE,CACf,CACL,CACA,CAAC;EAEtB;AACF;AAAC,IAAAyB,gBAAA,CAAAC,OAAA,EAvDKN,YAAY,eACG;EACjBf,OAAO,EAAEqC,kBAAS,CAACC,IAAI,CAACC,UAAU;EAClCV,OAAO,EAAEQ,kBAAS,CAACG,IAAI,CAACD,UAAU;EAClChB,cAAc,EAAEc,kBAAS,CAACG,IAAI,CAACD,UAAU;EACzCZ,YAAY,EAAEU,kBAAS,CAACG,IAAI,CAACD,UAAU;EACvCT,KAAK,EAAEO,kBAAS,CAACI,MAAM,CAACF;AAC1B,CAAC;AAkDH,MAAMG,QAAQ,GAAG3B,YAAY;AAE7B,MAAM4B,aAAa,GAAIC,GAAG,IAAK;EAC7B,OAAOC,MAAM,CAACC,QAAQ,CAACC,aAAa,CAAC,aAAa,GAAGH,GAAG,GAAG,IAAI,CAAC;AAClE,CAAC;AAED,MAAMI,qBAAqB,GAAIC,UAAU,IAAK;EAC5C,MAAMC,GAAG,GAAGJ,QAAQ,CAACf,aAAa,CAAC,KAAK,CAAC;EAEzCmB,GAAG,CAACC,SAAS,GAAG,CAACF,UAAU,IAAI,EAAE,EAAEG,IAAI,CAAC,CAAC;EAEzC,OAAOF,GAAG;AACZ,CAAC;AAED,MAAMG,iBAAiB,GAAG,IAAAzE,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEC;AAAM,CAAC,MAAM;EACtDyE,SAAS,EAAEzE,KAAK,CAAC0E,OAAO,CAAC,CAAC,CAAC;EAC3BhE,YAAY,EAAE,KAAK;EACnBiE,KAAK,EAAE;AACT,CAAC,CAAC,CAAC;AAEH,MAAMC,QAAQ,GAAG,IAAA7E,cAAM,EAAC8E,2BAAY,CAAC,CAAC,CAAC;EAAE7E;AAAM,CAAC,MAAM;EACpDU,YAAY,EAAE,KAAK;EACnBQ,eAAe,EAAElB,KAAK,CAACK,OAAO,CAACC,MAAM,CAACC,KAAK;EAC3C,8BAA8B,EAAE;IAC9BuE,SAAS,EAAE;EACb;AACF,CAAC,CAAC,CAAC;AAEH,MAAMC,aAAa,GAAG,IAAAhF,cAAM,EAACiC,mBAAU,CAAC,CAAC,CAAC;EAAEhC;AAAM,CAAC,MAAM;EACvDc,QAAQ,EAAEd,KAAK,CAACe,UAAU,CAACD,QAAQ,GAAG,CAAC;EACvCY,OAAO,EAAE1B,KAAK,CAACqB,OAAO,CAAC,GAAG,CAAC;EAC3BR,KAAK,EAAEb,KAAK,CAACK,OAAO,CAACC,MAAM,CAAC2B,KAAK;EACjC9B,QAAQ,EAAE,UAAU;EACpBiB,GAAG,EAAE,KAAK;EACV4D,KAAK,EAAEhF,KAAK,CAACqB,OAAO,CAAC,CAAC,CAAC;EACvBJ,SAAS,EAAE;AACb,CAAC,CAAC,CAAC;AAEH,MAAMgE,aAAa,GAAG,IAAAlF,cAAM,EAAC,KAAK,CAAC,CAAC;EAClCE,OAAO,EAAE,MAAM;EACfiF,aAAa,EAAE,QAAQ;EACvB,oBAAoB,EAAE;IACpBC,MAAM,EAAE;EACV;AACF,CAAC,CAAC;AAEF,MAAMC,WAAW,GAAG,IAAArF,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEC;AAAM,CAAC,MAAM;EAChD0B,OAAO,EAAE1B,KAAK,CAACqB,OAAO,CAAC,GAAG,CAAC;EAC3BlB,QAAQ,EAAE;AACZ,CAAC,CAAC,CAAC;AAEH,MAAMkF,eAAe,SAASlD,cAAK,CAACC,SAAS,CAAC;EAAAC,YAAA,GAAAC,IAAA;IAAA,SAAAA,IAAA;IAAA,IAAAC,gBAAA,CAAAC,OAAA,yBAe5B,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,uBACP,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,iBAEX;MACN8C,cAAc,EAAE,EAAE;MAClBC,iBAAiB,EAAE,CAAC;IACtB,CAAC;IAAA,IAAAhD,gBAAA,CAAAC,OAAA,6BAoCmB,MAAM;MACxB,MAAM;QAAE+C;MAAkB,CAAC,GAAG,IAAI,CAACC,KAAK;MAExC,IAAID,iBAAiB,GAAG,CAAC,IAAI,CAAC,IAAI,CAACE,SAAS,EAAEC,OAAO,EAAE;QACrD;MACF;MAEA,IAAI,CAACC,WAAW,GAAG,KAAK;MACxB,IAAI,CAACC,MAAM,CAAC,IAAI,CAACH,SAAS,CAACC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,CAAC;IAAA,IAAAnD,gBAAA,CAAAC,OAAA,4BAEmB8C,cAAc,IAAK;MACrC,IAAI,CAACO,QAAQ,CAAC;QAAEP;MAAe,CAAC,CAAC;IACnC,CAAC;IAAA,IAAA/C,gBAAA,CAAAC,OAAA,uBAEa,MAAM;MAClB,MAAM;QAAEsD;MAAO,CAAC,GAAG,IAAI,CAACnD,KAAK;MAC7B,MAAM;QAAEoD;MAAG,CAAC,GAAGD,MAAM,CAACN,KAAK;MAE3BO,EAAE,CAACC,MAAM,GAAG,IAAI;MAChBF,MAAM,CAACG,IAAI,CAACC,QAAQ,CAACH,EAAE,CAAC;IAC1B,CAAC;IAAA,IAAAxD,gBAAA,CAAAC,OAAA,kBAES2D,GAAG,IAAK;MAChB,MAAM;QAAEC,OAAO;QAAEC,IAAI;QAAEP,MAAM;QAAEQ,WAAW;QAAEC;MAAc,CAAC,GAAG,IAAI,CAAC5D,KAAK;MAExE,MAAM;QAAE4C;MAAkB,CAAC,GAAG,IAAI,CAACC,KAAK;MACxC,MAAMgB,QAAQ,GAAGrC,qBAAqB,CAACgC,GAAG,CAAC,CAACM,WAAW,CAAClC,IAAI,CAAC,CAAC;MAE9D,IAAIgB,iBAAiB,IAAI,CAAC,IAAIa,OAAO,GAAGb,iBAAiB,CAAC,EAAEpE,OAAO,EAAE;QACnE2E,MAAM,CAACY,QAAQ,CAACC,gBAAgB,CAAC,iBAAiB,EAAE;UAAE1D,KAAK,EAAEkD;QAAI,CAAC,CAAC;MACrE;MAEA,IAAI,CAAC,IAAAS,iBAAO,EAACJ,QAAQ,CAAC,EAAE;QACtBF,WAAW,CAACD,IAAI,CAACQ,KAAK,CAACC,KAAK,EAAEX,GAAG,EAAEZ,iBAAiB,CAAC;QACrDO,MAAM,CAACY,QAAQ,CAACK,mBAAmB,CAAC,CAAC;MACvC;MAEA,IAAI,CAAClB,QAAQ,CAAC;QAAEN,iBAAiB,EAAE,CAAC;MAAE,CAAC,CAAC;IAC1C,CAAC;IAAA,IAAAhD,gBAAA,CAAAC,OAAA,0BAEgB,CAACwE,QAAQ,EAAEF,KAAK,KAAK;MACpC,MAAM;QAAET,IAAI;QAAEP,MAAM;QAAES,aAAa;QAAEU;MAAe,CAAC,GAAG,IAAI,CAACtE,KAAK;MAElEmD,MAAM,CAACY,QAAQ,CAACC,gBAAgB,CAAC,iBAAiB,EAAE;QAAE1D,KAAK,EAAE+D;MAAS,CAAC,CAAC;MAExEC,cAAc,CAACH,KAAK,CAAC;MACrBhB,MAAM,CAACY,QAAQ,CAACK,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAAA,IAAAxE,gBAAA,CAAAC,OAAA,0BAEgB,CAAC2D,GAAG,EAAEW,KAAK,KAAK;MAC/B,MAAM;QAAET,IAAI;QAAEP,MAAM;QAAES,aAAa;QAAE7D;MAAe,CAAC,GAAG,IAAI,CAACC,KAAK;MAElE,IAAI,IAAAuE,iBAAO,EAACf,GAAG,EAAEE,IAAI,CAACQ,KAAK,CAAC5D,KAAK,CAAC,EAAE;QAClC6C,MAAM,CAACY,QAAQ,CAACC,gBAAgB,CAAC,iBAAiB,EAAE;UAAE1D,KAAK,EAAE;QAAK,CAAC,CAAC;MACtE;MAEAP,cAAc,CAACoE,KAAK,CAAC;MACrBhB,MAAM,CAACY,QAAQ,CAACK,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAAA,IAAAxE,gBAAA,CAAAC,OAAA,wBAEc,CAAC2D,GAAG,EAAEW,KAAK,KAAK;MAC7B,MAAM;QAAEvB;MAAkB,CAAC,GAAG,IAAI,CAACC,KAAK;MAExC,IAAI,CAAC2B,aAAa,GAAG,IAAI;MACzB,IAAI,CAACxB,WAAW,GAAG,IAAI;MAEvB,IAAIJ,iBAAiB,IAAI,CAAC,EAAE;QAC1B,MAAM6B,IAAI,GAAG,IAAI,CAAC3B,SAAS,CAACC,OAAO,CAAC,CAAC,IAAI,EAAE;QAE3C,IAAI,CAACE,MAAM,CAACwB,IAAI,CAAC;MACnB;MAEA,IAAI,CAACC,gBAAgB,CAAClB,GAAG,CAAC;MAC1B,IAAI,CAACN,QAAQ,CAAC;QAAEN,iBAAiB,EAAEuB;MAAM,CAAC,CAAC;IAC7C,CAAC;IAAA,IAAAvE,gBAAA,CAAAC,OAAA,yBAEe,MAAM;MACpB,MAAM4E,IAAI,GAAG,IAAI,CAAC3B,SAAS,CAACC,OAAO,CAAC,CAAC,IAAI,EAAE;MAE3C,IAAI,CAACE,MAAM,CAACwB,IAAI,CAAC;MACjB,IAAI,CAACzB,WAAW,GAAG,IAAI;IACzB,CAAC;IAAA,IAAApD,gBAAA,CAAAC,OAAA,qBAEY8E,KAAK,IAAK;MACrB,IAAIA,KAAK,CAACvD,GAAG,KAAK,OAAO,EAAE;QACzB,IAAI,CAACwD,aAAa,CAAC,CAAC;;QAEpB;QACA,OAAO,IAAI;MACb;MAEA,OAAO,KAAK;IACd,CAAC;IAAA,IAAAhF,gBAAA,CAAAC,OAAA,kBAEQ,MAAM;MACb,IAAI,IAAI,CAAC2E,aAAa,EAAE;QACtB,IAAI,CAACA,aAAa,GAAG,KAAK;QAC1B;MACF;MAEA,MAAM;QAAE5B;MAAkB,CAAC,GAAG,IAAI,CAACC,KAAK;MAExC,IAAID,iBAAiB,IAAI,CAAC,EAAE;QAC1B,IAAI,CAACiC,iBAAiB,CAAC,CAAC;QACxB;MACF;MAEA,IAAI,CAAClB,WAAW,CAAC,CAAC;IACpB,CAAC;IAAA,IAAA/D,gBAAA,CAAAC,OAAA,yBAEe,MAAM;MACpB,IAAI,CAAC2E,aAAa,GAAG,IAAI;IAC3B,CAAC;EAAA;EAnJDM,iBAAiBA,CAAA,EAAG;IAClB,MAAM;MAAE3B;IAAO,CAAC,GAAG,IAAI,CAACnD,KAAK;IAE7B,MAAM+E,OAAO,GAAG5B,MAAM,CAACG,IAAI,CAAC0B,OAAO,CAAC7B,MAAM,CAACN,KAAK,CAACoC,SAAS,CAACC,IAAI,CAAC;IAEhE,IAAIH,OAAO,EAAEI,QAAQ,KAAK,CAAC,EAAE;MAC3B;MACA,MAAMC,WAAW,GAAGL,OAAO,CAACM,qBAAqB,CAAC,CAAC;MACnD,MAAMC,UAAU,GAAGP,OAAO,CAACQ,OAAO,CAAC,SAAS,CAAC;MAC7C,MAAMC,UAAU,GAAGF,UAAU,CAACD,qBAAqB,CAAC,CAAC;MACrD,MAAM5G,GAAG,GAAG2G,WAAW,CAAC3G,GAAG,GAAG+G,UAAU,CAAC/G,GAAG;MAC5C,MAAME,IAAI,GAAGyG,WAAW,CAACzG,IAAI,GAAG6G,UAAU,CAAC7G,IAAI;MAE/C,IAAI,CAACuE,QAAQ,CAAC;QACZuC,YAAY,EAAE;UACZjI,QAAQ,EAAE,UAAU;UACpBiB,GAAG,EAAE,GAAGA,GAAG,GAAG2G,WAAW,CAACM,MAAM,GAAG,EAAE,IAAI;UACzC/G,IAAI,EAAE,GAAGA,IAAI;QACf;MACF,CAAC,CAAC;IACJ;EACF;EAEAgH,kBAAkBA,CAAA,EAAG;IACnB;IACA,MAAMZ,OAAO,GAAGa,iBAAQ,CAACC,WAAW,CAAC,IAAI,CAAC;IAE1C,IAAAC,yBAAU,EAACf,OAAO,CAAC;EACrB;EAEAgB,oBAAoBA,CAAA,EAAG;IACrB,IAAI,CAAClB,iBAAiB,CAAC,CAAC;EAC1B;EAqHAzE,MAAMA,CAAA,EAAG;IACP,MAAM;MACJqD,OAAO;MACPuC,UAAU;MACVC,kBAAkB;MAClBC,aAAa,GAAG,CAAC,CAAC;MAClBC,sBAAsB,GAAG,CAAC,CAAC;MAC3BC,8BAA8B,GAAG,CAAC;IACpC,CAAC,GAAG,IAAI,CAACpG,KAAK;IACd,MAAM;MAAE2C,cAAc;MAAE8C,YAAY;MAAE7C;IAAkB,CAAC,GAAG,IAAI,CAACC,KAAK;IAEtE,IAAI,CAAC4C,YAAY,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,oBACEpJ,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAACsB,iBAAiB;MAChB,gCAA6B,EAAE;MAC/BwE,KAAK,EAAE;QACL,GAAGZ,YAAY;QACflH,eAAe,EAAE,SAAS;QAC1BK,MAAM,EAAE;MACV,CAAE;MACF0H,WAAW,EAAE,IAAI,CAACC;IAAc,gBAEhClK,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAACkC,WAAW,qBACVpG,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAAC0B,QAAQ;MACPa,SAAS,EAAG0D,GAAG,IAAK;QAClB,IAAIA,GAAG,EAAE;UACP,IAAI,CAAC1D,SAAS,GAAG0D,GAAG;UACpB,IAAI,CAACxG,KAAK,CAACyG,cAAc,GAAGD,GAAG,CAAC;QAClC;MACF,CAAE;MACFE,SAAS,EAAE,IAAK;MAChBC,QAAQ;MACRC,WAAW,EAAE;QACXpJ,QAAQ,EAAE,KAAK;QACfqJ,aAAa,EAAE,KAAK;QACpBC,QAAQ,EAAE,KAAK;QACfC,MAAM,EAAE;MACV,CAAE;MACFC,MAAM,EAAErE,cAAe;MACvBsE,SAAS,EAAE,IAAI,CAACA,SAAU;MAC1BC,uBAAuB,EAAE,CAAC;QAAEC,QAAQ,EAAE;MAAU,CAAC,EAAE;QAAEA,QAAQ,EAAE;MAAU,CAAC,CAAE;MAC5EC,QAAQ,EAAGzE,cAAc,IAAK;QAC5B,IAAI,IAAI,CAACK,WAAW,EAAE;UACpB;QACF;QAEA,IAAI,CAAC0B,gBAAgB,CAAC/B,cAAc,CAAC;MACvC,CAAE;MACFM,MAAM,EAAGO,GAAG,IAAK;QACf,IAAI,IAAI,CAACR,WAAW,EAAE;UACpB,IAAI,CAACA,WAAW,GAAG,KAAK;UACxB;QACF;QAEA,IAAI,CAACC,MAAM,CAACO,GAAG,CAAC;MAClB,CAAE;MACF6D,MAAM,EAAGvH,CAAC,IAAK;QACb,MAAMwH,mBAAmB,GAAG,CAAC,EAAExH,CAAC,CAACyH,aAAa,IAAIzH,CAAC,CAACyH,aAAa,CAAChC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACtG,MAAMiC,cAAc,GAAG,CAAC,EAAE1H,CAAC,CAACyH,aAAa,IAAIzH,CAAC,CAACyH,aAAa,CAAChC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAE5F,IAAIzF,CAAC,CAACyH,aAAa,EAAE;UACnB,IAAI,CAACvE,WAAW,GAAGsE,mBAAmB,IAAIE,cAAc;UAExD,IAAIF,mBAAmB,IAAIE,cAAc,EAAE;YACzC,IAAI,CAAChD,aAAa,GAAG,IAAI;UAC3B;QACF;QAEA,IAAI,CAAC6C,MAAM,CAAC,CAAC;MACf,CAAE;MACFI,WAAW,EAAC,YAAY;MACxBC,WAAW,EAAE,IAAAC,qBAAc,EAACvB,8BAA8B,EAAEwB,kBAAkB,EAAEzB,sBAAsB,CAAE;MACxGH,UAAU,EAAEA,UAAW;MACvBC,kBAAkB,EAAEA,kBAAmB;MACvCC,aAAa,EAAEA;IAAc,CAC9B,CAAC,eACF7J,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAAC6B,aAAa;MACZ/B,OAAO,EAAEA,CAAA,KAAMuC,iBAAiB,IAAI,CAAC,GAAG,IAAI,CAACgC,aAAa,CAAC,CAAC,GAAG,IAAI,CAACjB,WAAW,CAAC,CAAE;MAClFhD,IAAI,EAAC,OAAO;MACZ,cAAW;IAAK,GAEfiC,iBAAiB,IAAI,CAAC,gBAAGvG,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAACxD,MAAA,CAAA8C,OAAS;MAAC1B,QAAQ,EAAC;IAAS,CAAE,CAAC,gBAAG9B,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAACzD,IAAA,CAAA+C,OAAO;MAAC1B,QAAQ,EAAC;IAAS,CAAC,CAC5E,CACJ,CAAC,EAEbsF,OAAO,iBACNpH,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAAC+B,aAAa,QACXmB,OAAO,CAACoE,GAAG,CAAC,CAAC;MAAEC,KAAK;MAAEtJ;IAAQ,CAAC,EAAE2F,KAAK,kBACrC9H,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAACW,QAAQ;MACPE,GAAG,EAAE+C,KAAM;MACX9D,OAAO,EAAEA,CAAA,KAAM,IAAI,CAACiE,cAAc,CAACwD,KAAK,EAAE3D,KAAK,CAAE;MACjDpE,cAAc,EAAEA,CAAA,KAAM,IAAI,CAACA,cAAc,CAAC+H,KAAK,EAAE3D,KAAK,CAAE;MACxDhE,YAAY,EAAEA,CAAA,KAAM,IAAI,CAACA,YAAY,CAAC2H,KAAK,EAAE3D,KAAK,CAAE;MACpD7D,KAAK,EAAEwH,KAAM;MACbtJ,OAAO,EAAEA;IAAQ,CAClB,CACF,CACY,CAEA,CAAC;EAExB;AACF;AAAC,IAAAoB,gBAAA,CAAAC,OAAA,EArRK6C,eAAe,eACA;EACjBgB,IAAI,EAAE7C,kBAAS,CAACkH,MAAM;EACtBC,GAAG,EAAEnH,kBAAS,CAACoH,MAAM;EACrBhC,kBAAkB,EAAEpF,kBAAS,CAACkH,MAAM;EACpC9E,MAAM,EAAEpC,kBAAS,CAACG,IAAI;EACtByC,OAAO,EAAE5C,kBAAS,CAACqH,KAAK;EACxBvE,WAAW,EAAE9C,kBAAS,CAACG,IAAI,CAACD,UAAU;EACtC0F,cAAc,EAAE5F,kBAAS,CAACG,IAAI;EAC9BjB,cAAc,EAAEc,kBAAS,CAACG,IAAI,CAACD,UAAU;EACzCuD,cAAc,EAAEzD,kBAAS,CAACG,IAAI,CAACD,UAAU;EACzC6C,aAAa,EAAE/C,kBAAS,CAACG,IAAI,CAACD,UAAU;EACxCoC,MAAM,EAAEtC,kBAAS,CAACkH,MAAM;EACxB/B,UAAU,EAAEnF,kBAAS,CAACC;AACxB,CAAC;AAyQH,MAAMqH,qBAAqB,GAAGzF,eAAe;AAAC,IAAA0F,QAAA,GAAAC,OAAA,CAAAxI,OAAA,GAE/BsI,qBAAqB","ignoreList":[]}