@pie-lib/editable-html 9.5.13 → 10.0.0-beta.1
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/CHANGELOG.md +0 -302
- package/lib/components.js +116 -0
- package/lib/components.js.map +1 -0
- package/lib/editor.js +418 -103
- package/lib/editor.js.map +1 -1
- package/lib/index.js +101 -155
- package/lib/index.js.map +1 -1
- package/lib/new-serialization.js +320 -0
- package/lib/new-serialization.js.map +1 -0
- package/lib/old-serialization.js +330 -0
- package/lib/parse-html.js +1 -1
- package/lib/parse-html.js.map +1 -1
- package/lib/plugins/characters/custom-popper.js +1 -1
- package/lib/plugins/characters/custom-popper.js.map +1 -1
- package/lib/plugins/characters/index.js +21 -19
- package/lib/plugins/characters/index.js.map +1 -1
- package/lib/plugins/characters/utils.js +1 -1
- package/lib/plugins/characters/utils.js.map +1 -1
- package/lib/plugins/hotKeys/index.js +67 -0
- package/lib/plugins/hotKeys/index.js.map +1 -0
- package/lib/plugins/image/alt-dialog.js +1 -6
- package/lib/plugins/image/alt-dialog.js.map +1 -1
- package/lib/plugins/image/component.js +70 -53
- package/lib/plugins/image/component.js.map +1 -1
- package/lib/plugins/image/image-toolbar.js +7 -9
- package/lib/plugins/image/image-toolbar.js.map +1 -1
- package/lib/plugins/image/index.js +83 -27
- package/lib/plugins/image/index.js.map +1 -1
- package/lib/plugins/image/insert-image-handler.js +72 -33
- package/lib/plugins/image/insert-image-handler.js.map +1 -1
- package/lib/plugins/index.js +23 -41
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/list/index.js +64 -100
- package/lib/plugins/list/index.js.map +1 -1
- package/lib/plugins/math/index.js +86 -60
- package/lib/plugins/math/index.js.map +1 -1
- package/lib/plugins/media/index.js +202 -132
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +17 -16
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/media/media-toolbar.js +3 -3
- package/lib/plugins/media/media-toolbar.js.map +1 -1
- package/lib/plugins/media/media-wrapper.js +21 -58
- package/lib/plugins/media/media-wrapper.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +3 -3
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/index.js +3 -2
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js +3 -2
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
- package/lib/plugins/respArea/icons/index.js +13 -15
- package/lib/plugins/respArea/icons/index.js.map +1 -1
- package/lib/plugins/respArea/index.js +87 -53
- package/lib/plugins/respArea/index.js.map +1 -1
- package/lib/plugins/respArea/inline-dropdown/index.js +4 -3
- package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
- package/lib/plugins/respArea/utils.js +17 -20
- package/lib/plugins/respArea/utils.js.map +1 -1
- package/lib/plugins/table/icons/index.js +1 -1
- package/lib/plugins/table/icons/index.js.map +1 -1
- package/lib/plugins/table/index.js +381 -212
- package/lib/plugins/table/index.js.map +1 -1
- package/lib/plugins/table/table-toolbar.js +5 -6
- package/lib/plugins/table/table-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/default-toolbar.js +55 -11
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/done-button.js +1 -1
- package/lib/plugins/toolbar/done-button.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +186 -232
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/index.js +1 -2
- package/lib/plugins/toolbar/index.js.map +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
- package/lib/plugins/toolbar/toolbar.js +253 -239
- package/lib/plugins/toolbar/toolbar.js.map +1 -1
- package/lib/plugins/utils.js +27 -2
- package/lib/plugins/utils.js.map +1 -1
- package/lib/serialization.js +1 -1
- package/lib/serialization.js.map +1 -1
- package/lib/slate-editor.js +302 -0
- package/lib/test-serializer.js +189 -0
- package/lib/test-serializer.js.map +1 -0
- package/lib/theme.js +1 -1
- package/lib/theme.js.map +1 -1
- package/package.json +18 -14
- package/playground/image/data.js +20 -20
- package/playground/image/index.html +22 -20
- package/playground/image/index.jsx +12 -10
- package/playground/index.html +25 -23
- package/playground/mathquill/index.html +23 -20
- package/playground/mathquill/index.jsx +18 -22
- package/playground/prod-test/index.html +24 -20
- package/playground/prod-test/index.jsx +5 -3
- package/playground/schema-override/data.js +10 -10
- package/playground/schema-override/image-plugin.jsx +3 -4
- package/playground/schema-override/index.html +21 -19
- package/playground/schema-override/index.jsx +13 -14
- package/playground/serialization/data.js +10 -10
- package/playground/serialization/image-plugin.jsx +3 -4
- package/playground/serialization/index.html +22 -20
- package/playground/table-examples.html +5 -8
- package/playground/webpack.config.js +10 -10
- package/src/components.js +135 -0
- package/src/editor.jsx +478 -141
- package/src/index.jsx +71 -95
- package/src/new-serialization.jsx +291 -0
- package/src/parse-html.js +1 -1
- package/src/plugins/characters/custom-popper.js +7 -7
- package/src/plugins/characters/index.jsx +33 -34
- package/src/plugins/characters/utils.js +81 -81
- package/src/plugins/hotKeys/index.js +54 -0
- package/src/plugins/image/alt-dialog.jsx +4 -5
- package/src/plugins/image/component.jsx +106 -89
- package/src/plugins/image/image-toolbar.jsx +27 -19
- package/src/plugins/image/index.jsx +75 -43
- package/src/plugins/image/insert-image-handler.js +62 -27
- package/src/plugins/index.jsx +23 -41
- package/src/plugins/list/index.jsx +70 -95
- package/src/plugins/math/index.jsx +102 -82
- package/src/plugins/media/index.jsx +159 -124
- package/src/plugins/media/media-dialog.js +98 -71
- package/src/plugins/media/media-toolbar.jsx +8 -8
- package/src/plugins/media/media-wrapper.jsx +29 -30
- package/src/plugins/respArea/drag-in-the-blank/choice.jsx +21 -19
- package/src/plugins/respArea/drag-in-the-blank/index.jsx +14 -11
- package/src/plugins/respArea/explicit-constructed-response/index.jsx +7 -6
- package/src/plugins/respArea/icons/index.jsx +11 -14
- package/src/plugins/respArea/index.jsx +92 -52
- package/src/plugins/respArea/inline-dropdown/index.jsx +9 -8
- package/src/plugins/respArea/utils.jsx +26 -35
- package/src/plugins/table/icons/index.jsx +17 -11
- package/src/plugins/table/index.jsx +288 -231
- package/src/plugins/table/table-toolbar.jsx +15 -11
- package/src/plugins/toolbar/default-toolbar.jsx +65 -19
- package/src/plugins/toolbar/done-button.jsx +4 -4
- package/src/plugins/toolbar/editor-and-toolbar.jsx +150 -145
- package/src/plugins/toolbar/index.jsx +2 -3
- package/src/plugins/toolbar/toolbar-buttons.jsx +11 -11
- package/src/plugins/toolbar/toolbar.jsx +244 -221
- package/src/plugins/utils.js +21 -4
- package/src/serialization.jsx +32 -32
- package/src/test-serializer.js +139 -0
- package/src/test-serializer.js.rej +20 -0
package/lib/editor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/editor.jsx"],"names":["log","defaultToolbarOpts","position","alignment","alwaysVisible","showDone","doneOn","defaultResponseAreaProps","options","respAreaToolbar","onHandleAreaChange","defaultLanguageCharactersProps","createToolbarOpts","toolbarOpts","error","Editor","props","normalizedResponseAreaProps","responseAreaProps","plugins","activePlugins","math","onClick","onMathClick","onFocus","onPluginFocus","onBlur","onPluginBlur","image","disableImageAlignmentButtons","onDelete","imageSupport","src","done","e","state","value","insertImageRequested","getHandler","handler","add","maxImageWidth","maxImageHeight","toolbar","disableScrollbar","disableUnderline","autoWidth","autoWidthToolbar","onDone","nonEmpty","setState","toolbarInFocus","focusedNode","editor","blur","startText","text","length","resetValue","then","onEditingDone","table","responseArea","type","maxResponseAreas","languageCharacters","languageCharactersProps","media","focus","createChange","change","onChange","uploadSoundSupport","relatedTarget","target","node","stashedValue","stashValue","c","collapseToStartOf","selectedNode","resolve","event","Promise","preBlurValue","handleBlur","bind","editorDOM","document","querySelector","key","setTimeout","stateValue","wrapperRef","editorElement","activeElement","closest","className","toolbarElement","toolbarRef","isInCurrentComponent","contains","removeEventListener","handleDomBlur","isFocused","__TEMPORARY_CHANGE_DATA","data","domEl","setNodeByKey","addEventListener","force","stopReset","reduce","s","p","toObject","newValue","Value","fromJSON","toJSON","charactersLimit","v","endsWith","undefined","parseInt","isNaN","object","last","nodes","parent","getParent","Block","pos","dropContext","transfer","file","files","fragment","inline","Inline","create","isVoid","loading","range","select","ch","insertInline","InsertImageHandler","insertFragment","selection","startBlock","defaultBlock","defaultMarks","getInsertMarksAtRange","frag","Plain","deserialize","placeholder","size","display","width","maxWidth","whiteSpace","opacity","pointerEvents","userSelect","onResize","handlePlugins","onRef","window","autoFocus","nextProps","newToolbarOpts","zeroWidthEls","querySelectorAll","Array","from","forEach","el","style","minWidth","equals","minHeight","height","maxHeight","valueToSize","disabled","spellCheck","highlightShape","classes","pluginProps","onKeyDown","sizeStyle","buildSizeStyle","names","withBg","toolbarOnTop","ref","r","slateEditor","editorRef","getFocusedValue","onDropPaste","normalize","noPadding","noBorder","renderPlaceholder","changeData","React","Component","PropTypes","bool","func","isRequired","SlateTypes","shape","number","oneOfType","string","any","oneOf","arrayOf","language","characterIcon","characters","values","allValid","every","ALL_PLUGINS","includes","Error","join","styles","backgroundColor","fontFamily","tableLayout","borderCollapse","color","background","borderTop","padding","textAlign","border","marginTop"],"mappings":"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","sourcesContent":["import { Editor as SlateEditor, findNode, getEventRange, getEventTransfer } from 'slate-react';\nimport SlateTypes from 'slate-prop-types';\n\nimport isEqual from 'lodash/isEqual';\nimport * as serialization from './serialization';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { Value, Block, Inline } from 'slate';\nimport { buildPlugins, ALL_PLUGINS, DEFAULT_PLUGINS } from './plugins';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\nimport Plain from 'slate-plain-serializer';\n\nimport { getBase64 } from './serialization';\nimport InsertImageHandler from './plugins/image/insert-image-handler';\n\nexport { ALL_PLUGINS, DEFAULT_PLUGINS, serialization };\n\nconst log = debug('editable-html:editor');\n\nconst defaultToolbarOpts = {\n position: 'bottom',\n alignment: 'left',\n alwaysVisible: false,\n showDone: true,\n doneOn: 'blur',\n};\n\nconst defaultResponseAreaProps = {\n options: {},\n respAreaToolbar: () => {},\n onHandleAreaChange: () => {},\n};\n\nconst defaultLanguageCharactersProps = [];\n\nconst createToolbarOpts = (toolbarOpts, error) => {\n return {\n ...defaultToolbarOpts,\n ...toolbarOpts,\n error,\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 disableImageAlignmentButtons: PropTypes.bool,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func,\n }),\n charactersLimit: PropTypes.number,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n classes: PropTypes.object.isRequired,\n highlightShape: PropTypes.bool,\n disabled: PropTypes.bool,\n spellCheck: PropTypes.bool,\n nonEmpty: PropTypes.bool,\n disableScrollbar: PropTypes.bool,\n disableUnderline: PropTypes.bool,\n autoWidthToolbar: PropTypes.bool,\n pluginProps: PropTypes.any,\n placeholder: PropTypes.string,\n responseAreaProps: PropTypes.shape({\n type: PropTypes.oneOf(['explicit-constructed-response', 'inline-dropdown', 'drag-in-the-blank']),\n options: PropTypes.object,\n respAreaToolbar: PropTypes.func,\n onHandleAreaChange: PropTypes.func,\n }),\n languageCharactersProps: PropTypes.arrayOf(\n PropTypes.shape({\n language: PropTypes.string,\n characterIcon: PropTypes.string,\n characters: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)),\n }),\n ),\n toolbarOpts: PropTypes.shape({\n position: PropTypes.oneOf(['bottom', 'top']),\n alignment: PropTypes.oneOf(['left', 'right']),\n alwaysVisible: PropTypes.bool,\n showDone: PropTypes.bool,\n doneOn: PropTypes.string,\n }),\n activePlugins: PropTypes.arrayOf((values) => {\n const allValid = values.every((v) => ALL_PLUGINS.includes(v));\n\n return !allValid && new Error(`Invalid values: ${values}, values must be one of [${ALL_PLUGINS.join(',')}]`);\n }),\n className: PropTypes.string,\n maxImageWidth: PropTypes.number,\n maxImageHeight: PropTypes.number,\n };\n\n static defaultProps = {\n disableUnderline: true,\n onFocus: () => {},\n onBlur: () => {},\n onKeyDown: () => {},\n toolbarOpts: defaultToolbarOpts,\n responseAreaProps: defaultResponseAreaProps,\n languageCharactersProps: defaultLanguageCharactersProps,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n value: props.value,\n toolbarOpts: createToolbarOpts(props.toolbarOpts, props.error),\n };\n\n this.onResize = () => {\n props.onChange(this.state.value, true);\n };\n\n this.handlePlugins(this.props);\n }\n\n handlePlugins = (props) => {\n const normalizedResponseAreaProps = {\n ...defaultResponseAreaProps,\n ...props.responseAreaProps,\n };\n\n this.plugins = buildPlugins(props.activePlugins, {\n math: {\n onClick: this.onMathClick,\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur,\n },\n image: {\n disableImageAlignmentButtons: props.disableImageAlignmentButtons,\n onDelete:\n props.imageSupport &&\n props.imageSupport.delete &&\n ((src, done) => {\n props.imageSupport.delete(src, (e) => {\n done(e, this.state.value);\n });\n }),\n insertImageRequested:\n props.imageSupport &&\n ((getHandler) => {\n /**\n * The handler is the object through which the outer context\n * communicates file upload events like: fileChosen, cancel, progress\n */\n const handler = getHandler(() => this.state.value);\n props.imageSupport.add(handler);\n }),\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur,\n maxImageWidth: this.props.maxImageWidth,\n maxImageHeight: this.props.maxImageHeight,\n },\n toolbar: {\n /**\n * To minimize converting html -> state -> html\n * We only emit markup once 'done' is clicked.\n */\n disableScrollbar: !!props.disableScrollbar,\n disableUnderline: props.disableUnderline,\n autoWidth: props.autoWidthToolbar,\n onDone: () => {\n const { nonEmpty } = props;\n\n log('[onDone]');\n this.setState({ toolbarInFocus: false, focusedNode: null });\n this.editor.blur();\n\n if (nonEmpty && this.state.value.startText?.text?.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n });\n } else {\n this.onEditingDone();\n }\n },\n },\n table: {\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n },\n },\n responseArea: {\n type: normalizedResponseAreaProps.type,\n options: normalizedResponseAreaProps.options,\n maxResponseAreas: normalizedResponseAreaProps.maxResponseAreas,\n respAreaToolbar: normalizedResponseAreaProps.respAreaToolbar,\n onHandleAreaChange: normalizedResponseAreaProps.onHandleAreaChange,\n error: normalizedResponseAreaProps.error,\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n },\n },\n languageCharacters: props.languageCharactersProps,\n media: {\n focus: this.focus,\n createChange: () => this.state.value.change(),\n onChange: this.onChange,\n uploadSoundSupport: props.uploadSoundSupport,\n },\n });\n };\n\n componentDidMount() {\n // onRef is needed to get the ref of the component because we export it using withStyles\n this.props.onRef(this);\n\n window.addEventListener('resize', this.onResize);\n\n if (this.editor && this.props.autoFocus) {\n Promise.resolve().then(() => {\n if (this.editor) {\n const editorDOM = document.querySelector(`[data-key=\"${this.editor.value.document.key}\"]`);\n\n this.editor.focus();\n\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const { toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(nextProps.toolbarOpts, nextProps.error);\n\n if (!isEqual(newToolbarOpts, toolbarOpts)) {\n this.setState({\n toolbarOpts: newToolbarOpts,\n });\n }\n\n if (!isEqual(nextProps.languageCharactersProps, this.props.languageCharactersProps)) {\n this.handlePlugins(nextProps);\n }\n }\n\n componentDidUpdate() {\n // The cursor is on a zero width element and when that is placed near void elements, it is not visible\n // so we increase the width to at least 2px in order for the user to see it\n const zeroWidthEls = document.querySelectorAll('[data-slate-zero-width=\"z\"]');\n\n Array.from(zeroWidthEls).forEach((el) => {\n el.style.minWidth = '2px';\n el.style.display = 'inline-block';\n });\n }\n\n onPluginBlur = (e) => {\n log('[onPluginBlur]', e && e.relatedTarget);\n const target = e && e.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n log('[onPluginBlur] node: ', node);\n this.setState({ focusedNode: node }, () => {\n this.resetValue();\n });\n };\n\n onPluginFocus = (e) => {\n log('[onPluginFocus]', e && e.target);\n const target = e && e.target;\n if (target) {\n const node = findNode(target, this.state.value);\n log('[onPluginFocus] node: ', node);\n\n const stashedValue = this.state.stashedValue || this.state.value;\n this.setState({ focusedNode: node, stashedValue });\n } else {\n this.setState({ focusedNode: null });\n }\n this.stashValue();\n };\n\n onMathClick = (node) => {\n this.editor.change((c) => c.collapseToStartOf(node));\n this.setState({ selectedNode: node });\n };\n\n onEditingDone = () => {\n log('[onEditingDone]');\n this.setState({ stashedValue: null, focusedNode: null });\n log('[onEditingDone] value: ', this.state.value);\n this.props.onChange(this.state.value, true);\n };\n\n /**\n * Remove onResize event listener\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize);\n }\n\n // Allowing time for onChange to take effect if it is called\n handleBlur = (resolve) => {\n const { nonEmpty } = this.props;\n const {\n toolbarOpts: { doneOn },\n } = this.state;\n\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n if (this.editor) {\n this.editor.blur();\n }\n\n if (doneOn === 'blur') {\n if (nonEmpty && this.state.value.startText?.text?.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n resolve();\n });\n } else {\n this.onEditingDone();\n resolve();\n }\n }\n };\n\n onBlur = (event) => {\n log('[onBlur]');\n const target = event.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n\n log('[onBlur] node: ', node);\n\n return new Promise((resolve) => {\n this.setState(\n { preBlurValue: this.state.value, focusedNode: !node ? null : node },\n this.handleBlur.bind(this, resolve),\n );\n this.props.onBlur(event);\n });\n };\n\n handleDomBlur = (e) => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n setTimeout(() => {\n const { value: stateValue } = this.state;\n\n if (!this.wrapperRef) {\n return;\n }\n\n const editorElement = !editorDOM || document.activeElement.closest(`[class*=\"${editorDOM.className}\"]`);\n const toolbarElement =\n !this.toolbarRef || document.activeElement.closest(`[class*=\"${this.toolbarRef.className}\"]`);\n const isInCurrentComponent = this.wrapperRef.contains(editorElement) || this.wrapperRef.contains(toolbarElement);\n\n if (!isInCurrentComponent) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n\n if (stateValue.isFocused) {\n this.onBlur(e);\n }\n }\n }, 50);\n };\n\n /*\n * Needs to be wrapped otherwise it causes issues because of race conditions\n * Known issue for slatejs. See: https://github.com/ianstormtaylor/slate/issues/2097\n * Using timeout I wasn't able to test this\n *\n * Note: The use of promises has been causing issues with MathQuill\n * */\n onFocus = () =>\n new Promise((resolve) => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n log('[onFocus]', document.activeElement);\n\n /**\n * This is a temporary hack - @see changeData below for some more information.\n */\n if (this.__TEMPORARY_CHANGE_DATA) {\n const { key, data } = this.__TEMPORARY_CHANGE_DATA;\n const domEl = document.querySelector(`[data-key=\"${key}\"]`);\n\n if (domEl) {\n let change = this.state.value.change().setNodeByKey(key, { data });\n\n this.setState({ value: change.value }, () => {\n this.__TEMPORARY_CHANGE_DATA = null;\n });\n }\n }\n\n /**\n * This is needed just in case the browser decides to make the editor\n * lose focus without triggering the onBlur event (can happen in a few cases).\n * This will also trigger onBlur if the user clicks outside of the page when the editor\n * is focused.\n */\n if (editorDOM === document.activeElement) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n editorDOM.addEventListener('blur', this.handleDomBlur);\n }\n\n this.stashValue();\n this.props.onFocus();\n\n resolve();\n });\n\n stashValue = () => {\n log('[stashValue]');\n if (!this.state.stashedValue) {\n this.setState({ stashedValue: this.state.value });\n }\n };\n\n /**\n * Reset the value if the user didn't click done.\n */\n resetValue = (force) => {\n const { value, focusedNode } = this.state;\n\n const stopReset = this.plugins.reduce((s, p) => {\n return s || (p.stopReset && p.stopReset(this.state.value));\n }, false);\n\n log('[resetValue]', value.isFocused, focusedNode, 'stopReset: ', stopReset);\n if ((this.state.stashedValue && !value.isFocused && !focusedNode && !stopReset) || force) {\n log('[resetValue] resetting...');\n log('stashed', this.state.stashedValue.document.toObject());\n log('current', this.state.value.document.toObject());\n\n const newValue = Value.fromJSON(this.state.stashedValue.toJSON());\n\n log('newValue: ', newValue.document);\n return new Promise((resolve) => {\n setTimeout(() => {\n this.setState({ value: newValue, stashedValue: null }, () => {\n log('value now: ', this.state.value.document.toJSON());\n resolve();\n });\n }, 50);\n });\n } else {\n return Promise.resolve({});\n }\n };\n\n onChange = (change, done) => {\n log('[onChange]');\n\n const { value } = change;\n const { charactersLimit } = this.props;\n\n if (value && value.document && value.document.text && value.document.text.length > charactersLimit) {\n return;\n }\n\n this.setState({ value }, () => {\n log('[onChange], call done()');\n\n if (done) {\n done();\n }\n });\n };\n\n getFocusedValue = () => {\n if (this.state.value.isFocused) {\n return this.state.value;\n }\n\n return this.state.preBlurValue;\n };\n\n UNSAFE_componentWillReceiveProps(props) {\n if (!props.value.document.equals(this.props.value.document)) {\n this.setState({\n focus: false,\n value: props.value,\n });\n }\n }\n\n valueToSize = (v) => {\n if (!v) {\n return;\n }\n\n if (typeof v === 'string') {\n if (v.endsWith('%')) {\n return undefined;\n } else if (v.endsWith('px') || v.endsWith('vh') || v.endsWith('vw')) {\n return v;\n } else {\n const value = parseInt(v, 10);\n return isNaN(value) ? value : `${value}px`;\n }\n }\n if (typeof v === 'number') {\n return `${v}px`;\n }\n\n return;\n };\n\n buildSizeStyle() {\n const { width, minHeight, height, maxHeight } = this.props;\n\n return {\n width: this.valueToSize(width),\n height: this.valueToSize(height),\n minHeight: this.valueToSize(minHeight),\n maxHeight: this.valueToSize(maxHeight),\n };\n }\n\n validateNode = (node) => {\n if (node.object !== 'block') return;\n\n const last = node.nodes.last();\n if (!last) return;\n\n if (last.type !== 'image') return;\n\n log('[validateNode] last is image..');\n\n const parent = last.getParent(last.key);\n const p = Block.getParent(last.key);\n log('[validateNode] parent:', parent, p);\n\n return undefined;\n };\n\n changeData = (key, data) => {\n log('[changeData]. .. ', key, data);\n\n /**\n * HACK ALERT: We should be calling setState here and storing the change data:\n *\n * <code>this.setState({changeData: { key, data}})</code>\n * However this is causing issues with the Mathquill instance. The 'input' event stops firing on the element and no\n * more changes get through. The issues seem to be related to the promises in onBlur/onFocus. But removing these\n * brings it's own problems. A major clean up is planned for this component so I've decided to temporarily settle\n * on this hack rather than spend more time on this.\n */\n\n // Uncomment this line to see the bug described above.\n // this.setState({changeData: {key, data}})\n\n this.__TEMPORARY_CHANGE_DATA = { key, data };\n };\n\n focus = (pos, node) => {\n const position = pos || 'end';\n\n this.props.focus(position, node);\n };\n\n onDropPaste = async (event, change, dropContext) => {\n const editor = change.editor;\n const transfer = getEventTransfer(event);\n const file = transfer.files && transfer.files[0];\n\n const type = transfer.type;\n const fragment = transfer.fragment;\n const text = transfer.text;\n\n if (file && (file.type === 'image/jpeg' || file.type === 'image/jpg' || file.type === 'image/png')) {\n if (!this.props.imageSupport) {\n return;\n }\n try {\n log('[onDropPaste]');\n const src = await getBase64(file);\n const inline = Inline.create({\n type: 'image',\n isVoid: true,\n data: {\n loading: false,\n src,\n },\n });\n\n if (dropContext) {\n this.focus();\n } else {\n const range = getEventRange(event, editor);\n if (range) {\n change.select(range);\n }\n }\n\n const ch = change.insertInline(inline);\n this.onChange(ch);\n const handler = new InsertImageHandler(inline, () => this.state.value, this.onChange, true);\n this.props.imageSupport.add(handler);\n } catch (err) {\n log('[onDropPaste] error: ', err);\n }\n } else if (type === 'fragment') {\n change.insertFragment(fragment);\n } else if (type === 'text' || type === 'html') {\n if (!text) {\n return;\n }\n const {\n value: { document, selection, startBlock },\n } = change;\n\n if (startBlock.isVoid) {\n return;\n }\n\n const defaultBlock = startBlock;\n const defaultMarks = document.getInsertMarksAtRange(selection);\n const frag = Plain.deserialize(text, {\n defaultBlock,\n defaultMarks,\n }).document;\n change.insertFragment(frag);\n }\n };\n\n renderPlaceholder = (props) => {\n const { editor } = props;\n const { document } = editor.value;\n\n if (!editor.props.placeholder || document.text !== '' || document.nodes.size !== 1) {\n return false;\n }\n\n return (\n <span\n contentEditable={false}\n style={{\n display: 'inline-block',\n width: 'fit-content', // for centering the placeholder if text-align is set to center\n maxWidth: '100%',\n whiteSpace: 'nowrap',\n opacity: '0.33',\n pointerEvents: 'none',\n userSelect: 'none',\n }}\n >\n {editor.props.placeholder}\n </span>\n );\n };\n\n render() {\n const {\n disabled,\n spellCheck,\n highlightShape,\n classes,\n className,\n placeholder,\n pluginProps,\n onKeyDown,\n } = this.props;\n\n const { value, focusedNode, toolbarOpts } = this.state;\n\n log('[render] value: ', value);\n const sizeStyle = this.buildSizeStyle();\n const names = classNames(\n {\n [classes.withBg]: highlightShape,\n [classes.toolbarOnTop]: toolbarOpts.alwaysVisible && toolbarOpts.position === 'top',\n },\n className,\n );\n\n return (\n <div ref={(ref) => (this.wrapperRef = ref)} style={{ width: sizeStyle.width }} className={names}>\n <SlateEditor\n plugins={this.plugins}\n innerRef={(r) => {\n if (r) {\n this.slateEditor = r;\n }\n }}\n ref={(r) => (this.editor = r && this.props.editorRef(r))}\n toolbarRef={(r) => {\n if (r) {\n this.toolbarRef = r;\n }\n }}\n value={value}\n focus={this.focus}\n onKeyDown={onKeyDown}\n onChange={this.onChange}\n getFocusedValue={this.getFocusedValue}\n onBlur={this.onBlur}\n onDrop={(event, editor) => this.onDropPaste(event, editor, true)}\n onPaste={(event, editor) => this.onDropPaste(event, editor)}\n onFocus={this.onFocus}\n onEditingDone={this.onEditingDone}\n focusedNode={focusedNode}\n normalize={this.normalize}\n readOnly={disabled}\n spellCheck={spellCheck}\n autoCorrect={spellCheck}\n className={classNames(\n {\n [classes.noPadding]: toolbarOpts && toolbarOpts.noBorder,\n },\n classes.slateEditor,\n )}\n style={{\n minHeight: sizeStyle.minHeight,\n height: sizeStyle.height,\n maxHeight: sizeStyle.maxHeight,\n }}\n pluginProps={pluginProps}\n toolbarOpts={toolbarOpts}\n placeholder={placeholder}\n renderPlaceholder={this.renderPlaceholder}\n onDataChange={this.changeData}\n />\n </div>\n );\n }\n}\n\n// TODO color - hardcoded gray background and keypad colors will need to change too\nconst styles = {\n withBg: {\n backgroundColor: 'rgba(0,0,0,0.06)',\n },\n slateEditor: {\n fontFamily: 'Roboto, sans-serif',\n\n '& table': {\n tableLayout: 'fixed',\n width: '100%',\n borderCollapse: 'collapse',\n color: color.text(),\n backgroundColor: color.background(),\n },\n '& table:not([border=\"1\"]) tr': {\n borderTop: '1px solid #dfe2e5',\n // TODO perhaps secondary color for background, for now disable\n // '&:nth-child(2n)': {\n // backgroundColor: '#f6f8fa'\n // }\n },\n '& td, th': {\n padding: '.6em 1em',\n textAlign: 'center',\n },\n '& table:not([border=\"1\"]) td, th': {\n border: '1px solid #dfe2e5',\n },\n },\n toolbarOnTop: {\n marginTop: '45px',\n },\n noPadding: {\n padding: '0 !important',\n },\n};\n\nexport default withStyles(styles)(Editor);\n"],"file":"editor.js"}
|
|
1
|
+
{"version":3,"file":"editor.js","names":["HOTKEYS","LIST_TYPES","TEXT_ALIGN_TYPES","initialValue","type","children","data","latex","wrapper","text","SlateEditor","editorProps","value","plugins","renderElement","useCallback","props","renderLeaf","editor","useMemo","withPlugins","createEditor","useState","isFocused","setIsFocused","editorRef","useRef","slateValue","Editor","normalize","force","onKeyDown","event","key","shiftKey","insertText","preventDefault","stopPropagation","hotkey","isHotkey","mark","toggleMark","onFocus","onBlur","setTimeout","current","contains","document","activeElement","onDone","toggleBlock","format","isActive","isBlockActive","includes","isList","Transforms","unwrapNodes","match","n","isEditor","SlateElement","isElement","split","newProperties","align","undefined","setNodes","block","wrapNodes","isMarkActive","removeMark","addMark","blockType","selection","Array","from","nodes","at","unhangRange","marks","Element","useSlateStatic","focused","useFocused","attributes","element","style","textAlign","nodeProps","node","pluginToRender","find","plugin","supports","renderNode","margin","Leaf","leaf","bold","code","italic","underline","strikethrough","BlockButton","icon","useSlate","MarkButton","log","debug","defaultToolbarOpts","position","alignment","alwaysVisible","showDone","doneOn","defaultResponseAreaProps","options","respAreaToolbar","onHandleAreaChange","defaultLanguageCharactersProps","createToolbarOpts","toolbarOpts","EditorComponent","normalizedResponseAreaProps","responseAreaProps","buildPlugins","activePlugins","math","onClick","onMathClick","onPluginFocus","onPluginBlur","image","onDelete","imageSupport","src","done","e","state","insertImageRequested","getHandler","handler","add","maxImageWidth","maxImageHeight","toolbar","disableScrollbar","disableUnderline","autoWidth","autoWidthToolbar","table","responseArea","maxResponseAreas","error","languageCharacters","languageCharactersProps","media","focus","onChange","uploadSoundSupport","relatedTarget","target","findNode","setState","focusedNode","resetValue","stashedValue","stashValue","selectedNode","nonEmpty","toolbarInFocus","onEditingDone","resolve","startText","length","then","Promise","preBlurValue","handleBlur","bind","editorDOM","querySelector","stateValue","wrapperRef","editorElement","closest","className","toolbarElement","toolbarRef","isInCurrentComponent","removeEventListener","handleDomBlur","__TEMPORARY_CHANGE_DATA","domEl","change","setNodeByKey","addEventListener","stopReset","reduce","s","p","toObject","newValue","Value","fromJSON","toJSON","charactersLimit","allText","string","html","valueToHtml","htmlToValue","v","endsWith","parseInt","isNaN","object","last","parent","getParent","Block","pos","dropContext","transfer","getEventTransfer","file","files","fragment","getBase64","inline","Inline","create","isVoid","loading","range","getEventRange","select","ch","insertInline","InsertImageHandler","insertFragment","startBlock","defaultBlock","defaultMarks","getInsertMarksAtRange","frag","Plain","deserialize","placeholder","size","display","width","maxWidth","whiteSpace","opacity","pointerEvents","userSelect","onResize","handlePlugins","onRef","window","autoFocus","nextProps","newToolbarOpts","isEqual","zeroWidthEls","querySelectorAll","forEach","el","minWidth","minHeight","height","maxHeight","valueToSize","disabled","spellCheck","highlightShape","classes","pluginProps","sizeStyle","buildSizeStyle","names","classNames","withBg","toolbarOnTop","slateEditor","ref","r","getFocusedValue","onDropPaste","noPadding","noBorder","renderPlaceholder","React","Component","PropTypes","bool","func","isRequired","arrayOf","shape","array","number","oneOfType","any","oneOf","language","characterIcon","characters","values","allValid","every","ALL_PLUGINS","Error","join","styles","backgroundColor","fontFamily","tableLayout","borderCollapse","color","background","borderTop","padding","border","marginTop","withStyles"],"sources":["../src/editor.jsx"],"sourcesContent":["import React, { useCallback, useMemo, useRef, useState } from 'react';\nimport {\n Editor as OldSlateEditor,\n findNode,\n getEventRange,\n getEventTransfer,\n useSlateStatic\n} from 'slate-react';\nimport RootRef from '@material-ui/core/RootRef';\n\nimport isEqual from 'lodash/isEqual';\nimport * as serialization from './new-serialization';\nimport PropTypes from 'prop-types';\nimport { Value, Block, Inline } from 'slate';\nimport { ALL_PLUGINS, DEFAULT_PLUGINS, buildPlugins, withPlugins } from './plugins';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\nimport Plain from 'slate-plain-serializer';\n\nimport { getBase64, htmlToValue, valueToHtml } from './new-serialization';\nimport InsertImageHandler from './plugins/image/insert-image-handler';\n\nimport isHotkey from 'is-hotkey';\nimport { Editable, useFocused, withReact, useSlate, Slate } from 'slate-react';\nimport { Editor, Transforms, createEditor, Element as SlateElement } from 'slate';\nimport { withHistory } from 'slate-history';\nimport { MathPreview } from '@pie-lib/math-toolbar';\n\nimport { Button, Icon, Toolbar } from './components';\nimport EditorAndToolbar from './plugins/toolbar/editor-and-toolbar';\n\nconst HOTKEYS = {\n 'mod+b': 'bold',\n 'mod+i': 'italic',\n 'mod+u': 'underline',\n 'mod+`': 'code'\n};\n\nconst LIST_TYPES = ['numbered-list', 'bulleted-list'];\nconst TEXT_ALIGN_TYPES = ['left', 'center', 'right', 'justify'];\n\nconst initialValue = [\n {\n type: 'paragraph',\n children: [\n {\n type: 'math',\n data: {\n latex: '\\\\frac{1}{2}',\n wrapper: 'round_brackets'\n },\n children: [\n {\n text: '\\\\(\\\\frac{1}{2}\\\\)'\n }\n ]\n }\n ]\n }\n];\n\nconst SlateEditor = editorProps => {\n const { value, plugins } = editorProps;\n const renderElement = useCallback(props => <Element {...props} plugins={plugins} />, []);\n const renderLeaf = useCallback(props => <Leaf {...props} />, []);\n const editor = useMemo(() => withPlugins(createEditor(), plugins), []);\n const [isFocused, setIsFocused] = useState(false);\n const editorRef = useRef(null);\n\n const slateValue = useMemo(() => {\n // Slate throws an error if the value on the initial render is invalid\n // so we directly set the value on the editor in order\n // to be able to trigger normalization on the initial value before rendering\n editor.children = value;\n Editor.normalize(editor, { force: true });\n // We return the normalized internal value so that the rendering can take over from here\n return editor.children;\n }, [editor, value]);\n\n const onKeyDown = event => {\n if (event.key === 'Enter' && event.shiftKey === true) {\n editor.insertText('\\n');\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n for (const hotkey in HOTKEYS) {\n if (isHotkey(hotkey, event)) {\n event.preventDefault();\n const mark = HOTKEYS[hotkey];\n toggleMark(editor, mark);\n }\n }\n };\n const onFocus = () => setIsFocused(true);\n const onBlur = () => {\n setTimeout(() => {\n if (!editorRef.current || !editorRef.current.contains(document.activeElement)) {\n setIsFocused(false);\n }\n }, 50);\n };\n\n return (\n <Slate editor={editor} value={slateValue}>\n <RootRef rootRef={editorRef}>\n <EditorAndToolbar\n {...editorProps}\n editor={editor}\n isFocused={isFocused}\n onDone={() => {\n setIsFocused(false);\n editorProps.onDone(editor);\n }}\n >\n <Editable\n renderElement={renderElement}\n renderLeaf={renderLeaf}\n placeholder=\"Enter some rich text…\"\n spellCheck\n onKeyDown={onKeyDown}\n onFocus={onFocus}\n onBlur={onBlur}\n />\n </EditorAndToolbar>\n </RootRef>\n </Slate>\n );\n};\n\nconst toggleBlock = (editor, format) => {\n const isActive = isBlockActive(\n editor,\n format,\n TEXT_ALIGN_TYPES.includes(format) ? 'align' : 'type'\n );\n const isList = LIST_TYPES.includes(format);\n\n Transforms.unwrapNodes(editor, {\n match: n =>\n !Editor.isEditor(n) &&\n SlateElement.isElement(n) &&\n LIST_TYPES.includes(n.type) &&\n !TEXT_ALIGN_TYPES.includes(format),\n split: true\n });\n let newProperties;\n if (TEXT_ALIGN_TYPES.includes(format)) {\n newProperties = {\n align: isActive ? undefined : format\n };\n } else {\n newProperties = {\n type: isActive ? 'paragraph' : isList ? 'list_item' : format\n };\n }\n Transforms.setNodes(editor, newProperties);\n\n if (!isActive && isList) {\n const block = { type: format, children: [] };\n Transforms.wrapNodes(editor, block);\n }\n};\n\nconst toggleMark = (editor, format) => {\n const isActive = isMarkActive(editor, format);\n\n if (isActive) {\n Editor.removeMark(editor, format);\n } else {\n Editor.addMark(editor, format, true);\n }\n};\n\nconst isBlockActive = (editor, format, blockType = 'type') => {\n const { selection } = editor;\n if (!selection) return false;\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, selection),\n match: n => !Editor.isEditor(n) && SlateElement.isElement(n) && n[blockType] === format\n })\n );\n\n return !!match;\n};\n\nconst isMarkActive = (editor, format) => {\n const marks = Editor.marks(editor);\n return marks ? marks[format] === true : false;\n};\n\nconst Element = props => {\n const editor = useSlateStatic();\n const focused = useFocused();\n const { attributes, children, element, plugins } = props;\n const style = { textAlign: element.align };\n\n const nodeProps = { ...attributes, ...props, node: { ...element }, children };\n const pluginToRender = plugins.find(\n plugin => typeof plugin.supports === 'function' && plugin.supports(element)\n );\n\n if (pluginToRender) {\n return pluginToRender.renderNode({ ...nodeProps, editor, focused });\n }\n\n switch (element.type) {\n case 'block-quote':\n return (\n <blockquote style={style} {...attributes}>\n {children}\n </blockquote>\n );\n case 'bulleted-list':\n return (\n <ul style={style} {...attributes}>\n {children}\n </ul>\n );\n case 'heading-one':\n return (\n <h1 style={style} {...attributes}>\n {children}\n </h1>\n );\n case 'heading-two':\n return (\n <h2 style={style} {...attributes}>\n {children}\n </h2>\n );\n case 'list-item':\n return (\n <li style={style} {...attributes}>\n {children}\n </li>\n );\n case 'numbered-list':\n return (\n <ol style={style} {...attributes}>\n {children}\n </ol>\n );\n default:\n return (\n <div\n style={{\n ...style,\n margin: 0\n }}\n {...attributes}\n >\n {children}\n </div>\n );\n }\n};\n\nconst Leaf = ({ attributes, children, leaf }) => {\n if (leaf.bold) {\n children = <strong>{children}</strong>;\n }\n\n if (leaf.code) {\n children = <code>{children}</code>;\n }\n\n if (leaf.italic) {\n children = <em>{children}</em>;\n }\n\n if (leaf.underline) {\n children = <u>{children}</u>;\n }\n\n if (leaf.strikethrough) {\n children = <del>{children}</del>;\n }\n\n return <span {...attributes}>{children}</span>;\n};\n\nconst BlockButton = ({ format, icon }) => {\n const editor = useSlate();\n return (\n <Button\n active={isBlockActive(editor, format, TEXT_ALIGN_TYPES.includes(format) ? 'align' : 'type')}\n onMouseDown={event => {\n event.preventDefault();\n toggleBlock(editor, format);\n }}\n >\n <Icon>{icon}</Icon>\n </Button>\n );\n};\n\nconst MarkButton = ({ format, icon }) => {\n const editor = useSlate();\n return (\n <Button\n active={isMarkActive(editor, format)}\n onMouseDown={event => {\n event.preventDefault();\n toggleMark(editor, format);\n }}\n >\n <Icon>{icon}</Icon>\n </Button>\n );\n};\n\n// old-editable\n\nexport { ALL_PLUGINS, DEFAULT_PLUGINS, serialization };\n\nconst log = debug('editable-html:editor');\n\nconst defaultToolbarOpts = {\n position: 'bottom',\n alignment: 'left',\n alwaysVisible: false,\n showDone: true,\n doneOn: 'blur'\n};\n\nconst defaultResponseAreaProps = {\n options: {},\n respAreaToolbar: () => {},\n onHandleAreaChange: () => {}\n};\n\nconst defaultLanguageCharactersProps = [];\n\nconst createToolbarOpts = toolbarOpts => {\n return {\n ...defaultToolbarOpts,\n ...toolbarOpts\n };\n};\n\nexport class EditorComponent extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n onRef: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyDown: PropTypes.func,\n value: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.string,\n children: PropTypes.array,\n data: PropTypes.object\n })\n ),\n imageSupport: PropTypes.object,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func\n }),\n charactersLimit: PropTypes.number,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n classes: PropTypes.object.isRequired,\n highlightShape: PropTypes.bool,\n disabled: PropTypes.bool,\n spellCheck: PropTypes.bool,\n nonEmpty: PropTypes.bool,\n disableScrollbar: PropTypes.bool,\n disableUnderline: PropTypes.bool,\n autoWidthToolbar: PropTypes.bool,\n pluginProps: PropTypes.any,\n placeholder: PropTypes.string,\n responseAreaProps: PropTypes.shape({\n type: PropTypes.oneOf([\n 'explicit-constructed-response',\n 'inline-dropdown',\n 'drag-in-the-blank'\n ]),\n options: PropTypes.object,\n respAreaToolbar: PropTypes.func,\n onHandleAreaChange: PropTypes.func\n }),\n languageCharactersProps: PropTypes.arrayOf(\n PropTypes.shape({\n language: PropTypes.string,\n characterIcon: PropTypes.string,\n characters: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string))\n })\n ),\n toolbarOpts: PropTypes.shape({\n position: PropTypes.oneOf(['bottom', 'top']),\n alignment: PropTypes.oneOf(['left', 'right']),\n alwaysVisible: PropTypes.bool,\n showDone: PropTypes.bool,\n doneOn: PropTypes.string\n }),\n activePlugins: PropTypes.arrayOf(values => {\n const allValid = values.every(v => ALL_PLUGINS.includes(v));\n\n return (\n !allValid &&\n new Error(`Invalid values: ${values}, values must be one of [${ALL_PLUGINS.join(',')}]`)\n );\n }),\n className: PropTypes.string,\n maxImageWidth: PropTypes.number,\n maxImageHeight: PropTypes.number\n };\n\n static defaultProps = {\n disableUnderline: true,\n onFocus: () => {},\n onBlur: () => {},\n onKeyDown: () => {},\n toolbarOpts: defaultToolbarOpts,\n responseAreaProps: defaultResponseAreaProps,\n languageCharactersProps: defaultLanguageCharactersProps\n };\n\n constructor(props) {\n super(props);\n this.state = {\n value: props.value,\n toolbarOpts: createToolbarOpts(props.toolbarOpts)\n };\n\n this.onResize = () => {\n props.onChange(this.state.value, true);\n };\n\n this.handlePlugins(this.props);\n }\n\n handlePlugins = props => {\n const normalizedResponseAreaProps = {\n ...defaultResponseAreaProps,\n ...props.responseAreaProps\n };\n\n this.plugins = buildPlugins(props.activePlugins, {\n math: {\n onClick: this.onMathClick,\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur\n },\n image: {\n onDelete:\n props.imageSupport &&\n props.imageSupport.delete &&\n ((src, done) => {\n props.imageSupport.delete(src, e => {\n done(e, this.state.value);\n });\n }),\n insertImageRequested:\n props.imageSupport &&\n (getHandler => {\n /**\n * The handler is the object through which the outer context\n * communicates file upload events like: fileChosen, cancel, progress\n */\n const handler = getHandler(() => this.state.value);\n props.imageSupport.add(handler);\n }),\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur,\n maxImageWidth: this.props.maxImageWidth,\n maxImageHeight: this.props.maxImageHeight\n },\n toolbar: {\n /**\n * To minimize converting html -> state -> html\n * We only emit markup once 'done' is clicked.\n */\n disableScrollbar: !!props.disableScrollbar,\n disableUnderline: props.disableUnderline,\n autoWidth: props.autoWidthToolbar\n },\n table: {\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n responseArea: {\n type: normalizedResponseAreaProps.type,\n options: normalizedResponseAreaProps.options,\n maxResponseAreas: normalizedResponseAreaProps.maxResponseAreas,\n respAreaToolbar: normalizedResponseAreaProps.respAreaToolbar,\n onHandleAreaChange: normalizedResponseAreaProps.onHandleAreaChange,\n error: normalizedResponseAreaProps.error,\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n languageCharacters: props.languageCharactersProps,\n media: {\n focus: this.focus,\n onChange: this.onChange,\n uploadSoundSupport: props.uploadSoundSupport\n }\n });\n };\n\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 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.setState({ selectedNode: node });\n };\n\n onEditingDone = editor => {\n log('[onEditingDone]');\n this.setState({ stashedValue: null, focusedNode: null });\n log('[onEditingDone] value: ', this.state.value);\n this.props.onChange(editor, true);\n };\n\n onDone = editor => {\n const { nonEmpty } = this.props;\n\n log('[onDone]');\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n this.onEditingDone(editor);\n };\n\n /**\n * Remove onResize event listener\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize);\n }\n\n // Allowing time for onChange to take effect if it is called\n handleBlur = resolve => {\n const { nonEmpty } = this.props;\n const {\n toolbarOpts: { doneOn }\n } = this.state;\n\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n if (doneOn === 'blur') {\n if (nonEmpty && this.state.value.startText?.text?.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n resolve();\n });\n } else {\n this.onEditingDone();\n resolve();\n }\n }\n };\n\n onBlur = event => {\n log('[onBlur]');\n const target = event.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n\n log('[onBlur] node: ', node);\n\n return new Promise(resolve => {\n this.setState(\n { preBlurValue: this.state.value, focusedNode: !node ? null : node },\n this.handleBlur.bind(this, resolve)\n );\n this.props.onBlur(event);\n });\n };\n\n handleDomBlur = e => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n setTimeout(() => {\n const { value: stateValue } = this.state;\n\n if (!this.wrapperRef) {\n return;\n }\n\n const editorElement =\n !editorDOM || document.activeElement.closest(`[class*=\"${editorDOM.className}\"]`);\n const toolbarElement =\n !this.toolbarRef ||\n document.activeElement.closest(`[class*=\"${this.toolbarRef.className}\"]`);\n const isInCurrentComponent =\n this.wrapperRef.contains(editorElement) || this.wrapperRef.contains(toolbarElement);\n\n if (!isInCurrentComponent) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n\n if (stateValue.isFocused) {\n this.onBlur(e);\n }\n }\n }, 50);\n };\n\n /*\n * Needs to be wrapped otherwise it causes issues because of race conditions\n * Known issue for slatejs. See: https://github.com/ianstormtaylor/slate/issues/2097\n * Using timeout I wasn't able to test this\n *\n * Note: The use of promises has been causing issues with MathQuill\n * */\n onFocus = () =>\n new Promise(resolve => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n log('[onFocus]', document.activeElement);\n\n /**\n * This is a temporary hack - @see changeData below for some more information.\n */\n if (this.__TEMPORARY_CHANGE_DATA) {\n const { key, data } = this.__TEMPORARY_CHANGE_DATA;\n const domEl = document.querySelector(`[data-key=\"${key}\"]`);\n\n if (domEl) {\n let change = this.state.value.change().setNodeByKey(key, { data });\n\n this.setState({ value: change.value }, () => {\n this.__TEMPORARY_CHANGE_DATA = null;\n });\n }\n }\n\n /**\n * This is needed just in case the browser decides to make the editor\n * lose focus without triggering the onBlur event (can happen in a few cases).\n * This will also trigger onBlur if the user clicks outside of the page when the editor\n * is focused.\n */\n if (editorDOM === document.activeElement) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n editorDOM.addEventListener('blur', this.handleDomBlur);\n }\n\n this.stashValue();\n this.props.onFocus();\n\n resolve();\n });\n\n stashValue = () => {\n log('[stashValue]');\n if (!this.state.stashedValue) {\n this.setState({ stashedValue: this.state.value });\n }\n };\n\n /**\n * Reset the value if the user didn't click done.\n */\n resetValue = force => {\n const { value, focusedNode } = this.state;\n\n const stopReset = this.plugins.reduce((s, p) => {\n return s || (p.stopReset && p.stopReset(this.state.value));\n }, false);\n\n log('[resetValue]', value.isFocused, focusedNode, 'stopReset: ', stopReset);\n if ((this.state.stashedValue && !value.isFocused && !focusedNode && !stopReset) || force) {\n log('[resetValue] resetting...');\n log('stashed', this.state.stashedValue.document.toObject());\n log('current', this.state.value.document.toObject());\n\n const newValue = Value.fromJSON(this.state.stashedValue.toJSON());\n\n log('newValue: ', newValue.document);\n return new Promise(resolve => {\n setTimeout(() => {\n this.setState({ value: newValue, stashedValue: null }, () => {\n log('value now: ', this.state.value.document.toJSON());\n resolve();\n });\n }, 50);\n });\n } else {\n return Promise.resolve({});\n }\n };\n\n onChange = (editor, done) => {\n log('[onChange]');\n const { charactersLimit } = this.props;\n const allText = Editor.string(editor, []);\n\n if (allText > charactersLimit) {\n return;\n }\n\n const html = valueToHtml(editor);\n const value = htmlToValue(html);\n\n this.setState({ value }, () => {\n log('[onChange], call done()');\n\n if (done) {\n done();\n }\n });\n };\n\n getFocusedValue = () => {\n if (this.state.value.isFocused) {\n return this.state.value;\n }\n\n return this.state.preBlurValue;\n };\n\n UNSAFE_componentWillReceiveProps(props) {\n if (!isEqual(props.value, this.props.value)) {\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 focus = (pos, node) => {\n const position = pos || 'end';\n\n this.props.focus(position, node);\n };\n\n onDropPaste = async (event, change, dropContext) => {\n const editor = change.editor;\n const transfer = getEventTransfer(event);\n const file = transfer.files && transfer.files[0];\n\n const type = transfer.type;\n const fragment = transfer.fragment;\n const text = transfer.text;\n\n if (\n file &&\n (file.type === 'image/jpeg' || file.type === 'image/jpg' || file.type === 'image/png')\n ) {\n if (!this.props.imageSupport) {\n return;\n }\n try {\n log('[onDropPaste]');\n const src = await getBase64(file);\n const inline = Inline.create({\n type: 'image',\n isVoid: true,\n data: {\n loading: false,\n src\n }\n });\n\n if (dropContext) {\n this.focus();\n } else {\n const range = getEventRange(event, editor);\n if (range) {\n change.select(range);\n }\n }\n\n const ch = change.insertInline(inline);\n this.onChange(ch);\n const handler = new InsertImageHandler(inline, () => this.state.value, this.onChange, true);\n this.props.imageSupport.add(handler);\n } catch (err) {\n log('[onDropPaste] error: ', err);\n }\n } else if (type === 'fragment') {\n change.insertFragment(fragment);\n } else if (type === 'text' || type === 'html') {\n if (!text) {\n return;\n }\n const {\n value: { document, selection, startBlock }\n } = change;\n\n if (startBlock.isVoid) {\n return;\n }\n\n const defaultBlock = startBlock;\n const defaultMarks = document.getInsertMarksAtRange(selection);\n const frag = Plain.deserialize(text, {\n defaultBlock,\n defaultMarks\n }).document;\n change.insertFragment(frag);\n }\n };\n\n renderPlaceholder = props => {\n const { editor } = props;\n const { document } = editor.value;\n\n if (!editor.props.placeholder || document.text !== '' || document.nodes.size !== 1) {\n return false;\n }\n\n return (\n <span\n contentEditable={false}\n style={{\n display: 'inline-block',\n width: 'fit-content', // for centering the placeholder if text-align is set to center\n maxWidth: '100%',\n whiteSpace: 'nowrap',\n opacity: '0.33',\n pointerEvents: 'none',\n userSelect: 'none'\n }}\n >\n {editor.props.placeholder}\n </span>\n );\n };\n\n render() {\n const {\n disabled,\n spellCheck,\n highlightShape,\n classes,\n className,\n placeholder,\n pluginProps,\n onKeyDown\n } = this.props;\n\n const { value, focusedNode, toolbarOpts } = this.state;\n\n log('[render] value: ', value);\n const sizeStyle = this.buildSizeStyle();\n const names = classNames(\n {\n [classes.withBg]: highlightShape,\n [classes.toolbarOnTop]: toolbarOpts.alwaysVisible && toolbarOpts.position === 'top'\n },\n className,\n classes.slateEditor\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 toolbarRef={r => {\n if (r) {\n this.toolbarRef = r;\n }\n }}\n value={value}\n focus={this.focus}\n onKeyDown={onKeyDown}\n onChange={this.onChange}\n getFocusedValue={this.getFocusedValue}\n onBlur={this.onBlur}\n onDrop={(event, editor) => this.onDropPaste(event, editor, true)}\n onPaste={(event, editor) => this.onDropPaste(event, editor)}\n onFocus={this.onFocus}\n onEditingDone={this.onEditingDone}\n onDone={this.onDone}\n focusedNode={focusedNode}\n normalize={this.normalize}\n readOnly={disabled}\n spellCheck={spellCheck}\n className={classNames(\n {\n [classes.noPadding]: toolbarOpts && toolbarOpts.noBorder\n },\n classes.slateEditor\n )}\n style={{\n minHeight: sizeStyle.minHeight,\n height: sizeStyle.height,\n maxHeight: sizeStyle.maxHeight\n }}\n pluginProps={pluginProps}\n toolbarOpts={toolbarOpts}\n placeholder={placeholder}\n renderPlaceholder={this.renderPlaceholder}\n />\n </div>\n );\n\n return (\n <div\n ref={ref => (this.wrapperRef = ref)}\n style={{ width: sizeStyle.width }}\n className={names}\n >\n <OldSlateEditor\n plugins={this.plugins}\n toolbarRef={r => {\n if (r) {\n this.toolbarRef = r;\n }\n }}\n value={value}\n focus={this.focus}\n onKeyDown={onKeyDown}\n onChange={this.onChange}\n getFocusedValue={this.getFocusedValue}\n onBlur={this.onBlur}\n onDrop={(event, editor) => this.onDropPaste(event, editor, true)}\n onPaste={(event, editor) => this.onDropPaste(event, editor)}\n onFocus={this.onFocus}\n onEditingDone={this.onEditingDone}\n focusedNode={focusedNode}\n normalize={this.normalize}\n readOnly={disabled}\n spellCheck={spellCheck}\n className={classNames(\n {\n [classes.noPadding]: toolbarOpts && toolbarOpts.noBorder\n },\n classes.slateEditor\n )}\n style={{\n minHeight: sizeStyle.minHeight,\n height: sizeStyle.height,\n maxHeight: sizeStyle.maxHeight\n }}\n pluginProps={pluginProps}\n toolbarOpts={toolbarOpts}\n placeholder={placeholder}\n renderPlaceholder={this.renderPlaceholder}\n />\n </div>\n );\n }\n}\n\n// TODO color - hardcoded gray background and keypad colors will need to change too\nconst styles = {\n withBg: {\n backgroundColor: 'rgba(0,0,0,0.06)'\n },\n slateEditor: {\n fontFamily: 'Roboto, sans-serif',\n\n '& table': {\n tableLayout: 'fixed',\n width: '100%',\n borderCollapse: 'collapse',\n color: color.text(),\n backgroundColor: color.background()\n },\n '& table:not([border=\"1\"]) tr': {\n borderTop: '1px solid #dfe2e5'\n // TODO perhaps secondary color for background, for now disable\n // '&:nth-child(2n)': {\n // backgroundColor: '#f6f8fa'\n // }\n },\n '& td, th': {\n padding: '.6em 1em',\n textAlign: 'center'\n },\n '& table:not([border=\"1\"]) td, th': {\n border: '1px solid #dfe2e5'\n }\n },\n toolbarOnTop: {\n marginTop: '45px'\n },\n noPadding: {\n padding: '0 !important'\n }\n};\n\nexport default withStyles(styles)(EditorComponent);\n"],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -29,45 +29,37 @@ exports["default"] = void 0;
|
|
|
29
29
|
Object.defineProperty(exports, "htmlToValue", {
|
|
30
30
|
enumerable: true,
|
|
31
31
|
get: function get() {
|
|
32
|
-
return
|
|
32
|
+
return _newSerialization.htmlToValue;
|
|
33
33
|
}
|
|
34
34
|
});
|
|
35
35
|
Object.defineProperty(exports, "valueToHtml", {
|
|
36
36
|
enumerable: true,
|
|
37
37
|
get: function get() {
|
|
38
|
-
return
|
|
38
|
+
return _newSerialization.valueToHtml;
|
|
39
39
|
}
|
|
40
40
|
});
|
|
41
41
|
|
|
42
42
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
43
43
|
|
|
44
|
-
var
|
|
45
|
-
|
|
46
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
47
|
-
|
|
48
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
49
|
-
|
|
50
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
51
|
-
|
|
52
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
44
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
53
45
|
|
|
54
|
-
var
|
|
46
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
55
47
|
|
|
56
|
-
var
|
|
48
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
57
49
|
|
|
58
|
-
var
|
|
50
|
+
var _slateReact = require("slate-react");
|
|
59
51
|
|
|
60
52
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
61
53
|
|
|
62
54
|
var _editor = _interopRequireWildcard(require("./editor"));
|
|
63
55
|
|
|
64
|
-
var
|
|
56
|
+
var _newSerialization = require("./new-serialization");
|
|
65
57
|
|
|
66
58
|
var _parseHtml = require("./parse-html");
|
|
67
59
|
|
|
68
60
|
var _debug = _interopRequireDefault(require("debug"));
|
|
69
61
|
|
|
70
|
-
var
|
|
62
|
+
var _this = void 0;
|
|
71
63
|
|
|
72
64
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
73
65
|
|
|
@@ -77,169 +69,123 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
77
69
|
|
|
78
70
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
79
71
|
|
|
80
|
-
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); }; }
|
|
81
|
-
|
|
82
|
-
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; } }
|
|
83
|
-
|
|
84
72
|
var log = (0, _debug["default"])('@pie-lib:editable-html');
|
|
85
73
|
/**
|
|
86
74
|
* Export lower level Editor and serialization functions.
|
|
87
75
|
*/
|
|
88
76
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
console.log("Couldn't remove <br/> tags: ", e);
|
|
77
|
+
var useConstructor = function useConstructor() {
|
|
78
|
+
var callback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};
|
|
79
|
+
|
|
80
|
+
var _useState = (0, _react.useState)(false),
|
|
81
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
82
|
+
hasBeenCalled = _useState2[0],
|
|
83
|
+
setHasBeenCalled = _useState2[1];
|
|
84
|
+
|
|
85
|
+
if (hasBeenCalled) {
|
|
86
|
+
return;
|
|
100
87
|
}
|
|
101
88
|
|
|
102
|
-
|
|
89
|
+
callback();
|
|
90
|
+
setHasBeenCalled(true);
|
|
103
91
|
};
|
|
104
92
|
|
|
105
|
-
var EditableHtml =
|
|
106
|
-
(0,
|
|
93
|
+
var EditableHtml = function EditableHtml(props) {
|
|
94
|
+
var _editorRef = (0, _react.useRef)(null);
|
|
107
95
|
|
|
108
|
-
var
|
|
96
|
+
var rootRef = (0, _react.useRef)(null);
|
|
109
97
|
|
|
110
|
-
|
|
111
|
-
|
|
98
|
+
var _useState3 = (0, _react.useState)(),
|
|
99
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
100
|
+
value = _useState4[0],
|
|
101
|
+
setValue = _useState4[1];
|
|
112
102
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
(
|
|
116
|
-
|
|
117
|
-
var htmlParsed = (0, _parseHtml.parseDegrees)(html);
|
|
118
|
-
log('value as html: ', html);
|
|
103
|
+
useConstructor(function () {
|
|
104
|
+
var v = (0, _newSerialization.htmlToValue)(props.markup);
|
|
105
|
+
setValue(v);
|
|
106
|
+
});
|
|
119
107
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
108
|
+
var onChange = function onChange(value, done) {
|
|
109
|
+
var html = (0, _newSerialization.valueToHtml)(value);
|
|
110
|
+
var htmlParsed = (0, _parseHtml.parseDegrees)(html);
|
|
111
|
+
log('value as html: ', html);
|
|
123
112
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
});
|
|
128
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "focus", function (position, node) {
|
|
129
|
-
var select = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
130
|
-
|
|
131
|
-
if (_this.editorRef) {
|
|
132
|
-
_this.editorRef.change(function (c) {
|
|
133
|
-
var lastText = node ? c.value.document.getNextText(node.key) : c.value.document.getLastText();
|
|
134
|
-
var editorDOM = document.querySelector("[data-key=\"".concat(_this.editorRef.value.document.key, "\"]"));
|
|
135
|
-
|
|
136
|
-
if (editorDOM !== document.activeElement) {
|
|
137
|
-
document.activeElement.blur();
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
c.focus();
|
|
141
|
-
|
|
142
|
-
if (position === 'end' && lastText) {
|
|
143
|
-
var _lastText$text, _lastText$text2;
|
|
144
|
-
|
|
145
|
-
c.moveFocusTo(lastText.key, (_lastText$text = lastText.text) === null || _lastText$text === void 0 ? void 0 : _lastText$text.length).moveAnchorTo(lastText.key, (_lastText$text2 = lastText.text) === null || _lastText$text2 === void 0 ? void 0 : _lastText$text2.length);
|
|
146
|
-
|
|
147
|
-
if (select) {
|
|
148
|
-
var _lastText$text3;
|
|
149
|
-
|
|
150
|
-
var range = _slate.Range.fromJSON({
|
|
151
|
-
anchorKey: lastText.key,
|
|
152
|
-
anchorOffset: 0,
|
|
153
|
-
focusKey: lastText.key,
|
|
154
|
-
focusOffset: (_lastText$text3 = lastText.text) === null || _lastText$text3 === void 0 ? void 0 : _lastText$text3.length,
|
|
155
|
-
isFocused: true,
|
|
156
|
-
isBackward: false
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
c.select(range);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
if (position === 'beginning' && lastText) {
|
|
164
|
-
c.moveFocusTo(lastText.key, 0).moveAnchorTo(lastText.key, 0);
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "finishEditing", function () {
|
|
170
|
-
if (_this.editorRef) {
|
|
171
|
-
_this.editorRef.props.onEditingDone();
|
|
172
|
-
}
|
|
173
|
-
});
|
|
174
|
-
var v = (0, _serialization.htmlToValue)(props.markup);
|
|
175
|
-
_this.state = {
|
|
176
|
-
value: v
|
|
177
|
-
};
|
|
178
|
-
return _this;
|
|
179
|
-
} // eslint-disable-next-line react/no-deprecated
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
(0, _createClass2["default"])(EditableHtml, [{
|
|
183
|
-
key: "componentWillReceiveProps",
|
|
184
|
-
value: function componentWillReceiveProps(props) {
|
|
185
|
-
if (!props.allowValidation && props.markup === this.props.markup) {
|
|
186
|
-
return;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
var v = (0, _serialization.htmlToValue)(reduceMultipleBrs(props.markup));
|
|
190
|
-
var current = (0, _serialization.htmlToValue)(reduceMultipleBrs(this.props.markup));
|
|
113
|
+
if (html !== props.markup) {
|
|
114
|
+
props.onChange(htmlParsed);
|
|
115
|
+
}
|
|
191
116
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
value: v
|
|
195
|
-
});
|
|
196
|
-
}
|
|
117
|
+
if (done) {
|
|
118
|
+
props.onDone(htmlParsed);
|
|
197
119
|
}
|
|
198
|
-
}
|
|
199
|
-
key: "render",
|
|
200
|
-
value: function render() {
|
|
201
|
-
var _this2 = this;
|
|
202
|
-
|
|
203
|
-
var value = this.state.value;
|
|
204
|
-
var _this$props = this.props,
|
|
205
|
-
toolbarOpts = _this$props.toolbarOpts,
|
|
206
|
-
error = _this$props.error;
|
|
207
|
-
|
|
208
|
-
if (toolbarOpts) {
|
|
209
|
-
toolbarOpts.error = error;
|
|
210
|
-
}
|
|
120
|
+
};
|
|
211
121
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
});
|
|
122
|
+
var focus = function focus(position, node) {
|
|
123
|
+
if (_this.editorRef) {
|
|
124
|
+
_this.editorRef.change(function (c) {
|
|
125
|
+
var lastText = node ? c.value.document.getNextText(node.key) : c.value.document.getLastText();
|
|
126
|
+
var editorDOM = document.querySelector("[data-key=\"".concat(_this.editorRef.value.document.key, "\"]"));
|
|
218
127
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
if (ref) {
|
|
222
|
-
_this2.rootRef = ref;
|
|
223
|
-
}
|
|
224
|
-
},
|
|
225
|
-
editorRef: function editorRef(ref) {
|
|
226
|
-
return ref && (_this2.editorRef = ref);
|
|
128
|
+
if (editorDOM !== document.activeElement) {
|
|
129
|
+
document.activeElement.blur();
|
|
227
130
|
}
|
|
228
|
-
|
|
131
|
+
|
|
132
|
+
c.focus();
|
|
133
|
+
|
|
134
|
+
if (position === 'end' && lastText) {
|
|
135
|
+
var _lastText$text, _lastText$text2;
|
|
136
|
+
|
|
137
|
+
c.moveFocusTo(lastText.key, (_lastText$text = lastText.text) === null || _lastText$text === void 0 ? void 0 : _lastText$text.length).moveAnchorTo(lastText.key, (_lastText$text2 = lastText.text) === null || _lastText$text2 === void 0 ? void 0 : _lastText$text2.length);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (position === 'beginning' && lastText) {
|
|
141
|
+
c.moveFocusTo(lastText.key, 0).moveAnchorTo(lastText.key, 0);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
var finishEditing = function finishEditing() {
|
|
148
|
+
if (_this.editorRef) {
|
|
149
|
+
_this.editorRef.props.onEditingDone();
|
|
229
150
|
}
|
|
230
|
-
}
|
|
231
|
-
return EditableHtml;
|
|
232
|
-
}(_react["default"].Component);
|
|
151
|
+
};
|
|
233
152
|
|
|
234
|
-
|
|
235
|
-
|
|
153
|
+
var toolbarOpts = props.toolbarOpts,
|
|
154
|
+
error = props.error;
|
|
155
|
+
|
|
156
|
+
if (toolbarOpts) {
|
|
157
|
+
toolbarOpts.error = error;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
var newProps = _objectSpread(_objectSpread({}, props), {}, {
|
|
161
|
+
markup: null,
|
|
162
|
+
value: value,
|
|
163
|
+
onChange: onChange
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
return /*#__PURE__*/_react["default"].createElement(_editor["default"], (0, _extends2["default"])({}, newProps, {
|
|
167
|
+
onRef: function onRef(ref) {
|
|
168
|
+
if (ref) {
|
|
169
|
+
rootRef.current = ref;
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
editorRef: function editorRef(ref) {
|
|
173
|
+
return ref && (_editorRef.current = ref);
|
|
174
|
+
}
|
|
175
|
+
}));
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
EditableHtml.propTypes = {
|
|
236
179
|
onChange: _propTypes["default"].func.isRequired,
|
|
237
180
|
onDone: _propTypes["default"].func,
|
|
181
|
+
onEditor: _propTypes["default"].func,
|
|
238
182
|
markup: _propTypes["default"].string.isRequired,
|
|
239
183
|
allowValidation: _propTypes["default"].bool
|
|
240
|
-
}
|
|
241
|
-
|
|
184
|
+
};
|
|
185
|
+
EditableHtml.defaultProps = {
|
|
242
186
|
onDone: function onDone() {},
|
|
243
187
|
allowValidation: false
|
|
244
|
-
}
|
|
245
|
-
|
|
188
|
+
};
|
|
189
|
+
var _default = EditableHtml;
|
|
190
|
+
exports["default"] = _default;
|
|
191
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJkZWJ1ZyIsInVzZUNvbnN0cnVjdG9yIiwiY2FsbGJhY2siLCJ1c2VTdGF0ZSIsImhhc0JlZW5DYWxsZWQiLCJzZXRIYXNCZWVuQ2FsbGVkIiwiRWRpdGFibGVIdG1sIiwicHJvcHMiLCJlZGl0b3JSZWYiLCJ1c2VSZWYiLCJyb290UmVmIiwidmFsdWUiLCJzZXRWYWx1ZSIsInYiLCJodG1sVG9WYWx1ZSIsIm1hcmt1cCIsIm9uQ2hhbmdlIiwiZG9uZSIsImh0bWwiLCJ2YWx1ZVRvSHRtbCIsImh0bWxQYXJzZWQiLCJwYXJzZURlZ3JlZXMiLCJvbkRvbmUiLCJmb2N1cyIsInBvc2l0aW9uIiwibm9kZSIsImNoYW5nZSIsImMiLCJsYXN0VGV4dCIsImRvY3VtZW50IiwiZ2V0TmV4dFRleHQiLCJrZXkiLCJnZXRMYXN0VGV4dCIsImVkaXRvckRPTSIsInF1ZXJ5U2VsZWN0b3IiLCJhY3RpdmVFbGVtZW50IiwiYmx1ciIsIm1vdmVGb2N1c1RvIiwidGV4dCIsImxlbmd0aCIsIm1vdmVBbmNob3JUbyIsImZpbmlzaEVkaXRpbmciLCJvbkVkaXRpbmdEb25lIiwidG9vbGJhck9wdHMiLCJlcnJvciIsIm5ld1Byb3BzIiwicmVmIiwiY3VycmVudCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImZ1bmMiLCJpc1JlcXVpcmVkIiwib25FZGl0b3IiLCJzdHJpbmciLCJhbGxvd1ZhbGlkYXRpb24iLCJib29sIiwiZGVmYXVsdFByb3BzIl0sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlU2xhdGUgfSBmcm9tICdzbGF0ZS1yZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IEVkaXRvciwgeyBERUZBVUxUX1BMVUdJTlMsIEFMTF9QTFVHSU5TIH0gZnJvbSAnLi9lZGl0b3InO1xuaW1wb3J0IHsgaHRtbFRvVmFsdWUsIHZhbHVlVG9IdG1sIH0gZnJvbSAnLi9uZXctc2VyaWFsaXphdGlvbic7XG5pbXBvcnQgeyBwYXJzZURlZ3JlZXMgfSBmcm9tICcuL3BhcnNlLWh0bWwnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcblxuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtbGliOmVkaXRhYmxlLWh0bWwnKTtcbi8qKlxuICogRXhwb3J0IGxvd2VyIGxldmVsIEVkaXRvciBhbmQgc2VyaWFsaXphdGlvbiBmdW5jdGlvbnMuXG4gKi9cbmV4cG9ydCB7IGh0bWxUb1ZhbHVlLCB2YWx1ZVRvSHRtbCwgRWRpdG9yLCBERUZBVUxUX1BMVUdJTlMsIEFMTF9QTFVHSU5TIH07XG5cbmNvbnN0IHVzZUNvbnN0cnVjdG9yID0gKGNhbGxiYWNrID0gKCkgPT4ge30pID0+IHtcbiAgY29uc3QgW2hhc0JlZW5DYWxsZWQsIHNldEhhc0JlZW5DYWxsZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGlmIChoYXNCZWVuQ2FsbGVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY2FsbGJhY2soKTtcbiAgc2V0SGFzQmVlbkNhbGxlZCh0cnVlKTtcbn07XG5cbmNvbnN0IEVkaXRhYmxlSHRtbCA9IHByb3BzID0+IHtcbiAgY29uc3QgZWRpdG9yUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCByb290UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCk7XG5cbiAgdXNlQ29uc3RydWN0b3IoKCkgPT4ge1xuICAgIGNvbnN0IHYgPSBodG1sVG9WYWx1ZShwcm9wcy5tYXJrdXApO1xuICAgIHNldFZhbHVlKHYpO1xuICB9KTtcblxuICBjb25zdCBvbkNoYW5nZSA9ICh2YWx1ZSwgZG9uZSkgPT4ge1xuICAgIGNvbnN0IGh0bWwgPSB2YWx1ZVRvSHRtbCh2YWx1ZSk7XG4gICAgY29uc3QgaHRtbFBhcnNlZCA9IHBhcnNlRGVncmVlcyhodG1sKTtcblxuICAgIGxvZygndmFsdWUgYXMgaHRtbDogJywgaHRtbCk7XG5cbiAgICBpZiAoaHRtbCAhPT0gcHJvcHMubWFya3VwKSB7XG4gICAgICBwcm9wcy5vbkNoYW5nZShodG1sUGFyc2VkKTtcbiAgICB9XG5cbiAgICBpZiAoZG9uZSkge1xuICAgICAgcHJvcHMub25Eb25lKGh0bWxQYXJzZWQpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBmb2N1cyA9IChwb3NpdGlvbiwgbm9kZSkgPT4ge1xuICAgIGlmICh0aGlzLmVkaXRvclJlZikge1xuICAgICAgdGhpcy5lZGl0b3JSZWYuY2hhbmdlKGMgPT4ge1xuICAgICAgICBjb25zdCBsYXN0VGV4dCA9IG5vZGVcbiAgICAgICAgICA/IGMudmFsdWUuZG9jdW1lbnQuZ2V0TmV4dFRleHQobm9kZS5rZXkpXG4gICAgICAgICAgOiBjLnZhbHVlLmRvY3VtZW50LmdldExhc3RUZXh0KCk7XG4gICAgICAgIGNvbnN0IGVkaXRvckRPTSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgYFtkYXRhLWtleT1cIiR7dGhpcy5lZGl0b3JSZWYudmFsdWUuZG9jdW1lbnQua2V5fVwiXWBcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoZWRpdG9yRE9NICE9PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjLmZvY3VzKCk7XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uID09PSAnZW5kJyAmJiBsYXN0VGV4dCkge1xuICAgICAgICAgIGMubW92ZUZvY3VzVG8obGFzdFRleHQua2V5LCBsYXN0VGV4dC50ZXh0Py5sZW5ndGgpLm1vdmVBbmNob3JUbyhcbiAgICAgICAgICAgIGxhc3RUZXh0LmtleSxcbiAgICAgICAgICAgIGxhc3RUZXh0LnRleHQ/Lmxlbmd0aFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9zaXRpb24gPT09ICdiZWdpbm5pbmcnICYmIGxhc3RUZXh0KSB7XG4gICAgICAgICAgYy5tb3ZlRm9jdXNUbyhsYXN0VGV4dC5rZXksIDApLm1vdmVBbmNob3JUbyhsYXN0VGV4dC5rZXksIDApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZmluaXNoRWRpdGluZyA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5lZGl0b3JSZWYpIHtcbiAgICAgIHRoaXMuZWRpdG9yUmVmLnByb3BzLm9uRWRpdGluZ0RvbmUoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgeyB0b29sYmFyT3B0cywgZXJyb3IgfSA9IHByb3BzO1xuXG4gIGlmICh0b29sYmFyT3B0cykge1xuICAgIHRvb2xiYXJPcHRzLmVycm9yID0gZXJyb3I7XG4gIH1cblxuICBjb25zdCBuZXdQcm9wcyA9IHtcbiAgICAuLi5wcm9wcyxcbiAgICBtYXJrdXA6IG51bGwsXG4gICAgdmFsdWUsXG4gICAgb25DaGFuZ2VcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxFZGl0b3JcbiAgICAgIHsuLi5uZXdQcm9wc31cbiAgICAgIG9uUmVmPXtyZWYgPT4ge1xuICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgcm9vdFJlZi5jdXJyZW50ID0gcmVmO1xuICAgICAgICB9XG4gICAgICB9fVxuICAgICAgZWRpdG9yUmVmPXtyZWYgPT4gcmVmICYmIChlZGl0b3JSZWYuY3VycmVudCA9IHJlZil9XG4gICAgLz5cbiAgKTtcbn07XG5cbkVkaXRhYmxlSHRtbC5wcm9wVHlwZXMgPSB7XG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkRvbmU6IFByb3BUeXBlcy5mdW5jLFxuICBvbkVkaXRvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG1hcmt1cDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBhbGxvd1ZhbGlkYXRpb246IFByb3BUeXBlcy5ib29sXG59O1xuXG5FZGl0YWJsZUh0bWwuZGVmYXVsdFByb3BzID0ge1xuICBvbkRvbmU6ICgpID0+IHt9LFxuICBhbGxvd1ZhbGlkYXRpb246IGZhbHNlXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFZGl0YWJsZUh0bWw7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLEdBQUcsR0FBRyxJQUFBQyxpQkFBQSxFQUFNLHdCQUFOLENBQVo7QUFDQTtBQUNBO0FBQ0E7O0FBR0EsSUFBTUMsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixHQUF5QjtFQUFBLElBQXhCQyxRQUF3Qix1RUFBYixZQUFNLENBQUUsQ0FBSzs7RUFDOUMsZ0JBQTBDLElBQUFDLGVBQUEsRUFBUyxLQUFULENBQTFDO0VBQUE7RUFBQSxJQUFPQyxhQUFQO0VBQUEsSUFBc0JDLGdCQUF0Qjs7RUFFQSxJQUFJRCxhQUFKLEVBQW1CO0lBQ2pCO0VBQ0Q7O0VBRURGLFFBQVE7RUFDUkcsZ0JBQWdCLENBQUMsSUFBRCxDQUFoQjtBQUNELENBVEQ7O0FBV0EsSUFBTUMsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBQUMsS0FBSyxFQUFJO0VBQzVCLElBQU1DLFVBQVMsR0FBRyxJQUFBQyxhQUFBLEVBQU8sSUFBUCxDQUFsQjs7RUFDQSxJQUFNQyxPQUFPLEdBQUcsSUFBQUQsYUFBQSxFQUFPLElBQVAsQ0FBaEI7O0VBQ0EsaUJBQTBCLElBQUFOLGVBQUEsR0FBMUI7RUFBQTtFQUFBLElBQU9RLEtBQVA7RUFBQSxJQUFjQyxRQUFkOztFQUVBWCxjQUFjLENBQUMsWUFBTTtJQUNuQixJQUFNWSxDQUFDLEdBQUcsSUFBQUMsNkJBQUEsRUFBWVAsS0FBSyxDQUFDUSxNQUFsQixDQUFWO0lBQ0FILFFBQVEsQ0FBQ0MsQ0FBRCxDQUFSO0VBQ0QsQ0FIYSxDQUFkOztFQUtBLElBQU1HLFFB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
|