;; Extension — relative block reorder.

(st-bootstrap-classes!)
(content/bootstrap!)

(define
  d
  (doc-append
    (doc-append
      (doc-append (doc-empty "d") (mk-text "a" "A"))
      (mk-text "b" "B"))
    (mk-text "c" "C")))

;; ── move-before ──
(content-test
  "move-before"
  (doc-ids (content/move-before d "c" "a"))
  (list "c" "a" "b"))
(content-test
  "move-before mid"
  (doc-ids (content/move-before d "c" "b"))
  (list "a" "c" "b"))
(content-test "move-before immutable" (doc-ids d) (list "a" "b" "c"))

;; ── move-after ──
(content-test
  "move-after"
  (doc-ids (content/move-after d "a" "b"))
  (list "b" "a" "c"))
(content-test
  "move-after last"
  (doc-ids (content/move-after d "a" "c"))
  (list "b" "c" "a"))

;; ── move-to-front / back ──
(content-test
  "move-to-front"
  (doc-ids (content/move-to-front d "c"))
  (list "c" "a" "b"))
(content-test
  "move-to-back"
  (doc-ids (content/move-to-back d "a"))
  (list "b" "c" "a"))
(content-test
  "front already first"
  (doc-ids (content/move-to-front d "a"))
  (list "a" "b" "c"))

;; ── no-ops ──
(content-test
  "missing id no-op"
  (doc-ids (content/move-before d "zzz" "a"))
  (list "a" "b" "c"))
(content-test
  "missing target no-op"
  (doc-ids (content/move-before d "a" "zzz"))
  (list "a" "b" "c"))

;; ── render after move ──
(content-test
  "render after move"
  (asHTML (content/move-after d "a" "c"))
  "<p>B</p><p>C</p><p>A</p>")
