From b4059fbeb9997a0ead6952e420808cd2453ce2b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mickae=CC=88l=20Menu?= Date: Tue, 1 Jul 2025 17:54:46 +0200 Subject: [PATCH] Replace reading order indices with HREFs in the EPUB viewport --- .../EPUB/EPUBNavigatorViewController.swift | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Sources/Navigator/EPUB/EPUBNavigatorViewController.swift b/Sources/Navigator/EPUB/EPUBNavigatorViewController.swift index 355c4db0d..ae87bd7a2 100644 --- a/Sources/Navigator/EPUB/EPUBNavigatorViewController.swift +++ b/Sources/Navigator/EPUB/EPUBNavigatorViewController.swift @@ -133,12 +133,12 @@ open class EPUBNavigatorViewController: InputObservableViewController, /// Information about the visible portion of the publication. public struct Viewport: Equatable { - /// Indices of the visible reading order resources. - public var readingOrderIndices: ClosedRange<[Link].Index> + /// Visible reading order resources. + public var readingOrder: [AnyURL] /// Range of visible scroll progressions for each visible reading order /// resource. - public var progressions: [[Link].Index: ClosedRange] + public var progressions: [AnyURL: ClosedRange] /// Range of visible positions. public var positions: ClosedRange? @@ -627,11 +627,14 @@ open class EPUBNavigatorViewController: InputObservableViewController, return (nil, nil) } + let visibleReadingOrder: [(index: Int, href: AnyURL)] = spreadView.spread.readingOrderIndices + .map { ($0, readingOrder[$0].url()) } + var viewport = Viewport( - readingOrderIndices: spreadView.spread.readingOrderIndices, - progressions: spreadView.spread.readingOrderIndices.reduce([:]) { progressions, index in + readingOrder: visibleReadingOrder.map(\.href), + progressions: visibleReadingOrder.reduce([:]) { progressions, i in var progressions = progressions - progressions[index] = spreadView.progression(in: index) + progressions[i.href] = spreadView.progression(in: i.index) return progressions }, positions: nil