@pie-lib/editable-html 11.18.6-esmbeta.0 → 11.19.0-mui-update.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/lib/block-tags.js +2 -3
- package/lib/block-tags.js.map +1 -1
- package/lib/constants.js +3 -6
- package/lib/constants.js.map +1 -1
- package/lib/editor.js +302 -450
- package/lib/editor.js.map +1 -1
- package/lib/index.js +19 -77
- package/lib/index.js.map +1 -1
- package/lib/parse-html.js +7 -7
- package/lib/parse-html.js.map +1 -1
- package/lib/plugins/characters/custom-popper.js +24 -44
- package/lib/plugins/characters/custom-popper.js.map +1 -1
- package/lib/plugins/characters/index.js +9 -60
- package/lib/plugins/characters/index.js.map +1 -1
- package/lib/plugins/characters/utils.js +3 -6
- package/lib/plugins/characters/utils.js.map +1 -1
- package/lib/plugins/css/icons/index.js +13 -25
- package/lib/plugins/css/icons/index.js.map +1 -1
- package/lib/plugins/css/index.js +22 -88
- package/lib/plugins/css/index.js.map +1 -1
- package/lib/plugins/customPlugin/index.js +10 -26
- package/lib/plugins/customPlugin/index.js.map +1 -1
- package/lib/plugins/html/icons/index.js +14 -26
- package/lib/plugins/html/icons/index.js.map +1 -1
- package/lib/plugins/html/index.js +4 -13
- package/lib/plugins/html/index.js.map +1 -1
- package/lib/plugins/image/alt-dialog.js +20 -49
- package/lib/plugins/image/alt-dialog.js.map +1 -1
- package/lib/plugins/image/component.js +119 -190
- package/lib/plugins/image/component.js.map +1 -1
- package/lib/plugins/image/image-toolbar.js +44 -86
- package/lib/plugins/image/image-toolbar.js.map +1 -1
- package/lib/plugins/image/index.js +6 -46
- package/lib/plugins/image/index.js.map +1 -1
- package/lib/plugins/image/insert-image-handler.js +10 -31
- package/lib/plugins/image/insert-image-handler.js.map +1 -1
- package/lib/plugins/index.js +44 -106
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/list/index.js +27 -73
- package/lib/plugins/list/index.js.map +1 -1
- package/lib/plugins/math/index.js +64 -116
- package/lib/plugins/math/index.js.map +1 -1
- package/lib/plugins/media/index.js +23 -81
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +192 -307
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/media/media-toolbar.js +40 -65
- package/lib/plugins/media/media-toolbar.js.map +1 -1
- package/lib/plugins/media/media-wrapper.js +20 -49
- package/lib/plugins/media/media-wrapper.js.map +1 -1
- package/lib/plugins/rendering/index.js +5 -15
- package/lib/plugins/rendering/index.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +175 -249
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/index.js +39 -29
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js +3 -10
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
- package/lib/plugins/respArea/icons/index.js +22 -45
- package/lib/plugins/respArea/icons/index.js.map +1 -1
- package/lib/plugins/respArea/index.js +5 -59
- package/lib/plugins/respArea/index.js.map +1 -1
- package/lib/plugins/respArea/inline-dropdown/index.js +2 -10
- package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
- package/lib/plugins/respArea/math-templated/index.js +92 -109
- package/lib/plugins/respArea/math-templated/index.js.map +1 -1
- package/lib/plugins/respArea/utils.js +8 -40
- package/lib/plugins/respArea/utils.js.map +1 -1
- package/lib/plugins/table/CustomTablePlugin.js +24 -41
- package/lib/plugins/table/CustomTablePlugin.js.map +1 -1
- package/lib/plugins/table/icons/index.js +19 -35
- package/lib/plugins/table/icons/index.js.map +1 -1
- package/lib/plugins/table/index.js +41 -118
- package/lib/plugins/table/index.js.map +1 -1
- package/lib/plugins/table/table-toolbar.js +37 -87
- package/lib/plugins/table/table-toolbar.js.map +1 -1
- package/lib/plugins/textAlign/icons/index.js +18 -64
- package/lib/plugins/textAlign/icons/index.js.map +1 -1
- package/lib/plugins/textAlign/index.js +1 -6
- package/lib/plugins/textAlign/index.js.map +1 -1
- package/lib/plugins/toolbar/default-toolbar.js +30 -79
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/done-button.js +16 -34
- package/lib/plugins/toolbar/done-button.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +174 -201
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/index.js +0 -5
- package/lib/plugins/toolbar/index.js.map +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js +57 -107
- package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
- package/lib/plugins/toolbar/toolbar.js +95 -161
- package/lib/plugins/toolbar/toolbar.js.map +1 -1
- package/lib/plugins/utils.js +5 -25
- package/lib/plugins/utils.js.map +1 -1
- package/lib/serialization.js +44 -150
- package/lib/serialization.js.map +1 -1
- package/lib/shared/alert-dialog.js +23 -42
- package/lib/theme.js +1 -2
- package/lib/theme.js.map +1 -1
- package/package.json +15 -21
- package/src/__tests__/utils.js +1 -1
- package/src/editor.jsx +110 -108
- package/src/plugins/characters/custom-popper.js +20 -25
- package/src/plugins/css/icons/index.jsx +11 -13
- package/src/plugins/css/index.jsx +3 -5
- package/src/plugins/html/icons/index.jsx +12 -14
- package/src/plugins/image/alt-dialog.jsx +9 -8
- package/src/plugins/image/component.jsx +67 -87
- package/src/plugins/image/image-toolbar.jsx +26 -26
- package/src/plugins/image/index.jsx +1 -1
- package/src/plugins/index.jsx +10 -10
- package/src/plugins/math/index.jsx +1 -1
- package/src/plugins/media/index.jsx +2 -2
- package/src/plugins/media/media-dialog.js +65 -76
- package/src/plugins/media/media-toolbar.jsx +32 -33
- package/src/plugins/media/media-wrapper.jsx +10 -13
- package/src/plugins/respArea/drag-in-the-blank/choice.jsx +193 -180
- package/src/plugins/respArea/drag-in-the-blank/index.jsx +58 -22
- package/src/plugins/respArea/icons/index.jsx +16 -16
- package/src/plugins/respArea/math-templated/index.jsx +88 -89
- package/src/plugins/respArea/utils.jsx +1 -1
- package/src/plugins/table/icons/index.jsx +14 -16
- package/src/plugins/table/index.jsx +27 -19
- package/src/plugins/table/table-toolbar.jsx +17 -19
- package/src/plugins/textAlign/icons/index.jsx +3 -3
- package/src/plugins/toolbar/__tests__/default-toolbar.test.jsx +1 -1
- package/src/plugins/toolbar/__tests__/toolbar.test.jsx +1 -1
- package/src/plugins/toolbar/default-toolbar.jsx +18 -21
- package/src/plugins/toolbar/done-button.jsx +16 -22
- package/src/plugins/toolbar/editor-and-toolbar.jsx +134 -157
- package/src/plugins/toolbar/toolbar-buttons.jsx +29 -46
- package/src/plugins/toolbar/toolbar.jsx +60 -78
- package/esm/index.js +0 -111560
- package/esm/index.js.map +0 -1
- package/esm/package.json +0 -1
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","isHtmlMode","MAX_CHARACTERS_LIMIT","Editor","props","interacted","keypadInteractionDetected","open","extraDialogProps","callback","setState","dialog","prevState","isEditedInHtmlMode","state","newToolbarOpts","normalizedResponseAreaProps","responseAreaProps","htmlPluginOpts","currentValue","value","toggleHtmlMode","handleAlertDialog","handleDialog","pluginProps","customPlugins","plugins","activePlugins","math","onClick","onMathClick","onFocus","onPluginFocus","onBlur","onPluginBlur","mathMlOptions","textAlign","getValue","onChange","html","extraCSSRules","image","disableImageAlignmentButtons","onDelete","imageSupport","node","done","src","data","get","e","newPendingImages","pendingImages","filter","img","key","oldScheduled","scheduled","newState","length","insertImageRequested","addedImage","getHandler","onFinish","result","cb","onEditingDone","bind","handler","add","maxImageWidth","maxImageHeight","toolbar","disableScrollbar","disableUnderline","autoWidth","autoWidthToolbar","onDone","nonEmpty","toolbarInFocus","focusedNode","focusToolbar","editor","blur","startText","text","resetValue","then","table","responseArea","type","maxResponseAreas","languageCharacters","languageCharactersProps","keyPadCharacterRef","setKeypadInteraction","media","focus","createChange","change","uploadSoundSupport","mmlOutput","mmlEditing","runSerializationOnMarkup","relatedTarget","target","stashedValue","stashValue","c","collapseToStartOf","selectedNode","document","previewText","renderHtmlPreviewContent","openHtmlModeConfirmationDialog","classes","ref","elementRef","title","onConfirmText","onCloseText","onConfirm","handleHtmlModeSaveConfirmation","onClose","htmlModeContinueEditing","resolve","event","toolbarElement","toolbarRef","closest","className","isRawDoneButton","doneButtonRef","current","skipBlurHandling","Promise","preBlurValue","handleBlur","editorDOM","querySelector","setTimeout","stateValue","wrapperRef","editorElement","activeElement","isInCurrentComponent","contains","removeEventListener","handleDomBlur","isFocused","isTouchDevice","window","navigator","maxTouchPoints","__TEMPORARY_CHANGE_DATA","domEl","setNodeByKey","addEventListener","shouldFocusEditor","force","stopReset","reduce","s","p","toObject","newValue","Value","fromJSON","toJSON","me","charactersLimit","limit","handlePlugins","v","calcRegex","endsWith","undefined","match","parseInt","isNaN","object","last","nodes","parent","getParent","Block","pos","dropContext","transfer","file","files","fragment","inline","Inline","create","isVoid","loading","range","select","ch","insertInline","InsertImageHandler","fileChosen","insertFragment","selection","startBlock","defaultBlock","defaultMarks","getInsertMarksAtRange","frag","Plain","deserialize","placeholder","size","isEmpty","display","width","maxWidth","whiteSpace","opacity","pointerEvents","userSelect","React","createRef","handleToolbarFocus","handleToolbarBlur","onResize","toolbarContainsFocus","onRef","isResponseAreaEditor","includes","responseAreaEditor","setAttribute","autoFocus","nextProps","differentCharacterProps","differentMathMlProps","differentImageMaxDimensionsProps","equals","prevProps","zeroWidthEls","querySelectorAll","Array","from","forEach","el","style","minWidth","minHeight","height","maxHeight","valueToSize","disabled","spellCheck","highlightShape","isEditor","onKeyDown","showParagraphs","separateParagraphs","otherPluginProps","sizeStyle","buildSizeStyle","names","withBg","toolbarOnTop","uploading","r","slateEditor","editorRef","getFocusedValue","onDropPaste","normalize","noPadding","showParagraph","separateParagraph","renderPlaceholder","changeData","Component","PropTypes","bool","func","isRequired","any","SlateTypes","shape","number","oneOfType","string","oneOf","arrayOf","rules","language","characterIcon","characters","values","allValid","every","ALL_PLUGINS","Error","join","styles","backgroundColor","top","left","transform","fontFamily","tableLayout","borderCollapse","color","background","borderTop","padding","border","content","fontSize","marginBottom","marginTop"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Editor as SlateEditor, findNode, getEventRange, getEventTransfer } from 'slate-react';\nimport SlateTypes from 'slate-prop-types';\nimport { Value, Block, Inline } from 'slate';\nimport Plain from 'slate-plain-serializer';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash/debounce';\nimport isEqual from 'lodash/isEqual';\nimport classNames from 'classnames';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport { color } from '@pie-lib/render-ui';\nimport AlertDialog from '../../config-ui/src/alert-dialog';\nimport { PreviewPrompt } from '@pie-lib/render-ui';\n\nimport { getBase64, htmlToValue } from './serialization';\nimport InsertImageHandler from './plugins/image/insert-image-handler';\nimport * as serialization from './serialization';\nimport { buildPlugins, ALL_PLUGINS, DEFAULT_PLUGINS } from './plugins';\n\nexport { ALL_PLUGINS, DEFAULT_PLUGINS, serialization };\n\nconst log = debug('editable-html:editor');\n\nconst defaultToolbarOpts = {\n position: 'bottom',\n alignment: 'left',\n alwaysVisible: false,\n showDone: true,\n doneOn: 'blur',\n};\n\nconst defaultResponseAreaProps = {\n options: {},\n respAreaToolbar: () => {},\n onHandleAreaChange: () => {},\n};\n\nconst defaultLanguageCharactersProps = [];\n\nconst createToolbarOpts = (toolbarOpts, error, isHtmlMode) => {\n return {\n ...defaultToolbarOpts,\n ...toolbarOpts,\n error,\n isHtmlMode,\n };\n};\n\n/**\n * The maximum number of characters the editor can support\n * @type {number}\n */\nconst MAX_CHARACTERS_LIMIT = 1000000;\n\nexport class Editor extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n editorRef: PropTypes.func.isRequired,\n error: PropTypes.any,\n onRef: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyDown: PropTypes.func,\n focus: PropTypes.func.isRequired,\n value: SlateTypes.value.isRequired,\n imageSupport: PropTypes.object,\n mathMlOptions: PropTypes.shape({\n mmlOutput: PropTypes.bool,\n mmlEditing: PropTypes.bool,\n }),\n disableImageAlignmentButtons: PropTypes.bool,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func,\n }),\n charactersLimit: PropTypes.number,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxWidth: 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 // customPlugins should be inside pluginProps (a property inside pluginProps)\n // customPlugins: PropTypes.arrayOf(\n // PropTypes.shape({\n // event: PropTypes.string,\n // icon: PropTypes.string,\n // iconType: PropTypes.string,\n // iconAlt: PropTypes.string\n // }),\n // ),\n placeholder: PropTypes.string,\n isEditor: PropTypes.bool,\n responseAreaProps: PropTypes.shape({\n type: PropTypes.oneOf([\n 'explicit-constructed-response',\n 'inline-dropdown',\n 'drag-in-the-blank',\n 'math-templated',\n ]),\n options: PropTypes.object,\n respAreaToolbar: PropTypes.func,\n onHandleAreaChange: PropTypes.func,\n maxResponseAreas: PropTypes.number,\n error: PropTypes.any,\n }),\n extraCSSRules: PropTypes.shape({\n names: PropTypes.arrayOf(PropTypes.string),\n rules: PropTypes.string,\n }),\n languageCharactersProps: PropTypes.arrayOf(\n PropTypes.shape({\n language: PropTypes.string,\n characterIcon: PropTypes.string,\n characters: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)),\n }),\n ),\n runSerializationOnMarkup: PropTypes.func,\n toolbarOpts: PropTypes.shape({\n position: PropTypes.oneOf(['bottom', 'top']),\n alignment: PropTypes.oneOf(['left', 'right']),\n alwaysVisible: PropTypes.bool,\n showDone: PropTypes.bool,\n doneOn: PropTypes.string,\n minWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n }),\n activePlugins: PropTypes.arrayOf((values) => {\n const allValid = values.every((v) => ALL_PLUGINS.includes(v));\n\n return !allValid && new Error(`Invalid values: ${values}, values must be one of [${ALL_PLUGINS.join(',')}]`);\n }),\n className: PropTypes.string,\n maxImageWidth: PropTypes.number,\n maxImageHeight: PropTypes.number,\n };\n\n static defaultProps = {\n disableUnderline: true,\n onFocus: () => {},\n onBlur: () => {},\n onKeyDown: () => {},\n runSerializationOnMarkup: () => {},\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n toolbarOpts: defaultToolbarOpts,\n responseAreaProps: defaultResponseAreaProps,\n languageCharactersProps: defaultLanguageCharactersProps,\n extraCSSRules: null,\n isEditor: false,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n value: props.value,\n toolbarOpts: createToolbarOpts(props.toolbarOpts, props.error),\n pendingImages: [],\n isHtmlMode: false,\n isEditedInHtmlMode: false,\n focusToolbar: false,\n dialog: {\n open: false,\n },\n };\n\n this.keyPadCharacterRef = React.createRef();\n this.doneButtonRef = React.createRef();\n this.keypadInteractionDetected = false;\n\n this.toggleHtmlMode = this.toggleHtmlMode.bind(this);\n this.handleToolbarFocus = this.handleToolbarFocus.bind(this);\n this.handleToolbarBlur = this.handleToolbarBlur.bind(this);\n\n this.onResize = debounce(() => {\n if (!this.state.isHtmlMode && props.onChange) {\n props.onChange(this.state.value, true);\n }\n }, 50);\n\n this.handlePlugins(this.props);\n }\n\n handleToolbarFocus() {\n if (this.state.focusToolbar) {\n return;\n }\n\n this.setState({ focusToolbar: true });\n }\n\n setKeypadInteraction = (interacted) => {\n this.keypadInteractionDetected = interacted;\n };\n\n handleToolbarBlur() {\n setTimeout(() => {\n if (!this.toolbarContainsFocus()) {\n this.setState({ focusToolbar: false });\n }\n }, 0);\n }\n\n toolbarContainsFocus() {\n if (!this.toolbarRef) return false;\n const toolbarElement = this.toolbarRef;\n const activeElement = document.activeElement;\n\n return toolbarElement && toolbarElement.contains(activeElement);\n }\n\n handleDialog = (open, extraDialogProps = {}, callback) => {\n this.setState(\n {\n dialog: {\n open,\n ...extraDialogProps,\n },\n },\n callback,\n );\n };\n\n toggleHtmlMode = () => {\n this.setState(\n (prevState) => ({\n isHtmlMode: !prevState.isHtmlMode,\n isEditedInHtmlMode: false,\n }),\n () => {\n const { error } = this.props;\n const { toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(toolbarOpts, error, this.state.isHtmlMode);\n this.setState({\n toolbarOpts: newToolbarOpts,\n });\n },\n );\n };\n\n handlePlugins = (props) => {\n const normalizedResponseAreaProps = {\n ...defaultResponseAreaProps,\n ...props.responseAreaProps,\n };\n\n const htmlPluginOpts = {\n currentValue: this.props.value,\n isHtmlMode: this.state.isHtmlMode,\n isEditedInHtmlMode: this.state.isEditedInHtmlMode,\n toggleHtmlMode: this.toggleHtmlMode,\n handleAlertDialog: this.handleDialog,\n };\n let { customPlugins } = props.pluginProps || {};\n customPlugins = customPlugins || [];\n\n this.plugins = buildPlugins(props.activePlugins, customPlugins, {\n math: {\n onClick: this.onMathClick,\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur,\n ...props.mathMlOptions,\n },\n textAlign: {\n getValue: () => this.state.value,\n onChange: this.onChange,\n },\n html: htmlPluginOpts,\n extraCSSRules: props.extraCSSRules || {},\n image: {\n disableImageAlignmentButtons: props.disableImageAlignmentButtons,\n onDelete:\n props.imageSupport &&\n props.imageSupport.delete &&\n ((node, done) => {\n const src = node.data.get('src');\n\n props.imageSupport.delete(src, (e) => {\n const newPendingImages = this.state.pendingImages.filter((img) => img.key !== node.key);\n const { scheduled: oldScheduled } = this.state;\n const newState = {\n pendingImages: newPendingImages,\n scheduled: oldScheduled && newPendingImages.length === 0 ? false : oldScheduled,\n };\n\n this.setState(newState, () => done(e, this.state.value));\n });\n }),\n insertImageRequested:\n props.imageSupport &&\n ((addedImage, getHandler) => {\n const { pendingImages } = this.state;\n const onFinish = (result) => {\n let cb;\n\n if (this.state.scheduled && result) {\n // finish editing only on success\n cb = this.onEditingDone.bind(this);\n }\n\n const newPendingImages = this.state.pendingImages.filter((img) => img.key !== addedImage.key);\n const newState = {\n pendingImages: newPendingImages,\n };\n\n if (newPendingImages.length === 0) {\n newState.scheduled = false;\n }\n\n this.setState(newState, cb);\n };\n const callback = () => {\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(onFinish, () => this.state.value);\n props.imageSupport.add(handler);\n };\n\n this.setState(\n {\n pendingImages: [...pendingImages, addedImage],\n },\n callback,\n );\n }),\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur,\n maxImageWidth: props.maxImageWidth,\n maxImageHeight: 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, focusToolbar: false });\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 keyPadCharacterRef: this.keyPadCharacterRef,\n setKeypadInteraction: this.setKeypadInteraction,\n media: {\n focus: this.focus,\n createChange: () => this.state.value.change(),\n onChange: this.onChange,\n uploadSoundSupport: props.uploadSoundSupport,\n },\n });\n\n if (props.mathMlOptions.mmlOutput || props.mathMlOptions.mmlEditing) {\n this.props.runSerializationOnMarkup();\n }\n };\n\n componentDidMount() {\n // onRef is needed to get the ref of the component because we export it using withStyles\n this.props.onRef(this);\n\n window.addEventListener('resize', this.onResize);\n\n const isResponseAreaEditor = this.props.className?.includes('response-area-editor');\n\n if (isResponseAreaEditor && this.editor) {\n const responseAreaEditor = document.querySelector(`[data-key=\"${this.editor.value.document.key}\"]`);\n\n if (responseAreaEditor) {\n responseAreaEditor.setAttribute('aria-label', 'Answer');\n }\n }\n\n if (this.editor && this.props.autoFocus) {\n Promise.resolve().then(() => {\n if (this.editor) {\n const editorDOM = document.querySelector(`[data-key=\"${this.editor.value.document.key}\"]`);\n\n this.editor.focus();\n\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n });\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { isHtmlMode, toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(nextProps.toolbarOpts, nextProps.error, isHtmlMode);\n\n if (!isEqual(newToolbarOpts, toolbarOpts)) {\n this.setState({\n toolbarOpts: newToolbarOpts,\n });\n }\n\n const differentCharacterProps = !isEqual(nextProps.languageCharactersProps, this.props.languageCharactersProps);\n const differentMathMlProps = !isEqual(nextProps.mathMlOptions, this.props.mathMlOptions);\n const differentImageMaxDimensionsProps =\n !isEqual(nextProps.maxImageWidth, this.props.maxImageWidth) ||\n !isEqual(nextProps.maxImageHeight, this.props.maxImageHeight);\n\n if (differentCharacterProps || differentMathMlProps || differentImageMaxDimensionsProps) {\n this.handlePlugins(nextProps);\n }\n\n if (!nextProps.value?.document?.equals(this.props.value?.document)) {\n this.setState({\n focus: false,\n value: nextProps.value,\n });\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n // The cursor is on a zero width element and when that is placed near void elements, it is not visible\n // so we increase the width to at least 2px in order for the user to see it\n\n // Trigger plugins and finish editing if:\n // 1. The 'isHtmlMode' state has been toggled.\n // 2. We're currently in 'isHtmlMode' and the editor value has been modified.\n if (\n this.state.isHtmlMode !== prevState.isHtmlMode ||\n (this.state.isHtmlMode && !prevState.isEditedInHtmlMode && this.state.isEditedInHtmlMode)\n ) {\n this.handlePlugins(this.props);\n }\n\n const zeroWidthEls = document.querySelectorAll('[data-slate-zero-width=\"z\"]');\n\n Array.from(zeroWidthEls).forEach((el) => {\n el.style.minWidth = '2px';\n el.style.display = 'inline-block';\n });\n }\n\n onPluginBlur = (e) => {\n log('[onPluginBlur]', e && e.relatedTarget);\n const target = e && e.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n log('[onPluginBlur] node: ', node);\n this.setState({ focusedNode: node }, () => {\n this.resetValue();\n });\n };\n\n onPluginFocus = (e) => {\n log('[onPluginFocus]', e && e.target);\n const target = e && e.target;\n if (target) {\n const node = findNode(target, this.state.value);\n log('[onPluginFocus] node: ', node);\n\n const stashedValue = this.state.stashedValue || this.state.value;\n this.setState({ focusedNode: node, stashedValue });\n } else {\n this.setState({ focusedNode: null });\n }\n this.stashValue();\n };\n\n onMathClick = (node) => {\n this.editor.change((c) => c.collapseToStartOf(node));\n this.setState({ selectedNode: node });\n };\n\n onEditingDone = () => {\n const { isHtmlMode, dialog, value, pendingImages } = this.state;\n\n // Handling HTML mode and dialog state\n if (isHtmlMode) {\n // Early return if HTML mode is enabled\n if (dialog?.open) return;\n\n const currentValue = htmlToValue(value.document.text);\n const previewText = this.renderHtmlPreviewContent();\n\n this.openHtmlModeConfirmationDialog(currentValue, previewText);\n return;\n }\n\n if (pendingImages.length) {\n // schedule image processing\n this.setState({ scheduled: true });\n return;\n }\n\n // Finalizing editing\n log('[onEditingDone]');\n this.setState({ pendingImages: [], stashedValue: null, focusedNode: null });\n log('[onEditingDone] value: ', this.state.value);\n this.props.onChange(this.state.value, true);\n };\n\n /**\n * Renders the HTML preview content to be displayed inside the dialog.\n * This content includes the edited HTML and a prompt for the user.\n */\n renderHtmlPreviewContent = () => {\n const { classes } = this.props;\n return (\n <div ref={(ref) => (this.elementRef = ref)}>\n <div>Preview of Edited Html:</div>\n <PreviewPrompt defaultClassName={classes.previewText} prompt={this.state.value.document.text} />\n <div>Would you like to save these changes ?</div>\n </div>\n );\n };\n\n /**\n * Opens a confirmation dialog in HTML mode, displaying the preview of the current HTML content\n * and offering options to save or continue editing.\n */\n openHtmlModeConfirmationDialog = (currentValue, previewText) => {\n this.setState({\n dialog: {\n open: true,\n title: 'Content Preview & Save',\n text: previewText,\n onConfirmText: 'Save changes',\n onCloseText: 'Continue editing',\n onConfirm: () => {\n this.handleHtmlModeSaveConfirmation(currentValue);\n },\n onClose: this.htmlModeContinueEditing,\n },\n });\n };\n\n /**\n * Handles the save confirmation action in HTML mode. This updates the value to the confirmed\n * content, updates value on props, and exits the HTML mode.\n * @param {string} currentValue - The confirmed value of the HTML content to save.\n */\n handleHtmlModeSaveConfirmation = (currentValue) => {\n this.setState({ value: currentValue });\n this.props.onChange(currentValue, true);\n this.handleDialog(false);\n this.toggleHtmlMode();\n };\n\n /**\n * Closes the dialog in HTML mode and allows the user to continue editing the html content.\n * This function is invoked when the user opts to not save the current changes.\n */\n htmlModeContinueEditing = () => {\n this.handleDialog(false);\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 relatedTarget = event.relatedTarget;\n const toolbarElement = this.toolbarRef && relatedTarget?.closest(`[class*=\"${this.toolbarRef.className}\"]`);\n\n // Check if relatedTarget is a done button\n const isRawDoneButton =\n this.doneButtonRef && relatedTarget?.closest(`[class*=\"${this.doneButtonRef.current?.className}\"]`);\n\n // Skip onBlur handling if relatedTarget is a button from the KeyPad characters\n this.skipBlurHandling = this.keypadInteractionDetected && relatedTarget !== null;\n\n if (toolbarElement && !isRawDoneButton && !this.state.focusToolbar) {\n this.setState({\n focusToolbar: true,\n });\n }\n\n const node = relatedTarget ? findNode(relatedTarget, this.state.value) : null;\n\n log('[onBlur] node: ', node);\n\n return new Promise((resolve) => {\n if (!this.skipBlurHandling) {\n this.setKeypadInteraction(false);\n this.setState(\n { preBlurValue: this.state.value, focusedNode: !node ? null : node },\n this.handleBlur.bind(this, resolve),\n );\n }\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 = (event, change) =>\n new Promise((resolve) => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n const isTouchDevice =\n typeof window !== 'undefined' && ('ontouchstart' in window || navigator?.maxTouchPoints > 0);\n\n log('[onFocus]', document.activeElement);\n\n if (this.keypadInteractionDetected && this.__TEMPORARY_CHANGE_DATA) {\n this.__TEMPORARY_CHANGE_DATA = null;\n }\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 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 // Added for accessibility: Ensures the editor gains focus when tabbed to for improved keyboard navigation\n const shouldFocusEditor = !this.keypadInteractionDetected && !isTouchDevice;\n\n if (shouldFocusEditor) {\n change?.focus();\n }\n\n resolve();\n });\n\n stashValue = () => {\n log('[stashValue]');\n\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 window.me = this;\n\n const { value } = change;\n const { charactersLimit } = this.props;\n let limit = charactersLimit;\n if (!limit || limit > MAX_CHARACTERS_LIMIT) {\n limit = MAX_CHARACTERS_LIMIT;\n }\n\n if (value && value.document && value.document.text && value.document.text.length > limit) {\n return;\n }\n\n // Mark the editor as edited when in HTML mode and its content has changed.\n // This status will later be used to decide whether to prompt a warning to the user when exiting HTML mode.\n const isEditedInHtmlMode = !this.state.isHtmlMode\n ? false\n : this.state.value.document.text !== value.document.text\n ? true\n : this.state.isEditedInHtmlMode;\n\n if (isEditedInHtmlMode != this.state.isEditedInHtmlMode) {\n this.handlePlugins(this.props);\n }\n\n this.setState({ value, isEditedInHtmlMode }, () => {\n log('[onChange], call done()');\n\n if (done) {\n done();\n }\n });\n };\n\n getFocusedValue = () => {\n if (this.state.value.isFocused) {\n return this.state.value;\n }\n\n return this.state.preBlurValue;\n };\n\n valueToSize = (v) => {\n if (!v) {\n return;\n }\n const calcRegex = /^calc\\((.*)\\)$/;\n\n if (typeof v === 'string') {\n if (v.endsWith('%')) {\n return undefined;\n } else if (\n v.endsWith('px') ||\n v.endsWith('vh') ||\n v.endsWith('vw') ||\n v.endsWith('ch') ||\n v.endsWith('em') ||\n v.match(calcRegex)\n ) {\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\n buildSizeStyle() {\n const { minWidth, width, maxWidth, minHeight, height, maxHeight } = this.props;\n\n return {\n width: this.valueToSize(width),\n minWidth: this.valueToSize(minWidth),\n maxWidth: this.valueToSize(maxWidth),\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(\n inline,\n () => {},\n () => this.state.value,\n this.onChange,\n true,\n );\n handler.fileChosen(file);\n this.props.imageSupport.add(handler);\n } catch (err) {\n log('[onDropPaste] error: ', err);\n }\n } else if (type === 'fragment') {\n change.insertFragment(fragment);\n } else if (type === 'text' || type === 'html') {\n if (!text) {\n return;\n }\n const {\n value: { document, selection, startBlock },\n } = change;\n\n if (startBlock.isVoid) {\n return;\n }\n\n const defaultBlock = startBlock;\n const defaultMarks = document.getInsertMarksAtRange(selection);\n const frag = Plain.deserialize(text, {\n defaultBlock,\n defaultMarks,\n }).document;\n change.insertFragment(frag);\n }\n };\n\n renderPlaceholder = (props) => {\n const { editor } = props;\n const { document } = editor.value;\n\n if (!editor.props.placeholder || document.text !== '' || document.nodes.size !== 1 || !document.isEmpty) {\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 isEditor,\n placeholder,\n pluginProps,\n onKeyDown,\n } = this.props;\n // We don't want to send customPlugins to slate.\n // Not sure if they would do any harm, but I think it's better to not send them.\n // We use custom plugins to be able to add custom buttons\n // eslint-disable-next-line no-unused-vars\n const { customPlugins, showParagraphs, separateParagraphs, ...otherPluginProps } = pluginProps || {};\n\n const { value, focusedNode, toolbarOpts, dialog, scheduled } = 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 [classes.scheduled]: scheduled,\n },\n className,\n );\n\n return (\n <div\n ref={(ref) => (this.wrapperRef = ref)}\n style={{ width: sizeStyle.width, minWidth: sizeStyle.minWidth, maxWidth: sizeStyle.maxWidth }}\n className={names}\n id={`editor-${value?.document?.key}`}\n >\n {scheduled && <div className={classes.uploading}>Uploading image and then saving...</div>}\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 doneButtonRef={this.doneButtonRef}\n value={value}\n focusToolbar={this.state.focusToolbar}\n onToolbarFocus={this.handleToolbarFocus}\n onToolbarBlur={this.handleToolbarBlur}\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?.noPadding,\n [classes.showParagraph]: showParagraphs && !showParagraphs.disabled,\n [classes.separateParagraph]: separateParagraphs && !separateParagraphs.disabled,\n },\n classes.slateEditor,\n )}\n style={{\n minHeight: sizeStyle.minHeight,\n height: sizeStyle.height,\n maxHeight: sizeStyle.maxHeight,\n }}\n pluginProps={otherPluginProps}\n toolbarOpts={toolbarOpts}\n placeholder={placeholder}\n renderPlaceholder={this.renderPlaceholder}\n onDataChange={this.changeData}\n />\n <AlertDialog\n open={dialog.open}\n title={dialog.title}\n text={dialog.text}\n onClose={dialog.onClose}\n onConfirm={dialog.onConfirm}\n onConfirmText={dialog.onConfirmText}\n onCloseText={dialog.onCloseText}\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 scheduled: {\n opacity: 0.5,\n pointerEvents: 'none',\n position: 'relative',\n },\n uploading: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\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 showParagraph: {\n // a div that has a div after it\n '& > div:has(+ div)::after': {\n display: 'block',\n content: '\"¶\"',\n fontSize: '1em',\n color: '#146EB3',\n },\n },\n separateParagraph: {\n // a div that has a div after it\n '& > div:has(+ div)': {\n marginBottom: '1em',\n },\n },\n toolbarOnTop: {\n marginTop: '45px',\n },\n noPadding: {\n padding: '0 !important',\n },\n previewText: {\n marginBottom: '36px',\n marginTop: '6px',\n padding: '20px',\n backgroundColor: 'rgba(0,0,0,0.06)',\n },\n};\n\nexport default withStyles(styles)(Editor);\n"],"file":"editor.js"}
|
|
1
|
+
{"version":3,"file":"editor.js","names":["_react","_interopRequireDefault","require","_slateReact","_slatePropTypes","_slate","_slatePlainSerializer","_propTypes","_debounce","_isEqual","_classnames","_debug","_styles","_renderUi","_alertDialog","_serialization","_interopRequireWildcard","serialization","exports","_insertImageHandler","_plugins","_excluded","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t2","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","log","debug","defaultToolbarOpts","position","alignment","alwaysVisible","showDone","doneOn","defaultResponseAreaProps","options","respAreaToolbar","onHandleAreaChange","defaultLanguageCharactersProps","createToolbarOpts","toolbarOpts","error","isHtmlMode","MAX_CHARACTERS_LIMIT","Editor","_React$Component","props","_this","_classCallCheck2","interacted","keypadInteractionDetected","open","extraDialogProps","undefined","callback","setState","dialog","prevState","isEditedInHtmlMode","state","newToolbarOpts","normalizedResponseAreaProps","responseAreaProps","htmlPluginOpts","currentValue","value","toggleHtmlMode","handleAlertDialog","handleDialog","_ref","pluginProps","customPlugins","plugins","buildPlugins","activePlugins","math","onClick","onMathClick","onFocus","onPluginFocus","onBlur","onPluginBlur","mathMlOptions","textAlign","getValue","onChange","html","extraCSSRules","image","disableImageAlignmentButtons","onDelete","imageSupport","node","done","src","data","newPendingImages","pendingImages","img","key","oldScheduled","scheduled","newState","insertImageRequested","addedImage","getHandler","onFinish","result","cb","onEditingDone","bind","handler","add","concat","_toConsumableArray2","maxImageWidth","maxImageHeight","toolbar","disableScrollbar","disableUnderline","autoWidth","autoWidthToolbar","onDone","_this$state$value$sta","nonEmpty","toolbarInFocus","focusedNode","focusToolbar","editor","blur","startText","text","resetValue","then","table","responseArea","type","maxResponseAreas","languageCharacters","languageCharactersProps","keyPadCharacterRef","setKeypadInteraction","media","focus","createChange","change","uploadSoundSupport","mmlOutput","mmlEditing","runSerializationOnMarkup","relatedTarget","target","findNode","stashedValue","stashValue","c","collapseToStartOf","selectedNode","_this$state","htmlToValue","document","previewText","renderHtmlPreviewContent","openHtmlModeConfirmationDialog","createElement","ref","elementRef","StyledPreviewText","PreviewPrompt","prompt","title","onConfirmText","onCloseText","onConfirm","handleHtmlModeSaveConfirmation","onClose","htmlModeContinueEditing","resolve","_this$state$value$sta2","event","_this$doneButtonRef$c","toolbarElement","toolbarRef","closest","className","isRawDoneButton","doneButtonRef","current","skipBlurHandling","Promise","preBlurValue","handleBlur","editorDOM","querySelector","setTimeout","stateValue","wrapperRef","editorElement","activeElement","isInCurrentComponent","contains","removeEventListener","handleDomBlur","isFocused","_navigator","isTouchDevice","window","navigator","maxTouchPoints","__TEMPORARY_CHANGE_DATA","_this$__TEMPORARY_CHA","domEl","setNodeByKey","addEventListener","shouldFocusEditor","force","_this$state2","stopReset","reduce","s","p","toObject","newValue","Value","fromJSON","toJSON","me","charactersLimit","limit","handlePlugins","v","calcRegex","endsWith","match","parseInt","isNaN","object","last","nodes","parent","getParent","Block","pos","_ref3","_asyncToGenerator2","_regenerator","mark","_callee","dropContext","transfer","file","fragment","inline","range","ch","_change$value","_document","selection","startBlock","defaultBlock","defaultMarks","frag","_t","wrap","_context","prev","next","getEventTransfer","files","abrupt","getBase64","sent","Inline","create","isVoid","loading","getEventRange","select","insertInline","InsertImageHandler","fileChosen","insertFragment","getInsertMarksAtRange","Plain","deserialize","stop","_x","_x2","_x3","placeholder","size","isEmpty","contentEditable","style","display","width","maxWidth","whiteSpace","opacity","pointerEvents","userSelect","React","createRef","handleToolbarFocus","handleToolbarBlur","onResize","debounce","_inherits2","_createClass2","_this2","toolbarContainsFocus","componentDidMount","_this$props$className","_this3","onRef","isResponseAreaEditor","includes","responseAreaEditor","setAttribute","autoFocus","UNSAFE_componentWillReceiveProps","nextProps","_nextProps$value","_this$props$value","_this$state3","isEqual","differentCharacterProps","differentMathMlProps","differentImageMaxDimensionsProps","equals","componentDidUpdate","prevProps","zeroWidthEls","querySelectorAll","Array","from","el","minWidth","componentWillUnmount","buildSizeStyle","_this$props","minHeight","height","maxHeight","valueToSize","render","_this4","_value$document","_this$props2","disabled","spellCheck","highlightShape","onKeyDown","_ref4","showParagraphs","separateParagraphs","otherPluginProps","_objectWithoutProperties2","_this$state4","sizeStyle","wrapperClassNames","classNames","withBg","toolbarOnTop","StyledEditorWrapper","id","StyledUploadingMessage","StyledSlateEditor","noPadding","showParagraph","separateParagraph","innerRef","slateEditor","editorRef","onToolbarFocus","onToolbarBlur","getFocusedValue","onDrop","onDropPaste","onPaste","normalize","readOnly","autoCorrect","renderPlaceholder","onDataChange","changeData","Component","PropTypes","bool","func","isRequired","any","SlateTypes","shape","number","oneOfType","string","isEditor","oneOf","names","arrayOf","rules","language","characterIcon","characters","values","allValid","every","ALL_PLUGINS","Error","join","styled","_ref6","theme","backgroundColor","marginTop","top","left","transform","tableLayout","borderCollapse","color","background","borderTop","padding","border","content","fontSize","marginBottom","_default"],"sources":["../src/editor.jsx"],"sourcesContent":["import React from 'react';\nimport { Editor as SlateEditor, findNode, getEventRange, getEventTransfer } from 'slate-react';\nimport SlateTypes from 'slate-prop-types';\nimport { Value, Block, Inline } from 'slate';\nimport Plain from 'slate-plain-serializer';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash/debounce';\nimport isEqual from 'lodash/isEqual';\nimport classNames from 'classnames';\nimport debug from 'debug';\nimport { styled } from '@mui/material/styles';\n\nimport { color } from '@pie-lib/render-ui';\nimport AlertDialog from '../../config-ui/src/alert-dialog';\nimport { PreviewPrompt } from '@pie-lib/render-ui';\n\nimport { getBase64, htmlToValue } from './serialization';\nimport InsertImageHandler from './plugins/image/insert-image-handler';\nimport * as serialization from './serialization';\nimport { buildPlugins, ALL_PLUGINS, DEFAULT_PLUGINS } from './plugins';\n\nexport { ALL_PLUGINS, DEFAULT_PLUGINS, serialization };\n\nconst log = debug('editable-html:editor');\n\nconst defaultToolbarOpts = {\n position: 'bottom',\n alignment: 'left',\n alwaysVisible: false,\n showDone: true,\n doneOn: 'blur',\n};\n\nconst defaultResponseAreaProps = {\n options: {},\n respAreaToolbar: () => {},\n onHandleAreaChange: () => {},\n};\n\nconst defaultLanguageCharactersProps = [];\n\nconst createToolbarOpts = (toolbarOpts, error, isHtmlMode) => {\n return {\n ...defaultToolbarOpts,\n ...toolbarOpts,\n error,\n isHtmlMode,\n };\n};\n\n/**\n * The maximum number of characters the editor can support\n * @type {number}\n */\nconst MAX_CHARACTERS_LIMIT = 1000000;\n\nexport class Editor extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n editorRef: PropTypes.func.isRequired,\n error: PropTypes.any,\n onRef: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyDown: PropTypes.func,\n focus: PropTypes.func.isRequired,\n value: SlateTypes.value.isRequired,\n imageSupport: PropTypes.object,\n mathMlOptions: PropTypes.shape({\n mmlOutput: PropTypes.bool,\n mmlEditing: PropTypes.bool,\n }),\n disableImageAlignmentButtons: PropTypes.bool,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func,\n }),\n charactersLimit: PropTypes.number,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxWidth: 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 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 // customPlugins should be inside pluginProps (a property inside pluginProps)\n // customPlugins: PropTypes.arrayOf(\n // PropTypes.shape({\n // event: PropTypes.string,\n // icon: PropTypes.string,\n // iconType: PropTypes.string,\n // iconAlt: PropTypes.string\n // }),\n // ),\n placeholder: PropTypes.string,\n isEditor: PropTypes.bool,\n responseAreaProps: PropTypes.shape({\n type: PropTypes.oneOf([\n 'explicit-constructed-response',\n 'inline-dropdown',\n 'drag-in-the-blank',\n 'math-templated',\n ]),\n options: PropTypes.object,\n respAreaToolbar: PropTypes.func,\n onHandleAreaChange: PropTypes.func,\n maxResponseAreas: PropTypes.number,\n error: PropTypes.any,\n }),\n extraCSSRules: PropTypes.shape({\n names: PropTypes.arrayOf(PropTypes.string),\n rules: PropTypes.string,\n }),\n languageCharactersProps: PropTypes.arrayOf(\n PropTypes.shape({\n language: PropTypes.string,\n characterIcon: PropTypes.string,\n characters: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)),\n }),\n ),\n runSerializationOnMarkup: PropTypes.func,\n toolbarOpts: PropTypes.shape({\n position: PropTypes.oneOf(['bottom', 'top']),\n alignment: PropTypes.oneOf(['left', 'right']),\n alwaysVisible: PropTypes.bool,\n showDone: PropTypes.bool,\n doneOn: PropTypes.string,\n minWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n }),\n activePlugins: PropTypes.arrayOf((values) => {\n const allValid = values.every((v) => ALL_PLUGINS.includes(v));\n\n return !allValid && new Error(`Invalid values: ${values}, values must be one of [${ALL_PLUGINS.join(',')}]`);\n }),\n className: PropTypes.string,\n maxImageWidth: PropTypes.number,\n maxImageHeight: PropTypes.number,\n };\n\n static defaultProps = {\n disableUnderline: true,\n onFocus: () => {},\n onBlur: () => {},\n onKeyDown: () => {},\n runSerializationOnMarkup: () => {},\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n toolbarOpts: defaultToolbarOpts,\n responseAreaProps: defaultResponseAreaProps,\n languageCharactersProps: defaultLanguageCharactersProps,\n extraCSSRules: null,\n isEditor: false,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n value: props.value,\n toolbarOpts: createToolbarOpts(props.toolbarOpts, props.error),\n pendingImages: [],\n isHtmlMode: false,\n isEditedInHtmlMode: false,\n focusToolbar: false,\n dialog: {\n open: false,\n },\n };\n\n this.keyPadCharacterRef = React.createRef();\n this.doneButtonRef = React.createRef();\n this.keypadInteractionDetected = false;\n\n this.toggleHtmlMode = this.toggleHtmlMode.bind(this);\n this.handleToolbarFocus = this.handleToolbarFocus.bind(this);\n this.handleToolbarBlur = this.handleToolbarBlur.bind(this);\n\n this.onResize = debounce(() => {\n if (!this.state.isHtmlMode && props.onChange) {\n props.onChange(this.state.value, true);\n }\n }, 50);\n\n this.handlePlugins(this.props);\n }\n\n handleToolbarFocus() {\n if (this.state.focusToolbar) {\n return;\n }\n\n this.setState({ focusToolbar: true });\n }\n\n setKeypadInteraction = (interacted) => {\n this.keypadInteractionDetected = interacted;\n };\n\n handleToolbarBlur() {\n setTimeout(() => {\n if (!this.toolbarContainsFocus()) {\n this.setState({ focusToolbar: false });\n }\n }, 0);\n }\n\n toolbarContainsFocus() {\n if (!this.toolbarRef) return false;\n const toolbarElement = this.toolbarRef;\n const activeElement = document.activeElement;\n\n return toolbarElement && toolbarElement.contains(activeElement);\n }\n\n handleDialog = (open, extraDialogProps = {}, callback) => {\n this.setState(\n {\n dialog: {\n open,\n ...extraDialogProps,\n },\n },\n callback,\n );\n };\n\n toggleHtmlMode = () => {\n this.setState(\n (prevState) => ({\n isHtmlMode: !prevState.isHtmlMode,\n isEditedInHtmlMode: false,\n }),\n () => {\n const { error } = this.props;\n const { toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(toolbarOpts, error, this.state.isHtmlMode);\n this.setState({\n toolbarOpts: newToolbarOpts,\n });\n },\n );\n };\n\n handlePlugins = (props) => {\n const normalizedResponseAreaProps = {\n ...defaultResponseAreaProps,\n ...props.responseAreaProps,\n };\n\n const htmlPluginOpts = {\n currentValue: this.props.value,\n isHtmlMode: this.state.isHtmlMode,\n isEditedInHtmlMode: this.state.isEditedInHtmlMode,\n toggleHtmlMode: this.toggleHtmlMode,\n handleAlertDialog: this.handleDialog,\n };\n let { customPlugins } = props.pluginProps || {};\n customPlugins = customPlugins || [];\n\n this.plugins = buildPlugins(props.activePlugins, customPlugins, {\n math: {\n onClick: this.onMathClick,\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur,\n ...props.mathMlOptions,\n },\n textAlign: {\n getValue: () => this.state.value,\n onChange: this.onChange,\n },\n html: htmlPluginOpts,\n extraCSSRules: props.extraCSSRules || {},\n image: {\n disableImageAlignmentButtons: props.disableImageAlignmentButtons,\n onDelete:\n props.imageSupport &&\n props.imageSupport.delete &&\n ((node, done) => {\n const src = node.data.get('src');\n\n props.imageSupport.delete(src, (e) => {\n const newPendingImages = this.state.pendingImages.filter((img) => img.key !== node.key);\n const { scheduled: oldScheduled } = this.state;\n const newState = {\n pendingImages: newPendingImages,\n scheduled: oldScheduled && newPendingImages.length === 0 ? false : oldScheduled,\n };\n\n this.setState(newState, () => done(e, this.state.value));\n });\n }),\n insertImageRequested:\n props.imageSupport &&\n ((addedImage, getHandler) => {\n const { pendingImages } = this.state;\n const onFinish = (result) => {\n let cb;\n\n if (this.state.scheduled && result) {\n // finish editing only on success\n cb = this.onEditingDone.bind(this);\n }\n\n const newPendingImages = this.state.pendingImages.filter((img) => img.key !== addedImage.key);\n const newState = {\n pendingImages: newPendingImages,\n };\n\n if (newPendingImages.length === 0) {\n newState.scheduled = false;\n }\n\n this.setState(newState, cb);\n };\n const callback = () => {\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(onFinish, () => this.state.value);\n props.imageSupport.add(handler);\n };\n\n this.setState(\n {\n pendingImages: [...pendingImages, addedImage],\n },\n callback,\n );\n }),\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur,\n maxImageWidth: props.maxImageWidth,\n maxImageHeight: 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, focusToolbar: false });\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 keyPadCharacterRef: this.keyPadCharacterRef,\n setKeypadInteraction: this.setKeypadInteraction,\n media: {\n focus: this.focus,\n createChange: () => this.state.value.change(),\n onChange: this.onChange,\n uploadSoundSupport: props.uploadSoundSupport,\n },\n });\n\n if (props.mathMlOptions.mmlOutput || props.mathMlOptions.mmlEditing) {\n this.props.runSerializationOnMarkup();\n }\n };\n\n componentDidMount() {\n // onRef is needed to get the ref of the component\n this.props.onRef(this);\n\n window.addEventListener('resize', this.onResize);\n\n const isResponseAreaEditor = this.props.className?.includes('response-area-editor');\n\n if (isResponseAreaEditor && this.editor) {\n const responseAreaEditor = document.querySelector(`[data-key=\"${this.editor.value.document.key}\"]`);\n\n if (responseAreaEditor) {\n responseAreaEditor.setAttribute('aria-label', 'Answer');\n }\n }\n\n if (this.editor && this.props.autoFocus) {\n Promise.resolve().then(() => {\n if (this.editor) {\n const editorDOM = document.querySelector(`[data-key=\"${this.editor.value.document.key}\"]`);\n\n this.editor.focus();\n\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n });\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { isHtmlMode, toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(nextProps.toolbarOpts, nextProps.error, isHtmlMode);\n\n if (!isEqual(newToolbarOpts, toolbarOpts)) {\n this.setState({\n toolbarOpts: newToolbarOpts,\n });\n }\n\n const differentCharacterProps = !isEqual(nextProps.languageCharactersProps, this.props.languageCharactersProps);\n const differentMathMlProps = !isEqual(nextProps.mathMlOptions, this.props.mathMlOptions);\n const differentImageMaxDimensionsProps =\n !isEqual(nextProps.maxImageWidth, this.props.maxImageWidth) ||\n !isEqual(nextProps.maxImageHeight, this.props.maxImageHeight);\n\n if (differentCharacterProps || differentMathMlProps || differentImageMaxDimensionsProps) {\n this.handlePlugins(nextProps);\n }\n\n if (!nextProps.value?.document?.equals(this.props.value?.document)) {\n this.setState({\n focus: false,\n value: nextProps.value,\n });\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n // The cursor is on a zero width element and when that is placed near void elements, it is not visible\n // so we increase the width to at least 2px in order for the user to see it\n\n // Trigger plugins and finish editing if:\n // 1. The 'isHtmlMode' state has been toggled.\n // 2. We're currently in 'isHtmlMode' and the editor value has been modified.\n if (\n this.state.isHtmlMode !== prevState.isHtmlMode ||\n (this.state.isHtmlMode && !prevState.isEditedInHtmlMode && this.state.isEditedInHtmlMode)\n ) {\n this.handlePlugins(this.props);\n }\n\n const zeroWidthEls = document.querySelectorAll('[data-slate-zero-width=\"z\"]');\n\n Array.from(zeroWidthEls).forEach((el) => {\n el.style.minWidth = '2px';\n el.style.display = 'inline-block';\n });\n }\n\n onPluginBlur = (e) => {\n log('[onPluginBlur]', e && e.relatedTarget);\n const target = e && e.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n log('[onPluginBlur] node: ', node);\n this.setState({ focusedNode: node }, () => {\n this.resetValue();\n });\n };\n\n onPluginFocus = (e) => {\n log('[onPluginFocus]', e && e.target);\n const target = e && e.target;\n if (target) {\n const node = findNode(target, this.state.value);\n log('[onPluginFocus] node: ', node);\n\n const stashedValue = this.state.stashedValue || this.state.value;\n this.setState({ focusedNode: node, stashedValue });\n } else {\n this.setState({ focusedNode: null });\n }\n this.stashValue();\n };\n\n onMathClick = (node) => {\n this.editor.change((c) => c.collapseToStartOf(node));\n this.setState({ selectedNode: node });\n };\n\n onEditingDone = () => {\n const { isHtmlMode, dialog, value, pendingImages } = this.state;\n\n // Handling HTML mode and dialog state\n if (isHtmlMode) {\n // Early return if HTML mode is enabled\n if (dialog?.open) return;\n\n const currentValue = htmlToValue(value.document.text);\n const previewText = this.renderHtmlPreviewContent();\n\n this.openHtmlModeConfirmationDialog(currentValue, previewText);\n return;\n }\n\n if (pendingImages.length) {\n // schedule image processing\n this.setState({ scheduled: true });\n return;\n }\n\n // Finalizing editing\n log('[onEditingDone]');\n this.setState({ pendingImages: [], stashedValue: null, focusedNode: null });\n log('[onEditingDone] value: ', this.state.value);\n this.props.onChange(this.state.value, true);\n };\n\n /**\n * Renders the HTML preview content to be displayed inside the dialog.\n * This content includes the edited HTML and a prompt for the user.\n */\n renderHtmlPreviewContent = () => {\n return (\n <div ref={(ref) => (this.elementRef = ref)}>\n <div>Preview of Edited Html:</div>\n {/* TODO: check if this works and we don't need to send style over to preview prompt */}\n <StyledPreviewText> \n <PreviewPrompt prompt={this.state.value.document.text} />\n </StyledPreviewText>\n <div>Would you like to save these changes ?</div>\n </div>\n );\n };\n\n /**\n * Opens a confirmation dialog in HTML mode, displaying the preview of the current HTML content\n * and offering options to save or continue editing.\n */\n openHtmlModeConfirmationDialog = (currentValue, previewText) => {\n this.setState({\n dialog: {\n open: true,\n title: 'Content Preview & Save',\n text: previewText,\n onConfirmText: 'Save changes',\n onCloseText: 'Continue editing',\n onConfirm: () => {\n this.handleHtmlModeSaveConfirmation(currentValue);\n },\n onClose: this.htmlModeContinueEditing,\n },\n });\n };\n\n /**\n * Handles the save confirmation action in HTML mode. This updates the value to the confirmed\n * content, updates value on props, and exits the HTML mode.\n * @param {string} currentValue - The confirmed value of the HTML content to save.\n */\n handleHtmlModeSaveConfirmation = (currentValue) => {\n this.setState({ value: currentValue });\n this.props.onChange(currentValue, true);\n this.handleDialog(false);\n this.toggleHtmlMode();\n };\n\n /**\n * Closes the dialog in HTML mode and allows the user to continue editing the html content.\n * This function is invoked when the user opts to not save the current changes.\n */\n htmlModeContinueEditing = () => {\n this.handleDialog(false);\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 relatedTarget = event.relatedTarget;\n const toolbarElement = this.toolbarRef && relatedTarget?.closest(`[class*=\"${this.toolbarRef.className}\"]`);\n\n // Check if relatedTarget is a done button\n const isRawDoneButton =\n this.doneButtonRef && relatedTarget?.closest(`[class*=\"${this.doneButtonRef.current?.className}\"]`);\n\n // Skip onBlur handling if relatedTarget is a button from the KeyPad characters\n this.skipBlurHandling = this.keypadInteractionDetected && relatedTarget !== null;\n\n if (toolbarElement && !isRawDoneButton && !this.state.focusToolbar) {\n this.setState({\n focusToolbar: true,\n });\n }\n\n const node = relatedTarget ? findNode(relatedTarget, this.state.value) : null;\n\n log('[onBlur] node: ', node);\n\n return new Promise((resolve) => {\n if (!this.skipBlurHandling) {\n this.setKeypadInteraction(false);\n this.setState(\n { preBlurValue: this.state.value, focusedNode: !node ? null : node },\n this.handleBlur.bind(this, resolve),\n );\n }\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 = (event, change) =>\n new Promise((resolve) => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n const isTouchDevice =\n typeof window !== 'undefined' && ('ontouchstart' in window || navigator?.maxTouchPoints > 0);\n\n log('[onFocus]', document.activeElement);\n\n if (this.keypadInteractionDetected && this.__TEMPORARY_CHANGE_DATA) {\n this.__TEMPORARY_CHANGE_DATA = null;\n }\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 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 // Added for accessibility: Ensures the editor gains focus when tabbed to for improved keyboard navigation\n const shouldFocusEditor = !this.keypadInteractionDetected && !isTouchDevice;\n\n if (shouldFocusEditor) {\n change?.focus();\n }\n\n resolve();\n });\n\n stashValue = () => {\n log('[stashValue]');\n\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 window.me = this;\n\n const { value } = change;\n const { charactersLimit } = this.props;\n let limit = charactersLimit;\n if (!limit || limit > MAX_CHARACTERS_LIMIT) {\n limit = MAX_CHARACTERS_LIMIT;\n }\n\n if (value && value.document && value.document.text && value.document.text.length > limit) {\n return;\n }\n\n // Mark the editor as edited when in HTML mode and its content has changed.\n // This status will later be used to decide whether to prompt a warning to the user when exiting HTML mode.\n const isEditedInHtmlMode = !this.state.isHtmlMode\n ? false\n : this.state.value.document.text !== value.document.text\n ? true\n : this.state.isEditedInHtmlMode;\n\n if (isEditedInHtmlMode != this.state.isEditedInHtmlMode) {\n this.handlePlugins(this.props);\n }\n\n this.setState({ value, isEditedInHtmlMode }, () => {\n log('[onChange], call done()');\n\n if (done) {\n done();\n }\n });\n };\n\n getFocusedValue = () => {\n if (this.state.value.isFocused) {\n return this.state.value;\n }\n\n return this.state.preBlurValue;\n };\n\n valueToSize = (v) => {\n if (!v) {\n return;\n }\n const calcRegex = /^calc\\((.*)\\)$/;\n\n if (typeof v === 'string') {\n if (v.endsWith('%')) {\n return undefined;\n } else if (\n v.endsWith('px') ||\n v.endsWith('vh') ||\n v.endsWith('vw') ||\n v.endsWith('ch') ||\n v.endsWith('em') ||\n v.match(calcRegex)\n ) {\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\n buildSizeStyle() {\n const { minWidth, width, maxWidth, minHeight, height, maxHeight } = this.props;\n\n return {\n width: this.valueToSize(width),\n minWidth: this.valueToSize(minWidth),\n maxWidth: this.valueToSize(maxWidth),\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(\n inline,\n () => {},\n () => this.state.value,\n this.onChange,\n true,\n );\n handler.fileChosen(file);\n this.props.imageSupport.add(handler);\n } catch (err) {\n log('[onDropPaste] error: ', err);\n }\n } else if (type === 'fragment') {\n change.insertFragment(fragment);\n } else if (type === 'text' || type === 'html') {\n if (!text) {\n return;\n }\n const {\n value: { document, selection, startBlock },\n } = change;\n\n if (startBlock.isVoid) {\n return;\n }\n\n const defaultBlock = startBlock;\n const defaultMarks = document.getInsertMarksAtRange(selection);\n const frag = Plain.deserialize(text, {\n defaultBlock,\n defaultMarks,\n }).document;\n change.insertFragment(frag);\n }\n };\n\n renderPlaceholder = (props) => {\n const { editor } = props;\n const { document } = editor.value;\n\n if (!editor.props.placeholder || document.text !== '' || document.nodes.size !== 1 || !document.isEmpty) {\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 className,\n placeholder,\n pluginProps,\n onKeyDown,\n } = this.props;\n // We don't want to send customPlugins to slate.\n // Not sure if they would do any harm, but I think it's better to not send them.\n // We use custom plugins to be able to add custom buttons\n // eslint-disable-next-line no-unused-vars\n const { customPlugins, showParagraphs, separateParagraphs, ...otherPluginProps } = pluginProps || {};\n\n const { value, focusedNode, toolbarOpts, dialog, scheduled } = this.state;\n\n log('[render] value: ', value);\n const sizeStyle = this.buildSizeStyle();\n const wrapperClassNames = classNames(\n {\n withBg: highlightShape,\n toolbarOnTop: toolbarOpts.alwaysVisible && toolbarOpts.position === 'top',\n scheduled: scheduled,\n },\n className,\n );\n\n return (\n <StyledEditorWrapper\n ref={(ref) => (this.wrapperRef = ref)}\n style={{ width: sizeStyle.width, minWidth: sizeStyle.minWidth, maxWidth: sizeStyle.maxWidth }}\n className={wrapperClassNames}\n id={`editor-${value?.document?.key}`}\n >\n {scheduled && <StyledUploadingMessage>Uploading image and then saving...</StyledUploadingMessage>}\n <StyledSlateEditor\n className={classNames(\n {\n noPadding: toolbarOpts?.noPadding,\n showParagraph: showParagraphs && !showParagraphs.disabled,\n separateParagraph: separateParagraphs && !separateParagraphs.disabled,\n },\n )}\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 doneButtonRef={this.doneButtonRef}\n value={value}\n focusToolbar={this.state.focusToolbar}\n onToolbarFocus={this.handleToolbarFocus}\n onToolbarBlur={this.handleToolbarBlur}\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 style={{\n minHeight: sizeStyle.minHeight,\n height: sizeStyle.height,\n maxHeight: sizeStyle.maxHeight,\n }}\n pluginProps={otherPluginProps}\n toolbarOpts={toolbarOpts}\n placeholder={placeholder}\n renderPlaceholder={this.renderPlaceholder}\n onDataChange={this.changeData}\n />\n </StyledSlateEditor>\n <AlertDialog\n open={dialog.open}\n title={dialog.title}\n text={dialog.text}\n onClose={dialog.onClose}\n onConfirm={dialog.onConfirm}\n onConfirmText={dialog.onConfirmText}\n onCloseText={dialog.onCloseText}\n />\n </StyledEditorWrapper>\n );\n }\n}\n\n// TODO color - hardcoded gray background and keypad colors will need to change too\nconst StyledEditorWrapper = styled('div')(({ theme, scheduled }) => ({\n '&.withBg': {\n backgroundColor: 'rgba(0,0,0,0.06)',\n },\n '&.scheduled': {\n opacity: 0.5,\n pointerEvents: 'none',\n position: 'relative',\n },\n '&.toolbarOnTop': {\n marginTop: '45px',\n },\n}));\n\nconst StyledUploadingMessage = styled('div')({\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n});\n\nconst StyledSlateEditor = styled('div')(() => ({\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 '&.showParagraph': {\n // a div that has a div after it\n '& > div:has(+ div)::after': {\n display: 'block',\n content: '\"¶\"',\n fontSize: '1em',\n color: '#146EB3',\n },\n },\n '&.separateParagraph': {\n // a div that has a div after it\n '& > div:has(+ div)': {\n marginBottom: '1em',\n },\n },\n '&.noPadding': {\n padding: '0 !important',\n },\n}));\n\nconst StyledPreviewText = styled('div')({\n marginBottom: '36px',\n marginTop: '6px',\n padding: '20px',\n backgroundColor: 'rgba(0,0,0,0.06)',\n});\n\nexport default Editor;\n"],"mappings":"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","ignoreList":[]}
|