@atlaskit/editor-core
Version:
A package contains Atlassian editor core functionality
49 lines • 2.21 kB
JavaScript
;
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