Skip to content

Commit 217d5a9

Browse files
authored
Decorator API (#186)
Former-commit-id: 338110c
1 parent d2d58dc commit 217d5a9

File tree

79 files changed

+11436
-796
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+11436
-796
lines changed

navigator/.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: R2Navigator
1+
name: Build
22

33
on:
44
push:
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Lint
2+
3+
on:
4+
push:
5+
branches: [ develop ]
6+
pull_request:
7+
branches: [ develop ]
8+
9+
jobs:
10+
lint:
11+
name: Lint
12+
runs-on: macos-latest
13+
env:
14+
scripts: ${{ 'r2-navigator-swift/EPUB/Scripts' }}
15+
16+
steps:
17+
- name: Checkout
18+
uses: actions/checkout@v2
19+
- name: Install dependencies
20+
run: npm install --prefix "$scripts"
21+
- name: Lint JavaScript
22+
run: yarn --cwd "$scripts" run lint
23+
- name: Check JavaScript formatting
24+
run: yarn --cwd "$scripts" run checkformat
25+
- name: Check if bundled scripts are up-to-date
26+
run: |
27+
make scripts
28+
git diff --exit-code --name-only r2-navigator-swift/EPUB/Assets/Static/scripts

navigator/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ All notable changes to this project will be documented in this file.
3434
* Get or clear the current selection.
3535
* 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.
3636
* Implement `navigator(_:shouldShowMenuForSelection:)` to override the default edit menu (`UIMenuController`) with a custom selection pop-up.
37+
* (*alpha*) Support for the [Decorator API](https://github.com/readium/architecture/pull/160) to draw user interface elements over a publication's content.
38+
* This can be used to render highlights over a text selection, for example.
39+
* For now, only the EPUB navigator implements `DecorableNavigator`. You can implement custom decoration styles with `HTMLDecorationTemplate`.
3740
* (*alpha*) A new navigator for audiobooks.
3841
* The navigator is chromeless, so you will need to provide your own user interface.
3942

navigator/Cartfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1+
github "ra1028/DifferenceKit" ~> 1.2.0
12
github "readium/r2-shared-swift" "develop"
23
github "scinfu/SwiftSoup" ~> 2.3.2

navigator/Cartfile.resolved

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
github "cezheng/Fuzi" "3.1.3"
22
github "dexman/Minizip" "1.4.0"
3+
github "ra1028/DifferenceKit" "1.2.0"
34
github "readium/r2-shared-swift" "7c66c3b7eb8711946b4fca4a1cce8f5ae0bc6bfe"
45
github "scinfu/SwiftSoup" "2.3.2"

navigator/Makefile

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,20 @@
1-
.PHONY: carthage
1+
.PHONY: carthage scripts
2+
SCRIPTS_PATH := r2-navigator-swift/EPUB/Scripts
3+
4+
help:
5+
@echo "Usage: make <target>\n\n\
6+
carthage\tGenerate the Carthage Xcode project\n\
7+
scripts\tBundle EPUB scripts with Webpack\n\
8+
lint-scripts\tCheck quality of EPUB scripts\n\
9+
"
10+
11+
scripts:
12+
yarn --cwd "$(SCRIPTS_PATH)" run format
13+
yarn --cwd "$(SCRIPTS_PATH)" run bundle
14+
15+
lint-scripts:
16+
yarn --cwd "$(SCRIPTS_PATH)" run lint
17+
218
carthage:
319
# For R2Navigator, XcodeGen generates a different project every time for
420
# some reason. Using the cache prevents this.

navigator/Package.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,15 @@ let package = Package(
1818
),
1919
],
2020
dependencies: [
21+
.package(url: "https://github.com/ra1028/DifferenceKit.git", from: "1.2.0"),
2122
.package(url: "https://github.com/readium/r2-shared-swift.git", .branch("develop")),
2223
.package(url: "https://github.com/scinfu/SwiftSoup.git", from: "2.3.2"),
2324
],
2425
targets: [
2526
.target(
2627
name: "R2Navigator",
2728
dependencies: [
29+
"DifferenceKit",
2830
"SwiftSoup",
2931
.product(name: "R2Shared", package: "r2-shared-swift"),
3032
],

navigator/project-carthage-as-submodules.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ targets:
1414
- path: r2-navigator-swift
1515
excludes:
1616
- EPUB/Assets
17+
- EPUB/Scripts
1718
- path: r2-navigator-swift/EPUB/Assets
1819
type: folder
1920
dependencies:

navigator/project-carthage.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ targets:
1212
- path: r2-navigator-swift
1313
excludes:
1414
- EPUB/Assets
15+
- EPUB/Scripts
1516
- path: r2-navigator-swift/EPUB/Assets
1617
type: folder
1718
dependencies:

navigator/r2-navigator-swift.xcodeproj/.xcodegen

Lines changed: 63 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@
4444
"sources" : [
4545
{
4646
"excludes" : [
47-
"EPUB\/Assets"
47+
"EPUB\/Assets",
48+
"EPUB\/Scripts"
4849
],
4950
"path" : "r2-navigator-swift"
5051
},
@@ -66,18 +67,14 @@ r2-navigator-swift/Audiobook/PublicationMediaLoader.swift
6667
r2-navigator-swift/CBZ
6768
r2-navigator-swift/CBZ/CBZNavigatorViewController.swift
6869
r2-navigator-swift/CBZ/ImageViewController.swift
70+
r2-navigator-swift/Decorator
71+
r2-navigator-swift/Decorator/DecorableNavigator.swift
72+
r2-navigator-swift/Decorator/DiffableDecoration.swift
6973
r2-navigator-swift/EditingAction.swift
7074
r2-navigator-swift/EPUB
7175
r2-navigator-swift/EPUB/Assets
7276
r2-navigator-swift/EPUB/Assets/fxl-spread-one.html
7377
r2-navigator-swift/EPUB/Assets/fxl-spread-two.html
74-
r2-navigator-swift/EPUB/Assets/Scripts
75-
r2-navigator-swift/EPUB/Assets/Scripts/css-inline.js
76-
r2-navigator-swift/EPUB/Assets/Scripts/css.js
77-
r2-navigator-swift/EPUB/Assets/Scripts/fixed.js
78-
r2-navigator-swift/EPUB/Assets/Scripts/gestures.js
79-
r2-navigator-swift/EPUB/Assets/Scripts/reflowable.js
80-
r2-navigator-swift/EPUB/Assets/Scripts/utils.js
8178
r2-navigator-swift/EPUB/Assets/Static
8279
r2-navigator-swift/EPUB/Assets/Static/readium-css
8380
r2-navigator-swift/EPUB/Assets/Static/readium-css/cjk-horizontal
@@ -102,11 +99,66 @@ r2-navigator-swift/EPUB/Assets/Static/readium-css/rtl
10299
r2-navigator-swift/EPUB/Assets/Static/readium-css/rtl/ReadiumCSS-after.css
103100
r2-navigator-swift/EPUB/Assets/Static/readium-css/rtl/ReadiumCSS-before.css
104101
r2-navigator-swift/EPUB/Assets/Static/readium-css/rtl/ReadiumCSS-default.css
102+
r2-navigator-swift/EPUB/Assets/Static/scripts
103+
r2-navigator-swift/EPUB/Assets/Static/scripts/readium-fixed-wrapper.js
104+
r2-navigator-swift/EPUB/Assets/Static/scripts/readium-fixed-wrapper.js.map
105+
r2-navigator-swift/EPUB/Assets/Static/scripts/readium-fixed.js
106+
r2-navigator-swift/EPUB/Assets/Static/scripts/readium-fixed.js.map
107+
r2-navigator-swift/EPUB/Assets/Static/scripts/readium-reflowable.js
108+
r2-navigator-swift/EPUB/Assets/Static/scripts/readium-reflowable.js.map
109+
r2-navigator-swift/EPUB/DiffableDecoration+HTML.swift
105110
r2-navigator-swift/EPUB/EPUBFixedSpreadView.swift
106111
r2-navigator-swift/EPUB/EPUBNavigatorViewController.swift
107112
r2-navigator-swift/EPUB/EPUBReflowableSpreadView.swift
108113
r2-navigator-swift/EPUB/EPUBSpread.swift
109114
r2-navigator-swift/EPUB/EPUBSpreadView.swift
115+
r2-navigator-swift/EPUB/HTMLDecorationTemplate.swift
116+
r2-navigator-swift/EPUB/Scripts
117+
r2-navigator-swift/EPUB/Scripts/.eslintrc.json
118+
r2-navigator-swift/EPUB/Scripts/.gitignore
119+
r2-navigator-swift/EPUB/Scripts/.prettierignore
120+
r2-navigator-swift/EPUB/Scripts/.prettierrc.json
121+
r2-navigator-swift/EPUB/Scripts/package-lock.json
122+
r2-navigator-swift/EPUB/Scripts/package.json
123+
r2-navigator-swift/EPUB/Scripts/README.md
124+
r2-navigator-swift/EPUB/Scripts/src
125+
r2-navigator-swift/EPUB/Scripts/src/decorator.js
126+
r2-navigator-swift/EPUB/Scripts/src/gestures.js
127+
r2-navigator-swift/EPUB/Scripts/src/index-fixed-wrapper.js
128+
r2-navigator-swift/EPUB/Scripts/src/index-fixed.js
129+
r2-navigator-swift/EPUB/Scripts/src/index-reflowable.js
130+
r2-navigator-swift/EPUB/Scripts/src/index.js
131+
r2-navigator-swift/EPUB/Scripts/src/rect.js
132+
r2-navigator-swift/EPUB/Scripts/src/selection.js
133+
r2-navigator-swift/EPUB/Scripts/src/utils.js
134+
r2-navigator-swift/EPUB/Scripts/src/vendor
135+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis
136+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring
137+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/html.js
138+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/match-quote.js
139+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/pdf.js
140+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/placeholder.js
141+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test
142+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/fake-pdf-viewer-application.js
143+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/html-anchoring-fixture.html
144+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/html-baselines
145+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/html-baselines/index.js
146+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/html-baselines/minimal.html
147+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/html-baselines/minimal.json
148+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/html-baselines/wikipedia-regression-testing.html
149+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/html-baselines/wikipedia-regression-testing.json
150+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/html-test.js
151+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/match-quote-test.js
152+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/pdf-test.js
153+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/placeholder-test.js
154+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/text-range-test.js
155+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/types-test.js
156+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/test/xpath-test.js
157+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/text-range.js
158+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/types.js
159+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/anchoring/xpath.js
160+
r2-navigator-swift/EPUB/Scripts/src/vendor/hypothesis/README.md
161+
r2-navigator-swift/EPUB/Scripts/webpack.config.js
110162
r2-navigator-swift/EPUB/UserSettings.swift
111163
r2-navigator-swift/Info.plist
112164
r2-navigator-swift/MediaNavigator.swift
@@ -125,11 +177,12 @@ r2-navigator-swift/Toolkit
125177
r2-navigator-swift/Toolkit/CompletionList.swift
126178
r2-navigator-swift/Toolkit/Extensions
127179
r2-navigator-swift/Toolkit/Extensions/Bundle.swift
180+
r2-navigator-swift/Toolkit/Extensions/CGRect.swift
181+
r2-navigator-swift/Toolkit/Extensions/UIColor.swift
182+
r2-navigator-swift/Toolkit/Extensions/UIView.swift
128183
r2-navigator-swift/Toolkit/Extensions/WKWebView.swift
129184
r2-navigator-swift/Toolkit/PaginationView.swift
130185
r2-navigator-swift/Toolkit/R2NavigatorLocalizedString.swift
131186
r2-navigator-swift/Toolkit/TargetAction.swift
132-
r2-navigator-swift/Toolkit/UIColor.swift
133-
r2-navigator-swift/Toolkit/UIView.swift
134187
r2-navigator-swift/Toolkit/WebView.swift
135188
r2-navigator-swift/VisualNavigator.swift"

0 commit comments

Comments
 (0)