@ankhorage/zora 23.4.3 → 24.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +1 -1
- package/dist/constants/authoring.d.ts +3 -3
- package/dist/constants/authoring.d.ts.map +1 -1
- package/dist/constants/authoring.js +1 -1
- package/dist/constants/authoring.js.map +1 -1
- package/dist/features/accordion/accordionItemMeta.d.ts +1 -1
- package/dist/features/bottom-sheet/bottomSheetMeta.d.ts +1 -1
- package/dist/features/card/cardMeta.d.ts +1 -1
- package/dist/features/card/mediaCardMeta.d.ts +1 -1
- package/dist/features/card/postCardMeta.d.ts +1 -1
- package/dist/features/chat/messageBubbleMeta.d.ts +1 -1
- package/dist/features/dialog/dialogMeta.d.ts +2 -2
- package/dist/features/gradient/gradientMeta.d.ts +1 -1
- package/dist/features/keyboard-avoiding-view/keyboardAvoidingViewMeta.d.ts +1 -1
- package/dist/features/layout/gridMeta.d.ts +1 -1
- package/dist/features/layout/screenMeta.d.ts +1 -1
- package/dist/features/layout/scrollViewMeta.d.ts +1 -1
- package/dist/features/layout/viewMeta.d.ts +1 -1
- package/dist/features/list/flatListMeta.d.ts +1 -1
- package/dist/features/list/sectionListMeta.d.ts +1 -1
- package/dist/features/reader/adapters/inbound/Reader.d.ts +9 -0
- package/dist/features/reader/adapters/inbound/Reader.d.ts.map +1 -0
- package/dist/features/reader/adapters/inbound/{ReaderSurface.js → Reader.js} +33 -9
- package/dist/features/reader/adapters/inbound/Reader.js.map +1 -0
- package/dist/features/reader/composition/useReaderController.d.ts +24 -0
- package/dist/features/reader/composition/useReaderController.d.ts.map +1 -0
- package/dist/features/reader/composition/useReaderController.js +73 -0
- package/dist/features/reader/composition/useReaderController.js.map +1 -0
- package/dist/features/reader/meta.d.ts +5 -9
- package/dist/features/reader/meta.d.ts.map +1 -1
- package/dist/features/reader/meta.js +3 -7
- package/dist/features/reader/meta.js.map +1 -1
- package/dist/features/reader/public.d.ts +2 -2
- package/dist/features/reader/public.d.ts.map +1 -1
- package/dist/features/reader/public.js +1 -1
- package/dist/features/reader/public.js.map +1 -1
- package/dist/features/registry/ZORA_COMPONENT_REGISTRY.js +2 -2
- package/dist/features/registry/ZORA_COMPONENT_REGISTRY.js.map +1 -1
- package/dist/features/registry/bindableComponentMeta.d.ts +5 -9
- package/dist/features/registry/bindableComponentMeta.d.ts.map +1 -1
- package/dist/features/registry/bindableComponentMeta.js +4 -4
- package/dist/features/registry/bindableComponentMeta.js.map +1 -1
- package/dist/features/registry/componentMeta.js +2 -2
- package/dist/features/registry/componentMeta.js.map +1 -1
- package/dist/features/scanner/meta.d.ts +2 -2
- package/dist/features/section/screenSectionMeta.d.ts +1 -1
- package/dist/features/surface/surfaceMeta.d.ts +1 -1
- package/dist/features/tabs/tabPanelMeta.d.ts +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types/reader.d.ts +3 -21
- package/dist/types/reader.d.ts.map +1 -1
- package/dist/types/reader.js.map +1 -1
- package/package.json +3 -2
- package/src/constants/authoring.ts +1 -1
- package/src/features/reader/adapters/inbound/{ReaderSurface.test.ts → Reader.test.ts} +6 -5
- package/src/features/reader/adapters/inbound/{ReaderSurface.tsx → Reader.tsx} +67 -33
- package/src/features/reader/composition/useReaderController.ts +110 -0
- package/src/features/reader/meta.ts +3 -8
- package/src/features/reader/public.ts +2 -2
- package/src/features/reader/utils/resolveReaderProgress.test.ts +1 -1
- package/src/features/registry/ZORA_COMPONENT_REGISTRY.ts +2 -2
- package/src/features/registry/bindableComponentMeta.test.ts +2 -2
- package/src/features/registry/bindableComponentMeta.ts +4 -4
- package/src/features/registry/componentMeta.test.ts +5 -5
- package/src/features/registry/componentMeta.ts +2 -2
- package/src/index.ts +2 -2
- package/src/interactionPolicy.test.ts +3 -3
- package/src/showcaseCoverage.test.ts +1 -1
- package/src/types/reader.ts +16 -29
- package/web-dist/chunks/{Accordion-ct805sm7.js → Accordion-0acrkcyd.js} +3 -3
- package/web-dist/chunks/{Accordion-m4brcz8v.js → Accordion-122fdtp0.js} +6 -6
- package/web-dist/chunks/{Accordion-6xrse5my.js → Accordion-1dah5bqg.js} +1 -1
- package/web-dist/chunks/{Accordion-yae3m7g7.js → Accordion-2afa2z5x.js} +4 -4
- package/web-dist/chunks/{Accordion-0047zyx7.js → Accordion-2bsecqwf.js} +4 -4
- package/web-dist/chunks/{Accordion-basd2gyf.js → Accordion-2csc57rv.js} +2 -2
- package/web-dist/chunks/{Accordion-73x0gt11.js → Accordion-2d3hbryv.js} +7 -7
- package/web-dist/chunks/{Accordion-8fne0gf9.js → Accordion-2q6p67xe.js} +5 -5
- package/web-dist/chunks/{Accordion-axxgq453.js → Accordion-3f5vnfk8.js} +7 -7
- package/web-dist/chunks/{Accordion-gkx1kszz.js → Accordion-3hg1wprb.js} +2 -2
- package/web-dist/chunks/{Accordion-d24n7srd.js → Accordion-3rv8psbv.js} +4 -4
- package/web-dist/chunks/{Accordion-8z7naxj2.js → Accordion-74rt38d4.js} +1 -1
- package/web-dist/chunks/{Accordion-2dqpjya2.js → Accordion-7bb37pdc.js} +7 -7
- package/web-dist/chunks/{Accordion-adc7k14q.js → Accordion-7q1qf7c0.js} +5 -5
- package/web-dist/chunks/{Accordion-zgzrah0a.js → Accordion-7rvtpcwt.js} +6 -6
- package/web-dist/chunks/{Accordion-a1ervhyg.js → Accordion-9rhbc32v.js} +14 -14
- package/web-dist/chunks/{Accordion-37n4bt3g.js → Accordion-ae7m1dkn.js} +2 -2
- package/web-dist/chunks/{Accordion-ekjwm5dw.js → Accordion-ansfkmye.js} +4 -4
- package/web-dist/chunks/{Accordion-qyssgtwe.js → Accordion-apwk2wjr.js} +2 -2
- package/web-dist/chunks/{Accordion-vjgk1sz7.js → Accordion-avnt7nkz.js} +2 -2
- package/web-dist/chunks/{Accordion-wxbh98kp.js → Accordion-brt4drx3.js} +9 -9
- package/web-dist/chunks/{Accordion-6ytrt7xj.js → Accordion-cs8k948c.js} +6 -6
- package/web-dist/chunks/{Accordion-693gvpde.js → Accordion-egq42kdy.js} +4 -4
- package/web-dist/chunks/{Accordion-8bxy3g7a.js → Accordion-fvkwq99h.js} +4 -4
- package/web-dist/chunks/{Accordion-mbqtk7y0.js → Accordion-g0c439br.js} +2 -2
- package/web-dist/chunks/{Accordion-3m6de80j.js → Accordion-h46676ex.js} +2 -2
- package/web-dist/chunks/{Accordion-7y9wt946.js → Accordion-hwd5ntgm.js} +2 -2
- package/web-dist/chunks/{Accordion-k6dg8zd2.js → Accordion-jdwwf626.js} +3 -3
- package/web-dist/chunks/{Accordion-q9zge7kd.js → Accordion-jkhq422b.js} +2 -2
- package/web-dist/chunks/{Accordion-p0fh69qq.js → Accordion-jtrpmvzs.js} +6 -6
- package/web-dist/chunks/{Accordion-tdjh81ax.js → Accordion-k8tfv274.js} +6 -6
- package/web-dist/chunks/{Accordion-1xpq9bxk.js → Accordion-kcwdwd5z.js} +8 -8
- package/web-dist/chunks/{Accordion-v4n4ygwn.js → Accordion-kpap0trj.js} +1 -1
- package/web-dist/chunks/{Accordion-rmp9sfra.js → Accordion-kpxyryke.js} +2 -2
- package/web-dist/chunks/{Accordion-wgesygtk.js → Accordion-mdc214tk.js} +11 -11
- package/web-dist/chunks/{Accordion-nkd7nhyx.js → Accordion-nanvzve9.js} +5 -5
- package/web-dist/chunks/{Accordion-ph15h010.js → Accordion-nay7yexy.js} +11 -11
- package/web-dist/chunks/{Accordion-9qvmwkxe.js → Accordion-nh0cs9hq.js} +31 -1
- package/web-dist/chunks/{Accordion-snyacfyh.js → Accordion-nj9g6p48.js} +9 -9
- package/web-dist/chunks/{Accordion-dbxpv5eq.js → Accordion-q1mnv5g8.js} +4 -4
- package/web-dist/chunks/{Accordion-1e1nfhtc.js → Accordion-qj4qxx1p.js} +6 -6
- package/web-dist/chunks/{Accordion-bz2dzbad.js → Accordion-qsxx5q34.js} +10 -10
- package/web-dist/chunks/{Accordion-ancjf7q8.js → Accordion-rg763dfb.js} +4 -4
- package/web-dist/chunks/{Accordion-g2d4fskg.js → Accordion-rkt7qdmj.js} +2 -2
- package/web-dist/chunks/{Accordion-pvz3r99n.js → Accordion-sek2q4r1.js} +1 -1
- package/web-dist/chunks/{Accordion-0yhkg017.js → Accordion-sxfqnnx6.js} +10 -10
- package/web-dist/chunks/{Accordion-wytj5wwc.js → Accordion-sxzax4x4.js} +4 -4
- package/web-dist/chunks/{Accordion-e2kr1z3g.js → Accordion-t3hm5tcv.js} +6 -6
- package/web-dist/chunks/{Accordion-0yvepteg.js → Accordion-vewrj1kr.js} +6 -6
- package/web-dist/chunks/Accordion-vgkvvdvg.js +4295 -0
- package/web-dist/chunks/{Accordion-kxa15n19.js → Accordion-x3tphbvw.js} +1 -1
- package/web-dist/chunks/{Accordion-ebw6xj6x.js → Accordion-x5v1p4df.js} +5 -5
- package/web-dist/chunks/{Accordion-70g7n6tk.js → Accordion-y2eyyqrk.js} +9 -9
- package/web-dist/chunks/ReadiumCSS-after.css-2389epxb.js +477 -0
- package/web-dist/chunks/ReadiumCSS-after.css-8se5z2w3.js +492 -0
- package/web-dist/chunks/ReadiumCSS-after.css-x15y26r7.js +532 -0
- package/web-dist/chunks/ReadiumCSS-after.css-z23c32jh.js +594 -0
- package/web-dist/chunks/ReadiumCSS-before.css-1t98py7y.js +531 -0
- package/web-dist/chunks/ReadiumCSS-before.css-hszzyv5p.js +531 -0
- package/web-dist/chunks/ReadiumCSS-before.css-mjvegqjq.js +532 -0
- package/web-dist/chunks/ReadiumCSS-before.css-pnpxcrwx.js +531 -0
- package/web-dist/chunks/ReadiumCSS-default.css-8gxjy9na.js +185 -0
- package/web-dist/chunks/ReadiumCSS-default.css-m8ts96nj.js +182 -0
- package/web-dist/chunks/ReadiumCSS-default.css-rg94gstv.js +164 -0
- package/web-dist/chunks/ReadiumCSS-default.css-y8p5hk56.js +164 -0
- package/web-dist/chunks/ReadiumCSS-ebpaj_fonts_patch.css-50yy1az9.js +84 -0
- package/web-dist/chunks/zip-reader-f0yphjb9.js +103 -0
- package/web-dist/components/accordion/Accordion.js +12 -12
- package/web-dist/components/accordion-item/AccordionItem.js +12 -12
- package/web-dist/components/activity-indicator/ActivityIndicator.js +4 -4
- package/web-dist/components/app-bar/AppBar.js +19 -19
- package/web-dist/components/app-header/AppHeader.js +19 -19
- package/web-dist/components/app-shell/AppShell.js +6 -6
- package/web-dist/components/auth-screen/AuthScreen.js +21 -21
- package/web-dist/components/avatar/Avatar.js +12 -12
- package/web-dist/components/avatar-group/AvatarGroup.js +12 -12
- package/web-dist/components/badge/Badge.js +7 -7
- package/web-dist/components/barcode-scanner-view/BarcodeScannerView.js +20 -20
- package/web-dist/components/bottom-sheet/BottomSheet.js +8 -8
- package/web-dist/components/bottom-sheet-flat-list/BottomSheetFlatList.js +8 -8
- package/web-dist/components/bottom-sheet-scroll-view/BottomSheetScrollView.js +8 -8
- package/web-dist/components/bottom-sheet-section-list/BottomSheetSectionList.js +8 -8
- package/web-dist/components/bottom-sheet-view/BottomSheetView.js +8 -8
- package/web-dist/components/bottom-sheet-virtualized-list/BottomSheetVirtualizedList.js +8 -8
- package/web-dist/components/breadcrumbs/Breadcrumbs.js +14 -14
- package/web-dist/components/button/Button.js +12 -12
- package/web-dist/components/button-group/ButtonGroup.js +12 -12
- package/web-dist/components/camera-permission-view/CameraPermissionView.js +20 -20
- package/web-dist/components/card/Card.js +19 -19
- package/web-dist/components/card-back/CardBack.js +4 -4
- package/web-dist/components/card-hand/CardHand.js +4 -4
- package/web-dist/components/chat-list-item/ChatListItem.js +16 -16
- package/web-dist/components/checkbox/Checkbox.js +12 -12
- package/web-dist/components/checkbox-group/CheckboxGroup.js +12 -12
- package/web-dist/components/chess-board/ChessBoard.js +4 -4
- package/web-dist/components/chip/Chip.js +13 -13
- package/web-dist/components/chip-group/ChipGroup.js +13 -13
- package/web-dist/components/collection-editor/CollectionEditor.js +19 -19
- package/web-dist/components/content-rail/ContentRail.js +14 -14
- package/web-dist/components/data-table/DataTable.js +27 -27
- package/web-dist/components/date-picker/DatePicker.js +17 -17
- package/web-dist/components/dialog/Dialog.js +12 -12
- package/web-dist/components/divider/Divider.js +6 -6
- package/web-dist/components/empty-state/EmptyState.js +20 -20
- package/web-dist/components/field/Field.js +12 -12
- package/web-dist/components/flat-list/FlatList.js +13 -13
- package/web-dist/components/forgot-password-form/ForgotPasswordForm.js +21 -21
- package/web-dist/components/form/Form.js +16 -16
- package/web-dist/components/form-actions/FormActions.js +16 -16
- package/web-dist/components/form-error/FormError.js +16 -16
- package/web-dist/components/game/Game.js +7 -7
- package/web-dist/components/game-entity/GameEntity.js +7 -7
- package/web-dist/components/game-field/GameField.js +7 -7
- package/web-dist/components/game-input-zone/GameInputZone.js +7 -7
- package/web-dist/components/game-measurement-probe/GameMeasurementProbe.js +7 -7
- package/web-dist/components/game-overlay/GameOverlay.js +7 -7
- package/web-dist/components/gradient/Gradient.js +7 -7
- package/web-dist/components/gradient-renderer-provider/GradientRendererProvider.js +7 -7
- package/web-dist/components/graph-view/GraphView.js +1 -1
- package/web-dist/components/grid/Grid.js +6 -6
- package/web-dist/components/heading/Heading.js +6 -6
- package/web-dist/components/hero/Hero.js +19 -19
- package/web-dist/components/icon/Icon.js +4 -4
- package/web-dist/components/icon-button/IconButton.js +12 -12
- package/web-dist/components/image/Image.js +10 -10
- package/web-dist/components/keyboard-avoiding-view/KeyboardAvoidingView.js +3 -3
- package/web-dist/components/list/List.js +13 -13
- package/web-dist/components/list-item/ListItem.js +13 -13
- package/web-dist/components/list-section/ListSection.js +13 -13
- package/web-dist/components/media-card/MediaCard.js +19 -19
- package/web-dist/components/message-bubble/MessageBubble.js +16 -16
- package/web-dist/components/metric-card/MetricCard.js +19 -19
- package/web-dist/components/missing-element/MissingElement.js +12 -12
- package/web-dist/components/o-auth-provider-button/OAuthProviderButton.js +21 -21
- package/web-dist/components/o-auth-provider-list/OAuthProviderList.js +21 -21
- package/web-dist/components/opening-book/OpeningBook.js +4 -4
- package/web-dist/components/otp-form/OtpForm.js +21 -21
- package/web-dist/components/pagination/Pagination.js +13 -13
- package/web-dist/components/palette-item/PaletteItem.js +19 -19
- package/web-dist/components/playing-card/PlayingCard.js +4 -4
- package/web-dist/components/poker-training-table/PokerTrainingTable.js +4 -4
- package/web-dist/components/popover-menu/PopoverMenu.js +14 -14
- package/web-dist/components/post-card/PostCard.js +19 -19
- package/web-dist/components/product-card/ProductCard.js +19 -19
- package/web-dist/components/progress/Progress.js +10 -10
- package/web-dist/components/progress-ring/ProgressRing.js +10 -10
- package/web-dist/components/radio/Radio.js +14 -14
- package/web-dist/components/radio-group/RadioGroup.js +14 -14
- package/web-dist/components/rating/Rating.js +9 -9
- package/web-dist/components/reader/Reader.d.ts +3 -0
- package/web-dist/components/reader/Reader.js +38562 -0
- package/web-dist/components/reader/index.d.ts +1 -0
- package/web-dist/components/reader/index.js +2 -0
- package/web-dist/components/scan-overlay/ScanOverlay.js +20 -20
- package/web-dist/components/screen/Screen.js +6 -6
- package/web-dist/components/screen-section/ScreenSection.js +10 -10
- package/web-dist/components/scroll-view/ScrollView.js +6 -6
- package/web-dist/components/search-input/SearchInput.js +13 -13
- package/web-dist/components/section-header/SectionHeader.js +10 -10
- package/web-dist/components/section-list/SectionList.js +13 -13
- package/web-dist/components/select/Select.js +16 -16
- package/web-dist/components/selectable-item/SelectableItem.js +6 -6
- package/web-dist/components/selection-provider/SelectionProvider.js +6 -6
- package/web-dist/components/sign-in-form/SignInForm.js +21 -21
- package/web-dist/components/sign-up-form/SignUpForm.js +21 -21
- package/web-dist/components/skeleton/Skeleton.js +22 -22
- package/web-dist/components/skeleton-card/SkeletonCard.js +22 -22
- package/web-dist/components/skeleton-list/SkeletonList.js +22 -22
- package/web-dist/components/skeleton-text/SkeletonText.js +22 -22
- package/web-dist/components/surface/Surface.js +7 -7
- package/web-dist/components/switch/Switch.js +7 -7
- package/web-dist/components/tab/Tab.js +7 -7
- package/web-dist/components/tab-list/TabList.js +7 -7
- package/web-dist/components/tab-panel/TabPanel.js +7 -7
- package/web-dist/components/tabletop-table/TabletopTable.js +4 -4
- package/web-dist/components/tabs/Tabs.js +7 -7
- package/web-dist/components/text/Text.js +6 -6
- package/web-dist/components/text-input/TextInput.js +13 -13
- package/web-dist/components/time-picker/TimePicker.js +18 -18
- package/web-dist/components/timeline/Timeline.js +11 -11
- package/web-dist/components/toast/Toast.js +9 -9
- package/web-dist/components/toast-provider/ToastProvider.js +9 -9
- package/web-dist/components/toolbar/Toolbar.js +19 -19
- package/web-dist/components/tree-item/TreeItem.js +18 -18
- package/web-dist/components/uploader/Uploader.js +22 -22
- package/web-dist/components/view/View.js +6 -6
- package/web-dist/manifest.json +1615 -1601
- package/web-dist/runtime/ZoraProvider.js +9 -9
- package/dist/features/reader/adapters/inbound/ReaderSurface.d.ts +0 -11
- package/dist/features/reader/adapters/inbound/ReaderSurface.d.ts.map +0 -1
- package/dist/features/reader/adapters/inbound/ReaderSurface.js.map +0 -1
- package/web-dist/components/reader-surface/ReaderSurface.d.ts +0 -3
- package/web-dist/components/reader-surface/ReaderSurface.js +0 -360
- package/web-dist/components/reader-surface/index.d.ts +0 -1
- package/web-dist/components/reader-surface/index.js +0 -2
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import {
|
|
3
3
|
ResponsiveProvider
|
|
4
|
-
} from "../chunks/Accordion-
|
|
4
|
+
} from "../chunks/Accordion-3hg1wprb.js";
|
|
5
5
|
import {
|
|
6
6
|
resolvePointerEvents
|
|
7
|
-
} from "../chunks/Accordion-
|
|
7
|
+
} from "../chunks/Accordion-sxzax4x4.js";
|
|
8
8
|
import {
|
|
9
9
|
sortOverlayEntries,
|
|
10
10
|
OverlayStackContext,
|
|
@@ -20,22 +20,22 @@ import {
|
|
|
20
20
|
useTheme,
|
|
21
21
|
zoraDefaultTheme,
|
|
22
22
|
ZoraThemeRuntimeContext
|
|
23
|
-
} from "../chunks/Accordion-
|
|
23
|
+
} from "../chunks/Accordion-sek2q4r1.js";
|
|
24
24
|
import {
|
|
25
25
|
ToastProvider3
|
|
26
|
-
} from "../chunks/Accordion-
|
|
27
|
-
import"../chunks/Accordion-
|
|
28
|
-
import"../chunks/Accordion-
|
|
26
|
+
} from "../chunks/Accordion-2q6p67xe.js";
|
|
27
|
+
import"../chunks/Accordion-rkt7qdmj.js";
|
|
28
|
+
import"../chunks/Accordion-kpxyryke.js";
|
|
29
29
|
import"../chunks/Accordion-eqvdv7tt.js";
|
|
30
30
|
import"../chunks/Accordion-ys214jt5.js";
|
|
31
31
|
import {
|
|
32
32
|
useZoraTheme2
|
|
33
|
-
} from "../chunks/Accordion-
|
|
34
|
-
import"../chunks/Accordion-
|
|
33
|
+
} from "../chunks/Accordion-1dah5bqg.js";
|
|
34
|
+
import"../chunks/Accordion-kpap0trj.js";
|
|
35
35
|
import"../chunks/Accordion-fre84yaq.js";
|
|
36
36
|
import {
|
|
37
37
|
__toESM
|
|
38
|
-
} from "../chunks/Accordion-
|
|
38
|
+
} from "../chunks/Accordion-nh0cs9hq.js";
|
|
39
39
|
import {
|
|
40
40
|
deepMerge
|
|
41
41
|
} from "../chunks/Accordion-59pa0677.js";
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { ReaderSurfaceProps } from '../../../../types/reader';
|
|
3
|
-
/***
|
|
4
|
-
* Adapter-neutral reader shell for EPUB and PDF experiences.
|
|
5
|
-
*
|
|
6
|
-
* Supply the actual renderer through `viewport`; ZORA owns only the reader
|
|
7
|
-
* chrome, controlled state, progress, accessible controls, and normalized
|
|
8
|
-
* adapter callbacks.
|
|
9
|
-
*/
|
|
10
|
-
export declare const ReaderSurface: (props: ReaderSurfaceProps) => React.ReactElement | null;
|
|
11
|
-
//# sourceMappingURL=ReaderSurface.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReaderSurface.d.ts","sourceRoot":"","sources":["../../../../../src/features/reader/adapters/inbound/ReaderSurface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAgB,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAmVjF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,0DAAyC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReaderSurface.js","sourceRoot":"","sources":["../../../../../src/features/reader/adapters/inbound/ReaderSurface.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type { ReaderStatus, ReaderSurfaceProps } from '../../../../types/reader';\nimport { AppBar } from '../../../app-bar/public';\nimport { IconButton } from '../../../button/public';\nimport { View } from '../../../layout/public';\nimport { Progress } from '../../../progress/public';\nimport { Surface } from '../../../surface/public';\nimport { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';\nimport { useZoraTheme } from '../../../theme/composition/useZoraTheme';\nimport { Text } from '../../../typography/public';\nimport { resolveReaderProgress } from '../../utils/resolveReaderProgress';\n\nfunction resolvePageLabel(page: number | undefined, pageCount: number | undefined): string | null {\n if (page === undefined || !Number.isFinite(page)) return null;\n if (pageCount === undefined || !Number.isFinite(pageCount)) return `Page ${page}`;\n return `Page ${page} of ${pageCount}`;\n}\n\nfunction resolveCanGoPrevious({\n canGoPrevious,\n page,\n}: Pick<ReaderSurfaceProps, 'canGoPrevious' | 'page'>): boolean {\n if (canGoPrevious !== undefined) return canGoPrevious;\n return page === undefined || page > 1;\n}\n\nfunction resolveCanGoNext({\n canGoNext,\n page,\n pageCount,\n}: Pick<ReaderSurfaceProps, 'canGoNext' | 'page' | 'pageCount'>): boolean {\n if (canGoNext !== undefined) return canGoNext;\n return page === undefined || pageCount === undefined || page < pageCount;\n}\n\nfunction ReaderEmptyState({\n status,\n loadingLabel,\n errorTitle,\n unavailableTitle,\n}: {\n status: ReaderStatus;\n loadingLabel: string;\n errorTitle: string;\n unavailableTitle: string;\n}) {\n const title =\n status === 'loading' ? loadingLabel : status === 'error' ? errorTitle : unavailableTitle;\n\n return (\n <View align=\"center\" justify=\"center\" flex={1} minHeight={360} p=\"l\">\n <Text align=\"center\" emphasis=\"muted\" variant=\"bodySmall\">\n {title}\n </Text>\n </View>\n );\n}\n\nfunction invokeReaderAction(action: (() => void | Promise<void>) | undefined): void {\n void action?.();\n}\n\nfunction ReaderHeader({\n interactionPolicy,\n title,\n subtitle,\n contentsLabel,\n appearanceLabel,\n highlightLabel,\n highlighted,\n headerActions,\n onOpenContents,\n onOpenAppearance,\n onToggleHighlight,\n}: Pick<\n ReaderSurfaceProps,\n | 'interactionPolicy'\n | 'title'\n | 'subtitle'\n | 'contentsLabel'\n | 'appearanceLabel'\n | 'highlightLabel'\n | 'highlighted'\n | 'headerActions'\n | 'onOpenContents'\n | 'onOpenAppearance'\n | 'onToggleHighlight'\n>) {\n const actions =\n onOpenContents || onOpenAppearance || onToggleHighlight || headerActions ? (\n <View direction=\"row\" align=\"center\" gap=\"xs\" wrap=\"nowrap\">\n {onOpenContents ? (\n <IconButton\n icon={{ name: 'list-outline' }}\n interactionPolicy={interactionPolicy}\n label={contentsLabel ?? 'Table of contents'}\n onPress={() => invokeReaderAction(onOpenContents)}\n size=\"l\"\n />\n ) : null}\n {onOpenAppearance ? (\n <IconButton\n icon={{ name: 'text-outline' }}\n interactionPolicy={interactionPolicy}\n label={appearanceLabel ?? 'Reading appearance'}\n onPress={() => invokeReaderAction(onOpenAppearance)}\n size=\"l\"\n />\n ) : null}\n {onToggleHighlight ? (\n <IconButton\n color={highlighted ? 'primary' : 'neutral'}\n icon={{ name: highlighted ? 'bookmark' : 'bookmark-outline' }}\n interactionPolicy={interactionPolicy}\n label={highlightLabel ?? 'Toggle highlight'}\n onPress={() => invokeReaderAction(onToggleHighlight)}\n size=\"l\"\n />\n ) : null}\n {headerActions}\n </View>\n ) : undefined;\n\n return (\n <AppBar\n actions={actions}\n divider\n interactionPolicy={interactionPolicy}\n safeAreaTop\n subtitle={subtitle}\n title={title}\n />\n );\n}\n\nfunction ReaderFooter({\n interactionPolicy,\n status,\n page,\n pageCount,\n progress,\n canGoPrevious,\n canGoNext,\n chapterLabel,\n pageLabel,\n previousPageLabel,\n nextPageLabel,\n footerActions,\n onPreviousPage,\n onNextPage,\n}: Pick<\n ReaderSurfaceProps,\n | 'interactionPolicy'\n | 'status'\n | 'page'\n | 'pageCount'\n | 'progress'\n | 'canGoPrevious'\n | 'canGoNext'\n | 'chapterLabel'\n | 'pageLabel'\n | 'previousPageLabel'\n | 'nextPageLabel'\n | 'footerActions'\n | 'onPreviousPage'\n | 'onNextPage'\n>) {\n const { theme } = useZoraTheme();\n const resolvedProgress = resolveReaderProgress({ progress, page, pageCount });\n const resolvedPageLabel = pageLabel ?? resolvePageLabel(page, pageCount);\n const previousEnabled =\n status === 'ready' && Boolean(onPreviousPage) && resolveCanGoPrevious({ canGoPrevious, page });\n const nextEnabled =\n status === 'ready' && Boolean(onNextPage) && resolveCanGoNext({ canGoNext, page, pageCount });\n\n return (\n <View\n bg={theme.semantics.surface.raised}\n borderColor={theme.semantics.neutral.divider}\n borderWidth={1}\n gap=\"s\"\n p=\"m\"\n >\n <Progress value={resolvedProgress} max={1} size=\"s\" />\n <View align=\"center\" direction=\"row\" gap=\"m\" justify=\"space-between\" wrap=\"nowrap\">\n <IconButton\n disabled={!previousEnabled}\n icon={{ name: 'chevron-back' }}\n interactionPolicy={interactionPolicy}\n label={previousPageLabel ?? 'Previous page'}\n onPress={() => invokeReaderAction(onPreviousPage)}\n size=\"l\"\n />\n <View flex={1} minWidth={0}>\n <View align=\"center\" gap=\"xs\">\n {chapterLabel ? (\n <Text\n align=\"center\"\n ellipsizeMode=\"tail\"\n numberOfLines={1}\n variant=\"label\"\n weight=\"semiBold\"\n >\n {chapterLabel}\n </Text>\n ) : null}\n {resolvedPageLabel ? (\n <Text\n accessibilityLiveRegion=\"polite\"\n align=\"center\"\n emphasis=\"muted\"\n variant=\"caption\"\n >\n {resolvedPageLabel}\n </Text>\n ) : null}\n </View>\n </View>\n <IconButton\n disabled={!nextEnabled}\n icon={{ name: 'chevron-forward' }}\n interactionPolicy={interactionPolicy}\n label={nextPageLabel ?? 'Next page'}\n onPress={() => invokeReaderAction(onNextPage)}\n size=\"l\"\n />\n </View>\n {footerActions ? <View>{footerActions}</View> : null}\n </View>\n );\n}\n\nfunction ReaderSurfaceInner({\n themeId: _themeId,\n mode: _mode,\n interactionPolicy,\n source: _source,\n format: _format,\n location: _location,\n status = 'idle',\n page,\n pageCount,\n progress,\n canGoPrevious,\n canGoNext,\n title,\n subtitle,\n chapterLabel,\n pageLabel,\n previousPageLabel = 'Previous page',\n nextPageLabel = 'Next page',\n contentsLabel = 'Table of contents',\n appearanceLabel = 'Reading appearance',\n highlightLabel = 'Toggle highlight',\n loadingLabel = 'Loading document…',\n errorTitle = 'Unable to open this document.',\n unavailableTitle = 'Reader preview unavailable.',\n showChrome = true,\n readerColorScheme: _readerColorScheme = 'system',\n fontScale: _fontScale = 1,\n lineHeight: _lineHeight = 'normal',\n highlighted = false,\n viewport,\n headerActions,\n footerActions,\n onPreviousPage,\n onNextPage,\n onLocationChange: _onLocationChange,\n onOpenContents,\n onOpenAppearance,\n onToggleHighlight,\n onOpenExternalLink: _onOpenExternalLink,\n onReaderError: _onReaderError,\n testID,\n}: ReaderSurfaceProps) {\n const { theme } = useZoraTheme();\n\n const viewportContent =\n viewport && status !== 'error' ? (\n viewport\n ) : (\n <ReaderEmptyState\n errorTitle={errorTitle}\n loadingLabel={loadingLabel}\n status={status}\n unavailableTitle={unavailableTitle}\n />\n );\n\n return (\n <Surface\n radius=\"l\"\n testID={testID}\n variant=\"default\"\n style={{ minHeight: 480, overflow: 'hidden' }}\n >\n <View flex={1} gap={0}>\n {showChrome ? (\n <ReaderHeader\n appearanceLabel={appearanceLabel}\n contentsLabel={contentsLabel}\n headerActions={headerActions}\n highlightLabel={highlightLabel}\n highlighted={highlighted}\n interactionPolicy={interactionPolicy}\n onOpenAppearance={onOpenAppearance}\n onOpenContents={onOpenContents}\n onToggleHighlight={onToggleHighlight}\n subtitle={subtitle}\n title={title}\n />\n ) : null}\n\n <View bg={theme.semantics.surface.default} flex={1} minHeight={360} overflow=\"hidden\">\n {viewportContent}\n </View>\n\n {showChrome ? (\n <ReaderFooter\n canGoNext={canGoNext}\n canGoPrevious={canGoPrevious}\n chapterLabel={chapterLabel}\n footerActions={footerActions}\n interactionPolicy={interactionPolicy}\n nextPageLabel={nextPageLabel}\n onNextPage={onNextPage}\n onPreviousPage={onPreviousPage}\n page={page}\n pageCount={pageCount}\n pageLabel={pageLabel}\n previousPageLabel={previousPageLabel}\n progress={progress}\n status={status}\n />\n ) : null}\n </View>\n </Surface>\n );\n}\n\n/***\n * Adapter-neutral reader shell for EPUB and PDF experiences.\n *\n * Supply the actual renderer through `viewport`; ZORA owns only the reader\n * chrome, controlled state, progress, accessible controls, and normalized\n * adapter callbacks.\n */\nexport const ReaderSurface = withZoraThemeScope(ReaderSurfaceInner);\n"]}
|
|
@@ -1,360 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import {
|
|
3
|
-
AppBar2
|
|
4
|
-
} from "../../chunks/Accordion-wxbh98kp.js";
|
|
5
|
-
import"../../chunks/Accordion-gkx1kszz.js";
|
|
6
|
-
import"../../chunks/Accordion-wytj5wwc.js";
|
|
7
|
-
import"../../chunks/Accordion-pvz3r99n.js";
|
|
8
|
-
import"../../chunks/Accordion-bfzeab9x.js";
|
|
9
|
-
import"../../chunks/Accordion-mbqtk7y0.js";
|
|
10
|
-
import"../../chunks/Accordion-8bxy3g7a.js";
|
|
11
|
-
import"../../chunks/Accordion-rmp9sfra.js";
|
|
12
|
-
import {
|
|
13
|
-
IconButton2
|
|
14
|
-
} from "../../chunks/Accordion-snyacfyh.js";
|
|
15
|
-
import {
|
|
16
|
-
withZoraThemeScope
|
|
17
|
-
} from "../../chunks/Accordion-8z7naxj2.js";
|
|
18
|
-
import {
|
|
19
|
-
View2
|
|
20
|
-
} from "../../chunks/Accordion-0yvepteg.js";
|
|
21
|
-
import"../../chunks/Accordion-6zb9d92y.js";
|
|
22
|
-
import"../../chunks/Accordion-3m6de80j.js";
|
|
23
|
-
import"../../chunks/Accordion-mnac2z83.js";
|
|
24
|
-
import"../../chunks/Accordion-0gfsj9qh.js";
|
|
25
|
-
import"../../chunks/Accordion-vjgk1sz7.js";
|
|
26
|
-
import"../../chunks/Accordion-g2d4fskg.js";
|
|
27
|
-
import"../../chunks/Accordion-ph15h010.js";
|
|
28
|
-
import"../../chunks/Accordion-37n4bt3g.js";
|
|
29
|
-
import {
|
|
30
|
-
Text3
|
|
31
|
-
} from "../../chunks/Accordion-e2kr1z3g.js";
|
|
32
|
-
import {
|
|
33
|
-
Progress2
|
|
34
|
-
} from "../../chunks/Accordion-m4brcz8v.js";
|
|
35
|
-
import {
|
|
36
|
-
Surface2
|
|
37
|
-
} from "../../chunks/Accordion-qyssgtwe.js";
|
|
38
|
-
import"../../chunks/Accordion-eqvdv7tt.js";
|
|
39
|
-
import"../../chunks/Accordion-61e19g3e.js";
|
|
40
|
-
import"../../chunks/Accordion-ys214jt5.js";
|
|
41
|
-
import"../../chunks/Accordion-kxa15n19.js";
|
|
42
|
-
import {
|
|
43
|
-
useZoraTheme2
|
|
44
|
-
} from "../../chunks/Accordion-6xrse5my.js";
|
|
45
|
-
import"../../chunks/Accordion-v4n4ygwn.js";
|
|
46
|
-
import"../../chunks/Accordion-fre84yaq.js";
|
|
47
|
-
|
|
48
|
-
// src/features/reader/utils/resolveReaderProgress.ts
|
|
49
|
-
function resolveReaderProgress({
|
|
50
|
-
progress,
|
|
51
|
-
page,
|
|
52
|
-
pageCount
|
|
53
|
-
}) {
|
|
54
|
-
if (progress !== undefined && Number.isFinite(progress)) {
|
|
55
|
-
return Math.min(1, Math.max(0, progress));
|
|
56
|
-
}
|
|
57
|
-
if (page === undefined || pageCount === undefined || !Number.isFinite(page) || !Number.isFinite(pageCount) || pageCount < 1) {
|
|
58
|
-
return 0;
|
|
59
|
-
}
|
|
60
|
-
if (pageCount === 1) {
|
|
61
|
-
return 1;
|
|
62
|
-
}
|
|
63
|
-
return Math.min(1, Math.max(0, (page - 1) / (pageCount - 1)));
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// src/features/reader/adapters/inbound/ReaderSurface.tsx
|
|
67
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
68
|
-
function resolvePageLabel(page, pageCount) {
|
|
69
|
-
if (page === undefined || !Number.isFinite(page))
|
|
70
|
-
return null;
|
|
71
|
-
if (pageCount === undefined || !Number.isFinite(pageCount))
|
|
72
|
-
return `Page ${page}`;
|
|
73
|
-
return `Page ${page} of ${pageCount}`;
|
|
74
|
-
}
|
|
75
|
-
function resolveCanGoPrevious({
|
|
76
|
-
canGoPrevious,
|
|
77
|
-
page
|
|
78
|
-
}) {
|
|
79
|
-
if (canGoPrevious !== undefined)
|
|
80
|
-
return canGoPrevious;
|
|
81
|
-
return page === undefined || page > 1;
|
|
82
|
-
}
|
|
83
|
-
function resolveCanGoNext({
|
|
84
|
-
canGoNext,
|
|
85
|
-
page,
|
|
86
|
-
pageCount
|
|
87
|
-
}) {
|
|
88
|
-
if (canGoNext !== undefined)
|
|
89
|
-
return canGoNext;
|
|
90
|
-
return page === undefined || pageCount === undefined || page < pageCount;
|
|
91
|
-
}
|
|
92
|
-
function ReaderEmptyState({
|
|
93
|
-
status,
|
|
94
|
-
loadingLabel,
|
|
95
|
-
errorTitle,
|
|
96
|
-
unavailableTitle
|
|
97
|
-
}) {
|
|
98
|
-
const title = status === "loading" ? loadingLabel : status === "error" ? errorTitle : unavailableTitle;
|
|
99
|
-
return /* @__PURE__ */ jsx(View2, {
|
|
100
|
-
align: "center",
|
|
101
|
-
justify: "center",
|
|
102
|
-
flex: 1,
|
|
103
|
-
minHeight: 360,
|
|
104
|
-
p: "l",
|
|
105
|
-
children: /* @__PURE__ */ jsx(Text3, {
|
|
106
|
-
align: "center",
|
|
107
|
-
emphasis: "muted",
|
|
108
|
-
variant: "bodySmall",
|
|
109
|
-
children: title
|
|
110
|
-
})
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
function invokeReaderAction(action) {
|
|
114
|
-
action?.();
|
|
115
|
-
}
|
|
116
|
-
function ReaderHeader({
|
|
117
|
-
interactionPolicy,
|
|
118
|
-
title,
|
|
119
|
-
subtitle,
|
|
120
|
-
contentsLabel,
|
|
121
|
-
appearanceLabel,
|
|
122
|
-
highlightLabel,
|
|
123
|
-
highlighted,
|
|
124
|
-
headerActions,
|
|
125
|
-
onOpenContents,
|
|
126
|
-
onOpenAppearance,
|
|
127
|
-
onToggleHighlight
|
|
128
|
-
}) {
|
|
129
|
-
const actions = onOpenContents || onOpenAppearance || onToggleHighlight || headerActions ? /* @__PURE__ */ jsxs(View2, {
|
|
130
|
-
direction: "row",
|
|
131
|
-
align: "center",
|
|
132
|
-
gap: "xs",
|
|
133
|
-
wrap: "nowrap",
|
|
134
|
-
children: [
|
|
135
|
-
onOpenContents ? /* @__PURE__ */ jsx(IconButton2, {
|
|
136
|
-
icon: { name: "list-outline" },
|
|
137
|
-
interactionPolicy,
|
|
138
|
-
label: contentsLabel ?? "Table of contents",
|
|
139
|
-
onPress: () => invokeReaderAction(onOpenContents),
|
|
140
|
-
size: "l"
|
|
141
|
-
}) : null,
|
|
142
|
-
onOpenAppearance ? /* @__PURE__ */ jsx(IconButton2, {
|
|
143
|
-
icon: { name: "text-outline" },
|
|
144
|
-
interactionPolicy,
|
|
145
|
-
label: appearanceLabel ?? "Reading appearance",
|
|
146
|
-
onPress: () => invokeReaderAction(onOpenAppearance),
|
|
147
|
-
size: "l"
|
|
148
|
-
}) : null,
|
|
149
|
-
onToggleHighlight ? /* @__PURE__ */ jsx(IconButton2, {
|
|
150
|
-
color: highlighted ? "primary" : "neutral",
|
|
151
|
-
icon: { name: highlighted ? "bookmark" : "bookmark-outline" },
|
|
152
|
-
interactionPolicy,
|
|
153
|
-
label: highlightLabel ?? "Toggle highlight",
|
|
154
|
-
onPress: () => invokeReaderAction(onToggleHighlight),
|
|
155
|
-
size: "l"
|
|
156
|
-
}) : null,
|
|
157
|
-
headerActions
|
|
158
|
-
]
|
|
159
|
-
}) : undefined;
|
|
160
|
-
return /* @__PURE__ */ jsx(AppBar2, {
|
|
161
|
-
actions,
|
|
162
|
-
divider: true,
|
|
163
|
-
interactionPolicy,
|
|
164
|
-
safeAreaTop: true,
|
|
165
|
-
subtitle,
|
|
166
|
-
title
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
function ReaderFooter({
|
|
170
|
-
interactionPolicy,
|
|
171
|
-
status,
|
|
172
|
-
page,
|
|
173
|
-
pageCount,
|
|
174
|
-
progress,
|
|
175
|
-
canGoPrevious,
|
|
176
|
-
canGoNext,
|
|
177
|
-
chapterLabel,
|
|
178
|
-
pageLabel,
|
|
179
|
-
previousPageLabel,
|
|
180
|
-
nextPageLabel,
|
|
181
|
-
footerActions,
|
|
182
|
-
onPreviousPage,
|
|
183
|
-
onNextPage
|
|
184
|
-
}) {
|
|
185
|
-
const { theme } = useZoraTheme2();
|
|
186
|
-
const resolvedProgress = resolveReaderProgress({ progress, page, pageCount });
|
|
187
|
-
const resolvedPageLabel = pageLabel ?? resolvePageLabel(page, pageCount);
|
|
188
|
-
const previousEnabled = status === "ready" && Boolean(onPreviousPage) && resolveCanGoPrevious({ canGoPrevious, page });
|
|
189
|
-
const nextEnabled = status === "ready" && Boolean(onNextPage) && resolveCanGoNext({ canGoNext, page, pageCount });
|
|
190
|
-
return /* @__PURE__ */ jsxs(View2, {
|
|
191
|
-
bg: theme.semantics.surface.raised,
|
|
192
|
-
borderColor: theme.semantics.neutral.divider,
|
|
193
|
-
borderWidth: 1,
|
|
194
|
-
gap: "s",
|
|
195
|
-
p: "m",
|
|
196
|
-
children: [
|
|
197
|
-
/* @__PURE__ */ jsx(Progress2, {
|
|
198
|
-
value: resolvedProgress,
|
|
199
|
-
max: 1,
|
|
200
|
-
size: "s"
|
|
201
|
-
}),
|
|
202
|
-
/* @__PURE__ */ jsxs(View2, {
|
|
203
|
-
align: "center",
|
|
204
|
-
direction: "row",
|
|
205
|
-
gap: "m",
|
|
206
|
-
justify: "space-between",
|
|
207
|
-
wrap: "nowrap",
|
|
208
|
-
children: [
|
|
209
|
-
/* @__PURE__ */ jsx(IconButton2, {
|
|
210
|
-
disabled: !previousEnabled,
|
|
211
|
-
icon: { name: "chevron-back" },
|
|
212
|
-
interactionPolicy,
|
|
213
|
-
label: previousPageLabel ?? "Previous page",
|
|
214
|
-
onPress: () => invokeReaderAction(onPreviousPage),
|
|
215
|
-
size: "l"
|
|
216
|
-
}),
|
|
217
|
-
/* @__PURE__ */ jsx(View2, {
|
|
218
|
-
flex: 1,
|
|
219
|
-
minWidth: 0,
|
|
220
|
-
children: /* @__PURE__ */ jsxs(View2, {
|
|
221
|
-
align: "center",
|
|
222
|
-
gap: "xs",
|
|
223
|
-
children: [
|
|
224
|
-
chapterLabel ? /* @__PURE__ */ jsx(Text3, {
|
|
225
|
-
align: "center",
|
|
226
|
-
ellipsizeMode: "tail",
|
|
227
|
-
numberOfLines: 1,
|
|
228
|
-
variant: "label",
|
|
229
|
-
weight: "semiBold",
|
|
230
|
-
children: chapterLabel
|
|
231
|
-
}) : null,
|
|
232
|
-
resolvedPageLabel ? /* @__PURE__ */ jsx(Text3, {
|
|
233
|
-
accessibilityLiveRegion: "polite",
|
|
234
|
-
align: "center",
|
|
235
|
-
emphasis: "muted",
|
|
236
|
-
variant: "caption",
|
|
237
|
-
children: resolvedPageLabel
|
|
238
|
-
}) : null
|
|
239
|
-
]
|
|
240
|
-
})
|
|
241
|
-
}),
|
|
242
|
-
/* @__PURE__ */ jsx(IconButton2, {
|
|
243
|
-
disabled: !nextEnabled,
|
|
244
|
-
icon: { name: "chevron-forward" },
|
|
245
|
-
interactionPolicy,
|
|
246
|
-
label: nextPageLabel ?? "Next page",
|
|
247
|
-
onPress: () => invokeReaderAction(onNextPage),
|
|
248
|
-
size: "l"
|
|
249
|
-
})
|
|
250
|
-
]
|
|
251
|
-
}),
|
|
252
|
-
footerActions ? /* @__PURE__ */ jsx(View2, {
|
|
253
|
-
children: footerActions
|
|
254
|
-
}) : null
|
|
255
|
-
]
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
function ReaderSurfaceInner({
|
|
259
|
-
themeId: _themeId,
|
|
260
|
-
mode: _mode,
|
|
261
|
-
interactionPolicy,
|
|
262
|
-
source: _source,
|
|
263
|
-
format: _format,
|
|
264
|
-
location: _location,
|
|
265
|
-
status = "idle",
|
|
266
|
-
page,
|
|
267
|
-
pageCount,
|
|
268
|
-
progress,
|
|
269
|
-
canGoPrevious,
|
|
270
|
-
canGoNext,
|
|
271
|
-
title,
|
|
272
|
-
subtitle,
|
|
273
|
-
chapterLabel,
|
|
274
|
-
pageLabel,
|
|
275
|
-
previousPageLabel = "Previous page",
|
|
276
|
-
nextPageLabel = "Next page",
|
|
277
|
-
contentsLabel = "Table of contents",
|
|
278
|
-
appearanceLabel = "Reading appearance",
|
|
279
|
-
highlightLabel = "Toggle highlight",
|
|
280
|
-
loadingLabel = "Loading document…",
|
|
281
|
-
errorTitle = "Unable to open this document.",
|
|
282
|
-
unavailableTitle = "Reader preview unavailable.",
|
|
283
|
-
showChrome = true,
|
|
284
|
-
readerColorScheme: _readerColorScheme = "system",
|
|
285
|
-
fontScale: _fontScale = 1,
|
|
286
|
-
lineHeight: _lineHeight = "normal",
|
|
287
|
-
highlighted = false,
|
|
288
|
-
viewport,
|
|
289
|
-
headerActions,
|
|
290
|
-
footerActions,
|
|
291
|
-
onPreviousPage,
|
|
292
|
-
onNextPage,
|
|
293
|
-
onLocationChange: _onLocationChange,
|
|
294
|
-
onOpenContents,
|
|
295
|
-
onOpenAppearance,
|
|
296
|
-
onToggleHighlight,
|
|
297
|
-
onOpenExternalLink: _onOpenExternalLink,
|
|
298
|
-
onReaderError: _onReaderError,
|
|
299
|
-
testID
|
|
300
|
-
}) {
|
|
301
|
-
const { theme } = useZoraTheme2();
|
|
302
|
-
const viewportContent = viewport && status !== "error" ? viewport : /* @__PURE__ */ jsx(ReaderEmptyState, {
|
|
303
|
-
errorTitle,
|
|
304
|
-
loadingLabel,
|
|
305
|
-
status,
|
|
306
|
-
unavailableTitle
|
|
307
|
-
});
|
|
308
|
-
return /* @__PURE__ */ jsx(Surface2, {
|
|
309
|
-
radius: "l",
|
|
310
|
-
testID,
|
|
311
|
-
variant: "default",
|
|
312
|
-
style: { minHeight: 480, overflow: "hidden" },
|
|
313
|
-
children: /* @__PURE__ */ jsxs(View2, {
|
|
314
|
-
flex: 1,
|
|
315
|
-
gap: 0,
|
|
316
|
-
children: [
|
|
317
|
-
showChrome ? /* @__PURE__ */ jsx(ReaderHeader, {
|
|
318
|
-
appearanceLabel,
|
|
319
|
-
contentsLabel,
|
|
320
|
-
headerActions,
|
|
321
|
-
highlightLabel,
|
|
322
|
-
highlighted,
|
|
323
|
-
interactionPolicy,
|
|
324
|
-
onOpenAppearance,
|
|
325
|
-
onOpenContents,
|
|
326
|
-
onToggleHighlight,
|
|
327
|
-
subtitle,
|
|
328
|
-
title
|
|
329
|
-
}) : null,
|
|
330
|
-
/* @__PURE__ */ jsx(View2, {
|
|
331
|
-
bg: theme.semantics.surface.default,
|
|
332
|
-
flex: 1,
|
|
333
|
-
minHeight: 360,
|
|
334
|
-
overflow: "hidden",
|
|
335
|
-
children: viewportContent
|
|
336
|
-
}),
|
|
337
|
-
showChrome ? /* @__PURE__ */ jsx(ReaderFooter, {
|
|
338
|
-
canGoNext,
|
|
339
|
-
canGoPrevious,
|
|
340
|
-
chapterLabel,
|
|
341
|
-
footerActions,
|
|
342
|
-
interactionPolicy,
|
|
343
|
-
nextPageLabel,
|
|
344
|
-
onNextPage,
|
|
345
|
-
onPreviousPage,
|
|
346
|
-
page,
|
|
347
|
-
pageCount,
|
|
348
|
-
pageLabel,
|
|
349
|
-
previousPageLabel,
|
|
350
|
-
progress,
|
|
351
|
-
status
|
|
352
|
-
}) : null
|
|
353
|
-
]
|
|
354
|
-
})
|
|
355
|
-
});
|
|
356
|
-
}
|
|
357
|
-
var ReaderSurface = withZoraThemeScope(ReaderSurfaceInner);
|
|
358
|
-
export {
|
|
359
|
-
ReaderSurface
|
|
360
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ReaderSurface';
|