@pie-lib/editable-html 7.17.4-next.306 → 7.17.4-next.328

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
@@ -90,6 +90,7 @@ var defaultResponseAreaProps = {
90
90
  respAreaToolbar: function respAreaToolbar() {},
91
91
  onHandleAreaChange: function onHandleAreaChange() {}
92
92
  };
93
+ var defaultLanguageCharactersProps = [];
93
94
 
94
95
  var createToolbarOpts = function createToolbarOpts(toolbarOpts) {
95
96
  return _objectSpread(_objectSpread({}, defaultToolbarOpts), toolbarOpts);
@@ -100,12 +101,108 @@ var Editor = /*#__PURE__*/function (_React$Component) {
100
101
 
101
102
  var _super = _createSuper(Editor);
102
103
 
103
- function Editor(props) {
104
+ function Editor(_props) {
104
105
  var _this;
105
106
 
106
107
  _classCallCheck(this, Editor);
107
108
 
108
- _this = _super.call(this, props);
109
+ _this = _super.call(this, _props);
110
+
111
+ _defineProperty(_assertThisInitialized(_this), "handlePlugins", function (props) {
112
+ var normalizedResponseAreaProps = _objectSpread(_objectSpread({}, defaultResponseAreaProps), props.responseAreaProps);
113
+
114
+ _this.plugins = (0, _plugins.buildPlugins)(props.activePlugins, {
115
+ math: {
116
+ onClick: _this.onMathClick,
117
+ onFocus: _this.onPluginFocus,
118
+ onBlur: _this.onPluginBlur
119
+ },
120
+ image: {
121
+ onDelete: props.imageSupport && props.imageSupport["delete"] && function (src, done) {
122
+ props.imageSupport["delete"](src, function (e) {
123
+ done(e, _this.state.value);
124
+ });
125
+ },
126
+ insertImageRequested: props.imageSupport && function (getHandler) {
127
+ /**
128
+ * The handler is the object through which the outer context
129
+ * communicates file upload events like: fileChosen, cancel, progress
130
+ */
131
+ var handler = getHandler(function () {
132
+ return _this.state.value;
133
+ });
134
+ props.imageSupport.add(handler);
135
+ },
136
+ onFocus: _this.onPluginFocus,
137
+ onBlur: _this.onPluginBlur
138
+ },
139
+ toolbar: {
140
+ /**
141
+ * To minimize converting html -> state -> html
142
+ * We only emit markup once 'done' is clicked.
143
+ */
144
+ disableUnderline: props.disableUnderline,
145
+ autoWidth: props.autoWidthToolbar,
146
+ onDone: function onDone() {
147
+ var nonEmpty = props.nonEmpty;
148
+ log('[onDone]');
149
+
150
+ _this.setState({
151
+ toolbarInFocus: false,
152
+ focusedNode: null
153
+ });
154
+
155
+ _this.editor.blur();
156
+
157
+ if (nonEmpty && _this.state.value.startText.text.length === 0) {
158
+ _this.resetValue(true).then(function () {
159
+ _this.onEditingDone();
160
+ });
161
+ } else {
162
+ _this.onEditingDone();
163
+ }
164
+ }
165
+ },
166
+ table: {
167
+ onFocus: function onFocus() {
168
+ log('[table:onFocus]...');
169
+
170
+ _this.onPluginFocus();
171
+ },
172
+ onBlur: function onBlur() {
173
+ log('[table:onBlur]...');
174
+
175
+ _this.onPluginBlur();
176
+ }
177
+ },
178
+ responseArea: {
179
+ type: normalizedResponseAreaProps.type,
180
+ options: normalizedResponseAreaProps.options,
181
+ maxResponseAreas: normalizedResponseAreaProps.maxResponseAreas,
182
+ respAreaToolbar: normalizedResponseAreaProps.respAreaToolbar,
183
+ onHandleAreaChange: normalizedResponseAreaProps.onHandleAreaChange,
184
+ error: normalizedResponseAreaProps.error,
185
+ onFocus: function onFocus() {
186
+ log('[table:onFocus]...');
187
+
188
+ _this.onPluginFocus();
189
+ },
190
+ onBlur: function onBlur() {
191
+ log('[table:onBlur]...');
192
+
193
+ _this.onPluginBlur();
194
+ }
195
+ },
196
+ languageCharacters: props.languageCharactersProps,
197
+ media: {
198
+ focus: _this.focus,
199
+ createChange: function createChange() {
200
+ return _this.state.value.change();
201
+ },
202
+ onChange: _this.onChange
203
+ }
204
+ });
205
+ });
109
206
 
110
207
  _defineProperty(_assertThisInitialized(_this), "onPluginBlur", function (e) {
111
208
  log('[onPluginBlur]', e && e.relatedTarget);
@@ -321,9 +418,15 @@ var Editor = /*#__PURE__*/function (_React$Component) {
321
418
 
322
419
  _defineProperty(_assertThisInitialized(_this), "onChange", function (change, done) {
323
420
  log('[onChange]');
421
+ var value = change.value;
422
+ var charactersLimit = _this.props.charactersLimit;
423
+
424
+ if (value && value.document && value.document.text && value.document.text.length > charactersLimit) {
425
+ return;
426
+ }
324
427
 
325
428
  _this.setState({
326
- value: change.value
429
+ value: value
327
430
  }, function () {
328
431
  log('[onChange], call done()');
329
432
 
@@ -397,107 +500,16 @@ var Editor = /*#__PURE__*/function (_React$Component) {
397
500
  });
398
501
 
399
502
  _this.state = {
400
- value: props.value,
401
- toolbarOpts: createToolbarOpts(props.toolbarOpts)
503
+ value: _props.value,
504
+ toolbarOpts: createToolbarOpts(_props.toolbarOpts)
402
505
  };
403
506
 
404
- var normalizedResponseAreaProps = _objectSpread(_objectSpread({}, defaultResponseAreaProps), props.responseAreaProps);
405
-
406
507
  _this.onResize = function () {
407
- props.onChange(_this.state.value, true);
508
+ _props.onChange(_this.state.value, true);
408
509
  };
409
510
 
410
- _this.plugins = (0, _plugins.buildPlugins)(props.activePlugins, {
411
- math: {
412
- onClick: _this.onMathClick,
413
- onFocus: _this.onPluginFocus,
414
- onBlur: _this.onPluginBlur
415
- },
416
- image: {
417
- onDelete: _this.props.imageSupport && _this.props.imageSupport["delete"] && function (src, done) {
418
- _this.props.imageSupport["delete"](src, function (e) {
419
- done(e, _this.state.value);
420
- });
421
- },
422
- insertImageRequested: _this.props.imageSupport && function (getHandler) {
423
- /**
424
- * The handler is the object through which the outer context
425
- * communicates file upload events like: fileChosen, cancel, progress
426
- */
427
- var handler = getHandler(function () {
428
- return _this.state.value;
429
- });
511
+ _this.handlePlugins(_this.props);
430
512
 
431
- _this.props.imageSupport.add(handler);
432
- },
433
- onFocus: _this.onPluginFocus,
434
- onBlur: _this.onPluginBlur
435
- },
436
- toolbar: {
437
- /**
438
- * To minimize converting html -> state -> html
439
- * We only emit markup once 'done' is clicked.
440
- */
441
- disableUnderline: props.disableUnderline,
442
- autoWidth: props.autoWidthToolbar,
443
- onDone: function onDone() {
444
- var nonEmpty = _this.props.nonEmpty;
445
- log('[onDone]');
446
-
447
- _this.setState({
448
- toolbarInFocus: false,
449
- focusedNode: null
450
- });
451
-
452
- _this.editor.blur();
453
-
454
- if (nonEmpty && _this.state.value.startText.text.length === 0) {
455
- _this.resetValue(true).then(function () {
456
- _this.onEditingDone();
457
- });
458
- } else {
459
- _this.onEditingDone();
460
- }
461
- }
462
- },
463
- table: {
464
- onFocus: function onFocus() {
465
- log('[table:onFocus]...');
466
-
467
- _this.onPluginFocus();
468
- },
469
- onBlur: function onBlur() {
470
- log('[table:onBlur]...');
471
-
472
- _this.onPluginBlur();
473
- }
474
- },
475
- responseArea: {
476
- type: normalizedResponseAreaProps.type,
477
- options: normalizedResponseAreaProps.options,
478
- maxResponseAreas: normalizedResponseAreaProps.maxResponseAreas,
479
- respAreaToolbar: normalizedResponseAreaProps.respAreaToolbar,
480
- onHandleAreaChange: normalizedResponseAreaProps.onHandleAreaChange,
481
- error: normalizedResponseAreaProps.error,
482
- onFocus: function onFocus() {
483
- log('[table:onFocus]...');
484
-
485
- _this.onPluginFocus();
486
- },
487
- onBlur: function onBlur() {
488
- log('[table:onBlur]...');
489
-
490
- _this.onPluginBlur();
491
- }
492
- },
493
- media: {
494
- focus: _this.focus,
495
- createChange: function createChange() {
496
- return _this.state.value.change();
497
- },
498
- onChange: _this.onChange
499
- }
500
- });
501
513
  return _this;
502
514
  }
503
515
 
@@ -535,6 +547,10 @@ var Editor = /*#__PURE__*/function (_React$Component) {
535
547
  toolbarOpts: newToolbarOpts
536
548
  });
537
549
  }
550
+
551
+ if (!(0, _isEqual["default"])(nextProps.languageCharactersProps, this.props.languageCharactersProps)) {
552
+ this.handlePlugins(nextProps);
553
+ }
538
554
  }
539
555
  }, {
540
556
  key: "componentDidUpdate",
@@ -669,6 +685,7 @@ _defineProperty(Editor, "propTypes", {
669
685
  focus: _propTypes["default"].func.isRequired,
670
686
  value: _slatePropTypes["default"].value.isRequired,
671
687
  imageSupport: _propTypes["default"].object,
688
+ charactersLimit: _propTypes["default"].number,
672
689
  width: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
673
690
  height: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
674
691
  minHeight: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
@@ -688,6 +705,11 @@ _defineProperty(Editor, "propTypes", {
688
705
  respAreaToolbar: _propTypes["default"].func,
689
706
  onHandleAreaChange: _propTypes["default"].func
690
707
  }),
708
+ languageCharactersProps: _propTypes["default"].arrayOf(_propTypes["default"].shape({
709
+ language: _propTypes["default"].string,
710
+ characterIcon: _propTypes["default"].string,
711
+ characters: _propTypes["default"].arrayOf(_propTypes["default"].arrayOf(_propTypes["default"].string))
712
+ })),
691
713
  toolbarOpts: _propTypes["default"].shape({
692
714
  position: _propTypes["default"].oneOf(['bottom', 'top']),
693
715
  alignment: _propTypes["default"].oneOf(['left', 'right']),
@@ -710,7 +732,8 @@ _defineProperty(Editor, "defaultProps", {
710
732
  onBlur: function onBlur() {},
711
733
  onKeyDown: function onKeyDown() {},
712
734
  toolbarOpts: defaultToolbarOpts,
713
- responseAreaProps: defaultResponseAreaProps
735
+ responseAreaProps: defaultResponseAreaProps,
736
+ languageCharactersProps: defaultLanguageCharactersProps
714
737
  });
715
738
 
716
739
  var styles = {
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","createToolbarOpts","toolbarOpts","Editor","props","e","relatedTarget","target","node","findNode","state","value","setState","focusedNode","resetValue","stashedValue","stashValue","editor","change","c","collapseToStartOf","selectedNode","onChange","resolve","nonEmpty","toolbarInFocus","blur","startText","text","length","then","onEditingDone","event","Promise","handleBlur","bind","onBlur","editorDOM","document","querySelector","key","setTimeout","wrapperRef","editorElement","activeElement","closest","className","toolbarElement","toolbarRef","isInCurrentComponent","contains","removeEventListener","handleDomBlur","__TEMPORARY_CHANGE_DATA","data","domEl","setNodeByKey","addEventListener","onFocus","force","stopReset","plugins","reduce","s","p","isFocused","toObject","newValue","Value","fromJSON","toJSON","done","v","endsWith","undefined","parseInt","isNaN","object","last","nodes","type","parent","getParent","Block","pos","focus","normalizedResponseAreaProps","responseAreaProps","onResize","buildPlugins","activePlugins","math","onClick","onMathClick","onPluginFocus","onPluginBlur","image","onDelete","imageSupport","src","insertImageRequested","getHandler","handler","add","toolbar","disableUnderline","autoWidth","autoWidthToolbar","onDone","table","responseArea","maxResponseAreas","error","media","createChange","onRef","window","autoFocus","nextProps","newToolbarOpts","isEqual","zeroWidthEls","querySelectorAll","Array","from","forEach","el","style","minWidth","display","equals","width","minHeight","height","maxHeight","valueToSize","disabled","spellCheck","highlightShape","classes","placeholder","pluginProps","onKeyDown","sizeStyle","buildSizeStyle","names","classNames","withBg","toolbarOnTop","ref","r","slateEditor","editorRef","normalize","changeData","React","Component","PropTypes","bool","func","isRequired","SlateTypes","oneOfType","string","number","any","shape","oneOf","arrayOf","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 } 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 } 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';\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 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 width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n classes: PropTypes.object.isRequired,\n highlightShape: PropTypes.bool,\n disabled: PropTypes.bool,\n spellCheck: PropTypes.bool,\n nonEmpty: PropTypes.bool,\n disableUnderline: PropTypes.bool,\n autoWidthToolbar: PropTypes.bool,\n pluginProps: PropTypes.any,\n placeholder: PropTypes.string,\n responseAreaProps: PropTypes.shape({\n type: PropTypes.oneOf([\n 'explicit-constructed-response',\n 'inline-dropdown',\n 'drag-in-the-blank'\n ]),\n options: PropTypes.object,\n respAreaToolbar: PropTypes.func,\n onHandleAreaChange: PropTypes.func\n }),\n 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 };\n\n static defaultProps = {\n disableUnderline: true,\n onFocus: () => {},\n onBlur: () => {},\n onKeyDown: () => {},\n toolbarOpts: defaultToolbarOpts,\n responseAreaProps: defaultResponseAreaProps\n };\n\n constructor(props) {\n super(props);\n this.state = {\n value: props.value,\n toolbarOpts: createToolbarOpts(props.toolbarOpts)\n };\n\n const normalizedResponseAreaProps = {\n ...defaultResponseAreaProps,\n ...props.responseAreaProps\n };\n\n this.onResize = () => {\n props.onChange(this.state.value, true);\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 this.props.imageSupport &&\n this.props.imageSupport.delete &&\n ((src, done) => {\n this.props.imageSupport.delete(src, e => {\n done(e, this.state.value);\n });\n }),\n insertImageRequested:\n this.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 this.props.imageSupport.add(handler);\n }),\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur\n },\n toolbar: {\n /**\n * To minimize converting html -> state -> html\n * We only emit markup once 'done' is clicked.\n */\n disableUnderline: props.disableUnderline,\n autoWidth: props.autoWidthToolbar,\n onDone: () => {\n const { nonEmpty } = this.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 media: {\n focus: this.focus,\n createChange: () => this.state.value.change(),\n onChange: this.onChange\n }\n });\n }\n\n componentDidMount() {\n // onRef is needed to get the ref of the component because we export it using withStyles\n this.props.onRef(this);\n\n window.addEventListener('resize', this.onResize);\n\n if (this.editor && this.props.autoFocus) {\n Promise.resolve().then(() => {\n if (this.editor) {\n const editorDOM = document.querySelector(\n `[data-key=\"${this.editor.value.document.key}\"]`\n );\n\n this.editor.focus();\n\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const { toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(nextProps.toolbarOpts);\n\n if (!isEqual(newToolbarOpts, toolbarOpts)) {\n this.setState({\n toolbarOpts: newToolbarOpts\n });\n }\n }\n\n componentDidUpdate() {\n // The cursor is on a zero width element and when that is placed near void elements, it is not visible\n // so we increase the width to at least 2px in order for the user to see it\n const zeroWidthEls = document.querySelectorAll('[data-slate-zero-width=\"z\"]');\n\n Array.from(zeroWidthEls).forEach(el => {\n el.style.minWidth = '2px';\n el.style.display = 'inline-block';\n });\n }\n\n onPluginBlur = e => {\n log('[onPluginBlur]', e && e.relatedTarget);\n const target = e && e.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n log('[onPluginBlur] node: ', node);\n this.setState({ focusedNode: node }, () => {\n this.resetValue();\n });\n };\n\n onPluginFocus = e => {\n log('[onPluginFocus]', e && e.target);\n const target = e && e.target;\n if (target) {\n const node = findNode(target, this.state.value);\n log('[onPluginFocus] node: ', node);\n\n const stashedValue = this.state.stashedValue || this.state.value;\n this.setState({ focusedNode: node, stashedValue });\n } else {\n this.setState({ focusedNode: null });\n }\n this.stashValue();\n };\n\n onMathClick = node => {\n this.editor.change(c => c.collapseToStartOf(node));\n this.setState({ selectedNode: node });\n };\n\n onEditingDone = () => {\n log('[onEditingDone]');\n this.setState({ stashedValue: null, focusedNode: null });\n log('[onEditingDone] value: ', this.state.value);\n this.props.onChange(this.state.value, true);\n };\n\n /**\n * Remove onResize event listener\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize);\n }\n\n // Allowing time for onChange to take effect if it is called\n handleBlur = resolve => {\n const { nonEmpty } = this.props;\n const {\n toolbarOpts: { doneOn }\n } = this.state;\n\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n if (this.editor) {\n this.editor.blur();\n }\n\n if (doneOn === 'blur') {\n if (nonEmpty && this.state.value.startText.text.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n resolve();\n });\n } else {\n this.onEditingDone();\n resolve();\n }\n }\n };\n\n onBlur = event => {\n log('[onBlur]');\n const target = event.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n\n log('[onBlur] node: ', node);\n\n return new Promise(resolve => {\n this.setState({ focusedNode: node }, this.handleBlur.bind(this, resolve));\n this.props.onBlur(event);\n });\n };\n\n handleDomBlur = e => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n setTimeout(() => {\n if (!this.wrapperRef) {\n return;\n }\n\n const editorElement =\n !editorDOM || document.activeElement.closest(`[class*=\"${editorDOM.className}\"]`);\n const toolbarElement =\n !this.toolbarRef ||\n document.activeElement.closest(`[class*=\"${this.toolbarRef.className}\"]`);\n const isInCurrentComponent =\n this.wrapperRef.contains(editorElement) || this.wrapperRef.contains(toolbarElement);\n\n if (!isInCurrentComponent) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n this.onBlur(e);\n }\n }, 50);\n };\n\n /*\n * Needs to be wrapped otherwise it causes issues because of race conditions\n * Known issue for slatejs. See: https://github.com/ianstormtaylor/slate/issues/2097\n * Using timeout I wasn't able to test this\n *\n * Note: The use of promises has been causing issues with MathQuill\n * */\n onFocus = () =>\n new Promise(resolve => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n log('[onFocus]', document.activeElement);\n\n /**\n * This is a temporary hack - @see changeData below for some more information.\n */\n if (this.__TEMPORARY_CHANGE_DATA) {\n const { key, data } = this.__TEMPORARY_CHANGE_DATA;\n const domEl = document.querySelector(`[data-key=\"${key}\"]`);\n\n if (domEl) {\n let change = this.state.value.change().setNodeByKey(key, { data });\n\n this.setState({ value: change.value }, () => {\n this.__TEMPORARY_CHANGE_DATA = null;\n });\n }\n }\n\n /**\n * This is needed just in case the browser decides to make the editor\n * lose focus without triggering the onBlur event (can happen in a few cases).\n * This will also trigger onBlur if the user clicks outside of the page when the editor\n * is focused.\n */\n if (editorDOM === document.activeElement) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n editorDOM.addEventListener('blur', this.handleDomBlur);\n }\n\n this.stashValue();\n this.props.onFocus();\n\n resolve();\n });\n\n stashValue = () => {\n log('[stashValue]');\n if (!this.state.stashedValue) {\n this.setState({ stashedValue: this.state.value });\n }\n };\n\n /**\n * Reset the value if the user didn't click done.\n */\n resetValue = force => {\n const { value, focusedNode } = this.state;\n\n const stopReset = this.plugins.reduce((s, p) => {\n return s || (p.stopReset && p.stopReset(this.state.value));\n }, false);\n\n log('[resetValue]', value.isFocused, focusedNode, 'stopReset: ', stopReset);\n if ((this.state.stashedValue && !value.isFocused && !focusedNode && !stopReset) || force) {\n log('[resetValue] resetting...');\n log('stashed', this.state.stashedValue.document.toObject());\n log('current', this.state.value.document.toObject());\n\n const newValue = Value.fromJSON(this.state.stashedValue.toJSON());\n\n log('newValue: ', newValue.document);\n return new Promise(resolve => {\n setTimeout(() => {\n this.setState({ value: newValue, stashedValue: null }, () => {\n log('value now: ', this.state.value.document.toJSON());\n resolve();\n });\n }, 50);\n });\n } else {\n return Promise.resolve({});\n }\n };\n\n onChange = (change, done) => {\n log('[onChange]');\n this.setState({ value: change.value }, () => {\n log('[onChange], call done()');\n\n if (done) {\n done();\n }\n });\n };\n\n UNSAFE_componentWillReceiveProps(props) {\n if (!props.value.document.equals(this.props.value.document)) {\n this.setState({\n focus: false,\n value: props.value\n });\n }\n }\n\n valueToSize = v => {\n if (!v) {\n return;\n }\n\n if (typeof v === 'string') {\n if (v.endsWith('%')) {\n return undefined;\n } else if (v.endsWith('px') || v.endsWith('vh') || v.endsWith('vw')) {\n return v;\n } else {\n const value = parseInt(v, 10);\n return isNaN(value) ? value : `${value}px`;\n }\n }\n if (typeof v === 'number') {\n return `${v}px`;\n }\n\n return;\n };\n\n buildSizeStyle() {\n const { width, minHeight, height, maxHeight } = this.props;\n\n return {\n width: this.valueToSize(width),\n height: this.valueToSize(height),\n minHeight: this.valueToSize(minHeight),\n maxHeight: this.valueToSize(maxHeight)\n };\n }\n\n validateNode = node => {\n if (node.object !== 'block') return;\n\n const last = node.nodes.last();\n if (!last) return;\n\n if (last.type !== 'image') return;\n\n log('[validateNode] last is image..');\n\n const parent = last.getParent(last.key);\n const p = Block.getParent(last.key);\n log('[validateNode] parent:', parent, p);\n\n return undefined;\n };\n\n changeData = (key, data) => {\n log('[changeData]. .. ', key, data);\n\n /**\n * HACK ALERT: We should be calling setState here and storing the change data:\n *\n * <code>this.setState({changeData: { key, data}})</code>\n * However this is causing issues with the Mathquill instance. The 'input' event stops firing on the element and no\n * more changes get through. The issues seem to be related to the promises in onBlur/onFocus. But removing these\n * brings it's own problems. A major clean up is planned for this component so I've decided to temporarily settle\n * on this hack rather than spend more time on this.\n */\n\n // Uncomment this line to see the bug described above.\n // this.setState({changeData: {key, data}})\n\n this.__TEMPORARY_CHANGE_DATA = { key, data };\n };\n\n focus = (pos, node) => {\n const position = pos || 'end';\n\n this.props.focus(position, node);\n };\n\n render() {\n const {\n disabled,\n spellCheck,\n highlightShape,\n classes,\n className,\n placeholder,\n pluginProps,\n onKeyDown\n } = this.props;\n\n const { value, focusedNode, toolbarOpts } = this.state;\n\n log('[render] value: ', value);\n const sizeStyle = this.buildSizeStyle();\n const names = classNames(\n {\n [classes.withBg]: highlightShape,\n [classes.toolbarOnTop]: toolbarOpts.alwaysVisible && toolbarOpts.position === 'top'\n },\n className\n );\n\n return (\n <div\n ref={ref => (this.wrapperRef = ref)}\n style={{ width: sizeStyle.width }}\n className={names}\n >\n <SlateEditor\n plugins={this.plugins}\n innerRef={r => {\n if (r) {\n this.slateEditor = r;\n }\n }}\n ref={r => (this.editor = r && this.props.editorRef(r))}\n toolbarRef={r => {\n if (r) {\n this.toolbarRef = r;\n }\n }}\n value={value}\n focus={this.focus}\n onKeyDown={onKeyDown}\n onChange={this.onChange}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onEditingDone={this.onEditingDone}\n focusedNode={focusedNode}\n normalize={this.normalize}\n readOnly={disabled}\n spellCheck={spellCheck}\n className={classes.slateEditor}\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 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};\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","toolbar","disableUnderline","autoWidth","autoWidthToolbar","onDone","nonEmpty","setState","toolbarInFocus","focusedNode","editor","blur","startText","text","length","resetValue","then","onEditingDone","table","responseArea","type","maxResponseAreas","error","languageCharacters","languageCharactersProps","media","focus","createChange","change","onChange","relatedTarget","target","node","findNode","stashedValue","stashValue","c","collapseToStartOf","selectedNode","resolve","event","Promise","handleBlur","bind","editorDOM","document","querySelector","key","setTimeout","wrapperRef","editorElement","activeElement","closest","className","toolbarElement","toolbarRef","isInCurrentComponent","contains","removeEventListener","handleDomBlur","__TEMPORARY_CHANGE_DATA","data","domEl","setNodeByKey","addEventListener","force","stopReset","reduce","s","p","isFocused","toObject","newValue","Value","fromJSON","toJSON","charactersLimit","v","endsWith","undefined","parseInt","isNaN","object","last","nodes","parent","getParent","Block","pos","onResize","handlePlugins","onRef","window","autoFocus","nextProps","newToolbarOpts","isEqual","zeroWidthEls","querySelectorAll","Array","from","forEach","el","style","minWidth","display","equals","width","minHeight","height","maxHeight","valueToSize","disabled","spellCheck","highlightShape","classes","placeholder","pluginProps","onKeyDown","sizeStyle","buildSizeStyle","names","classNames","withBg","toolbarOnTop","ref","r","slateEditor","editorRef","normalize","changeData","React","Component","PropTypes","bool","func","isRequired","SlateTypes","number","oneOfType","string","any","shape","oneOf","arrayOf","language","characterIcon","characters","values","allValid","every","ALL_PLUGINS","includes","Error","join","styles","backgroundColor","fontFamily","tableLayout","borderCollapse","color","background","borderTop","padding","textAlign","border","marginTop","withStyles"],"sources":["../src/editor.jsx"],"sourcesContent":["import { Editor as SlateEditor, findNode } 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 } 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';\n\nexport { ALL_PLUGINS, DEFAULT_PLUGINS, serialization };\n\nconst log = debug('editable-html:editor');\n\nconst defaultToolbarOpts = {\n position: 'bottom',\n alignment: 'left',\n alwaysVisible: false,\n showDone: true,\n doneOn: 'blur'\n};\n\nconst defaultResponseAreaProps = {\n options: {},\n respAreaToolbar: () => {},\n onHandleAreaChange: () => {}\n};\n\nconst defaultLanguageCharactersProps = [];\n\nconst createToolbarOpts = toolbarOpts => {\n return {\n ...defaultToolbarOpts,\n ...toolbarOpts\n };\n};\n\nexport class Editor extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n editorRef: PropTypes.func.isRequired,\n onRef: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyDown: PropTypes.func,\n focus: PropTypes.func.isRequired,\n value: SlateTypes.value.isRequired,\n imageSupport: PropTypes.object,\n charactersLimit: PropTypes.number,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n classes: PropTypes.object.isRequired,\n highlightShape: PropTypes.bool,\n disabled: PropTypes.bool,\n spellCheck: PropTypes.bool,\n nonEmpty: PropTypes.bool,\n disableUnderline: PropTypes.bool,\n autoWidthToolbar: PropTypes.bool,\n pluginProps: PropTypes.any,\n placeholder: PropTypes.string,\n responseAreaProps: PropTypes.shape({\n type: PropTypes.oneOf([\n 'explicit-constructed-response',\n 'inline-dropdown',\n 'drag-in-the-blank'\n ]),\n options: PropTypes.object,\n respAreaToolbar: PropTypes.func,\n onHandleAreaChange: PropTypes.func\n }),\n languageCharactersProps: PropTypes.arrayOf(\n PropTypes.shape({\n language: PropTypes.string,\n characterIcon: PropTypes.string,\n characters: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string))\n })\n ),\n toolbarOpts: PropTypes.shape({\n position: PropTypes.oneOf(['bottom', 'top']),\n alignment: PropTypes.oneOf(['left', 'right']),\n alwaysVisible: PropTypes.bool,\n showDone: PropTypes.bool,\n doneOn: PropTypes.string\n }),\n activePlugins: PropTypes.arrayOf(values => {\n const allValid = values.every(v => ALL_PLUGINS.includes(v));\n\n return (\n !allValid &&\n new Error(`Invalid values: ${values}, values must be one of [${ALL_PLUGINS.join(',')}]`)\n );\n }),\n className: PropTypes.string\n };\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 },\n toolbar: {\n /**\n * To minimize converting html -> state -> html\n * We only emit markup once 'done' is clicked.\n */\n disableUnderline: props.disableUnderline,\n autoWidth: props.autoWidthToolbar,\n onDone: () => {\n const { nonEmpty } = props;\n\n log('[onDone]');\n this.setState({ toolbarInFocus: false, focusedNode: null });\n this.editor.blur();\n\n if (nonEmpty && this.state.value.startText.text.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n });\n } else {\n this.onEditingDone();\n }\n }\n },\n table: {\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n responseArea: {\n type: normalizedResponseAreaProps.type,\n options: normalizedResponseAreaProps.options,\n maxResponseAreas: normalizedResponseAreaProps.maxResponseAreas,\n respAreaToolbar: normalizedResponseAreaProps.respAreaToolbar,\n onHandleAreaChange: normalizedResponseAreaProps.onHandleAreaChange,\n error: normalizedResponseAreaProps.error,\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n languageCharacters: props.languageCharactersProps,\n media: {\n focus: this.focus,\n createChange: () => this.state.value.change(),\n onChange: this.onChange\n }\n });\n };\n\n componentDidMount() {\n // onRef is needed to get the ref of the component because we export it using withStyles\n this.props.onRef(this);\n\n window.addEventListener('resize', this.onResize);\n\n if (this.editor && this.props.autoFocus) {\n Promise.resolve().then(() => {\n if (this.editor) {\n const editorDOM = document.querySelector(\n `[data-key=\"${this.editor.value.document.key}\"]`\n );\n\n this.editor.focus();\n\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const { toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(nextProps.toolbarOpts);\n\n if (!isEqual(newToolbarOpts, toolbarOpts)) {\n this.setState({\n toolbarOpts: newToolbarOpts\n });\n }\n\n if (!isEqual(nextProps.languageCharactersProps, this.props.languageCharactersProps)) {\n this.handlePlugins(nextProps);\n }\n }\n\n componentDidUpdate() {\n // The cursor is on a zero width element and when that is placed near void elements, it is not visible\n // so we increase the width to at least 2px in order for the user to see it\n const zeroWidthEls = document.querySelectorAll('[data-slate-zero-width=\"z\"]');\n\n Array.from(zeroWidthEls).forEach(el => {\n el.style.minWidth = '2px';\n el.style.display = 'inline-block';\n });\n }\n\n onPluginBlur = e => {\n log('[onPluginBlur]', e && e.relatedTarget);\n const target = e && e.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n log('[onPluginBlur] node: ', node);\n this.setState({ focusedNode: node }, () => {\n this.resetValue();\n });\n };\n\n onPluginFocus = e => {\n log('[onPluginFocus]', e && e.target);\n const target = e && e.target;\n if (target) {\n const node = findNode(target, this.state.value);\n log('[onPluginFocus] node: ', node);\n\n const stashedValue = this.state.stashedValue || this.state.value;\n this.setState({ focusedNode: node, stashedValue });\n } else {\n this.setState({ focusedNode: null });\n }\n this.stashValue();\n };\n\n onMathClick = node => {\n this.editor.change(c => c.collapseToStartOf(node));\n this.setState({ selectedNode: node });\n };\n\n onEditingDone = () => {\n log('[onEditingDone]');\n this.setState({ stashedValue: null, focusedNode: null });\n log('[onEditingDone] value: ', this.state.value);\n this.props.onChange(this.state.value, true);\n };\n\n /**\n * Remove onResize event listener\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize);\n }\n\n // Allowing time for onChange to take effect if it is called\n handleBlur = resolve => {\n const { nonEmpty } = this.props;\n const {\n toolbarOpts: { doneOn }\n } = this.state;\n\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n if (this.editor) {\n this.editor.blur();\n }\n\n if (doneOn === 'blur') {\n if (nonEmpty && this.state.value.startText.text.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n resolve();\n });\n } else {\n this.onEditingDone();\n resolve();\n }\n }\n };\n\n onBlur = event => {\n log('[onBlur]');\n const target = event.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n\n log('[onBlur] node: ', node);\n\n return new Promise(resolve => {\n this.setState({ focusedNode: node }, this.handleBlur.bind(this, resolve));\n this.props.onBlur(event);\n });\n };\n\n handleDomBlur = e => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n setTimeout(() => {\n if (!this.wrapperRef) {\n return;\n }\n\n const editorElement =\n !editorDOM || document.activeElement.closest(`[class*=\"${editorDOM.className}\"]`);\n const toolbarElement =\n !this.toolbarRef ||\n document.activeElement.closest(`[class*=\"${this.toolbarRef.className}\"]`);\n const isInCurrentComponent =\n this.wrapperRef.contains(editorElement) || this.wrapperRef.contains(toolbarElement);\n\n if (!isInCurrentComponent) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n this.onBlur(e);\n }\n }, 50);\n };\n\n /*\n * Needs to be wrapped otherwise it causes issues because of race conditions\n * Known issue for slatejs. See: https://github.com/ianstormtaylor/slate/issues/2097\n * Using timeout I wasn't able to test this\n *\n * Note: The use of promises has been causing issues with MathQuill\n * */\n onFocus = () =>\n new Promise(resolve => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n log('[onFocus]', document.activeElement);\n\n /**\n * This is a temporary hack - @see changeData below for some more information.\n */\n if (this.__TEMPORARY_CHANGE_DATA) {\n const { key, data } = this.__TEMPORARY_CHANGE_DATA;\n const domEl = document.querySelector(`[data-key=\"${key}\"]`);\n\n if (domEl) {\n let change = this.state.value.change().setNodeByKey(key, { data });\n\n this.setState({ value: change.value }, () => {\n this.__TEMPORARY_CHANGE_DATA = null;\n });\n }\n }\n\n /**\n * This is needed just in case the browser decides to make the editor\n * lose focus without triggering the onBlur event (can happen in a few cases).\n * This will also trigger onBlur if the user clicks outside of the page when the editor\n * is focused.\n */\n if (editorDOM === document.activeElement) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n editorDOM.addEventListener('blur', this.handleDomBlur);\n }\n\n this.stashValue();\n this.props.onFocus();\n\n resolve();\n });\n\n stashValue = () => {\n log('[stashValue]');\n if (!this.state.stashedValue) {\n this.setState({ stashedValue: this.state.value });\n }\n };\n\n /**\n * Reset the value if the user didn't click done.\n */\n resetValue = force => {\n const { value, focusedNode } = this.state;\n\n const stopReset = this.plugins.reduce((s, p) => {\n return s || (p.stopReset && p.stopReset(this.state.value));\n }, false);\n\n log('[resetValue]', value.isFocused, focusedNode, 'stopReset: ', stopReset);\n if ((this.state.stashedValue && !value.isFocused && !focusedNode && !stopReset) || force) {\n log('[resetValue] resetting...');\n log('stashed', this.state.stashedValue.document.toObject());\n log('current', this.state.value.document.toObject());\n\n const newValue = Value.fromJSON(this.state.stashedValue.toJSON());\n\n log('newValue: ', newValue.document);\n return new Promise(resolve => {\n setTimeout(() => {\n this.setState({ value: newValue, stashedValue: null }, () => {\n log('value now: ', this.state.value.document.toJSON());\n resolve();\n });\n }, 50);\n });\n } else {\n return Promise.resolve({});\n }\n };\n\n onChange = (change, done) => {\n log('[onChange]');\n\n const { value } = change;\n const { charactersLimit } = this.props;\n\n if (\n value &&\n value.document &&\n value.document.text &&\n value.document.text.length > charactersLimit\n ) {\n return;\n }\n\n this.setState({ value }, () => {\n log('[onChange], call done()');\n\n if (done) {\n done();\n }\n });\n };\n\n UNSAFE_componentWillReceiveProps(props) {\n if (!props.value.document.equals(this.props.value.document)) {\n this.setState({\n focus: false,\n value: props.value\n });\n }\n }\n\n valueToSize = v => {\n if (!v) {\n return;\n }\n\n if (typeof v === 'string') {\n if (v.endsWith('%')) {\n return undefined;\n } else if (v.endsWith('px') || v.endsWith('vh') || v.endsWith('vw')) {\n return v;\n } else {\n const value = parseInt(v, 10);\n return isNaN(value) ? value : `${value}px`;\n }\n }\n if (typeof v === 'number') {\n return `${v}px`;\n }\n\n return;\n };\n\n buildSizeStyle() {\n const { width, minHeight, height, maxHeight } = this.props;\n\n return {\n width: this.valueToSize(width),\n height: this.valueToSize(height),\n minHeight: this.valueToSize(minHeight),\n maxHeight: this.valueToSize(maxHeight)\n };\n }\n\n validateNode = node => {\n if (node.object !== 'block') return;\n\n const last = node.nodes.last();\n if (!last) return;\n\n if (last.type !== 'image') return;\n\n log('[validateNode] last is image..');\n\n const parent = last.getParent(last.key);\n const p = Block.getParent(last.key);\n log('[validateNode] parent:', parent, p);\n\n return undefined;\n };\n\n changeData = (key, data) => {\n log('[changeData]. .. ', key, data);\n\n /**\n * HACK ALERT: We should be calling setState here and storing the change data:\n *\n * <code>this.setState({changeData: { key, data}})</code>\n * However this is causing issues with the Mathquill instance. The 'input' event stops firing on the element and no\n * more changes get through. The issues seem to be related to the promises in onBlur/onFocus. But removing these\n * brings it's own problems. A major clean up is planned for this component so I've decided to temporarily settle\n * on this hack rather than spend more time on this.\n */\n\n // Uncomment this line to see the bug described above.\n // this.setState({changeData: {key, data}})\n\n this.__TEMPORARY_CHANGE_DATA = { key, data };\n };\n\n focus = (pos, node) => {\n const position = pos || 'end';\n\n this.props.focus(position, node);\n };\n\n render() {\n const {\n disabled,\n spellCheck,\n highlightShape,\n classes,\n className,\n placeholder,\n pluginProps,\n onKeyDown\n } = this.props;\n\n const { value, focusedNode, toolbarOpts } = this.state;\n\n log('[render] value: ', value);\n const sizeStyle = this.buildSizeStyle();\n const names = classNames(\n {\n [classes.withBg]: highlightShape,\n [classes.toolbarOnTop]: toolbarOpts.alwaysVisible && toolbarOpts.position === 'top'\n },\n className\n );\n\n return (\n <div\n ref={ref => (this.wrapperRef = ref)}\n style={{ width: sizeStyle.width }}\n className={names}\n >\n <SlateEditor\n plugins={this.plugins}\n innerRef={r => {\n if (r) {\n this.slateEditor = r;\n }\n }}\n ref={r => (this.editor = r && this.props.editorRef(r))}\n toolbarRef={r => {\n if (r) {\n this.toolbarRef = r;\n }\n }}\n value={value}\n focus={this.focus}\n onKeyDown={onKeyDown}\n onChange={this.onChange}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onEditingDone={this.onEditingDone}\n focusedNode={focusedNode}\n normalize={this.normalize}\n readOnly={disabled}\n spellCheck={spellCheck}\n className={classes.slateEditor}\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 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};\n\nexport default withStyles(styles)(Editor);\n"],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _styles = require("@material-ui/core/styles");
11
+
12
+ var _Popover = _interopRequireDefault(require("@material-ui/core/Popover"));
13
+
14
+ var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
15
+
16
+ var _excluded = ["classes", "children"];
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
+
20
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
21
+
22
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
23
+
24
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
25
+
26
+ var styles = function styles() {
27
+ return {
28
+ popover: {
29
+ pointerEvents: 'none',
30
+ zIndex: 99999
31
+ },
32
+ paper: {
33
+ padding: 20,
34
+ height: 'auto',
35
+ width: 'auto'
36
+ },
37
+ typography: {
38
+ fontSize: 50,
39
+ textAlign: 'center'
40
+ }
41
+ };
42
+ };
43
+
44
+ var CustomPopOver = (0, _styles.withStyles)(styles)(function (_ref) {
45
+ var classes = _ref.classes,
46
+ children = _ref.children,
47
+ props = _objectWithoutProperties(_ref, _excluded);
48
+
49
+ return /*#__PURE__*/_react["default"].createElement(_Popover["default"], _extends({
50
+ id: "mouse-over-popover",
51
+ open: true,
52
+ className: classes.popover,
53
+ classes: {
54
+ paper: classes.paper
55
+ },
56
+ anchorOrigin: {
57
+ vertical: 'bottom',
58
+ horizontal: 'left'
59
+ },
60
+ transformOrigin: {
61
+ vertical: 'top',
62
+ horizontal: 'left'
63
+ },
64
+ disableRestoreFocus: true
65
+ }, props), /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
66
+ classes: {
67
+ root: classes.typography
68
+ }
69
+ }, children));
70
+ });
71
+ var _default = CustomPopOver;
72
+ exports["default"] = _default;
73
+ //# sourceMappingURL=custom-popover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-popover.js","names":["styles","popover","pointerEvents","zIndex","paper","padding","height","width","typography","fontSize","textAlign","CustomPopOver","withStyles","classes","children","props","vertical","horizontal","root"],"sources":["../../../src/plugins/characters/custom-popover.js"],"sourcesContent":["import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport Popover from '@material-ui/core/Popover';\nimport Typography from '@material-ui/core/Typography';\n\nconst styles = () => ({\n popover: {\n pointerEvents: 'none',\n zIndex: 99999\n },\n paper: {\n padding: 20,\n height: 'auto',\n width: 'auto'\n },\n typography: {\n fontSize: 50,\n textAlign: 'center'\n }\n});\n\nconst CustomPopOver = withStyles(styles)(({ classes, children, ...props }) => (\n <Popover\n id=\"mouse-over-popover\"\n open\n className={classes.popover}\n classes={{\n paper: classes.paper\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n disableRestoreFocus\n {...props}\n >\n <Typography classes={{ root: classes.typography }}>{children}</Typography>\n </Popover>\n));\n\nexport default CustomPopOver;\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;;;;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS;EAAA,OAAO;IACpBC,OAAO,EAAE;MACPC,aAAa,EAAE,MADR;MAEPC,MAAM,EAAE;IAFD,CADW;IAKpBC,KAAK,EAAE;MACLC,OAAO,EAAE,EADJ;MAELC,MAAM,EAAE,MAFH;MAGLC,KAAK,EAAE;IAHF,CALa;IAUpBC,UAAU,EAAE;MACVC,QAAQ,EAAE,EADA;MAEVC,SAAS,EAAE;IAFD;EAVQ,CAAP;AAAA,CAAf;;AAgBA,IAAMC,aAAa,GAAG,IAAAC,kBAAA,EAAWZ,MAAX,EAAmB;EAAA,IAAGa,OAAH,QAAGA,OAAH;EAAA,IAAYC,QAAZ,QAAYA,QAAZ;EAAA,IAAyBC,KAAzB;;EAAA,oBACvC,gCAAC,mBAAD;IACE,EAAE,EAAC,oBADL;IAEE,IAAI,MAFN;IAGE,SAAS,EAAEF,OAAO,CAACZ,OAHrB;IAIE,OAAO,EAAE;MACPG,KAAK,EAAES,OAAO,CAACT;IADR,CAJX;IAOE,YAAY,EAAE;MACZY,QAAQ,EAAE,QADE;MAEZC,UAAU,EAAE;IAFA,CAPhB;IAWE,eAAe,EAAE;MACfD,QAAQ,EAAE,KADK;MAEfC,UAAU,EAAE;IAFG,CAXnB;IAeE,mBAAmB;EAfrB,GAgBMF,KAhBN,gBAkBE,gCAAC,sBAAD;IAAY,OAAO,EAAE;MAAEG,IAAI,EAAEL,OAAO,CAACL;IAAhB;EAArB,GAAoDM,QAApD,CAlBF,CADuC;AAAA,CAAnB,CAAtB;eAuBeH,a"}