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

Decorator API #186

Merged
merged 56 commits into from
Aug 20, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
b3974b9
Import highlights module from Android
mickael-menu Jun 9, 2021
db6e84b
Simplify
mickael-menu Jun 17, 2021
7e9b584
Split highlight javascript
mickael-menu Jun 17, 2021
5f2bb17
Wrap highlight JS with IIFE
mickael-menu Jun 17, 2021
f0368ba
Reorganize highlight JavaScript code
mickael-menu Jun 21, 2021
dac54e6
Remove annotation mark code from highlight.js
mickael-menu Jun 21, 2021
7fa1c42
Merge branch 'develop' into feature/decorator
mickael-menu Jun 21, 2021
48d459a
Package EPUB scripts with NPM and Webpack
mickael-menu Jun 22, 2021
be8b92e
Import Hypothesis' anchoring module
mickael-menu Jun 22, 2021
2fcb677
Inject EPUB scripts with the HTTP server to be able to use source maps
mickael-menu Jun 23, 2021
0884043
Fix issue with Hypothesis https://github.com/hypothesis/client/pull/3538
mickael-menu Jun 23, 2021
1fd10b4
Replace the text search algorithm using window.find() with Hypothesis
mickael-menu Jun 23, 2021
79c5242
Automatically redraw highlights on resize
mickael-menu Jun 24, 2021
7099226
Use prettier to automatically format JS files
mickael-menu Jun 24, 2021
3ea25a7
Add ESLint
mickael-menu Jun 24, 2021
15385a3
Fix drawing highlights on fixed layouts
mickael-menu Jun 24, 2021
e67666f
Fix rendering highlights in scroll mode
mickael-menu Jun 24, 2021
30188c1
Compute before and after for current selection
mickael-menu Jun 24, 2021
a629880
Expose highlights() and clearHighlights() EPUBNavigatorViewController…
mickael-menu Jun 28, 2021
44b6368
Prototype the Decorator API
mickael-menu Jun 29, 2021
154b569
Load decorations in new spread views
mickael-menu Jun 30, 2021
1309bf7
Add support for Decoration tint color
mickael-menu Jun 30, 2021
2ada3e0
Add HTML decoration styles
mickael-menu Jun 30, 2021
a3020c6
Add strikethrough, sidemark and layout and fit positioning
mickael-menu Jul 1, 2021
03855d9
Make default HTMLDecorationStyle configurable
mickael-menu Jul 1, 2021
5cd07b0
Improve HTML decoration styles
mickael-menu Jul 2, 2021
7279638
Refactor diffable decorations
mickael-menu Jul 2, 2021
21a0928
Add text and image decoration styles
mickael-menu Jul 3, 2021
f10a458
Activate decorations
mickael-menu Jul 5, 2021
e49cb27
Fix decorations with fixed layout
mickael-menu Jul 5, 2021
6b40318
Add the SelectableNavigator APIs
mickael-menu Jul 6, 2021
33a0ebf
Update changelog
mickael-menu Jul 6, 2021
1400cbb
Merge branch 'develop' of github.com:readium/r2-navigator-swift into …
mickael-menu Jul 6, 2021
3fbe709
Merge branch 'feature/selectable' of github.com:readium/r2-navigator-…
mickael-menu Jul 6, 2021
517fcfd
Implement SelectableNavigator for EPUB
mickael-menu Jul 6, 2021
2e3c72c
Fix underline, strikethrough and sidemarks
mickael-menu Jul 6, 2021
3289f3f
Add documentation and remove some decoration styles
mickael-menu Jul 7, 2021
37b9d30
Derive the current selection from current locator
mickael-menu Jul 20, 2021
2bec9e0
Handle decoration interactions
mickael-menu Jul 20, 2021
a4615dc
Override default tap event when activating a decoration
mickael-menu Jul 20, 2021
ed5a517
Add activate state for highlight style
mickael-menu Jul 20, 2021
7b01530
Last decorations take precedence for activation when overlapping
mickael-menu Jul 21, 2021
3dc8e2c
Add comments
mickael-menu Jul 21, 2021
c0451c8
Merge branch 'develop' of github.com:readium/r2-navigator-swift into …
mickael-menu Jul 21, 2021
fa19571
Fix Carthage project specs
mickael-menu Jul 21, 2021
b1ddd59
Fix lint errors
mickael-menu Jul 21, 2021
e33e286
Check scripts are up to date
mickael-menu Jul 21, 2021
04ed537
Report point location when activating a decoration and fix coordinate…
mickael-menu Jul 22, 2021
13de1a7
Refactor highlight and underline styles
mickael-menu Jul 22, 2021
dccf30f
Merge branch 'feature/decorator' of github.com:readium/r2-navigator-s…
mickael-menu Jul 22, 2021
2d2c999
Fix scrolling to a range or element
mickael-menu Jul 27, 2021
092afd9
Merge branch 'develop' into feature/decorator
mickael-menu Jul 27, 2021
87ffc2b
Merge branch 'develop' into feature/decorator
mickael-menu Jul 30, 2021
e949431
Remove EPUB/Scripts from Carthage projects
mickael-menu Jul 30, 2021
927b07e
Fix decorations recreated after being cleared
mickael-menu Aug 11, 2021
c12d8a3
Merge branch 'develop' into feature/decorator
mickael-menu Aug 13, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: R2Navigator
name: Build

on:
push:
Expand Down
28 changes: 28 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Lint

on:
push:
branches: [ develop ]
pull_request:
branches: [ develop ]

jobs:
lint:
name: Lint
runs-on: macos-latest
env:
scripts: ${{ 'r2-navigator-swift/EPUB/Scripts' }}

steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: npm install --prefix "$scripts"
- name: Lint JavaScript
run: yarn --cwd "$scripts" run lint
- name: Check JavaScript formatting
run: yarn --cwd "$scripts" run checkformat
- name: Check if bundled scripts are up-to-date
run: |
make scripts
git diff --exit-code --name-only r2-navigator-swift/EPUB/Assets/Static/scripts
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ All notable changes to this project will be documented in this file.
* 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](https://github.com/readium/architecture/pull/160) 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.

Expand Down
1 change: 1 addition & 0 deletions Cartfile
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
github "ra1028/DifferenceKit" ~> 1.2.0
github "readium/r2-shared-swift" "develop"
github "scinfu/SwiftSoup" ~> 2.3.2
1 change: 1 addition & 0 deletions Cartfile.resolved
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
github "cezheng/Fuzi" "3.1.3"
github "dexman/Minizip" "1.4.0"
github "ra1028/DifferenceKit" "1.2.0"
github "readium/r2-shared-swift" "7c66c3b7eb8711946b4fca4a1cce8f5ae0bc6bfe"
github "scinfu/SwiftSoup" "2.3.2"
18 changes: 17 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,20 @@
.PHONY: carthage
.PHONY: carthage scripts
SCRIPTS_PATH := r2-navigator-swift/EPUB/Scripts

help:
@echo "Usage: make <target>\n\n\
carthage\tGenerate the Carthage Xcode project\n\
scripts\tBundle EPUB scripts with Webpack\n\
lint-scripts\tCheck quality of EPUB scripts\n\
"

scripts:
yarn --cwd "$(SCRIPTS_PATH)" run format
yarn --cwd "$(SCRIPTS_PATH)" run bundle

lint-scripts:
yarn --cwd "$(SCRIPTS_PATH)" run lint

carthage:
# For R2Navigator, XcodeGen generates a different project every time for
# some reason. Using the cache prevents this.
Expand Down
2 changes: 2 additions & 0 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,15 @@ let package = Package(
),
],
dependencies: [
.package(url: "https://github.com/ra1028/DifferenceKit.git", from: "1.2.0"),
.package(url: "https://github.com/readium/r2-shared-swift.git", .branch("develop")),
.package(url: "https://github.com/scinfu/SwiftSoup.git", from: "2.3.2"),
],
targets: [
.target(
name: "R2Navigator",
dependencies: [
"DifferenceKit",
"SwiftSoup",
.product(name: "R2Shared", package: "r2-shared-swift"),
],
Expand Down
1 change: 1 addition & 0 deletions project-carthage-as-submodules.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ targets:
- path: r2-navigator-swift
excludes:
- EPUB/Assets
- EPUB/Scripts
- path: r2-navigator-swift/EPUB/Assets
type: folder
dependencies:
Expand Down
1 change: 1 addition & 0 deletions project-carthage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ targets:
- path: r2-navigator-swift
excludes:
- EPUB/Assets
- EPUB/Scripts
- path: r2-navigator-swift/EPUB/Assets
type: folder
dependencies:
Expand Down
73 changes: 63 additions & 10 deletions r2-navigator-swift.xcodeproj/.xcodegen
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@
"sources" : [
{
"excludes" : [
"EPUB\/Assets"
"EPUB\/Assets",
"EPUB\/Scripts"
],
"path" : "r2-navigator-swift"
},
Expand All @@ -66,18 +67,14 @@ r2-navigator-swift/Audiobook/PublicationMediaLoader.swift
r2-navigator-swift/CBZ
r2-navigator-swift/CBZ/CBZNavigatorViewController.swift
r2-navigator-swift/CBZ/ImageViewController.swift
r2-navigator-swift/Decorator
r2-navigator-swift/Decorator/DecorableNavigator.swift
r2-navigator-swift/Decorator/DiffableDecoration.swift
r2-navigator-swift/EditingAction.swift
r2-navigator-swift/EPUB
r2-navigator-swift/EPUB/Assets
r2-navigator-swift/EPUB/Assets/fxl-spread-one.html
r2-navigator-swift/EPUB/Assets/fxl-spread-two.html
r2-navigator-swift/EPUB/Assets/Scripts
r2-navigator-swift/EPUB/Assets/Scripts/css-inline.js
r2-navigator-swift/EPUB/Assets/Scripts/css.js
r2-navigator-swift/EPUB/Assets/Scripts/fixed.js
r2-navigator-swift/EPUB/Assets/Scripts/gestures.js
r2-navigator-swift/EPUB/Assets/Scripts/reflowable.js
r2-navigator-swift/EPUB/Assets/Scripts/utils.js
r2-navigator-swift/EPUB/Assets/Static
r2-navigator-swift/EPUB/Assets/Static/readium-css
r2-navigator-swift/EPUB/Assets/Static/readium-css/cjk-horizontal
Expand All @@ -102,11 +99,66 @@ r2-navigator-swift/EPUB/Assets/Static/readium-css/rtl
r2-navigator-swift/EPUB/Assets/Static/readium-css/rtl/ReadiumCSS-after.css
r2-navigator-swift/EPUB/Assets/Static/readium-css/rtl/ReadiumCSS-before.css
r2-navigator-swift/EPUB/Assets/Static/readium-css/rtl/ReadiumCSS-default.css
r2-navigator-swift/EPUB/Assets/Static/scripts
r2-navigator-swift/EPUB/Assets/Static/scripts/readium-fixed-wrapper.js
r2-navigator-swift/EPUB/Assets/Static/scripts/readium-fixed-wrapper.js.map
r2-navigator-swift/EPUB/Assets/Static/scripts/readium-fixed.js
r2-navigator-swift/EPUB/Assets/Static/scripts/readium-fixed.js.map
r2-navigator-swift/EPUB/Assets/Static/scripts/readium-reflowable.js
r2-navigator-swift/EPUB/Assets/Static/scripts/readium-reflowable.js.map
r2-navigator-swift/EPUB/DiffableDecoration+HTML.swift
r2-navigator-swift/EPUB/EPUBFixedSpreadView.swift
r2-navigator-swift/EPUB/EPUBNavigatorViewController.swift
r2-navigator-swift/EPUB/EPUBReflowableSpreadView.swift
r2-navigator-swift/EPUB/EPUBSpread.swift
r2-navigator-swift/EPUB/EPUBSpreadView.swift
r2-navigator-swift/EPUB/HTMLDecorationTemplate.swift
r2-navigator-swift/EPUB/Scripts
r2-navigator-swift/EPUB/Scripts/.eslintrc.json
r2-navigator-swift/EPUB/Scripts/.gitignore
r2-navigator-swift/EPUB/Scripts/.prettierignore
r2-navigator-swift/EPUB/Scripts/.prettierrc.json
r2-navigator-swift/EPUB/Scripts/package-lock.json
r2-navigator-swift/EPUB/Scripts/package.json
r2-navigator-swift/EPUB/Scripts/README.md
r2-navigator-swift/EPUB/Scripts/src
r2-navigator-swift/EPUB/Scripts/src/decorator.js
r2-navigator-swift/EPUB/Scripts/src/gestures.js
r2-navigator-swift/EPUB/Scripts/src/index-fixed-wrapper.js
r2-navigator-swift/EPUB/Scripts/src/index-fixed.js
r2-navigator-swift/EPUB/Scripts/src/index-reflowable.js
r2-navigator-swift/EPUB/Scripts/src/index.js
r2-navigator-swift/EPUB/Scripts/src/rect.js
r2-navigator-swift/EPUB/Scripts/src/selection.js
r2-navigator-swift/EPUB/Scripts/src/utils.js
r2-navigator-swift/EPUB/Scripts/src/vendor
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/html.js
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/match-quote.js
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/pdf.js
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/placeholder.js
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/fake-pdf-viewer-application.js
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/html-anchoring-fixture.html
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/html-baselines
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/html-baselines/index.js
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/html-baselines/minimal.html
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/html-baselines/minimal.json
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/html-baselines/wikipedia-regression-testing.html
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/html-baselines/wikipedia-regression-testing.json
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/html-test.js
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/match-quote-test.js
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/pdf-test.js
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/placeholder-test.js
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/text-range-test.js
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/types-test.js
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/xpath-test.js
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/text-range.js
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/types.js
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/xpath.js
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/README.md
r2-navigator-swift/EPUB/Scripts/webpack.config.js
r2-navigator-swift/EPUB/UserSettings.swift
r2-navigator-swift/Info.plist
r2-navigator-swift/MediaNavigator.swift
Expand All @@ -125,11 +177,12 @@ r2-navigator-swift/Toolkit
r2-navigator-swift/Toolkit/CompletionList.swift
r2-navigator-swift/Toolkit/Extensions
r2-navigator-swift/Toolkit/Extensions/Bundle.swift
r2-navigator-swift/Toolkit/Extensions/CGRect.swift
r2-navigator-swift/Toolkit/Extensions/UIColor.swift
r2-navigator-swift/Toolkit/Extensions/UIView.swift
r2-navigator-swift/Toolkit/Extensions/WKWebView.swift
r2-navigator-swift/Toolkit/PaginationView.swift
r2-navigator-swift/Toolkit/R2NavigatorLocalizedString.swift
r2-navigator-swift/Toolkit/TargetAction.swift
r2-navigator-swift/Toolkit/UIColor.swift
r2-navigator-swift/Toolkit/UIView.swift
r2-navigator-swift/Toolkit/WebView.swift
r2-navigator-swift/VisualNavigator.swift"
Loading