+/**
+ * @type {Object<string, function(HTMLElement, HTMLElement, HTMLElement)>}
+ */
+const itemActions = {
+ move_up(item) {
+ const list = item.parentNode;
+ const index = Array.from(list.children).indexOf(item);
+ const newIndex = Math.max(index - 1, 0);
+ list.insertBefore(item, list.children[newIndex] || null);
+ },
+ move_down(item) {
+ const list = item.parentNode;
+ const index = Array.from(list.children).indexOf(item);
+ const newIndex = Math.min(index + 2, list.children.length);
+ list.insertBefore(item, list.children[newIndex] || null);
+ },
+ remove(item, shelfBooksList, allBooksList) {
+ allBooksList.appendChild(item);
+ },
+ add(item, shelfBooksList) {
+ shelfBooksList.appendChild(item);
+ },
+};
+
+export class ShelfSort extends Component {