@hmcts/media-viewer
Version:
49 lines • 7.54 kB
JavaScript
export const getBookmarkChildren = (bookmarks) => {
if (bookmarks) {
return bookmarks.reduce((childIds, bookmark) => {
if (bookmark.children && bookmark.children.length > 0) {
return [...childIds, bookmark.id, ...getBookmarkChildren(bookmark.children)];
}
return [...childIds, bookmark.id];
}, []);
}
else {
return [];
}
};
export const generateBookmarkEntities = (bookmarks) => {
return bookmarks.reduce((bookmarkEntities, bookmark) => Object.assign(bookmarkEntities, { [bookmark.id]: bookmark }), {});
};
const indexEntities = (entities) => {
const entityIds = Object.keys(entities);
for (let index = 0; entityIds.length > 0; index++) {
let keysToRemove = [];
entityIds.forEach(key => {
if (!entities[key].previous || !entityIds.includes(entities[key].previous.toString())) {
entities[key].index = index;
keysToRemove.push(key);
}
});
keysToRemove.forEach(key => entityIds.splice(entityIds.indexOf(key), 1));
keysToRemove = [];
}
};
export const generateBookmarkNodes = (entities) => {
const bookmarkEntities = JSON.parse(JSON.stringify(entities));
indexEntities(bookmarkEntities);
return Object.keys(bookmarkEntities).reduce((nodes, bookmarkId) => {
const bookmarkEntity = bookmarkEntities[bookmarkId];
if (bookmarkEntity.parent) {
const parentEntity = bookmarkEntities[bookmarkEntity.parent];
if (!parentEntity.children) {
parentEntity.children = [];
}
parentEntity.children[bookmarkEntity.index] = bookmarkEntity;
}
else {
nodes[bookmarkEntity.index] = bookmarkEntity;
}
return nodes;
}, []);
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va21hcmtzLXN0b3JlLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvc3RvcmUvYm9va21hcmtzLXN0b3JlLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsU0FBcUIsRUFBRSxFQUFFO0lBQzNELElBQUksU0FBUyxFQUFFLENBQUM7UUFDZCxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDN0MsSUFBSSxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN0RCxPQUFPLENBQUMsR0FBRyxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQy9FLENBQUM7WUFDRCxPQUFPLENBQUMsR0FBRyxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxTQUFxQixFQUE0QixFQUFFO0lBQzFGLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FDckIsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUM3QixNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFDOUQsRUFBRSxDQUFDLENBQUM7QUFDUixDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLFFBQW9DLEVBQUUsRUFBRTtJQUM3RCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDbEQsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUN0RixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDNUIsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekUsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxRQUFvQyxFQUFFLEVBQUU7SUFDNUUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM5RCxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNoQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUU7UUFDaEUsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEQsSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUIsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzNCLFlBQVksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQzdCLENBQUM7WUFDRCxZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxjQUFjLENBQUM7UUFDL0QsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLGNBQWMsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDVCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29rbWFyayB9IGZyb20gJy4uL3ZpZXdlcnMvcGRmLXZpZXdlci9zaWRlLWJhci9ib29rbWFya3MvYm9va21hcmtzLmludGVyZmFjZXMnO1xuXG5leHBvcnQgY29uc3QgZ2V0Qm9va21hcmtDaGlsZHJlbiA9IChib29rbWFya3M6IEJvb2ttYXJrW10pID0+IHtcbiAgaWYgKGJvb2ttYXJrcykge1xuICAgIHJldHVybiBib29rbWFya3MucmVkdWNlKChjaGlsZElkcywgYm9va21hcmspID0+IHtcbiAgICAgIGlmIChib29rbWFyay5jaGlsZHJlbiAmJiBib29rbWFyay5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBbLi4uY2hpbGRJZHMsIGJvb2ttYXJrLmlkLCAuLi5nZXRCb29rbWFya0NoaWxkcmVuKGJvb2ttYXJrLmNoaWxkcmVuKV07XG4gICAgICB9XG4gICAgICByZXR1cm4gWy4uLmNoaWxkSWRzLCBib29rbWFyay5pZF07XG4gICAgfSwgW10pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBbXTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlQm9va21hcmtFbnRpdGllcyA9IChib29rbWFya3M6IEJvb2ttYXJrW10pOiB7W2lkOiBzdHJpbmddOiBCb29rbWFya30gPT4ge1xuICByZXR1cm4gYm9va21hcmtzLnJlZHVjZShcbiAgICAoYm9va21hcmtFbnRpdGllcywgYm9va21hcmspID0+XG4gICAgICBPYmplY3QuYXNzaWduKGJvb2ttYXJrRW50aXRpZXMsIHsgW2Jvb2ttYXJrLmlkXTogYm9va21hcmsgfSksXG4gICAge30pO1xufTtcblxuY29uc3QgaW5kZXhFbnRpdGllcyA9IChlbnRpdGllczogeyBbaWQ6IHN0cmluZ106IEJvb2ttYXJrIH0pID0+IHtcbiAgY29uc3QgZW50aXR5SWRzID0gT2JqZWN0LmtleXMoZW50aXRpZXMpO1xuICBmb3IgKGxldCBpbmRleCA9IDA7IGVudGl0eUlkcy5sZW5ndGggPiAwOyBpbmRleCsrKSB7XG4gICAgbGV0IGtleXNUb1JlbW92ZSA9IFtdO1xuICAgIGVudGl0eUlkcy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoIWVudGl0aWVzW2tleV0ucHJldmlvdXMgfHwgIWVudGl0eUlkcy5pbmNsdWRlcyhlbnRpdGllc1trZXldLnByZXZpb3VzLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgIGVudGl0aWVzW2tleV0uaW5kZXggPSBpbmRleDtcbiAgICAgICAga2V5c1RvUmVtb3ZlLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBrZXlzVG9SZW1vdmUuZm9yRWFjaChrZXkgPT4gZW50aXR5SWRzLnNwbGljZShlbnRpdHlJZHMuaW5kZXhPZihrZXkpLCAxKSk7XG4gICAga2V5c1RvUmVtb3ZlID0gW107XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUJvb2ttYXJrTm9kZXMgPSAoZW50aXRpZXM6IHsgW2lkOiBzdHJpbmddOiBCb29rbWFyayB9KSA9PiB7XG4gIGNvbnN0IGJvb2ttYXJrRW50aXRpZXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGVudGl0aWVzKSk7XG4gIGluZGV4RW50aXRpZXMoYm9va21hcmtFbnRpdGllcyk7XG4gIHJldHVybiBPYmplY3Qua2V5cyhib29rbWFya0VudGl0aWVzKS5yZWR1Y2UoKG5vZGVzLCBib29rbWFya0lkKSA9PiB7XG4gICAgY29uc3QgYm9va21hcmtFbnRpdHkgPSBib29rbWFya0VudGl0aWVzW2Jvb2ttYXJrSWRdO1xuICAgIGlmIChib29rbWFya0VudGl0eS5wYXJlbnQpIHtcbiAgICAgIGNvbnN0IHBhcmVudEVudGl0eSA9IGJvb2ttYXJrRW50aXRpZXNbYm9va21hcmtFbnRpdHkucGFyZW50XTtcbiAgICAgIGlmICghcGFyZW50RW50aXR5LmNoaWxkcmVuKSB7XG4gICAgICAgIHBhcmVudEVudGl0eS5jaGlsZHJlbiA9IFtdO1xuICAgICAgfVxuICAgICAgcGFyZW50RW50aXR5LmNoaWxkcmVuW2Jvb2ttYXJrRW50aXR5LmluZGV4XSA9IGJvb2ttYXJrRW50aXR5O1xuICAgIH0gZWxzZSB7XG4gICAgICBub2Rlc1tib29rbWFya0VudGl0eS5pbmRleF0gPSBib29rbWFya0VudGl0eTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGVzO1xuICB9LCBbXSk7XG59O1xuIl19