@pie-element/complex-rubric 2.10.2-next.29 → 2.10.2-next.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/editor.js +9 -12
  2. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/editor.js.map +1 -1
  3. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/customPlugin/index.js +32 -11
  4. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/customPlugin/index.js.map +1 -1
  5. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/image/index.js +2 -4
  6. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/image/index.js.map +1 -1
  7. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/math/index.js +4 -4
  8. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/math/index.js.map +1 -1
  9. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/table/index.js +3 -5
  10. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/table/index.js.map +1 -1
  11. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/test-serializer.js +1 -1
  12. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/test-serializer.js.map +1 -1
  13. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/package.json +2 -2
  14. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/editor.jsx +10 -13
  15. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/customPlugin/index.jsx +14 -11
  16. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/image/index.jsx +16 -12
  17. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/math/index.jsx +30 -18
  18. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/table/index.jsx +3 -4
  19. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/test-serializer.js +1 -1
  20. package/module/configure.js +2 -2
  21. package/module/element.js +2 -2
  22. package/module/manifest.json +2 -2
  23. package/module/print.js +2 -2
  24. package/package.json +2 -2
@@ -69,12 +69,6 @@ var _classnames = _interopRequireDefault(require("classnames"));
69
69
 
70
70
  var _renderUi = require("../render-ui");
71
71
 
72
- var _alertDialog = _interopRequireDefault(require("../config-ui/alert-dialog"));
73
-
74
- var _insertImageHandler = _interopRequireDefault(require("./plugins/image/insert-image-handler"));
75
-
76
- var _isHotkey = _interopRequireDefault(require("is-hotkey"));
77
-
78
72
  var _components = require("./components");
79
73
 
80
74
  var _editorAndToolbar = _interopRequireDefault(require("./plugins/toolbar/editor-and-toolbar"));
@@ -266,7 +260,6 @@ var SlateEditor = function SlateEditor(editorProps) {
266
260
  }), /*#__PURE__*/_react["default"].createElement(_slateReact.Editable, {
267
261
  renderElement: renderElement,
268
262
  renderLeaf: renderLeaf,
269
- placeholder: "Enter some rich text\u2026",
270
263
  spellCheck: true,
271
264
  onKeyDown: onKeyDown,
272
265
  onFocus: onFocus,
@@ -400,11 +393,14 @@ var Element = function Element(props) {
400
393
  style: style
401
394
  }, attributes), children);
402
395
 
403
- default:
396
+ case 'div':
404
397
  return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
405
- style: _objectSpread(_objectSpread({}, style), {}, {
406
- margin: 0
407
- })
398
+ style: style
399
+ }, attributes), children);
400
+
401
+ default:
402
+ return /*#__PURE__*/_react["default"].createElement("p", (0, _extends2["default"])({
403
+ style: style
408
404
  }, attributes), children);
409
405
  }
410
406
  };
@@ -1348,7 +1344,8 @@ var styles = {
1348
1344
  width: '100%',
1349
1345
  borderCollapse: 'collapse',
1350
1346
  color: _renderUi.color.text(),
1351
- backgroundColor: _renderUi.color.background()
1347
+ backgroundColor: _renderUi.color.background(),
1348
+ whiteSpace: 'pre-wrap'
1352
1349
  },
1353
1350
  '& table:not([border="1"]) tr': {
1354
1351
  borderTop: '1px solid #dfe2e5' // TODO perhaps secondary color for background, for now disable
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/code/editable-html/editor.jsx"],"names":["window","Path","SlateNode","ReactEditor","Editor","HOTKEYS","LIST_TYPES","TEXT_ALIGN_TYPES","initialValue","type","children","data","latex","wrapper","text","SlateEditor","editorProps","mounted","autoFocus","value","plugins","actionsRef","onEditingDone","renderElement","props","renderLeaf","editor","isFocused","setIsFocused","editorRef","editorTest","current","onEditor","Transforms","select","focus","slateValue","needsReset","length","marks","normalize","force","history","undos","redos","onKeyDown","event","key","shiftKey","insertText","preventDefault","stopPropagation","returnValue","forEach","plugin","onFocus","onBlur","e","setTimeout","contains","document","activeElement","actions","position","node","leaf","findPath","edge","textPath","finishEditing","blur","onDone","toggleBlock","format","isActive","isBlockActive","includes","isList","unwrapNodes","match","n","isEditor","SlateElement","isElement","split","newProperties","align","undefined","setNodes","block","wrapNodes","toggleMark","isMarkActive","removeMark","addMark","blockType","selection","Array","from","nodes","at","unhangRange","Element","focused","attributes","element","style","textAlign","nodeProps","pluginToRender","find","supports","renderNode","margin","Leaf","bold","code","italic","underline","strikethrough","BlockButton","icon","MarkButton","log","defaultToolbarOpts","alignment","alwaysVisible","showDone","doneOn","defaultResponseAreaProps","options","respAreaToolbar","onHandleAreaChange","defaultLanguageCharactersProps","createToolbarOpts","toolbarOpts","error","isHtmlMode","EditorComponent","open","extraDialogProps","callback","setState","dialog","prevState","isEditedInHtmlMode","state","newToolbarOpts","normalizedResponseAreaProps","responseAreaProps","htmlPluginOpts","currentValue","toggleHtmlMode","handleAlertDialog","handleDialog","pluginProps","customPlugins","activePlugins","math","onClick","onMathClick","onPluginFocus","onPluginBlur","mathMlOptions","html","image","disableImageAlignmentButtons","onDelete","imageSupport","done","src","newPendingImages","pendingImages","filter","img","oldScheduled","scheduled","newState","insertImageRequested","addedImage","getHandler","fileProvided","onFinish","result","cb","bind","handler","add","fileChosen","maxImageWidth","maxImageHeight","toolbar","disableScrollbar","disableUnderline","autoWidth","autoWidthToolbar","table","responseArea","maxResponseAreas","languageCharacters","languageCharactersProps","media","onChange","uploadSoundSupport","mmlOutput","mmlEditing","runSerializationOnMarkup","relatedTarget","target","focusedNode","resetValue","stashedValue","stashValue","selectedNode","previewText","renderHtmlPreviewContent","openHtmlModeConfirmationDialog","nonEmpty","toolbarInFocus","classes","ref","elementRef","title","onConfirmText","onCloseText","onConfirm","handleHtmlModeSaveConfirmation","onClose","htmlModeContinueEditing","texts","then","handleBlur","toSlateNode","Promise","resolve","preBlurValue","editorDOM","querySelector","stateValue","wrapperRef","editorElement","closest","className","toolbarElement","toolbarRef","isInCurrentComponent","removeEventListener","handleDomBlur","addEventListener","stopReset","reduce","s","p","toObject","newValue","Value","fromJSON","toJSON","charactersLimit","allText","string","handlePlugins","v","endsWith","parseInt","isNaN","object","last","parent","getParent","Block","pos","placeholder","size","display","width","maxWidth","whiteSpace","opacity","pointerEvents","userSelect","onResize","nextProps","differentCharacterProps","differentMathMlProps","differentImageMaxDimensionsProps","prevProps","zeroWidthEls","querySelectorAll","el","minWidth","minHeight","height","maxHeight","valueToSize","disabled","spellCheck","highlightShape","otherPluginProps","sizeStyle","buildSizeStyle","names","withBg","toolbarOnTop","slateEditor","uploading","r","onRef","onSetEditor","getFocusedValue","noPadding","noBorder","renderPlaceholder","React","Component","PropTypes","bool","any","func","isRequired","arrayOf","shape","array","number","oneOfType","oneOf","language","characterIcon","characters","values","allValid","every","ALL_PLUGINS","Error","join","styles","backgroundColor","top","left","transform","fontFamily","tableLayout","borderCollapse","color","background","borderTop","padding","border","marginTop","marginBottom"],"mappings":"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","sourcesContent":["import React, { useCallback, useMemo, useRef, useState, useEffect } from 'react';\nimport { Editor as OldSlateEditor, findNode, getEventRange, getEventTransfer } from 'slate-react';\nimport RootRef from '@material-ui/core/RootRef';\n\nimport isEqual from 'lodash/isEqual';\nimport * as serialization from './new-serialization';\nimport PropTypes from 'prop-types';\nimport { Value, Block, Inline } from 'slate';\nimport { ALL_PLUGINS, DEFAULT_PLUGINS, buildPlugins, withPlugins } from './plugins';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { color } from '../render-ui';\n// import Plain from 'slate-plain-serializer';\nimport AlertDialog from '../config-ui/alert-dialog';\nimport { PreviewPrompt } from '../render-ui';\n\nimport { getBase64, htmlToValue, valueToHtml } from './new-serialization';\nimport InsertImageHandler from './plugins/image/insert-image-handler';\n\nimport isHotkey from 'is-hotkey';\nimport { ReactEditor, useSlateStatic, Editable, useFocused, useSlate, Slate } from 'slate-react';\nimport { Node as SlateNode, Path, Editor, Transforms, createEditor, Element as SlateElement } from 'slate';\n\nimport { Button, Icon } from './components';\nimport EditorAndToolbar from './plugins/toolbar/editor-and-toolbar';\n\nwindow.Path = Path;\nwindow.SlateNode = SlateNode;\nwindow.ReactEditor = ReactEditor;\nwindow.Editor = Editor;\n\nconst HOTKEYS = {\n 'mod+b': 'bold',\n 'mod+i': 'italic',\n 'mod+u': 'underline',\n 'mod+`': 'code',\n};\n\nconst LIST_TYPES = ['numbered-list', 'bulleted-list'];\nconst TEXT_ALIGN_TYPES = ['left', 'center', 'right', 'justify'];\n\nconst initialValue = [\n {\n type: 'paragraph',\n children: [\n {\n type: 'math',\n data: {\n latex: '\\\\frac{1}{2}',\n wrapper: 'round_brackets',\n },\n children: [\n {\n text: '\\\\(\\\\frac{1}{2}\\\\)',\n },\n ],\n },\n ],\n },\n];\n\nconst SlateEditor = (editorProps) => {\n const mounted = useRef(false);\n const { autoFocus, value, plugins, actionsRef, onEditingDone } = editorProps;\n const renderElement = useCallback((props) => <Element {...props} plugins={plugins} />, []);\n const renderLeaf = useCallback((props) => <Leaf {...props} />, []);\n const editor = useMemo(() => withPlugins(createEditor(), plugins), []);\n const [isFocused, setIsFocused] = useState(false);\n const editorRef = useRef(null);\n\n window.editorTest = editor;\n\n useEffect(() => {\n mounted.current = true;\n\n return () => {\n mounted.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (editorProps.onEditor) {\n editorProps.onEditor(editor);\n }\n\n if (autoFocus) {\n Transforms.select(editor, [0, 0]);\n ReactEditor.focus(editor);\n\n if (mounted.current) {\n setIsFocused(true);\n }\n }\n }, [editor]);\n\n const slateValue = useMemo(() => {\n // Slate throws an error if the value on the initial render is invalid\n // then we directly set the value on the editor in order\n // to be able to trigger normalization on the initial value before rendering\n\n const needsReset = editor.children.length === 0;\n\n editor.children = value;\n editor.marks = {};\n Editor.normalize(editor, { force: true });\n\n if (needsReset) {\n editor.history.undos = [];\n editor.history.redos = [];\n }\n // We return the normalized internal value so that the rendering can take over from here\n return editor.children;\n }, [editor, value]);\n\n const onKeyDown = (event) => {\n if (event.key === 'Enter' && event.shiftKey === true) {\n editor.insertText('\\n');\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n let returnValue;\n\n plugins.forEach((plugin) => {\n if (plugin.onKeyDown && typeof returnValue === 'undefined') {\n returnValue = plugin.onKeyDown(editor, event);\n }\n });\n\n return returnValue;\n };\n const onFocus = () => setIsFocused(true);\n const onBlur = (e) => {\n setTimeout(() => {\n if (!editorRef.current || !editorRef.current.contains(document.activeElement)) {\n if (editorProps.onBlur) {\n editorProps.onBlur(editor, e);\n }\n\n if (mounted.current) {\n setIsFocused(false);\n }\n }\n }, 50);\n };\n const actions = {\n focus: (position, node) => {\n const [, textPath] = node\n ? Editor.leaf(editor, ReactEditor.findPath(editor, node), { edge: 'end' })\n : Editor.leaf(editor, [0], { edge: 'end' });\n\n Transforms.select(editor, textPath);\n ReactEditor.focus(editor);\n },\n finishEditing: () => {\n // if (!mounted.current) {\n // return;\n // }\n\n if (typeof onEditingDone === 'function') {\n onEditingDone(editor);\n }\n },\n };\n\n if (actionsRef) {\n actionsRef(actions);\n }\n\n return (\n <Slate editor={editor} initialValue={slateValue}>\n <RootRef rootRef={editorRef}>\n <EditorAndToolbar\n {...editorProps}\n editor={editor}\n isFocused={isFocused}\n onDone={() => {\n setIsFocused(false);\n document.activeElement.blur();\n editorProps.onDone(editor);\n }}\n >\n <Editable\n renderElement={renderElement}\n renderLeaf={renderLeaf}\n placeholder=\"Enter some rich text…\"\n spellCheck\n onKeyDown={onKeyDown}\n onFocus={onFocus}\n onBlur={onBlur}\n />\n </EditorAndToolbar>\n </RootRef>\n </Slate>\n );\n};\n\nconst toggleBlock = (editor, format) => {\n const isActive = isBlockActive(editor, format, TEXT_ALIGN_TYPES.includes(format) ? 'align' : 'type');\n const isList = LIST_TYPES.includes(format);\n\n Transforms.unwrapNodes(editor, {\n match: (n) =>\n !Editor.isEditor(n) &&\n SlateElement.isElement(n) &&\n LIST_TYPES.includes(n.type) &&\n !TEXT_ALIGN_TYPES.includes(format),\n split: true,\n });\n let newProperties;\n if (TEXT_ALIGN_TYPES.includes(format)) {\n newProperties = {\n align: isActive ? undefined : format,\n };\n } else {\n newProperties = {\n type: isActive ? 'paragraph' : isList ? 'li' : format,\n };\n }\n Transforms.setNodes(editor, newProperties);\n\n if (!isActive && isList) {\n const block = { type: format, children: [] };\n Transforms.wrapNodes(editor, block);\n }\n};\n\nconst toggleMark = (editor, format) => {\n const isActive = isMarkActive(editor, format);\n\n if (isActive) {\n Editor.removeMark(editor, format);\n } else {\n Editor.addMark(editor, format, true);\n }\n};\n\nconst isBlockActive = (editor, format, blockType = 'type') => {\n const { selection } = editor;\n if (!selection) return false;\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, selection),\n match: (n) => !Editor.isEditor(n) && SlateElement.isElement(n) && n[blockType] === format,\n }),\n );\n\n return !!match;\n};\n\nconst isMarkActive = (editor, format) => {\n const marks = Editor.marks(editor);\n return marks ? marks[format] === true : false;\n};\n\nconst Element = (props) => {\n const editor = useSlateStatic();\n const focused = useFocused();\n const { attributes, children, element, plugins } = props;\n const style = { textAlign: element.align };\n\n const nodeProps = { ...attributes, ...props, node: { ...element }, children };\n const pluginToRender = plugins.find((plugin) => typeof plugin.supports === 'function' && plugin.supports(element));\n\n if (pluginToRender) {\n return pluginToRender.renderNode({ ...nodeProps, editor, focused });\n }\n\n switch (element.type) {\n case 'block-quote':\n return (\n <blockquote style={style} {...attributes}>\n {children}\n </blockquote>\n );\n case 'bulleted-list':\n return (\n <ul style={style} {...attributes}>\n {children}\n </ul>\n );\n case 'heading-one':\n return (\n <h1 style={style} {...attributes}>\n {children}\n </h1>\n );\n case 'heading-two':\n return (\n <h2 style={style} {...attributes}>\n {children}\n </h2>\n );\n case 'list-item':\n return (\n <li style={style} {...attributes}>\n {children}\n </li>\n );\n case 'numbered-list':\n return (\n <ol style={style} {...attributes}>\n {children}\n </ol>\n );\n default:\n return (\n <div\n style={{\n ...style,\n margin: 0,\n }}\n {...attributes}\n >\n {children}\n </div>\n );\n }\n};\n\nconst Leaf = ({ attributes, children, leaf }) => {\n if (leaf.bold) {\n children = <strong>{children}</strong>;\n }\n\n if (leaf.code) {\n children = <code>{children}</code>;\n }\n\n if (leaf.italic) {\n children = <em>{children}</em>;\n }\n\n if (leaf.underline) {\n children = <u>{children}</u>;\n }\n\n if (leaf.strikethrough) {\n children = <del>{children}</del>;\n }\n\n return <span {...attributes}>{children}</span>;\n};\n\nconst BlockButton = ({ format, icon }) => {\n const editor = useSlate();\n return (\n <Button\n active={isBlockActive(editor, format, TEXT_ALIGN_TYPES.includes(format) ? 'align' : 'type')}\n onMouseDown={(event) => {\n event.preventDefault();\n toggleBlock(editor, format);\n }}\n >\n <Icon>{icon}</Icon>\n </Button>\n );\n};\n\nconst MarkButton = ({ format, icon }) => {\n const editor = useSlate();\n return (\n <Button\n active={isMarkActive(editor, format)}\n onMouseDown={(event) => {\n event.preventDefault();\n toggleMark(editor, format);\n }}\n >\n <Icon>{icon}</Icon>\n </Button>\n );\n};\n\n// old-editable\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, error, isHtmlMode) => {\n return {\n ...defaultToolbarOpts,\n ...toolbarOpts,\n error,\n isHtmlMode,\n };\n};\n\nexport class EditorComponent extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n error: PropTypes.any,\n onRef: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onEditor: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyDown: PropTypes.func,\n value: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.string,\n children: PropTypes.array,\n data: PropTypes.object,\n }),\n ),\n imageSupport: PropTypes.object,\n mathMlOptions: PropTypes.shape({\n mmlOutput: PropTypes.bool,\n mmlEditing: PropTypes.bool,\n }),\n disableImageAlignmentButtons: PropTypes.bool,\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 disableScrollbar: PropTypes.bool,\n disableUnderline: PropTypes.bool,\n autoWidthToolbar: PropTypes.bool,\n pluginProps: PropTypes.any,\n // customPlugins should be inside pluginProps (a property inside pluginProps)\n // customPlugins: PropTypes.arrayOf(\n // PropTypes.shape({\n // event: PropTypes.string,\n // icon: PropTypes.string,\n // iconType: PropTypes.string,\n // iconAlt: PropTypes.string\n // }),\n // ),\n placeholder: PropTypes.string,\n responseAreaProps: PropTypes.shape({\n type: PropTypes.oneOf(['explicit-constructed-response', 'inline-dropdown', 'drag-in-the-blank']),\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 runSerializationOnMarkup: PropTypes.func,\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 !allValid && new Error(`Invalid values: ${values}, values must be one of [${ALL_PLUGINS.join(',')}]`);\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 runSerializationOnMarkup: () => {},\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\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, props.error),\n pendingImages: [],\n isHtmlMode: false,\n isEditedInHtmlMode: false,\n dialog: {\n open: false,\n },\n };\n\n this.toggleHtmlMode = this.toggleHtmlMode.bind(this);\n\n this.onResize = () => {\n if (!this.state.isHtmlMode) {\n props.onChange(this.state.editor, true);\n }\n };\n\n this.handlePlugins(this.props);\n }\n\n handleDialog = (open, extraDialogProps = {}, callback) => {\n this.setState(\n {\n dialog: {\n open,\n ...extraDialogProps,\n },\n },\n callback,\n );\n };\n\n toggleHtmlMode = () => {\n this.setState(\n (prevState) => ({\n isHtmlMode: !prevState.isHtmlMode,\n isEditedInHtmlMode: false,\n }),\n () => {\n const { error } = this.props;\n const { toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(toolbarOpts, error, this.state.isHtmlMode);\n this.setState({\n toolbarOpts: newToolbarOpts,\n });\n },\n );\n };\n\n handlePlugins = (props) => {\n const normalizedResponseAreaProps = {\n ...defaultResponseAreaProps,\n ...props.responseAreaProps,\n };\n\n const htmlPluginOpts = {\n currentValue: this.props.value,\n isHtmlMode: this.state.isHtmlMode,\n isEditedInHtmlMode: this.state.isEditedInHtmlMode,\n toggleHtmlMode: this.toggleHtmlMode,\n handleAlertDialog: this.handleDialog,\n };\n let { customPlugins } = props.pluginProps || {};\n customPlugins = customPlugins || [];\n\n this.plugins = buildPlugins(props.activePlugins, customPlugins, {\n math: {\n onClick: this.onMathClick,\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur,\n ...props.mathMlOptions,\n },\n html: htmlPluginOpts,\n image: {\n disableImageAlignmentButtons: props.disableImageAlignmentButtons,\n onDelete:\n props.imageSupport &&\n props.imageSupport.delete &&\n ((node, done) => {\n const { src } = node.data;\n\n props.imageSupport.delete(src, (e) => {\n const newPendingImages = this.state.pendingImages.filter((img) => img !== node);\n const { scheduled: oldScheduled } = this.state;\n const newState = {\n pendingImages: newPendingImages,\n scheduled: oldScheduled && newPendingImages.length === 0 ? false : oldScheduled,\n };\n\n this.setState(newState, () => done(e, this.state.value));\n });\n }),\n insertImageRequested:\n props.imageSupport &&\n ((addedImage, getHandler, fileProvided) => {\n const { pendingImages } = this.state;\n const onFinish = (result) => {\n let cb;\n\n if (this.state.scheduled && result) {\n // finish editing only on success\n cb = this.onEditingDone.bind(this);\n }\n\n const newPendingImages = this.state.pendingImages.filter((img) => img !== addedImage);\n const newState = {\n pendingImages: newPendingImages,\n };\n\n if (newPendingImages.length === 0) {\n newState.scheduled = false;\n }\n\n this.setState(newState, cb);\n };\n const callback = () => {\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(onFinish, () => this.state.value);\n\n props.imageSupport.add(handler);\n\n if (fileProvided) {\n handler.fileChosen(fileProvided);\n }\n };\n\n this.setState(\n {\n pendingImages: [...pendingImages, addedImage],\n },\n callback,\n );\n }),\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur,\n maxImageWidth: props.maxImageWidth,\n maxImageHeight: props.maxImageHeight,\n },\n toolbar: {\n /**\n * To minimize converting html -> state -> html\n * We only emit markup once 'done' is clicked.\n */\n disableScrollbar: !!props.disableScrollbar,\n disableUnderline: props.disableUnderline,\n autoWidth: props.autoWidthToolbar,\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 onEditingDone: this.onEditingDone,\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 onChange: this.onChange,\n uploadSoundSupport: props.uploadSoundSupport,\n },\n });\n\n if (props.mathMlOptions.mmlOutput || props.mathMlOptions.mmlEditing) {\n this.props.runSerializationOnMarkup();\n }\n };\n\n componentDidMount() {\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(`[data-key=\"${this.editor.value.document.key}\"]`);\n\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n });\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { isHtmlMode, toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(nextProps.toolbarOpts, nextProps.error, isHtmlMode);\n\n if (!isEqual(newToolbarOpts, toolbarOpts)) {\n this.setState({\n toolbarOpts: newToolbarOpts,\n });\n }\n\n const differentCharacterProps = !isEqual(nextProps.languageCharactersProps, this.props.languageCharactersProps);\n const differentMathMlProps = !isEqual(nextProps.mathMlOptions, this.props.mathMlOptions);\n const differentImageMaxDimensionsProps =\n !isEqual(nextProps.maxImageWidth, this.props.maxImageWidth) ||\n !isEqual(nextProps.maxImageHeight, this.props.maxImageHeight);\n\n if (differentCharacterProps || differentMathMlProps || differentImageMaxDimensionsProps) {\n this.handlePlugins(nextProps);\n }\n\n if (!isEqual(nextProps.value, this.props.value)) {\n this.setState({\n focus: false,\n value: nextProps.value,\n });\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\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\n // Trigger plugins and finish editing if:\n // 1. The 'isHtmlMode' state has been toggled.\n // 2. We're currently in 'isHtmlMode' and the editor value has been modified.\n if (\n this.state.isHtmlMode !== prevState.isHtmlMode ||\n (this.state.isHtmlMode && !prevState.isEditedInHtmlMode && this.state.isEditedInHtmlMode)\n ) {\n this.handlePlugins(this.props);\n }\n\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.setState({ selectedNode: node });\n };\n\n onEditingDone = (editor) => {\n const { isHtmlMode, dialog, value, pendingImages } = this.state;\n\n // Handling HTML mode and dialog state\n if (isHtmlMode) {\n // Early return if HTML mode is enabled\n if (dialog?.open) return;\n\n const currentValue = htmlToValue(value.document.text);\n const previewText = this.renderHtmlPreviewContent();\n\n this.openHtmlModeConfirmationDialog(currentValue, previewText);\n return;\n }\n\n if (pendingImages.length) {\n // schedule image processing\n this.setState({ scheduled: true });\n return;\n }\n\n // Finalizing editing\n log('[onEditingDone]');\n this.setState({ pendingImages: [] });\n log('[onEditingDone] value: ', this.state.value);\n this.props.onChange(editor, true);\n };\n\n onDone = (editor) => {\n const { nonEmpty } = this.props;\n\n log('[onDone]');\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n this.onEditingDone(editor);\n };\n\n /**\n * Renders the HTML preview content to be displayed inside the dialog.\n * This content includes the edited HTML and a prompt for the user.\n */\n renderHtmlPreviewContent = () => {\n const { classes } = this.props;\n return (\n <div ref={(ref) => (this.elementRef = ref)}>\n <div>Preview of Edited Html:</div>\n <PreviewPrompt defaultClassName={classes.previewText} prompt={this.state.value.document.text} />\n <div>Would you like to save these changes ?</div>\n </div>\n );\n };\n\n /**\n * Opens a confirmation dialog in HTML mode, displaying the preview of the current HTML content\n * and offering options to save or continue editing.\n */\n openHtmlModeConfirmationDialog = (currentValue, previewText) => {\n this.setState({\n dialog: {\n open: true,\n title: 'Content Preview & Save',\n text: previewText,\n onConfirmText: 'Save changes',\n onCloseText: 'Continue editing',\n onConfirm: () => {\n this.handleHtmlModeSaveConfirmation(currentValue);\n },\n onClose: this.htmlModeContinueEditing,\n },\n });\n };\n\n /**\n * Handles the save confirmation action in HTML mode. This updates the value to the confirmed\n * content, updates value on props, and exits the HTML mode.\n * @param {string} currentValue - The confirmed value of the HTML content to save.\n */\n handleHtmlModeSaveConfirmation = (currentValue) => {\n this.setState({ value: currentValue });\n this.props.onChange(currentValue, true);\n this.handleDialog(false);\n this.toggleHtmlMode();\n };\n\n /**\n * Closes the dialog in HTML mode and allows the user to continue editing the html content.\n * This function is invoked when the user opts to not save the current changes.\n */\n htmlModeContinueEditing = () => {\n this.handleDialog(false);\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 = (editor) => {\n const { nonEmpty } = this.props;\n const {\n toolbarOpts: { doneOn },\n } = this.state;\n\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n if (doneOn === 'blur') {\n const texts = Array.from(SlateNode.texts(editor));\n\n if (nonEmpty && texts.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone(editor);\n });\n } else {\n this.onEditingDone(editor);\n }\n }\n };\n\n onBlur = (editor, event) => {\n this.handleBlur(editor);\n return this.props.onBlur(event);\n log('[onBlur]');\n const target = event.relatedTarget;\n\n const node = ReactEditor.toSlateNode(editor, target);\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 = !editorDOM || document.activeElement.closest(`[class*=\"${editorDOM.className}\"]`);\n const toolbarElement =\n !this.toolbarRef || document.activeElement.closest(`[class*=\"${this.toolbarRef.className}\"]`);\n const isInCurrentComponent = 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 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\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 = (editor, done) => {\n log('[onChange]');\n const { charactersLimit } = this.props;\n const allText = Editor.string(editor, []);\n\n if (allText.length > charactersLimit) {\n return;\n }\n\n const html = valueToHtml(editor);\n const value = htmlToValue(html);\n\n // Mark the editor as edited when in HTML mode and its content has changed.\n // This status will later be used to decide whether to prompt a warning to the user when exiting HTML mode.\n const isEditedInHtmlMode = !this.state.isHtmlMode\n ? false\n : this.state.value.document.text !== value.document.text\n ? true\n : this.state.isEditedInHtmlMode;\n\n if (isEditedInHtmlMode !== this.state.isEditedInHtmlMode) {\n this.handlePlugins(this.props);\n }\n\n this.setState({ value, isEditedInHtmlMode }, () => {\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 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 focus = (pos, node) => {\n const position = pos || 'end';\n\n this.props.focus(position, node);\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 onSetEditor = (editor) => {\n const { onEditor } = this.props;\n const callback = () => onEditor && onEditor(editor);\n\n this.setState(\n {\n editor,\n },\n callback,\n );\n };\n\n render() {\n const {\n autoFocus,\n disabled,\n spellCheck,\n highlightShape,\n classes,\n className,\n placeholder,\n pluginProps,\n disableUnderline,\n onKeyDown,\n } = this.props;\n // We don't want to send customPlugins to slate.\n // Not sure if they would do any harm, but I think it's better to not send them.\n // We use custom plugins to be able to add custom buttons\n // eslint-disable-next-line no-unused-vars\n const { customPlugins, ...otherPluginProps } = pluginProps || {};\n\n const { value, focusedNode, toolbarOpts, dialog, scheduled } = 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 [classes.scheduled]: scheduled,\n },\n className,\n classes.slateEditor,\n );\n\n return (\n <div\n ref={(ref) => (this.wrapperRef = ref)}\n style={{ width: sizeStyle.width }}\n className={names}\n data-slate-wrapper=\"\"\n >\n {scheduled && <div className={classes.uploading}>Uploading image and then saving...</div>}\n <SlateEditor\n plugins={this.plugins}\n toolbarRef={(r) => {\n if (r) {\n this.toolbarRef = r;\n }\n }}\n autoFocus={autoFocus}\n disableUnderline={disableUnderline}\n actionsRef={this.props.onRef}\n onEditor={this.onSetEditor}\n value={value}\n focus={this.focus}\n onKeyDown={onKeyDown}\n onChange={this.onChange}\n getFocusedValue={this.getFocusedValue}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onEditingDone={this.onEditingDone}\n onDone={this.onDone}\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={otherPluginProps}\n toolbarOpts={toolbarOpts}\n placeholder={placeholder}\n renderPlaceholder={this.renderPlaceholder}\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 scheduled: {\n opacity: 0.5,\n pointerEvents: 'none',\n position: 'relative',\n },\n uploading: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\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 previewText: {\n marginBottom: '36px',\n marginTop: '6px',\n padding: '20px',\n backgroundColor: 'rgba(0,0,0,0.06)',\n },\n};\n\nexport default withStyles(styles)(EditorComponent);\n"],"file":"editor.js"}
1
+ {"version":3,"sources":["../../src/code/editable-html/editor.jsx"],"names":["window","Path","SlateNode","ReactEditor","Editor","HOTKEYS","LIST_TYPES","TEXT_ALIGN_TYPES","initialValue","type","children","data","latex","wrapper","text","SlateEditor","editorProps","mounted","autoFocus","value","plugins","actionsRef","onEditingDone","renderElement","props","renderLeaf","editor","isFocused","setIsFocused","editorRef","editorTest","current","onEditor","Transforms","select","focus","slateValue","needsReset","length","marks","normalize","force","history","undos","redos","onKeyDown","event","key","shiftKey","insertText","preventDefault","stopPropagation","returnValue","forEach","plugin","onFocus","onBlur","e","setTimeout","contains","document","activeElement","actions","position","node","leaf","findPath","edge","textPath","finishEditing","blur","onDone","toggleBlock","format","isActive","isBlockActive","includes","isList","unwrapNodes","match","n","isEditor","SlateElement","isElement","split","newProperties","align","undefined","setNodes","block","wrapNodes","toggleMark","isMarkActive","removeMark","addMark","blockType","selection","Array","from","nodes","at","unhangRange","Element","focused","attributes","element","style","textAlign","nodeProps","pluginToRender","find","supports","renderNode","Leaf","bold","code","italic","underline","strikethrough","BlockButton","icon","MarkButton","log","defaultToolbarOpts","alignment","alwaysVisible","showDone","doneOn","defaultResponseAreaProps","options","respAreaToolbar","onHandleAreaChange","defaultLanguageCharactersProps","createToolbarOpts","toolbarOpts","error","isHtmlMode","EditorComponent","open","extraDialogProps","callback","setState","dialog","prevState","isEditedInHtmlMode","state","newToolbarOpts","normalizedResponseAreaProps","responseAreaProps","htmlPluginOpts","currentValue","toggleHtmlMode","handleAlertDialog","handleDialog","pluginProps","customPlugins","activePlugins","math","onClick","onMathClick","onPluginFocus","onPluginBlur","mathMlOptions","html","image","disableImageAlignmentButtons","onDelete","imageSupport","done","src","newPendingImages","pendingImages","filter","img","oldScheduled","scheduled","newState","insertImageRequested","addedImage","getHandler","fileProvided","onFinish","result","cb","bind","handler","add","fileChosen","maxImageWidth","maxImageHeight","toolbar","disableScrollbar","disableUnderline","autoWidth","autoWidthToolbar","table","responseArea","maxResponseAreas","languageCharacters","languageCharactersProps","media","onChange","uploadSoundSupport","mmlOutput","mmlEditing","runSerializationOnMarkup","relatedTarget","target","focusedNode","resetValue","stashedValue","stashValue","selectedNode","previewText","renderHtmlPreviewContent","openHtmlModeConfirmationDialog","nonEmpty","toolbarInFocus","classes","ref","elementRef","title","onConfirmText","onCloseText","onConfirm","handleHtmlModeSaveConfirmation","onClose","htmlModeContinueEditing","texts","then","handleBlur","toSlateNode","Promise","resolve","preBlurValue","editorDOM","querySelector","stateValue","wrapperRef","editorElement","closest","className","toolbarElement","toolbarRef","isInCurrentComponent","removeEventListener","handleDomBlur","addEventListener","stopReset","reduce","s","p","toObject","newValue","Value","fromJSON","toJSON","charactersLimit","allText","string","handlePlugins","v","endsWith","parseInt","isNaN","object","last","parent","getParent","Block","pos","placeholder","size","display","width","maxWidth","whiteSpace","opacity","pointerEvents","userSelect","onResize","nextProps","differentCharacterProps","differentMathMlProps","differentImageMaxDimensionsProps","prevProps","zeroWidthEls","querySelectorAll","el","minWidth","minHeight","height","maxHeight","valueToSize","disabled","spellCheck","highlightShape","otherPluginProps","sizeStyle","buildSizeStyle","names","withBg","toolbarOnTop","slateEditor","uploading","r","onRef","onSetEditor","getFocusedValue","noPadding","noBorder","renderPlaceholder","React","Component","PropTypes","bool","any","func","isRequired","arrayOf","shape","array","number","oneOfType","oneOf","language","characterIcon","characters","values","allValid","every","ALL_PLUGINS","Error","join","styles","backgroundColor","top","left","transform","fontFamily","tableLayout","borderCollapse","color","background","borderTop","padding","border","marginTop","marginBottom"],"mappings":"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","sourcesContent":["import React, { useCallback, useMemo, useRef, useState, useEffect } from 'react';\nimport { Editor as OldSlateEditor, findNode, getEventRange, getEventTransfer } from 'slate-react';\nimport RootRef from '@material-ui/core/RootRef';\n\nimport isEqual from 'lodash/isEqual';\nimport * as serialization from './new-serialization';\nimport PropTypes from 'prop-types';\nimport { Value, Block, Inline } from 'slate';\nimport { ALL_PLUGINS, DEFAULT_PLUGINS, buildPlugins, withPlugins } from './plugins';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { color } from '../render-ui';\n// import Plain from 'slate-plain-serializer';\nimport { PreviewPrompt } from '../render-ui';\n\nimport { htmlToValue, valueToHtml } from './new-serialization';\n\nimport { ReactEditor, useSlateStatic, Editable, useFocused, useSlate, Slate } from 'slate-react';\nimport { Node as SlateNode, Path, Editor, Transforms, createEditor, Element as SlateElement } from 'slate';\n\nimport { Button, Icon } from './components';\nimport EditorAndToolbar from './plugins/toolbar/editor-and-toolbar';\n\nwindow.Path = Path;\nwindow.SlateNode = SlateNode;\nwindow.ReactEditor = ReactEditor;\nwindow.Editor = Editor;\n\nconst HOTKEYS = {\n 'mod+b': 'bold',\n 'mod+i': 'italic',\n 'mod+u': 'underline',\n 'mod+`': 'code',\n};\n\nconst LIST_TYPES = ['numbered-list', 'bulleted-list'];\nconst TEXT_ALIGN_TYPES = ['left', 'center', 'right', 'justify'];\n\nconst initialValue = [\n {\n type: 'paragraph',\n children: [\n {\n type: 'math',\n data: {\n latex: '\\\\frac{1}{2}',\n wrapper: 'round_brackets',\n },\n children: [\n {\n text: '\\\\(\\\\frac{1}{2}\\\\)',\n },\n ],\n },\n ],\n },\n];\n\nconst SlateEditor = (editorProps) => {\n const mounted = useRef(false);\n const { autoFocus, value, plugins, actionsRef, onEditingDone } = editorProps;\n const renderElement = useCallback((props) => <Element {...props} plugins={plugins} />, []);\n const renderLeaf = useCallback((props) => <Leaf {...props} />, []);\n const editor = useMemo(() => withPlugins(createEditor(), plugins), []);\n const [isFocused, setIsFocused] = useState(false);\n const editorRef = useRef(null);\n\n window.editorTest = editor;\n\n useEffect(() => {\n mounted.current = true;\n\n return () => {\n mounted.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (editorProps.onEditor) {\n editorProps.onEditor(editor);\n }\n\n if (autoFocus) {\n Transforms.select(editor, [0, 0]);\n ReactEditor.focus(editor);\n\n if (mounted.current) {\n setIsFocused(true);\n }\n }\n }, [editor]);\n\n const slateValue = useMemo(() => {\n // Slate throws an error if the value on the initial render is invalid\n // then we directly set the value on the editor in order\n // to be able to trigger normalization on the initial value before rendering\n\n const needsReset = editor.children.length === 0;\n\n editor.children = value;\n editor.marks = {};\n Editor.normalize(editor, { force: true });\n\n if (needsReset) {\n editor.history.undos = [];\n editor.history.redos = [];\n }\n // We return the normalized internal value so that the rendering can take over from here\n return editor.children;\n }, [editor, value]);\n\n const onKeyDown = (event) => {\n if (event.key === 'Enter' && event.shiftKey === true) {\n editor.insertText('\\n');\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n let returnValue;\n\n plugins.forEach((plugin) => {\n if (plugin.onKeyDown && typeof returnValue === 'undefined') {\n returnValue = plugin.onKeyDown(editor, event);\n }\n });\n\n return returnValue;\n };\n const onFocus = () => setIsFocused(true);\n const onBlur = (e) => {\n setTimeout(() => {\n if (!editorRef.current || !editorRef.current.contains(document.activeElement)) {\n if (editorProps.onBlur) {\n editorProps.onBlur(editor, e);\n }\n\n if (mounted.current) {\n setIsFocused(false);\n }\n }\n }, 50);\n };\n const actions = {\n focus: (position, node) => {\n const [, textPath] = node\n ? Editor.leaf(editor, ReactEditor.findPath(editor, node), { edge: 'end' })\n : Editor.leaf(editor, [0], { edge: 'end' });\n\n Transforms.select(editor, textPath);\n ReactEditor.focus(editor);\n },\n finishEditing: () => {\n // if (!mounted.current) {\n // return;\n // }\n\n if (typeof onEditingDone === 'function') {\n onEditingDone(editor);\n }\n },\n };\n\n if (actionsRef) {\n actionsRef(actions);\n }\n\n return (\n <Slate editor={editor} initialValue={slateValue}>\n <RootRef rootRef={editorRef}>\n <EditorAndToolbar\n {...editorProps}\n editor={editor}\n isFocused={isFocused}\n onDone={() => {\n setIsFocused(false);\n document.activeElement.blur();\n editorProps.onDone(editor);\n }}\n >\n <Editable\n renderElement={renderElement}\n renderLeaf={renderLeaf}\n spellCheck\n onKeyDown={onKeyDown}\n onFocus={onFocus}\n onBlur={onBlur}\n />\n </EditorAndToolbar>\n </RootRef>\n </Slate>\n );\n};\n\nconst toggleBlock = (editor, format) => {\n const isActive = isBlockActive(editor, format, TEXT_ALIGN_TYPES.includes(format) ? 'align' : 'type');\n const isList = LIST_TYPES.includes(format);\n\n Transforms.unwrapNodes(editor, {\n match: (n) =>\n !Editor.isEditor(n) &&\n SlateElement.isElement(n) &&\n LIST_TYPES.includes(n.type) &&\n !TEXT_ALIGN_TYPES.includes(format),\n split: true,\n });\n let newProperties;\n if (TEXT_ALIGN_TYPES.includes(format)) {\n newProperties = {\n align: isActive ? undefined : format,\n };\n } else {\n newProperties = {\n type: isActive ? 'paragraph' : isList ? 'li' : format,\n };\n }\n Transforms.setNodes(editor, newProperties);\n\n if (!isActive && isList) {\n const block = { type: format, children: [] };\n Transforms.wrapNodes(editor, block);\n }\n};\n\nconst toggleMark = (editor, format) => {\n const isActive = isMarkActive(editor, format);\n\n if (isActive) {\n Editor.removeMark(editor, format);\n } else {\n Editor.addMark(editor, format, true);\n }\n};\n\nconst isBlockActive = (editor, format, blockType = 'type') => {\n const { selection } = editor;\n if (!selection) return false;\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, selection),\n match: (n) => !Editor.isEditor(n) && SlateElement.isElement(n) && n[blockType] === format,\n }),\n );\n\n return !!match;\n};\n\nconst isMarkActive = (editor, format) => {\n const marks = Editor.marks(editor);\n return marks ? marks[format] === true : false;\n};\n\nconst Element = (props) => {\n const editor = useSlateStatic();\n const focused = useFocused();\n const { attributes, children, element, plugins } = props;\n const style = { textAlign: element.align };\n\n const nodeProps = { ...attributes, ...props, node: { ...element }, children };\n const pluginToRender = plugins.find((plugin) => typeof plugin.supports === 'function' && plugin.supports(element));\n\n if (pluginToRender) {\n return pluginToRender.renderNode({ ...nodeProps, editor, focused });\n }\n\n switch (element.type) {\n case 'block-quote':\n return (\n <blockquote style={style} {...attributes}>\n {children}\n </blockquote>\n );\n case 'bulleted-list':\n return (\n <ul style={style} {...attributes}>\n {children}\n </ul>\n );\n case 'heading-one':\n return (\n <h1 style={style} {...attributes}>\n {children}\n </h1>\n );\n case 'heading-two':\n return (\n <h2 style={style} {...attributes}>\n {children}\n </h2>\n );\n case 'list-item':\n return (\n <li style={style} {...attributes}>\n {children}\n </li>\n );\n case 'numbered-list':\n return (\n <ol style={style} {...attributes}>\n {children}\n </ol>\n );\n case 'div':\n return (\n <div style={style} {...attributes}>\n {children}\n </div>\n );\n default:\n return (\n <p style={style} {...attributes}>\n {children}\n </p>\n );\n }\n};\n\nconst Leaf = ({ attributes, children, leaf }) => {\n if (leaf.bold) {\n children = <strong>{children}</strong>;\n }\n\n if (leaf.code) {\n children = <code>{children}</code>;\n }\n\n if (leaf.italic) {\n children = <em>{children}</em>;\n }\n\n if (leaf.underline) {\n children = <u>{children}</u>;\n }\n\n if (leaf.strikethrough) {\n children = <del>{children}</del>;\n }\n\n return <span {...attributes}>{children}</span>;\n};\n\nconst BlockButton = ({ format, icon }) => {\n const editor = useSlate();\n return (\n <Button\n active={isBlockActive(editor, format, TEXT_ALIGN_TYPES.includes(format) ? 'align' : 'type')}\n onMouseDown={(event) => {\n event.preventDefault();\n toggleBlock(editor, format);\n }}\n >\n <Icon>{icon}</Icon>\n </Button>\n );\n};\n\nconst MarkButton = ({ format, icon }) => {\n const editor = useSlate();\n return (\n <Button\n active={isMarkActive(editor, format)}\n onMouseDown={(event) => {\n event.preventDefault();\n toggleMark(editor, format);\n }}\n >\n <Icon>{icon}</Icon>\n </Button>\n );\n};\n\n// old-editable\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, error, isHtmlMode) => {\n return {\n ...defaultToolbarOpts,\n ...toolbarOpts,\n error,\n isHtmlMode,\n };\n};\n\nexport class EditorComponent extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n error: PropTypes.any,\n onRef: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onEditor: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyDown: PropTypes.func,\n value: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.string,\n children: PropTypes.array,\n data: PropTypes.object,\n }),\n ),\n imageSupport: PropTypes.object,\n mathMlOptions: PropTypes.shape({\n mmlOutput: PropTypes.bool,\n mmlEditing: PropTypes.bool,\n }),\n disableImageAlignmentButtons: PropTypes.bool,\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 disableScrollbar: PropTypes.bool,\n disableUnderline: PropTypes.bool,\n autoWidthToolbar: PropTypes.bool,\n pluginProps: PropTypes.any,\n // customPlugins should be inside pluginProps (a property inside pluginProps)\n // customPlugins: PropTypes.arrayOf(\n // PropTypes.shape({\n // event: PropTypes.string,\n // icon: PropTypes.string,\n // iconType: PropTypes.string,\n // iconAlt: PropTypes.string\n // }),\n // ),\n placeholder: PropTypes.string,\n responseAreaProps: PropTypes.shape({\n type: PropTypes.oneOf(['explicit-constructed-response', 'inline-dropdown', 'drag-in-the-blank']),\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 runSerializationOnMarkup: PropTypes.func,\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 !allValid && new Error(`Invalid values: ${values}, values must be one of [${ALL_PLUGINS.join(',')}]`);\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 runSerializationOnMarkup: () => {},\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\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, props.error),\n pendingImages: [],\n isHtmlMode: false,\n isEditedInHtmlMode: false,\n dialog: {\n open: false,\n },\n };\n\n this.toggleHtmlMode = this.toggleHtmlMode.bind(this);\n\n this.onResize = () => {\n if (!this.state.isHtmlMode) {\n props.onChange(this.state.editor, true);\n }\n };\n\n this.handlePlugins(this.props);\n }\n\n handleDialog = (open, extraDialogProps = {}, callback) => {\n this.setState(\n {\n dialog: {\n open,\n ...extraDialogProps,\n },\n },\n callback,\n );\n };\n\n toggleHtmlMode = () => {\n this.setState(\n (prevState) => ({\n isHtmlMode: !prevState.isHtmlMode,\n isEditedInHtmlMode: false,\n }),\n () => {\n const { error } = this.props;\n const { toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(toolbarOpts, error, this.state.isHtmlMode);\n this.setState({\n toolbarOpts: newToolbarOpts,\n });\n },\n );\n };\n\n handlePlugins = (props) => {\n const normalizedResponseAreaProps = {\n ...defaultResponseAreaProps,\n ...props.responseAreaProps,\n };\n\n const htmlPluginOpts = {\n currentValue: this.props.value,\n isHtmlMode: this.state.isHtmlMode,\n isEditedInHtmlMode: this.state.isEditedInHtmlMode,\n toggleHtmlMode: this.toggleHtmlMode,\n handleAlertDialog: this.handleDialog,\n };\n let { customPlugins } = props.pluginProps || {};\n customPlugins = customPlugins || [];\n\n this.plugins = buildPlugins(props.activePlugins, customPlugins, {\n math: {\n onClick: this.onMathClick,\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur,\n ...props.mathMlOptions,\n },\n html: htmlPluginOpts,\n image: {\n disableImageAlignmentButtons: props.disableImageAlignmentButtons,\n onDelete:\n props.imageSupport &&\n props.imageSupport.delete &&\n ((node, done) => {\n const { src } = node.data;\n\n props.imageSupport.delete(src, (e) => {\n const newPendingImages = this.state.pendingImages.filter((img) => img !== node);\n const { scheduled: oldScheduled } = this.state;\n const newState = {\n pendingImages: newPendingImages,\n scheduled: oldScheduled && newPendingImages.length === 0 ? false : oldScheduled,\n };\n\n this.setState(newState, () => done(e, this.state.value));\n });\n }),\n insertImageRequested:\n props.imageSupport &&\n ((addedImage, getHandler, fileProvided) => {\n const { pendingImages } = this.state;\n const onFinish = (result) => {\n let cb;\n\n if (this.state.scheduled && result) {\n // finish editing only on success\n cb = this.onEditingDone.bind(this);\n }\n\n const newPendingImages = this.state.pendingImages.filter((img) => img !== addedImage);\n const newState = {\n pendingImages: newPendingImages,\n };\n\n if (newPendingImages.length === 0) {\n newState.scheduled = false;\n }\n\n this.setState(newState, cb);\n };\n const callback = () => {\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(onFinish, () => this.state.value);\n\n props.imageSupport.add(handler);\n\n if (fileProvided) {\n handler.fileChosen(fileProvided);\n }\n };\n\n this.setState(\n {\n pendingImages: [...pendingImages, addedImage],\n },\n callback,\n );\n }),\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur,\n maxImageWidth: props.maxImageWidth,\n maxImageHeight: props.maxImageHeight,\n },\n toolbar: {\n /**\n * To minimize converting html -> state -> html\n * We only emit markup once 'done' is clicked.\n */\n disableScrollbar: !!props.disableScrollbar,\n disableUnderline: props.disableUnderline,\n autoWidth: props.autoWidthToolbar,\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 onEditingDone: this.onEditingDone,\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 onChange: this.onChange,\n uploadSoundSupport: props.uploadSoundSupport,\n },\n });\n\n if (props.mathMlOptions.mmlOutput || props.mathMlOptions.mmlEditing) {\n this.props.runSerializationOnMarkup();\n }\n };\n\n componentDidMount() {\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(`[data-key=\"${this.editor.value.document.key}\"]`);\n\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n });\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { isHtmlMode, toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(nextProps.toolbarOpts, nextProps.error, isHtmlMode);\n\n if (!isEqual(newToolbarOpts, toolbarOpts)) {\n this.setState({\n toolbarOpts: newToolbarOpts,\n });\n }\n\n const differentCharacterProps = !isEqual(nextProps.languageCharactersProps, this.props.languageCharactersProps);\n const differentMathMlProps = !isEqual(nextProps.mathMlOptions, this.props.mathMlOptions);\n const differentImageMaxDimensionsProps =\n !isEqual(nextProps.maxImageWidth, this.props.maxImageWidth) ||\n !isEqual(nextProps.maxImageHeight, this.props.maxImageHeight);\n\n if (differentCharacterProps || differentMathMlProps || differentImageMaxDimensionsProps) {\n this.handlePlugins(nextProps);\n }\n\n if (!isEqual(nextProps.value, this.props.value)) {\n this.setState({\n focus: false,\n value: nextProps.value,\n });\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\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\n // Trigger plugins and finish editing if:\n // 1. The 'isHtmlMode' state has been toggled.\n // 2. We're currently in 'isHtmlMode' and the editor value has been modified.\n if (\n this.state.isHtmlMode !== prevState.isHtmlMode ||\n (this.state.isHtmlMode && !prevState.isEditedInHtmlMode && this.state.isEditedInHtmlMode)\n ) {\n this.handlePlugins(this.props);\n }\n\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.setState({ selectedNode: node });\n };\n\n onEditingDone = (editor) => {\n const { isHtmlMode, dialog, value, pendingImages } = this.state;\n\n // Handling HTML mode and dialog state\n if (isHtmlMode) {\n // Early return if HTML mode is enabled\n if (dialog?.open) return;\n\n const currentValue = htmlToValue(value.document.text);\n const previewText = this.renderHtmlPreviewContent();\n\n this.openHtmlModeConfirmationDialog(currentValue, previewText);\n return;\n }\n\n if (pendingImages.length) {\n // schedule image processing\n this.setState({ scheduled: true });\n return;\n }\n\n // Finalizing editing\n log('[onEditingDone]');\n this.setState({ pendingImages: [] });\n log('[onEditingDone] value: ', this.state.value);\n this.props.onChange(editor, true);\n };\n\n onDone = (editor) => {\n const { nonEmpty } = this.props;\n\n log('[onDone]');\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n this.onEditingDone(editor);\n };\n\n /**\n * Renders the HTML preview content to be displayed inside the dialog.\n * This content includes the edited HTML and a prompt for the user.\n */\n renderHtmlPreviewContent = () => {\n const { classes } = this.props;\n return (\n <div ref={(ref) => (this.elementRef = ref)}>\n <div>Preview of Edited Html:</div>\n <PreviewPrompt defaultClassName={classes.previewText} prompt={this.state.value.document.text} />\n <div>Would you like to save these changes ?</div>\n </div>\n );\n };\n\n /**\n * Opens a confirmation dialog in HTML mode, displaying the preview of the current HTML content\n * and offering options to save or continue editing.\n */\n openHtmlModeConfirmationDialog = (currentValue, previewText) => {\n this.setState({\n dialog: {\n open: true,\n title: 'Content Preview & Save',\n text: previewText,\n onConfirmText: 'Save changes',\n onCloseText: 'Continue editing',\n onConfirm: () => {\n this.handleHtmlModeSaveConfirmation(currentValue);\n },\n onClose: this.htmlModeContinueEditing,\n },\n });\n };\n\n /**\n * Handles the save confirmation action in HTML mode. This updates the value to the confirmed\n * content, updates value on props, and exits the HTML mode.\n * @param {string} currentValue - The confirmed value of the HTML content to save.\n */\n handleHtmlModeSaveConfirmation = (currentValue) => {\n this.setState({ value: currentValue });\n this.props.onChange(currentValue, true);\n this.handleDialog(false);\n this.toggleHtmlMode();\n };\n\n /**\n * Closes the dialog in HTML mode and allows the user to continue editing the html content.\n * This function is invoked when the user opts to not save the current changes.\n */\n htmlModeContinueEditing = () => {\n this.handleDialog(false);\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 = (editor) => {\n const { nonEmpty } = this.props;\n const {\n toolbarOpts: { doneOn },\n } = this.state;\n\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n if (doneOn === 'blur') {\n const texts = Array.from(SlateNode.texts(editor));\n\n if (nonEmpty && texts.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone(editor);\n });\n } else {\n this.onEditingDone(editor);\n }\n }\n };\n\n onBlur = (editor, event) => {\n this.handleBlur(editor);\n return this.props.onBlur(event);\n log('[onBlur]');\n const target = event.relatedTarget;\n\n const node = ReactEditor.toSlateNode(editor, target);\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 = !editorDOM || document.activeElement.closest(`[class*=\"${editorDOM.className}\"]`);\n const toolbarElement =\n !this.toolbarRef || document.activeElement.closest(`[class*=\"${this.toolbarRef.className}\"]`);\n const isInCurrentComponent = 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 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\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 = (editor, done) => {\n log('[onChange]');\n const { charactersLimit } = this.props;\n const allText = Editor.string(editor, []);\n\n if (allText.length > charactersLimit) {\n return;\n }\n\n const html = valueToHtml(editor);\n const value = htmlToValue(html);\n\n // Mark the editor as edited when in HTML mode and its content has changed.\n // This status will later be used to decide whether to prompt a warning to the user when exiting HTML mode.\n const isEditedInHtmlMode = !this.state.isHtmlMode\n ? false\n : this.state.value.document.text !== value.document.text\n ? true\n : this.state.isEditedInHtmlMode;\n\n if (isEditedInHtmlMode !== this.state.isEditedInHtmlMode) {\n this.handlePlugins(this.props);\n }\n\n this.setState({ value, isEditedInHtmlMode }, () => {\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 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 focus = (pos, node) => {\n const position = pos || 'end';\n\n this.props.focus(position, node);\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 onSetEditor = (editor) => {\n const { onEditor } = this.props;\n const callback = () => onEditor && onEditor(editor);\n\n this.setState(\n {\n editor,\n },\n callback,\n );\n };\n\n render() {\n const {\n autoFocus,\n disabled,\n spellCheck,\n highlightShape,\n classes,\n className,\n placeholder,\n pluginProps,\n disableUnderline,\n onKeyDown,\n } = this.props;\n // We don't want to send customPlugins to slate.\n // Not sure if they would do any harm, but I think it's better to not send them.\n // We use custom plugins to be able to add custom buttons\n // eslint-disable-next-line no-unused-vars\n const { customPlugins, ...otherPluginProps } = pluginProps || {};\n\n const { value, focusedNode, toolbarOpts, dialog, scheduled } = 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 [classes.scheduled]: scheduled,\n },\n className,\n classes.slateEditor,\n );\n\n return (\n <div\n ref={(ref) => (this.wrapperRef = ref)}\n style={{ width: sizeStyle.width }}\n className={names}\n data-slate-wrapper=\"\"\n >\n {scheduled && <div className={classes.uploading}>Uploading image and then saving...</div>}\n <SlateEditor\n plugins={this.plugins}\n toolbarRef={(r) => {\n if (r) {\n this.toolbarRef = r;\n }\n }}\n autoFocus={autoFocus}\n disableUnderline={disableUnderline}\n actionsRef={this.props.onRef}\n onEditor={this.onSetEditor}\n value={value}\n focus={this.focus}\n onKeyDown={onKeyDown}\n onChange={this.onChange}\n getFocusedValue={this.getFocusedValue}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onEditingDone={this.onEditingDone}\n onDone={this.onDone}\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={otherPluginProps}\n toolbarOpts={toolbarOpts}\n placeholder={placeholder}\n renderPlaceholder={this.renderPlaceholder}\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 scheduled: {\n opacity: 0.5,\n pointerEvents: 'none',\n position: 'relative',\n },\n uploading: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\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 whiteSpace: 'pre-wrap',\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 previewText: {\n marginBottom: '36px',\n marginTop: '6px',\n padding: '20px',\n backgroundColor: 'rgba(0,0,0,0.06)',\n },\n};\n\nexport default withStyles(styles)(EditorComponent);\n"],"file":"editor.js"}
@@ -10,10 +10,16 @@ exports["default"] = CustomPlugin;
10
10
 
11
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
12
 
13
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
14
+
13
15
  var _react = _interopRequireDefault(require("react"));
14
16
 
15
17
  var _newSerialization = require("../../new-serialization");
16
18
 
19
+ var _slateReact = require("slate-react");
20
+
21
+ var _slate = require("slate");
22
+
17
23
  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; }
18
24
 
19
25
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -52,31 +58,46 @@ var getIcon = function getIcon(customPluginProps) {
52
58
  function CustomPlugin(type, customPluginProps) {
53
59
  var toolbar = {
54
60
  icon: getIcon(customPluginProps),
55
- onClick: function onClick(value, onChange, getFocusedValue) {
56
- var editorDOM = document.querySelector("[data-key=\"".concat(value.document.key, "\"]"));
57
- var valueToUse = value;
58
-
61
+ onClick: function onClick(editor) {
59
62
  var callback = function callback(_ref, focus) {
60
63
  var customContent = _ref.customContent,
61
64
  contentType = _ref.contentType;
62
- valueToUse = getFocusedValue();
63
65
 
64
66
  switch (contentType) {
65
67
  case CONTENT_TYPE.FRAGMENT:
66
68
  default:
67
69
  {
68
70
  var contentValue = (0, _newSerialization.htmlToValue)(customContent);
69
- var change = valueToUse.change().insertFragment(contentValue.document);
70
- valueToUse = change.value;
71
- onChange(change);
71
+
72
+ var _Editor$node = _slate.Editor.node(editor, editor.selection),
73
+ _Editor$node2 = (0, _slicedToArray2["default"])(_Editor$node, 2),
74
+ nodeAtSelection = _Editor$node2[0],
75
+ nodePath = _Editor$node2[1];
76
+
77
+ if (_slate.Text.isText(nodeAtSelection)) {
78
+ var block = {
79
+ type: 'paragraph',
80
+ children: []
81
+ };
82
+
83
+ _slate.Transforms.wrapNodes(editor, block, {
84
+ at: nodePath
85
+ });
86
+ }
87
+
88
+ editor.insertNode(contentValue);
89
+
90
+ _slate.Transforms.move(editor, {
91
+ distance: 1,
92
+ unit: 'offset'
93
+ });
94
+
72
95
  break;
73
96
  }
74
97
  }
75
98
 
76
99
  if (focus) {
77
- if (editorDOM) {
78
- editorDOM.focus();
79
- }
100
+ _slateReact.ReactEditor.focus(editor);
80
101
  }
81
102
  }; // NOTE: the emitted event (custom event named by client) will be suffixed with "PIE-"
82
103
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/code/editable-html/plugins/customPlugin/index.jsx"],"names":["CONTENT_TYPE","FRAGMENT","ICON_TYPE","SVG","getIcon","customPluginProps","svg","icon","iconType","width","height","__html","iconAlt","CustomPlugin","type","toolbar","onClick","value","onChange","getFocusedValue","editorDOM","document","querySelector","key","valueToUse","callback","focus","customContent","contentType","contentValue","change","insertFragment","window","dispatchEvent","CustomEvent","event","detail","supports","node","object","name","renderNode","props","data","jsonData","toJSON","normalizeNode","textNodeMap","index","findDescendant","d"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { htmlToValue } from '../../new-serialization';\n\n// We're possibly going to have to support content types, so starting it as an enum\nexport const CONTENT_TYPE = {\n FRAGMENT: 'FRAGMENT',\n};\n\n// We're possibly going to have to support multiple icon types, so starting it as an enum\nexport const ICON_TYPE = {\n SVG: 'SVG',\n};\n\nconst getIcon = (customPluginProps) => {\n const svg = customPluginProps.icon;\n\n switch (customPluginProps.iconType) {\n case ICON_TYPE.SVG:\n return <span style={{ width: 28, height: 28 }} dangerouslySetInnerHTML={{ __html: svg }} />;\n default:\n return <span>{customPluginProps.iconAlt}</span>;\n }\n};\n\nexport default function CustomPlugin(type, customPluginProps) {\n const toolbar = {\n icon: getIcon(customPluginProps),\n onClick: (value, onChange, getFocusedValue) => {\n const editorDOM = document.querySelector(`[data-key=\"${value.document.key}\"]`);\n let valueToUse = value;\n const callback = ({ customContent, contentType }, focus) => {\n valueToUse = getFocusedValue();\n\n switch (contentType) {\n case CONTENT_TYPE.FRAGMENT:\n default: {\n const contentValue = htmlToValue(customContent);\n const change = valueToUse.change().insertFragment(contentValue.document);\n\n valueToUse = change.value;\n onChange(change);\n\n break;\n }\n }\n\n if (focus) {\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n };\n\n // NOTE: the emitted event (custom event named by client) will be suffixed with \"PIE-\"\n window.dispatchEvent(\n new CustomEvent(`PIE-${customPluginProps.event}`, {\n detail: {\n ...customPluginProps,\n callback,\n },\n }),\n );\n },\n supports: (node) => node.object === 'inline' && node.type === type,\n };\n\n return {\n name: type,\n toolbar,\n renderNode(props) {\n if (props.node.type === type) {\n const { node } = props;\n const { data } = node;\n const jsonData = data.toJSON();\n const { customContent, contentType } = jsonData;\n\n switch (contentType) {\n case CONTENT_TYPE.FRAGMENT:\n default:\n return customContent;\n }\n }\n },\n normalizeNode: (node) => {\n const textNodeMap = {};\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 index++;\n });\n },\n };\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/code/editable-html/plugins/customPlugin/index.jsx"],"names":["CONTENT_TYPE","FRAGMENT","ICON_TYPE","SVG","getIcon","customPluginProps","svg","icon","iconType","width","height","__html","iconAlt","CustomPlugin","type","toolbar","onClick","editor","callback","focus","customContent","contentType","contentValue","Editor","node","selection","nodeAtSelection","nodePath","Text","isText","block","children","Transforms","wrapNodes","at","insertNode","move","distance","unit","ReactEditor","window","dispatchEvent","CustomEvent","event","detail","supports","object","name","renderNode","props","data","jsonData","toJSON","normalizeNode","textNodeMap","index","findDescendant","d"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { htmlToValue } from '../../new-serialization';\nimport {ReactEditor} from \"slate-react\";\nimport {Editor, Text, Transforms} from \"slate\";\n\n// We're possibly going to have to support content types, so starting it as an enum\nexport const CONTENT_TYPE = {\n FRAGMENT: 'FRAGMENT',\n};\n\n// We're possibly going to have to support multiple icon types, so starting it as an enum\nexport const ICON_TYPE = {\n SVG: 'SVG',\n};\n\nconst getIcon = (customPluginProps) => {\n const svg = customPluginProps.icon;\n\n switch (customPluginProps.iconType) {\n case ICON_TYPE.SVG:\n return <span style={{ width: 28, height: 28 }} dangerouslySetInnerHTML={{ __html: svg }} />;\n default:\n return <span>{customPluginProps.iconAlt}</span>;\n }\n};\n\nexport default function CustomPlugin(type, customPluginProps) {\n const toolbar = {\n icon: getIcon(customPluginProps),\n onClick: (editor) => {\n const callback = ({ customContent, contentType }, focus) => {\n switch (contentType) {\n case CONTENT_TYPE.FRAGMENT:\n default: {\n const contentValue = htmlToValue(customContent);\n\n const [nodeAtSelection, nodePath] = Editor.node(editor, editor.selection);\n\n if (Text.isText(nodeAtSelection)) {\n const block = { type: 'paragraph', children: [] };\n\n Transforms.wrapNodes(editor, block, { at: nodePath });\n }\n\n editor.insertNode(contentValue);\n Transforms.move(editor, { distance: 1, unit: 'offset' });\n\n break;\n }\n }\n\n if (focus) {\n ReactEditor.focus(editor);\n }\n };\n\n // NOTE: the emitted event (custom event named by client) will be suffixed with \"PIE-\"\n window.dispatchEvent(\n new CustomEvent(`PIE-${customPluginProps.event}`, {\n detail: {\n ...customPluginProps,\n callback,\n },\n }),\n );\n },\n supports: (node) => node.object === 'inline' && node.type === type,\n };\n\n return {\n name: type,\n toolbar,\n renderNode(props) {\n if (props.node.type === type) {\n const { node } = props;\n const { data } = node;\n const jsonData = data.toJSON();\n const { customContent, contentType } = jsonData;\n\n switch (contentType) {\n case CONTENT_TYPE.FRAGMENT:\n default:\n return customContent;\n }\n }\n },\n normalizeNode: (node) => {\n const textNodeMap = {};\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 index++;\n });\n },\n };\n}\n"],"file":"index.js"}
@@ -307,9 +307,7 @@ function ImagePlugin(opts) {
307
307
  }
308
308
 
309
309
  var serialization = {
310
- deserialize: function deserialize(el
311
- /*, next*/
312
- ) {
310
+ deserialize: function deserialize(el, next) {
313
311
  var name = el.tagName.toLowerCase();
314
312
  if (name !== 'img') return;
315
313
  log('deserialize: ', name);
@@ -332,7 +330,7 @@ var serialization = {
332
330
  alignment: el.getAttribute('alignment'),
333
331
  alt: el.getAttribute('alt')
334
332
  }
335
- });
333
+ }, next(Array.from(el.children)));
336
334
  log('return object: ', out);
337
335
  return out;
338
336
  },