|
|
@@ -393,23 +393,27 @@
|
|
|
[start-node end-node block-ids]
|
|
|
{:pre [(tree/satisfied-inode? start-node)
|
|
|
(tree/satisfied-inode? end-node)]}
|
|
|
- (ds/auto-transact!
|
|
|
- [txs-state (ds/new-outliner-txs-state)] {:outliner-op :delete-nodes}
|
|
|
- (if (= start-node end-node)
|
|
|
- (delete-node start-node)
|
|
|
- (let [right-node (tree/-get-right end-node)
|
|
|
- end-node-left-nodes (get-left-nodes end-node (count block-ids))
|
|
|
- start-node-parents-with-self (conj (get-node-parents start-node 1000) (tree/-get-id start-node))]
|
|
|
- (when (tree/satisfied-inode? right-node)
|
|
|
- (let [cross-node-id (first (set/intersection (set end-node-left-nodes) (set start-node-parents-with-self)))
|
|
|
- cross-node (get-block-by-id cross-node-id)
|
|
|
- new-left-id (if (= cross-node start-node)
|
|
|
- (tree/-get-left-id cross-node)
|
|
|
- cross-node-id)
|
|
|
- new-right-node (tree/-set-left-id right-node new-left-id)]
|
|
|
- (tree/-save new-right-node txs-state)))
|
|
|
- (let [txs (db-outliner/del-blocks block-ids)]
|
|
|
- (ds/add-txs txs-state txs))))))
|
|
|
+ (let [sibling? (= (tree/-get-parent-id start-node)
|
|
|
+ (tree/-get-parent-id end-node))]
|
|
|
+ (when sibling?
|
|
|
+ (ds/auto-transact!
|
|
|
+ [txs-state (ds/new-outliner-txs-state)]
|
|
|
+ {:outliner-op :delete-nodes}
|
|
|
+ (if (= start-node end-node)
|
|
|
+ (delete-node start-node)
|
|
|
+ (let [right-node (tree/-get-right end-node)
|
|
|
+ end-node-left-nodes (get-left-nodes end-node (count block-ids))
|
|
|
+ start-node-parents-with-self (conj (get-node-parents start-node 1000) (tree/-get-id start-node))]
|
|
|
+ (when (tree/satisfied-inode? right-node)
|
|
|
+ (let [cross-node-id (first (set/intersection (set end-node-left-nodes) (set start-node-parents-with-self)))
|
|
|
+ cross-node (get-block-by-id cross-node-id)
|
|
|
+ new-left-id (if (= cross-node start-node)
|
|
|
+ (tree/-get-left-id cross-node)
|
|
|
+ cross-node-id)
|
|
|
+ new-right-node (tree/-set-left-id right-node new-left-id)]
|
|
|
+ (tree/-save new-right-node txs-state)))
|
|
|
+ (let [txs (db-outliner/del-blocks block-ids)]
|
|
|
+ (ds/add-txs txs-state txs))))))))
|
|
|
|
|
|
(defn first-child?
|
|
|
[node]
|