UNPKG

@atlaskit/editor-core

Version:

A package contains Atlassian editor core functionality

46 lines 2.09 kB
import * as React from 'react'; import * as ReactDOM from 'react-dom'; import ReactPMNode from './ui/prosemirror-node'; var NodeViewElem = (function () { function NodeViewElem(node, view, getPos, providerFactory, reactNodeViewComponents, isBlockNodeView) { this.nodeTypeName = node.type.name; this.view = view; this.getPos = getPos; this.providerFactory = providerFactory; this.reactNodeViewComponents = reactNodeViewComponents; var elementType = isBlockNodeView ? 'div' : 'span'; this.domRef = document.createElement(elementType); this.renderReactComponent(node); } Object.defineProperty(NodeViewElem.prototype, "dom", { get: function () { return this.domRef; }, enumerable: true, configurable: true }); NodeViewElem.prototype.update = function (node) { // @see https://github.com/ProseMirror/prosemirror/issues/648 var isValidUpdate = this.nodeTypeName === node.type.name; if (isValidUpdate) { this.renderReactComponent(node); } return isValidUpdate; }; NodeViewElem.prototype.destroy = function () { ReactDOM.unmountComponentAtNode(this.domRef); this.domRef = undefined; }; NodeViewElem.prototype.renderReactComponent = function (node) { var _a = this, getPos = _a.getPos, providerFactory = _a.providerFactory, reactNodeViewComponents = _a.reactNodeViewComponents, view = _a.view; ReactDOM.render(React.createElement(ReactPMNode, { node: node, getPos: getPos, view: view, providerFactory: providerFactory, components: reactNodeViewComponents }), this.domRef); }; return NodeViewElem; }()); export default function nodeViewFactory(providerFactory, reactNodeViewComponents, isBlockNodeView) { if (isBlockNodeView === void 0) { isBlockNodeView = false; } return function (node, view, getPos) { return new NodeViewElem(node, view, getPos, providerFactory, reactNodeViewComponents, isBlockNodeView); }; } //# sourceMappingURL=factory.js.map