@pie-lib/editable-html 7.17.4-next.595 → 7.17.4-next.602

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/editor.js CHANGED
@@ -67,6 +67,8 @@ var _renderUi = require("@pie-lib/render-ui");
67
67
 
68
68
  var _slatePlainSerializer = _interopRequireDefault(require("slate-plain-serializer"));
69
69
 
70
+ var _insertImageHandler = _interopRequireDefault(require("./plugins/image/insert-image-handler"));
71
+
70
72
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
71
73
 
72
74
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -505,7 +507,7 @@ var Editor = /*#__PURE__*/function (_React$Component) {
505
507
  });
506
508
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onDropPaste", /*#__PURE__*/function () {
507
509
  var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(event, change, dropContext) {
508
- var editor, transfer, file, type, fragment, text, src, inline, range, ch, _change$value, _document, selection, startBlock, defaultBlock, defaultMarks, frag;
510
+ var editor, transfer, file, type, fragment, text, src, inline, range, ch, handler, _change$value, _document, selection, startBlock, defaultBlock, defaultMarks, frag;
509
511
 
510
512
  return _regenerator["default"].wrap(function _callee$(_context) {
511
513
  while (1) {
@@ -519,7 +521,7 @@ var Editor = /*#__PURE__*/function (_React$Component) {
519
521
  text = transfer.text;
520
522
 
521
523
  if (!(file && (file.type === 'image/jpeg' || file.type === 'image/jpg' || file.type === 'image/png'))) {
522
- _context.next = 25;
524
+ _context.next = 27;
523
525
  break;
524
526
  }
525
527
 
@@ -561,52 +563,58 @@ var Editor = /*#__PURE__*/function (_React$Component) {
561
563
 
562
564
  _this.onChange(ch);
563
565
 
564
- _context.next = 23;
566
+ handler = new _insertImageHandler["default"](inline, function () {
567
+ return _this.state.value;
568
+ }, _this.onChange, true);
569
+
570
+ _this.props.imageSupport.add(handler);
571
+
572
+ _context.next = 25;
565
573
  break;
566
574
 
567
- case 20:
568
- _context.prev = 20;
575
+ case 22:
576
+ _context.prev = 22;
569
577
  _context.t0 = _context["catch"](9);
570
578
  log('[onDropPaste] error: ', _context.t0);
571
579
 
572
- case 23:
573
- _context.next = 39;
580
+ case 25:
581
+ _context.next = 41;
574
582
  break;
575
583
 
576
- case 25:
584
+ case 27:
577
585
  if (!(type === 'fragment')) {
578
- _context.next = 29;
586
+ _context.next = 31;
579
587
  break;
580
588
  }
581
589
 
582
590
  change.insertFragment(fragment);
583
- _context.next = 39;
591
+ _context.next = 41;
584
592
  break;
585
593
 
586
- case 29:
594
+ case 31:
587
595
  if (!(type === 'text' || type === 'html')) {
588
- _context.next = 39;
596
+ _context.next = 41;
589
597
  break;
590
598
  }
591
599
 
592
600
  if (text) {
593
- _context.next = 32;
601
+ _context.next = 34;
594
602
  break;
595
603
  }
596
604
 
597
605
  return _context.abrupt("return");
598
606
 
599
- case 32:
607
+ case 34:
600
608
  _change$value = change.value, _document = _change$value.document, selection = _change$value.selection, startBlock = _change$value.startBlock;
601
609
 
602
610
  if (!startBlock.isVoid) {
603
- _context.next = 35;
611
+ _context.next = 37;
604
612
  break;
605
613
  }
606
614
 
607
615
  return _context.abrupt("return");
608
616
 
609
- case 35:
617
+ case 37:
610
618
  defaultBlock = startBlock;
611
619
  defaultMarks = _document.getInsertMarksAtRange(selection);
612
620
  frag = _slatePlainSerializer["default"].deserialize(text, {
@@ -615,12 +623,12 @@ var Editor = /*#__PURE__*/function (_React$Component) {
615
623
  }).document;
616
624
  change.insertFragment(frag);
617
625
 
618
- case 39:
626
+ case 41:
619
627
  case "end":
620
628
  return _context.stop();
621
629
  }
622
630
  }
623
- }, _callee, null, [[9, 20]]);
631
+ }, _callee, null, [[9, 22]]);
624
632
  }));
625
633
 
626
634
  return function (_x, _x2, _x3) {
package/lib/editor.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"editor.js","names":["log","debug","defaultToolbarOpts","position","alignment","alwaysVisible","showDone","doneOn","defaultResponseAreaProps","options","respAreaToolbar","onHandleAreaChange","defaultLanguageCharactersProps","createToolbarOpts","toolbarOpts","Editor","props","normalizedResponseAreaProps","responseAreaProps","plugins","buildPlugins","activePlugins","math","onClick","onMathClick","onFocus","onPluginFocus","onBlur","onPluginBlur","image","onDelete","imageSupport","src","done","e","state","value","insertImageRequested","getHandler","handler","add","maxImageWidth","maxImageHeight","toolbar","disableScrollbar","disableUnderline","autoWidth","autoWidthToolbar","onDone","nonEmpty","setState","toolbarInFocus","focusedNode","editor","blur","startText","text","length","resetValue","then","onEditingDone","table","responseArea","type","maxResponseAreas","error","languageCharacters","languageCharactersProps","media","focus","createChange","change","onChange","uploadSoundSupport","relatedTarget","target","node","findNode","stashedValue","stashValue","c","collapseToStartOf","selectedNode","resolve","event","Promise","preBlurValue","handleBlur","bind","editorDOM","document","querySelector","key","setTimeout","stateValue","wrapperRef","editorElement","activeElement","closest","className","toolbarElement","toolbarRef","isInCurrentComponent","contains","removeEventListener","handleDomBlur","isFocused","__TEMPORARY_CHANGE_DATA","data","domEl","setNodeByKey","addEventListener","force","stopReset","reduce","s","p","toObject","newValue","Value","fromJSON","toJSON","charactersLimit","v","endsWith","undefined","parseInt","isNaN","object","last","nodes","parent","getParent","Block","pos","dropContext","transfer","getEventTransfer","file","files","fragment","getBase64","inline","Inline","create","isVoid","loading","range","getEventRange","select","ch","insertInline","insertFragment","selection","startBlock","defaultBlock","defaultMarks","getInsertMarksAtRange","frag","Plain","deserialize","placeholder","size","display","width","maxWidth","whiteSpace","opacity","pointerEvents","userSelect","onResize","handlePlugins","onRef","window","autoFocus","nextProps","newToolbarOpts","isEqual","zeroWidthEls","querySelectorAll","Array","from","forEach","el","style","minWidth","equals","minHeight","height","maxHeight","valueToSize","disabled","spellCheck","highlightShape","classes","pluginProps","onKeyDown","sizeStyle","buildSizeStyle","names","classNames","withBg","toolbarOnTop","ref","r","slateEditor","editorRef","getFocusedValue","onDropPaste","normalize","noPadding","noBorder","renderPlaceholder","changeData","React","Component","PropTypes","bool","func","isRequired","SlateTypes","shape","number","oneOfType","string","any","oneOf","arrayOf","language","characterIcon","characters","values","allValid","every","ALL_PLUGINS","includes","Error","join","styles","backgroundColor","fontFamily","tableLayout","borderCollapse","color","background","borderTop","padding","textAlign","border","marginTop","withStyles"],"sources":["../src/editor.jsx"],"sourcesContent":["import { Editor as SlateEditor, findNode, getEventRange, getEventTransfer } from 'slate-react';\nimport SlateTypes from 'slate-prop-types';\n\nimport isEqual from 'lodash/isEqual';\nimport * as serialization from './serialization';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { Value, Block, Inline } from 'slate';\nimport { buildPlugins, ALL_PLUGINS, DEFAULT_PLUGINS } from './plugins';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\nimport Plain from 'slate-plain-serializer';\n\nimport { getBase64 } from './serialization';\n\nexport { ALL_PLUGINS, DEFAULT_PLUGINS, serialization };\n\nconst log = debug('editable-html:editor');\n\nconst defaultToolbarOpts = {\n position: 'bottom',\n alignment: 'left',\n alwaysVisible: false,\n showDone: true,\n doneOn: 'blur'\n};\n\nconst defaultResponseAreaProps = {\n options: {},\n respAreaToolbar: () => {},\n onHandleAreaChange: () => {}\n};\n\nconst defaultLanguageCharactersProps = [];\n\nconst createToolbarOpts = toolbarOpts => {\n return {\n ...defaultToolbarOpts,\n ...toolbarOpts\n };\n};\n\nexport class Editor extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n editorRef: PropTypes.func.isRequired,\n onRef: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyDown: PropTypes.func,\n focus: PropTypes.func.isRequired,\n value: SlateTypes.value.isRequired,\n imageSupport: PropTypes.object,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func\n }),\n charactersLimit: PropTypes.number,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n classes: PropTypes.object.isRequired,\n highlightShape: PropTypes.bool,\n disabled: PropTypes.bool,\n spellCheck: PropTypes.bool,\n nonEmpty: PropTypes.bool,\n 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([\n 'explicit-constructed-response',\n 'inline-dropdown',\n 'drag-in-the-blank'\n ]),\n options: PropTypes.object,\n respAreaToolbar: PropTypes.func,\n onHandleAreaChange: PropTypes.func\n }),\n languageCharactersProps: PropTypes.arrayOf(\n PropTypes.shape({\n language: PropTypes.string,\n characterIcon: PropTypes.string,\n characters: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string))\n })\n ),\n toolbarOpts: PropTypes.shape({\n position: PropTypes.oneOf(['bottom', 'top']),\n alignment: PropTypes.oneOf(['left', 'right']),\n alwaysVisible: PropTypes.bool,\n showDone: PropTypes.bool,\n doneOn: PropTypes.string\n }),\n activePlugins: PropTypes.arrayOf(values => {\n const allValid = values.every(v => ALL_PLUGINS.includes(v));\n\n return (\n !allValid &&\n new Error(`Invalid values: ${values}, values must be one of [${ALL_PLUGINS.join(',')}]`)\n );\n }),\n className: PropTypes.string,\n maxImageWidth: PropTypes.number,\n maxImageHeight: PropTypes.number\n };\n\n static defaultProps = {\n disableUnderline: true,\n onFocus: () => {},\n onBlur: () => {},\n onKeyDown: () => {},\n toolbarOpts: defaultToolbarOpts,\n responseAreaProps: defaultResponseAreaProps,\n languageCharactersProps: defaultLanguageCharactersProps\n };\n\n constructor(props) {\n super(props);\n this.state = {\n value: props.value,\n toolbarOpts: createToolbarOpts(props.toolbarOpts)\n };\n\n this.onResize = () => {\n props.onChange(this.state.value, true);\n };\n\n this.handlePlugins(this.props);\n }\n\n handlePlugins = props => {\n const normalizedResponseAreaProps = {\n ...defaultResponseAreaProps,\n ...props.responseAreaProps\n };\n\n this.plugins = buildPlugins(props.activePlugins, {\n math: {\n onClick: this.onMathClick,\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur\n },\n image: {\n onDelete:\n props.imageSupport &&\n props.imageSupport.delete &&\n ((src, done) => {\n props.imageSupport.delete(src, e => {\n done(e, this.state.value);\n });\n }),\n insertImageRequested:\n props.imageSupport &&\n (getHandler => {\n /**\n * The handler is the object through which the outer context\n * communicates file upload events like: fileChosen, cancel, progress\n */\n const handler = getHandler(() => this.state.value);\n props.imageSupport.add(handler);\n }),\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur,\n maxImageWidth: this.props.maxImageWidth,\n maxImageHeight: this.props.maxImageHeight\n },\n toolbar: {\n /**\n * To minimize converting html -> state -> html\n * We only emit markup once 'done' is clicked.\n */\n 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\n componentDidMount() {\n // onRef is needed to get the ref of the component because we export it using withStyles\n this.props.onRef(this);\n\n window.addEventListener('resize', this.onResize);\n\n if (this.editor && this.props.autoFocus) {\n Promise.resolve().then(() => {\n if (this.editor) {\n const editorDOM = document.querySelector(\n `[data-key=\"${this.editor.value.document.key}\"]`\n );\n\n this.editor.focus();\n\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const { toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(nextProps.toolbarOpts);\n\n if (!isEqual(newToolbarOpts, toolbarOpts)) {\n this.setState({\n toolbarOpts: newToolbarOpts\n });\n }\n\n if (!isEqual(nextProps.languageCharactersProps, this.props.languageCharactersProps)) {\n this.handlePlugins(nextProps);\n }\n }\n\n componentDidUpdate() {\n // The cursor is on a zero width element and when that is placed near void elements, it is not visible\n // so we increase the width to at least 2px in order for the user to see it\n const zeroWidthEls = document.querySelectorAll('[data-slate-zero-width=\"z\"]');\n\n Array.from(zeroWidthEls).forEach(el => {\n el.style.minWidth = '2px';\n el.style.display = 'inline-block';\n });\n }\n\n onPluginBlur = e => {\n log('[onPluginBlur]', e && e.relatedTarget);\n const target = e && e.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n log('[onPluginBlur] node: ', node);\n this.setState({ focusedNode: node }, () => {\n this.resetValue();\n });\n };\n\n onPluginFocus = e => {\n log('[onPluginFocus]', e && e.target);\n const target = e && e.target;\n if (target) {\n const node = findNode(target, this.state.value);\n log('[onPluginFocus] node: ', node);\n\n const stashedValue = this.state.stashedValue || this.state.value;\n this.setState({ focusedNode: node, stashedValue });\n } else {\n this.setState({ focusedNode: null });\n }\n this.stashValue();\n };\n\n onMathClick = node => {\n this.editor.change(c => c.collapseToStartOf(node));\n this.setState({ selectedNode: node });\n };\n\n onEditingDone = () => {\n log('[onEditingDone]');\n this.setState({ stashedValue: null, focusedNode: null });\n log('[onEditingDone] value: ', this.state.value);\n this.props.onChange(this.state.value, true);\n };\n\n /**\n * Remove onResize event listener\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize);\n }\n\n // Allowing time for onChange to take effect if it is called\n handleBlur = resolve => {\n const { nonEmpty } = this.props;\n const {\n toolbarOpts: { doneOn }\n } = this.state;\n\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n if (this.editor) {\n this.editor.blur();\n }\n\n if (doneOn === 'blur') {\n if (nonEmpty && this.state.value.startText?.text?.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n resolve();\n });\n } else {\n this.onEditingDone();\n resolve();\n }\n }\n };\n\n onBlur = event => {\n log('[onBlur]');\n const target = event.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n\n log('[onBlur] node: ', node);\n\n return new Promise(resolve => {\n this.setState(\n { preBlurValue: this.state.value, focusedNode: !node ? null : node },\n this.handleBlur.bind(this, resolve)\n );\n this.props.onBlur(event);\n });\n };\n\n handleDomBlur = e => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n setTimeout(() => {\n const { value: stateValue } = this.state;\n\n if (!this.wrapperRef) {\n return;\n }\n\n const editorElement =\n !editorDOM || document.activeElement.closest(`[class*=\"${editorDOM.className}\"]`);\n const toolbarElement =\n !this.toolbarRef ||\n document.activeElement.closest(`[class*=\"${this.toolbarRef.className}\"]`);\n const isInCurrentComponent =\n this.wrapperRef.contains(editorElement) || this.wrapperRef.contains(toolbarElement);\n\n if (!isInCurrentComponent) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n\n if (stateValue.isFocused) {\n this.onBlur(e);\n }\n }\n }, 50);\n };\n\n /*\n * Needs to be wrapped otherwise it causes issues because of race conditions\n * Known issue for slatejs. See: https://github.com/ianstormtaylor/slate/issues/2097\n * Using timeout I wasn't able to test this\n *\n * Note: The use of promises has been causing issues with MathQuill\n * */\n onFocus = () =>\n new Promise(resolve => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n log('[onFocus]', document.activeElement);\n\n /**\n * This is a temporary hack - @see changeData below for some more information.\n */\n if (this.__TEMPORARY_CHANGE_DATA) {\n const { key, data } = this.__TEMPORARY_CHANGE_DATA;\n const domEl = document.querySelector(`[data-key=\"${key}\"]`);\n\n if (domEl) {\n let change = this.state.value.change().setNodeByKey(key, { data });\n\n this.setState({ value: change.value }, () => {\n this.__TEMPORARY_CHANGE_DATA = null;\n });\n }\n }\n\n /**\n * This is needed just in case the browser decides to make the editor\n * lose focus without triggering the onBlur event (can happen in a few cases).\n * This will also trigger onBlur if the user clicks outside of the page when the editor\n * is focused.\n */\n if (editorDOM === document.activeElement) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n editorDOM.addEventListener('blur', this.handleDomBlur);\n }\n\n this.stashValue();\n this.props.onFocus();\n\n resolve();\n });\n\n stashValue = () => {\n log('[stashValue]');\n if (!this.state.stashedValue) {\n this.setState({ stashedValue: this.state.value });\n }\n };\n\n /**\n * Reset the value if the user didn't click done.\n */\n resetValue = force => {\n const { value, focusedNode } = this.state;\n\n const stopReset = this.plugins.reduce((s, p) => {\n return s || (p.stopReset && p.stopReset(this.state.value));\n }, false);\n\n log('[resetValue]', value.isFocused, focusedNode, 'stopReset: ', stopReset);\n if ((this.state.stashedValue && !value.isFocused && !focusedNode && !stopReset) || force) {\n log('[resetValue] resetting...');\n log('stashed', this.state.stashedValue.document.toObject());\n log('current', this.state.value.document.toObject());\n\n const newValue = Value.fromJSON(this.state.stashedValue.toJSON());\n\n log('newValue: ', newValue.document);\n return new Promise(resolve => {\n setTimeout(() => {\n this.setState({ value: newValue, stashedValue: null }, () => {\n log('value now: ', this.state.value.document.toJSON());\n resolve();\n });\n }, 50);\n });\n } else {\n return Promise.resolve({});\n }\n };\n\n onChange = (change, done) => {\n log('[onChange]');\n\n const { value } = change;\n const { charactersLimit } = this.props;\n\n if (\n value &&\n value.document &&\n value.document.text &&\n value.document.text.length > charactersLimit\n ) {\n return;\n }\n\n this.setState({ value }, () => {\n log('[onChange], call done()');\n\n if (done) {\n done();\n }\n });\n };\n\n getFocusedValue = () => {\n if (this.state.value.isFocused) {\n return this.state.value;\n }\n\n return this.state.preBlurValue;\n };\n\n UNSAFE_componentWillReceiveProps(props) {\n if (!props.value.document.equals(this.props.value.document)) {\n this.setState({\n focus: false,\n value: props.value\n });\n }\n }\n\n valueToSize = v => {\n if (!v) {\n return;\n }\n\n if (typeof v === 'string') {\n if (v.endsWith('%')) {\n return undefined;\n } else if (v.endsWith('px') || v.endsWith('vh') || v.endsWith('vw')) {\n return v;\n } else {\n const value = parseInt(v, 10);\n return isNaN(value) ? value : `${value}px`;\n }\n }\n if (typeof v === 'number') {\n return `${v}px`;\n }\n\n return;\n };\n\n buildSizeStyle() {\n const { width, minHeight, height, maxHeight } = this.props;\n\n return {\n width: this.valueToSize(width),\n height: this.valueToSize(height),\n minHeight: this.valueToSize(minHeight),\n maxHeight: this.valueToSize(maxHeight)\n };\n }\n\n validateNode = node => {\n if (node.object !== 'block') return;\n\n const last = node.nodes.last();\n if (!last) return;\n\n if (last.type !== 'image') return;\n\n log('[validateNode] last is image..');\n\n const parent = last.getParent(last.key);\n const p = Block.getParent(last.key);\n log('[validateNode] parent:', parent, p);\n\n return undefined;\n };\n\n changeData = (key, data) => {\n log('[changeData]. .. ', key, data);\n\n /**\n * HACK ALERT: We should be calling setState here and storing the change data:\n *\n * <code>this.setState({changeData: { key, data}})</code>\n * However this is causing issues with the Mathquill instance. The 'input' event stops firing on the element and no\n * more changes get through. The issues seem to be related to the promises in onBlur/onFocus. But removing these\n * brings it's own problems. A major clean up is planned for this component so I've decided to temporarily settle\n * on this hack rather than spend more time on this.\n */\n\n // Uncomment this line to see the bug described above.\n // this.setState({changeData: {key, data}})\n\n this.__TEMPORARY_CHANGE_DATA = { key, data };\n };\n\n focus = (pos, node) => {\n const position = pos || 'end';\n\n this.props.focus(position, node);\n };\n\n onDropPaste = async (event, change, dropContext) => {\n const editor = change.editor;\n const transfer = getEventTransfer(event);\n const file = transfer.files && transfer.files[0];\n\n const type = transfer.type;\n const fragment = transfer.fragment;\n const text = transfer.text;\n\n if (\n file &&\n (file.type === 'image/jpeg' || file.type === 'image/jpg' || file.type === 'image/png')\n ) {\n if (!this.props.imageSupport) {\n return;\n }\n try {\n log('[onDropPaste]');\n const src = await getBase64(file);\n const inline = Inline.create({\n type: 'image',\n isVoid: true,\n data: {\n loading: false,\n src\n }\n });\n\n if (dropContext) {\n this.focus();\n } else {\n const range = getEventRange(event, editor);\n if (range) {\n change.select(range);\n }\n }\n\n const ch = change.insertInline(inline);\n this.onChange(ch);\n } catch (err) {\n log('[onDropPaste] error: ', err);\n }\n } else if (type === 'fragment') {\n change.insertFragment(fragment);\n } else if (type === 'text' || type === 'html') {\n if (!text) {\n return;\n }\n const {\n value: { document, selection, startBlock }\n } = change;\n\n if (startBlock.isVoid) {\n return;\n }\n\n const defaultBlock = startBlock;\n const defaultMarks = document.getInsertMarksAtRange(selection);\n const frag = Plain.deserialize(text, {\n defaultBlock,\n defaultMarks\n }).document;\n change.insertFragment(frag);\n }\n };\n\n renderPlaceholder = props => {\n const { editor } = props;\n const { document } = editor.value;\n\n if (!editor.props.placeholder || document.text !== '' || document.nodes.size !== 1) {\n return false;\n }\n\n return (\n <span\n contentEditable={false}\n style={{\n display: 'inline-block',\n width: 'fit-content', // for centering the placeholder if text-align is set to center\n maxWidth: '100%',\n whiteSpace: 'nowrap',\n opacity: '0.33',\n pointerEvents: 'none',\n userSelect: 'none'\n }}\n >\n {editor.props.placeholder}\n </span>\n );\n };\n\n render() {\n const {\n disabled,\n spellCheck,\n highlightShape,\n classes,\n className,\n placeholder,\n pluginProps,\n onKeyDown\n } = this.props;\n\n const { value, focusedNode, toolbarOpts } = this.state;\n\n log('[render] value: ', value);\n const sizeStyle = this.buildSizeStyle();\n const names = classNames(\n {\n [classes.withBg]: highlightShape,\n [classes.toolbarOnTop]: toolbarOpts.alwaysVisible && toolbarOpts.position === 'top'\n },\n className\n );\n\n return (\n <div\n ref={ref => (this.wrapperRef = ref)}\n style={{ width: sizeStyle.width }}\n className={names}\n >\n <SlateEditor\n plugins={this.plugins}\n innerRef={r => {\n if (r) {\n this.slateEditor = r;\n }\n }}\n ref={r => (this.editor = r && this.props.editorRef(r))}\n toolbarRef={r => {\n if (r) {\n this.toolbarRef = r;\n }\n }}\n value={value}\n focus={this.focus}\n onKeyDown={onKeyDown}\n onChange={this.onChange}\n getFocusedValue={this.getFocusedValue}\n onBlur={this.onBlur}\n onDrop={(event, editor) => this.onDropPaste(event, editor, true)}\n onPaste={(event, editor) => this.onDropPaste(event, editor)}\n onFocus={this.onFocus}\n onEditingDone={this.onEditingDone}\n focusedNode={focusedNode}\n normalize={this.normalize}\n readOnly={disabled}\n spellCheck={spellCheck}\n className={classNames(\n {\n [classes.noPadding]: toolbarOpts && toolbarOpts.noBorder\n },\n classes.slateEditor\n )}\n style={{\n minHeight: sizeStyle.minHeight,\n height: sizeStyle.height,\n maxHeight: sizeStyle.maxHeight\n }}\n pluginProps={pluginProps}\n toolbarOpts={toolbarOpts}\n placeholder={placeholder}\n renderPlaceholder={this.renderPlaceholder}\n onDataChange={this.changeData}\n />\n </div>\n );\n }\n}\n\n// TODO color - hardcoded gray background and keypad colors will need to change too\nconst styles = {\n withBg: {\n backgroundColor: 'rgba(0,0,0,0.06)'\n },\n slateEditor: {\n fontFamily: 'Roboto, sans-serif',\n\n '& table': {\n tableLayout: 'fixed',\n width: '100%',\n borderCollapse: 'collapse',\n color: color.text(),\n backgroundColor: color.background()\n },\n '& table:not([border=\"1\"]) tr': {\n borderTop: '1px solid #dfe2e5'\n // TODO perhaps secondary color for background, for now disable\n // '&:nth-child(2n)': {\n // backgroundColor: '#f6f8fa'\n // }\n },\n '& td, th': {\n padding: '.6em 1em',\n textAlign: 'center'\n },\n '& table:not([border=\"1\"]) td, th': {\n border: '1px solid #dfe2e5'\n }\n },\n toolbarOnTop: {\n marginTop: '45px'\n },\n noPadding: {\n padding: '0 !important'\n }\n};\n\nexport default withStyles(styles)(Editor);\n"],"mappings":"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"}
1
+ {"version":3,"file":"editor.js","names":["log","debug","defaultToolbarOpts","position","alignment","alwaysVisible","showDone","doneOn","defaultResponseAreaProps","options","respAreaToolbar","onHandleAreaChange","defaultLanguageCharactersProps","createToolbarOpts","toolbarOpts","Editor","props","normalizedResponseAreaProps","responseAreaProps","plugins","buildPlugins","activePlugins","math","onClick","onMathClick","onFocus","onPluginFocus","onBlur","onPluginBlur","image","onDelete","imageSupport","src","done","e","state","value","insertImageRequested","getHandler","handler","add","maxImageWidth","maxImageHeight","toolbar","disableScrollbar","disableUnderline","autoWidth","autoWidthToolbar","onDone","nonEmpty","setState","toolbarInFocus","focusedNode","editor","blur","startText","text","length","resetValue","then","onEditingDone","table","responseArea","type","maxResponseAreas","error","languageCharacters","languageCharactersProps","media","focus","createChange","change","onChange","uploadSoundSupport","relatedTarget","target","node","findNode","stashedValue","stashValue","c","collapseToStartOf","selectedNode","resolve","event","Promise","preBlurValue","handleBlur","bind","editorDOM","document","querySelector","key","setTimeout","stateValue","wrapperRef","editorElement","activeElement","closest","className","toolbarElement","toolbarRef","isInCurrentComponent","contains","removeEventListener","handleDomBlur","isFocused","__TEMPORARY_CHANGE_DATA","data","domEl","setNodeByKey","addEventListener","force","stopReset","reduce","s","p","toObject","newValue","Value","fromJSON","toJSON","charactersLimit","v","endsWith","undefined","parseInt","isNaN","object","last","nodes","parent","getParent","Block","pos","dropContext","transfer","getEventTransfer","file","files","fragment","getBase64","inline","Inline","create","isVoid","loading","range","getEventRange","select","ch","insertInline","InsertImageHandler","insertFragment","selection","startBlock","defaultBlock","defaultMarks","getInsertMarksAtRange","frag","Plain","deserialize","placeholder","size","display","width","maxWidth","whiteSpace","opacity","pointerEvents","userSelect","onResize","handlePlugins","onRef","window","autoFocus","nextProps","newToolbarOpts","isEqual","zeroWidthEls","querySelectorAll","Array","from","forEach","el","style","minWidth","equals","minHeight","height","maxHeight","valueToSize","disabled","spellCheck","highlightShape","classes","pluginProps","onKeyDown","sizeStyle","buildSizeStyle","names","classNames","withBg","toolbarOnTop","ref","r","slateEditor","editorRef","getFocusedValue","onDropPaste","normalize","noPadding","noBorder","renderPlaceholder","changeData","React","Component","PropTypes","bool","func","isRequired","SlateTypes","shape","number","oneOfType","string","any","oneOf","arrayOf","language","characterIcon","characters","values","allValid","every","ALL_PLUGINS","includes","Error","join","styles","backgroundColor","fontFamily","tableLayout","borderCollapse","color","background","borderTop","padding","textAlign","border","marginTop","withStyles"],"sources":["../src/editor.jsx"],"sourcesContent":["import { Editor as SlateEditor, findNode, getEventRange, getEventTransfer } from 'slate-react';\nimport SlateTypes from 'slate-prop-types';\n\nimport isEqual from 'lodash/isEqual';\nimport * as serialization from './serialization';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { Value, Block, Inline } from 'slate';\nimport { buildPlugins, ALL_PLUGINS, DEFAULT_PLUGINS } from './plugins';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\nimport Plain from 'slate-plain-serializer';\n\nimport { getBase64 } from './serialization';\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 => {\n return {\n ...defaultToolbarOpts,\n ...toolbarOpts\n };\n};\n\nexport class Editor extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n editorRef: PropTypes.func.isRequired,\n onRef: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyDown: PropTypes.func,\n focus: PropTypes.func.isRequired,\n value: SlateTypes.value.isRequired,\n imageSupport: PropTypes.object,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func\n }),\n charactersLimit: PropTypes.number,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n classes: PropTypes.object.isRequired,\n highlightShape: PropTypes.bool,\n disabled: PropTypes.bool,\n spellCheck: PropTypes.bool,\n nonEmpty: PropTypes.bool,\n 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([\n 'explicit-constructed-response',\n 'inline-dropdown',\n 'drag-in-the-blank'\n ]),\n options: PropTypes.object,\n respAreaToolbar: PropTypes.func,\n onHandleAreaChange: PropTypes.func\n }),\n languageCharactersProps: PropTypes.arrayOf(\n PropTypes.shape({\n language: PropTypes.string,\n characterIcon: PropTypes.string,\n characters: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string))\n })\n ),\n toolbarOpts: PropTypes.shape({\n position: PropTypes.oneOf(['bottom', 'top']),\n alignment: PropTypes.oneOf(['left', 'right']),\n alwaysVisible: PropTypes.bool,\n showDone: PropTypes.bool,\n doneOn: PropTypes.string\n }),\n activePlugins: PropTypes.arrayOf(values => {\n const allValid = values.every(v => ALL_PLUGINS.includes(v));\n\n return (\n !allValid &&\n new Error(`Invalid values: ${values}, values must be one of [${ALL_PLUGINS.join(',')}]`)\n );\n }),\n className: PropTypes.string,\n maxImageWidth: PropTypes.number,\n maxImageHeight: PropTypes.number\n };\n\n static defaultProps = {\n disableUnderline: true,\n onFocus: () => {},\n onBlur: () => {},\n onKeyDown: () => {},\n toolbarOpts: defaultToolbarOpts,\n responseAreaProps: defaultResponseAreaProps,\n languageCharactersProps: defaultLanguageCharactersProps\n };\n\n constructor(props) {\n super(props);\n this.state = {\n value: props.value,\n toolbarOpts: createToolbarOpts(props.toolbarOpts)\n };\n\n this.onResize = () => {\n props.onChange(this.state.value, true);\n };\n\n this.handlePlugins(this.props);\n }\n\n handlePlugins = props => {\n const normalizedResponseAreaProps = {\n ...defaultResponseAreaProps,\n ...props.responseAreaProps\n };\n\n this.plugins = buildPlugins(props.activePlugins, {\n math: {\n onClick: this.onMathClick,\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur\n },\n image: {\n onDelete:\n props.imageSupport &&\n props.imageSupport.delete &&\n ((src, done) => {\n props.imageSupport.delete(src, e => {\n done(e, this.state.value);\n });\n }),\n insertImageRequested:\n props.imageSupport &&\n (getHandler => {\n /**\n * The handler is the object through which the outer context\n * communicates file upload events like: fileChosen, cancel, progress\n */\n const handler = getHandler(() => this.state.value);\n props.imageSupport.add(handler);\n }),\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur,\n maxImageWidth: this.props.maxImageWidth,\n maxImageHeight: this.props.maxImageHeight\n },\n toolbar: {\n /**\n * To minimize converting html -> state -> html\n * We only emit markup once 'done' is clicked.\n */\n 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\n componentDidMount() {\n // onRef is needed to get the ref of the component because we export it using withStyles\n this.props.onRef(this);\n\n window.addEventListener('resize', this.onResize);\n\n if (this.editor && this.props.autoFocus) {\n Promise.resolve().then(() => {\n if (this.editor) {\n const editorDOM = document.querySelector(\n `[data-key=\"${this.editor.value.document.key}\"]`\n );\n\n this.editor.focus();\n\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const { toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(nextProps.toolbarOpts);\n\n if (!isEqual(newToolbarOpts, toolbarOpts)) {\n this.setState({\n toolbarOpts: newToolbarOpts\n });\n }\n\n if (!isEqual(nextProps.languageCharactersProps, this.props.languageCharactersProps)) {\n this.handlePlugins(nextProps);\n }\n }\n\n componentDidUpdate() {\n // The cursor is on a zero width element and when that is placed near void elements, it is not visible\n // so we increase the width to at least 2px in order for the user to see it\n const zeroWidthEls = document.querySelectorAll('[data-slate-zero-width=\"z\"]');\n\n Array.from(zeroWidthEls).forEach(el => {\n el.style.minWidth = '2px';\n el.style.display = 'inline-block';\n });\n }\n\n onPluginBlur = e => {\n log('[onPluginBlur]', e && e.relatedTarget);\n const target = e && e.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n log('[onPluginBlur] node: ', node);\n this.setState({ focusedNode: node }, () => {\n this.resetValue();\n });\n };\n\n onPluginFocus = e => {\n log('[onPluginFocus]', e && e.target);\n const target = e && e.target;\n if (target) {\n const node = findNode(target, this.state.value);\n log('[onPluginFocus] node: ', node);\n\n const stashedValue = this.state.stashedValue || this.state.value;\n this.setState({ focusedNode: node, stashedValue });\n } else {\n this.setState({ focusedNode: null });\n }\n this.stashValue();\n };\n\n onMathClick = node => {\n this.editor.change(c => c.collapseToStartOf(node));\n this.setState({ selectedNode: node });\n };\n\n onEditingDone = () => {\n log('[onEditingDone]');\n this.setState({ stashedValue: null, focusedNode: null });\n log('[onEditingDone] value: ', this.state.value);\n this.props.onChange(this.state.value, true);\n };\n\n /**\n * Remove onResize event listener\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize);\n }\n\n // Allowing time for onChange to take effect if it is called\n handleBlur = resolve => {\n const { nonEmpty } = this.props;\n const {\n toolbarOpts: { doneOn }\n } = this.state;\n\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n if (this.editor) {\n this.editor.blur();\n }\n\n if (doneOn === 'blur') {\n if (nonEmpty && this.state.value.startText?.text?.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n resolve();\n });\n } else {\n this.onEditingDone();\n resolve();\n }\n }\n };\n\n onBlur = event => {\n log('[onBlur]');\n const target = event.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n\n log('[onBlur] node: ', node);\n\n return new Promise(resolve => {\n this.setState(\n { preBlurValue: this.state.value, focusedNode: !node ? null : node },\n this.handleBlur.bind(this, resolve)\n );\n this.props.onBlur(event);\n });\n };\n\n handleDomBlur = e => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n setTimeout(() => {\n const { value: stateValue } = this.state;\n\n if (!this.wrapperRef) {\n return;\n }\n\n const editorElement =\n !editorDOM || document.activeElement.closest(`[class*=\"${editorDOM.className}\"]`);\n const toolbarElement =\n !this.toolbarRef ||\n document.activeElement.closest(`[class*=\"${this.toolbarRef.className}\"]`);\n const isInCurrentComponent =\n this.wrapperRef.contains(editorElement) || this.wrapperRef.contains(toolbarElement);\n\n if (!isInCurrentComponent) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n\n if (stateValue.isFocused) {\n this.onBlur(e);\n }\n }\n }, 50);\n };\n\n /*\n * Needs to be wrapped otherwise it causes issues because of race conditions\n * Known issue for slatejs. See: https://github.com/ianstormtaylor/slate/issues/2097\n * Using timeout I wasn't able to test this\n *\n * Note: The use of promises has been causing issues with MathQuill\n * */\n onFocus = () =>\n new Promise(resolve => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n log('[onFocus]', document.activeElement);\n\n /**\n * This is a temporary hack - @see changeData below for some more information.\n */\n if (this.__TEMPORARY_CHANGE_DATA) {\n const { key, data } = this.__TEMPORARY_CHANGE_DATA;\n const domEl = document.querySelector(`[data-key=\"${key}\"]`);\n\n if (domEl) {\n let change = this.state.value.change().setNodeByKey(key, { data });\n\n this.setState({ value: change.value }, () => {\n this.__TEMPORARY_CHANGE_DATA = null;\n });\n }\n }\n\n /**\n * This is needed just in case the browser decides to make the editor\n * lose focus without triggering the onBlur event (can happen in a few cases).\n * This will also trigger onBlur if the user clicks outside of the page when the editor\n * is focused.\n */\n if (editorDOM === document.activeElement) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n editorDOM.addEventListener('blur', this.handleDomBlur);\n }\n\n this.stashValue();\n this.props.onFocus();\n\n resolve();\n });\n\n stashValue = () => {\n log('[stashValue]');\n if (!this.state.stashedValue) {\n this.setState({ stashedValue: this.state.value });\n }\n };\n\n /**\n * Reset the value if the user didn't click done.\n */\n resetValue = force => {\n const { value, focusedNode } = this.state;\n\n const stopReset = this.plugins.reduce((s, p) => {\n return s || (p.stopReset && p.stopReset(this.state.value));\n }, false);\n\n log('[resetValue]', value.isFocused, focusedNode, 'stopReset: ', stopReset);\n if ((this.state.stashedValue && !value.isFocused && !focusedNode && !stopReset) || force) {\n log('[resetValue] resetting...');\n log('stashed', this.state.stashedValue.document.toObject());\n log('current', this.state.value.document.toObject());\n\n const newValue = Value.fromJSON(this.state.stashedValue.toJSON());\n\n log('newValue: ', newValue.document);\n return new Promise(resolve => {\n setTimeout(() => {\n this.setState({ value: newValue, stashedValue: null }, () => {\n log('value now: ', this.state.value.document.toJSON());\n resolve();\n });\n }, 50);\n });\n } else {\n return Promise.resolve({});\n }\n };\n\n onChange = (change, done) => {\n log('[onChange]');\n\n const { value } = change;\n const { charactersLimit } = this.props;\n\n if (\n value &&\n value.document &&\n value.document.text &&\n value.document.text.length > charactersLimit\n ) {\n return;\n }\n\n this.setState({ value }, () => {\n log('[onChange], call done()');\n\n if (done) {\n done();\n }\n });\n };\n\n getFocusedValue = () => {\n if (this.state.value.isFocused) {\n return this.state.value;\n }\n\n return this.state.preBlurValue;\n };\n\n UNSAFE_componentWillReceiveProps(props) {\n if (!props.value.document.equals(this.props.value.document)) {\n this.setState({\n focus: false,\n value: props.value\n });\n }\n }\n\n valueToSize = v => {\n if (!v) {\n return;\n }\n\n if (typeof v === 'string') {\n if (v.endsWith('%')) {\n return undefined;\n } else if (v.endsWith('px') || v.endsWith('vh') || v.endsWith('vw')) {\n return v;\n } else {\n const value = parseInt(v, 10);\n return isNaN(value) ? value : `${value}px`;\n }\n }\n if (typeof v === 'number') {\n return `${v}px`;\n }\n\n return;\n };\n\n buildSizeStyle() {\n const { width, minHeight, height, maxHeight } = this.props;\n\n return {\n width: this.valueToSize(width),\n height: this.valueToSize(height),\n minHeight: this.valueToSize(minHeight),\n maxHeight: this.valueToSize(maxHeight)\n };\n }\n\n validateNode = node => {\n if (node.object !== 'block') return;\n\n const last = node.nodes.last();\n if (!last) return;\n\n if (last.type !== 'image') return;\n\n log('[validateNode] last is image..');\n\n const parent = last.getParent(last.key);\n const p = Block.getParent(last.key);\n log('[validateNode] parent:', parent, p);\n\n return undefined;\n };\n\n changeData = (key, data) => {\n log('[changeData]. .. ', key, data);\n\n /**\n * HACK ALERT: We should be calling setState here and storing the change data:\n *\n * <code>this.setState({changeData: { key, data}})</code>\n * However this is causing issues with the Mathquill instance. The 'input' event stops firing on the element and no\n * more changes get through. The issues seem to be related to the promises in onBlur/onFocus. But removing these\n * brings it's own problems. A major clean up is planned for this component so I've decided to temporarily settle\n * on this hack rather than spend more time on this.\n */\n\n // Uncomment this line to see the bug described above.\n // this.setState({changeData: {key, data}})\n\n this.__TEMPORARY_CHANGE_DATA = { key, data };\n };\n\n focus = (pos, node) => {\n const position = pos || 'end';\n\n this.props.focus(position, node);\n };\n\n onDropPaste = async (event, change, dropContext) => {\n const editor = change.editor;\n const transfer = getEventTransfer(event);\n const file = transfer.files && transfer.files[0];\n\n const type = transfer.type;\n const fragment = transfer.fragment;\n const text = transfer.text;\n\n if (\n file &&\n (file.type === 'image/jpeg' || file.type === 'image/jpg' || file.type === 'image/png')\n ) {\n if (!this.props.imageSupport) {\n return;\n }\n try {\n log('[onDropPaste]');\n const src = await getBase64(file);\n const inline = Inline.create({\n type: 'image',\n isVoid: true,\n data: {\n loading: false,\n src\n }\n });\n\n if (dropContext) {\n this.focus();\n } else {\n const range = getEventRange(event, editor);\n if (range) {\n change.select(range);\n }\n }\n\n const ch = change.insertInline(inline);\n this.onChange(ch);\n const handler = new InsertImageHandler(inline, () => this.state.value, this.onChange, true);\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 } = this.state;\n\n log('[render] value: ', value);\n const sizeStyle = this.buildSizeStyle();\n const names = classNames(\n {\n [classes.withBg]: highlightShape,\n [classes.toolbarOnTop]: toolbarOpts.alwaysVisible && toolbarOpts.position === 'top'\n },\n className\n );\n\n return (\n <div\n ref={ref => (this.wrapperRef = ref)}\n style={{ width: sizeStyle.width }}\n className={names}\n >\n <SlateEditor\n plugins={this.plugins}\n innerRef={r => {\n if (r) {\n this.slateEditor = r;\n }\n }}\n ref={r => (this.editor = r && this.props.editorRef(r))}\n toolbarRef={r => {\n if (r) {\n this.toolbarRef = r;\n }\n }}\n value={value}\n focus={this.focus}\n onKeyDown={onKeyDown}\n onChange={this.onChange}\n getFocusedValue={this.getFocusedValue}\n onBlur={this.onBlur}\n onDrop={(event, editor) => this.onDropPaste(event, editor, true)}\n onPaste={(event, editor) => this.onDropPaste(event, editor)}\n onFocus={this.onFocus}\n onEditingDone={this.onEditingDone}\n focusedNode={focusedNode}\n normalize={this.normalize}\n readOnly={disabled}\n spellCheck={spellCheck}\n className={classNames(\n {\n [classes.noPadding]: toolbarOpts && toolbarOpts.noBorder\n },\n classes.slateEditor\n )}\n style={{\n minHeight: sizeStyle.minHeight,\n height: sizeStyle.height,\n maxHeight: sizeStyle.maxHeight\n }}\n pluginProps={pluginProps}\n toolbarOpts={toolbarOpts}\n placeholder={placeholder}\n renderPlaceholder={this.renderPlaceholder}\n onDataChange={this.changeData}\n />\n </div>\n );\n }\n}\n\n// TODO color - hardcoded gray background and keypad colors will need to change too\nconst styles = {\n withBg: {\n backgroundColor: 'rgba(0,0,0,0.06)'\n },\n slateEditor: {\n fontFamily: 'Roboto, sans-serif',\n\n '& table': {\n tableLayout: 'fixed',\n width: '100%',\n borderCollapse: 'collapse',\n color: color.text(),\n backgroundColor: color.background()\n },\n '& table:not([border=\"1\"]) tr': {\n borderTop: '1px solid #dfe2e5'\n // TODO perhaps secondary color for background, for now disable\n // '&:nth-child(2n)': {\n // backgroundColor: '#f6f8fa'\n // }\n },\n '& td, th': {\n padding: '.6em 1em',\n textAlign: 'center'\n },\n '& table:not([border=\"1\"]) td, th': {\n border: '1px solid #dfe2e5'\n }\n },\n toolbarOnTop: {\n marginTop: '45px'\n },\n noPadding: {\n padding: '0 !important'\n }\n};\n\nexport default withStyles(styles)(Editor);\n"],"mappings":"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"}
@@ -21,14 +21,17 @@ var log = (0, _debug["default"])('@pie-lib:editable-html:image:insert-image-hand
21
21
  * @param {Block} placeholderBlock - a block that has been added to the editor as a place holder for the image
22
22
  * @param {Function} getValue - a function to return the value of the editor
23
23
  * @param {Function} onChange - callback to notify changes applied by the handler
24
+ * @param {Boolean} isPasted - a boolean that keeps track if the file is pasted
24
25
  */
25
26
 
26
27
  var InsertImageHandler = /*#__PURE__*/function () {
27
28
  function InsertImageHandler(placeholderBlock, getValue, onChange) {
29
+ var isPasted = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
28
30
  (0, _classCallCheck2["default"])(this, InsertImageHandler);
29
31
  this.placeholderBlock = placeholderBlock;
30
32
  this.getValue = getValue;
31
33
  this.onChange = onChange;
34
+ this.isPasted = isPasted;
32
35
  }
33
36
 
34
37
  (0, _createClass2["default"])(InsertImageHandler, [{
@@ -1 +1 @@
1
- {"version":3,"file":"insert-image-handler.js","names":["log","debug","InsertImageHandler","placeholderBlock","getValue","onChange","value","document","directChild","getChild","key","child","getDescendant","Error","c","change","removeNodeByKey","err","src","console","getPlaceholderInDocument","data","merge","Data","create","loaded","percent","setNodeByKey","file","reader","FileReader","onload","dataURL","result","set","readAsDataURL","bytes","total"],"sources":["../../../src/plugins/image/insert-image-handler.js"],"sourcesContent":["import { Data } from 'slate';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:image:insert-image-handler');\n\n/**\n * Handles user selection, insertion (or cancellation) of an image into the editor.\n * @param {Block} placeholderBlock - a block that has been added to the editor as a place holder for the image\n * @param {Function} getValue - a function to return the value of the editor\n * @param {Function} onChange - callback to notify changes applied by the handler\n */\nclass InsertImageHandler {\n constructor(placeholderBlock, getValue, onChange) {\n this.placeholderBlock = placeholderBlock;\n this.getValue = getValue;\n this.onChange = onChange;\n }\n\n getPlaceholderInDocument(value) {\n const { document } = value;\n const directChild = document.getChild(this.placeholderBlock.key);\n\n if (directChild) {\n return directChild;\n }\n\n const child = document.getDescendant(this.placeholderBlock.key);\n\n if (child) {\n return child;\n } else {\n //eslint-disable-next-line\n throw new Error(\"insert-image: Can't find placeholder!\");\n }\n }\n\n cancel() {\n log('insert cancelled');\n const c = this.getValue()\n .change()\n .removeNodeByKey(this.placeholderBlock.key);\n this.onChange(c);\n }\n\n done(err, src) {\n log('done: err:', err);\n if (err) {\n //eslint-disable-next-line\n console.log(err);\n } else {\n const value = this.getValue();\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.merge(Data.create({ loaded: true, src, percent: 100 }));\n\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n }\n }\n\n /**\n * Notify handler that the user chose a file - will create a change with a preview in the editor.\n *\n * @param {File} file - the file that the user chose using a file input.\n */\n fileChosen(file) {\n if (!file) {\n return;\n }\n\n log('[fileChosen] file: ', file);\n const reader = new FileReader();\n reader.onload = () => {\n const value = this.getValue();\n const dataURL = reader.result;\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.set('src', dataURL);\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n };\n reader.readAsDataURL(file);\n }\n\n progress(percent, bytes, total) {\n log('progress: ', percent, bytes, total);\n const value = this.getValue();\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.set('percent', percent);\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n }\n}\n\nexport default InsertImageHandler;\n"],"mappings":"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"}
1
+ {"version":3,"file":"insert-image-handler.js","names":["log","debug","InsertImageHandler","placeholderBlock","getValue","onChange","isPasted","value","document","directChild","getChild","key","child","getDescendant","Error","c","change","removeNodeByKey","err","src","console","getPlaceholderInDocument","data","merge","Data","create","loaded","percent","setNodeByKey","file","reader","FileReader","onload","dataURL","result","set","readAsDataURL","bytes","total"],"sources":["../../../src/plugins/image/insert-image-handler.js"],"sourcesContent":["import { Data } from 'slate';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:image:insert-image-handler');\n\n/**\n * Handles user selection, insertion (or cancellation) of an image into the editor.\n * @param {Block} placeholderBlock - a block that has been added to the editor as a place holder for the image\n * @param {Function} getValue - a function to return the value of the editor\n * @param {Function} onChange - callback to notify changes applied by the handler\n * @param {Boolean} isPasted - a boolean that keeps track if the file is pasted\n */\nclass InsertImageHandler {\n constructor(placeholderBlock, getValue, onChange, isPasted = false) {\n this.placeholderBlock = placeholderBlock;\n this.getValue = getValue;\n this.onChange = onChange;\n this.isPasted = isPasted;\n }\n\n getPlaceholderInDocument(value) {\n const { document } = value;\n const directChild = document.getChild(this.placeholderBlock.key);\n\n if (directChild) {\n return directChild;\n }\n\n const child = document.getDescendant(this.placeholderBlock.key);\n\n if (child) {\n return child;\n } else {\n //eslint-disable-next-line\n throw new Error(\"insert-image: Can't find placeholder!\");\n }\n }\n\n cancel() {\n log('insert cancelled');\n const c = this.getValue()\n .change()\n .removeNodeByKey(this.placeholderBlock.key);\n this.onChange(c);\n }\n\n done(err, src) {\n log('done: err:', err);\n if (err) {\n //eslint-disable-next-line\n console.log(err);\n } else {\n const value = this.getValue();\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.merge(Data.create({ loaded: true, src, percent: 100 }));\n\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n }\n }\n\n /**\n * Notify handler that the user chose a file - will create a change with a preview in the editor.\n *\n * @param {File} file - the file that the user chose using a file input.\n */\n fileChosen(file) {\n if (!file) {\n return;\n }\n\n log('[fileChosen] file: ', file);\n const reader = new FileReader();\n reader.onload = () => {\n const value = this.getValue();\n const dataURL = reader.result;\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.set('src', dataURL);\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n };\n reader.readAsDataURL(file);\n }\n\n progress(percent, bytes, total) {\n log('progress: ', percent, bytes, total);\n const value = this.getValue();\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.set('percent', percent);\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n }\n}\n\nexport default InsertImageHandler;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/editable-html",
3
- "version": "7.17.4-next.595+8cffe02e",
3
+ "version": "7.17.4-next.602+a3500ffc",
4
4
  "description": "",
5
5
  "license": "ISC",
6
6
  "main": "lib/index.js",
@@ -47,6 +47,6 @@
47
47
  "publishConfig": {
48
48
  "access": "public"
49
49
  },
50
- "gitHead": "8cffe02edd6da61b38a6b929cd7d4436b220f09b",
50
+ "gitHead": "a3500ffccf6a8b1757a26085f7e2cfa173869e39",
51
51
  "scripts": {}
52
52
  }
package/src/editor.jsx CHANGED
@@ -14,6 +14,7 @@ import { color } from '@pie-lib/render-ui';
14
14
  import Plain from 'slate-plain-serializer';
15
15
 
16
16
  import { getBase64 } from './serialization';
17
+ import InsertImageHandler from './plugins/image/insert-image-handler';
17
18
 
18
19
  export { ALL_PLUGINS, DEFAULT_PLUGINS, serialization };
19
20
 
@@ -635,6 +636,8 @@ export class Editor extends React.Component {
635
636
 
636
637
  const ch = change.insertInline(inline);
637
638
  this.onChange(ch);
639
+ const handler = new InsertImageHandler(inline, () => this.state.value, this.onChange, true);
640
+ this.props.imageSupport.add(handler);
638
641
  } catch (err) {
639
642
  log('[onDropPaste] error: ', err);
640
643
  }
@@ -8,12 +8,14 @@ const log = debug('@pie-lib:editable-html:image:insert-image-handler');
8
8
  * @param {Block} placeholderBlock - a block that has been added to the editor as a place holder for the image
9
9
  * @param {Function} getValue - a function to return the value of the editor
10
10
  * @param {Function} onChange - callback to notify changes applied by the handler
11
+ * @param {Boolean} isPasted - a boolean that keeps track if the file is pasted
11
12
  */
12
13
  class InsertImageHandler {
13
- constructor(placeholderBlock, getValue, onChange) {
14
+ constructor(placeholderBlock, getValue, onChange, isPasted = false) {
14
15
  this.placeholderBlock = placeholderBlock;
15
16
  this.getValue = getValue;
16
17
  this.onChange = onChange;
18
+ this.isPasted = isPasted;
17
19
  }
18
20
 
19
21
  getPlaceholderInDocument(value) {