diff --git a/app/components/SimpleEditor/Overlay.js b/app/components/SimpleEditor/Overlay.js new file mode 100644 index 0000000000000000000000000000000000000000..697ddb61af5062defb434f62d3d565c3a39644de --- /dev/null +++ b/app/components/SimpleEditor/Overlay.js @@ -0,0 +1,48 @@ +import { ProseEditorOverlayTools, documentHelpers } from 'substance' +import { each, includes, keys } from 'lodash' + +class Overlay extends ProseEditorOverlayTools { + render ($$) { + const surface = this.getSurface() + const session = this.context.documentSession + const sel = session.getSelection() + const comment = documentHelpers.getPropertyAnnotationsForSelection( + session.getDocument(), + sel, + { type: 'commnent' } + ) + + if (surface && surface.props.canNotEdit && typeof comment[0] === 'undefined') { + const commandStates = this.context.commandManager.getCommandStates() + each(keys(commandStates), (key) => { + const allowed = ['comment', 'save'] + if (!includes(allowed, key)) commandStates[key].disabled = true + }) + } + + let el = $$('div').addClass(this.getClassNames()) + let activeTools = this.getActiveTools() + + if (activeTools.length > 0) { + let toolsEl = $$('div').addClass('se-active-tools') + activeTools.forEach(tool => { + toolsEl.append( + $$(tool.Class, tool.toolProps).ref(tool.toolProps.name) + ) + }) + el.append(toolsEl) + } + return el + } + + getSurface () { + const surfaceManager = this.context.surfaceManager + return surfaceManager.getSurface('body') + } + + getClassNames () { + return 'sc-prose-editor-overlay-tools' + } +} + +export default Overlay