@slate-sheikah/bridge
Version:
slate-sheikah bridge: Bridge components for slate-sheikah. Slate + Automerge + Sockets
49 lines (34 loc) • 5.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getChildren = exports.getParent = exports.getParentPath = exports.getTarget = exports.isTree = void 0;
const isTree = node => Boolean(node === null || node === void 0 ? void 0 : node.children);
exports.isTree = isTree;
const getTarget = (doc, path) => {
const iterate = (current, idx) => {
if (!(isTree(current) || current[idx])) {
throw new TypeError("path ".concat(path.toString(), " does not match tree ").concat(JSON.stringify(current)));
}
return current[idx] || (current === null || current === void 0 ? void 0 : current.children[idx]);
};
return path.reduce(iterate, doc);
};
exports.getTarget = getTarget;
const getParentPath = function getParentPath(path) {
let level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
if (level > path.length) {
throw new TypeError('requested ancestor is higher than root');
}
return [path[path.length - level], path.slice(0, path.length - level)];
};
exports.getParentPath = getParentPath;
const getParent = function getParent(doc, path) {
let level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
const [idx, parentPath] = getParentPath(path, level);
return [getTarget(doc, parentPath), idx];
};
exports.getParent = getParent;
const getChildren = node => node.children || node;
exports.getChildren = getChildren;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRoL2luZGV4LnRzIl0sIm5hbWVzIjpbImlzVHJlZSIsIm5vZGUiLCJCb29sZWFuIiwiY2hpbGRyZW4iLCJnZXRUYXJnZXQiLCJkb2MiLCJwYXRoIiwiaXRlcmF0ZSIsImN1cnJlbnQiLCJpZHgiLCJUeXBlRXJyb3IiLCJ0b1N0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZWR1Y2UiLCJnZXRQYXJlbnRQYXRoIiwibGV2ZWwiLCJsZW5ndGgiLCJzbGljZSIsImdldFBhcmVudCIsInBhcmVudFBhdGgiLCJnZXRDaGlsZHJlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlPLE1BQU1BLE1BQU0sR0FBSUMsSUFBRCxJQUErQkMsT0FBTyxDQUFDRCxJQUFELGFBQUNBLElBQUQsdUJBQUNBLElBQUksQ0FBRUUsUUFBUCxDQUFyRDs7OztBQUVBLE1BQU1DLFNBQVMsR0FBRyxDQUFDQyxHQUFELEVBQTJCQyxJQUEzQixLQUEwQztBQUNqRSxRQUFNQyxPQUFPLEdBQUcsQ0FBQ0MsT0FBRCxFQUFlQyxHQUFmLEtBQStCO0FBQzdDLFFBQUksRUFBRVQsTUFBTSxDQUFDUSxPQUFELENBQU4sSUFBbUJBLE9BQU8sQ0FBQ0MsR0FBRCxDQUE1QixDQUFKLEVBQXdDO0FBQ3RDLFlBQU0sSUFBSUMsU0FBSixnQkFDSUosSUFBSSxDQUFDSyxRQUFMLEVBREosa0NBQzJDQyxJQUFJLENBQUNDLFNBQUwsQ0FBZUwsT0FBZixDQUQzQyxFQUFOO0FBR0Q7O0FBRUQsV0FBT0EsT0FBTyxDQUFDQyxHQUFELENBQVAsS0FBZ0JELE9BQWhCLGFBQWdCQSxPQUFoQix1QkFBZ0JBLE9BQU8sQ0FBRUwsUUFBVCxDQUFrQk0sR0FBbEIsQ0FBaEIsQ0FBUDtBQUNELEdBUkQ7O0FBVUEsU0FBT0gsSUFBSSxDQUFDUSxNQUFMLENBQVlQLE9BQVosRUFBcUJGLEdBQXJCLENBQVA7QUFDRCxDQVpNOzs7O0FBY0EsTUFBTVUsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixDQUMzQlQsSUFEMkIsRUFHUjtBQUFBLE1BRG5CVSxLQUNtQix1RUFESCxDQUNHOztBQUNuQixNQUFJQSxLQUFLLEdBQUdWLElBQUksQ0FBQ1csTUFBakIsRUFBeUI7QUFDdkIsVUFBTSxJQUFJUCxTQUFKLENBQWMsd0NBQWQsQ0FBTjtBQUNEOztBQUVELFNBQU8sQ0FBQ0osSUFBSSxDQUFDQSxJQUFJLENBQUNXLE1BQUwsR0FBY0QsS0FBZixDQUFMLEVBQTRCVixJQUFJLENBQUNZLEtBQUwsQ0FBVyxDQUFYLEVBQWNaLElBQUksQ0FBQ1csTUFBTCxHQUFjRCxLQUE1QixDQUE1QixDQUFQO0FBQ0QsQ0FUTTs7OztBQVdBLE1BQU1HLFNBQVMsR0FBRyxTQUFaQSxTQUFZLENBQ3ZCZCxHQUR1QixFQUV2QkMsSUFGdUIsRUFJTDtBQUFBLE1BRGxCVSxLQUNrQix1RUFEVixDQUNVO0FBQ2xCLFFBQU0sQ0FBQ1AsR0FBRCxFQUFNVyxVQUFOLElBQW9CTCxhQUFhLENBQUNULElBQUQsRUFBT1UsS0FBUCxDQUF2QztBQUVBLFNBQU8sQ0FBQ1osU0FBUyxDQUFDQyxHQUFELEVBQU1lLFVBQU4sQ0FBVixFQUE2QlgsR0FBN0IsQ0FBUDtBQUNELENBUk07Ozs7QUFVQSxNQUFNWSxXQUFXLEdBQUlwQixJQUFELElBQWVBLElBQUksQ0FBQ0UsUUFBTCxJQUFpQkYsSUFBcEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50LCBQYXRoLCBCYXNlRWRpdG9yIH0gZnJvbSAnc2xhdGUnXG5cbmltcG9ydCB7IFN5bmNWYWx1ZSB9IGZyb20gJy4uL21vZGVsJ1xuXG5leHBvcnQgY29uc3QgaXNUcmVlID0gKG5vZGU6IEJhc2VFZGl0b3IpOiBib29sZWFuID0+IEJvb2xlYW4obm9kZT8uY2hpbGRyZW4pXG5cbmV4cG9ydCBjb25zdCBnZXRUYXJnZXQgPSAoZG9jOiBTeW5jVmFsdWUgfCBFbGVtZW50LCBwYXRoOiBQYXRoKSA9PiB7XG4gIGNvbnN0IGl0ZXJhdGUgPSAoY3VycmVudDogYW55LCBpZHg6IG51bWJlcikgPT4ge1xuICAgIGlmICghKGlzVHJlZShjdXJyZW50KSB8fCBjdXJyZW50W2lkeF0pKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICBgcGF0aCAke3BhdGgudG9TdHJpbmcoKX0gZG9lcyBub3QgbWF0Y2ggdHJlZSAke0pTT04uc3RyaW5naWZ5KGN1cnJlbnQpfWBcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudFtpZHhdIHx8IGN1cnJlbnQ/LmNoaWxkcmVuW2lkeF1cbiAgfVxuXG4gIHJldHVybiBwYXRoLnJlZHVjZShpdGVyYXRlLCBkb2MpXG59XG5cbmV4cG9ydCBjb25zdCBnZXRQYXJlbnRQYXRoID0gKFxuICBwYXRoOiBQYXRoLFxuICBsZXZlbDogbnVtYmVyID0gMVxuKTogW251bWJlciwgUGF0aF0gPT4ge1xuICBpZiAobGV2ZWwgPiBwYXRoLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlcXVlc3RlZCBhbmNlc3RvciBpcyBoaWdoZXIgdGhhbiByb290JylcbiAgfVxuXG4gIHJldHVybiBbcGF0aFtwYXRoLmxlbmd0aCAtIGxldmVsXSwgcGF0aC5zbGljZSgwLCBwYXRoLmxlbmd0aCAtIGxldmVsKV1cbn1cblxuZXhwb3J0IGNvbnN0IGdldFBhcmVudCA9IChcbiAgZG9jOiBTeW5jVmFsdWUgfCBFbGVtZW50LFxuICBwYXRoOiBQYXRoLFxuICBsZXZlbCA9IDFcbik6IFthbnksIG51bWJlcl0gPT4ge1xuICBjb25zdCBbaWR4LCBwYXJlbnRQYXRoXSA9IGdldFBhcmVudFBhdGgocGF0aCwgbGV2ZWwpXG5cbiAgcmV0dXJuIFtnZXRUYXJnZXQoZG9jLCBwYXJlbnRQYXRoKSwgaWR4XVxufVxuXG5leHBvcnQgY29uc3QgZ2V0Q2hpbGRyZW4gPSAobm9kZTogYW55KSA9PiBub2RlLmNoaWxkcmVuIHx8IG5vZGVcbiJdfQ==