UNPKG

collaborative-ui

Version:

React component library for building real-time collaborative editing applications.

31 lines (30 loc) 1.28 kB
"use strict"; 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;