@pie-lib/editable-html 10.0.0-beta.7 → 10.0.0

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 (118) hide show
  1. package/CHANGELOG.json +1 -1
  2. package/CHANGELOG.md +81 -0
  3. package/LICENSE.md +5 -0
  4. package/lib/editor.js +410 -543
  5. package/lib/editor.js.map +1 -1
  6. package/lib/index.js +200 -101
  7. package/lib/index.js.map +1 -1
  8. package/lib/parse-html.js +5 -6
  9. package/lib/parse-html.js.map +1 -1
  10. package/lib/plugins/characters/custom-popper.js +12 -2
  11. package/lib/plugins/characters/custom-popper.js.map +1 -1
  12. package/lib/plugins/characters/index.js +71 -19
  13. package/lib/plugins/characters/index.js.map +1 -1
  14. package/lib/plugins/characters/utils.js.map +1 -1
  15. package/lib/plugins/html/icons/index.js +38 -0
  16. package/lib/plugins/html/icons/index.js.map +1 -0
  17. package/lib/plugins/html/index.js +75 -0
  18. package/lib/plugins/html/index.js.map +1 -0
  19. package/lib/plugins/image/alt-dialog.js +26 -0
  20. package/lib/plugins/image/alt-dialog.js.map +1 -1
  21. package/lib/plugins/image/component.js +124 -90
  22. package/lib/plugins/image/component.js.map +1 -1
  23. package/lib/plugins/image/image-toolbar.js +45 -7
  24. package/lib/plugins/image/image-toolbar.js.map +1 -1
  25. package/lib/plugins/image/index.js +91 -113
  26. package/lib/plugins/image/index.js.map +1 -1
  27. package/lib/plugins/image/insert-image-handler.js +54 -72
  28. package/lib/plugins/image/insert-image-handler.js.map +1 -1
  29. package/lib/plugins/index.js +71 -31
  30. package/lib/plugins/index.js.map +1 -1
  31. package/lib/plugins/list/index.js +129 -58
  32. package/lib/plugins/list/index.js.map +1 -1
  33. package/lib/plugins/math/index.js +152 -118
  34. package/lib/plugins/math/index.js.map +1 -1
  35. package/lib/plugins/media/index.js +185 -168
  36. package/lib/plugins/media/index.js.map +1 -1
  37. package/lib/plugins/media/media-dialog.js +197 -110
  38. package/lib/plugins/media/media-dialog.js.map +1 -1
  39. package/lib/plugins/media/media-toolbar.js +24 -4
  40. package/lib/plugins/media/media-toolbar.js.map +1 -1
  41. package/lib/plugins/media/media-wrapper.js +65 -23
  42. package/lib/plugins/media/media-wrapper.js.map +1 -1
  43. package/lib/plugins/respArea/drag-in-the-blank/choice.js +50 -10
  44. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
  45. package/lib/plugins/respArea/drag-in-the-blank/index.js +22 -9
  46. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
  47. package/lib/plugins/respArea/explicit-constructed-response/index.js +9 -4
  48. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
  49. package/lib/plugins/respArea/icons/index.js +18 -1
  50. package/lib/plugins/respArea/icons/index.js.map +1 -1
  51. package/lib/plugins/respArea/index.js +133 -122
  52. package/lib/plugins/respArea/index.js.map +1 -1
  53. package/lib/plugins/respArea/inline-dropdown/index.js +10 -4
  54. package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
  55. package/lib/plugins/respArea/utils.js +33 -15
  56. package/lib/plugins/respArea/utils.js.map +1 -1
  57. package/lib/plugins/table/icons/index.js +7 -0
  58. package/lib/plugins/table/icons/index.js.map +1 -1
  59. package/lib/plugins/table/index.js +279 -390
  60. package/lib/plugins/table/index.js.map +1 -1
  61. package/lib/plugins/table/table-toolbar.js +47 -14
  62. package/lib/plugins/table/table-toolbar.js.map +1 -1
  63. package/lib/plugins/toolbar/default-toolbar.js +63 -51
  64. package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
  65. package/lib/plugins/toolbar/done-button.js +9 -1
  66. package/lib/plugins/toolbar/done-button.js.map +1 -1
  67. package/lib/plugins/toolbar/editor-and-toolbar.js +140 -83
  68. package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
  69. package/lib/plugins/toolbar/index.js +5 -0
  70. package/lib/plugins/toolbar/index.js.map +1 -1
  71. package/lib/plugins/toolbar/toolbar-buttons.js +39 -8
  72. package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
  73. package/lib/plugins/toolbar/toolbar.js +261 -225
  74. package/lib/plugins/toolbar/toolbar.js.map +1 -1
  75. package/lib/plugins/utils.js +16 -19
  76. package/lib/plugins/utils.js.map +1 -1
  77. package/lib/serialization.js +70 -11
  78. package/lib/serialization.js.map +1 -1
  79. package/lib/theme.js.map +1 -1
  80. package/package.json +18 -17
  81. package/src/editor.jsx +139 -434
  82. package/src/index.jsx +96 -62
  83. package/src/plugins/characters/index.jsx +17 -12
  84. package/src/plugins/html/icons/index.jsx +19 -0
  85. package/src/plugins/html/index.jsx +68 -0
  86. package/src/plugins/image/component.jsx +38 -60
  87. package/src/plugins/image/index.jsx +42 -95
  88. package/src/plugins/image/insert-image-handler.js +27 -62
  89. package/src/plugins/index.jsx +39 -21
  90. package/src/plugins/list/index.jsx +90 -62
  91. package/src/plugins/math/index.jsx +70 -93
  92. package/src/plugins/media/index.jsx +117 -146
  93. package/src/plugins/media/media-dialog.js +9 -10
  94. package/src/plugins/media/media-wrapper.jsx +27 -29
  95. package/src/plugins/respArea/drag-in-the-blank/index.jsx +4 -5
  96. package/src/plugins/respArea/explicit-constructed-response/index.jsx +1 -2
  97. package/src/plugins/respArea/index.jsx +84 -114
  98. package/src/plugins/respArea/inline-dropdown/index.jsx +2 -3
  99. package/src/plugins/respArea/utils.jsx +28 -23
  100. package/src/plugins/table/index.jsx +214 -334
  101. package/src/plugins/table/table-toolbar.jsx +4 -3
  102. package/src/plugins/toolbar/default-toolbar.jsx +30 -48
  103. package/src/plugins/toolbar/editor-and-toolbar.jsx +114 -114
  104. package/src/plugins/toolbar/toolbar.jsx +224 -254
  105. package/src/plugins/utils.js +0 -16
  106. package/src/serialization.jsx +1 -1
  107. package/lib/components.js +0 -92
  108. package/lib/components.js.map +0 -1
  109. package/lib/new-serialization.js +0 -280
  110. package/lib/new-serialization.js.map +0 -1
  111. package/lib/plugins/hotKeys/index.js +0 -60
  112. package/lib/plugins/hotKeys/index.js.map +0 -1
  113. package/lib/test-serializer.js +0 -138
  114. package/lib/test-serializer.js.map +0 -1
  115. package/src/components.js +0 -135
  116. package/src/new-serialization.jsx +0 -310
  117. package/src/plugins/hotKeys/index.js +0 -54
  118. package/src/test-serializer.js +0 -132
package/lib/editor.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"editor.js","names":["_react","_interopRequireWildcard","require","_slateReact","_RootRef","_interopRequireDefault","_isEqual","serialization","exports","_propTypes","_slate","_plugins","_debug","_styles","_classnames","_renderUi","_slatePlainSerializer","_insertImageHandler","_isHotkey","_components","_editorAndToolbar","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","valueOf","e","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","_objectSpread","target","i","length","source","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","window","Path","SlateNode","ReactEditor","Editor","HOTKEYS","LIST_TYPES","TEXT_ALIGN_TYPES","initialValue","type","children","data","latex","wrapper","text","SlateEditor","editorProps","mounted","useRef","autoFocus","value","plugins","actionsRef","onEditingDone","renderElement","useCallback","props","createElement","Element","_extends2","renderLeaf","Leaf","editor","useMemo","withPlugins","createEditor","_useState","useState","_useState2","_slicedToArray2","isFocused","setIsFocused","editorRef","useEffect","current","onEditor","Transforms","select","focus","slateValue","marks","normalize","force","onKeyDown","event","shiftKey","insertText","preventDefault","stopPropagation","hotkey","isHotkey","mark","toggleMark","onFocus","onBlur","setTimeout","contains","document","activeElement","actions","position","node","_ref","leaf","findPath","edge","_ref2","textPath","finishEditing","Slate","rootRef","onDone","blur","Editable","placeholder","spellCheck","toggleBlock","format","isActive","isBlockActive","includes","isList","unwrapNodes","match","n","isEditor","SlateElement","isElement","split","newProperties","align","undefined","setNodes","block","wrapNodes","isMarkActive","removeMark","addMark","blockType","selection","_Array$from","Array","from","nodes","at","unhangRange","_Array$from2","useSlateStatic","focused","useFocused","attributes","element","style","textAlign","nodeProps","pluginToRender","find","plugin","supports","renderNode","margin","_ref3","bold","code","italic","underline","strikethrough","BlockButton","_ref4","icon","useSlate","Button","active","onMouseDown","Icon","MarkButton","_ref5","log","debug","defaultToolbarOpts","alignment","alwaysVisible","showDone","doneOn","defaultResponseAreaProps","options","respAreaToolbar","onHandleAreaChange","defaultLanguageCharactersProps","createToolbarOpts","toolbarOpts","error","EditorComponent","_React$Component","_inherits2","_super","_this","_classCallCheck2","_assertThisInitialized2","normalizedResponseAreaProps","responseAreaProps","buildPlugins","activePlugins","math","onClick","onMathClick","onPluginFocus","onPluginBlur","mathMlOptions","image","disableImageAlignmentButtons","onDelete","imageSupport","src","done","state","insertImageRequested","getHandler","handler","add","maxImageWidth","maxImageHeight","toolbar","disableScrollbar","disableUnderline","autoWidth","autoWidthToolbar","table","responseArea","maxResponseAreas","languageCharacters","languageCharactersProps","media","onChange","uploadSoundSupport","mmlOutput","mmlEditing","runSerializationOnMarkup","relatedTarget","findNode","setState","focusedNode","resetValue","stashedValue","stashValue","selectedNode","nonEmpty","toolbarInFocus","resolve","_this$state$value$sta","startText","then","toSlateNode","Promise","preBlurValue","handleBlur","bind","editorDOM","querySelector","concat","stateValue","wrapperRef","editorElement","closest","className","toolbarElement","toolbarRef","isInCurrentComponent","removeEventListener","handleDomBlur","__TEMPORARY_CHANGE_DATA","_this$__TEMPORARY_CHA","domEl","change","setNodeByKey","addEventListener","_this$state","stopReset","reduce","s","p","toObject","newValue","Value","fromJSON","toJSON","charactersLimit","allText","string","html","valueToHtml","htmlToValue","v","endsWith","parseInt","isNaN","last","parent","getParent","Block","pos","_ref6","_asyncToGenerator2","_regenerator","_callee","dropContext","transfer","file","fragment","inline","range","ch","_change$value","_document","startBlock","defaultBlock","defaultMarks","frag","wrap","_callee$","_context","prev","next","getEventTransfer","files","abrupt","getBase64","sent","Inline","create","isVoid","loading","getEventRange","insertInline","InsertImageHandler","fileChosen","t0","insertFragment","getInsertMarksAtRange","Plain","deserialize","stop","_x","_x2","_x3","size","contentEditable","display","width","maxWidth","whiteSpace","opacity","pointerEvents","userSelect","onResize","handlePlugins","_createClass2","componentDidMount","_this2","UNSAFE_componentWillReceiveProps","nextProps","newToolbarOpts","isEqual","differentCharacterProps","differentMathMlProps","componentDidUpdate","zeroWidthEls","querySelectorAll","el","minWidth","componentWillUnmount","buildSizeStyle","_this$props","minHeight","height","maxHeight","valueToSize","render","_classNames","_this3","_this$props2","disabled","highlightShape","classes","pluginProps","_this$state2","sizeStyle","names","classNames","withBg","toolbarOnTop","slateEditor","ref","r","onRef","getFocusedValue","onDrop","onDropPaste","onPaste","readOnly","noPadding","noBorder","renderPlaceholder","autoCorrect","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","fontFamily","tableLayout","borderCollapse","color","background","borderTop","padding","border","marginTop","_default","withStyles"],"sources":["../src/editor.jsx"],"sourcesContent":["import React, { useCallback, useMemo, useRef, useState, useEffect } from 'react';\nimport {\n Editor as OldSlateEditor,\n findNode,\n getEventRange,\n getEventTransfer,\n} 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 '@pie-lib/render-ui';\nimport Plain from 'slate-plain-serializer';\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 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 // so we directly set the value on the editor in order\n // to be able to trigger normalization on the initial value before rendering\n editor.children = value;\n editor.marks = {};\n Editor.normalize(editor, { force: true });\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 window.editor = editor;\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 for (const hotkey in HOTKEYS) {\n if (isHotkey(hotkey, event)) {\n event.preventDefault();\n const mark = HOTKEYS[hotkey];\n toggleMark(editor, mark);\n }\n }\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(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(\n editor,\n format,\n TEXT_ALIGN_TYPES.includes(format) ? 'align' : 'type'\n );\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 ? 'list_item' : 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(\n plugin => typeof plugin.supports === 'function' && plugin.supports(element)\n );\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) => {\n return {\n ...defaultToolbarOpts,\n ...toolbarOpts,\n error,\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 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 };\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 ...props.mathMlOptions,\n },\n image: {\n disableImageAlignmentButtons: props.disableImageAlignmentButtons,\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 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 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 { toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(nextProps.toolbarOpts, nextProps.error);\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\n if (differentCharacterProps || differentMathMlProps) {\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() {\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.setState({ selectedNode: node });\n };\n\n onEditingDone = editor => {\n log('[onEditingDone]');\n // this.setState({ stashedValue: null, focusedNode: null });\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 * 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 (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 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 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 = (editor, done) => {\n log('[onChange]');\n const { charactersLimit } = this.props;\n const allText = Editor.string(editor, []);\n\n if (allText > charactersLimit) {\n return;\n }\n\n const html = valueToHtml(editor);\n const value = htmlToValue(html);\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 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 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 (file && (file.type === 'image/jpeg' || file.type === 'image/jpg' || file.type === 'image/png')) {\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 const handler = new InsertImageHandler(inline, () => this.state.value, this.onChange, true);\n handler.fileChosen(file);\n this.props.imageSupport.add(handler);\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 autoFocus,\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 classes.slateEditor,\n );\n\n return (\n <div ref={(ref) => (this.wrapperRef = ref)} style={{ width: sizeStyle.width }} className={names}>\n <SlateEditor\n plugins={this.plugins}\n toolbarRef={(r) => {\n if (r) {\n this.toolbarRef = r;\n }\n }}\n autoFocus={autoFocus}\n actionsRef={this.props.onRef}\n onEditor={this.props.onEditor}\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 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={pluginProps}\n toolbarOpts={toolbarOpts}\n placeholder={placeholder}\n renderPlaceholder={this.renderPlaceholder}\n />\n </div>\n );\n\n return (\n <div\n ref={ref => (this.wrapperRef = ref)}\n style={{ width: sizeStyle.width }}\n className={names}\n >\n <OldSlateEditor\n plugins={this.plugins}\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 autoCorrect={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 />\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)(EditorComponent);\n"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/editor.jsx"],"names":["log","defaultToolbarOpts","position","alignment","alwaysVisible","showDone","doneOn","defaultResponseAreaProps","options","respAreaToolbar","onHandleAreaChange","defaultLanguageCharactersProps","createToolbarOpts","toolbarOpts","error","isHtmlMode","Editor","props","open","extraDialogProps","callback","setState","dialog","isEdited","prevState","state","newToolbarOpts","normalizedResponseAreaProps","responseAreaProps","htmlPluginOpts","toggleHtmlMode","handleAlertDialog","plugins","activePlugins","math","onClick","onMathClick","onFocus","onPluginFocus","onBlur","onPluginBlur","mathMlOptions","html","image","disableImageAlignmentButtons","onDelete","imageSupport","src","done","e","value","insertImageRequested","getHandler","handler","add","maxImageWidth","maxImageHeight","toolbar","disableScrollbar","disableUnderline","autoWidth","autoWidthToolbar","onDone","nonEmpty","toolbarInFocus","focusedNode","editor","blur","startText","text","length","resetValue","then","onEditingDone","table","responseArea","type","maxResponseAreas","languageCharacters","languageCharactersProps","media","focus","createChange","change","onChange","uploadSoundSupport","mmlOutput","mmlEditing","runSerializationOnMarkup","relatedTarget","target","node","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","file","files","fragment","inline","Inline","create","isVoid","loading","range","select","ch","insertInline","InsertImageHandler","fileChosen","insertFragment","selection","startBlock","defaultBlock","defaultMarks","getInsertMarksAtRange","frag","Plain","deserialize","placeholder","size","display","width","maxWidth","whiteSpace","opacity","pointerEvents","userSelect","onResize","handlePlugins","onRef","window","autoFocus","nextProps","differentCharacterProps","differentMathMlProps","equals","prevProps","zeroWidthEls","querySelectorAll","Array","from","forEach","el","style","minWidth","minHeight","height","maxHeight","valueToSize","disabled","spellCheck","highlightShape","classes","pluginProps","onKeyDown","sizeStyle","buildSizeStyle","names","withBg","toolbarOnTop","ref","r","slateEditor","editorRef","getFocusedValue","onDropPaste","normalize","noPadding","noBorder","renderPlaceholder","changeData","title","onClose","onConfirm","React","Component","PropTypes","bool","func","isRequired","any","SlateTypes","shape","number","oneOfType","string","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"],"mappings":"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","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';\nimport { AlertDialog } from '@pie-lib/config-ui';\n\nimport { getBase64 } from './serialization';\nimport InsertImageHandler from './plugins/image/insert-image-handler';\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 Editor extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n editorRef: PropTypes.func.isRequired,\n error: PropTypes.any,\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 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 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 isHtmlMode: false,\n isEdited: false,\n dialog: {\n open: false,\n },\n };\n\n this.toggleHtmlMode = this.toggleHtmlMode.bind(this);\n\n this.onResize = () => {\n props.onChange(this.state.value, true);\n };\n\n this.handlePlugins(this.props);\n }\n\n handleAlertDialog = (open, extraDialogProps, callback) => {\n this.setState(\n {\n dialog: {\n open,\n ...extraDialogProps,\n },\n isEdited: false,\n },\n callback,\n );\n };\n\n toggleHtmlMode = () => {\n this.setState(\n (prevState) => ({\n isHtmlMode: !prevState.isHtmlMode,\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 isHtmlMode: this.state.isHtmlMode,\n isEdited: this.state.isEdited,\n toggleHtmlMode: this.toggleHtmlMode,\n handleAlertDialog: this.handleAlertDialog,\n };\n\n this.plugins = buildPlugins(props.activePlugins, {\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 ((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 disableScrollbar: !!props.disableScrollbar,\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 if (props.mathMlOptions.mmlOutput || props.mathMlOptions.mmlEditing) {\n this.props.runSerializationOnMarkup();\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(`[data-key=\"${this.editor.value.document.key}\"]`);\n\n this.editor.focus();\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\n if (differentCharacterProps || differentMathMlProps) {\n this.handlePlugins(nextProps);\n }\n\n if (!nextProps.value.document.equals(this.props.value.document)) {\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 if (this.state.isHtmlMode !== prevState.isHtmlMode || prevState.isEdited !== this.state.isEdited) {\n this.handlePlugins(this.props);\n this.onEditingDone();\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.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 = !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 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 (value && value.document && value.document.text && value.document.text.length > charactersLimit) {\n return;\n }\n\n if (!this.state.isHtmlMode) {\n this.setState({ isEdited: false });\n }\n\n if (this.state.isHtmlMode && !isEqual(this.state.value.document.text, value.document.text)) {\n this.setState({ isEdited: true });\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 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 (file && (file.type === 'image/jpeg' || file.type === 'image/jpg' || file.type === 'image/png')) {\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 const handler = new InsertImageHandler(inline, () => this.state.value, this.onChange, true);\n handler.fileChosen(file);\n this.props.imageSupport.add(handler);\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, dialog } = 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 ref={(ref) => (this.wrapperRef = ref)} style={{ width: sizeStyle.width }} className={names}>\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 autoCorrect={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 <AlertDialog\n open={dialog.open}\n title={dialog.title}\n text={dialog.text}\n onClose={dialog.onClose}\n onConfirm={dialog.onConfirm}\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"],"file":"editor.js"}