@pie-lib/editable-html 7.17.4-next.443 → 7.17.4-next.452

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
@@ -297,7 +297,7 @@ var Editor = /*#__PURE__*/function (_React$Component) {
297
297
  log('[onBlur] node: ', node);
298
298
  return new Promise(function (resolve) {
299
299
  _this.setState({
300
- focusedNode: node
300
+ focusedNode: !node ? null : node
301
301
  }, _this.handleBlur.bind((0, _assertThisInitialized2["default"])(_this), resolve));
302
302
 
303
303
  _this.props.onBlur(event);
package/lib/editor.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"editor.js","names":["log","debug","defaultToolbarOpts","position","alignment","alwaysVisible","showDone","doneOn","defaultResponseAreaProps","options","respAreaToolbar","onHandleAreaChange","defaultLanguageCharactersProps","createToolbarOpts","toolbarOpts","Editor","props","normalizedResponseAreaProps","responseAreaProps","plugins","buildPlugins","activePlugins","math","onClick","onMathClick","onFocus","onPluginFocus","onBlur","onPluginBlur","image","onDelete","imageSupport","src","done","e","state","value","insertImageRequested","getHandler","handler","add","maxImageWidth","maxImageHeight","toolbar","disableUnderline","autoWidth","autoWidthToolbar","onDone","nonEmpty","setState","toolbarInFocus","focusedNode","editor","blur","startText","text","length","resetValue","then","onEditingDone","table","responseArea","type","maxResponseAreas","error","languageCharacters","languageCharactersProps","media","focus","createChange","change","onChange","relatedTarget","target","node","findNode","stashedValue","stashValue","c","collapseToStartOf","selectedNode","resolve","event","Promise","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","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","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","onDropPaste","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, getEventRange, getEventTransfer } from 'slate-react';\nimport SlateTypes from 'slate-prop-types';\n\nimport isEqual from 'lodash/isEqual';\nimport * as serialization from './serialization';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { Value, Block, Inline } from 'slate';\nimport { buildPlugins, ALL_PLUGINS, DEFAULT_PLUGINS } from './plugins';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\nimport Plain from 'slate-plain-serializer';\n\nimport { getBase64 } from './serialization';\n\nexport { ALL_PLUGINS, DEFAULT_PLUGINS, serialization };\n\nconst log = debug('editable-html:editor');\n\nconst defaultToolbarOpts = {\n position: 'bottom',\n alignment: 'left',\n alwaysVisible: false,\n showDone: true,\n doneOn: 'blur'\n};\n\nconst defaultResponseAreaProps = {\n options: {},\n respAreaToolbar: () => {},\n onHandleAreaChange: () => {}\n};\n\nconst defaultLanguageCharactersProps = [];\n\nconst createToolbarOpts = toolbarOpts => {\n return {\n ...defaultToolbarOpts,\n ...toolbarOpts\n };\n};\n\nexport class Editor extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n editorRef: PropTypes.func.isRequired,\n onRef: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyDown: PropTypes.func,\n focus: PropTypes.func.isRequired,\n value: SlateTypes.value.isRequired,\n imageSupport: PropTypes.object,\n charactersLimit: PropTypes.number,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n classes: PropTypes.object.isRequired,\n highlightShape: PropTypes.bool,\n disabled: PropTypes.bool,\n spellCheck: PropTypes.bool,\n nonEmpty: PropTypes.bool,\n disableUnderline: PropTypes.bool,\n autoWidthToolbar: PropTypes.bool,\n pluginProps: PropTypes.any,\n placeholder: PropTypes.string,\n responseAreaProps: PropTypes.shape({\n type: PropTypes.oneOf([\n 'explicit-constructed-response',\n 'inline-dropdown',\n 'drag-in-the-blank'\n ]),\n options: PropTypes.object,\n respAreaToolbar: PropTypes.func,\n onHandleAreaChange: PropTypes.func\n }),\n languageCharactersProps: PropTypes.arrayOf(\n PropTypes.shape({\n language: PropTypes.string,\n characterIcon: PropTypes.string,\n characters: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string))\n })\n ),\n toolbarOpts: PropTypes.shape({\n position: PropTypes.oneOf(['bottom', 'top']),\n alignment: PropTypes.oneOf(['left', 'right']),\n alwaysVisible: PropTypes.bool,\n showDone: PropTypes.bool,\n doneOn: PropTypes.string\n }),\n activePlugins: PropTypes.arrayOf(values => {\n const allValid = values.every(v => ALL_PLUGINS.includes(v));\n\n return (\n !allValid &&\n new Error(`Invalid values: ${values}, values must be one of [${ALL_PLUGINS.join(',')}]`)\n );\n }),\n className: PropTypes.string,\n maxImageWidth: PropTypes.number,\n maxImageHeight: PropTypes.number\n };\n\n static defaultProps = {\n disableUnderline: true,\n onFocus: () => {},\n onBlur: () => {},\n onKeyDown: () => {},\n toolbarOpts: defaultToolbarOpts,\n responseAreaProps: defaultResponseAreaProps,\n languageCharactersProps: defaultLanguageCharactersProps\n };\n\n constructor(props) {\n super(props);\n this.state = {\n value: props.value,\n toolbarOpts: createToolbarOpts(props.toolbarOpts)\n };\n\n this.onResize = () => {\n props.onChange(this.state.value, true);\n };\n\n this.handlePlugins(this.props);\n }\n\n handlePlugins = props => {\n const normalizedResponseAreaProps = {\n ...defaultResponseAreaProps,\n ...props.responseAreaProps\n };\n\n this.plugins = buildPlugins(props.activePlugins, {\n math: {\n onClick: this.onMathClick,\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur\n },\n image: {\n onDelete:\n props.imageSupport &&\n props.imageSupport.delete &&\n ((src, done) => {\n props.imageSupport.delete(src, e => {\n done(e, this.state.value);\n });\n }),\n insertImageRequested:\n props.imageSupport &&\n (getHandler => {\n /**\n * The handler is the object through which the outer context\n * communicates file upload events like: fileChosen, cancel, progress\n */\n const handler = getHandler(() => this.state.value);\n props.imageSupport.add(handler);\n }),\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur,\n maxImageWidth: this.props.maxImageWidth,\n maxImageHeight: this.props.maxImageHeight\n },\n toolbar: {\n /**\n * To minimize converting html -> state -> html\n * We only emit markup once 'done' is clicked.\n */\n disableUnderline: props.disableUnderline,\n autoWidth: props.autoWidthToolbar,\n onDone: () => {\n const { nonEmpty } = props;\n\n log('[onDone]');\n this.setState({ toolbarInFocus: false, focusedNode: null });\n this.editor.blur();\n\n if (nonEmpty && this.state.value.startText?.text?.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n });\n } else {\n this.onEditingDone();\n }\n }\n },\n table: {\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n responseArea: {\n type: normalizedResponseAreaProps.type,\n options: normalizedResponseAreaProps.options,\n maxResponseAreas: normalizedResponseAreaProps.maxResponseAreas,\n respAreaToolbar: normalizedResponseAreaProps.respAreaToolbar,\n onHandleAreaChange: normalizedResponseAreaProps.onHandleAreaChange,\n error: normalizedResponseAreaProps.error,\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n languageCharacters: props.languageCharactersProps,\n media: {\n focus: this.focus,\n createChange: () => this.state.value.change(),\n onChange: this.onChange\n }\n });\n };\n\n componentDidMount() {\n // onRef is needed to get the ref of the component because we export it using withStyles\n this.props.onRef(this);\n\n window.addEventListener('resize', this.onResize);\n\n if (this.editor && this.props.autoFocus) {\n Promise.resolve().then(() => {\n if (this.editor) {\n const editorDOM = document.querySelector(\n `[data-key=\"${this.editor.value.document.key}\"]`\n );\n\n this.editor.focus();\n\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const { toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(nextProps.toolbarOpts);\n\n if (!isEqual(newToolbarOpts, toolbarOpts)) {\n this.setState({\n toolbarOpts: newToolbarOpts\n });\n }\n\n if (!isEqual(nextProps.languageCharactersProps, this.props.languageCharactersProps)) {\n this.handlePlugins(nextProps);\n }\n }\n\n componentDidUpdate() {\n // The cursor is on a zero width element and when that is placed near void elements, it is not visible\n // so we increase the width to at least 2px in order for the user to see it\n const zeroWidthEls = document.querySelectorAll('[data-slate-zero-width=\"z\"]');\n\n Array.from(zeroWidthEls).forEach(el => {\n el.style.minWidth = '2px';\n el.style.display = 'inline-block';\n });\n }\n\n onPluginBlur = e => {\n log('[onPluginBlur]', e && e.relatedTarget);\n const target = e && e.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n log('[onPluginBlur] node: ', node);\n this.setState({ focusedNode: node }, () => {\n this.resetValue();\n });\n };\n\n onPluginFocus = e => {\n log('[onPluginFocus]', e && e.target);\n const target = e && e.target;\n if (target) {\n const node = findNode(target, this.state.value);\n log('[onPluginFocus] node: ', node);\n\n const stashedValue = this.state.stashedValue || this.state.value;\n this.setState({ focusedNode: node, stashedValue });\n } else {\n this.setState({ focusedNode: null });\n }\n this.stashValue();\n };\n\n onMathClick = node => {\n this.editor.change(c => c.collapseToStartOf(node));\n this.setState({ selectedNode: node });\n };\n\n onEditingDone = () => {\n log('[onEditingDone]');\n this.setState({ stashedValue: null, focusedNode: null });\n log('[onEditingDone] value: ', this.state.value);\n this.props.onChange(this.state.value, true);\n };\n\n /**\n * Remove onResize event listener\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize);\n }\n\n // Allowing time for onChange to take effect if it is called\n handleBlur = resolve => {\n const { nonEmpty } = this.props;\n const {\n toolbarOpts: { doneOn }\n } = this.state;\n\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n if (this.editor) {\n this.editor.blur();\n }\n\n if (doneOn === 'blur') {\n if (nonEmpty && this.state.value.startText?.text?.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n resolve();\n });\n } else {\n this.onEditingDone();\n resolve();\n }\n }\n };\n\n onBlur = event => {\n log('[onBlur]');\n const target = event.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n\n log('[onBlur] node: ', node);\n\n return new Promise(resolve => {\n this.setState({ 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 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 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 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={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","maxImageWidth","maxImageHeight","toolbar","disableUnderline","autoWidth","autoWidthToolbar","onDone","nonEmpty","setState","toolbarInFocus","focusedNode","editor","blur","startText","text","length","resetValue","then","onEditingDone","table","responseArea","type","maxResponseAreas","error","languageCharacters","languageCharactersProps","media","focus","createChange","change","onChange","relatedTarget","target","node","findNode","stashedValue","stashValue","c","collapseToStartOf","selectedNode","resolve","event","Promise","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","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","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","onDropPaste","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, getEventRange, getEventTransfer } from 'slate-react';\nimport SlateTypes from 'slate-prop-types';\n\nimport isEqual from 'lodash/isEqual';\nimport * as serialization from './serialization';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { Value, Block, Inline } from 'slate';\nimport { buildPlugins, ALL_PLUGINS, DEFAULT_PLUGINS } from './plugins';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\nimport Plain from 'slate-plain-serializer';\n\nimport { getBase64 } from './serialization';\n\nexport { ALL_PLUGINS, DEFAULT_PLUGINS, serialization };\n\nconst log = debug('editable-html:editor');\n\nconst defaultToolbarOpts = {\n position: 'bottom',\n alignment: 'left',\n alwaysVisible: false,\n showDone: true,\n doneOn: 'blur'\n};\n\nconst defaultResponseAreaProps = {\n options: {},\n respAreaToolbar: () => {},\n onHandleAreaChange: () => {}\n};\n\nconst defaultLanguageCharactersProps = [];\n\nconst createToolbarOpts = toolbarOpts => {\n return {\n ...defaultToolbarOpts,\n ...toolbarOpts\n };\n};\n\nexport class Editor extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n editorRef: PropTypes.func.isRequired,\n onRef: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyDown: PropTypes.func,\n focus: PropTypes.func.isRequired,\n value: SlateTypes.value.isRequired,\n imageSupport: PropTypes.object,\n charactersLimit: PropTypes.number,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n classes: PropTypes.object.isRequired,\n highlightShape: PropTypes.bool,\n disabled: PropTypes.bool,\n spellCheck: PropTypes.bool,\n nonEmpty: PropTypes.bool,\n disableUnderline: PropTypes.bool,\n autoWidthToolbar: PropTypes.bool,\n pluginProps: PropTypes.any,\n placeholder: PropTypes.string,\n responseAreaProps: PropTypes.shape({\n type: PropTypes.oneOf([\n 'explicit-constructed-response',\n 'inline-dropdown',\n 'drag-in-the-blank'\n ]),\n options: PropTypes.object,\n respAreaToolbar: PropTypes.func,\n onHandleAreaChange: PropTypes.func\n }),\n languageCharactersProps: PropTypes.arrayOf(\n PropTypes.shape({\n language: PropTypes.string,\n characterIcon: PropTypes.string,\n characters: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string))\n })\n ),\n toolbarOpts: PropTypes.shape({\n position: PropTypes.oneOf(['bottom', 'top']),\n alignment: PropTypes.oneOf(['left', 'right']),\n alwaysVisible: PropTypes.bool,\n showDone: PropTypes.bool,\n doneOn: PropTypes.string\n }),\n activePlugins: PropTypes.arrayOf(values => {\n const allValid = values.every(v => ALL_PLUGINS.includes(v));\n\n return (\n !allValid &&\n new Error(`Invalid values: ${values}, values must be one of [${ALL_PLUGINS.join(',')}]`)\n );\n }),\n className: PropTypes.string,\n maxImageWidth: PropTypes.number,\n maxImageHeight: PropTypes.number\n };\n\n static defaultProps = {\n disableUnderline: true,\n onFocus: () => {},\n onBlur: () => {},\n onKeyDown: () => {},\n toolbarOpts: defaultToolbarOpts,\n responseAreaProps: defaultResponseAreaProps,\n languageCharactersProps: defaultLanguageCharactersProps\n };\n\n constructor(props) {\n super(props);\n this.state = {\n value: props.value,\n toolbarOpts: createToolbarOpts(props.toolbarOpts)\n };\n\n this.onResize = () => {\n props.onChange(this.state.value, true);\n };\n\n this.handlePlugins(this.props);\n }\n\n handlePlugins = props => {\n const normalizedResponseAreaProps = {\n ...defaultResponseAreaProps,\n ...props.responseAreaProps\n };\n\n this.plugins = buildPlugins(props.activePlugins, {\n math: {\n onClick: this.onMathClick,\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur\n },\n image: {\n onDelete:\n props.imageSupport &&\n props.imageSupport.delete &&\n ((src, done) => {\n props.imageSupport.delete(src, e => {\n done(e, this.state.value);\n });\n }),\n insertImageRequested:\n props.imageSupport &&\n (getHandler => {\n /**\n * The handler is the object through which the outer context\n * communicates file upload events like: fileChosen, cancel, progress\n */\n const handler = getHandler(() => this.state.value);\n props.imageSupport.add(handler);\n }),\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur,\n maxImageWidth: this.props.maxImageWidth,\n maxImageHeight: this.props.maxImageHeight\n },\n toolbar: {\n /**\n * To minimize converting html -> state -> html\n * We only emit markup once 'done' is clicked.\n */\n disableUnderline: props.disableUnderline,\n autoWidth: props.autoWidthToolbar,\n onDone: () => {\n const { nonEmpty } = props;\n\n log('[onDone]');\n this.setState({ toolbarInFocus: false, focusedNode: null });\n this.editor.blur();\n\n if (nonEmpty && this.state.value.startText?.text?.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n });\n } else {\n this.onEditingDone();\n }\n }\n },\n table: {\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n responseArea: {\n type: normalizedResponseAreaProps.type,\n options: normalizedResponseAreaProps.options,\n maxResponseAreas: normalizedResponseAreaProps.maxResponseAreas,\n respAreaToolbar: normalizedResponseAreaProps.respAreaToolbar,\n onHandleAreaChange: normalizedResponseAreaProps.onHandleAreaChange,\n error: normalizedResponseAreaProps.error,\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n languageCharacters: props.languageCharactersProps,\n media: {\n focus: this.focus,\n createChange: () => this.state.value.change(),\n onChange: this.onChange\n }\n });\n };\n\n componentDidMount() {\n // onRef is needed to get the ref of the component because we export it using withStyles\n this.props.onRef(this);\n\n window.addEventListener('resize', this.onResize);\n\n if (this.editor && this.props.autoFocus) {\n Promise.resolve().then(() => {\n if (this.editor) {\n const editorDOM = document.querySelector(\n `[data-key=\"${this.editor.value.document.key}\"]`\n );\n\n this.editor.focus();\n\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const { toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(nextProps.toolbarOpts);\n\n if (!isEqual(newToolbarOpts, toolbarOpts)) {\n this.setState({\n toolbarOpts: newToolbarOpts\n });\n }\n\n if (!isEqual(nextProps.languageCharactersProps, this.props.languageCharactersProps)) {\n this.handlePlugins(nextProps);\n }\n }\n\n componentDidUpdate() {\n // The cursor is on a zero width element and when that is placed near void elements, it is not visible\n // so we increase the width to at least 2px in order for the user to see it\n const zeroWidthEls = document.querySelectorAll('[data-slate-zero-width=\"z\"]');\n\n Array.from(zeroWidthEls).forEach(el => {\n el.style.minWidth = '2px';\n el.style.display = 'inline-block';\n });\n }\n\n onPluginBlur = e => {\n log('[onPluginBlur]', e && e.relatedTarget);\n const target = e && e.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n log('[onPluginBlur] node: ', node);\n this.setState({ focusedNode: node }, () => {\n this.resetValue();\n });\n };\n\n onPluginFocus = e => {\n log('[onPluginFocus]', e && e.target);\n const target = e && e.target;\n if (target) {\n const node = findNode(target, this.state.value);\n log('[onPluginFocus] node: ', node);\n\n const stashedValue = this.state.stashedValue || this.state.value;\n this.setState({ focusedNode: node, stashedValue });\n } else {\n this.setState({ focusedNode: null });\n }\n this.stashValue();\n };\n\n onMathClick = node => {\n this.editor.change(c => c.collapseToStartOf(node));\n this.setState({ selectedNode: node });\n };\n\n onEditingDone = () => {\n log('[onEditingDone]');\n this.setState({ stashedValue: null, focusedNode: null });\n log('[onEditingDone] value: ', this.state.value);\n this.props.onChange(this.state.value, true);\n };\n\n /**\n * Remove onResize event listener\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize);\n }\n\n // Allowing time for onChange to take effect if it is called\n handleBlur = resolve => {\n const { nonEmpty } = this.props;\n const {\n toolbarOpts: { doneOn }\n } = this.state;\n\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n if (this.editor) {\n this.editor.blur();\n }\n\n if (doneOn === 'blur') {\n if (nonEmpty && this.state.value.startText?.text?.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n resolve();\n });\n } else {\n this.onEditingDone();\n resolve();\n }\n }\n };\n\n onBlur = event => {\n log('[onBlur]');\n const target = event.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n\n log('[onBlur] node: ', node);\n\n return new Promise(resolve => {\n this.setState({ focusedNode: !node ? null : 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 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 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 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={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,119 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = exports.AltDialog = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
20
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
22
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+
24
+ var _react = _interopRequireDefault(require("react"));
25
+
26
+ var _DialogContent = _interopRequireDefault(require("@material-ui/core/DialogContent"));
27
+
28
+ var _ArrowBackIos = _interopRequireDefault(require("@material-ui/icons/ArrowBackIos"));
29
+
30
+ var _TextField = _interopRequireDefault(require("@material-ui/core/TextField"));
31
+
32
+ var _DialogActions = _interopRequireDefault(require("@material-ui/core/DialogActions"));
33
+
34
+ var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
35
+
36
+ var _Dialog = _interopRequireDefault(require("@material-ui/core/Dialog"));
37
+
38
+ var _propTypes = _interopRequireDefault(require("prop-types"));
39
+
40
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
41
+
42
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
43
+
44
+ var AltDialog = /*#__PURE__*/function (_React$Component) {
45
+ (0, _inherits2["default"])(AltDialog, _React$Component);
46
+
47
+ var _super = _createSuper(AltDialog);
48
+
49
+ function AltDialog(props) {
50
+ var _this;
51
+
52
+ (0, _classCallCheck2["default"])(this, AltDialog);
53
+ _this = _super.call(this, props);
54
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "closeDialog", function () {
55
+ var allDialogs = document.querySelectorAll('#text-dialog');
56
+ allDialogs.forEach(function (s) {
57
+ return s.remove();
58
+ });
59
+ });
60
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onDone", function () {
61
+ var onDone = _this.props.onDone;
62
+ var value = _this.state.value;
63
+ onDone(value);
64
+
65
+ _this.closeDialog();
66
+ });
67
+ var alt = props.alt;
68
+ _this.state = {
69
+ value: alt
70
+ };
71
+ return _this;
72
+ }
73
+
74
+ (0, _createClass2["default"])(AltDialog, [{
75
+ key: "render",
76
+ value: function render() {
77
+ var _this2 = this;
78
+
79
+ var value = this.state.value;
80
+ return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
81
+ open: true,
82
+ disablePortal: true,
83
+ onClose: this.closeDialog,
84
+ id: "text-dialog",
85
+ hideBackdrop: true
86
+ }, /*#__PURE__*/_react["default"].createElement(_DialogContent["default"], null, /*#__PURE__*/_react["default"].createElement("div", {
87
+ style: {
88
+ display: 'flex'
89
+ }
90
+ }, /*#__PURE__*/_react["default"].createElement(_ArrowBackIos["default"], {
91
+ style: {
92
+ paddingTop: '6px'
93
+ }
94
+ }), /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
95
+ multiline: true,
96
+ placeholder: 'Enter an Alt Text description of this image',
97
+ helperText: 'Users with visual limitations rely on Alt Text, since screen readers cannot otherwise describe the contents of an image.',
98
+ value: value,
99
+ onChange: function onChange(event) {
100
+ return _this2.setState({
101
+ value: event.target.value
102
+ });
103
+ }
104
+ }))), /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], null, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
105
+ onClick: this.onDone
106
+ }, "Done")));
107
+ }
108
+ }]);
109
+ return AltDialog;
110
+ }(_react["default"].Component);
111
+
112
+ exports.AltDialog = AltDialog;
113
+ (0, _defineProperty2["default"])(AltDialog, "propTypes", {
114
+ onDone: _propTypes["default"].func.isRequired,
115
+ alt: _propTypes["default"].string
116
+ });
117
+ var _default = AltDialog;
118
+ exports["default"] = _default;
119
+ //# sourceMappingURL=alt-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alt-dialog.js","names":["AltDialog","props","allDialogs","document","querySelectorAll","forEach","s","remove","onDone","value","state","closeDialog","alt","display","paddingTop","event","setState","target","React","Component","PropTypes","func","isRequired","string"],"sources":["../../../src/plugins/image/alt-dialog.jsx"],"sourcesContent":["import React from 'react';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport ArrowBackIos from '@material-ui/icons/ArrowBackIos';\nimport TextField from '@material-ui/core/TextField';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport PropTypes from \"prop-types\";\n\nexport class AltDialog extends React.Component {\n static propTypes = {\n onDone: PropTypes.func.isRequired,\n alt: PropTypes.string\n };\n\n constructor(props) {\n super(props);\n\n const { alt } = props;\n\n this.state = {\n value: alt\n };\n }\n\n closeDialog = () => {\n const allDialogs = document.querySelectorAll('#text-dialog');\n\n allDialogs.forEach(function(s) {\n return s.remove();\n });\n };\n\n onDone = () => {\n const { onDone } = this.props;\n const { value } = this.state;\n\n onDone(value);\n this.closeDialog();\n };\n\n render() {\n const { value } = this.state;\n\n return (\n <Dialog open disablePortal onClose={this.closeDialog} id=\"text-dialog\" hideBackdrop>\n <DialogContent>\n <div style={{ display: 'flex' }}>\n <ArrowBackIos style={{ paddingTop: '6px' }} />\n <TextField\n multiline\n placeholder={'Enter an Alt Text description of this image'}\n helperText={\n 'Users with visual limitations rely on Alt Text, since screen readers cannot otherwise describe the contents of an image.'\n }\n value={value}\n onChange={event => this.setState({ value: event.target.value })}\n />\n </div>\n </DialogContent>\n <DialogActions>\n <Button onClick={this.onDone}>Done</Button>\n </DialogActions>\n </Dialog>\n );\n }\n}\n\nexport default AltDialog;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,S;;;;;EAMX,mBAAYC,KAAZ,EAAmB;IAAA;;IAAA;IACjB,0BAAMA,KAAN;IADiB,gGAUL,YAAM;MAClB,IAAMC,UAAU,GAAGC,QAAQ,CAACC,gBAAT,CAA0B,cAA1B,CAAnB;MAEAF,UAAU,CAACG,OAAX,CAAmB,UAASC,CAAT,EAAY;QAC7B,OAAOA,CAAC,CAACC,MAAF,EAAP;MACD,CAFD;IAGD,CAhBkB;IAAA,2FAkBV,YAAM;MACb,IAAQC,MAAR,GAAmB,MAAKP,KAAxB,CAAQO,MAAR;MACA,IAAQC,KAAR,GAAkB,MAAKC,KAAvB,CAAQD,KAAR;MAEAD,MAAM,CAACC,KAAD,CAAN;;MACA,MAAKE,WAAL;IACD,CAxBkB;IAGjB,IAAQC,GAAR,GAAgBX,KAAhB,CAAQW,GAAR;IAEA,MAAKF,KAAL,GAAa;MACXD,KAAK,EAAEG;IADI,CAAb;IALiB;EAQlB;;;;WAkBD,kBAAS;MAAA;;MACP,IAAQH,KAAR,GAAkB,KAAKC,KAAvB,CAAQD,KAAR;MAEA,oBACE,gCAAC,kBAAD;QAAQ,IAAI,MAAZ;QAAa,aAAa,MAA1B;QAA2B,OAAO,EAAE,KAAKE,WAAzC;QAAsD,EAAE,EAAC,aAAzD;QAAuE,YAAY;MAAnF,gBACE,gCAAC,yBAAD,qBACE;QAAK,KAAK,EAAE;UAAEE,OAAO,EAAE;QAAX;MAAZ,gBACE,gCAAC,wBAAD;QAAc,KAAK,EAAE;UAAEC,UAAU,EAAE;QAAd;MAArB,EADF,eAEE,gCAAC,qBAAD;QACE,SAAS,MADX;QAEE,WAAW,EAAE,6CAFf;QAGE,UAAU,EACR,0HAJJ;QAME,KAAK,EAAEL,KANT;QAOE,QAAQ,EAAE,kBAAAM,KAAK;UAAA,OAAI,MAAI,CAACC,QAAL,CAAc;YAAEP,KAAK,EAAEM,KAAK,CAACE,MAAN,CAAaR;UAAtB,CAAd,CAAJ;QAAA;MAPjB,EAFF,CADF,CADF,eAeE,gCAAC,yBAAD,qBACE,gCAAC,kBAAD;QAAQ,OAAO,EAAE,KAAKD;MAAtB,UADF,CAfF,CADF;IAqBD;;;EAxD4BU,iBAAA,CAAMC,S;;;iCAAxBnB,S,eACQ;EACjBQ,MAAM,EAAEY,qBAAA,CAAUC,IAAV,CAAeC,UADN;EAEjBV,GAAG,EAAEQ,qBAAA,CAAUG;AAFE,C;eA0DNvB,S"}
@@ -266,6 +266,7 @@ var Component = /*#__PURE__*/function (_React$Component) {
266
266
  var deleteStatus = node.data.get('deleteStatus');
267
267
  var alignment = node.data.get('alignment');
268
268
  var percent = node.data.get('percent');
269
+ var alt = node.data.get('alt');
269
270
  var margin;
270
271
  var justifyContent;
271
272
 
@@ -318,7 +319,8 @@ var Component = /*#__PURE__*/function (_React$Component) {
318
319
  },
319
320
  src: src,
320
321
  style: size,
321
- onLoad: this.loadImage
322
+ onLoad: this.loadImage,
323
+ alt: alt
322
324
  })), /*#__PURE__*/_react["default"].createElement("div", {
323
325
  ref: function ref(_ref3) {
324
326
  _this2.resize = _ref3;
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","names":["log","debug","size","s","Component","percent","multiplier","img","naturalWidth","naturalHeight","width","floored","parseInt","toFixed","props","node","editor","update","data","w","get","set","getPercentFromWidth","equals","change","c","setNodeByKey","key","window","addEventListener","startResizing","stopResizing","maxImageWidth","maxImageHeight","box","style","dimensions","height","updateImageDimensions","setState","e","bounds","target","getBoundingClientRect","clientX","left","clientY","top","hasMinimumWidth","hasDimensionsConstraints","removeEventListener","initialDim","nextDim","keepAspectRatio","resizeType","imageAspectRatio","applySizeData","resizeHandle","resize","initialiseResize","objectFit","classes","attributes","onFocus","active","value","isFocused","selection","hasEdgeIn","src","loaded","deleteStatus","alignment","margin","justifyContent","getSize","className","classNames","root","loading","pendingDelete","progressClasses","progress","hideProgress","imageContainer","image","ref","loadImage","React","SlatePropTypes","isRequired","PropTypes","shape","func","object","onBlur","number","styles","theme","portal","position","opacity","transition","floatingButtonRow","backgroundColor","borderRadius","display","padding","border","boxShadow","right","alignItems","palette","primary","main","cursor","marginLeft","marginRight","drawableHeight","minHeight","withStyles"],"sources":["../../../src/plugins/image/component.jsx"],"sourcesContent":["import LinearProgress from '@material-ui/core/LinearProgress';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport SlatePropTypes from 'slate-prop-types';\n\nconst log = debug('@pie-lib:editable-html:plugins:image:component');\n\nconst size = s => (s ? `${s}px` : 'auto');\n\nexport class Component extends React.Component {\n static propTypes = {\n node: SlatePropTypes.node.isRequired,\n editor: PropTypes.shape({\n change: PropTypes.func.isRequired,\n value: PropTypes.object\n }).isRequired,\n classes: PropTypes.object.isRequired,\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n maxImageWidth: PropTypes.number,\n maxImageHeight: PropTypes.number\n };\n\n getWidth = percent => {\n const multiplier = percent / 100;\n return this.img.naturalWidth * multiplier;\n };\n\n getHeight = percent => {\n const multiplier = percent / 100;\n return this.img.naturalHeight * multiplier;\n };\n\n getPercentFromWidth = width => {\n var floored = (width / this.img.naturalWidth) * 4;\n return parseInt(floored.toFixed(0) * 25, 10);\n };\n\n applySizeData = () => {\n const { node, editor } = this.props;\n\n let update = node.data;\n\n const w = update.get('width');\n if (w) {\n update = update.set('resizePercent', this.getPercentFromWidth(w));\n }\n\n log('[applySizeData] update: ', update);\n\n if (!update.equals(node.data)) {\n editor.change(c => c.setNodeByKey(node.key, { data: update }));\n }\n };\n\n initialiseResize = () => {\n window.addEventListener('mousemove', this.startResizing, false);\n window.addEventListener('mouseup', this.stopResizing, false);\n };\n\n componentDidMount() {\n this.applySizeData();\n\n const resizeHandle = this.resize;\n\n if (resizeHandle) {\n resizeHandle.addEventListener('mousedown', this.initialiseResize, false);\n }\n }\n\n componentDidUpdate() {\n this.applySizeData();\n }\n\n getSize(data) {\n return {\n width: size(data.get('width')),\n height: size(data.get('height')),\n objectFit: 'contain'\n };\n }\n\n loadImage = () => {\n let { maxImageWidth, maxImageHeight } = this.props || {};\n maxImageWidth = maxImageWidth || 700;\n maxImageHeight = maxImageHeight || 900;\n\n const box = this.img;\n\n //on first load\n if (!box.style.width || box.style.width === 'auto') {\n const dimensions = {\n width: (box && box.naturalWidth) || 100,\n height: (box && box.naturalHeight) || 100\n };\n\n const { width, height } = this.updateImageDimensions(\n dimensions,\n {\n width: dimensions.width < maxImageWidth ? dimensions.width : maxImageWidth,\n height: dimensions.height < maxImageHeight ? dimensions.height : maxImageHeight\n },\n true\n );\n\n box.style.width = `${width}px`;\n box.style.height = `${height}px`;\n\n this.setState({\n dimensions: { height: height, width: width }\n });\n\n const { node, editor } = this.props;\n\n let update = node.data;\n\n update = update.set('width', width);\n update = update.set('height', height);\n\n if (!update.equals(node.data)) {\n editor.change(c => c.setNodeByKey(node.key, { data: update }));\n }\n }\n };\n\n startResizing = e => {\n const bounds = e.target.getBoundingClientRect();\n const box = this.img;\n const dimensions = {\n width: (box && box.naturalWidth) || 100,\n height: (box && box.naturalHeight) || 100\n };\n\n const { width, height } = this.updateImageDimensions(\n dimensions,\n {\n width: e.clientX - bounds.left,\n height: e.clientY - bounds.top\n },\n true\n );\n\n const hasMinimumWidth = width > 50 && height > 50;\n const hasDimensionsConstraints = width <= 700 && height <= 900;\n\n if (hasMinimumWidth && hasDimensionsConstraints && box) {\n box.style.width = `${width}px`;\n box.style.height = `${height}px`;\n\n this.setState({\n dimensions: { height: height, width: width }\n });\n\n const { node, editor } = this.props;\n\n let update = node.data;\n\n update = update.set('width', width);\n update = update.set('height', height);\n\n if (!update.equals(node.data)) {\n editor.change(c => c.setNodeByKey(node.key, { data: update }));\n }\n }\n };\n\n stopResizing = () => {\n window.removeEventListener('mousemove', this.startResizing, false);\n window.removeEventListener('mouseup', this.stopResizing, false);\n };\n\n updateImageDimensions = (initialDim, nextDim, keepAspectRatio, resizeType) => {\n // if we want to keep image aspect ratio\n if (keepAspectRatio) {\n const imageAspectRatio = initialDim.width / initialDim.height;\n\n if (resizeType === 'height') {\n // if we want to change image height => we update the width accordingly\n return {\n width: nextDim.height * imageAspectRatio,\n height: nextDim.height\n };\n }\n\n // if we want to change image width => we update the height accordingly\n return {\n width: nextDim.width,\n height: nextDim.width / imageAspectRatio\n };\n }\n\n // if we don't want to keep aspect ratio, we just update both values\n return {\n width: nextDim.width,\n height: nextDim.height\n };\n };\n\n render() {\n const { node, editor, classes, attributes, onFocus } = this.props;\n const active = editor.value.isFocused && editor.value.selection.hasEdgeIn(node);\n const src = node.data.get('src');\n const loaded = node.data.get('loaded') !== false;\n const deleteStatus = node.data.get('deleteStatus');\n const alignment = node.data.get('alignment');\n const percent = node.data.get('percent');\n let margin;\n let justifyContent;\n\n switch (alignment) {\n case 'left':\n justifyContent = 'flex-start';\n margin = '0';\n break;\n case 'center':\n justifyContent = 'center';\n margin = '0 auto';\n break;\n case 'right':\n justifyContent = 'flex-end';\n margin = 'auto 0 0 auto ';\n break;\n default:\n justifyContent = 'flex-start';\n margin = '0';\n break;\n }\n log('[render] node.data:', node.data);\n\n const size = this.getSize(node.data);\n\n log('[render] style:', size);\n\n const className = classNames(\n classes.root,\n !loaded && classes.loading,\n deleteStatus === 'pending' && classes.pendingDelete\n );\n\n const progressClasses = classNames(classes.progress, loaded && classes.hideProgress);\n\n return [\n <span key={'sp1'}>&nbsp;</span>,\n <div key={'comp'} onFocus={onFocus} className={className} style={{ justifyContent }}>\n <LinearProgress\n mode=\"determinate\"\n value={percent > 0 ? percent : 0}\n className={progressClasses}\n />\n <div className={classes.imageContainer}>\n <img\n {...attributes}\n className={classNames(classes.image, active && classes.active)}\n ref={ref => {\n this.img = ref;\n }}\n src={src}\n style={size}\n onLoad={this.loadImage}\n />\n <div\n ref={ref => {\n this.resize = ref;\n }}\n className={classNames(classes.resize, 'resize')}\n />\n </div>\n </div>,\n <span key={'sp2'}>&nbsp;</span>\n ];\n }\n}\n\nconst styles = theme => ({\n portal: {\n position: 'absolute',\n opacity: 0,\n transition: 'opacity 200ms linear'\n },\n floatingButtonRow: {\n backgroundColor: 'white',\n borderRadius: '1px',\n display: 'flex',\n padding: '10px',\n border: 'solid 1px #eeeeee',\n boxShadow:\n '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)'\n },\n progress: {\n position: 'absolute',\n left: '0',\n width: 'fit-content',\n top: '0%',\n transition: 'opacity 200ms linear'\n },\n hideProgress: {\n opacity: 0\n },\n loading: {\n opacity: 0.3\n },\n pendingDelete: {\n opacity: 0.3\n },\n root: {\n position: 'relative',\n border: 'solid 1px white',\n display: 'flex',\n transition: 'opacity 200ms linear'\n },\n delete: {\n position: 'absolute',\n right: 0\n },\n imageContainer: {\n position: 'relative',\n width: 'fit-content',\n display: 'flex',\n alignItems: 'center',\n\n '&&:hover > .resize': {\n display: 'block'\n }\n },\n active: {\n border: `solid 1px ${theme.palette.primary.main}`\n },\n resize: {\n backgroundColor: theme.palette.primary.main,\n cursor: 'col-resize',\n height: '35px',\n width: '5px',\n borderRadius: 8,\n marginLeft: '5px',\n marginRight: '10px',\n display: 'none'\n },\n drawableHeight: {\n minHeight: 350\n }\n});\n\nexport default withStyles(styles)(Component);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,GAAG,GAAG,IAAAC,iBAAA,EAAM,gDAAN,CAAZ;;AAEA,IAAMC,IAAI,GAAG,SAAPA,IAAO,CAAAC,CAAC;EAAA,OAAKA,CAAC,aAAMA,CAAN,UAAc,MAApB;AAAA,CAAd;;IAEaC,S;;;;;;;;;;;;;;;iGAeA,UAAAC,OAAO,EAAI;MACpB,IAAMC,UAAU,GAAGD,OAAO,GAAG,GAA7B;MACA,OAAO,MAAKE,GAAL,CAASC,YAAT,GAAwBF,UAA/B;IACD,C;kGAEW,UAAAD,OAAO,EAAI;MACrB,IAAMC,UAAU,GAAGD,OAAO,GAAG,GAA7B;MACA,OAAO,MAAKE,GAAL,CAASE,aAAT,GAAyBH,UAAhC;IACD,C;4GAEqB,UAAAI,KAAK,EAAI;MAC7B,IAAIC,OAAO,GAAID,KAAK,GAAG,MAAKH,GAAL,CAASC,YAAlB,GAAkC,CAAhD;MACA,OAAOI,QAAQ,CAACD,OAAO,CAACE,OAAR,CAAgB,CAAhB,IAAqB,EAAtB,EAA0B,EAA1B,CAAf;IACD,C;sGAEe,YAAM;MACpB,kBAAyB,MAAKC,KAA9B;MAAA,IAAQC,IAAR,eAAQA,IAAR;MAAA,IAAcC,MAAd,eAAcA,MAAd;MAEA,IAAIC,MAAM,GAAGF,IAAI,CAACG,IAAlB;MAEA,IAAMC,CAAC,GAAGF,MAAM,CAACG,GAAP,CAAW,OAAX,CAAV;;MACA,IAAID,CAAJ,EAAO;QACLF,MAAM,GAAGA,MAAM,CAACI,GAAP,CAAW,eAAX,EAA4B,MAAKC,mBAAL,CAAyBH,CAAzB,CAA5B,CAAT;MACD;;MAEDnB,GAAG,CAAC,0BAAD,EAA6BiB,MAA7B,CAAH;;MAEA,IAAI,CAACA,MAAM,CAACM,MAAP,CAAcR,IAAI,CAACG,IAAnB,CAAL,EAA+B;QAC7BF,MAAM,CAACQ,MAAP,CAAc,UAAAC,CAAC;UAAA,OAAIA,CAAC,CAACC,YAAF,CAAeX,IAAI,CAACY,GAApB,EAAyB;YAAET,IAAI,EAAED;UAAR,CAAzB,CAAJ;QAAA,CAAf;MACD;IACF,C;yGAEkB,YAAM;MACvBW,MAAM,CAACC,gBAAP,CAAwB,WAAxB,EAAqC,MAAKC,aAA1C,EAAyD,KAAzD;MACAF,MAAM,CAACC,gBAAP,CAAwB,SAAxB,EAAmC,MAAKE,YAAxC,EAAsD,KAAtD;IACD,C;kGAwBW,YAAM;MAChB,WAAwC,MAAKjB,KAAL,IAAc,EAAtD;MAAA,IAAMkB,aAAN,QAAMA,aAAN;MAAA,IAAqBC,cAArB,QAAqBA,cAArB;;MACAD,aAAa,GAAGA,aAAa,IAAI,GAAjC;MACAC,cAAc,GAAGA,cAAc,IAAI,GAAnC;MAEA,IAAMC,GAAG,GAAG,MAAK3B,GAAjB,CALgB,CAOhB;;MACA,IAAI,CAAC2B,GAAG,CAACC,KAAJ,CAAUzB,KAAX,IAAoBwB,GAAG,CAACC,KAAJ,CAAUzB,KAAV,KAAoB,MAA5C,EAAoD;QAClD,IAAM0B,UAAU,GAAG;UACjB1B,KAAK,EAAGwB,GAAG,IAAIA,GAAG,CAAC1B,YAAZ,IAA6B,GADnB;UAEjB6B,MAAM,EAAGH,GAAG,IAAIA,GAAG,CAACzB,aAAZ,IAA8B;QAFrB,CAAnB;;QAKA,4BAA0B,MAAK6B,qBAAL,CACxBF,UADwB,EAExB;UACE1B,KAAK,EAAE0B,UAAU,CAAC1B,KAAX,GAAmBsB,aAAnB,GAAmCI,UAAU,CAAC1B,KAA9C,GAAsDsB,aAD/D;UAEEK,MAAM,EAAED,UAAU,CAACC,MAAX,GAAoBJ,cAApB,GAAqCG,UAAU,CAACC,MAAhD,GAAyDJ;QAFnE,CAFwB,EAMxB,IANwB,CAA1B;QAAA,IAAQvB,KAAR,yBAAQA,KAAR;QAAA,IAAe2B,MAAf,yBAAeA,MAAf;;QASAH,GAAG,CAACC,KAAJ,CAAUzB,KAAV,aAAqBA,KAArB;QACAwB,GAAG,CAACC,KAAJ,CAAUE,MAAV,aAAsBA,MAAtB;;QAEA,MAAKE,QAAL,CAAc;UACZH,UAAU,EAAE;YAAEC,MAAM,EAAEA,MAAV;YAAkB3B,KAAK,EAAEA;UAAzB;QADA,CAAd;;QAIA,mBAAyB,MAAKI,KAA9B;QAAA,IAAQC,IAAR,gBAAQA,IAAR;QAAA,IAAcC,MAAd,gBAAcA,MAAd;QAEA,IAAIC,MAAM,GAAGF,IAAI,CAACG,IAAlB;QAEAD,MAAM,GAAGA,MAAM,CAACI,GAAP,CAAW,OAAX,EAAoBX,KAApB,CAAT;QACAO,MAAM,GAAGA,MAAM,CAACI,GAAP,CAAW,QAAX,EAAqBgB,MAArB,CAAT;;QAEA,IAAI,CAACpB,MAAM,CAACM,MAAP,CAAcR,IAAI,CAACG,IAAnB,CAAL,EAA+B;UAC7BF,MAAM,CAACQ,MAAP,CAAc,UAAAC,CAAC;YAAA,OAAIA,CAAC,CAACC,YAAF,CAAeX,IAAI,CAACY,GAApB,EAAyB;cAAET,IAAI,EAAED;YAAR,CAAzB,CAAJ;UAAA,CAAf;QACD;MACF;IACF,C;sGAEe,UAAAuB,CAAC,EAAI;MACnB,IAAMC,MAAM,GAAGD,CAAC,CAACE,MAAF,CAASC,qBAAT,EAAf;MACA,IAAMT,GAAG,GAAG,MAAK3B,GAAjB;MACA,IAAM6B,UAAU,GAAG;QACjB1B,KAAK,EAAGwB,GAAG,IAAIA,GAAG,CAAC1B,YAAZ,IAA6B,GADnB;QAEjB6B,MAAM,EAAGH,GAAG,IAAIA,GAAG,CAACzB,aAAZ,IAA8B;MAFrB,CAAnB;;MAKA,6BAA0B,MAAK6B,qBAAL,CACxBF,UADwB,EAExB;QACE1B,KAAK,EAAE8B,CAAC,CAACI,OAAF,GAAYH,MAAM,CAACI,IAD5B;QAEER,MAAM,EAAEG,CAAC,CAACM,OAAF,GAAYL,MAAM,CAACM;MAF7B,CAFwB,EAMxB,IANwB,CAA1B;MAAA,IAAQrC,KAAR,0BAAQA,KAAR;MAAA,IAAe2B,MAAf,0BAAeA,MAAf;;MASA,IAAMW,eAAe,GAAGtC,KAAK,GAAG,EAAR,IAAc2B,MAAM,GAAG,EAA/C;MACA,IAAMY,wBAAwB,GAAGvC,KAAK,IAAI,GAAT,IAAgB2B,MAAM,IAAI,GAA3D;;MAEA,IAAIW,eAAe,IAAIC,wBAAnB,IAA+Cf,GAAnD,EAAwD;QACtDA,GAAG,CAACC,KAAJ,CAAUzB,KAAV,aAAqBA,KAArB;QACAwB,GAAG,CAACC,KAAJ,CAAUE,MAAV,aAAsBA,MAAtB;;QAEA,MAAKE,QAAL,CAAc;UACZH,UAAU,EAAE;YAAEC,MAAM,EAAEA,MAAV;YAAkB3B,KAAK,EAAEA;UAAzB;QADA,CAAd;;QAIA,mBAAyB,MAAKI,KAA9B;QAAA,IAAQC,IAAR,gBAAQA,IAAR;QAAA,IAAcC,MAAd,gBAAcA,MAAd;QAEA,IAAIC,MAAM,GAAGF,IAAI,CAACG,IAAlB;QAEAD,MAAM,GAAGA,MAAM,CAACI,GAAP,CAAW,OAAX,EAAoBX,KAApB,CAAT;QACAO,MAAM,GAAGA,MAAM,CAACI,GAAP,CAAW,QAAX,EAAqBgB,MAArB,CAAT;;QAEA,IAAI,CAACpB,MAAM,CAACM,MAAP,CAAcR,IAAI,CAACG,IAAnB,CAAL,EAA+B;UAC7BF,MAAM,CAACQ,MAAP,CAAc,UAAAC,CAAC;YAAA,OAAIA,CAAC,CAACC,YAAF,CAAeX,IAAI,CAACY,GAApB,EAAyB;cAAET,IAAI,EAAED;YAAR,CAAzB,CAAJ;UAAA,CAAf;QACD;MACF;IACF,C;qGAEc,YAAM;MACnBW,MAAM,CAACsB,mBAAP,CAA2B,WAA3B,EAAwC,MAAKpB,aAA7C,EAA4D,KAA5D;MACAF,MAAM,CAACsB,mBAAP,CAA2B,SAA3B,EAAsC,MAAKnB,YAA3C,EAAyD,KAAzD;IACD,C;8GAEuB,UAACoB,UAAD,EAAaC,OAAb,EAAsBC,eAAtB,EAAuCC,UAAvC,EAAsD;MAC5E;MACA,IAAID,eAAJ,EAAqB;QACnB,IAAME,gBAAgB,GAAGJ,UAAU,CAACzC,KAAX,GAAmByC,UAAU,CAACd,MAAvD;;QAEA,IAAIiB,UAAU,KAAK,QAAnB,EAA6B;UAC3B;UACA,OAAO;YACL5C,KAAK,EAAE0C,OAAO,CAACf,MAAR,GAAiBkB,gBADnB;YAELlB,MAAM,EAAEe,OAAO,CAACf;UAFX,CAAP;QAID,CATkB,CAWnB;;;QACA,OAAO;UACL3B,KAAK,EAAE0C,OAAO,CAAC1C,KADV;UAEL2B,MAAM,EAAEe,OAAO,CAAC1C,KAAR,GAAgB6C;QAFnB,CAAP;MAID,CAlB2E,CAoB5E;;;MACA,OAAO;QACL7C,KAAK,EAAE0C,OAAO,CAAC1C,KADV;QAEL2B,MAAM,EAAEe,OAAO,CAACf;MAFX,CAAP;IAID,C;;;;;;WAxID,6BAAoB;MAClB,KAAKmB,aAAL;MAEA,IAAMC,YAAY,GAAG,KAAKC,MAA1B;;MAEA,IAAID,YAAJ,EAAkB;QAChBA,YAAY,CAAC5B,gBAAb,CAA8B,WAA9B,EAA2C,KAAK8B,gBAAhD,EAAkE,KAAlE;MACD;IACF;;;WAED,8BAAqB;MACnB,KAAKH,aAAL;IACD;;;WAED,iBAAQtC,IAAR,EAAc;MACZ,OAAO;QACLR,KAAK,EAAER,IAAI,CAACgB,IAAI,CAACE,GAAL,CAAS,OAAT,CAAD,CADN;QAELiB,MAAM,EAAEnC,IAAI,CAACgB,IAAI,CAACE,GAAL,CAAS,QAAT,CAAD,CAFP;QAGLwC,SAAS,EAAE;MAHN,CAAP;IAKD;;;WAsHD,kBAAS;MAAA;;MACP,mBAAuD,KAAK9C,KAA5D;MAAA,IAAQC,IAAR,gBAAQA,IAAR;MAAA,IAAcC,MAAd,gBAAcA,MAAd;MAAA,IAAsB6C,OAAtB,gBAAsBA,OAAtB;MAAA,IAA+BC,UAA/B,gBAA+BA,UAA/B;MAAA,IAA2CC,OAA3C,gBAA2CA,OAA3C;MACA,IAAMC,MAAM,GAAGhD,MAAM,CAACiD,KAAP,CAAaC,SAAb,IAA0BlD,MAAM,CAACiD,KAAP,CAAaE,SAAb,CAAuBC,SAAvB,CAAiCrD,IAAjC,CAAzC;MACA,IAAMsD,GAAG,GAAGtD,IAAI,CAACG,IAAL,CAAUE,GAAV,CAAc,KAAd,CAAZ;MACA,IAAMkD,MAAM,GAAGvD,IAAI,CAACG,IAAL,CAAUE,GAAV,CAAc,QAAd,MAA4B,KAA3C;MACA,IAAMmD,YAAY,GAAGxD,IAAI,CAACG,IAAL,CAAUE,GAAV,CAAc,cAAd,CAArB;MACA,IAAMoD,SAAS,GAAGzD,IAAI,CAACG,IAAL,CAAUE,GAAV,CAAc,WAAd,CAAlB;MACA,IAAMf,OAAO,GAAGU,IAAI,CAACG,IAAL,CAAUE,GAAV,CAAc,SAAd,CAAhB;MACA,IAAIqD,MAAJ;MACA,IAAIC,cAAJ;;MAEA,QAAQF,SAAR;QACE,KAAK,MAAL;UACEE,cAAc,GAAG,YAAjB;UACAD,MAAM,GAAG,GAAT;UACA;;QACF,KAAK,QAAL;UACEC,cAAc,GAAG,QAAjB;UACAD,MAAM,GAAG,QAAT;UACA;;QACF,KAAK,OAAL;UACEC,cAAc,GAAG,UAAjB;UACAD,MAAM,GAAG,gBAAT;UACA;;QACF;UACEC,cAAc,GAAG,YAAjB;UACAD,MAAM,GAAG,GAAT;UACA;MAhBJ;;MAkBAzE,GAAG,CAAC,qBAAD,EAAwBe,IAAI,CAACG,IAA7B,CAAH;MAEA,IAAMhB,IAAI,GAAG,KAAKyE,OAAL,CAAa5D,IAAI,CAACG,IAAlB,CAAb;MAEAlB,GAAG,CAAC,iBAAD,EAAoBE,IAApB,CAAH;MAEA,IAAM0E,SAAS,GAAG,IAAAC,sBAAA,EAChBhB,OAAO,CAACiB,IADQ,EAEhB,CAACR,MAAD,IAAWT,OAAO,CAACkB,OAFH,EAGhBR,YAAY,KAAK,SAAjB,IAA8BV,OAAO,CAACmB,aAHtB,CAAlB;MAMA,IAAMC,eAAe,GAAG,IAAAJ,sBAAA,EAAWhB,OAAO,CAACqB,QAAnB,EAA6BZ,MAAM,IAAIT,OAAO,CAACsB,YAA/C,CAAxB;MAEA,OAAO,cACL;QAAM,GAAG,EAAE;MAAX,UADK,eAEL;QAAK,GAAG,EAAE,MAAV;QAAkB,OAAO,EAAEpB,OAA3B;QAAoC,SAAS,EAAEa,SAA/C;QAA0D,KAAK,EAAE;UAAEF,cAAc,EAAdA;QAAF;MAAjE,gBACE,gCAAC,0BAAD;QACE,IAAI,EAAC,aADP;QAEE,KAAK,EAAErE,OAAO,GAAG,CAAV,GAAcA,OAAd,GAAwB,CAFjC;QAGE,SAAS,EAAE4E;MAHb,EADF,eAME;QAAK,SAAS,EAAEpB,OAAO,CAACuB;MAAxB,gBACE,qEACMtB,UADN;QAEE,SAAS,EAAE,IAAAe,sBAAA,EAAWhB,OAAO,CAACwB,KAAnB,EAA0BrB,MAAM,IAAIH,OAAO,CAACG,MAA5C,CAFb;QAGE,GAAG,EAAE,aAAAsB,KAAG,EAAI;UACV,MAAI,CAAC/E,GAAL,GAAW+E,KAAX;QACD,CALH;QAME,GAAG,EAAEjB,GANP;QAOE,KAAK,EAAEnE,IAPT;QAQE,MAAM,EAAE,KAAKqF;MARf,GADF,eAWE;QACE,GAAG,EAAE,aAAAD,KAAG,EAAI;UACV,MAAI,CAAC5B,MAAL,GAAc4B,KAAd;QACD,CAHH;QAIE,SAAS,EAAE,IAAAT,sBAAA,EAAWhB,OAAO,CAACH,MAAnB,EAA2B,QAA3B;MAJb,EAXF,CANF,CAFK,eA2BL;QAAM,GAAG,EAAE;MAAX,UA3BK,CAAP;IA6BD;;;EAtQ4B8B,iBAAA,CAAMpF,S;;;iCAAxBA,S,eACQ;EACjBW,IAAI,EAAE0E,0BAAA,CAAe1E,IAAf,CAAoB2E,UADT;EAEjB1E,MAAM,EAAE2E,qBAAA,CAAUC,KAAV,CAAgB;IACtBpE,MAAM,EAAEmE,qBAAA,CAAUE,IAAV,CAAeH,UADD;IAEtBzB,KAAK,EAAE0B,qBAAA,CAAUG;EAFK,CAAhB,EAGLJ,UALc;EAMjB7B,OAAO,EAAE8B,qBAAA,CAAUG,MAAV,CAAiBJ,UANT;EAOjB5B,UAAU,EAAE6B,qBAAA,CAAUG,MAPL;EAQjB/B,OAAO,EAAE4B,qBAAA,CAAUE,IARF;EASjBE,MAAM,EAAEJ,qBAAA,CAAUE,IATD;EAUjB7D,aAAa,EAAE2D,qBAAA,CAAUK,MAVR;EAWjB/D,cAAc,EAAE0D,qBAAA,CAAUK;AAXT,C;;AAwQrB,IAAMC,MAAM,GAAG,SAATA,MAAS,CAAAC,KAAK;EAAA,OAAK;IACvBC,MAAM,EAAE;MACNC,QAAQ,EAAE,UADJ;MAENC,OAAO,EAAE,CAFH;MAGNC,UAAU,EAAE;IAHN,CADe;IAMvBC,iBAAiB,EAAE;MACjBC,eAAe,EAAE,OADA;MAEjBC,YAAY,EAAE,KAFG;MAGjBC,OAAO,EAAE,MAHQ;MAIjBC,OAAO,EAAE,MAJQ;MAKjBC,MAAM,EAAE,mBALS;MAMjBC,SAAS,EACP;IAPe,CANI;IAevB3B,QAAQ,EAAE;MACRkB,QAAQ,EAAE,UADF;MAERvD,IAAI,EAAE,GAFE;MAGRnC,KAAK,EAAE,aAHC;MAIRqC,GAAG,EAAE,IAJG;MAKRuD,UAAU,EAAE;IALJ,CAfa;IAsBvBnB,YAAY,EAAE;MACZkB,OAAO,EAAE;IADG,CAtBS;IAyBvBtB,OAAO,EAAE;MACPsB,OAAO,EAAE;IADF,CAzBc;IA4BvBrB,aAAa,EAAE;MACbqB,OAAO,EAAE;IADI,CA5BQ;IA+BvBvB,IAAI,EAAE;MACJsB,QAAQ,EAAE,UADN;MAEJQ,MAAM,EAAE,iBAFJ;MAGJF,OAAO,EAAE,MAHL;MAIJJ,UAAU,EAAE;IAJR,CA/BiB;IAqCvB,UAAQ;MACNF,QAAQ,EAAE,UADJ;MAENU,KAAK,EAAE;IAFD,CArCe;IAyCvB1B,cAAc,EAAE;MACdgB,QAAQ,EAAE,UADI;MAEd1F,KAAK,EAAE,aAFO;MAGdgG,OAAO,EAAE,MAHK;MAIdK,UAAU,EAAE,QAJE;MAMd,sBAAsB;QACpBL,OAAO,EAAE;MADW;IANR,CAzCO;IAmDvB1C,MAAM,EAAE;MACN4C,MAAM,sBAAeV,KAAK,CAACc,OAAN,CAAcC,OAAd,CAAsBC,IAArC;IADA,CAnDe;IAsDvBxD,MAAM,EAAE;MACN8C,eAAe,EAAEN,KAAK,CAACc,OAAN,CAAcC,OAAd,CAAsBC,IADjC;MAENC,MAAM,EAAE,YAFF;MAGN9E,MAAM,EAAE,MAHF;MAIN3B,KAAK,EAAE,KAJD;MAKN+F,YAAY,EAAE,CALR;MAMNW,UAAU,EAAE,KANN;MAONC,WAAW,EAAE,MAPP;MAQNX,OAAO,EAAE;IARH,CAtDe;IAgEvBY,cAAc,EAAE;MACdC,SAAS,EAAE;IADG;EAhEO,CAAL;AAAA,CAApB;;eAqEe,IAAAC,kBAAA,EAAWvB,MAAX,EAAmB7F,SAAnB,C"}
1
+ {"version":3,"file":"component.js","names":["log","debug","size","s","Component","percent","multiplier","img","naturalWidth","naturalHeight","width","floored","parseInt","toFixed","props","node","editor","update","data","w","get","set","getPercentFromWidth","equals","change","c","setNodeByKey","key","window","addEventListener","startResizing","stopResizing","maxImageWidth","maxImageHeight","box","style","dimensions","height","updateImageDimensions","setState","e","bounds","target","getBoundingClientRect","clientX","left","clientY","top","hasMinimumWidth","hasDimensionsConstraints","removeEventListener","initialDim","nextDim","keepAspectRatio","resizeType","imageAspectRatio","applySizeData","resizeHandle","resize","initialiseResize","objectFit","classes","attributes","onFocus","active","value","isFocused","selection","hasEdgeIn","src","loaded","deleteStatus","alignment","alt","margin","justifyContent","getSize","className","classNames","root","loading","pendingDelete","progressClasses","progress","hideProgress","imageContainer","image","ref","loadImage","React","SlatePropTypes","isRequired","PropTypes","shape","func","object","onBlur","number","styles","theme","portal","position","opacity","transition","floatingButtonRow","backgroundColor","borderRadius","display","padding","border","boxShadow","right","alignItems","palette","primary","main","cursor","marginLeft","marginRight","drawableHeight","minHeight","withStyles"],"sources":["../../../src/plugins/image/component.jsx"],"sourcesContent":["import LinearProgress from '@material-ui/core/LinearProgress';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport SlatePropTypes from 'slate-prop-types';\n\nconst log = debug('@pie-lib:editable-html:plugins:image:component');\n\nconst size = s => (s ? `${s}px` : 'auto');\n\nexport class Component extends React.Component {\n static propTypes = {\n node: SlatePropTypes.node.isRequired,\n editor: PropTypes.shape({\n change: PropTypes.func.isRequired,\n value: PropTypes.object\n }).isRequired,\n classes: PropTypes.object.isRequired,\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n maxImageWidth: PropTypes.number,\n maxImageHeight: PropTypes.number\n };\n\n getWidth = percent => {\n const multiplier = percent / 100;\n return this.img.naturalWidth * multiplier;\n };\n\n getHeight = percent => {\n const multiplier = percent / 100;\n return this.img.naturalHeight * multiplier;\n };\n\n getPercentFromWidth = width => {\n var floored = (width / this.img.naturalWidth) * 4;\n return parseInt(floored.toFixed(0) * 25, 10);\n };\n\n applySizeData = () => {\n const { node, editor } = this.props;\n\n let update = node.data;\n\n const w = update.get('width');\n if (w) {\n update = update.set('resizePercent', this.getPercentFromWidth(w));\n }\n\n log('[applySizeData] update: ', update);\n\n if (!update.equals(node.data)) {\n editor.change(c => c.setNodeByKey(node.key, { data: update }));\n }\n };\n\n initialiseResize = () => {\n window.addEventListener('mousemove', this.startResizing, false);\n window.addEventListener('mouseup', this.stopResizing, false);\n };\n\n componentDidMount() {\n this.applySizeData();\n\n const resizeHandle = this.resize;\n\n if (resizeHandle) {\n resizeHandle.addEventListener('mousedown', this.initialiseResize, false);\n }\n }\n\n componentDidUpdate() {\n this.applySizeData();\n }\n\n getSize(data) {\n return {\n width: size(data.get('width')),\n height: size(data.get('height')),\n objectFit: 'contain'\n };\n }\n\n loadImage = () => {\n let { maxImageWidth, maxImageHeight } = this.props || {};\n maxImageWidth = maxImageWidth || 700;\n maxImageHeight = maxImageHeight || 900;\n\n const box = this.img;\n\n //on first load\n if (!box.style.width || box.style.width === 'auto') {\n const dimensions = {\n width: (box && box.naturalWidth) || 100,\n height: (box && box.naturalHeight) || 100\n };\n\n const { width, height } = this.updateImageDimensions(\n dimensions,\n {\n width: dimensions.width < maxImageWidth ? dimensions.width : maxImageWidth,\n height: dimensions.height < maxImageHeight ? dimensions.height : maxImageHeight\n },\n true\n );\n\n box.style.width = `${width}px`;\n box.style.height = `${height}px`;\n\n this.setState({\n dimensions: { height: height, width: width }\n });\n\n const { node, editor } = this.props;\n\n let update = node.data;\n\n update = update.set('width', width);\n update = update.set('height', height);\n\n if (!update.equals(node.data)) {\n editor.change(c => c.setNodeByKey(node.key, { data: update }));\n }\n }\n };\n\n startResizing = e => {\n const bounds = e.target.getBoundingClientRect();\n const box = this.img;\n const dimensions = {\n width: (box && box.naturalWidth) || 100,\n height: (box && box.naturalHeight) || 100\n };\n\n const { width, height } = this.updateImageDimensions(\n dimensions,\n {\n width: e.clientX - bounds.left,\n height: e.clientY - bounds.top\n },\n true\n );\n\n const hasMinimumWidth = width > 50 && height > 50;\n const hasDimensionsConstraints = width <= 700 && height <= 900;\n\n if (hasMinimumWidth && hasDimensionsConstraints && box) {\n box.style.width = `${width}px`;\n box.style.height = `${height}px`;\n\n this.setState({\n dimensions: { height: height, width: width }\n });\n\n const { node, editor } = this.props;\n\n let update = node.data;\n\n update = update.set('width', width);\n update = update.set('height', height);\n\n if (!update.equals(node.data)) {\n editor.change(c => c.setNodeByKey(node.key, { data: update }));\n }\n }\n };\n\n stopResizing = () => {\n window.removeEventListener('mousemove', this.startResizing, false);\n window.removeEventListener('mouseup', this.stopResizing, false);\n };\n\n updateImageDimensions = (initialDim, nextDim, keepAspectRatio, resizeType) => {\n // if we want to keep image aspect ratio\n if (keepAspectRatio) {\n const imageAspectRatio = initialDim.width / initialDim.height;\n\n if (resizeType === 'height') {\n // if we want to change image height => we update the width accordingly\n return {\n width: nextDim.height * imageAspectRatio,\n height: nextDim.height\n };\n }\n\n // if we want to change image width => we update the height accordingly\n return {\n width: nextDim.width,\n height: nextDim.width / imageAspectRatio\n };\n }\n\n // if we don't want to keep aspect ratio, we just update both values\n return {\n width: nextDim.width,\n height: nextDim.height\n };\n };\n\n render() {\n const { node, editor, classes, attributes, onFocus } = this.props;\n const active = editor.value.isFocused && editor.value.selection.hasEdgeIn(node);\n const src = node.data.get('src');\n const loaded = node.data.get('loaded') !== false;\n const deleteStatus = node.data.get('deleteStatus');\n const alignment = node.data.get('alignment');\n const percent = node.data.get('percent');\n const alt = node.data.get('alt');\n let margin;\n let justifyContent;\n\n switch (alignment) {\n case 'left':\n justifyContent = 'flex-start';\n margin = '0';\n break;\n case 'center':\n justifyContent = 'center';\n margin = '0 auto';\n break;\n case 'right':\n justifyContent = 'flex-end';\n margin = 'auto 0 0 auto ';\n break;\n default:\n justifyContent = 'flex-start';\n margin = '0';\n break;\n }\n log('[render] node.data:', node.data);\n\n const size = this.getSize(node.data);\n\n log('[render] style:', size);\n\n const className = classNames(\n classes.root,\n !loaded && classes.loading,\n deleteStatus === 'pending' && classes.pendingDelete\n );\n\n const progressClasses = classNames(classes.progress, loaded && classes.hideProgress);\n\n return [\n <span key={'sp1'}>&nbsp;</span>,\n <div key={'comp'} onFocus={onFocus} className={className} style={{ justifyContent }}>\n <LinearProgress\n mode=\"determinate\"\n value={percent > 0 ? percent : 0}\n className={progressClasses}\n />\n <div className={classes.imageContainer}>\n <img\n {...attributes}\n className={classNames(classes.image, active && classes.active)}\n ref={ref => {\n this.img = ref;\n }}\n src={src}\n style={size}\n onLoad={this.loadImage}\n alt={alt}\n />\n <div\n ref={ref => {\n this.resize = ref;\n }}\n className={classNames(classes.resize, 'resize')}\n />\n </div>\n </div>,\n <span key={'sp2'}>&nbsp;</span>\n ];\n }\n}\n\nconst styles = theme => ({\n portal: {\n position: 'absolute',\n opacity: 0,\n transition: 'opacity 200ms linear'\n },\n floatingButtonRow: {\n backgroundColor: 'white',\n borderRadius: '1px',\n display: 'flex',\n padding: '10px',\n border: 'solid 1px #eeeeee',\n boxShadow:\n '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)'\n },\n progress: {\n position: 'absolute',\n left: '0',\n width: 'fit-content',\n top: '0%',\n transition: 'opacity 200ms linear'\n },\n hideProgress: {\n opacity: 0\n },\n loading: {\n opacity: 0.3\n },\n pendingDelete: {\n opacity: 0.3\n },\n root: {\n position: 'relative',\n border: 'solid 1px white',\n display: 'flex',\n transition: 'opacity 200ms linear'\n },\n delete: {\n position: 'absolute',\n right: 0\n },\n imageContainer: {\n position: 'relative',\n width: 'fit-content',\n display: 'flex',\n alignItems: 'center',\n\n '&&:hover > .resize': {\n display: 'block'\n }\n },\n active: {\n border: `solid 1px ${theme.palette.primary.main}`\n },\n resize: {\n backgroundColor: theme.palette.primary.main,\n cursor: 'col-resize',\n height: '35px',\n width: '5px',\n borderRadius: 8,\n marginLeft: '5px',\n marginRight: '10px',\n display: 'none'\n },\n drawableHeight: {\n minHeight: 350\n }\n});\n\nexport default withStyles(styles)(Component);\n"],"mappings":"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"}
@@ -27,10 +27,16 @@ var _react = _interopRequireDefault(require("react"));
27
27
 
28
28
  var _debug = _interopRequireDefault(require("debug"));
29
29
 
30
+ var _reactDom = _interopRequireDefault(require("react-dom"));
31
+
30
32
  var _styles = require("@material-ui/core/styles");
31
33
 
34
+ var _classnames = _interopRequireDefault(require("classnames"));
35
+
32
36
  var _toolbarButtons = require("../toolbar/toolbar-buttons");
33
37
 
38
+ var _altDialog = _interopRequireDefault(require("./alt-dialog"));
39
+
34
40
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
35
41
 
36
42
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -71,10 +77,32 @@ var ImageToolbar = /*#__PURE__*/function (_React$Component) {
71
77
  }
72
78
 
73
79
  _this = _super.call.apply(_super, [this].concat(args));
80
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onAltTextDone", function (newAlt) {
81
+ log('[onAltTextDone]: alt:', newAlt);
82
+
83
+ _this.props.onChange({
84
+ alt: newAlt
85
+ });
86
+ });
74
87
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onAlignmentClick", function (alignment) {
75
88
  log('[onAlignmentClick]: alignment:', alignment);
76
89
 
77
- _this.props.onChange(alignment);
90
+ _this.props.onChange({
91
+ alignment: alignment
92
+ });
93
+ });
94
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "renderDialog", function () {
95
+ var alt = _this.props.alt;
96
+ var popoverEl = document.createElement('div');
97
+
98
+ var el = /*#__PURE__*/_react["default"].createElement(_altDialog["default"], {
99
+ alt: alt,
100
+ onDone: _this.onAltTextDone
101
+ });
102
+
103
+ _reactDom["default"].render(el, popoverEl);
104
+
105
+ document.body.appendChild(popoverEl);
78
106
  });
79
107
  return _this;
80
108
  }
@@ -82,9 +110,13 @@ var ImageToolbar = /*#__PURE__*/function (_React$Component) {
82
110
  (0, _createClass2["default"])(ImageToolbar, [{
83
111
  key: "render",
84
112
  value: function render() {
113
+ var _classNames,
114
+ _this2 = this;
115
+
85
116
  var _this$props = this.props,
86
117
  classes = _this$props.classes,
87
- alignment = _this$props.alignment;
118
+ alignment = _this$props.alignment,
119
+ imageLoaded = _this$props.imageLoaded;
88
120
  return /*#__PURE__*/_react["default"].createElement("div", {
89
121
  className: classes.holder
90
122
  }, /*#__PURE__*/_react["default"].createElement(AlignmentButton, {
@@ -99,7 +131,12 @@ var ImageToolbar = /*#__PURE__*/function (_React$Component) {
99
131
  alignment: 'right',
100
132
  active: alignment === 'right',
101
133
  onClick: this.onAlignmentClick
102
- }));
134
+ }), /*#__PURE__*/_react["default"].createElement("span", {
135
+ className: (0, _classnames["default"])((_classNames = {}, (0, _defineProperty2["default"])(_classNames, classes.disabled, !imageLoaded), (0, _defineProperty2["default"])(_classNames, classes.altButton, true), _classNames)),
136
+ onMouseDown: function onMouseDown(event) {
137
+ return imageLoaded && _this2.renderDialog(event);
138
+ }
139
+ }, "Alt text"));
103
140
  }
104
141
  }]);
105
142
  return ImageToolbar;
@@ -108,7 +145,10 @@ var ImageToolbar = /*#__PURE__*/function (_React$Component) {
108
145
  exports.ImageToolbar = ImageToolbar;
109
146
  (0, _defineProperty2["default"])(ImageToolbar, "propTypes", {
110
147
  onChange: _propTypes["default"].func.isRequired,
111
- classes: _propTypes["default"].object.isRequired
148
+ classes: _propTypes["default"].object.isRequired,
149
+ alignment: _propTypes["default"].string,
150
+ alt: _propTypes["default"].string,
151
+ imageLoaded: _propTypes["default"].bool
112
152
  });
113
153
 
114
154
  var styles = function styles(theme) {
@@ -117,6 +157,14 @@ var styles = function styles(theme) {
117
157
  paddingLeft: theme.spacing.unit,
118
158
  display: 'flex',
119
159
  alignItems: 'center'
160
+ },
161
+ disabled: {
162
+ opacity: 0.5
163
+ },
164
+ altButton: {
165
+ borderLeft: '1px solid grey',
166
+ paddingLeft: 8,
167
+ marginLeft: 4
120
168
  }
121
169
  };
122
170
  };