Skip to content
This repository has been archived by the owner on Aug 12, 2022. It is now read-only.

Latest commit

 

History

History
140 lines (94 loc) · 7.27 KB

CHANGELOG.md

File metadata and controls

140 lines (94 loc) · 7.27 KB

Changelog

All notable changes to this project will be documented in this file.

Warning: Features marked as alpha may change or be removed in a future release without notice. Use with *caution.

Added

  • A new translate EPUB and PDF editing action is available for iOS 15.

Fixed

  • Fixed turning pages of an EPUB reflowable resource with an odd number of columns. A virtual blank trailing column is appended to the resource when displayed as two columns.

Added

  • Support for Swift Package Manager (contributed by @stevenzeck).
  • EPUB navigator:
    • The EPUB navigator is now able to navigate to a Locator using its text context. This is useful for search results or highlights missing precise locations.
    • New EPUBNavigatorViewController.evaluateJavaScript() API to run a JavaScript on the currently visible HTML resource.
    • New userSettings property for EPUBNavigatorViewController.Configuration to set the default user settings values (contributed by @ettore).
    • You can provide custom editing actions for the text selection menu (contributed by @cbaltzer).
      1. Create a custom action with, for example: EditingAction(title: "Highlight", action: #selector(highlight:))
      2. Then, implement the selector in one of your classes in the responder chain. Typically, in the UIViewController wrapping the navigator view controller.
      class EPUBViewController: UIViewController {
          init(publication: Publication) {
              var config = EPUBNavigatorViewController.Configuration()
              config.editingActions.append(EditingAction(title: "Highlight", action: #selector(highlight)))
              let navigator = EPUBNavigatorViewController(publication: publication, config: config)
          }
      
          @objc func highlight(_ sender: Any) {}
      }
  • New SelectableNavigator protocol for navigators supporting user selection.
    • Get or clear the current selection.
    • Implement navigator(_:canPerformAction:for:) to validate each editing action for the current selection. For example, to make sure the selected text is not too large for a definition look up.
    • Implement navigator(_:shouldShowMenuForSelection:) to override the default edit menu (UIMenuController) with a custom selection pop-up.
  • (alpha) Support for the Decorator API to draw user interface elements over a publication's content.
    • This can be used to render highlights over a text selection, for example.
    • For now, only the EPUB navigator implements DecorableNavigator. You can implement custom decoration styles with HTMLDecorationTemplate.
  • (alpha) A new navigator for audiobooks.
    • The navigator is chromeless, so you will need to provide your own user interface.

Deprecated

  • Removed navigator(_:userContentController:didReceive:) which is actually not needed since you can provide your own WKScriptMessageHandler to WKUserContentController.

Fixed

  • Fixed receiving EPUBNavigatorDelegate.navigator(_:setupUserScripts:) for the first web view.
  • r2-testapp-swift#343 Fixed hiding "Share" editing action (contributed by @rocxteady).

Deprecated

  • All APIs deprecated in previous versions are now unavailable.

Added

  • New EPUBNavigatorDelegate APIs to inject custom JavaScript.
    • Override navigator(_:setupUserScripts:) to register additional user script to the WKUserContentController of each web view.
    • Override navigator(_:userContentController:didReceive:) to receive callbacks from your scripts.

Fixed

  • Optimized performances of preloaded EPUB resources.

Fixed

  • EPUBs declaring multiple languages were laid out from right to left if the first language had an RTL reading progression. Now if no reading progression is set, the effectiveReadingProgression will be LTR.

Added

  • Support for the new Publication model using the Content Protection for DRM rights and the Fetcher for resource access.
    • This replaces the Container and DRMLicense objects which were needed by the navigator before.

Fixed

  • Layout of right-to–left EPUB.
  • Various EPUB navigation issues:
    • Prevent breaking initial location when calling updateUserSettings too soon.
    • Fix weird scrolling behavior when double tapping on the edges to turn pages.
    • Don't send intermediate incorrect locators when loading a pending locator.
  • Optimize positions calculation for LCP protected PDF.

Added

  • Support for pop-up footnotes (contributed by @tooolbox).
  • In EPUB's user settings:
    • Support for hyphenation (contributed by @ehapmgs).
    • Publishers' default styles are now used by default.
    • Default line height is increased to improve readability.
  • JavaScript errors are logged in Xcode's console for easier debugging.

Changed

Fixed

  • Jumping to a bookmark (Locator) located in a resource that is not already pre-loaded used to fail for some publications.
  • Touching interactive elements in fixed-layout EPUBs, when two-page spreads are enabled.