@atlaskit/editor-plugin-local-id
Version:
LocalId plugin for @atlaskit/editor-core
47 lines • 1.05 kB
JavaScript
export function findNodeByLocalId(tr, localId) {
let result;
tr.doc.descendants((node, pos) => {
if (result) {
return false;
}
if (node.attrs.localId === localId) {
result = {
node,
pos
};
}
return result === undefined;
});
return result;
}
export const replaceNode = api => ({
localId,
value
}) => {
var _api$core$actions$exe;
const nodeWithPos = getNode(api)({
localId
});
if (!nodeWithPos) {
return false;
}
const {
pos,
node
} = nodeWithPos;
return (_api$core$actions$exe = api === null || api === void 0 ? void 0 : api.core.actions.execute(({
tr
}) => tr.replaceWith(pos, pos + node.nodeSize, value).scrollIntoView())) !== null && _api$core$actions$exe !== void 0 ? _api$core$actions$exe : false;
};
export const getNode = api => ({
localId
}) => {
let result;
api === null || api === void 0 ? void 0 : api.core.actions.execute(({
tr
}) => {
result = findNodeByLocalId(tr, localId);
return null;
});
return result;
};