@pie-lib/editable-html 7.17.4-next.549 → 7.17.4-next.556
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 +6 -1
- package/lib/editor.js.map +1 -1
- package/lib/plugins/media/index.js +47 -4
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +212 -25
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/package.json +2 -2
- package/src/editor.jsx +6 -1
- package/src/plugins/media/index.jsx +46 -6
- package/src/plugins/media/media-dialog.js +261 -89
package/lib/editor.js
CHANGED
|
@@ -203,7 +203,8 @@ var Editor = /*#__PURE__*/function (_React$Component) {
|
|
|
203
203
|
createChange: function createChange() {
|
|
204
204
|
return _this.state.value.change();
|
|
205
205
|
},
|
|
206
|
-
onChange: _this.onChange
|
|
206
|
+
onChange: _this.onChange,
|
|
207
|
+
uploadSoundSupport: props.uploadSoundSupport
|
|
207
208
|
}
|
|
208
209
|
});
|
|
209
210
|
});
|
|
@@ -839,6 +840,10 @@ exports.Editor = Editor;
|
|
|
839
840
|
focus: _propTypes["default"].func.isRequired,
|
|
840
841
|
value: _slatePropTypes["default"].value.isRequired,
|
|
841
842
|
imageSupport: _propTypes["default"].object,
|
|
843
|
+
uploadSoundSupport: _propTypes["default"].shape({
|
|
844
|
+
add: _propTypes["default"].func,
|
|
845
|
+
"delete": _propTypes["default"].func
|
|
846
|
+
}),
|
|
842
847
|
charactersLimit: _propTypes["default"].number,
|
|
843
848
|
width: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
|
|
844
849
|
height: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
|
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","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","userSelect","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","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(\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 userSelect: '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":"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"}
|
|
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","uploadSoundSupport","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","userSelect","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","shape","number","oneOfType","string","any","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 uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func\n }),\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 uploadSoundSupport: props.uploadSoundSupport\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 userSelect: '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":"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"}
|
|
@@ -32,8 +32,8 @@ var _mediaToolbar = _interopRequireDefault(require("./media-toolbar"));
|
|
|
32
32
|
|
|
33
33
|
var _mediaWrapper = _interopRequireDefault(require("./media-wrapper"));
|
|
34
34
|
|
|
35
|
-
var _excluded = ["type", "callback"],
|
|
36
|
-
_excluded2 = ["src", "height", "width", "editing"];
|
|
35
|
+
var _excluded = ["type", "callback", "opts"],
|
|
36
|
+
_excluded2 = ["src", "height", "width", "editing", "tag"];
|
|
37
37
|
|
|
38
38
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
39
39
|
|
|
@@ -52,6 +52,7 @@ var insertDialog = function insertDialog(props) {
|
|
|
52
52
|
var newEl = document.createElement('div');
|
|
53
53
|
var type = props.type,
|
|
54
54
|
callback = props.callback,
|
|
55
|
+
opts = props.opts,
|
|
55
56
|
rest = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
|
56
57
|
var initialBodyOverflow = document.body.style.overflow;
|
|
57
58
|
removeDialogs();
|
|
@@ -65,6 +66,7 @@ var insertDialog = function insertDialog(props) {
|
|
|
65
66
|
};
|
|
66
67
|
|
|
67
68
|
var el = /*#__PURE__*/_react["default"].createElement(_mediaDialog["default"], (0, _extends2["default"])({}, rest, {
|
|
69
|
+
uploadSoundSupport: opts.uploadSoundSupport,
|
|
68
70
|
type: type,
|
|
69
71
|
disablePortal: true,
|
|
70
72
|
open: true,
|
|
@@ -104,6 +106,7 @@ function MediaPlugin(type, opts) {
|
|
|
104
106
|
onChange(change);
|
|
105
107
|
insertDialog({
|
|
106
108
|
type: type,
|
|
109
|
+
opts: opts,
|
|
107
110
|
callback: function callback(val, data) {
|
|
108
111
|
var nodeIsThere = change.value.document.findDescendant(function (d) {
|
|
109
112
|
return d.key === inline.key;
|
|
@@ -152,6 +155,7 @@ function MediaPlugin(type, opts) {
|
|
|
152
155
|
height = jsonData.height,
|
|
153
156
|
width = jsonData.width,
|
|
154
157
|
editing = jsonData.editing,
|
|
158
|
+
tag = jsonData.tag,
|
|
155
159
|
rest = (0, _objectWithoutProperties2["default"])(jsonData, _excluded2);
|
|
156
160
|
|
|
157
161
|
var handleEdit = function handleEdit() {
|
|
@@ -165,6 +169,7 @@ function MediaPlugin(type, opts) {
|
|
|
165
169
|
insertDialog(_objectSpread(_objectSpread({}, jsonData), {}, {
|
|
166
170
|
edit: true,
|
|
167
171
|
type: type,
|
|
172
|
+
opts: opts,
|
|
168
173
|
callback: function callback(val, data) {
|
|
169
174
|
var key = node.key;
|
|
170
175
|
var nodeIsThere = change.value.document.findDescendant(function (d) {
|
|
@@ -204,6 +209,22 @@ function MediaPlugin(type, opts) {
|
|
|
204
209
|
style.height = "".concat(height, "px");
|
|
205
210
|
}
|
|
206
211
|
|
|
212
|
+
if (tag === 'audio') {
|
|
213
|
+
return /*#__PURE__*/_react["default"].createElement(_mediaWrapper["default"], (0, _extends2["default"])({
|
|
214
|
+
editor: true,
|
|
215
|
+
"data-type": type,
|
|
216
|
+
width: style.width
|
|
217
|
+
}, rest), /*#__PURE__*/_react["default"].createElement("audio", {
|
|
218
|
+
controls: "controls"
|
|
219
|
+
}, /*#__PURE__*/_react["default"].createElement("source", {
|
|
220
|
+
type: "audio/mp3",
|
|
221
|
+
src: src
|
|
222
|
+
})), /*#__PURE__*/_react["default"].createElement(_mediaToolbar["default"], {
|
|
223
|
+
onEdit: handleEdit,
|
|
224
|
+
onRemove: handleDelete
|
|
225
|
+
}));
|
|
226
|
+
}
|
|
227
|
+
|
|
207
228
|
return /*#__PURE__*/_react["default"].createElement(_mediaWrapper["default"], (0, _extends2["default"])({
|
|
208
229
|
editor: true,
|
|
209
230
|
"data-type": type,
|
|
@@ -257,8 +278,19 @@ var serialization = {
|
|
|
257
278
|
/*, next*/
|
|
258
279
|
) {
|
|
259
280
|
var type = el.dataset && el.dataset.type;
|
|
281
|
+
var tag = 'iframe';
|
|
282
|
+
var src;
|
|
260
283
|
var typeIndex = types.indexOf(type);
|
|
261
|
-
|
|
284
|
+
|
|
285
|
+
if (typeIndex < 0) {
|
|
286
|
+
if (el instanceof Element && el.tagName.toLowerCase() === 'audio') {
|
|
287
|
+
type = 'audio';
|
|
288
|
+
tag = 'audio';
|
|
289
|
+
src = el.firstChild.getAttribute('src');
|
|
290
|
+
} else {
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
262
294
|
|
|
263
295
|
var _ref = el.dataset || {},
|
|
264
296
|
ends = _ref.ends,
|
|
@@ -275,7 +307,8 @@ var serialization = {
|
|
|
275
307
|
type: type,
|
|
276
308
|
isVoid: true,
|
|
277
309
|
data: {
|
|
278
|
-
|
|
310
|
+
tag: tag,
|
|
311
|
+
src: src || el.getAttribute('src'),
|
|
279
312
|
editing: editing,
|
|
280
313
|
ends: ends,
|
|
281
314
|
height: height,
|
|
@@ -296,6 +329,7 @@ var serialization = {
|
|
|
296
329
|
var type = types[typeIndex];
|
|
297
330
|
var data = object.data;
|
|
298
331
|
var editing = data.get('editing');
|
|
332
|
+
var tag = data.get('tag');
|
|
299
333
|
var ends = data.get('ends');
|
|
300
334
|
var src = data.get('src');
|
|
301
335
|
var starts = data.get('starts');
|
|
@@ -325,6 +359,15 @@ var serialization = {
|
|
|
325
359
|
src: src
|
|
326
360
|
});
|
|
327
361
|
|
|
362
|
+
if (tag === 'audio') {
|
|
363
|
+
return /*#__PURE__*/_react["default"].createElement("audio", {
|
|
364
|
+
controls: "controls"
|
|
365
|
+
}, /*#__PURE__*/_react["default"].createElement("source", {
|
|
366
|
+
type: "audio/mp3",
|
|
367
|
+
src: src
|
|
368
|
+
}));
|
|
369
|
+
}
|
|
370
|
+
|
|
328
371
|
return /*#__PURE__*/_react["default"].createElement("iframe", (0, _extends2["default"])({
|
|
329
372
|
"data-type": type,
|
|
330
373
|
src: src
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["log","debug","removeDialogs","prevDialogs","document","querySelectorAll","forEach","s","remove","insertDialog","props","newEl","createElement","type","callback","rest","initialBodyOverflow","body","style","overflow","className","handleClose","val","data","el","ReactDOM","render","appendChild","types","MediaPlugin","opts","toolbar","icon","onClick","value","onChange","inline","Inline","create","isVoid","editing","ends","undefined","height","title","starts","src","url","width","change","insertInline","nodeIsThere","findDescendant","d","key","c","removeNodeByKey","focus","setNodeByKey","supports","node","object","name","deleteNode","e","preventDefault","renderNode","jsonData","toJSON","handleEdit","createChange","edit","get","handleDelete","normalizeNode","textNodeMap","updateNodesArray","index","isMedia","indexOf","text","push","length","withoutNormalization","n","insertTextByKey","serialization","deserialize","dataset","typeIndex","parseInt","getAttribute","out","serialize","divProps"],"sources":["../../../src/plugins/media/index.jsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Inline } from 'slate';\nimport TheatersIcon from '@material-ui/icons/Theaters';\nimport VolumeUpIcon from '@material-ui/icons/VolumeUp';\nimport debug from 'debug';\n\nimport MediaDialog from './media-dialog';\nimport MediaToolbar from './media-toolbar';\nimport MediaWrapper from './media-wrapper';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nconst removeDialogs = () => {\n const prevDialogs = document.querySelectorAll('.insert-media-dialog');\n\n prevDialogs.forEach(s => s.remove());\n};\n\nexport const insertDialog = props => {\n const newEl = document.createElement('div');\n const { type, callback, ...rest } = props;\n const initialBodyOverflow = document.body.style.overflow;\n\n removeDialogs();\n\n newEl.className = 'insert-media-dialog';\n document.body.style.overflow = 'hidden';\n\n const handleClose = (val, data) => {\n callback(val, data);\n newEl.remove();\n document.body.style.overflow = initialBodyOverflow;\n };\n\n const el = (\n <MediaDialog {...rest} type={type} disablePortal={true} open={true} handleClose={handleClose} />\n );\n\n ReactDOM.render(el, newEl);\n\n document.body.appendChild(newEl);\n};\n\nconst types = ['audio', 'video'];\n\nexport default function MediaPlugin(type, opts) {\n const toolbar = {\n icon: type === 'audio' ? <VolumeUpIcon /> : <TheatersIcon />,\n onClick: (value, onChange) => {\n log('[toolbar] onClick');\n const inline = Inline.create({\n type: type,\n isVoid: true,\n data: {\n editing: false,\n ends: undefined,\n height: undefined,\n title: undefined,\n starts: undefined,\n src: undefined,\n url: undefined,\n width: undefined\n }\n });\n\n const change = value.change().insertInline(inline);\n onChange(change);\n insertDialog({\n type,\n callback: (val, data) => {\n const nodeIsThere = change.value.document.findDescendant(d => d.key === inline.key);\n\n if (nodeIsThere) {\n if (!val) {\n const c = change.removeNodeByKey(inline.key);\n onChange(c, () => opts.focus());\n } else {\n const c = change.setNodeByKey(inline.key, { data });\n onChange(c, () => opts.focus('beginning', nodeIsThere));\n }\n } else {\n opts.focus();\n }\n }\n });\n },\n supports: node => node.object === 'inline' && node.type === type\n };\n\n return {\n name: type,\n toolbar,\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n const change = value.change().removeNodeByKey(node.key);\n\n onChange(change);\n },\n renderNode(props) {\n if (props.node.type === type) {\n const { node, key } = props;\n const { data } = node;\n const jsonData = data.toJSON();\n const { src, height, width, editing, ...rest } = jsonData;\n const handleEdit = () => {\n const change = opts.createChange();\n const c = change.setNodeByKey(key, {\n data: {\n ...jsonData,\n editing: true\n }\n });\n\n opts.onChange(c, () => {\n insertDialog({\n ...jsonData,\n edit: true,\n type,\n callback: (val, data) => {\n const { key } = node;\n\n const nodeIsThere = change.value.document.findDescendant(\n d => d.type === type && d.data.get('editing')\n );\n\n if (nodeIsThere && val) {\n const c = change.setNodeByKey(key, { data, editing: false });\n opts.onChange(c, () => opts.focus('beginning', nodeIsThere));\n } else {\n opts.focus();\n }\n }\n });\n });\n };\n const handleDelete = () => {\n const change = opts.createChange();\n const c = change.removeNodeByKey(node.key);\n\n opts.onChange(c);\n };\n const style = {};\n\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n return (\n <MediaWrapper editor data-type={type} width={style.width} {...rest}>\n <iframe\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n src={src}\n editing={editing ? 1 : 0}\n {...rest}\n {...style}\n />\n <MediaToolbar onEdit={handleEdit} onRemove={handleDelete} />\n </MediaWrapper>\n );\n }\n },\n normalizeNode: node => {\n const textNodeMap = {};\n const updateNodesArray = [];\n let index = 0;\n\n if (node.object !== 'document') return;\n\n node.findDescendant(d => {\n if (d.object === 'text') {\n textNodeMap[index] = d;\n }\n\n const isMedia = types.indexOf(d.type) >= 0;\n\n if (isMedia) {\n if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {\n updateNodesArray.push(textNodeMap[index - 1]);\n }\n }\n\n index++;\n });\n\n if (!updateNodesArray.length) return;\n\n return change => {\n change.withoutNormalization(() => {\n updateNodesArray.forEach(n => change.insertTextByKey(n.key, 0, ' '));\n });\n };\n }\n };\n}\n\nexport const serialization = {\n deserialize(el /*, next*/) {\n const type = el.dataset && el.dataset.type;\n const typeIndex = types.indexOf(type);\n\n if (typeIndex < 0) return;\n\n const { ends, starts, title, editing, url } = el.dataset || {};\n\n log('deserialize: ', name);\n const width = parseInt(el.getAttribute('width'), 10) || null;\n const height = parseInt(el.getAttribute('height'), 10) || null;\n\n const out = {\n object: 'inline',\n type: type,\n isVoid: true,\n data: {\n src: el.getAttribute('src'),\n editing,\n ends,\n height,\n starts,\n title,\n width,\n url\n }\n };\n log('return object: ', out);\n return out;\n },\n serialize(object /*, children*/) {\n const typeIndex = types.indexOf(object.type);\n\n if (typeIndex < 0) return;\n\n const type = types[typeIndex];\n\n const { data } = object;\n const editing = data.get('editing');\n const ends = data.get('ends');\n const src = data.get('src');\n const starts = data.get('starts');\n const title = data.get('title');\n const width = data.get('width');\n const height = data.get('height');\n const url = data.get('url');\n const style = {};\n\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n const divProps = {\n 'data-editing': editing,\n 'data-ends': ends,\n 'data-starts': starts,\n 'data-title': title,\n 'data-url': url\n };\n const props = {\n ...style,\n src\n };\n\n return (\n <iframe\n data-type={type}\n src={src}\n {...divProps}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n {...props}\n />\n );\n }\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["log","debug","removeDialogs","prevDialogs","document","querySelectorAll","forEach","s","remove","insertDialog","props","newEl","createElement","type","callback","opts","rest","initialBodyOverflow","body","style","overflow","className","handleClose","val","data","el","uploadSoundSupport","ReactDOM","render","appendChild","types","MediaPlugin","toolbar","icon","onClick","value","onChange","inline","Inline","create","isVoid","editing","ends","undefined","height","title","starts","src","url","width","change","insertInline","nodeIsThere","findDescendant","d","key","c","removeNodeByKey","focus","setNodeByKey","supports","node","object","name","deleteNode","e","preventDefault","renderNode","jsonData","toJSON","tag","handleEdit","createChange","edit","get","handleDelete","normalizeNode","textNodeMap","updateNodesArray","index","isMedia","indexOf","text","push","length","withoutNormalization","n","insertTextByKey","serialization","deserialize","dataset","typeIndex","Element","tagName","toLowerCase","firstChild","getAttribute","parseInt","out","serialize","divProps"],"sources":["../../../src/plugins/media/index.jsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Inline } from 'slate';\nimport TheatersIcon from '@material-ui/icons/Theaters';\nimport VolumeUpIcon from '@material-ui/icons/VolumeUp';\nimport debug from 'debug';\n\nimport MediaDialog from './media-dialog';\nimport MediaToolbar from './media-toolbar';\nimport MediaWrapper from './media-wrapper';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nconst removeDialogs = () => {\n const prevDialogs = document.querySelectorAll('.insert-media-dialog');\n\n prevDialogs.forEach(s => s.remove());\n};\n\nexport const insertDialog = props => {\n const newEl = document.createElement('div');\n const { type, callback, opts, ...rest } = props;\n const initialBodyOverflow = document.body.style.overflow;\n\n removeDialogs();\n\n newEl.className = 'insert-media-dialog';\n document.body.style.overflow = 'hidden';\n\n const handleClose = (val, data) => {\n callback(val, data);\n newEl.remove();\n document.body.style.overflow = initialBodyOverflow;\n };\n\n const el = (\n <MediaDialog\n {...rest}\n uploadSoundSupport={opts.uploadSoundSupport}\n type={type}\n disablePortal={true}\n open={true}\n handleClose={handleClose}\n />\n );\n\n ReactDOM.render(el, newEl);\n\n document.body.appendChild(newEl);\n};\n\nconst types = ['audio', 'video'];\n\nexport default function MediaPlugin(type, opts) {\n const toolbar = {\n icon: type === 'audio' ? <VolumeUpIcon /> : <TheatersIcon />,\n onClick: (value, onChange) => {\n log('[toolbar] onClick');\n const inline = Inline.create({\n type: type,\n isVoid: true,\n data: {\n editing: false,\n ends: undefined,\n height: undefined,\n title: undefined,\n starts: undefined,\n src: undefined,\n url: undefined,\n width: undefined\n }\n });\n\n const change = value.change().insertInline(inline);\n onChange(change);\n insertDialog({\n type,\n opts,\n callback: (val, data) => {\n const nodeIsThere = change.value.document.findDescendant(d => d.key === inline.key);\n\n if (nodeIsThere) {\n if (!val) {\n const c = change.removeNodeByKey(inline.key);\n onChange(c, () => opts.focus());\n } else {\n const c = change.setNodeByKey(inline.key, { data });\n onChange(c, () => opts.focus('beginning', nodeIsThere));\n }\n } else {\n opts.focus();\n }\n }\n });\n },\n supports: node => node.object === 'inline' && node.type === type\n };\n\n return {\n name: type,\n toolbar,\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n const change = value.change().removeNodeByKey(node.key);\n\n onChange(change);\n },\n renderNode(props) {\n if (props.node.type === type) {\n const { node, key } = props;\n const { data } = node;\n const jsonData = data.toJSON();\n const { src, height, width, editing, tag, ...rest } = jsonData;\n const handleEdit = () => {\n const change = opts.createChange();\n const c = change.setNodeByKey(key, {\n data: {\n ...jsonData,\n editing: true\n }\n });\n\n opts.onChange(c, () => {\n insertDialog({\n ...jsonData,\n edit: true,\n type,\n opts,\n callback: (val, data) => {\n const { key } = node;\n\n const nodeIsThere = change.value.document.findDescendant(\n d => d.type === type && d.data.get('editing')\n );\n\n if (nodeIsThere && val) {\n const c = change.setNodeByKey(key, { data, editing: false });\n opts.onChange(c, () => opts.focus('beginning', nodeIsThere));\n } else {\n opts.focus();\n }\n }\n });\n });\n };\n const handleDelete = () => {\n const change = opts.createChange();\n const c = change.removeNodeByKey(node.key);\n\n opts.onChange(c);\n };\n const style = {};\n\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n if (tag === 'audio') {\n return (\n <MediaWrapper editor data-type={type} width={style.width} {...rest}>\n <audio controls=\"controls\">\n <source type=\"audio/mp3\" src={src} />\n </audio>\n <MediaToolbar onEdit={handleEdit} onRemove={handleDelete} />\n </MediaWrapper>\n );\n }\n\n return (\n <MediaWrapper editor data-type={type} width={style.width} {...rest}>\n <iframe\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n src={src}\n editing={editing ? 1 : 0}\n {...rest}\n {...style}\n />\n <MediaToolbar onEdit={handleEdit} onRemove={handleDelete} />\n </MediaWrapper>\n );\n }\n },\n normalizeNode: node => {\n const textNodeMap = {};\n const updateNodesArray = [];\n let index = 0;\n\n if (node.object !== 'document') return;\n\n node.findDescendant(d => {\n if (d.object === 'text') {\n textNodeMap[index] = d;\n }\n\n const isMedia = types.indexOf(d.type) >= 0;\n\n if (isMedia) {\n if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {\n updateNodesArray.push(textNodeMap[index - 1]);\n }\n }\n\n index++;\n });\n\n if (!updateNodesArray.length) return;\n\n return change => {\n change.withoutNormalization(() => {\n updateNodesArray.forEach(n => change.insertTextByKey(n.key, 0, ' '));\n });\n };\n }\n };\n}\n\nexport const serialization = {\n deserialize(el /*, next*/) {\n let type = el.dataset && el.dataset.type;\n let tag = 'iframe';\n let src;\n const typeIndex = types.indexOf(type);\n\n if (typeIndex < 0) {\n if (el instanceof Element && el.tagName.toLowerCase() === 'audio') {\n type = 'audio';\n tag = 'audio';\n src = el.firstChild.getAttribute('src');\n } else {\n return;\n }\n }\n\n const { ends, starts, title, editing, url } = el.dataset || {};\n\n log('deserialize: ', name);\n const width = parseInt(el.getAttribute('width'), 10) || null;\n const height = parseInt(el.getAttribute('height'), 10) || null;\n\n const out = {\n object: 'inline',\n type: type,\n isVoid: true,\n data: {\n tag,\n src: src || el.getAttribute('src'),\n editing,\n ends,\n height,\n starts,\n title,\n width,\n url\n }\n };\n log('return object: ', out);\n return out;\n },\n serialize(object /*, children*/) {\n const typeIndex = types.indexOf(object.type);\n\n if (typeIndex < 0) return;\n\n const type = types[typeIndex];\n\n const { data } = object;\n const editing = data.get('editing');\n const tag = data.get('tag');\n const ends = data.get('ends');\n const src = data.get('src');\n const starts = data.get('starts');\n const title = data.get('title');\n const width = data.get('width');\n const height = data.get('height');\n const url = data.get('url');\n const style = {};\n\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n const divProps = {\n 'data-editing': editing,\n 'data-ends': ends,\n 'data-starts': starts,\n 'data-title': title,\n 'data-url': url\n };\n const props = {\n ...style,\n src\n };\n\n if (tag === 'audio') {\n return (\n <audio controls=\"controls\">\n <source type=\"audio/mp3\" src={src} />\n </audio>\n );\n }\n\n return (\n <iframe\n data-type={type}\n src={src}\n {...divProps}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n {...props}\n />\n );\n }\n};\n"],"mappings":"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"}
|