@pie-lib/editable-html 7.17.4-next.306 → 7.17.4-next.328
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.
- package/lib/editor.js +122 -99
- package/lib/editor.js.map +1 -1
- package/lib/plugins/characters/custom-popover.js +73 -0
- package/lib/plugins/characters/custom-popover.js.map +1 -0
- package/lib/plugins/characters/index.js +271 -0
- package/lib/plugins/characters/index.js.map +1 -0
- package/lib/plugins/characters/utils.js +362 -0
- package/lib/plugins/characters/utils.js.map +1 -0
- package/lib/plugins/index.js +19 -4
- package/lib/plugins/index.js.map +1 -1
- package/package.json +4 -4
- package/src/editor.jsx +46 -13
- package/src/plugins/characters/custom-popover.js +45 -0
- package/src/plugins/characters/index.jsx +237 -0
- package/src/plugins/characters/utils.js +444 -0
- package/src/plugins/index.jsx +3 -0
package/lib/editor.js
CHANGED
|
@@ -90,6 +90,7 @@ var defaultResponseAreaProps = {
|
|
|
90
90
|
respAreaToolbar: function respAreaToolbar() {},
|
|
91
91
|
onHandleAreaChange: function onHandleAreaChange() {}
|
|
92
92
|
};
|
|
93
|
+
var defaultLanguageCharactersProps = [];
|
|
93
94
|
|
|
94
95
|
var createToolbarOpts = function createToolbarOpts(toolbarOpts) {
|
|
95
96
|
return _objectSpread(_objectSpread({}, defaultToolbarOpts), toolbarOpts);
|
|
@@ -100,12 +101,108 @@ var Editor = /*#__PURE__*/function (_React$Component) {
|
|
|
100
101
|
|
|
101
102
|
var _super = _createSuper(Editor);
|
|
102
103
|
|
|
103
|
-
function Editor(
|
|
104
|
+
function Editor(_props) {
|
|
104
105
|
var _this;
|
|
105
106
|
|
|
106
107
|
_classCallCheck(this, Editor);
|
|
107
108
|
|
|
108
|
-
_this = _super.call(this,
|
|
109
|
+
_this = _super.call(this, _props);
|
|
110
|
+
|
|
111
|
+
_defineProperty(_assertThisInitialized(_this), "handlePlugins", function (props) {
|
|
112
|
+
var normalizedResponseAreaProps = _objectSpread(_objectSpread({}, defaultResponseAreaProps), props.responseAreaProps);
|
|
113
|
+
|
|
114
|
+
_this.plugins = (0, _plugins.buildPlugins)(props.activePlugins, {
|
|
115
|
+
math: {
|
|
116
|
+
onClick: _this.onMathClick,
|
|
117
|
+
onFocus: _this.onPluginFocus,
|
|
118
|
+
onBlur: _this.onPluginBlur
|
|
119
|
+
},
|
|
120
|
+
image: {
|
|
121
|
+
onDelete: props.imageSupport && props.imageSupport["delete"] && function (src, done) {
|
|
122
|
+
props.imageSupport["delete"](src, function (e) {
|
|
123
|
+
done(e, _this.state.value);
|
|
124
|
+
});
|
|
125
|
+
},
|
|
126
|
+
insertImageRequested: props.imageSupport && function (getHandler) {
|
|
127
|
+
/**
|
|
128
|
+
* The handler is the object through which the outer context
|
|
129
|
+
* communicates file upload events like: fileChosen, cancel, progress
|
|
130
|
+
*/
|
|
131
|
+
var handler = getHandler(function () {
|
|
132
|
+
return _this.state.value;
|
|
133
|
+
});
|
|
134
|
+
props.imageSupport.add(handler);
|
|
135
|
+
},
|
|
136
|
+
onFocus: _this.onPluginFocus,
|
|
137
|
+
onBlur: _this.onPluginBlur
|
|
138
|
+
},
|
|
139
|
+
toolbar: {
|
|
140
|
+
/**
|
|
141
|
+
* To minimize converting html -> state -> html
|
|
142
|
+
* We only emit markup once 'done' is clicked.
|
|
143
|
+
*/
|
|
144
|
+
disableUnderline: props.disableUnderline,
|
|
145
|
+
autoWidth: props.autoWidthToolbar,
|
|
146
|
+
onDone: function onDone() {
|
|
147
|
+
var nonEmpty = props.nonEmpty;
|
|
148
|
+
log('[onDone]');
|
|
149
|
+
|
|
150
|
+
_this.setState({
|
|
151
|
+
toolbarInFocus: false,
|
|
152
|
+
focusedNode: null
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
_this.editor.blur();
|
|
156
|
+
|
|
157
|
+
if (nonEmpty && _this.state.value.startText.text.length === 0) {
|
|
158
|
+
_this.resetValue(true).then(function () {
|
|
159
|
+
_this.onEditingDone();
|
|
160
|
+
});
|
|
161
|
+
} else {
|
|
162
|
+
_this.onEditingDone();
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
table: {
|
|
167
|
+
onFocus: function onFocus() {
|
|
168
|
+
log('[table:onFocus]...');
|
|
169
|
+
|
|
170
|
+
_this.onPluginFocus();
|
|
171
|
+
},
|
|
172
|
+
onBlur: function onBlur() {
|
|
173
|
+
log('[table:onBlur]...');
|
|
174
|
+
|
|
175
|
+
_this.onPluginBlur();
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
responseArea: {
|
|
179
|
+
type: normalizedResponseAreaProps.type,
|
|
180
|
+
options: normalizedResponseAreaProps.options,
|
|
181
|
+
maxResponseAreas: normalizedResponseAreaProps.maxResponseAreas,
|
|
182
|
+
respAreaToolbar: normalizedResponseAreaProps.respAreaToolbar,
|
|
183
|
+
onHandleAreaChange: normalizedResponseAreaProps.onHandleAreaChange,
|
|
184
|
+
error: normalizedResponseAreaProps.error,
|
|
185
|
+
onFocus: function onFocus() {
|
|
186
|
+
log('[table:onFocus]...');
|
|
187
|
+
|
|
188
|
+
_this.onPluginFocus();
|
|
189
|
+
},
|
|
190
|
+
onBlur: function onBlur() {
|
|
191
|
+
log('[table:onBlur]...');
|
|
192
|
+
|
|
193
|
+
_this.onPluginBlur();
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
languageCharacters: props.languageCharactersProps,
|
|
197
|
+
media: {
|
|
198
|
+
focus: _this.focus,
|
|
199
|
+
createChange: function createChange() {
|
|
200
|
+
return _this.state.value.change();
|
|
201
|
+
},
|
|
202
|
+
onChange: _this.onChange
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
});
|
|
109
206
|
|
|
110
207
|
_defineProperty(_assertThisInitialized(_this), "onPluginBlur", function (e) {
|
|
111
208
|
log('[onPluginBlur]', e && e.relatedTarget);
|
|
@@ -321,9 +418,15 @@ var Editor = /*#__PURE__*/function (_React$Component) {
|
|
|
321
418
|
|
|
322
419
|
_defineProperty(_assertThisInitialized(_this), "onChange", function (change, done) {
|
|
323
420
|
log('[onChange]');
|
|
421
|
+
var value = change.value;
|
|
422
|
+
var charactersLimit = _this.props.charactersLimit;
|
|
423
|
+
|
|
424
|
+
if (value && value.document && value.document.text && value.document.text.length > charactersLimit) {
|
|
425
|
+
return;
|
|
426
|
+
}
|
|
324
427
|
|
|
325
428
|
_this.setState({
|
|
326
|
-
value:
|
|
429
|
+
value: value
|
|
327
430
|
}, function () {
|
|
328
431
|
log('[onChange], call done()');
|
|
329
432
|
|
|
@@ -397,107 +500,16 @@ var Editor = /*#__PURE__*/function (_React$Component) {
|
|
|
397
500
|
});
|
|
398
501
|
|
|
399
502
|
_this.state = {
|
|
400
|
-
value:
|
|
401
|
-
toolbarOpts: createToolbarOpts(
|
|
503
|
+
value: _props.value,
|
|
504
|
+
toolbarOpts: createToolbarOpts(_props.toolbarOpts)
|
|
402
505
|
};
|
|
403
506
|
|
|
404
|
-
var normalizedResponseAreaProps = _objectSpread(_objectSpread({}, defaultResponseAreaProps), props.responseAreaProps);
|
|
405
|
-
|
|
406
507
|
_this.onResize = function () {
|
|
407
|
-
|
|
508
|
+
_props.onChange(_this.state.value, true);
|
|
408
509
|
};
|
|
409
510
|
|
|
410
|
-
_this.
|
|
411
|
-
math: {
|
|
412
|
-
onClick: _this.onMathClick,
|
|
413
|
-
onFocus: _this.onPluginFocus,
|
|
414
|
-
onBlur: _this.onPluginBlur
|
|
415
|
-
},
|
|
416
|
-
image: {
|
|
417
|
-
onDelete: _this.props.imageSupport && _this.props.imageSupport["delete"] && function (src, done) {
|
|
418
|
-
_this.props.imageSupport["delete"](src, function (e) {
|
|
419
|
-
done(e, _this.state.value);
|
|
420
|
-
});
|
|
421
|
-
},
|
|
422
|
-
insertImageRequested: _this.props.imageSupport && function (getHandler) {
|
|
423
|
-
/**
|
|
424
|
-
* The handler is the object through which the outer context
|
|
425
|
-
* communicates file upload events like: fileChosen, cancel, progress
|
|
426
|
-
*/
|
|
427
|
-
var handler = getHandler(function () {
|
|
428
|
-
return _this.state.value;
|
|
429
|
-
});
|
|
511
|
+
_this.handlePlugins(_this.props);
|
|
430
512
|
|
|
431
|
-
_this.props.imageSupport.add(handler);
|
|
432
|
-
},
|
|
433
|
-
onFocus: _this.onPluginFocus,
|
|
434
|
-
onBlur: _this.onPluginBlur
|
|
435
|
-
},
|
|
436
|
-
toolbar: {
|
|
437
|
-
/**
|
|
438
|
-
* To minimize converting html -> state -> html
|
|
439
|
-
* We only emit markup once 'done' is clicked.
|
|
440
|
-
*/
|
|
441
|
-
disableUnderline: props.disableUnderline,
|
|
442
|
-
autoWidth: props.autoWidthToolbar,
|
|
443
|
-
onDone: function onDone() {
|
|
444
|
-
var nonEmpty = _this.props.nonEmpty;
|
|
445
|
-
log('[onDone]');
|
|
446
|
-
|
|
447
|
-
_this.setState({
|
|
448
|
-
toolbarInFocus: false,
|
|
449
|
-
focusedNode: null
|
|
450
|
-
});
|
|
451
|
-
|
|
452
|
-
_this.editor.blur();
|
|
453
|
-
|
|
454
|
-
if (nonEmpty && _this.state.value.startText.text.length === 0) {
|
|
455
|
-
_this.resetValue(true).then(function () {
|
|
456
|
-
_this.onEditingDone();
|
|
457
|
-
});
|
|
458
|
-
} else {
|
|
459
|
-
_this.onEditingDone();
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
},
|
|
463
|
-
table: {
|
|
464
|
-
onFocus: function onFocus() {
|
|
465
|
-
log('[table:onFocus]...');
|
|
466
|
-
|
|
467
|
-
_this.onPluginFocus();
|
|
468
|
-
},
|
|
469
|
-
onBlur: function onBlur() {
|
|
470
|
-
log('[table:onBlur]...');
|
|
471
|
-
|
|
472
|
-
_this.onPluginBlur();
|
|
473
|
-
}
|
|
474
|
-
},
|
|
475
|
-
responseArea: {
|
|
476
|
-
type: normalizedResponseAreaProps.type,
|
|
477
|
-
options: normalizedResponseAreaProps.options,
|
|
478
|
-
maxResponseAreas: normalizedResponseAreaProps.maxResponseAreas,
|
|
479
|
-
respAreaToolbar: normalizedResponseAreaProps.respAreaToolbar,
|
|
480
|
-
onHandleAreaChange: normalizedResponseAreaProps.onHandleAreaChange,
|
|
481
|
-
error: normalizedResponseAreaProps.error,
|
|
482
|
-
onFocus: function onFocus() {
|
|
483
|
-
log('[table:onFocus]...');
|
|
484
|
-
|
|
485
|
-
_this.onPluginFocus();
|
|
486
|
-
},
|
|
487
|
-
onBlur: function onBlur() {
|
|
488
|
-
log('[table:onBlur]...');
|
|
489
|
-
|
|
490
|
-
_this.onPluginBlur();
|
|
491
|
-
}
|
|
492
|
-
},
|
|
493
|
-
media: {
|
|
494
|
-
focus: _this.focus,
|
|
495
|
-
createChange: function createChange() {
|
|
496
|
-
return _this.state.value.change();
|
|
497
|
-
},
|
|
498
|
-
onChange: _this.onChange
|
|
499
|
-
}
|
|
500
|
-
});
|
|
501
513
|
return _this;
|
|
502
514
|
}
|
|
503
515
|
|
|
@@ -535,6 +547,10 @@ var Editor = /*#__PURE__*/function (_React$Component) {
|
|
|
535
547
|
toolbarOpts: newToolbarOpts
|
|
536
548
|
});
|
|
537
549
|
}
|
|
550
|
+
|
|
551
|
+
if (!(0, _isEqual["default"])(nextProps.languageCharactersProps, this.props.languageCharactersProps)) {
|
|
552
|
+
this.handlePlugins(nextProps);
|
|
553
|
+
}
|
|
538
554
|
}
|
|
539
555
|
}, {
|
|
540
556
|
key: "componentDidUpdate",
|
|
@@ -669,6 +685,7 @@ _defineProperty(Editor, "propTypes", {
|
|
|
669
685
|
focus: _propTypes["default"].func.isRequired,
|
|
670
686
|
value: _slatePropTypes["default"].value.isRequired,
|
|
671
687
|
imageSupport: _propTypes["default"].object,
|
|
688
|
+
charactersLimit: _propTypes["default"].number,
|
|
672
689
|
width: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
|
|
673
690
|
height: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
|
|
674
691
|
minHeight: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
|
|
@@ -688,6 +705,11 @@ _defineProperty(Editor, "propTypes", {
|
|
|
688
705
|
respAreaToolbar: _propTypes["default"].func,
|
|
689
706
|
onHandleAreaChange: _propTypes["default"].func
|
|
690
707
|
}),
|
|
708
|
+
languageCharactersProps: _propTypes["default"].arrayOf(_propTypes["default"].shape({
|
|
709
|
+
language: _propTypes["default"].string,
|
|
710
|
+
characterIcon: _propTypes["default"].string,
|
|
711
|
+
characters: _propTypes["default"].arrayOf(_propTypes["default"].arrayOf(_propTypes["default"].string))
|
|
712
|
+
})),
|
|
691
713
|
toolbarOpts: _propTypes["default"].shape({
|
|
692
714
|
position: _propTypes["default"].oneOf(['bottom', 'top']),
|
|
693
715
|
alignment: _propTypes["default"].oneOf(['left', 'right']),
|
|
@@ -710,7 +732,8 @@ _defineProperty(Editor, "defaultProps", {
|
|
|
710
732
|
onBlur: function onBlur() {},
|
|
711
733
|
onKeyDown: function onKeyDown() {},
|
|
712
734
|
toolbarOpts: defaultToolbarOpts,
|
|
713
|
-
responseAreaProps: defaultResponseAreaProps
|
|
735
|
+
responseAreaProps: defaultResponseAreaProps,
|
|
736
|
+
languageCharactersProps: defaultLanguageCharactersProps
|
|
714
737
|
});
|
|
715
738
|
|
|
716
739
|
var styles = {
|
package/lib/editor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","names":["log","debug","defaultToolbarOpts","position","alignment","alwaysVisible","showDone","doneOn","defaultResponseAreaProps","options","respAreaToolbar","onHandleAreaChange","createToolbarOpts","toolbarOpts","Editor","props","e","relatedTarget","target","node","findNode","state","value","setState","focusedNode","resetValue","stashedValue","stashValue","editor","change","c","collapseToStartOf","selectedNode","onChange","resolve","nonEmpty","toolbarInFocus","blur","startText","text","length","then","onEditingDone","event","Promise","handleBlur","bind","onBlur","editorDOM","document","querySelector","key","setTimeout","wrapperRef","editorElement","activeElement","closest","className","toolbarElement","toolbarRef","isInCurrentComponent","contains","removeEventListener","handleDomBlur","__TEMPORARY_CHANGE_DATA","data","domEl","setNodeByKey","addEventListener","onFocus","force","stopReset","plugins","reduce","s","p","isFocused","toObject","newValue","Value","fromJSON","toJSON","done","v","endsWith","undefined","parseInt","isNaN","object","last","nodes","type","parent","getParent","Block","pos","focus","normalizedResponseAreaProps","responseAreaProps","onResize","buildPlugins","activePlugins","math","onClick","onMathClick","onPluginFocus","onPluginBlur","image","onDelete","imageSupport","src","insertImageRequested","getHandler","handler","add","toolbar","disableUnderline","autoWidth","autoWidthToolbar","onDone","table","responseArea","maxResponseAreas","error","media","createChange","onRef","window","autoFocus","nextProps","newToolbarOpts","isEqual","zeroWidthEls","querySelectorAll","Array","from","forEach","el","style","minWidth","display","equals","width","minHeight","height","maxHeight","valueToSize","disabled","spellCheck","highlightShape","classes","placeholder","pluginProps","onKeyDown","sizeStyle","buildSizeStyle","names","classNames","withBg","toolbarOnTop","ref","r","slateEditor","editorRef","normalize","changeData","React","Component","PropTypes","bool","func","isRequired","SlateTypes","oneOfType","string","number","any","shape","oneOf","arrayOf","values","allValid","every","ALL_PLUGINS","includes","Error","join","styles","backgroundColor","fontFamily","tableLayout","borderCollapse","color","background","borderTop","padding","textAlign","border","marginTop","withStyles"],"sources":["../src/editor.jsx"],"sourcesContent":["import { Editor as SlateEditor, findNode } from 'slate-react';\nimport SlateTypes from 'slate-prop-types';\n\nimport isEqual from 'lodash/isEqual';\nimport * as serialization from './serialization';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { Value, Block } from 'slate';\nimport { buildPlugins, ALL_PLUGINS, DEFAULT_PLUGINS } from './plugins';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\n\nexport { ALL_PLUGINS, DEFAULT_PLUGINS, serialization };\n\nconst log = debug('editable-html:editor');\n\nconst defaultToolbarOpts = {\n position: 'bottom',\n alignment: 'left',\n alwaysVisible: false,\n showDone: true,\n doneOn: 'blur'\n};\n\nconst defaultResponseAreaProps = {\n options: {},\n respAreaToolbar: () => {},\n onHandleAreaChange: () => {}\n};\n\nconst createToolbarOpts = toolbarOpts => {\n return {\n ...defaultToolbarOpts,\n ...toolbarOpts\n };\n};\n\nexport class Editor extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n editorRef: PropTypes.func.isRequired,\n onRef: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyDown: PropTypes.func,\n focus: PropTypes.func.isRequired,\n value: SlateTypes.value.isRequired,\n imageSupport: PropTypes.object,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n classes: PropTypes.object.isRequired,\n highlightShape: PropTypes.bool,\n disabled: PropTypes.bool,\n spellCheck: PropTypes.bool,\n nonEmpty: PropTypes.bool,\n disableUnderline: PropTypes.bool,\n autoWidthToolbar: PropTypes.bool,\n pluginProps: PropTypes.any,\n placeholder: PropTypes.string,\n responseAreaProps: PropTypes.shape({\n type: PropTypes.oneOf([\n 'explicit-constructed-response',\n 'inline-dropdown',\n 'drag-in-the-blank'\n ]),\n options: PropTypes.object,\n respAreaToolbar: PropTypes.func,\n onHandleAreaChange: PropTypes.func\n }),\n toolbarOpts: PropTypes.shape({\n position: PropTypes.oneOf(['bottom', 'top']),\n alignment: PropTypes.oneOf(['left', 'right']),\n alwaysVisible: PropTypes.bool,\n showDone: PropTypes.bool,\n doneOn: PropTypes.string\n }),\n activePlugins: PropTypes.arrayOf(values => {\n const allValid = values.every(v => ALL_PLUGINS.includes(v));\n\n return (\n !allValid &&\n new Error(`Invalid values: ${values}, values must be one of [${ALL_PLUGINS.join(',')}]`)\n );\n }),\n className: PropTypes.string\n };\n\n static defaultProps = {\n disableUnderline: true,\n onFocus: () => {},\n onBlur: () => {},\n onKeyDown: () => {},\n toolbarOpts: defaultToolbarOpts,\n responseAreaProps: defaultResponseAreaProps\n };\n\n constructor(props) {\n super(props);\n this.state = {\n value: props.value,\n toolbarOpts: createToolbarOpts(props.toolbarOpts)\n };\n\n const normalizedResponseAreaProps = {\n ...defaultResponseAreaProps,\n ...props.responseAreaProps\n };\n\n this.onResize = () => {\n props.onChange(this.state.value, true);\n };\n\n this.plugins = buildPlugins(props.activePlugins, {\n math: {\n onClick: this.onMathClick,\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur\n },\n image: {\n onDelete:\n this.props.imageSupport &&\n this.props.imageSupport.delete &&\n ((src, done) => {\n this.props.imageSupport.delete(src, e => {\n done(e, this.state.value);\n });\n }),\n insertImageRequested:\n this.props.imageSupport &&\n (getHandler => {\n /**\n * The handler is the object through which the outer context\n * communicates file upload events like: fileChosen, cancel, progress\n */\n const handler = getHandler(() => this.state.value);\n this.props.imageSupport.add(handler);\n }),\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur\n },\n toolbar: {\n /**\n * To minimize converting html -> state -> html\n * We only emit markup once 'done' is clicked.\n */\n disableUnderline: props.disableUnderline,\n autoWidth: props.autoWidthToolbar,\n onDone: () => {\n const { nonEmpty } = this.props;\n\n log('[onDone]');\n this.setState({ toolbarInFocus: false, focusedNode: null });\n this.editor.blur();\n\n if (nonEmpty && this.state.value.startText.text.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n });\n } else {\n this.onEditingDone();\n }\n }\n },\n table: {\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n responseArea: {\n type: normalizedResponseAreaProps.type,\n options: normalizedResponseAreaProps.options,\n maxResponseAreas: normalizedResponseAreaProps.maxResponseAreas,\n respAreaToolbar: normalizedResponseAreaProps.respAreaToolbar,\n onHandleAreaChange: normalizedResponseAreaProps.onHandleAreaChange,\n error: normalizedResponseAreaProps.error,\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n media: {\n focus: this.focus,\n createChange: () => this.state.value.change(),\n onChange: this.onChange\n }\n });\n }\n\n componentDidMount() {\n // onRef is needed to get the ref of the component because we export it using withStyles\n this.props.onRef(this);\n\n window.addEventListener('resize', this.onResize);\n\n if (this.editor && this.props.autoFocus) {\n Promise.resolve().then(() => {\n if (this.editor) {\n const editorDOM = document.querySelector(\n `[data-key=\"${this.editor.value.document.key}\"]`\n );\n\n this.editor.focus();\n\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const { toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(nextProps.toolbarOpts);\n\n if (!isEqual(newToolbarOpts, toolbarOpts)) {\n this.setState({\n toolbarOpts: newToolbarOpts\n });\n }\n }\n\n componentDidUpdate() {\n // The cursor is on a zero width element and when that is placed near void elements, it is not visible\n // so we increase the width to at least 2px in order for the user to see it\n const zeroWidthEls = document.querySelectorAll('[data-slate-zero-width=\"z\"]');\n\n Array.from(zeroWidthEls).forEach(el => {\n el.style.minWidth = '2px';\n el.style.display = 'inline-block';\n });\n }\n\n onPluginBlur = e => {\n log('[onPluginBlur]', e && e.relatedTarget);\n const target = e && e.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n log('[onPluginBlur] node: ', node);\n this.setState({ focusedNode: node }, () => {\n this.resetValue();\n });\n };\n\n onPluginFocus = e => {\n log('[onPluginFocus]', e && e.target);\n const target = e && e.target;\n if (target) {\n const node = findNode(target, this.state.value);\n log('[onPluginFocus] node: ', node);\n\n const stashedValue = this.state.stashedValue || this.state.value;\n this.setState({ focusedNode: node, stashedValue });\n } else {\n this.setState({ focusedNode: null });\n }\n this.stashValue();\n };\n\n onMathClick = node => {\n this.editor.change(c => c.collapseToStartOf(node));\n this.setState({ selectedNode: node });\n };\n\n onEditingDone = () => {\n log('[onEditingDone]');\n this.setState({ stashedValue: null, focusedNode: null });\n log('[onEditingDone] value: ', this.state.value);\n this.props.onChange(this.state.value, true);\n };\n\n /**\n * Remove onResize event listener\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize);\n }\n\n // Allowing time for onChange to take effect if it is called\n handleBlur = resolve => {\n const { nonEmpty } = this.props;\n const {\n toolbarOpts: { doneOn }\n } = this.state;\n\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n if (this.editor) {\n this.editor.blur();\n }\n\n if (doneOn === 'blur') {\n if (nonEmpty && this.state.value.startText.text.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n resolve();\n });\n } else {\n this.onEditingDone();\n resolve();\n }\n }\n };\n\n onBlur = event => {\n log('[onBlur]');\n const target = event.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n\n log('[onBlur] node: ', node);\n\n return new Promise(resolve => {\n this.setState({ focusedNode: node }, this.handleBlur.bind(this, resolve));\n this.props.onBlur(event);\n });\n };\n\n handleDomBlur = e => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n setTimeout(() => {\n if (!this.wrapperRef) {\n return;\n }\n\n const editorElement =\n !editorDOM || document.activeElement.closest(`[class*=\"${editorDOM.className}\"]`);\n const toolbarElement =\n !this.toolbarRef ||\n document.activeElement.closest(`[class*=\"${this.toolbarRef.className}\"]`);\n const isInCurrentComponent =\n this.wrapperRef.contains(editorElement) || this.wrapperRef.contains(toolbarElement);\n\n if (!isInCurrentComponent) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n this.onBlur(e);\n }\n }, 50);\n };\n\n /*\n * Needs to be wrapped otherwise it causes issues because of race conditions\n * Known issue for slatejs. See: https://github.com/ianstormtaylor/slate/issues/2097\n * Using timeout I wasn't able to test this\n *\n * Note: The use of promises has been causing issues with MathQuill\n * */\n onFocus = () =>\n new Promise(resolve => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n log('[onFocus]', document.activeElement);\n\n /**\n * This is a temporary hack - @see changeData below for some more information.\n */\n if (this.__TEMPORARY_CHANGE_DATA) {\n const { key, data } = this.__TEMPORARY_CHANGE_DATA;\n const domEl = document.querySelector(`[data-key=\"${key}\"]`);\n\n if (domEl) {\n let change = this.state.value.change().setNodeByKey(key, { data });\n\n this.setState({ value: change.value }, () => {\n this.__TEMPORARY_CHANGE_DATA = null;\n });\n }\n }\n\n /**\n * This is needed just in case the browser decides to make the editor\n * lose focus without triggering the onBlur event (can happen in a few cases).\n * This will also trigger onBlur if the user clicks outside of the page when the editor\n * is focused.\n */\n if (editorDOM === document.activeElement) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n editorDOM.addEventListener('blur', this.handleDomBlur);\n }\n\n this.stashValue();\n this.props.onFocus();\n\n resolve();\n });\n\n stashValue = () => {\n log('[stashValue]');\n if (!this.state.stashedValue) {\n this.setState({ stashedValue: this.state.value });\n }\n };\n\n /**\n * Reset the value if the user didn't click done.\n */\n resetValue = force => {\n const { value, focusedNode } = this.state;\n\n const stopReset = this.plugins.reduce((s, p) => {\n return s || (p.stopReset && p.stopReset(this.state.value));\n }, false);\n\n log('[resetValue]', value.isFocused, focusedNode, 'stopReset: ', stopReset);\n if ((this.state.stashedValue && !value.isFocused && !focusedNode && !stopReset) || force) {\n log('[resetValue] resetting...');\n log('stashed', this.state.stashedValue.document.toObject());\n log('current', this.state.value.document.toObject());\n\n const newValue = Value.fromJSON(this.state.stashedValue.toJSON());\n\n log('newValue: ', newValue.document);\n return new Promise(resolve => {\n setTimeout(() => {\n this.setState({ value: newValue, stashedValue: null }, () => {\n log('value now: ', this.state.value.document.toJSON());\n resolve();\n });\n }, 50);\n });\n } else {\n return Promise.resolve({});\n }\n };\n\n onChange = (change, done) => {\n log('[onChange]');\n this.setState({ value: change.value }, () => {\n log('[onChange], call done()');\n\n if (done) {\n done();\n }\n });\n };\n\n UNSAFE_componentWillReceiveProps(props) {\n if (!props.value.document.equals(this.props.value.document)) {\n this.setState({\n focus: false,\n value: props.value\n });\n }\n }\n\n valueToSize = v => {\n if (!v) {\n return;\n }\n\n if (typeof v === 'string') {\n if (v.endsWith('%')) {\n return undefined;\n } else if (v.endsWith('px') || v.endsWith('vh') || v.endsWith('vw')) {\n return v;\n } else {\n const value = parseInt(v, 10);\n return isNaN(value) ? value : `${value}px`;\n }\n }\n if (typeof v === 'number') {\n return `${v}px`;\n }\n\n return;\n };\n\n buildSizeStyle() {\n const { width, minHeight, height, maxHeight } = this.props;\n\n return {\n width: this.valueToSize(width),\n height: this.valueToSize(height),\n minHeight: this.valueToSize(minHeight),\n maxHeight: this.valueToSize(maxHeight)\n };\n }\n\n validateNode = node => {\n if (node.object !== 'block') return;\n\n const last = node.nodes.last();\n if (!last) return;\n\n if (last.type !== 'image') return;\n\n log('[validateNode] last is image..');\n\n const parent = last.getParent(last.key);\n const p = Block.getParent(last.key);\n log('[validateNode] parent:', parent, p);\n\n return undefined;\n };\n\n changeData = (key, data) => {\n log('[changeData]. .. ', key, data);\n\n /**\n * HACK ALERT: We should be calling setState here and storing the change data:\n *\n * <code>this.setState({changeData: { key, data}})</code>\n * However this is causing issues with the Mathquill instance. The 'input' event stops firing on the element and no\n * more changes get through. The issues seem to be related to the promises in onBlur/onFocus. But removing these\n * brings it's own problems. A major clean up is planned for this component so I've decided to temporarily settle\n * on this hack rather than spend more time on this.\n */\n\n // Uncomment this line to see the bug described above.\n // this.setState({changeData: {key, data}})\n\n this.__TEMPORARY_CHANGE_DATA = { key, data };\n };\n\n focus = (pos, node) => {\n const position = pos || 'end';\n\n this.props.focus(position, node);\n };\n\n render() {\n const {\n disabled,\n spellCheck,\n highlightShape,\n classes,\n className,\n placeholder,\n pluginProps,\n onKeyDown\n } = this.props;\n\n const { value, focusedNode, toolbarOpts } = this.state;\n\n log('[render] value: ', value);\n const sizeStyle = this.buildSizeStyle();\n const names = classNames(\n {\n [classes.withBg]: highlightShape,\n [classes.toolbarOnTop]: toolbarOpts.alwaysVisible && toolbarOpts.position === 'top'\n },\n className\n );\n\n return (\n <div\n ref={ref => (this.wrapperRef = ref)}\n style={{ width: sizeStyle.width }}\n className={names}\n >\n <SlateEditor\n plugins={this.plugins}\n innerRef={r => {\n if (r) {\n this.slateEditor = r;\n }\n }}\n ref={r => (this.editor = r && this.props.editorRef(r))}\n toolbarRef={r => {\n if (r) {\n this.toolbarRef = r;\n }\n }}\n value={value}\n focus={this.focus}\n onKeyDown={onKeyDown}\n onChange={this.onChange}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onEditingDone={this.onEditingDone}\n focusedNode={focusedNode}\n normalize={this.normalize}\n readOnly={disabled}\n spellCheck={spellCheck}\n className={classes.slateEditor}\n style={{\n minHeight: sizeStyle.minHeight,\n height: sizeStyle.height,\n maxHeight: sizeStyle.maxHeight\n }}\n pluginProps={pluginProps}\n toolbarOpts={toolbarOpts}\n placeholder={placeholder}\n onDataChange={this.changeData}\n />\n </div>\n );\n }\n}\n\n// TODO color - hardcoded gray background and keypad colors will need to change too\nconst styles = {\n withBg: {\n backgroundColor: 'rgba(0,0,0,0.06)'\n },\n slateEditor: {\n fontFamily: 'Roboto, sans-serif',\n\n '& table': {\n tableLayout: 'fixed',\n width: '100%',\n borderCollapse: 'collapse',\n color: color.text(),\n backgroundColor: color.background()\n },\n '& table:not([border=\"1\"]) tr': {\n borderTop: '1px solid #dfe2e5'\n // TODO perhaps secondary color for background, for now disable\n // '&:nth-child(2n)': {\n // backgroundColor: '#f6f8fa'\n // }\n },\n '& td, th': {\n padding: '.6em 1em',\n textAlign: 'center'\n },\n '& table:not([border=\"1\"]) td, th': {\n border: '1px solid #dfe2e5'\n }\n },\n toolbarOnTop: {\n marginTop: '45px'\n }\n};\n\nexport default withStyles(styles)(Editor);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAMA,GAAG,GAAG,IAAAC,iBAAA,EAAM,sBAAN,CAAZ;AAEA,IAAMC,kBAAkB,GAAG;EACzBC,QAAQ,EAAE,QADe;EAEzBC,SAAS,EAAE,MAFc;EAGzBC,aAAa,EAAE,KAHU;EAIzBC,QAAQ,EAAE,IAJe;EAKzBC,MAAM,EAAE;AALiB,CAA3B;AAQA,IAAMC,wBAAwB,GAAG;EAC/BC,OAAO,EAAE,EADsB;EAE/BC,eAAe,EAAE,2BAAM,CAAE,CAFM;EAG/BC,kBAAkB,EAAE,8BAAM,CAAE;AAHG,CAAjC;;AAMA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAAAC,WAAW,EAAI;EACvC,uCACKX,kBADL,GAEKW,WAFL;AAID,CALD;;IAOaC,M;;;;;EA8DX,gBAAYC,KAAZ,EAAmB;IAAA;;IAAA;;IACjB,0BAAMA,KAAN;;IADiB,+DAkJJ,UAAAC,CAAC,EAAI;MAClBhB,GAAG,CAAC,gBAAD,EAAmBgB,CAAC,IAAIA,CAAC,CAACC,aAA1B,CAAH;MACA,IAAMC,MAAM,GAAGF,CAAC,IAAIA,CAAC,CAACC,aAAtB;MAEA,IAAME,IAAI,GAAGD,MAAM,GAAG,IAAAE,oBAAA,EAASF,MAAT,EAAiB,MAAKG,KAAL,CAAWC,KAA5B,CAAH,GAAwC,IAA3D;MACAtB,GAAG,CAAC,uBAAD,EAA0BmB,IAA1B,CAAH;;MACA,MAAKI,QAAL,CAAc;QAAEC,WAAW,EAAEL;MAAf,CAAd,EAAqC,YAAM;QACzC,MAAKM,UAAL;MACD,CAFD;IAGD,CA3JkB;;IAAA,gEA6JH,UAAAT,CAAC,EAAI;MACnBhB,GAAG,CAAC,iBAAD,EAAoBgB,CAAC,IAAIA,CAAC,CAACE,MAA3B,CAAH;MACA,IAAMA,MAAM,GAAGF,CAAC,IAAIA,CAAC,CAACE,MAAtB;;MACA,IAAIA,MAAJ,EAAY;QACV,IAAMC,IAAI,GAAG,IAAAC,oBAAA,EAASF,MAAT,EAAiB,MAAKG,KAAL,CAAWC,KAA5B,CAAb;QACAtB,GAAG,CAAC,wBAAD,EAA2BmB,IAA3B,CAAH;QAEA,IAAMO,YAAY,GAAG,MAAKL,KAAL,CAAWK,YAAX,IAA2B,MAAKL,KAAL,CAAWC,KAA3D;;QACA,MAAKC,QAAL,CAAc;UAAEC,WAAW,EAAEL,IAAf;UAAqBO,YAAY,EAAZA;QAArB,CAAd;MACD,CAND,MAMO;QACL,MAAKH,QAAL,CAAc;UAAEC,WAAW,EAAE;QAAf,CAAd;MACD;;MACD,MAAKG,UAAL;IACD,CA1KkB;;IAAA,8DA4KL,UAAAR,IAAI,EAAI;MACpB,MAAKS,MAAL,CAAYC,MAAZ,CAAmB,UAAAC,CAAC;QAAA,OAAIA,CAAC,CAACC,iBAAF,CAAoBZ,IAApB,CAAJ;MAAA,CAApB;;MACA,MAAKI,QAAL,CAAc;QAAES,YAAY,EAAEb;MAAhB,CAAd;IACD,CA/KkB;;IAAA,gEAiLH,YAAM;MACpBnB,GAAG,CAAC,iBAAD,CAAH;;MACA,MAAKuB,QAAL,CAAc;QAAEG,YAAY,EAAE,IAAhB;QAAsBF,WAAW,EAAE;MAAnC,CAAd;;MACAxB,GAAG,CAAC,yBAAD,EAA4B,MAAKqB,KAAL,CAAWC,KAAvC,CAAH;;MACA,MAAKP,KAAL,CAAWkB,QAAX,CAAoB,MAAKZ,KAAL,CAAWC,KAA/B,EAAsC,IAAtC;IACD,CAtLkB;;IAAA,6DAgMN,UAAAY,OAAO,EAAI;MACtB,IAAQC,QAAR,GAAqB,MAAKpB,KAA1B,CAAQoB,QAAR;MACA,IACiB5B,MADjB,GAEI,MAAKc,KAFT,CACER,WADF,CACiBN,MADjB;;MAIA,MAAKgB,QAAL,CAAc;QAAEa,cAAc,EAAE,KAAlB;QAAyBZ,WAAW,EAAE;MAAtC,CAAd;;MAEA,IAAI,MAAKI,MAAT,EAAiB;QACf,MAAKA,MAAL,CAAYS,IAAZ;MACD;;MAED,IAAI9B,MAAM,KAAK,MAAf,EAAuB;QACrB,IAAI4B,QAAQ,IAAI,MAAKd,KAAL,CAAWC,KAAX,CAAiBgB,SAAjB,CAA2BC,IAA3B,CAAgCC,MAAhC,KAA2C,CAA3D,EAA8D;UAC5D,MAAKf,UAAL,CAAgB,IAAhB,EAAsBgB,IAAtB,CAA2B,YAAM;YAC/B,MAAKC,aAAL;;YACAR,OAAO;UACR,CAHD;QAID,CALD,MAKO;UACL,MAAKQ,aAAL;;UACAR,OAAO;QACR;MACF;IACF,CAvNkB;;IAAA,yDAyNV,UAAAS,KAAK,EAAI;MAChB3C,GAAG,CAAC,UAAD,CAAH;MACA,IAAMkB,MAAM,GAAGyB,KAAK,CAAC1B,aAArB;MAEA,IAAME,IAAI,GAAGD,MAAM,GAAG,IAAAE,oBAAA,EAASF,MAAT,EAAiB,MAAKG,KAAL,CAAWC,KAA5B,CAAH,GAAwC,IAA3D;MAEAtB,GAAG,CAAC,iBAAD,EAAoBmB,IAApB,CAAH;MAEA,OAAO,IAAIyB,OAAJ,CAAY,UAAAV,OAAO,EAAI;QAC5B,MAAKX,QAAL,CAAc;UAAEC,WAAW,EAAEL;QAAf,CAAd,EAAqC,MAAK0B,UAAL,CAAgBC,IAAhB,gCAA2BZ,OAA3B,CAArC;;QACA,MAAKnB,KAAL,CAAWgC,MAAX,CAAkBJ,KAAlB;MACD,CAHM,CAAP;IAID,CArOkB;;IAAA,gEAuOH,UAAA3B,CAAC,EAAI;MACnB,IAAMgC,SAAS,GAAGC,QAAQ,CAACC,aAAT,uBAAqC,MAAK7B,KAAL,CAAWC,KAAX,CAAiB2B,QAAjB,CAA0BE,GAA/D,SAAlB;MAEAC,UAAU,CAAC,YAAM;QACf,IAAI,CAAC,MAAKC,UAAV,EAAsB;UACpB;QACD;;QAED,IAAMC,aAAa,GACjB,CAACN,SAAD,IAAcC,QAAQ,CAACM,aAAT,CAAuBC,OAAvB,qBAA2CR,SAAS,CAACS,SAArD,SADhB;QAEA,IAAMC,cAAc,GAClB,CAAC,MAAKC,UAAN,IACAV,QAAQ,CAACM,aAAT,CAAuBC,OAAvB,qBAA2C,MAAKG,UAAL,CAAgBF,SAA3D,SAFF;;QAGA,IAAMG,oBAAoB,GACxB,MAAKP,UAAL,CAAgBQ,QAAhB,CAAyBP,aAAzB,KAA2C,MAAKD,UAAL,CAAgBQ,QAAhB,CAAyBH,cAAzB,CAD7C;;QAGA,IAAI,CAACE,oBAAL,EAA2B;UACzBZ,SAAS,CAACc,mBAAV,CAA8B,MAA9B,EAAsC,MAAKC,aAA3C;;UACA,MAAKhB,MAAL,CAAY/B,CAAZ;QACD;MACF,CAjBS,EAiBP,EAjBO,CAAV;IAkBD,CA5PkB;;IAAA,0DAqQT;MAAA,OACR,IAAI4B,OAAJ,CAAY,UAAAV,OAAO,EAAI;QACrB,IAAMc,SAAS,GAAGC,QAAQ,CAACC,aAAT,uBAAqC,MAAK7B,KAAL,CAAWC,KAAX,CAAiB2B,QAAjB,CAA0BE,GAA/D,SAAlB;QAEAnD,GAAG,CAAC,WAAD,EAAciD,QAAQ,CAACM,aAAvB,CAAH;QAEA;AACN;AACA;;QACM,IAAI,MAAKS,uBAAT,EAAkC;UAChC,4BAAsB,MAAKA,uBAA3B;UAAA,IAAQb,GAAR,yBAAQA,GAAR;UAAA,IAAac,IAAb,yBAAaA,IAAb;UACA,IAAMC,KAAK,GAAGjB,QAAQ,CAACC,aAAT,uBAAqCC,GAArC,SAAd;;UAEA,IAAIe,KAAJ,EAAW;YACT,IAAIrC,MAAM,GAAG,MAAKR,KAAL,CAAWC,KAAX,CAAiBO,MAAjB,GAA0BsC,YAA1B,CAAuChB,GAAvC,EAA4C;cAAEc,IAAI,EAAJA;YAAF,CAA5C,CAAb;;YAEA,MAAK1C,QAAL,CAAc;cAAED,KAAK,EAAEO,MAAM,CAACP;YAAhB,CAAd,EAAuC,YAAM;cAC3C,MAAK0C,uBAAL,GAA+B,IAA/B;YACD,CAFD;UAGD;QACF;QAED;AACN;AACA;AACA;AACA;AACA;;;QACM,IAAIhB,SAAS,KAAKC,QAAQ,CAACM,aAA3B,EAA0C;UACxCP,SAAS,CAACc,mBAAV,CAA8B,MAA9B,EAAsC,MAAKC,aAA3C;UACAf,SAAS,CAACoB,gBAAV,CAA2B,MAA3B,EAAmC,MAAKL,aAAxC;QACD;;QAED,MAAKpC,UAAL;;QACA,MAAKZ,KAAL,CAAWsD,OAAX;;QAEAnC,OAAO;MACR,CApCD,CADQ;IAAA,CArQS;;IAAA,6DA4SN,YAAM;MACjBlC,GAAG,CAAC,cAAD,CAAH;;MACA,IAAI,CAAC,MAAKqB,KAAL,CAAWK,YAAhB,EAA8B;QAC5B,MAAKH,QAAL,CAAc;UAAEG,YAAY,EAAE,MAAKL,KAAL,CAAWC;QAA3B,CAAd;MACD;IACF,CAjTkB;;IAAA,6DAsTN,UAAAgD,KAAK,EAAI;MACpB,kBAA+B,MAAKjD,KAApC;MAAA,IAAQC,KAAR,eAAQA,KAAR;MAAA,IAAeE,WAAf,eAAeA,WAAf;;MAEA,IAAM+C,SAAS,GAAG,MAAKC,OAAL,CAAaC,MAAb,CAAoB,UAACC,CAAD,EAAIC,CAAJ,EAAU;QAC9C,OAAOD,CAAC,IAAKC,CAAC,CAACJ,SAAF,IAAeI,CAAC,CAACJ,SAAF,CAAY,MAAKlD,KAAL,CAAWC,KAAvB,CAA5B;MACD,CAFiB,EAEf,KAFe,CAAlB;;MAIAtB,GAAG,CAAC,cAAD,EAAiBsB,KAAK,CAACsD,SAAvB,EAAkCpD,WAAlC,EAA+C,aAA/C,EAA8D+C,SAA9D,CAAH;;MACA,IAAK,MAAKlD,KAAL,CAAWK,YAAX,IAA2B,CAACJ,KAAK,CAACsD,SAAlC,IAA+C,CAACpD,WAAhD,IAA+D,CAAC+C,SAAjE,IAA+ED,KAAnF,EAA0F;QACxFtE,GAAG,CAAC,2BAAD,CAAH;QACAA,GAAG,CAAC,SAAD,EAAY,MAAKqB,KAAL,CAAWK,YAAX,CAAwBuB,QAAxB,CAAiC4B,QAAjC,EAAZ,CAAH;QACA7E,GAAG,CAAC,SAAD,EAAY,MAAKqB,KAAL,CAAWC,KAAX,CAAiB2B,QAAjB,CAA0B4B,QAA1B,EAAZ,CAAH;;QAEA,IAAMC,QAAQ,GAAGC,YAAA,CAAMC,QAAN,CAAe,MAAK3D,KAAL,CAAWK,YAAX,CAAwBuD,MAAxB,EAAf,CAAjB;;QAEAjF,GAAG,CAAC,YAAD,EAAe8E,QAAQ,CAAC7B,QAAxB,CAAH;QACA,OAAO,IAAIL,OAAJ,CAAY,UAAAV,OAAO,EAAI;UAC5BkB,UAAU,CAAC,YAAM;YACf,MAAK7B,QAAL,CAAc;cAAED,KAAK,EAAEwD,QAAT;cAAmBpD,YAAY,EAAE;YAAjC,CAAd,EAAuD,YAAM;cAC3D1B,GAAG,CAAC,aAAD,EAAgB,MAAKqB,KAAL,CAAWC,KAAX,CAAiB2B,QAAjB,CAA0BgC,MAA1B,EAAhB,CAAH;cACA/C,OAAO;YACR,CAHD;UAID,CALS,EAKP,EALO,CAAV;QAMD,CAPM,CAAP;MAQD,CAhBD,MAgBO;QACL,OAAOU,OAAO,CAACV,OAAR,CAAgB,EAAhB,CAAP;MACD;IACF,CAjVkB;;IAAA,2DAmVR,UAACL,MAAD,EAASqD,IAAT,EAAkB;MAC3BlF,GAAG,CAAC,YAAD,CAAH;;MACA,MAAKuB,QAAL,CAAc;QAAED,KAAK,EAAEO,MAAM,CAACP;MAAhB,CAAd,EAAuC,YAAM;QAC3CtB,GAAG,CAAC,yBAAD,CAAH;;QAEA,IAAIkF,IAAJ,EAAU;UACRA,IAAI;QACL;MACF,CAND;IAOD,CA5VkB;;IAAA,8DAuWL,UAAAC,CAAC,EAAI;MACjB,IAAI,CAACA,CAAL,EAAQ;QACN;MACD;;MAED,IAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;QACzB,IAAIA,CAAC,CAACC,QAAF,CAAW,GAAX,CAAJ,EAAqB;UACnB,OAAOC,SAAP;QACD,CAFD,MAEO,IAAIF,CAAC,CAACC,QAAF,CAAW,IAAX,KAAoBD,CAAC,CAACC,QAAF,CAAW,IAAX,CAApB,IAAwCD,CAAC,CAACC,QAAF,CAAW,IAAX,CAA5C,EAA8D;UACnE,OAAOD,CAAP;QACD,CAFM,MAEA;UACL,IAAM7D,KAAK,GAAGgE,QAAQ,CAACH,CAAD,EAAI,EAAJ,CAAtB;UACA,OAAOI,KAAK,CAACjE,KAAD,CAAL,GAAeA,KAAf,aAA0BA,KAA1B,OAAP;QACD;MACF;;MACD,IAAI,OAAO6D,CAAP,KAAa,QAAjB,EAA2B;QACzB,iBAAUA,CAAV;MACD;;MAED;IACD,CA3XkB;;IAAA,+DAwYJ,UAAAhE,IAAI,EAAI;MACrB,IAAIA,IAAI,CAACqE,MAAL,KAAgB,OAApB,EAA6B;MAE7B,IAAMC,IAAI,GAAGtE,IAAI,CAACuE,KAAL,CAAWD,IAAX,EAAb;MACA,IAAI,CAACA,IAAL,EAAW;MAEX,IAAIA,IAAI,CAACE,IAAL,KAAc,OAAlB,EAA2B;MAE3B3F,GAAG,CAAC,gCAAD,CAAH;MAEA,IAAM4F,MAAM,GAAGH,IAAI,CAACI,SAAL,CAAeJ,IAAI,CAACtC,GAApB,CAAf;;MACA,IAAMwB,CAAC,GAAGmB,YAAA,CAAMD,SAAN,CAAgBJ,IAAI,CAACtC,GAArB,CAAV;;MACAnD,GAAG,CAAC,wBAAD,EAA2B4F,MAA3B,EAAmCjB,CAAnC,CAAH;MAEA,OAAOU,SAAP;IACD,CAvZkB;;IAAA,6DAyZN,UAAClC,GAAD,EAAMc,IAAN,EAAe;MAC1BjE,GAAG,CAAC,mBAAD,EAAsBmD,GAAtB,EAA2Bc,IAA3B,CAAH;MAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAEI;MACA;;MAEA,MAAKD,uBAAL,GAA+B;QAAEb,GAAG,EAAHA,GAAF;QAAOc,IAAI,EAAJA;MAAP,CAA/B;IACD,CA1akB;;IAAA,wDA4aX,UAAC8B,GAAD,EAAM5E,IAAN,EAAe;MACrB,IAAMhB,QAAQ,GAAG4F,GAAG,IAAI,KAAxB;;MAEA,MAAKhF,KAAL,CAAWiF,KAAX,CAAiB7F,QAAjB,EAA2BgB,IAA3B;IACD,CAhbkB;;IAEjB,MAAKE,KAAL,GAAa;MACXC,KAAK,EAAEP,KAAK,CAACO,KADF;MAEXT,WAAW,EAAED,iBAAiB,CAACG,KAAK,CAACF,WAAP;IAFnB,CAAb;;IAKA,IAAMoF,2BAA2B,mCAC5BzF,wBAD4B,GAE5BO,KAAK,CAACmF,iBAFsB,CAAjC;;IAKA,MAAKC,QAAL,GAAgB,YAAM;MACpBpF,KAAK,CAACkB,QAAN,CAAe,MAAKZ,KAAL,CAAWC,KAA1B,EAAiC,IAAjC;IACD,CAFD;;IAIA,MAAKkD,OAAL,GAAe,IAAA4B,qBAAA,EAAarF,KAAK,CAACsF,aAAnB,EAAkC;MAC/CC,IAAI,EAAE;QACJC,OAAO,EAAE,MAAKC,WADV;QAEJnC,OAAO,EAAE,MAAKoC,aAFV;QAGJ1D,MAAM,EAAE,MAAK2D;MAHT,CADyC;MAM/CC,KAAK,EAAE;QACLC,QAAQ,EACN,MAAK7F,KAAL,CAAW8F,YAAX,IACA,MAAK9F,KAAL,CAAW8F,YAAX,UADA,IAEC,UAACC,GAAD,EAAM5B,IAAN,EAAe;UACd,MAAKnE,KAAL,CAAW8F,YAAX,WAA+BC,GAA/B,EAAoC,UAAA9F,CAAC,EAAI;YACvCkE,IAAI,CAAClE,CAAD,EAAI,MAAKK,KAAL,CAAWC,KAAf,CAAJ;UACD,CAFD;QAGD,CARE;QASLyF,oBAAoB,EAClB,MAAKhG,KAAL,CAAW8F,YAAX,IACC,UAAAG,UAAU,EAAI;UACb;AACZ;AACA;AACA;UACY,IAAMC,OAAO,GAAGD,UAAU,CAAC;YAAA,OAAM,MAAK3F,KAAL,CAAWC,KAAjB;UAAA,CAAD,CAA1B;;UACA,MAAKP,KAAL,CAAW8F,YAAX,CAAwBK,GAAxB,CAA4BD,OAA5B;QACD,CAlBE;QAmBL5C,OAAO,EAAE,MAAKoC,aAnBT;QAoBL1D,MAAM,EAAE,MAAK2D;MApBR,CANwC;MA4B/CS,OAAO,EAAE;QACP;AACR;AACA;AACA;QACQC,gBAAgB,EAAErG,KAAK,CAACqG,gBALjB;QAMPC,SAAS,EAAEtG,KAAK,CAACuG,gBANV;QAOPC,MAAM,EAAE,kBAAM;UACZ,IAAQpF,QAAR,GAAqB,MAAKpB,KAA1B,CAAQoB,QAAR;UAEAnC,GAAG,CAAC,UAAD,CAAH;;UACA,MAAKuB,QAAL,CAAc;YAAEa,cAAc,EAAE,KAAlB;YAAyBZ,WAAW,EAAE;UAAtC,CAAd;;UACA,MAAKI,MAAL,CAAYS,IAAZ;;UAEA,IAAIF,QAAQ,IAAI,MAAKd,KAAL,CAAWC,KAAX,CAAiBgB,SAAjB,CAA2BC,IAA3B,CAAgCC,MAAhC,KAA2C,CAA3D,EAA8D;YAC5D,MAAKf,UAAL,CAAgB,IAAhB,EAAsBgB,IAAtB,CAA2B,YAAM;cAC/B,MAAKC,aAAL;YACD,CAFD;UAGD,CAJD,MAIO;YACL,MAAKA,aAAL;UACD;QACF;MArBM,CA5BsC;MAmD/C8E,KAAK,EAAE;QACLnD,OAAO,EAAE,mBAAM;UACbrE,GAAG,CAAC,oBAAD,CAAH;;UACA,MAAKyG,aAAL;QACD,CAJI;QAKL1D,MAAM,EAAE,kBAAM;UACZ/C,GAAG,CAAC,mBAAD,CAAH;;UACA,MAAK0G,YAAL;QACD;MARI,CAnDwC;MA6D/Ce,YAAY,EAAE;QACZ9B,IAAI,EAAEM,2BAA2B,CAACN,IADtB;QAEZlF,OAAO,EAAEwF,2BAA2B,CAACxF,OAFzB;QAGZiH,gBAAgB,EAAEzB,2BAA2B,CAACyB,gBAHlC;QAIZhH,eAAe,EAAEuF,2BAA2B,CAACvF,eAJjC;QAKZC,kBAAkB,EAAEsF,2BAA2B,CAACtF,kBALpC;QAMZgH,KAAK,EAAE1B,2BAA2B,CAAC0B,KANvB;QAOZtD,OAAO,EAAE,mBAAM;UACbrE,GAAG,CAAC,oBAAD,CAAH;;UACA,MAAKyG,aAAL;QACD,CAVW;QAWZ1D,MAAM,EAAE,kBAAM;UACZ/C,GAAG,CAAC,mBAAD,CAAH;;UACA,MAAK0G,YAAL;QACD;MAdW,CA7DiC;MA6E/CkB,KAAK,EAAE;QACL5B,KAAK,EAAE,MAAKA,KADP;QAEL6B,YAAY,EAAE;UAAA,OAAM,MAAKxG,KAAL,CAAWC,KAAX,CAAiBO,MAAjB,EAAN;QAAA,CAFT;QAGLI,QAAQ,EAAE,MAAKA;MAHV;IA7EwC,CAAlC,CAAf;IAhBiB;EAmGlB;;;;WAED,6BAAoB;MAAA;;MAClB;MACA,KAAKlB,KAAL,CAAW+G,KAAX,CAAiB,IAAjB;MAEAC,MAAM,CAAC3D,gBAAP,CAAwB,QAAxB,EAAkC,KAAK+B,QAAvC;;MAEA,IAAI,KAAKvE,MAAL,IAAe,KAAKb,KAAL,CAAWiH,SAA9B,EAAyC;QACvCpF,OAAO,CAACV,OAAR,GAAkBO,IAAlB,CAAuB,YAAM;UAC3B,IAAI,MAAI,CAACb,MAAT,EAAiB;YACf,IAAMoB,SAAS,GAAGC,QAAQ,CAACC,aAAT,uBACF,MAAI,CAACtB,MAAL,CAAYN,KAAZ,CAAkB2B,QAAlB,CAA2BE,GADzB,SAAlB;;YAIA,MAAI,CAACvB,MAAL,CAAYoE,KAAZ;;YAEA,IAAIhD,SAAJ,EAAe;cACbA,SAAS,CAACgD,KAAV;YACD;UACF;QACF,CAZD;MAaD;IACF;;;WAED,mCAA0BiC,SAA1B,EAAqC;MACnC,IAAQpH,WAAR,GAAwB,KAAKQ,KAA7B,CAAQR,WAAR;MACA,IAAMqH,cAAc,GAAGtH,iBAAiB,CAACqH,SAAS,CAACpH,WAAX,CAAxC;;MAEA,IAAI,CAAC,IAAAsH,mBAAA,EAAQD,cAAR,EAAwBrH,WAAxB,CAAL,EAA2C;QACzC,KAAKU,QAAL,CAAc;UACZV,WAAW,EAAEqH;QADD,CAAd;MAGD;IACF;;;WAED,8BAAqB;MACnB;MACA;MACA,IAAME,YAAY,GAAGnF,QAAQ,CAACoF,gBAAT,CAA0B,6BAA1B,CAArB;MAEAC,KAAK,CAACC,IAAN,CAAWH,YAAX,EAAyBI,OAAzB,CAAiC,UAAAC,EAAE,EAAI;QACrCA,EAAE,CAACC,KAAH,CAASC,QAAT,GAAoB,KAApB;QACAF,EAAE,CAACC,KAAH,CAASE,OAAT,GAAmB,cAAnB;MACD,CAHD;IAID;;;;IAwCD;AACF;AACA;IACE,gCAAuB;MACrBb,MAAM,CAACjE,mBAAP,CAA2B,QAA3B,EAAqC,KAAKqC,QAA1C;IACD,C,CAED;;;;WA+JA,0CAAiCpF,KAAjC,EAAwC;MACtC,IAAI,CAACA,KAAK,CAACO,KAAN,CAAY2B,QAAZ,CAAqB4F,MAArB,CAA4B,KAAK9H,KAAL,CAAWO,KAAX,CAAiB2B,QAA7C,CAAL,EAA6D;QAC3D,KAAK1B,QAAL,CAAc;UACZyE,KAAK,EAAE,KADK;UAEZ1E,KAAK,EAAEP,KAAK,CAACO;QAFD,CAAd;MAID;IACF;;;WAwBD,0BAAiB;MACf,kBAAgD,KAAKP,KAArD;MAAA,IAAQ+H,KAAR,eAAQA,KAAR;MAAA,IAAeC,SAAf,eAAeA,SAAf;MAAA,IAA0BC,MAA1B,eAA0BA,MAA1B;MAAA,IAAkCC,SAAlC,eAAkCA,SAAlC;MAEA,OAAO;QACLH,KAAK,EAAE,KAAKI,WAAL,CAAiBJ,KAAjB,CADF;QAELE,MAAM,EAAE,KAAKE,WAAL,CAAiBF,MAAjB,CAFH;QAGLD,SAAS,EAAE,KAAKG,WAAL,CAAiBH,SAAjB,CAHN;QAILE,SAAS,EAAE,KAAKC,WAAL,CAAiBD,SAAjB;MAJN,CAAP;IAMD;;;WA4CD,kBAAS;MAAA;MAAA;;MACP,mBASI,KAAKlI,KATT;MAAA,IACEoI,QADF,gBACEA,QADF;MAAA,IAEEC,UAFF,gBAEEA,UAFF;MAAA,IAGEC,cAHF,gBAGEA,cAHF;MAAA,IAIEC,OAJF,gBAIEA,OAJF;MAAA,IAKE7F,SALF,gBAKEA,SALF;MAAA,IAME8F,WANF,gBAMEA,WANF;MAAA,IAOEC,WAPF,gBAOEA,WAPF;MAAA,IAQEC,SARF,gBAQEA,SARF;MAWA,mBAA4C,KAAKpI,KAAjD;MAAA,IAAQC,KAAR,gBAAQA,KAAR;MAAA,IAAeE,WAAf,gBAAeA,WAAf;MAAA,IAA4BX,WAA5B,gBAA4BA,WAA5B;MAEAb,GAAG,CAAC,kBAAD,EAAqBsB,KAArB,CAAH;MACA,IAAMoI,SAAS,GAAG,KAAKC,cAAL,EAAlB;MACA,IAAMC,KAAK,GAAG,IAAAC,sBAAA,kDAETP,OAAO,CAACQ,MAFC,EAEQT,cAFR,gCAGTC,OAAO,CAACS,YAHC,EAGclJ,WAAW,CAACR,aAAZ,IAA6BQ,WAAW,CAACV,QAAZ,KAAyB,KAHpE,iBAKZsD,SALY,CAAd;MAQA,oBACE;QACE,GAAG,EAAE,aAAAuG,IAAG;UAAA,OAAK,MAAI,CAAC3G,UAAL,GAAkB2G,IAAvB;QAAA,CADV;QAEE,KAAK,EAAE;UAAElB,KAAK,EAAEY,SAAS,CAACZ;QAAnB,CAFT;QAGE,SAAS,EAAEc;MAHb,gBAKE,gCAAC,kBAAD;QACE,OAAO,EAAE,KAAKpF,OADhB;QAEE,QAAQ,EAAE,kBAAAyF,CAAC,EAAI;UACb,IAAIA,CAAJ,EAAO;YACL,MAAI,CAACC,WAAL,GAAmBD,CAAnB;UACD;QACF,CANH;QAOE,GAAG,EAAE,aAAAA,CAAC;UAAA,OAAK,MAAI,CAACrI,MAAL,GAAcqI,CAAC,IAAI,MAAI,CAAClJ,KAAL,CAAWoJ,SAAX,CAAqBF,CAArB,CAAxB;QAAA,CAPR;QAQE,UAAU,EAAE,oBAAAA,CAAC,EAAI;UACf,IAAIA,CAAJ,EAAO;YACL,MAAI,CAACtG,UAAL,GAAkBsG,CAAlB;UACD;QACF,CAZH;QAaE,KAAK,EAAE3I,KAbT;QAcE,KAAK,EAAE,KAAK0E,KAdd;QAeE,SAAS,EAAEyD,SAfb;QAgBE,QAAQ,EAAE,KAAKxH,QAhBjB;QAiBE,MAAM,EAAE,KAAKc,MAjBf;QAkBE,OAAO,EAAE,KAAKsB,OAlBhB;QAmBE,aAAa,EAAE,KAAK3B,aAnBtB;QAoBE,WAAW,EAAElB,WApBf;QAqBE,SAAS,EAAE,KAAK4I,SArBlB;QAsBE,QAAQ,EAAEjB,QAtBZ;QAuBE,UAAU,EAAEC,UAvBd;QAwBE,SAAS,EAAEE,OAAO,CAACY,WAxBrB;QAyBE,KAAK,EAAE;UACLnB,SAAS,EAAEW,SAAS,CAACX,SADhB;UAELC,MAAM,EAAEU,SAAS,CAACV,MAFb;UAGLC,SAAS,EAAES,SAAS,CAACT;QAHhB,CAzBT;QA8BE,WAAW,EAAEO,WA9Bf;QA+BE,WAAW,EAAE3I,WA/Bf;QAgCE,WAAW,EAAE0I,WAhCf;QAiCE,YAAY,EAAE,KAAKc;MAjCrB,EALF,CADF;IA2CD;;;;EAnjByBC,iBAAA,CAAMC,S,GAsjBlC;;;;;gBAtjBazJ,M,eACQ;EACjBkH,SAAS,EAAEwC,qBAAA,CAAUC,IADJ;EAEjBN,SAAS,EAAEK,qBAAA,CAAUE,IAAV,CAAeC,UAFT;EAGjB7C,KAAK,EAAE0C,qBAAA,CAAUE,IAAV,CAAeC,UAHL;EAIjB1I,QAAQ,EAAEuI,qBAAA,CAAUE,IAAV,CAAeC,UAJR;EAKjBtG,OAAO,EAAEmG,qBAAA,CAAUE,IALF;EAMjB3H,MAAM,EAAEyH,qBAAA,CAAUE,IAND;EAOjBjB,SAAS,EAAEe,qBAAA,CAAUE,IAPJ;EAQjB1E,KAAK,EAAEwE,qBAAA,CAAUE,IAAV,CAAeC,UARL;EASjBrJ,KAAK,EAAEsJ,0BAAA,CAAWtJ,KAAX,CAAiBqJ,UATP;EAUjB9D,YAAY,EAAE2D,qBAAA,CAAUhF,MAVP;EAWjBsD,KAAK,EAAE0B,qBAAA,CAAUK,SAAV,CAAoB,CAACL,qBAAA,CAAUM,MAAX,EAAmBN,qBAAA,CAAUO,MAA7B,CAApB,CAXU;EAYjB/B,MAAM,EAAEwB,qBAAA,CAAUK,SAAV,CAAoB,CAACL,qBAAA,CAAUM,MAAX,EAAmBN,qBAAA,CAAUO,MAA7B,CAApB,CAZS;EAajBhC,SAAS,EAAEyB,qBAAA,CAAUK,SAAV,CAAoB,CAACL,qBAAA,CAAUM,MAAX,EAAmBN,qBAAA,CAAUO,MAA7B,CAApB,CAbM;EAcjB9B,SAAS,EAAEuB,qBAAA,CAAUK,SAAV,CAAoB,CAACL,qBAAA,CAAUM,MAAX,EAAmBN,qBAAA,CAAUO,MAA7B,CAApB,CAdM;EAejBzB,OAAO,EAAEkB,qBAAA,CAAUhF,MAAV,CAAiBmF,UAfT;EAgBjBtB,cAAc,EAAEmB,qBAAA,CAAUC,IAhBT;EAiBjBtB,QAAQ,EAAEqB,qBAAA,CAAUC,IAjBH;EAkBjBrB,UAAU,EAAEoB,qBAAA,CAAUC,IAlBL;EAmBjBtI,QAAQ,EAAEqI,qBAAA,CAAUC,IAnBH;EAoBjBrD,gBAAgB,EAAEoD,qBAAA,CAAUC,IApBX;EAqBjBnD,gBAAgB,EAAEkD,qBAAA,CAAUC,IArBX;EAsBjBjB,WAAW,EAAEgB,qBAAA,CAAUQ,GAtBN;EAuBjBzB,WAAW,EAAEiB,qBAAA,CAAUM,MAvBN;EAwBjB5E,iBAAiB,EAAEsE,qBAAA,CAAUS,KAAV,CAAgB;IACjCtF,IAAI,EAAE6E,qBAAA,CAAUU,KAAV,CAAgB,CACpB,+BADoB,EAEpB,iBAFoB,EAGpB,mBAHoB,CAAhB,CAD2B;IAMjCzK,OAAO,EAAE+J,qBAAA,CAAUhF,MANc;IAOjC9E,eAAe,EAAE8J,qBAAA,CAAUE,IAPM;IAQjC/J,kBAAkB,EAAE6J,qBAAA,CAAUE;EARG,CAAhB,CAxBF;EAkCjB7J,WAAW,EAAE2J,qBAAA,CAAUS,KAAV,CAAgB;IAC3B9K,QAAQ,EAAEqK,qBAAA,CAAUU,KAAV,CAAgB,CAAC,QAAD,EAAW,KAAX,CAAhB,CADiB;IAE3B9K,SAAS,EAAEoK,qBAAA,CAAUU,KAAV,CAAgB,CAAC,MAAD,EAAS,OAAT,CAAhB,CAFgB;IAG3B7K,aAAa,EAAEmK,qBAAA,CAAUC,IAHE;IAI3BnK,QAAQ,EAAEkK,qBAAA,CAAUC,IAJO;IAK3BlK,MAAM,EAAEiK,qBAAA,CAAUM;EALS,CAAhB,CAlCI;EAyCjBzE,aAAa,EAAEmE,qBAAA,CAAUW,OAAV,CAAkB,UAAAC,MAAM,EAAI;IACzC,IAAMC,QAAQ,GAAGD,MAAM,CAACE,KAAP,CAAa,UAAAnG,CAAC;MAAA,OAAIoG,oBAAA,CAAYC,QAAZ,CAAqBrG,CAArB,CAAJ;IAAA,CAAd,CAAjB;IAEA,OACE,CAACkG,QAAD,IACA,IAAII,KAAJ,2BAA6BL,MAA7B,sCAA+DG,oBAAA,CAAYG,IAAZ,CAAiB,GAAjB,CAA/D,OAFF;EAID,CAPc,CAzCE;EAiDjBjI,SAAS,EAAE+G,qBAAA,CAAUM;AAjDJ,C;;gBADRhK,M,kBAqDW;EACpBsG,gBAAgB,EAAE,IADE;EAEpB/C,OAAO,EAAE,mBAAM,CAAE,CAFG;EAGpBtB,MAAM,EAAE,kBAAM,CAAE,CAHI;EAIpB0G,SAAS,EAAE,qBAAM,CAAE,CAJC;EAKpB5I,WAAW,EAAEX,kBALO;EAMpBgG,iBAAiB,EAAE1F;AANC,C;;AAkgBxB,IAAMmL,MAAM,GAAG;EACb7B,MAAM,EAAE;IACN8B,eAAe,EAAE;EADX,CADK;EAIb1B,WAAW,EAAE;IACX2B,UAAU,EAAE,oBADD;IAGX,WAAW;MACTC,WAAW,EAAE,OADJ;MAEThD,KAAK,EAAE,MAFE;MAGTiD,cAAc,EAAE,UAHP;MAITC,KAAK,EAAEA,eAAA,CAAMzJ,IAAN,EAJE;MAKTqJ,eAAe,EAAEI,eAAA,CAAMC,UAAN;IALR,CAHA;IAUX,gCAAgC;MAC9BC,SAAS,EAAE,mBADmB,CAE9B;MACA;MACA;MACA;;IAL8B,CAVrB;IAiBX,YAAY;MACVC,OAAO,EAAE,UADC;MAEVC,SAAS,EAAE;IAFD,CAjBD;IAqBX,oCAAoC;MAClCC,MAAM,EAAE;IAD0B;EArBzB,CAJA;EA6BbtC,YAAY,EAAE;IACZuC,SAAS,EAAE;EADC;AA7BD,CAAf;;eAkCe,IAAAC,kBAAA,EAAWZ,MAAX,EAAmB7K,MAAnB,C"}
|
|
1
|
+
{"version":3,"file":"editor.js","names":["log","debug","defaultToolbarOpts","position","alignment","alwaysVisible","showDone","doneOn","defaultResponseAreaProps","options","respAreaToolbar","onHandleAreaChange","defaultLanguageCharactersProps","createToolbarOpts","toolbarOpts","Editor","props","normalizedResponseAreaProps","responseAreaProps","plugins","buildPlugins","activePlugins","math","onClick","onMathClick","onFocus","onPluginFocus","onBlur","onPluginBlur","image","onDelete","imageSupport","src","done","e","state","value","insertImageRequested","getHandler","handler","add","toolbar","disableUnderline","autoWidth","autoWidthToolbar","onDone","nonEmpty","setState","toolbarInFocus","focusedNode","editor","blur","startText","text","length","resetValue","then","onEditingDone","table","responseArea","type","maxResponseAreas","error","languageCharacters","languageCharactersProps","media","focus","createChange","change","onChange","relatedTarget","target","node","findNode","stashedValue","stashValue","c","collapseToStartOf","selectedNode","resolve","event","Promise","handleBlur","bind","editorDOM","document","querySelector","key","setTimeout","wrapperRef","editorElement","activeElement","closest","className","toolbarElement","toolbarRef","isInCurrentComponent","contains","removeEventListener","handleDomBlur","__TEMPORARY_CHANGE_DATA","data","domEl","setNodeByKey","addEventListener","force","stopReset","reduce","s","p","isFocused","toObject","newValue","Value","fromJSON","toJSON","charactersLimit","v","endsWith","undefined","parseInt","isNaN","object","last","nodes","parent","getParent","Block","pos","onResize","handlePlugins","onRef","window","autoFocus","nextProps","newToolbarOpts","isEqual","zeroWidthEls","querySelectorAll","Array","from","forEach","el","style","minWidth","display","equals","width","minHeight","height","maxHeight","valueToSize","disabled","spellCheck","highlightShape","classes","placeholder","pluginProps","onKeyDown","sizeStyle","buildSizeStyle","names","classNames","withBg","toolbarOnTop","ref","r","slateEditor","editorRef","normalize","changeData","React","Component","PropTypes","bool","func","isRequired","SlateTypes","number","oneOfType","string","any","shape","oneOf","arrayOf","language","characterIcon","characters","values","allValid","every","ALL_PLUGINS","includes","Error","join","styles","backgroundColor","fontFamily","tableLayout","borderCollapse","color","background","borderTop","padding","textAlign","border","marginTop","withStyles"],"sources":["../src/editor.jsx"],"sourcesContent":["import { Editor as SlateEditor, findNode } from 'slate-react';\nimport SlateTypes from 'slate-prop-types';\n\nimport isEqual from 'lodash/isEqual';\nimport * as serialization from './serialization';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { Value, Block } from 'slate';\nimport { buildPlugins, ALL_PLUGINS, DEFAULT_PLUGINS } from './plugins';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\n\nexport { ALL_PLUGINS, DEFAULT_PLUGINS, serialization };\n\nconst log = debug('editable-html:editor');\n\nconst defaultToolbarOpts = {\n position: 'bottom',\n alignment: 'left',\n alwaysVisible: false,\n showDone: true,\n doneOn: 'blur'\n};\n\nconst defaultResponseAreaProps = {\n options: {},\n respAreaToolbar: () => {},\n onHandleAreaChange: () => {}\n};\n\nconst defaultLanguageCharactersProps = [];\n\nconst createToolbarOpts = toolbarOpts => {\n return {\n ...defaultToolbarOpts,\n ...toolbarOpts\n };\n};\n\nexport class Editor extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n editorRef: PropTypes.func.isRequired,\n onRef: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyDown: PropTypes.func,\n focus: PropTypes.func.isRequired,\n value: SlateTypes.value.isRequired,\n imageSupport: PropTypes.object,\n charactersLimit: PropTypes.number,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n classes: PropTypes.object.isRequired,\n highlightShape: PropTypes.bool,\n disabled: PropTypes.bool,\n spellCheck: PropTypes.bool,\n nonEmpty: PropTypes.bool,\n disableUnderline: PropTypes.bool,\n autoWidthToolbar: PropTypes.bool,\n pluginProps: PropTypes.any,\n placeholder: PropTypes.string,\n responseAreaProps: PropTypes.shape({\n type: PropTypes.oneOf([\n 'explicit-constructed-response',\n 'inline-dropdown',\n 'drag-in-the-blank'\n ]),\n options: PropTypes.object,\n respAreaToolbar: PropTypes.func,\n onHandleAreaChange: PropTypes.func\n }),\n languageCharactersProps: PropTypes.arrayOf(\n PropTypes.shape({\n language: PropTypes.string,\n characterIcon: PropTypes.string,\n characters: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string))\n })\n ),\n toolbarOpts: PropTypes.shape({\n position: PropTypes.oneOf(['bottom', 'top']),\n alignment: PropTypes.oneOf(['left', 'right']),\n alwaysVisible: PropTypes.bool,\n showDone: PropTypes.bool,\n doneOn: PropTypes.string\n }),\n activePlugins: PropTypes.arrayOf(values => {\n const allValid = values.every(v => ALL_PLUGINS.includes(v));\n\n return (\n !allValid &&\n new Error(`Invalid values: ${values}, values must be one of [${ALL_PLUGINS.join(',')}]`)\n );\n }),\n className: PropTypes.string\n };\n\n static defaultProps = {\n disableUnderline: true,\n onFocus: () => {},\n onBlur: () => {},\n onKeyDown: () => {},\n toolbarOpts: defaultToolbarOpts,\n responseAreaProps: defaultResponseAreaProps,\n languageCharactersProps: defaultLanguageCharactersProps\n };\n\n constructor(props) {\n super(props);\n this.state = {\n value: props.value,\n toolbarOpts: createToolbarOpts(props.toolbarOpts)\n };\n\n this.onResize = () => {\n props.onChange(this.state.value, true);\n };\n\n this.handlePlugins(this.props);\n }\n\n handlePlugins = props => {\n const normalizedResponseAreaProps = {\n ...defaultResponseAreaProps,\n ...props.responseAreaProps\n };\n\n this.plugins = buildPlugins(props.activePlugins, {\n math: {\n onClick: this.onMathClick,\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur\n },\n image: {\n onDelete:\n props.imageSupport &&\n props.imageSupport.delete &&\n ((src, done) => {\n props.imageSupport.delete(src, e => {\n done(e, this.state.value);\n });\n }),\n insertImageRequested:\n props.imageSupport &&\n (getHandler => {\n /**\n * The handler is the object through which the outer context\n * communicates file upload events like: fileChosen, cancel, progress\n */\n const handler = getHandler(() => this.state.value);\n props.imageSupport.add(handler);\n }),\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur\n },\n toolbar: {\n /**\n * To minimize converting html -> state -> html\n * We only emit markup once 'done' is clicked.\n */\n disableUnderline: props.disableUnderline,\n autoWidth: props.autoWidthToolbar,\n onDone: () => {\n const { nonEmpty } = props;\n\n log('[onDone]');\n this.setState({ toolbarInFocus: false, focusedNode: null });\n this.editor.blur();\n\n if (nonEmpty && this.state.value.startText.text.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n });\n } else {\n this.onEditingDone();\n }\n }\n },\n table: {\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n responseArea: {\n type: normalizedResponseAreaProps.type,\n options: normalizedResponseAreaProps.options,\n maxResponseAreas: normalizedResponseAreaProps.maxResponseAreas,\n respAreaToolbar: normalizedResponseAreaProps.respAreaToolbar,\n onHandleAreaChange: normalizedResponseAreaProps.onHandleAreaChange,\n error: normalizedResponseAreaProps.error,\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n languageCharacters: props.languageCharactersProps,\n media: {\n focus: this.focus,\n createChange: () => this.state.value.change(),\n onChange: this.onChange\n }\n });\n };\n\n componentDidMount() {\n // onRef is needed to get the ref of the component because we export it using withStyles\n this.props.onRef(this);\n\n window.addEventListener('resize', this.onResize);\n\n if (this.editor && this.props.autoFocus) {\n Promise.resolve().then(() => {\n if (this.editor) {\n const editorDOM = document.querySelector(\n `[data-key=\"${this.editor.value.document.key}\"]`\n );\n\n this.editor.focus();\n\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const { toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(nextProps.toolbarOpts);\n\n if (!isEqual(newToolbarOpts, toolbarOpts)) {\n this.setState({\n toolbarOpts: newToolbarOpts\n });\n }\n\n if (!isEqual(nextProps.languageCharactersProps, this.props.languageCharactersProps)) {\n this.handlePlugins(nextProps);\n }\n }\n\n componentDidUpdate() {\n // The cursor is on a zero width element and when that is placed near void elements, it is not visible\n // so we increase the width to at least 2px in order for the user to see it\n const zeroWidthEls = document.querySelectorAll('[data-slate-zero-width=\"z\"]');\n\n Array.from(zeroWidthEls).forEach(el => {\n el.style.minWidth = '2px';\n el.style.display = 'inline-block';\n });\n }\n\n onPluginBlur = e => {\n log('[onPluginBlur]', e && e.relatedTarget);\n const target = e && e.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n log('[onPluginBlur] node: ', node);\n this.setState({ focusedNode: node }, () => {\n this.resetValue();\n });\n };\n\n onPluginFocus = e => {\n log('[onPluginFocus]', e && e.target);\n const target = e && e.target;\n if (target) {\n const node = findNode(target, this.state.value);\n log('[onPluginFocus] node: ', node);\n\n const stashedValue = this.state.stashedValue || this.state.value;\n this.setState({ focusedNode: node, stashedValue });\n } else {\n this.setState({ focusedNode: null });\n }\n this.stashValue();\n };\n\n onMathClick = node => {\n this.editor.change(c => c.collapseToStartOf(node));\n this.setState({ selectedNode: node });\n };\n\n onEditingDone = () => {\n log('[onEditingDone]');\n this.setState({ stashedValue: null, focusedNode: null });\n log('[onEditingDone] value: ', this.state.value);\n this.props.onChange(this.state.value, true);\n };\n\n /**\n * Remove onResize event listener\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize);\n }\n\n // Allowing time for onChange to take effect if it is called\n handleBlur = resolve => {\n const { nonEmpty } = this.props;\n const {\n toolbarOpts: { doneOn }\n } = this.state;\n\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n if (this.editor) {\n this.editor.blur();\n }\n\n if (doneOn === 'blur') {\n if (nonEmpty && this.state.value.startText.text.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n resolve();\n });\n } else {\n this.onEditingDone();\n resolve();\n }\n }\n };\n\n onBlur = event => {\n log('[onBlur]');\n const target = event.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n\n log('[onBlur] node: ', node);\n\n return new Promise(resolve => {\n this.setState({ focusedNode: node }, this.handleBlur.bind(this, resolve));\n this.props.onBlur(event);\n });\n };\n\n handleDomBlur = e => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n setTimeout(() => {\n if (!this.wrapperRef) {\n return;\n }\n\n const editorElement =\n !editorDOM || document.activeElement.closest(`[class*=\"${editorDOM.className}\"]`);\n const toolbarElement =\n !this.toolbarRef ||\n document.activeElement.closest(`[class*=\"${this.toolbarRef.className}\"]`);\n const isInCurrentComponent =\n this.wrapperRef.contains(editorElement) || this.wrapperRef.contains(toolbarElement);\n\n if (!isInCurrentComponent) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n this.onBlur(e);\n }\n }, 50);\n };\n\n /*\n * Needs to be wrapped otherwise it causes issues because of race conditions\n * Known issue for slatejs. See: https://github.com/ianstormtaylor/slate/issues/2097\n * Using timeout I wasn't able to test this\n *\n * Note: The use of promises has been causing issues with MathQuill\n * */\n onFocus = () =>\n new Promise(resolve => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n log('[onFocus]', document.activeElement);\n\n /**\n * This is a temporary hack - @see changeData below for some more information.\n */\n if (this.__TEMPORARY_CHANGE_DATA) {\n const { key, data } = this.__TEMPORARY_CHANGE_DATA;\n const domEl = document.querySelector(`[data-key=\"${key}\"]`);\n\n if (domEl) {\n let change = this.state.value.change().setNodeByKey(key, { data });\n\n this.setState({ value: change.value }, () => {\n this.__TEMPORARY_CHANGE_DATA = null;\n });\n }\n }\n\n /**\n * This is needed just in case the browser decides to make the editor\n * lose focus without triggering the onBlur event (can happen in a few cases).\n * This will also trigger onBlur if the user clicks outside of the page when the editor\n * is focused.\n */\n if (editorDOM === document.activeElement) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n editorDOM.addEventListener('blur', this.handleDomBlur);\n }\n\n this.stashValue();\n this.props.onFocus();\n\n resolve();\n });\n\n stashValue = () => {\n log('[stashValue]');\n if (!this.state.stashedValue) {\n this.setState({ stashedValue: this.state.value });\n }\n };\n\n /**\n * Reset the value if the user didn't click done.\n */\n resetValue = force => {\n const { value, focusedNode } = this.state;\n\n const stopReset = this.plugins.reduce((s, p) => {\n return s || (p.stopReset && p.stopReset(this.state.value));\n }, false);\n\n log('[resetValue]', value.isFocused, focusedNode, 'stopReset: ', stopReset);\n if ((this.state.stashedValue && !value.isFocused && !focusedNode && !stopReset) || force) {\n log('[resetValue] resetting...');\n log('stashed', this.state.stashedValue.document.toObject());\n log('current', this.state.value.document.toObject());\n\n const newValue = Value.fromJSON(this.state.stashedValue.toJSON());\n\n log('newValue: ', newValue.document);\n return new Promise(resolve => {\n setTimeout(() => {\n this.setState({ value: newValue, stashedValue: null }, () => {\n log('value now: ', this.state.value.document.toJSON());\n resolve();\n });\n }, 50);\n });\n } else {\n return Promise.resolve({});\n }\n };\n\n onChange = (change, done) => {\n log('[onChange]');\n\n const { value } = change;\n const { charactersLimit } = this.props;\n\n if (\n value &&\n value.document &&\n value.document.text &&\n value.document.text.length > charactersLimit\n ) {\n return;\n }\n\n this.setState({ value }, () => {\n log('[onChange], call done()');\n\n if (done) {\n done();\n }\n });\n };\n\n UNSAFE_componentWillReceiveProps(props) {\n if (!props.value.document.equals(this.props.value.document)) {\n this.setState({\n focus: false,\n value: props.value\n });\n }\n }\n\n valueToSize = v => {\n if (!v) {\n return;\n }\n\n if (typeof v === 'string') {\n if (v.endsWith('%')) {\n return undefined;\n } else if (v.endsWith('px') || v.endsWith('vh') || v.endsWith('vw')) {\n return v;\n } else {\n const value = parseInt(v, 10);\n return isNaN(value) ? value : `${value}px`;\n }\n }\n if (typeof v === 'number') {\n return `${v}px`;\n }\n\n return;\n };\n\n buildSizeStyle() {\n const { width, minHeight, height, maxHeight } = this.props;\n\n return {\n width: this.valueToSize(width),\n height: this.valueToSize(height),\n minHeight: this.valueToSize(minHeight),\n maxHeight: this.valueToSize(maxHeight)\n };\n }\n\n validateNode = node => {\n if (node.object !== 'block') return;\n\n const last = node.nodes.last();\n if (!last) return;\n\n if (last.type !== 'image') return;\n\n log('[validateNode] last is image..');\n\n const parent = last.getParent(last.key);\n const p = Block.getParent(last.key);\n log('[validateNode] parent:', parent, p);\n\n return undefined;\n };\n\n changeData = (key, data) => {\n log('[changeData]. .. ', key, data);\n\n /**\n * HACK ALERT: We should be calling setState here and storing the change data:\n *\n * <code>this.setState({changeData: { key, data}})</code>\n * However this is causing issues with the Mathquill instance. The 'input' event stops firing on the element and no\n * more changes get through. The issues seem to be related to the promises in onBlur/onFocus. But removing these\n * brings it's own problems. A major clean up is planned for this component so I've decided to temporarily settle\n * on this hack rather than spend more time on this.\n */\n\n // Uncomment this line to see the bug described above.\n // this.setState({changeData: {key, data}})\n\n this.__TEMPORARY_CHANGE_DATA = { key, data };\n };\n\n focus = (pos, node) => {\n const position = pos || 'end';\n\n this.props.focus(position, node);\n };\n\n render() {\n const {\n disabled,\n spellCheck,\n highlightShape,\n classes,\n className,\n placeholder,\n pluginProps,\n onKeyDown\n } = this.props;\n\n const { value, focusedNode, toolbarOpts } = this.state;\n\n log('[render] value: ', value);\n const sizeStyle = this.buildSizeStyle();\n const names = classNames(\n {\n [classes.withBg]: highlightShape,\n [classes.toolbarOnTop]: toolbarOpts.alwaysVisible && toolbarOpts.position === 'top'\n },\n className\n );\n\n return (\n <div\n ref={ref => (this.wrapperRef = ref)}\n style={{ width: sizeStyle.width }}\n className={names}\n >\n <SlateEditor\n plugins={this.plugins}\n innerRef={r => {\n if (r) {\n this.slateEditor = r;\n }\n }}\n ref={r => (this.editor = r && this.props.editorRef(r))}\n toolbarRef={r => {\n if (r) {\n this.toolbarRef = r;\n }\n }}\n value={value}\n focus={this.focus}\n onKeyDown={onKeyDown}\n onChange={this.onChange}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onEditingDone={this.onEditingDone}\n focusedNode={focusedNode}\n normalize={this.normalize}\n readOnly={disabled}\n spellCheck={spellCheck}\n className={classes.slateEditor}\n style={{\n minHeight: sizeStyle.minHeight,\n height: sizeStyle.height,\n maxHeight: sizeStyle.maxHeight\n }}\n pluginProps={pluginProps}\n toolbarOpts={toolbarOpts}\n placeholder={placeholder}\n onDataChange={this.changeData}\n />\n </div>\n );\n }\n}\n\n// TODO color - hardcoded gray background and keypad colors will need to change too\nconst styles = {\n withBg: {\n backgroundColor: 'rgba(0,0,0,0.06)'\n },\n slateEditor: {\n fontFamily: 'Roboto, sans-serif',\n\n '& table': {\n tableLayout: 'fixed',\n width: '100%',\n borderCollapse: 'collapse',\n color: color.text(),\n backgroundColor: color.background()\n },\n '& table:not([border=\"1\"]) tr': {\n borderTop: '1px solid #dfe2e5'\n // TODO perhaps secondary color for background, for now disable\n // '&:nth-child(2n)': {\n // backgroundColor: '#f6f8fa'\n // }\n },\n '& td, th': {\n padding: '.6em 1em',\n textAlign: 'center'\n },\n '& table:not([border=\"1\"]) td, th': {\n border: '1px solid #dfe2e5'\n }\n },\n toolbarOnTop: {\n marginTop: '45px'\n }\n};\n\nexport default withStyles(styles)(Editor);\n"],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _styles = require("@material-ui/core/styles");
|
|
11
|
+
|
|
12
|
+
var _Popover = _interopRequireDefault(require("@material-ui/core/Popover"));
|
|
13
|
+
|
|
14
|
+
var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
|
|
15
|
+
|
|
16
|
+
var _excluded = ["classes", "children"];
|
|
17
|
+
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
19
|
+
|
|
20
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
21
|
+
|
|
22
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
23
|
+
|
|
24
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
25
|
+
|
|
26
|
+
var styles = function styles() {
|
|
27
|
+
return {
|
|
28
|
+
popover: {
|
|
29
|
+
pointerEvents: 'none',
|
|
30
|
+
zIndex: 99999
|
|
31
|
+
},
|
|
32
|
+
paper: {
|
|
33
|
+
padding: 20,
|
|
34
|
+
height: 'auto',
|
|
35
|
+
width: 'auto'
|
|
36
|
+
},
|
|
37
|
+
typography: {
|
|
38
|
+
fontSize: 50,
|
|
39
|
+
textAlign: 'center'
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
var CustomPopOver = (0, _styles.withStyles)(styles)(function (_ref) {
|
|
45
|
+
var classes = _ref.classes,
|
|
46
|
+
children = _ref.children,
|
|
47
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
48
|
+
|
|
49
|
+
return /*#__PURE__*/_react["default"].createElement(_Popover["default"], _extends({
|
|
50
|
+
id: "mouse-over-popover",
|
|
51
|
+
open: true,
|
|
52
|
+
className: classes.popover,
|
|
53
|
+
classes: {
|
|
54
|
+
paper: classes.paper
|
|
55
|
+
},
|
|
56
|
+
anchorOrigin: {
|
|
57
|
+
vertical: 'bottom',
|
|
58
|
+
horizontal: 'left'
|
|
59
|
+
},
|
|
60
|
+
transformOrigin: {
|
|
61
|
+
vertical: 'top',
|
|
62
|
+
horizontal: 'left'
|
|
63
|
+
},
|
|
64
|
+
disableRestoreFocus: true
|
|
65
|
+
}, props), /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
66
|
+
classes: {
|
|
67
|
+
root: classes.typography
|
|
68
|
+
}
|
|
69
|
+
}, children));
|
|
70
|
+
});
|
|
71
|
+
var _default = CustomPopOver;
|
|
72
|
+
exports["default"] = _default;
|
|
73
|
+
//# sourceMappingURL=custom-popover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-popover.js","names":["styles","popover","pointerEvents","zIndex","paper","padding","height","width","typography","fontSize","textAlign","CustomPopOver","withStyles","classes","children","props","vertical","horizontal","root"],"sources":["../../../src/plugins/characters/custom-popover.js"],"sourcesContent":["import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport Popover from '@material-ui/core/Popover';\nimport Typography from '@material-ui/core/Typography';\n\nconst styles = () => ({\n popover: {\n pointerEvents: 'none',\n zIndex: 99999\n },\n paper: {\n padding: 20,\n height: 'auto',\n width: 'auto'\n },\n typography: {\n fontSize: 50,\n textAlign: 'center'\n }\n});\n\nconst CustomPopOver = withStyles(styles)(({ classes, children, ...props }) => (\n <Popover\n id=\"mouse-over-popover\"\n open\n className={classes.popover}\n classes={{\n paper: classes.paper\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n disableRestoreFocus\n {...props}\n >\n <Typography classes={{ root: classes.typography }}>{children}</Typography>\n </Popover>\n));\n\nexport default CustomPopOver;\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;;;;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS;EAAA,OAAO;IACpBC,OAAO,EAAE;MACPC,aAAa,EAAE,MADR;MAEPC,MAAM,EAAE;IAFD,CADW;IAKpBC,KAAK,EAAE;MACLC,OAAO,EAAE,EADJ;MAELC,MAAM,EAAE,MAFH;MAGLC,KAAK,EAAE;IAHF,CALa;IAUpBC,UAAU,EAAE;MACVC,QAAQ,EAAE,EADA;MAEVC,SAAS,EAAE;IAFD;EAVQ,CAAP;AAAA,CAAf;;AAgBA,IAAMC,aAAa,GAAG,IAAAC,kBAAA,EAAWZ,MAAX,EAAmB;EAAA,IAAGa,OAAH,QAAGA,OAAH;EAAA,IAAYC,QAAZ,QAAYA,QAAZ;EAAA,IAAyBC,KAAzB;;EAAA,oBACvC,gCAAC,mBAAD;IACE,EAAE,EAAC,oBADL;IAEE,IAAI,MAFN;IAGE,SAAS,EAAEF,OAAO,CAACZ,OAHrB;IAIE,OAAO,EAAE;MACPG,KAAK,EAAES,OAAO,CAACT;IADR,CAJX;IAOE,YAAY,EAAE;MACZY,QAAQ,EAAE,QADE;MAEZC,UAAU,EAAE;IAFA,CAPhB;IAWE,eAAe,EAAE;MACfD,QAAQ,EAAE,KADK;MAEfC,UAAU,EAAE;IAFG,CAXnB;IAeE,mBAAmB;EAfrB,GAgBMF,KAhBN,gBAkBE,gCAAC,sBAAD;IAAY,OAAO,EAAE;MAAEG,IAAI,EAAEL,OAAO,CAACL;IAAhB;EAArB,GAAoDM,QAApD,CAlBF,CADuC;AAAA,CAAnB,CAAtB;eAuBeH,a"}
|