collaborative-ui
Version:
React component library for building real-time collaborative editing applications.
31 lines (30 loc) • 1.28 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.JsonCrdtNodePreviewById = exports.JsonCrdtNodePreview = void 0;
const tslib_1 = require("tslib");
const json_crdt_1 = require("json-joy/lib/json-crdt");
const React = tslib_1.__importStar(require("react"));
const NodeCard_1 = require("./NodeCard");
const StrNodeCard_1 = require("./StrNodeCard");
const JsonCrdtNodePreview = (props) => {
if (props.node.name() === 'str') {
return React.createElement(StrNodeCard_1.StrNodeCard, { ...props });
}
return React.createElement(NodeCard_1.NodeCard, { ...props });
};
exports.JsonCrdtNodePreview = JsonCrdtNodePreview;
const getNode = (model, nodeId) => {
if (nodeId === '0.0')
return model.root;
const [sid, time] = nodeId.split('.');
const id = new json_crdt_1.Timestamp(Number(sid), Number(time));
const node = nodeId ? (model.index.get(id) ?? null) : null;
return node;
};
const JsonCrdtNodePreviewById = ({ model, id, ...rest }) => {
const node = React.useMemo(() => getNode(model, id), [model, id]);
if (!node)
return null;
return React.createElement(exports.JsonCrdtNodePreview, { ...rest, model: model, node: node });
};
exports.JsonCrdtNodePreviewById = JsonCrdtNodePreviewById;
;