UNPKG

@atlaskit/editor-core

Version:

A package contains Atlassian editor core functionality

49 lines 2.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var React = require("react"); var ReactDOM = require("react-dom"); var prosemirror_node_1 = require("./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(prosemirror_node_1.default, { node: node, getPos: getPos, view: view, providerFactory: providerFactory, components: reactNodeViewComponents }), this.domRef); }; return NodeViewElem; }()); 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); }; } exports.default = nodeViewFactory; //# sourceMappingURL=factory.js.map