@pie-lib/editable-html 7.17.4-next.499 → 7.17.4-next.506
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 +19 -2
- package/lib/editor.js.map +1 -1
- package/lib/plugins/characters/{custom-popover.js → custom-popper.js} +9 -6
- package/lib/plugins/characters/custom-popper.js.map +1 -0
- package/lib/plugins/characters/index.js +61 -42
- package/lib/plugins/characters/index.js.map +1 -1
- package/lib/plugins/characters/utils.js +1 -2
- package/lib/plugins/characters/utils.js.map +1 -1
- package/lib/plugins/toolbar/default-toolbar.js +5 -2
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +3 -0
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/toolbar.js +10 -0
- package/lib/plugins/toolbar/toolbar.js.map +1 -1
- package/package.json +5 -5
- package/src/editor.jsx +20 -3
- package/src/plugins/characters/{custom-popover.js → custom-popper.js} +8 -5
- package/src/plugins/characters/index.jsx +68 -44
- package/src/plugins/characters/utils.js +1 -2
- package/src/plugins/toolbar/default-toolbar.jsx +12 -2
- package/src/plugins/toolbar/editor-and-toolbar.jsx +3 -0
- package/src/plugins/toolbar/toolbar.jsx +8 -0
- package/lib/plugins/characters/custom-popover.js.map +0 -1
package/lib/editor.js
CHANGED
|
@@ -92,7 +92,11 @@ var defaultResponseAreaProps = {
|
|
|
92
92
|
respAreaToolbar: function respAreaToolbar() {},
|
|
93
93
|
onHandleAreaChange: function onHandleAreaChange() {}
|
|
94
94
|
};
|
|
95
|
-
var defaultLanguageCharactersProps = [
|
|
95
|
+
var defaultLanguageCharactersProps = [{
|
|
96
|
+
language: 'spanish'
|
|
97
|
+
}, {
|
|
98
|
+
language: 'special'
|
|
99
|
+
}];
|
|
96
100
|
|
|
97
101
|
var createToolbarOpts = function createToolbarOpts(toolbarOpts) {
|
|
98
102
|
return _objectSpread(_objectSpread({}, defaultToolbarOpts), toolbarOpts);
|
|
@@ -297,6 +301,7 @@ var Editor = /*#__PURE__*/function (_React$Component) {
|
|
|
297
301
|
log('[onBlur] node: ', node);
|
|
298
302
|
return new Promise(function (resolve) {
|
|
299
303
|
_this.setState({
|
|
304
|
+
preBlurValue: _this.state.value,
|
|
300
305
|
focusedNode: !node ? null : node
|
|
301
306
|
}, _this.handleBlur.bind((0, _assertThisInitialized2["default"])(_this), resolve));
|
|
302
307
|
|
|
@@ -306,6 +311,8 @@ var Editor = /*#__PURE__*/function (_React$Component) {
|
|
|
306
311
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleDomBlur", function (e) {
|
|
307
312
|
var editorDOM = document.querySelector("[data-key=\"".concat(_this.state.value.document.key, "\"]"));
|
|
308
313
|
setTimeout(function () {
|
|
314
|
+
var stateValue = _this.state.value;
|
|
315
|
+
|
|
309
316
|
if (!_this.wrapperRef) {
|
|
310
317
|
return;
|
|
311
318
|
}
|
|
@@ -318,7 +325,9 @@ var Editor = /*#__PURE__*/function (_React$Component) {
|
|
|
318
325
|
if (!isInCurrentComponent) {
|
|
319
326
|
editorDOM.removeEventListener('blur', _this.handleDomBlur);
|
|
320
327
|
|
|
321
|
-
|
|
328
|
+
if (stateValue.isFocused) {
|
|
329
|
+
_this.onBlur(e);
|
|
330
|
+
}
|
|
322
331
|
}
|
|
323
332
|
}, 50);
|
|
324
333
|
});
|
|
@@ -430,6 +439,13 @@ var Editor = /*#__PURE__*/function (_React$Component) {
|
|
|
430
439
|
}
|
|
431
440
|
});
|
|
432
441
|
});
|
|
442
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getFocusedValue", function () {
|
|
443
|
+
if (_this.state.value.isFocused) {
|
|
444
|
+
return _this.state.value;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
return _this.state.preBlurValue;
|
|
448
|
+
});
|
|
433
449
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "valueToSize", function (v) {
|
|
434
450
|
if (!v) {
|
|
435
451
|
return;
|
|
@@ -782,6 +798,7 @@ var Editor = /*#__PURE__*/function (_React$Component) {
|
|
|
782
798
|
focus: this.focus,
|
|
783
799
|
onKeyDown: onKeyDown,
|
|
784
800
|
onChange: this.onChange,
|
|
801
|
+
getFocusedValue: this.getFocusedValue,
|
|
785
802
|
onBlur: this.onBlur,
|
|
786
803
|
onDrop: function onDrop(event, editor) {
|
|
787
804
|
return _this3.onDropPaste(event, editor, true);
|
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","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","maxImageWidth","maxImageHeight","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","dropContext","transfer","getEventTransfer","file","files","fragment","getBase64","inline","Inline","create","isVoid","loading","range","getEventRange","select","ch","insertInline","insertFragment","selection","startBlock","defaultBlock","defaultMarks","getInsertMarksAtRange","frag","Plain","deserialize","placeholder","size","display","width","maxWidth","whiteSpace","opacity","pointerEvents","onResize","handlePlugins","onRef","window","autoFocus","nextProps","newToolbarOpts","isEqual","zeroWidthEls","querySelectorAll","Array","from","forEach","el","style","minWidth","equals","minHeight","height","maxHeight","valueToSize","disabled","spellCheck","highlightShape","classes","pluginProps","onKeyDown","sizeStyle","buildSizeStyle","names","classNames","withBg","toolbarOnTop","ref","r","slateEditor","editorRef","onDropPaste","normalize","noPadding","noBorder","renderPlaceholder","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, getEventRange, getEventTransfer } 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, Inline } 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';\nimport Plain from 'slate-plain-serializer';\n\nimport { getBase64 } from './serialization';\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 maxImageWidth: PropTypes.number,\n maxImageHeight: PropTypes.number\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 maxImageWidth: this.props.maxImageWidth,\n maxImageHeight: this.props.maxImageHeight\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 ? null : 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 onDropPaste = async (event, change, dropContext) => {\n const editor = change.editor;\n const transfer = getEventTransfer(event);\n const file = transfer.files && transfer.files[0];\n\n const type = transfer.type;\n const fragment = transfer.fragment;\n const text = transfer.text;\n\n if (\n file &&\n (file.type === 'image/jpeg' || file.type === 'image/jpg' || file.type === 'image/png')\n ) {\n if (!this.props.imageSupport) {\n return;\n }\n try {\n log('[onDropPaste]');\n const src = await getBase64(file);\n const inline = Inline.create({\n type: 'image',\n isVoid: true,\n data: {\n loading: false,\n src\n }\n });\n\n if (dropContext) {\n this.focus();\n } else {\n const range = getEventRange(event, editor);\n if (range) {\n change.select(range);\n }\n }\n\n const ch = change.insertInline(inline);\n this.onChange(ch);\n } catch (err) {\n log('[onDropPaste] error: ', err);\n }\n } else if (type === 'fragment') {\n change.insertFragment(fragment);\n } else if (type === 'text' || type === 'html') {\n if (!text) {\n return;\n }\n const {\n value: { document, selection, startBlock }\n } = change;\n\n if (startBlock.isVoid) {\n return;\n }\n\n const defaultBlock = startBlock;\n const defaultMarks = document.getInsertMarksAtRange(selection);\n const frag = Plain.deserialize(text, {\n defaultBlock,\n defaultMarks\n }).document;\n change.insertFragment(frag);\n }\n };\n\n renderPlaceholder = props => {\n const { editor } = props;\n const { document } = editor.value;\n\n if (!editor.props.placeholder || document.text !== '' || document.nodes.size !== 1) {\n return false;\n }\n\n return (\n <span\n contentEditable={false}\n style={{\n display: 'inline-block',\n width: 'fit-content', // for centering the placeholder if text-align is set to center\n maxWidth: '100%',\n whiteSpace: 'nowrap',\n opacity: '0.33',\n pointerEvents: 'none'\n }}\n >\n {editor.props.placeholder}\n </span>\n );\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 onDrop={(event, editor) => this.onDropPaste(event, editor, true)}\n onPaste={(event, editor) => this.onDropPaste(event, editor)}\n onFocus={this.onFocus}\n onEditingDone={this.onEditingDone}\n focusedNode={focusedNode}\n normalize={this.normalize}\n readOnly={disabled}\n spellCheck={spellCheck}\n className={classNames(\n {\n [classes.noPadding]: toolbarOpts && toolbarOpts.noBorder\n },\n classes.slateEditor\n )}\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 renderPlaceholder={this.renderPlaceholder}\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 noPadding: {\n padding: '0 !important'\n }\n};\n\nexport default withStyles(styles)(Editor);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"editor.js","names":["log","debug","defaultToolbarOpts","position","alignment","alwaysVisible","showDone","doneOn","defaultResponseAreaProps","options","respAreaToolbar","onHandleAreaChange","defaultLanguageCharactersProps","language","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","maxImageWidth","maxImageHeight","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","preBlurValue","handleBlur","bind","editorDOM","document","querySelector","key","setTimeout","stateValue","wrapperRef","editorElement","activeElement","closest","className","toolbarElement","toolbarRef","isInCurrentComponent","contains","removeEventListener","handleDomBlur","isFocused","__TEMPORARY_CHANGE_DATA","data","domEl","setNodeByKey","addEventListener","force","stopReset","reduce","s","p","toObject","newValue","Value","fromJSON","toJSON","charactersLimit","v","endsWith","undefined","parseInt","isNaN","object","last","nodes","parent","getParent","Block","pos","dropContext","transfer","getEventTransfer","file","files","fragment","getBase64","inline","Inline","create","isVoid","loading","range","getEventRange","select","ch","insertInline","insertFragment","selection","startBlock","defaultBlock","defaultMarks","getInsertMarksAtRange","frag","Plain","deserialize","placeholder","size","display","width","maxWidth","whiteSpace","opacity","pointerEvents","onResize","handlePlugins","onRef","window","autoFocus","nextProps","newToolbarOpts","isEqual","zeroWidthEls","querySelectorAll","Array","from","forEach","el","style","minWidth","equals","minHeight","height","maxHeight","valueToSize","disabled","spellCheck","highlightShape","classes","pluginProps","onKeyDown","sizeStyle","buildSizeStyle","names","classNames","withBg","toolbarOnTop","ref","r","slateEditor","editorRef","getFocusedValue","onDropPaste","normalize","noPadding","noBorder","renderPlaceholder","changeData","React","Component","PropTypes","bool","func","isRequired","SlateTypes","number","oneOfType","string","any","shape","oneOf","arrayOf","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, getEventRange, getEventTransfer } 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, Inline } 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';\nimport Plain from 'slate-plain-serializer';\n\nimport { getBase64 } from './serialization';\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 = [{ language: 'spanish' }, { language: 'special' }];\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 maxImageWidth: PropTypes.number,\n maxImageHeight: PropTypes.number\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 maxImageWidth: this.props.maxImageWidth,\n maxImageHeight: this.props.maxImageHeight\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(\n { preBlurValue: this.state.value, focusedNode: !node ? null : node },\n this.handleBlur.bind(this, resolve)\n );\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 const { value: stateValue } = this.state;\n\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\n if (stateValue.isFocused) {\n this.onBlur(e);\n }\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 getFocusedValue = () => {\n if (this.state.value.isFocused) {\n return this.state.value;\n }\n\n return this.state.preBlurValue;\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 onDropPaste = async (event, change, dropContext) => {\n const editor = change.editor;\n const transfer = getEventTransfer(event);\n const file = transfer.files && transfer.files[0];\n\n const type = transfer.type;\n const fragment = transfer.fragment;\n const text = transfer.text;\n\n if (\n file &&\n (file.type === 'image/jpeg' || file.type === 'image/jpg' || file.type === 'image/png')\n ) {\n if (!this.props.imageSupport) {\n return;\n }\n try {\n log('[onDropPaste]');\n const src = await getBase64(file);\n const inline = Inline.create({\n type: 'image',\n isVoid: true,\n data: {\n loading: false,\n src\n }\n });\n\n if (dropContext) {\n this.focus();\n } else {\n const range = getEventRange(event, editor);\n if (range) {\n change.select(range);\n }\n }\n\n const ch = change.insertInline(inline);\n this.onChange(ch);\n } catch (err) {\n log('[onDropPaste] error: ', err);\n }\n } else if (type === 'fragment') {\n change.insertFragment(fragment);\n } else if (type === 'text' || type === 'html') {\n if (!text) {\n return;\n }\n const {\n value: { document, selection, startBlock }\n } = change;\n\n if (startBlock.isVoid) {\n return;\n }\n\n const defaultBlock = startBlock;\n const defaultMarks = document.getInsertMarksAtRange(selection);\n const frag = Plain.deserialize(text, {\n defaultBlock,\n defaultMarks\n }).document;\n change.insertFragment(frag);\n }\n };\n\n renderPlaceholder = props => {\n const { editor } = props;\n const { document } = editor.value;\n\n if (!editor.props.placeholder || document.text !== '' || document.nodes.size !== 1) {\n return false;\n }\n\n return (\n <span\n contentEditable={false}\n style={{\n display: 'inline-block',\n width: 'fit-content', // for centering the placeholder if text-align is set to center\n maxWidth: '100%',\n whiteSpace: 'nowrap',\n opacity: '0.33',\n pointerEvents: 'none'\n }}\n >\n {editor.props.placeholder}\n </span>\n );\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 getFocusedValue={this.getFocusedValue}\n onBlur={this.onBlur}\n onDrop={(event, editor) => this.onDropPaste(event, editor, true)}\n onPaste={(event, editor) => this.onDropPaste(event, editor)}\n onFocus={this.onFocus}\n onEditingDone={this.onEditingDone}\n focusedNode={focusedNode}\n normalize={this.normalize}\n readOnly={disabled}\n spellCheck={spellCheck}\n className={classNames(\n {\n [classes.noPadding]: toolbarOpts && toolbarOpts.noBorder\n },\n classes.slateEditor\n )}\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 renderPlaceholder={this.renderPlaceholder}\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 noPadding: {\n padding: '0 !important'\n }\n};\n\nexport default withStyles(styles)(Editor);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;AAMA,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,8BAA8B,GAAG,CAAC;EAAEC,QAAQ,EAAE;AAAZ,CAAD,EAA0B;EAAEA,QAAQ,EAAE;AAAZ,CAA1B,CAAvC;;AAEA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAAAC,WAAW,EAAI;EACvC,uCACKb,kBADL,GAEKa,WAFL;AAID,CALD;;IAOaC,M;;;;;EAyEX,gBAAYC,MAAZ,EAAmB;IAAA;;IAAA;IACjB,0BAAMA,MAAN;IADiB,kGAcH,UAAAA,KAAK,EAAI;MACvB,IAAMC,2BAA2B,mCAC5BV,wBAD4B,GAE5BS,KAAK,CAACE,iBAFsB,CAAjC;;MAKA,MAAKC,OAAL,GAAe,IAAAC,qBAAA,EAAaJ,KAAK,CAACK,aAAnB,EAAkC;QAC/CC,IAAI,EAAE;UACJC,OAAO,EAAE,MAAKC,WADV;UAEJC,OAAO,EAAE,MAAKC,aAFV;UAGJC,MAAM,EAAE,MAAKC;QAHT,CADyC;QAM/CC,KAAK,EAAE;UACLC,QAAQ,EACNd,KAAK,CAACe,YAAN,IACAf,KAAK,CAACe,YAAN,UADA,IAEC,UAACC,GAAD,EAAMC,IAAN,EAAe;YACdjB,KAAK,CAACe,YAAN,WAA0BC,GAA1B,EAA+B,UAAAE,CAAC,EAAI;cAClCD,IAAI,CAACC,CAAD,EAAI,MAAKC,KAAL,CAAWC,KAAf,CAAJ;YACD,CAFD;UAGD,CARE;UASLC,oBAAoB,EAClBrB,KAAK,CAACe,YAAN,IACC,UAAAO,UAAU,EAAI;YACb;AACZ;AACA;AACA;YACY,IAAMC,OAAO,GAAGD,UAAU,CAAC;cAAA,OAAM,MAAKH,KAAL,CAAWC,KAAjB;YAAA,CAAD,CAA1B;YACApB,KAAK,CAACe,YAAN,CAAmBS,GAAnB,CAAuBD,OAAvB;UACD,CAlBE;UAmBLd,OAAO,EAAE,MAAKC,aAnBT;UAoBLC,MAAM,EAAE,MAAKC,YApBR;UAqBLa,aAAa,EAAE,MAAKzB,KAAL,CAAWyB,aArBrB;UAsBLC,cAAc,EAAE,MAAK1B,KAAL,CAAW0B;QAtBtB,CANwC;QA8B/CC,OAAO,EAAE;UACP;AACR;AACA;AACA;UACQC,gBAAgB,EAAE5B,KAAK,CAAC4B,gBALjB;UAMPC,SAAS,EAAE7B,KAAK,CAAC8B,gBANV;UAOPC,MAAM,EAAE,kBAAM;YAAA;;YACZ,IAAQC,QAAR,GAAqBhC,KAArB,CAAQgC,QAAR;YAEAjD,GAAG,CAAC,UAAD,CAAH;;YACA,MAAKkD,QAAL,CAAc;cAAEC,cAAc,EAAE,KAAlB;cAAyBC,WAAW,EAAE;YAAtC,CAAd;;YACA,MAAKC,MAAL,CAAYC,IAAZ;;YAEA,IAAIL,QAAQ,IAAI,gCAAKb,KAAL,CAAWC,KAAX,CAAiBkB,SAAjB,0GAA4BC,IAA5B,kFAAkCC,MAAlC,MAA6C,CAA7D,EAAgE;cAC9D,MAAKC,UAAL,CAAgB,IAAhB,EAAsBC,IAAtB,CAA2B,YAAM;gBAC/B,MAAKC,aAAL;cACD,CAFD;YAGD,CAJD,MAIO;cACL,MAAKA,aAAL;YACD;UACF;QArBM,CA9BsC;QAqD/CC,KAAK,EAAE;UACLnC,OAAO,EAAE,mBAAM;YACb1B,GAAG,CAAC,oBAAD,CAAH;;YACA,MAAK2B,aAAL;UACD,CAJI;UAKLC,MAAM,EAAE,kBAAM;YACZ5B,GAAG,CAAC,mBAAD,CAAH;;YACA,MAAK6B,YAAL;UACD;QARI,CArDwC;QA+D/CiC,YAAY,EAAE;UACZC,IAAI,EAAE7C,2BAA2B,CAAC6C,IADtB;UAEZtD,OAAO,EAAES,2BAA2B,CAACT,OAFzB;UAGZuD,gBAAgB,EAAE9C,2BAA2B,CAAC8C,gBAHlC;UAIZtD,eAAe,EAAEQ,2BAA2B,CAACR,eAJjC;UAKZC,kBAAkB,EAAEO,2BAA2B,CAACP,kBALpC;UAMZsD,KAAK,EAAE/C,2BAA2B,CAAC+C,KANvB;UAOZvC,OAAO,EAAE,mBAAM;YACb1B,GAAG,CAAC,oBAAD,CAAH;;YACA,MAAK2B,aAAL;UACD,CAVW;UAWZC,MAAM,EAAE,kBAAM;YACZ5B,GAAG,CAAC,mBAAD,CAAH;;YACA,MAAK6B,YAAL;UACD;QAdW,CA/DiC;QA+E/CqC,kBAAkB,EAAEjD,KAAK,CAACkD,uBA/EqB;QAgF/CC,KAAK,EAAE;UACLC,KAAK,EAAE,MAAKA,KADP;UAELC,YAAY,EAAE;YAAA,OAAM,MAAKlC,KAAL,CAAWC,KAAX,CAAiBkC,MAAjB,EAAN;UAAA,CAFT;UAGLC,QAAQ,EAAE,MAAKA;QAHV;MAhFwC,CAAlC,CAAf;IAsFD,CA1GkB;IAAA,iGA6JJ,UAAArC,CAAC,EAAI;MAClBnC,GAAG,CAAC,gBAAD,EAAmBmC,CAAC,IAAIA,CAAC,CAACsC,aAA1B,CAAH;MACA,IAAMC,MAAM,GAAGvC,CAAC,IAAIA,CAAC,CAACsC,aAAtB;MAEA,IAAME,IAAI,GAAGD,MAAM,GAAG,IAAAE,oBAAA,EAASF,MAAT,EAAiB,MAAKtC,KAAL,CAAWC,KAA5B,CAAH,GAAwC,IAA3D;MACArC,GAAG,CAAC,uBAAD,EAA0B2E,IAA1B,CAAH;;MACA,MAAKzB,QAAL,CAAc;QAAEE,WAAW,EAAEuB;MAAf,CAAd,EAAqC,YAAM;QACzC,MAAKjB,UAAL;MACD,CAFD;IAGD,CAtKkB;IAAA,kGAwKH,UAAAvB,CAAC,EAAI;MACnBnC,GAAG,CAAC,iBAAD,EAAoBmC,CAAC,IAAIA,CAAC,CAACuC,MAA3B,CAAH;MACA,IAAMA,MAAM,GAAGvC,CAAC,IAAIA,CAAC,CAACuC,MAAtB;;MACA,IAAIA,MAAJ,EAAY;QACV,IAAMC,IAAI,GAAG,IAAAC,oBAAA,EAASF,MAAT,EAAiB,MAAKtC,KAAL,CAAWC,KAA5B,CAAb;QACArC,GAAG,CAAC,wBAAD,EAA2B2E,IAA3B,CAAH;QAEA,IAAME,YAAY,GAAG,MAAKzC,KAAL,CAAWyC,YAAX,IAA2B,MAAKzC,KAAL,CAAWC,KAA3D;;QACA,MAAKa,QAAL,CAAc;UAAEE,WAAW,EAAEuB,IAAf;UAAqBE,YAAY,EAAZA;QAArB,CAAd;MACD,CAND,MAMO;QACL,MAAK3B,QAAL,CAAc;UAAEE,WAAW,EAAE;QAAf,CAAd;MACD;;MACD,MAAK0B,UAAL;IACD,CArLkB;IAAA,gGAuLL,UAAAH,IAAI,EAAI;MACpB,MAAKtB,MAAL,CAAYkB,MAAZ,CAAmB,UAAAQ,CAAC;QAAA,OAAIA,CAAC,CAACC,iBAAF,CAAoBL,IAApB,CAAJ;MAAA,CAApB;;MACA,MAAKzB,QAAL,CAAc;QAAE+B,YAAY,EAAEN;MAAhB,CAAd;IACD,CA1LkB;IAAA,kGA4LH,YAAM;MACpB3E,GAAG,CAAC,iBAAD,CAAH;;MACA,MAAKkD,QAAL,CAAc;QAAE2B,YAAY,EAAE,IAAhB;QAAsBzB,WAAW,EAAE;MAAnC,CAAd;;MACApD,GAAG,CAAC,yBAAD,EAA4B,MAAKoC,KAAL,CAAWC,KAAvC,CAAH;;MACA,MAAKpB,KAAL,CAAWuD,QAAX,CAAoB,MAAKpC,KAAL,CAAWC,KAA/B,EAAsC,IAAtC;IACD,CAjMkB;IAAA,+FA2MN,UAAA6C,OAAO,EAAI;MACtB,IAAQjC,QAAR,GAAqB,MAAKhC,KAA1B,CAAQgC,QAAR;MACA,IACiB1C,MADjB,GAEI,MAAK6B,KAFT,CACErB,WADF,CACiBR,MADjB;;MAIA,MAAK2C,QAAL,CAAc;QAAEC,cAAc,EAAE,KAAlB;QAAyBC,WAAW,EAAE;MAAtC,CAAd;;MAEA,IAAI,MAAKC,MAAT,EAAiB;QACf,MAAKA,MAAL,CAAYC,IAAZ;MACD;;MAED,IAAI/C,MAAM,KAAK,MAAf,EAAuB;QAAA;;QACrB,IAAI0C,QAAQ,IAAI,iCAAKb,KAAL,CAAWC,KAAX,CAAiBkB,SAAjB,4GAA4BC,IAA5B,kFAAkCC,MAAlC,MAA6C,CAA7D,EAAgE;UAC9D,MAAKC,UAAL,CAAgB,IAAhB,EAAsBC,IAAtB,CAA2B,YAAM;YAC/B,MAAKC,aAAL;;YACAsB,OAAO;UACR,CAHD;QAID,CALD,MAKO;UACL,MAAKtB,aAAL;;UACAsB,OAAO;QACR;MACF;IACF,CAlOkB;IAAA,2FAoOV,UAAAC,KAAK,EAAI;MAChBnF,GAAG,CAAC,UAAD,CAAH;MACA,IAAM0E,MAAM,GAAGS,KAAK,CAACV,aAArB;MAEA,IAAME,IAAI,GAAGD,MAAM,GAAG,IAAAE,oBAAA,EAASF,MAAT,EAAiB,MAAKtC,KAAL,CAAWC,KAA5B,CAAH,GAAwC,IAA3D;MAEArC,GAAG,CAAC,iBAAD,EAAoB2E,IAApB,CAAH;MAEA,OAAO,IAAIS,OAAJ,CAAY,UAAAF,OAAO,EAAI;QAC5B,MAAKhC,QAAL,CACE;UAAEmC,YAAY,EAAE,MAAKjD,KAAL,CAAWC,KAA3B;UAAkCe,WAAW,EAAE,CAACuB,IAAD,GAAQ,IAAR,GAAeA;QAA9D,CADF,EAEE,MAAKW,UAAL,CAAgBC,IAAhB,iDAA2BL,OAA3B,CAFF;;QAIA,MAAKjE,KAAL,CAAWW,MAAX,CAAkBuD,KAAlB;MACD,CANM,CAAP;IAOD,CAnPkB;IAAA,kGAqPH,UAAAhD,CAAC,EAAI;MACnB,IAAMqD,SAAS,GAAGC,QAAQ,CAACC,aAAT,uBAAqC,MAAKtD,KAAL,CAAWC,KAAX,CAAiBoD,QAAjB,CAA0BE,GAA/D,SAAlB;MAEAC,UAAU,CAAC,YAAM;QACf,IAAeC,UAAf,GAA8B,MAAKzD,KAAnC,CAAQC,KAAR;;QAEA,IAAI,CAAC,MAAKyD,UAAV,EAAsB;UACpB;QACD;;QAED,IAAMC,aAAa,GACjB,CAACP,SAAD,IAAcC,QAAQ,CAACO,aAAT,CAAuBC,OAAvB,qBAA2CT,SAAS,CAACU,SAArD,SADhB;QAEA,IAAMC,cAAc,GAClB,CAAC,MAAKC,UAAN,IACAX,QAAQ,CAACO,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;UACzBb,SAAS,CAACe,mBAAV,CAA8B,MAA9B,EAAsC,MAAKC,aAA3C;;UAEA,IAAIX,UAAU,CAACY,SAAf,EAA0B;YACxB,MAAK7E,MAAL,CAAYO,CAAZ;UACD;QACF;MACF,CAtBS,EAsBP,EAtBO,CAAV;IAuBD,CA/QkB;IAAA,4FAwRT;MAAA,OACR,IAAIiD,OAAJ,CAAY,UAAAF,OAAO,EAAI;QACrB,IAAMM,SAAS,GAAGC,QAAQ,CAACC,aAAT,uBAAqC,MAAKtD,KAAL,CAAWC,KAAX,CAAiBoD,QAAjB,CAA0BE,GAA/D,SAAlB;QAEA3F,GAAG,CAAC,WAAD,EAAcyF,QAAQ,CAACO,aAAvB,CAAH;QAEA;AACN;AACA;;QACM,IAAI,MAAKU,uBAAT,EAAkC;UAChC,4BAAsB,MAAKA,uBAA3B;UAAA,IAAQf,GAAR,yBAAQA,GAAR;UAAA,IAAagB,IAAb,yBAAaA,IAAb;UACA,IAAMC,KAAK,GAAGnB,QAAQ,CAACC,aAAT,uBAAqCC,GAArC,SAAd;;UAEA,IAAIiB,KAAJ,EAAW;YACT,IAAIrC,MAAM,GAAG,MAAKnC,KAAL,CAAWC,KAAX,CAAiBkC,MAAjB,GAA0BsC,YAA1B,CAAuClB,GAAvC,EAA4C;cAAEgB,IAAI,EAAJA;YAAF,CAA5C,CAAb;;YAEA,MAAKzD,QAAL,CAAc;cAAEb,KAAK,EAAEkC,MAAM,CAAClC;YAAhB,CAAd,EAAuC,YAAM;cAC3C,MAAKqE,uBAAL,GAA+B,IAA/B;YACD,CAFD;UAGD;QACF;QAED;AACN;AACA;AACA;AACA;AACA;;;QACM,IAAIlB,SAAS,KAAKC,QAAQ,CAACO,aAA3B,EAA0C;UACxCR,SAAS,CAACe,mBAAV,CAA8B,MAA9B,EAAsC,MAAKC,aAA3C;UACAhB,SAAS,CAACsB,gBAAV,CAA2B,MAA3B,EAAmC,MAAKN,aAAxC;QACD;;QAED,MAAK1B,UAAL;;QACA,MAAK7D,KAAL,CAAWS,OAAX;;QAEAwD,OAAO;MACR,CApCD,CADQ;IAAA,CAxRS;IAAA,+FA+TN,YAAM;MACjBlF,GAAG,CAAC,cAAD,CAAH;;MACA,IAAI,CAAC,MAAKoC,KAAL,CAAWyC,YAAhB,EAA8B;QAC5B,MAAK3B,QAAL,CAAc;UAAE2B,YAAY,EAAE,MAAKzC,KAAL,CAAWC;QAA3B,CAAd;MACD;IACF,CApUkB;IAAA,+FAyUN,UAAA0E,KAAK,EAAI;MACpB,kBAA+B,MAAK3E,KAApC;MAAA,IAAQC,KAAR,eAAQA,KAAR;MAAA,IAAee,WAAf,eAAeA,WAAf;;MAEA,IAAM4D,SAAS,GAAG,MAAK5F,OAAL,CAAa6F,MAAb,CAAoB,UAACC,CAAD,EAAIC,CAAJ,EAAU;QAC9C,OAAOD,CAAC,IAAKC,CAAC,CAACH,SAAF,IAAeG,CAAC,CAACH,SAAF,CAAY,MAAK5E,KAAL,CAAWC,KAAvB,CAA5B;MACD,CAFiB,EAEf,KAFe,CAAlB;;MAIArC,GAAG,CAAC,cAAD,EAAiBqC,KAAK,CAACoE,SAAvB,EAAkCrD,WAAlC,EAA+C,aAA/C,EAA8D4D,SAA9D,CAAH;;MACA,IAAK,MAAK5E,KAAL,CAAWyC,YAAX,IAA2B,CAACxC,KAAK,CAACoE,SAAlC,IAA+C,CAACrD,WAAhD,IAA+D,CAAC4D,SAAjE,IAA+ED,KAAnF,EAA0F;QACxF/G,GAAG,CAAC,2BAAD,CAAH;QACAA,GAAG,CAAC,SAAD,EAAY,MAAKoC,KAAL,CAAWyC,YAAX,CAAwBY,QAAxB,CAAiC2B,QAAjC,EAAZ,CAAH;QACApH,GAAG,CAAC,SAAD,EAAY,MAAKoC,KAAL,CAAWC,KAAX,CAAiBoD,QAAjB,CAA0B2B,QAA1B,EAAZ,CAAH;;QAEA,IAAMC,QAAQ,GAAGC,YAAA,CAAMC,QAAN,CAAe,MAAKnF,KAAL,CAAWyC,YAAX,CAAwB2C,MAAxB,EAAf,CAAjB;;QAEAxH,GAAG,CAAC,YAAD,EAAeqH,QAAQ,CAAC5B,QAAxB,CAAH;QACA,OAAO,IAAIL,OAAJ,CAAY,UAAAF,OAAO,EAAI;UAC5BU,UAAU,CAAC,YAAM;YACf,MAAK1C,QAAL,CAAc;cAAEb,KAAK,EAAEgF,QAAT;cAAmBxC,YAAY,EAAE;YAAjC,CAAd,EAAuD,YAAM;cAC3D7E,GAAG,CAAC,aAAD,EAAgB,MAAKoC,KAAL,CAAWC,KAAX,CAAiBoD,QAAjB,CAA0B+B,MAA1B,EAAhB,CAAH;cACAtC,OAAO;YACR,CAHD;UAID,CALS,EAKP,EALO,CAAV;QAMD,CAPM,CAAP;MAQD,CAhBD,MAgBO;QACL,OAAOE,OAAO,CAACF,OAAR,CAAgB,EAAhB,CAAP;MACD;IACF,CApWkB;IAAA,6FAsWR,UAACX,MAAD,EAASrC,IAAT,EAAkB;MAC3BlC,GAAG,CAAC,YAAD,CAAH;MAEA,IAAQqC,KAAR,GAAkBkC,MAAlB,CAAQlC,KAAR;MACA,IAAQoF,eAAR,GAA4B,MAAKxG,KAAjC,CAAQwG,eAAR;;MAEA,IACEpF,KAAK,IACLA,KAAK,CAACoD,QADN,IAEApD,KAAK,CAACoD,QAAN,CAAejC,IAFf,IAGAnB,KAAK,CAACoD,QAAN,CAAejC,IAAf,CAAoBC,MAApB,GAA6BgE,eAJ/B,EAKE;QACA;MACD;;MAED,MAAKvE,QAAL,CAAc;QAAEb,KAAK,EAALA;MAAF,CAAd,EAAyB,YAAM;QAC7BrC,GAAG,CAAC,yBAAD,CAAH;;QAEA,IAAIkC,IAAJ,EAAU;UACRA,IAAI;QACL;MACF,CAND;IAOD,CA5XkB;IAAA,oGA8XD,YAAM;MACtB,IAAI,MAAKE,KAAL,CAAWC,KAAX,CAAiBoE,SAArB,EAAgC;QAC9B,OAAO,MAAKrE,KAAL,CAAWC,KAAlB;MACD;;MAED,OAAO,MAAKD,KAAL,CAAWiD,YAAlB;IACD,CApYkB;IAAA,gGA+YL,UAAAqC,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,IAAMrF,KAAK,GAAGwF,QAAQ,CAACH,CAAD,EAAI,EAAJ,CAAtB;UACA,OAAOI,KAAK,CAACzF,KAAD,CAAL,GAAeA,KAAf,aAA0BA,KAA1B,OAAP;QACD;MACF;;MACD,IAAI,OAAOqF,CAAP,KAAa,QAAjB,EAA2B;QACzB,iBAAUA,CAAV;MACD;;MAED;IACD,CAnakB;IAAA,iGAgbJ,UAAA/C,IAAI,EAAI;MACrB,IAAIA,IAAI,CAACoD,MAAL,KAAgB,OAApB,EAA6B;MAE7B,IAAMC,IAAI,GAAGrD,IAAI,CAACsD,KAAL,CAAWD,IAAX,EAAb;MACA,IAAI,CAACA,IAAL,EAAW;MAEX,IAAIA,IAAI,CAACjE,IAAL,KAAc,OAAlB,EAA2B;MAE3B/D,GAAG,CAAC,gCAAD,CAAH;MAEA,IAAMkI,MAAM,GAAGF,IAAI,CAACG,SAAL,CAAeH,IAAI,CAACrC,GAApB,CAAf;;MACA,IAAMwB,CAAC,GAAGiB,YAAA,CAAMD,SAAN,CAAgBH,IAAI,CAACrC,GAArB,CAAV;;MACA3F,GAAG,CAAC,wBAAD,EAA2BkI,MAA3B,EAAmCf,CAAnC,CAAH;MAEA,OAAOS,SAAP;IACD,CA/bkB;IAAA,+FAicN,UAACjC,GAAD,EAAMgB,IAAN,EAAe;MAC1B3G,GAAG,CAAC,mBAAD,EAAsB2F,GAAtB,EAA2BgB,IAA3B,CAAH;MAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAEI;MACA;;MAEA,MAAKD,uBAAL,GAA+B;QAAEf,GAAG,EAAHA,GAAF;QAAOgB,IAAI,EAAJA;MAAP,CAA/B;IACD,CAldkB;IAAA,0FAodX,UAAC0B,GAAD,EAAM1D,IAAN,EAAe;MACrB,IAAMxE,QAAQ,GAAGkI,GAAG,IAAI,KAAxB;;MAEA,MAAKpH,KAAL,CAAWoD,KAAX,CAAiBlE,QAAjB,EAA2BwE,IAA3B;IACD,CAxdkB;IAAA;MAAA,yFA0dL,iBAAOQ,KAAP,EAAcZ,MAAd,EAAsB+D,WAAtB;QAAA;;QAAA;UAAA;YAAA;cAAA;gBACNjF,MADM,GACGkB,MAAM,CAAClB,MADV;gBAENkF,QAFM,GAEK,IAAAC,4BAAA,EAAiBrD,KAAjB,CAFL;gBAGNsD,IAHM,GAGCF,QAAQ,CAACG,KAAT,IAAkBH,QAAQ,CAACG,KAAT,CAAe,CAAf,CAHnB;gBAKN3E,IALM,GAKCwE,QAAQ,CAACxE,IALV;gBAMN4E,QANM,GAMKJ,QAAQ,CAACI,QANd;gBAONnF,IAPM,GAOC+E,QAAQ,CAAC/E,IAPV;;gBAAA,MAUViF,IAAI,KACHA,IAAI,CAAC1E,IAAL,KAAc,YAAd,IAA8B0E,IAAI,CAAC1E,IAAL,KAAc,WAA5C,IAA2D0E,IAAI,CAAC1E,IAAL,KAAc,WADtE,CAVM;kBAAA;kBAAA;gBAAA;;gBAAA,IAaL,MAAK9C,KAAL,CAAWe,YAbN;kBAAA;kBAAA;gBAAA;;gBAAA;;cAAA;gBAAA;gBAiBRhC,GAAG,CAAC,eAAD,CAAH;gBAjBQ;gBAAA,OAkBU,IAAA4I,uBAAA,EAAUH,IAAV,CAlBV;;cAAA;gBAkBFxG,GAlBE;gBAmBF4G,MAnBE,GAmBOC,aAAA,CAAOC,MAAP,CAAc;kBAC3BhF,IAAI,EAAE,OADqB;kBAE3BiF,MAAM,EAAE,IAFmB;kBAG3BrC,IAAI,EAAE;oBACJsC,OAAO,EAAE,KADL;oBAEJhH,GAAG,EAAHA;kBAFI;gBAHqB,CAAd,CAnBP;;gBA4BR,IAAIqG,WAAJ,EAAiB;kBACf,MAAKjE,KAAL;gBACD,CAFD,MAEO;kBACC6E,KADD,GACS,IAAAC,yBAAA,EAAchE,KAAd,EAAqB9B,MAArB,CADT;;kBAEL,IAAI6F,KAAJ,EAAW;oBACT3E,MAAM,CAAC6E,MAAP,CAAcF,KAAd;kBACD;gBACF;;gBAEKG,EArCE,GAqCG9E,MAAM,CAAC+E,YAAP,CAAoBT,MAApB,CArCH;;gBAsCR,MAAKrE,QAAL,CAAc6E,EAAd;;gBAtCQ;gBAAA;;cAAA;gBAAA;gBAAA;gBAwCRrJ,GAAG,CAAC,uBAAD,cAAH;;cAxCQ;gBAAA;gBAAA;;cAAA;gBAAA,MA0CD+D,IAAI,KAAK,UA1CR;kBAAA;kBAAA;gBAAA;;gBA2CVQ,MAAM,CAACgF,cAAP,CAAsBZ,QAAtB;gBA3CU;gBAAA;;cAAA;gBAAA,MA4CD5E,IAAI,KAAK,MAAT,IAAmBA,IAAI,KAAK,MA5C3B;kBAAA;kBAAA;gBAAA;;gBAAA,IA6CLP,IA7CK;kBAAA;kBAAA;gBAAA;;gBAAA;;cAAA;gBAAA,gBAkDNe,MAlDM,CAiDRlC,KAjDQ,EAiDCoD,SAjDD,iBAiDCA,QAjDD,EAiDW+D,SAjDX,iBAiDWA,SAjDX,EAiDsBC,UAjDtB,iBAiDsBA,UAjDtB;;gBAAA,KAoDNA,UAAU,CAACT,MApDL;kBAAA;kBAAA;gBAAA;;gBAAA;;cAAA;gBAwDJU,YAxDI,GAwDWD,UAxDX;gBAyDJE,YAzDI,GAyDWlE,SAAQ,CAACmE,qBAAT,CAA+BJ,SAA/B,CAzDX;gBA0DJK,IA1DI,GA0DGC,gCAAA,CAAMC,WAAN,CAAkBvG,IAAlB,EAAwB;kBACnCkG,YAAY,EAAZA,YADmC;kBAEnCC,YAAY,EAAZA;gBAFmC,CAAxB,EAGVlE,QA7DO;gBA8DVlB,MAAM,CAACgF,cAAP,CAAsBM,IAAtB;;cA9DU;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CA1dK;;MAAA;QAAA;MAAA;IAAA;IAAA,sGA4hBC,UAAA5I,KAAK,EAAI;MAC3B,IAAQoC,MAAR,GAAmBpC,KAAnB,CAAQoC,MAAR;MACA,IAAQoC,QAAR,GAAqBpC,MAAM,CAAChB,KAA5B,CAAQoD,QAAR;;MAEA,IAAI,CAACpC,MAAM,CAACpC,KAAP,CAAa+I,WAAd,IAA6BvE,QAAQ,CAACjC,IAAT,KAAkB,EAA/C,IAAqDiC,QAAQ,CAACwC,KAAT,CAAegC,IAAf,KAAwB,CAAjF,EAAoF;QAClF,OAAO,KAAP;MACD;;MAED,oBACE;QACE,eAAe,EAAE,KADnB;QAEE,KAAK,EAAE;UACLC,OAAO,EAAE,cADJ;UAELC,KAAK,EAAE,aAFF;UAEiB;UACtBC,QAAQ,EAAE,MAHL;UAILC,UAAU,EAAE,QAJP;UAKLC,OAAO,EAAE,MALJ;UAMLC,aAAa,EAAE;QANV;MAFT,GAWGlH,MAAM,CAACpC,KAAP,CAAa+I,WAXhB,CADF;IAeD,CAnjBkB;IAEjB,MAAK5H,KAAL,GAAa;MACXC,KAAK,EAAEpB,MAAK,CAACoB,KADF;MAEXtB,WAAW,EAAED,iBAAiB,CAACG,MAAK,CAACF,WAAP;IAFnB,CAAb;;IAKA,MAAKyJ,QAAL,GAAgB,YAAM;MACpBvJ,MAAK,CAACuD,QAAN,CAAe,MAAKpC,KAAL,CAAWC,KAA1B,EAAiC,IAAjC;IACD,CAFD;;IAIA,MAAKoI,aAAL,CAAmB,MAAKxJ,KAAxB;;IAXiB;EAYlB;;;;WAgGD,6BAAoB;MAAA;;MAClB;MACA,KAAKA,KAAL,CAAWyJ,KAAX,CAAiB,IAAjB;MAEAC,MAAM,CAAC7D,gBAAP,CAAwB,QAAxB,EAAkC,KAAK0D,QAAvC;;MAEA,IAAI,KAAKnH,MAAL,IAAe,KAAKpC,KAAL,CAAW2J,SAA9B,EAAyC;QACvCxF,OAAO,CAACF,OAAR,GAAkBvB,IAAlB,CAAuB,YAAM;UAC3B,IAAI,MAAI,CAACN,MAAT,EAAiB;YACf,IAAMmC,SAAS,GAAGC,QAAQ,CAACC,aAAT,uBACF,MAAI,CAACrC,MAAL,CAAYhB,KAAZ,CAAkBoD,QAAlB,CAA2BE,GADzB,SAAlB;;YAIA,MAAI,CAACtC,MAAL,CAAYgB,KAAZ;;YAEA,IAAImB,SAAJ,EAAe;cACbA,SAAS,CAACnB,KAAV;YACD;UACF;QACF,CAZD;MAaD;IACF;;;WAED,mCAA0BwG,SAA1B,EAAqC;MACnC,IAAQ9J,WAAR,GAAwB,KAAKqB,KAA7B,CAAQrB,WAAR;MACA,IAAM+J,cAAc,GAAGhK,iBAAiB,CAAC+J,SAAS,CAAC9J,WAAX,CAAxC;;MAEA,IAAI,CAAC,IAAAgK,mBAAA,EAAQD,cAAR,EAAwB/J,WAAxB,CAAL,EAA2C;QACzC,KAAKmC,QAAL,CAAc;UACZnC,WAAW,EAAE+J;QADD,CAAd;MAGD;;MAED,IAAI,CAAC,IAAAC,mBAAA,EAAQF,SAAS,CAAC1G,uBAAlB,EAA2C,KAAKlD,KAAL,CAAWkD,uBAAtD,CAAL,EAAqF;QACnF,KAAKsG,aAAL,CAAmBI,SAAnB;MACD;IACF;;;WAED,8BAAqB;MACnB;MACA;MACA,IAAMG,YAAY,GAAGvF,QAAQ,CAACwF,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,CAASpB,OAAT,GAAmB,cAAnB;MACD,CAHD;IAID;;;;IAwCD;AACF;AACA;IACE,gCAAuB;MACrBS,MAAM,CAACpE,mBAAP,CAA2B,QAA3B,EAAqC,KAAKiE,QAA1C;IACD,C,CAED;;;;WA4LA,0CAAiCvJ,KAAjC,EAAwC;MACtC,IAAI,CAACA,KAAK,CAACoB,KAAN,CAAYoD,QAAZ,CAAqB+F,MAArB,CAA4B,KAAKvK,KAAL,CAAWoB,KAAX,CAAiBoD,QAA7C,CAAL,EAA6D;QAC3D,KAAKvC,QAAL,CAAc;UACZmB,KAAK,EAAE,KADK;UAEZhC,KAAK,EAAEpB,KAAK,CAACoB;QAFD,CAAd;MAID;IACF;;;WAwBD,0BAAiB;MACf,kBAAgD,KAAKpB,KAArD;MAAA,IAAQkJ,KAAR,eAAQA,KAAR;MAAA,IAAesB,SAAf,eAAeA,SAAf;MAAA,IAA0BC,MAA1B,eAA0BA,MAA1B;MAAA,IAAkCC,SAAlC,eAAkCA,SAAlC;MAEA,OAAO;QACLxB,KAAK,EAAE,KAAKyB,WAAL,CAAiBzB,KAAjB,CADF;QAELuB,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;;;WAuID,kBAAS;MAAA;MAAA;;MACP,mBASI,KAAK1K,KATT;MAAA,IACE4K,QADF,gBACEA,QADF;MAAA,IAEEC,UAFF,gBAEEA,UAFF;MAAA,IAGEC,cAHF,gBAGEA,cAHF;MAAA,IAIEC,OAJF,gBAIEA,OAJF;MAAA,IAKE9F,SALF,gBAKEA,SALF;MAAA,IAME8D,WANF,gBAMEA,WANF;MAAA,IAOEiC,WAPF,gBAOEA,WAPF;MAAA,IAQEC,SARF,gBAQEA,SARF;MAWA,mBAA4C,KAAK9J,KAAjD;MAAA,IAAQC,KAAR,gBAAQA,KAAR;MAAA,IAAee,WAAf,gBAAeA,WAAf;MAAA,IAA4BrC,WAA5B,gBAA4BA,WAA5B;MAEAf,GAAG,CAAC,kBAAD,EAAqBqC,KAArB,CAAH;MACA,IAAM8J,SAAS,GAAG,KAAKC,cAAL,EAAlB;MACA,IAAMC,KAAK,GAAG,IAAAC,sBAAA,mEAETN,OAAO,CAACO,MAFC,EAEQR,cAFR,iDAGTC,OAAO,CAACQ,YAHC,EAGczL,WAAW,CAACV,aAAZ,IAA6BU,WAAW,CAACZ,QAAZ,KAAyB,KAHpE,iBAKZ+F,SALY,CAAd;MAQA,oBACE;QACE,GAAG,EAAE,aAAAuG,KAAG;UAAA,OAAK,MAAI,CAAC3G,UAAL,GAAkB2G,KAAvB;QAAA,CADV;QAEE,KAAK,EAAE;UAAEtC,KAAK,EAAEgC,SAAS,CAAChC;QAAnB,CAFT;QAGE,SAAS,EAAEkC;MAHb,gBAKE,gCAAC,kBAAD;QACE,OAAO,EAAE,KAAKjL,OADhB;QAEE,QAAQ,EAAE,kBAAAsL,CAAC,EAAI;UACb,IAAIA,CAAJ,EAAO;YACL,MAAI,CAACC,WAAL,GAAmBD,CAAnB;UACD;QACF,CANH;QAOE,GAAG,EAAE,aAAAA,CAAC;UAAA,OAAK,MAAI,CAACrJ,MAAL,GAAcqJ,CAAC,IAAI,MAAI,CAACzL,KAAL,CAAW2L,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,EAAErK,KAbT;QAcE,KAAK,EAAE,KAAKgC,KAdd;QAeE,SAAS,EAAE6H,SAfb;QAgBE,QAAQ,EAAE,KAAK1H,QAhBjB;QAiBE,eAAe,EAAE,KAAKqI,eAjBxB;QAkBE,MAAM,EAAE,KAAKjL,MAlBf;QAmBE,MAAM,EAAE,gBAACuD,KAAD,EAAQ9B,MAAR;UAAA,OAAmB,MAAI,CAACyJ,WAAL,CAAiB3H,KAAjB,EAAwB9B,MAAxB,EAAgC,IAAhC,CAAnB;QAAA,CAnBV;QAoBE,OAAO,EAAE,iBAAC8B,KAAD,EAAQ9B,MAAR;UAAA,OAAmB,MAAI,CAACyJ,WAAL,CAAiB3H,KAAjB,EAAwB9B,MAAxB,CAAnB;QAAA,CApBX;QAqBE,OAAO,EAAE,KAAK3B,OArBhB;QAsBE,aAAa,EAAE,KAAKkC,aAtBtB;QAuBE,WAAW,EAAER,WAvBf;QAwBE,SAAS,EAAE,KAAK2J,SAxBlB;QAyBE,QAAQ,EAAElB,QAzBZ;QA0BE,UAAU,EAAEC,UA1Bd;QA2BE,SAAS,EAAE,IAAAQ,sBAAA,uCAENN,OAAO,CAACgB,SAFF,EAEcjM,WAAW,IAAIA,WAAW,CAACkM,QAFzC,GAITjB,OAAO,CAACW,WAJC,CA3Bb;QAiCE,KAAK,EAAE;UACLlB,SAAS,EAAEU,SAAS,CAACV,SADhB;UAELC,MAAM,EAAES,SAAS,CAACT,MAFb;UAGLC,SAAS,EAAEQ,SAAS,CAACR;QAHhB,CAjCT;QAsCE,WAAW,EAAEM,WAtCf;QAuCE,WAAW,EAAElL,WAvCf;QAwCE,WAAW,EAAEiJ,WAxCf;QAyCE,iBAAiB,EAAE,KAAKkD,iBAzC1B;QA0CE,YAAY,EAAE,KAAKC;MA1CrB,EALF,CADF;IAoDD;;;EA1sByBC,iBAAA,CAAMC,S,GA6sBlC;;;;iCA7sBarM,M,eACQ;EACjB4J,SAAS,EAAE0C,qBAAA,CAAUC,IADJ;EAEjBX,SAAS,EAAEU,qBAAA,CAAUE,IAAV,CAAeC,UAFT;EAGjB/C,KAAK,EAAE4C,qBAAA,CAAUE,IAAV,CAAeC,UAHL;EAIjBjJ,QAAQ,EAAE8I,qBAAA,CAAUE,IAAV,CAAeC,UAJR;EAKjB/L,OAAO,EAAE4L,qBAAA,CAAUE,IALF;EAMjB5L,MAAM,EAAE0L,qBAAA,CAAUE,IAND;EAOjBtB,SAAS,EAAEoB,qBAAA,CAAUE,IAPJ;EAQjBnJ,KAAK,EAAEiJ,qBAAA,CAAUE,IAAV,CAAeC,UARL;EASjBpL,KAAK,EAAEqL,0BAAA,CAAWrL,KAAX,CAAiBoL,UATP;EAUjBzL,YAAY,EAAEsL,qBAAA,CAAUvF,MAVP;EAWjBN,eAAe,EAAE6F,qBAAA,CAAUK,MAXV;EAYjBxD,KAAK,EAAEmD,qBAAA,CAAUM,SAAV,CAAoB,CAACN,qBAAA,CAAUO,MAAX,EAAmBP,qBAAA,CAAUK,MAA7B,CAApB,CAZU;EAajBjC,MAAM,EAAE4B,qBAAA,CAAUM,SAAV,CAAoB,CAACN,qBAAA,CAAUO,MAAX,EAAmBP,qBAAA,CAAUK,MAA7B,CAApB,CAbS;EAcjBlC,SAAS,EAAE6B,qBAAA,CAAUM,SAAV,CAAoB,CAACN,qBAAA,CAAUO,MAAX,EAAmBP,qBAAA,CAAUK,MAA7B,CAApB,CAdM;EAejBhC,SAAS,EAAE2B,qBAAA,CAAUM,SAAV,CAAoB,CAACN,qBAAA,CAAUO,MAAX,EAAmBP,qBAAA,CAAUK,MAA7B,CAApB,CAfM;EAgBjB3B,OAAO,EAAEsB,qBAAA,CAAUvF,MAAV,CAAiB0F,UAhBT;EAiBjB1B,cAAc,EAAEuB,qBAAA,CAAUC,IAjBT;EAkBjB1B,QAAQ,EAAEyB,qBAAA,CAAUC,IAlBH;EAmBjBzB,UAAU,EAAEwB,qBAAA,CAAUC,IAnBL;EAoBjBtK,QAAQ,EAAEqK,qBAAA,CAAUC,IApBH;EAqBjB1K,gBAAgB,EAAEyK,qBAAA,CAAUC,IArBX;EAsBjBxK,gBAAgB,EAAEuK,qBAAA,CAAUC,IAtBX;EAuBjBtB,WAAW,EAAEqB,qBAAA,CAAUQ,GAvBN;EAwBjB9D,WAAW,EAAEsD,qBAAA,CAAUO,MAxBN;EAyBjB1M,iBAAiB,EAAEmM,qBAAA,CAAUS,KAAV,CAAgB;IACjChK,IAAI,EAAEuJ,qBAAA,CAAUU,KAAV,CAAgB,CACpB,+BADoB,EAEpB,iBAFoB,EAGpB,mBAHoB,CAAhB,CAD2B;IAMjCvN,OAAO,EAAE6M,qBAAA,CAAUvF,MANc;IAOjCrH,eAAe,EAAE4M,qBAAA,CAAUE,IAPM;IAQjC7M,kBAAkB,EAAE2M,qBAAA,CAAUE;EARG,CAAhB,CAzBF;EAmCjBrJ,uBAAuB,EAAEmJ,qBAAA,CAAUW,OAAV,CACvBX,qBAAA,CAAUS,KAAV,CAAgB;IACdlN,QAAQ,EAAEyM,qBAAA,CAAUO,MADN;IAEdK,aAAa,EAAEZ,qBAAA,CAAUO,MAFX;IAGdM,UAAU,EAAEb,qBAAA,CAAUW,OAAV,CAAkBX,qBAAA,CAAUW,OAAV,CAAkBX,qBAAA,CAAUO,MAA5B,CAAlB;EAHE,CAAhB,CADuB,CAnCR;EA0CjB9M,WAAW,EAAEuM,qBAAA,CAAUS,KAAV,CAAgB;IAC3B5N,QAAQ,EAAEmN,qBAAA,CAAUU,KAAV,CAAgB,CAAC,QAAD,EAAW,KAAX,CAAhB,CADiB;IAE3B5N,SAAS,EAAEkN,qBAAA,CAAUU,KAAV,CAAgB,CAAC,MAAD,EAAS,OAAT,CAAhB,CAFgB;IAG3B3N,aAAa,EAAEiN,qBAAA,CAAUC,IAHE;IAI3BjN,QAAQ,EAAEgN,qBAAA,CAAUC,IAJO;IAK3BhN,MAAM,EAAE+M,qBAAA,CAAUO;EALS,CAAhB,CA1CI;EAiDjBvM,aAAa,EAAEgM,qBAAA,CAAUW,OAAV,CAAkB,UAAAG,MAAM,EAAI;IACzC,IAAMC,QAAQ,GAAGD,MAAM,CAACE,KAAP,CAAa,UAAA5G,CAAC;MAAA,OAAI6G,oBAAA,CAAYC,QAAZ,CAAqB9G,CAArB,CAAJ;IAAA,CAAd,CAAjB;IAEA,OACE,CAAC2G,QAAD,IACA,IAAII,KAAJ,2BAA6BL,MAA7B,sCAA+DG,oBAAA,CAAYG,IAAZ,CAAiB,GAAjB,CAA/D,OAFF;EAID,CAPc,CAjDE;EAyDjBxI,SAAS,EAAEoH,qBAAA,CAAUO,MAzDJ;EA0DjBnL,aAAa,EAAE4K,qBAAA,CAAUK,MA1DR;EA2DjBhL,cAAc,EAAE2K,qBAAA,CAAUK;AA3DT,C;iCADR3M,M,kBA+DW;EACpB6B,gBAAgB,EAAE,IADE;EAEpBnB,OAAO,EAAE,mBAAM,CAAE,CAFG;EAGpBE,MAAM,EAAE,kBAAM,CAAE,CAHI;EAIpBsK,SAAS,EAAE,qBAAM,CAAE,CAJC;EAKpBnL,WAAW,EAAEb,kBALO;EAMpBiB,iBAAiB,EAAEX,wBANC;EAOpB2D,uBAAuB,EAAEvD;AAPL,C;AA+oBxB,IAAM+N,MAAM,GAAG;EACbpC,MAAM,EAAE;IACNqC,eAAe,EAAE;EADX,CADK;EAIbjC,WAAW,EAAE;IACXkC,UAAU,EAAE,oBADD;IAGX,WAAW;MACTC,WAAW,EAAE,OADJ;MAET3E,KAAK,EAAE,MAFE;MAGT4E,cAAc,EAAE,UAHP;MAITC,KAAK,EAAEA,eAAA,CAAMxL,IAAN,EAJE;MAKToL,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;EA6Bb7C,YAAY,EAAE;IACZ8C,SAAS,EAAE;EADC,CA7BD;EAgCbtC,SAAS,EAAE;IACTmC,OAAO,EAAE;EADA;AAhCE,CAAf;;eAqCe,IAAAI,kBAAA,EAAWZ,MAAX,EAAmB3N,MAAnB,C"}
|
|
@@ -15,7 +15,7 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
15
15
|
|
|
16
16
|
var _styles = require("@material-ui/core/styles");
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _Popper = _interopRequireDefault(require("@material-ui/core/Popper"));
|
|
19
19
|
|
|
20
20
|
var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
|
|
21
21
|
|
|
@@ -24,6 +24,8 @@ var _excluded = ["classes", "children"];
|
|
|
24
24
|
var styles = function styles() {
|
|
25
25
|
return {
|
|
26
26
|
popover: {
|
|
27
|
+
background: '#fff',
|
|
28
|
+
padding: '10px',
|
|
27
29
|
pointerEvents: 'none',
|
|
28
30
|
zIndex: 99999
|
|
29
31
|
},
|
|
@@ -39,11 +41,11 @@ var styles = function styles() {
|
|
|
39
41
|
};
|
|
40
42
|
};
|
|
41
43
|
|
|
42
|
-
var
|
|
44
|
+
var CustomPopper = (0, _styles.withStyles)(styles)(function (_ref) {
|
|
43
45
|
var classes = _ref.classes,
|
|
44
46
|
children = _ref.children,
|
|
45
47
|
props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
|
|
46
|
-
return /*#__PURE__*/_react["default"].createElement(
|
|
48
|
+
return /*#__PURE__*/_react["default"].createElement(_Popper["default"], (0, _extends2["default"])({
|
|
47
49
|
id: "mouse-over-popover",
|
|
48
50
|
open: true,
|
|
49
51
|
className: classes.popover,
|
|
@@ -58,13 +60,14 @@ var CustomPopOver = (0, _styles.withStyles)(styles)(function (_ref) {
|
|
|
58
60
|
vertical: 'top',
|
|
59
61
|
horizontal: 'left'
|
|
60
62
|
},
|
|
61
|
-
disableRestoreFocus: true
|
|
63
|
+
disableRestoreFocus: true,
|
|
64
|
+
disableAutoFocus: true
|
|
62
65
|
}, props), /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
63
66
|
classes: {
|
|
64
67
|
root: classes.typography
|
|
65
68
|
}
|
|
66
69
|
}, children));
|
|
67
70
|
});
|
|
68
|
-
var _default =
|
|
71
|
+
var _default = CustomPopper;
|
|
69
72
|
exports["default"] = _default;
|
|
70
|
-
//# sourceMappingURL=custom-
|
|
73
|
+
//# sourceMappingURL=custom-popper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-popper.js","names":["styles","popover","background","padding","pointerEvents","zIndex","paper","height","width","typography","fontSize","textAlign","CustomPopper","withStyles","classes","children","props","vertical","horizontal","root"],"sources":["../../../src/plugins/characters/custom-popper.js"],"sourcesContent":["import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport Popper from '@material-ui/core/Popper';\nimport Typography from '@material-ui/core/Typography';\n\nconst styles = () => ({\n popover: {\n background: '#fff',\n padding: '10px',\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 CustomPopper = withStyles(styles)(({ classes, children, ...props }) => (\n <Popper\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 disableAutoFocus\n {...props}\n >\n <Typography classes={{ root: classes.typography }}>{children}</Typography>\n </Popper>\n));\n\nexport default CustomPopper;\n"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS;EAAA,OAAO;IACpBC,OAAO,EAAE;MACPC,UAAU,EAAE,MADL;MAEPC,OAAO,EAAE,MAFF;MAGPC,aAAa,EAAE,MAHR;MAIPC,MAAM,EAAE;IAJD,CADW;IAOpBC,KAAK,EAAE;MACLH,OAAO,EAAE,EADJ;MAELI,MAAM,EAAE,MAFH;MAGLC,KAAK,EAAE;IAHF,CAPa;IAYpBC,UAAU,EAAE;MACVC,QAAQ,EAAE,EADA;MAEVC,SAAS,EAAE;IAFD;EAZQ,CAAP;AAAA,CAAf;;AAkBA,IAAMC,YAAY,GAAG,IAAAC,kBAAA,EAAWb,MAAX,EAAmB;EAAA,IAAGc,OAAH,QAAGA,OAAH;EAAA,IAAYC,QAAZ,QAAYA,QAAZ;EAAA,IAAyBC,KAAzB;EAAA,oBACtC,gCAAC,kBAAD;IACE,EAAE,EAAC,oBADL;IAEE,IAAI,MAFN;IAGE,SAAS,EAAEF,OAAO,CAACb,OAHrB;IAIE,OAAO,EAAE;MACPK,KAAK,EAAEQ,OAAO,CAACR;IADR,CAJX;IAOE,YAAY,EAAE;MACZW,QAAQ,EAAE,QADE;MAEZC,UAAU,EAAE;IAFA,CAPhB;IAWE,eAAe,EAAE;MACfD,QAAQ,EAAE,KADK;MAEfC,UAAU,EAAE;IAFG,CAXnB;IAeE,mBAAmB,MAfrB;IAgBE,gBAAgB;EAhBlB,GAiBMF,KAjBN,gBAmBE,gCAAC,sBAAD;IAAY,OAAO,EAAE;MAAEG,IAAI,EAAEL,OAAO,CAACL;IAAhB;EAArB,GAAoDM,QAApD,CAnBF,CADsC;AAAA,CAAnB,CAArB;eAwBeH,Y"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = CharactersPlugin;
|
|
9
|
+
exports.removeDialogs = void 0;
|
|
9
10
|
|
|
10
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
12
|
|
|
@@ -21,7 +22,7 @@ var _get = _interopRequireDefault(require("lodash/get"));
|
|
|
21
22
|
|
|
22
23
|
var _mathToolbar = require("@pie-lib/math-toolbar");
|
|
23
24
|
|
|
24
|
-
var
|
|
25
|
+
var _customPopper = _interopRequireDefault(require("./custom-popper"));
|
|
25
26
|
|
|
26
27
|
var _utils = require("../respArea/utils");
|
|
27
28
|
|
|
@@ -33,32 +34,34 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
33
34
|
|
|
34
35
|
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:characters');
|
|
35
36
|
|
|
37
|
+
var removePopOvers = function removePopOvers() {
|
|
38
|
+
var prevPopOvers = document.querySelectorAll('#mouse-over-popover');
|
|
39
|
+
log('[characters:removePopOvers]');
|
|
40
|
+
prevPopOvers.forEach(function (s) {
|
|
41
|
+
return s.remove();
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
|
|
36
45
|
var removeDialogs = function removeDialogs() {
|
|
37
46
|
var prevDialogs = document.querySelectorAll('.insert-character-dialog');
|
|
38
47
|
log('[characters:removeDialogs]');
|
|
39
48
|
prevDialogs.forEach(function (s) {
|
|
40
49
|
return s.remove();
|
|
41
50
|
});
|
|
51
|
+
removePopOvers();
|
|
42
52
|
};
|
|
43
53
|
|
|
44
|
-
|
|
45
|
-
var prevPopOvers = document.querySelectorAll('#mouse-over-popover');
|
|
46
|
-
log('[characters:removePopOvers]');
|
|
47
|
-
prevPopOvers.forEach(function (s) {
|
|
48
|
-
return s.remove();
|
|
49
|
-
});
|
|
50
|
-
};
|
|
54
|
+
exports.removeDialogs = removeDialogs;
|
|
51
55
|
|
|
52
56
|
var insertDialog = function insertDialog(_ref) {
|
|
53
|
-
var
|
|
57
|
+
var editorDOM = _ref.editorDOM,
|
|
58
|
+
value = _ref.value,
|
|
54
59
|
callback = _ref.callback,
|
|
55
60
|
opts = _ref.opts;
|
|
56
61
|
var newEl = document.createElement('div');
|
|
57
|
-
var initialBodyOverflow = document.body.style.overflow;
|
|
58
62
|
log('[characters:insertDialog]');
|
|
59
63
|
removeDialogs();
|
|
60
64
|
newEl.className = 'insert-character-dialog';
|
|
61
|
-
document.body.style.overflow = 'hidden';
|
|
62
65
|
var configToUse;
|
|
63
66
|
|
|
64
67
|
switch (true) {
|
|
@@ -111,7 +114,7 @@ var insertDialog = function insertDialog(_ref) {
|
|
|
111
114
|
closePopOver();
|
|
112
115
|
popoverEl = document.createElement('div');
|
|
113
116
|
|
|
114
|
-
_reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(
|
|
117
|
+
_reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_customPopper["default"], {
|
|
115
118
|
onClose: closePopOver,
|
|
116
119
|
anchorEl: event.currentTarget
|
|
117
120
|
}, /*#__PURE__*/_react["default"].createElement("div", null, el.label), /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -123,20 +126,34 @@ var insertDialog = function insertDialog(_ref) {
|
|
|
123
126
|
document.body.appendChild(newEl);
|
|
124
127
|
};
|
|
125
128
|
|
|
129
|
+
var firstCallMade = false;
|
|
130
|
+
|
|
131
|
+
var listener = function listener(e) {
|
|
132
|
+
// this will be triggered right after setting it because
|
|
133
|
+
// this toolbar is added on the mousedown event
|
|
134
|
+
// so right after mouseup, the click will be triggered
|
|
135
|
+
if (firstCallMade) {
|
|
136
|
+
var focusIsInModals = newEl.contains(e.target) || popoverEl && popoverEl.contains(e.target);
|
|
137
|
+
var focusIsInEditor = editorDOM.contains(e.target);
|
|
138
|
+
|
|
139
|
+
if (!(focusIsInModals || focusIsInEditor)) {
|
|
140
|
+
handleClose();
|
|
141
|
+
}
|
|
142
|
+
} else {
|
|
143
|
+
firstCallMade = true;
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
|
|
126
147
|
var handleClose = function handleClose() {
|
|
148
|
+
callback(undefined, true);
|
|
127
149
|
newEl.remove();
|
|
128
150
|
closePopOver();
|
|
129
|
-
document.body.
|
|
130
|
-
callback(undefined, true);
|
|
151
|
+
document.body.removeEventListener('click', listener);
|
|
131
152
|
};
|
|
132
153
|
|
|
133
154
|
var handleChange = function handleChange(val) {
|
|
134
155
|
if (typeof val === 'string') {
|
|
135
|
-
callback(val);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
if (configToUse.autoClose) {
|
|
139
|
-
handleClose();
|
|
156
|
+
callback(val, true);
|
|
140
157
|
}
|
|
141
158
|
};
|
|
142
159
|
|
|
@@ -179,29 +196,29 @@ var insertDialog = function insertDialog(_ref) {
|
|
|
179
196
|
var cursorItem = document.querySelector("[data-key=\"".concat(value.anchorKey, "\"]"));
|
|
180
197
|
|
|
181
198
|
if (cursorItem) {
|
|
199
|
+
var bodyRect = document.body.getBoundingClientRect();
|
|
182
200
|
var boundRect = cursorItem.getBoundingClientRect();
|
|
183
201
|
document.body.appendChild(newEl);
|
|
184
|
-
newEl.style.position = '
|
|
185
|
-
newEl.style.top = "".concat(boundRect.top - newEl.offsetHeight - 10, "px");
|
|
186
|
-
newEl.style.left = "".concat(boundRect.left + cursorItem.offsetWidth + 10, "px");
|
|
202
|
+
newEl.style.position = 'absolute';
|
|
203
|
+
newEl.style.top = "".concat(boundRect.top + Math.abs(bodyRect.top) - newEl.offsetHeight - 10, "px");
|
|
187
204
|
newEl.style.zIndex = 99999;
|
|
188
|
-
var
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
if (configToUse.autoClose) {
|
|
203
|
-
document.body.addEventListener('click', listener);
|
|
205
|
+
var leftValue = "".concat(boundRect.left + Math.abs(bodyRect.left) + cursorItem.offsetWidth + 10, "px");
|
|
206
|
+
var rightValue = "".concat(boundRect.x, "px");
|
|
207
|
+
newEl.style.left = leftValue;
|
|
208
|
+
var leftAlignedWidth = newEl.offsetWidth;
|
|
209
|
+
newEl.style.left = 'unset';
|
|
210
|
+
newEl.style.right = rightValue;
|
|
211
|
+
var rightAlignedWidth = newEl.offsetWidth;
|
|
212
|
+
newEl.style.left = 'unset';
|
|
213
|
+
newEl.style.right = 'unset';
|
|
214
|
+
|
|
215
|
+
if (leftAlignedWidth >= rightAlignedWidth) {
|
|
216
|
+
newEl.style.left = leftValue;
|
|
217
|
+
} else {
|
|
218
|
+
newEl.style.right = rightValue;
|
|
204
219
|
}
|
|
220
|
+
|
|
221
|
+
document.body.addEventListener('click', listener);
|
|
205
222
|
}
|
|
206
223
|
});
|
|
207
224
|
};
|
|
@@ -219,15 +236,18 @@ var CharacterIcon = function CharacterIcon(_ref2) {
|
|
|
219
236
|
function CharactersPlugin(opts) {
|
|
220
237
|
removeDialogs();
|
|
221
238
|
return {
|
|
222
|
-
name: '
|
|
239
|
+
name: 'characters',
|
|
223
240
|
toolbar: {
|
|
224
241
|
icon: /*#__PURE__*/_react["default"].createElement(CharacterIcon, {
|
|
225
242
|
letter: opts.characterIcon || _utils2.characterIcons[opts.language] || 'ñ'
|
|
226
243
|
}),
|
|
227
|
-
onClick: function onClick(value, onChange) {
|
|
244
|
+
onClick: function onClick(value, onChange, getFocusedValue) {
|
|
245
|
+
var editorDOM = document.querySelector("[data-key=\"".concat(value.document.key, "\"]"));
|
|
228
246
|
var valueToUse = value;
|
|
229
247
|
|
|
230
248
|
var callback = function callback(_char, focus) {
|
|
249
|
+
valueToUse = getFocusedValue();
|
|
250
|
+
|
|
231
251
|
if (_char) {
|
|
232
252
|
var change = valueToUse.change().insertTextByKey(valueToUse.anchorKey, valueToUse.anchorOffset, _char);
|
|
233
253
|
valueToUse = change.value;
|
|
@@ -238,8 +258,6 @@ function CharactersPlugin(opts) {
|
|
|
238
258
|
log('[characters:click]');
|
|
239
259
|
|
|
240
260
|
if (focus) {
|
|
241
|
-
var editorDOM = document.querySelector("[data-key=\"".concat(valueToUse.document.key, "\"]"));
|
|
242
|
-
|
|
243
261
|
if (editorDOM) {
|
|
244
262
|
editorDOM.focus();
|
|
245
263
|
}
|
|
@@ -247,6 +265,7 @@ function CharactersPlugin(opts) {
|
|
|
247
265
|
};
|
|
248
266
|
|
|
249
267
|
insertDialog({
|
|
268
|
+
editorDOM: editorDOM,
|
|
250
269
|
value: valueToUse,
|
|
251
270
|
callback: callback,
|
|
252
271
|
opts: opts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["log","debug","removeDialogs","prevDialogs","document","querySelectorAll","forEach","s","remove","removePopOvers","prevPopOvers","insertDialog","value","callback","opts","newEl","createElement","initialBodyOverflow","body","style","overflow","className","configToUse","language","spanishConfig","specialConfig","characters","insertSnackBar","layoutForCharacters","reduce","obj","arr","length","columns","rows","popoverEl","closePopOver","renderPopOver","event","el","infoStyle","fontSize","lineHeight","ReactDOM","render","currentTarget","label","description","unicode","appendChild","handleClose","undefined","handleChange","val","autoClose","n","map","k","name","get","write","category","extraClass","extraProps","border","hasPreview","actions","onMouseEnter","ev","onMouseLeave","cursorItem","querySelector","anchorKey","boundRect","getBoundingClientRect","position","top","offsetHeight","left","offsetWidth","zIndex","firstCallMade","listener","removeEventListener","addEventListener","CharacterIcon","letter","CharactersPlugin","toolbar","icon","characterIcon","characterIcons","onClick","onChange","valueToUse","char","focus","change","insertTextByKey","anchorOffset","editorDOM","key","pluginStyles","node","parentNode","p"],"sources":["../../../src/plugins/characters/index.jsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debug from 'debug';\nimport get from 'lodash/get';\n\nimport { PureToolbar } from '@pie-lib/math-toolbar';\n\nimport CustomPopOver from './custom-popover';\nimport { insertSnackBar } from '../respArea/utils';\nimport { characterIcons, spanishConfig, specialConfig } from './utils';\nconst log = debug('@pie-lib:editable-html:plugins:characters');\n\nconst removeDialogs = () => {\n const prevDialogs = document.querySelectorAll('.insert-character-dialog');\n\n log('[characters:removeDialogs]');\n prevDialogs.forEach(s => s.remove());\n};\n\nconst removePopOvers = () => {\n const prevPopOvers = document.querySelectorAll('#mouse-over-popover');\n\n log('[characters:removePopOvers]');\n prevPopOvers.forEach(s => s.remove());\n};\n\nconst insertDialog = ({ value, callback, opts }) => {\n const newEl = document.createElement('div');\n const initialBodyOverflow = document.body.style.overflow;\n\n log('[characters:insertDialog]');\n\n removeDialogs();\n\n newEl.className = 'insert-character-dialog';\n document.body.style.overflow = 'hidden';\n\n let configToUse;\n\n switch (true) {\n case opts.language === 'spanish':\n configToUse = spanishConfig;\n break;\n case opts.language === 'special':\n configToUse = specialConfig;\n break;\n default:\n configToUse = opts;\n }\n\n if (!configToUse.characters) {\n insertSnackBar('No characters provided or language not recognized');\n return;\n }\n\n const layoutForCharacters = configToUse.characters.reduce(\n (obj, arr) => {\n if (arr.length >= obj.columns) {\n obj.columns = arr.length;\n }\n\n return obj;\n },\n { rows: configToUse.characters.length, columns: 0 }\n );\n\n let popoverEl;\n\n const closePopOver = () => {\n if (popoverEl) {\n popoverEl.remove();\n }\n\n removePopOvers();\n };\n\n const renderPopOver = (event, el) => {\n if (!event) {\n return;\n }\n\n const infoStyle = { fontSize: '20px', lineHeight: '20px' };\n\n closePopOver();\n\n popoverEl = document.createElement('div');\n ReactDOM.render(\n <CustomPopOver onClose={closePopOver} anchorEl={event.currentTarget}>\n <div>{el.label}</div>\n\n <div style={infoStyle}>{el.description}</div>\n\n <div style={infoStyle}>{el.unicode}</div>\n </CustomPopOver>,\n popoverEl\n );\n\n document.body.appendChild(newEl);\n };\n\n const handleClose = () => {\n newEl.remove();\n closePopOver();\n document.body.style.overflow = initialBodyOverflow;\n callback(undefined, true);\n };\n\n const handleChange = val => {\n if (typeof val === 'string') {\n callback(val);\n }\n\n if (configToUse.autoClose) {\n handleClose();\n }\n };\n\n const el = (\n <PureToolbar\n autoFocus\n noDecimal\n hideInput\n noLatexHandling\n layoutForKeyPad={layoutForCharacters}\n additionalKeys={configToUse.characters.reduce((arr, n) => {\n arr = [\n ...arr,\n ...n.map(k => ({\n name: get(k, 'name') || k,\n write: get(k, 'write') || k,\n label: get(k, 'label') || k,\n category: 'character',\n extraClass: 'character',\n extraProps: {\n ...(k.extraProps || {}),\n style: {\n ...(k.extraProps || {}).style,\n border: '1px solid #000'\n }\n },\n ...(configToUse.hasPreview\n ? {\n actions: { onMouseEnter: ev => renderPopOver(ev, k), onMouseLeave: closePopOver }\n }\n : {})\n }))\n ];\n\n return arr;\n }, [])}\n keypadMode=\"language\"\n onChange={handleChange}\n onDone={handleClose}\n />\n );\n\n ReactDOM.render(el, newEl, () => {\n const cursorItem = document.querySelector(`[data-key=\"${value.anchorKey}\"]`);\n\n if (cursorItem) {\n const boundRect = cursorItem.getBoundingClientRect();\n\n document.body.appendChild(newEl);\n newEl.style.position = 'fixed';\n newEl.style.top = `${boundRect.top - newEl.offsetHeight - 10}px`;\n newEl.style.left = `${boundRect.left + cursorItem.offsetWidth + 10}px`;\n newEl.style.zIndex = 99999;\n\n let firstCallMade = false;\n\n const listener = () => {\n // this will be triggered right after setting it because\n // this toolbar is added on the mousedown event\n // so right after mouseup, the click will be triggered\n if (firstCallMade) {\n document.body.removeEventListener('click', listener);\n handleClose();\n } else {\n firstCallMade = true;\n }\n };\n\n if (configToUse.autoClose) {\n document.body.addEventListener('click', listener);\n }\n }\n });\n};\n\nconst CharacterIcon = ({ letter }) => (\n <div\n style={{\n fontSize: '25px',\n lineHeight: '15px'\n }}\n >\n {letter}\n </div>\n);\n\nexport default function CharactersPlugin(opts) {\n removeDialogs();\n return {\n name: 'math',\n toolbar: {\n icon: <CharacterIcon letter={opts.characterIcon || characterIcons[opts.language] || 'ñ'} />,\n onClick: (value, onChange) => {\n let valueToUse = value;\n const callback = (char, focus) => {\n if (char) {\n const change = valueToUse\n .change()\n .insertTextByKey(valueToUse.anchorKey, valueToUse.anchorOffset, char);\n\n valueToUse = change.value;\n log('[characters:insert]: ', value);\n onChange(change);\n }\n\n log('[characters:click]');\n\n if (focus) {\n const editorDOM = document.querySelector(`[data-key=\"${valueToUse.document.key}\"]`);\n\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n };\n\n insertDialog({ value: valueToUse, callback, opts });\n }\n },\n\n pluginStyles: (node, parentNode, p) => {\n if (p) {\n return {\n position: 'absolute',\n top: 'initial'\n };\n }\n }\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["log","debug","removePopOvers","prevPopOvers","document","querySelectorAll","forEach","s","remove","removeDialogs","prevDialogs","insertDialog","editorDOM","value","callback","opts","newEl","createElement","className","configToUse","language","spanishConfig","specialConfig","characters","insertSnackBar","layoutForCharacters","reduce","obj","arr","length","columns","rows","popoverEl","closePopOver","renderPopOver","event","el","infoStyle","fontSize","lineHeight","ReactDOM","render","currentTarget","label","description","unicode","body","appendChild","firstCallMade","listener","e","focusIsInModals","contains","target","focusIsInEditor","handleClose","undefined","removeEventListener","handleChange","val","n","map","k","name","get","write","category","extraClass","extraProps","style","border","hasPreview","actions","onMouseEnter","ev","onMouseLeave","cursorItem","querySelector","anchorKey","bodyRect","getBoundingClientRect","boundRect","position","top","Math","abs","offsetHeight","zIndex","leftValue","left","offsetWidth","rightValue","x","leftAlignedWidth","right","rightAlignedWidth","addEventListener","CharacterIcon","letter","CharactersPlugin","toolbar","icon","characterIcon","characterIcons","onClick","onChange","getFocusedValue","key","valueToUse","char","focus","change","insertTextByKey","anchorOffset","pluginStyles","node","parentNode","p"],"sources":["../../../src/plugins/characters/index.jsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debug from 'debug';\nimport get from 'lodash/get';\n\nimport { PureToolbar } from '@pie-lib/math-toolbar';\n\nimport CustomPopper from './custom-popper';\nimport { insertSnackBar } from '../respArea/utils';\nimport { characterIcons, spanishConfig, specialConfig } from './utils';\nconst log = debug('@pie-lib:editable-html:plugins:characters');\n\nconst removePopOvers = () => {\n const prevPopOvers = document.querySelectorAll('#mouse-over-popover');\n\n log('[characters:removePopOvers]');\n prevPopOvers.forEach(s => s.remove());\n};\n\nexport const removeDialogs = () => {\n const prevDialogs = document.querySelectorAll('.insert-character-dialog');\n\n log('[characters:removeDialogs]');\n prevDialogs.forEach(s => s.remove());\n removePopOvers();\n};\n\nconst insertDialog = ({ editorDOM, value, callback, opts }) => {\n const newEl = document.createElement('div');\n\n log('[characters:insertDialog]');\n\n removeDialogs();\n\n newEl.className = 'insert-character-dialog';\n\n let configToUse;\n\n switch (true) {\n case opts.language === 'spanish':\n configToUse = spanishConfig;\n break;\n case opts.language === 'special':\n configToUse = specialConfig;\n break;\n default:\n configToUse = opts;\n }\n\n if (!configToUse.characters) {\n insertSnackBar('No characters provided or language not recognized');\n return;\n }\n\n const layoutForCharacters = configToUse.characters.reduce(\n (obj, arr) => {\n if (arr.length >= obj.columns) {\n obj.columns = arr.length;\n }\n\n return obj;\n },\n { rows: configToUse.characters.length, columns: 0 }\n );\n\n let popoverEl;\n\n const closePopOver = () => {\n if (popoverEl) {\n popoverEl.remove();\n }\n\n removePopOvers();\n };\n\n const renderPopOver = (event, el) => {\n if (!event) {\n return;\n }\n\n const infoStyle = { fontSize: '20px', lineHeight: '20px' };\n\n closePopOver();\n\n popoverEl = document.createElement('div');\n ReactDOM.render(\n <CustomPopper onClose={closePopOver} anchorEl={event.currentTarget}>\n <div>{el.label}</div>\n\n <div style={infoStyle}>{el.description}</div>\n\n <div style={infoStyle}>{el.unicode}</div>\n </CustomPopper>,\n popoverEl\n );\n\n document.body.appendChild(newEl);\n };\n\n let firstCallMade = false;\n\n const listener = e => {\n // this will be triggered right after setting it because\n // this toolbar is added on the mousedown event\n // so right after mouseup, the click will be triggered\n if (firstCallMade) {\n const focusIsInModals =\n newEl.contains(e.target) || (popoverEl && popoverEl.contains(e.target));\n const focusIsInEditor = editorDOM.contains(e.target);\n\n if (!(focusIsInModals || focusIsInEditor)) {\n handleClose();\n }\n } else {\n firstCallMade = true;\n }\n };\n\n const handleClose = () => {\n callback(undefined, true);\n newEl.remove();\n closePopOver();\n document.body.removeEventListener('click', listener);\n };\n\n const handleChange = val => {\n if (typeof val === 'string') {\n callback(val, true);\n }\n };\n\n const el = (\n <PureToolbar\n autoFocus\n noDecimal\n hideInput\n noLatexHandling\n layoutForKeyPad={layoutForCharacters}\n additionalKeys={configToUse.characters.reduce((arr, n) => {\n arr = [\n ...arr,\n ...n.map(k => ({\n name: get(k, 'name') || k,\n write: get(k, 'write') || k,\n label: get(k, 'label') || k,\n category: 'character',\n extraClass: 'character',\n extraProps: {\n ...(k.extraProps || {}),\n style: {\n ...(k.extraProps || {}).style,\n border: '1px solid #000'\n }\n },\n ...(configToUse.hasPreview\n ? {\n actions: { onMouseEnter: ev => renderPopOver(ev, k), onMouseLeave: closePopOver }\n }\n : {})\n }))\n ];\n\n return arr;\n }, [])}\n keypadMode=\"language\"\n onChange={handleChange}\n onDone={handleClose}\n />\n );\n\n ReactDOM.render(el, newEl, () => {\n const cursorItem = document.querySelector(`[data-key=\"${value.anchorKey}\"]`);\n\n if (cursorItem) {\n const bodyRect = document.body.getBoundingClientRect();\n const boundRect = cursorItem.getBoundingClientRect();\n\n document.body.appendChild(newEl);\n newEl.style.position = 'absolute';\n newEl.style.top = `${boundRect.top + Math.abs(bodyRect.top) - newEl.offsetHeight - 10}px`;\n newEl.style.zIndex = 99999;\n\n const leftValue = `${boundRect.left +\n Math.abs(bodyRect.left) +\n cursorItem.offsetWidth +\n 10}px`;\n\n const rightValue = `${boundRect.x}px`;\n\n newEl.style.left = leftValue;\n\n const leftAlignedWidth = newEl.offsetWidth;\n\n newEl.style.left = 'unset';\n newEl.style.right = rightValue;\n\n const rightAlignedWidth = newEl.offsetWidth;\n\n newEl.style.left = 'unset';\n newEl.style.right = 'unset';\n\n if (leftAlignedWidth >= rightAlignedWidth) {\n newEl.style.left = leftValue;\n } else {\n newEl.style.right = rightValue;\n }\n\n document.body.addEventListener('click', listener);\n }\n });\n};\n\nconst CharacterIcon = ({ letter }) => (\n <div\n style={{\n fontSize: '25px',\n lineHeight: '15px'\n }}\n >\n {letter}\n </div>\n);\n\nexport default function CharactersPlugin(opts) {\n removeDialogs();\n return {\n name: 'characters',\n toolbar: {\n icon: <CharacterIcon letter={opts.characterIcon || characterIcons[opts.language] || 'ñ'} />,\n onClick: (value, onChange, getFocusedValue) => {\n const editorDOM = document.querySelector(`[data-key=\"${value.document.key}\"]`);\n let valueToUse = value;\n const callback = (char, focus) => {\n valueToUse = getFocusedValue();\n\n if (char) {\n const change = valueToUse\n .change()\n .insertTextByKey(valueToUse.anchorKey, valueToUse.anchorOffset, char);\n\n valueToUse = change.value;\n log('[characters:insert]: ', value);\n onChange(change);\n }\n\n log('[characters:click]');\n\n if (focus) {\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n };\n\n insertDialog({ editorDOM, value: valueToUse, callback, opts });\n }\n },\n\n pluginStyles: (node, parentNode, p) => {\n if (p) {\n return {\n position: 'absolute',\n top: 'initial'\n };\n }\n }\n };\n}\n"],"mappings":"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"}
|