@edrlab/thorium-web 1.1.6 → 1.2.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/dist/{ThPreferencesAdapter-B8AYujCA.d.mts → ThPreferencesAdapter-DrZ5_6Dv.d.mts} +4 -139
- package/dist/{ThSettingsWrapper-BlmAxcWF.d.mts → ThSettingsWrapper-8Kx0SnH4.d.mts} +1 -1
- package/dist/{actions-BRtHsxpm.d.mts → actions-D2CHvCHu.d.mts} +2 -2
- package/dist/{actionsReducer-bT0pfxLJ.d.mts → actionsReducer-kc-S130w.d.mts} +3 -24
- package/dist/chunk-34MVY33F.mjs +913 -0
- package/dist/chunk-34MVY33F.mjs.map +1 -0
- package/dist/{chunk-KJXHAJYK.mjs → chunk-4VHEHMJN.mjs} +128 -11
- package/dist/chunk-4VHEHMJN.mjs.map +1 -0
- package/dist/{chunk-QNYZCQKO.mjs → chunk-72XCX5TD.mjs} +4 -4
- package/dist/chunk-72XCX5TD.mjs.map +1 -0
- package/dist/{chunk-SMK7A7VF.mjs → chunk-7NEQAW7J.mjs} +3 -3
- package/dist/chunk-7NEQAW7J.mjs.map +1 -0
- package/dist/{chunk-SFHOVH6R.mjs → chunk-H4J2VY7Z.mjs} +201 -35
- package/dist/chunk-H4J2VY7Z.mjs.map +1 -0
- package/dist/{chunk-COQXDRKD.mjs → chunk-K3K7TUWM.mjs} +2 -2
- package/dist/chunk-K3K7TUWM.mjs.map +1 -0
- package/dist/{chunk-KTPIH35Y.mjs → chunk-NYZBHYW2.mjs} +5 -3
- package/dist/chunk-NYZBHYW2.mjs.map +1 -0
- package/dist/chunk-RRDEPGBK.mjs +75 -0
- package/dist/chunk-RRDEPGBK.mjs.map +1 -0
- package/dist/chunk-S4M7ED5Q.mjs +407 -0
- package/dist/chunk-S4M7ED5Q.mjs.map +1 -0
- package/dist/components/Epub/index.d.mts +17 -11
- package/dist/components/Epub/index.mjs +12 -831
- package/dist/components/Epub/index.mjs.map +1 -1
- package/dist/components/Misc/index.css +23 -0
- package/dist/components/Misc/index.css.map +1 -1
- package/dist/components/Misc/index.d.mts +10 -1
- package/dist/components/Misc/index.mjs +30 -2
- package/dist/components/Misc/index.mjs.map +1 -1
- package/dist/components/Reader/index.css +1283 -0
- package/dist/components/Reader/index.css.map +1 -0
- package/dist/components/Reader/index.d.mts +30 -0
- package/dist/components/Reader/index.mjs +79 -0
- package/dist/components/Reader/index.mjs.map +1 -0
- package/dist/components/WebPub/index.d.mts +15 -31
- package/dist/components/WebPub/index.mjs +11 -374
- package/dist/components/WebPub/index.mjs.map +1 -1
- package/dist/core/Components/index.d.mts +11 -8
- package/dist/core/Components/index.mjs +1 -1
- package/dist/core/Helpers/index.d.mts +1 -1
- package/dist/core/Hooks/index.d.mts +54 -5
- package/dist/core/Hooks/index.mjs +1 -1
- package/dist/errorHandler-CL2YIfQY.d.mts +26 -0
- package/dist/i18n/index.mjs +4 -4
- package/dist/immer.d-CoRThNOF.d.mts +23 -0
- package/dist/lib/index.d.mts +12 -162
- package/dist/lib/index.mjs +2 -2
- package/dist/locales/el/thorium-web.json +31 -0
- package/dist/locales/en/thorium-web.json +14 -2
- package/dist/locales/et/thorium-web.json +6 -2
- package/dist/locales/fi/thorium-shared.json +14 -8
- package/dist/locales/fi/thorium-web.json +2 -1
- package/dist/locales/fr/thorium-shared.json +100 -0
- package/dist/locales/it/thorium-shared.json +9 -0
- package/dist/locales/lt/thorium-shared.json +22 -13
- package/dist/locales/lt/thorium-web.json +2 -1
- package/dist/locales/pt-PT/thorium-shared.json +64 -1
- package/dist/locales/pt-PT/thorium-web.json +4 -3
- package/dist/locales/sv/thorium-shared.json +61 -3
- package/dist/locales/sv/thorium-web.json +4 -3
- package/dist/preferences/index.d.mts +8 -7
- package/dist/preferences/index.mjs +3 -3
- package/dist/settingsReducer-C1wwCAMv.d.mts +159 -0
- package/dist/{ui-BVlJcPL_.d.mts → ui-CamWuqOo.d.mts} +1 -1
- package/dist/useContrast-D6sjPjxy.d.mts +152 -0
- package/dist/{useEpubNavigator-CsraD65e.d.mts → useEpubNavigator-CwHJfoiV.d.mts} +1 -1
- package/dist/{usePreferences-rfT368__.d.mts → usePreferences-BXFJbval.d.mts} +1 -1
- package/dist/{StatefulReader-CjgFzHoO.d.mts → useReaderTransitions-guT-eA-Q.d.mts} +50 -50
- package/package.json +5 -3
- package/dist/chunk-COQXDRKD.mjs.map +0 -1
- package/dist/chunk-KJXHAJYK.mjs.map +0 -1
- package/dist/chunk-KTPIH35Y.mjs.map +0 -1
- package/dist/chunk-QNYZCQKO.mjs.map +0 -1
- package/dist/chunk-SFHOVH6R.mjs.map +0 -1
- package/dist/chunk-SMK7A7VF.mjs.map +0 -1
- package/dist/useContrast-Cgsrl7GS.d.mts +0 -15
|
@@ -1,382 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
export { StatefulActionIcon, StatefulBottomSheet, StatefulCollapsibleActionsBar, StatefulDockedSheet, StatefulDropdown, StatefulFontFamily, StatefulFullScreenSheet, StatefulFullscreenTrigger, StatefulGroupWrapper, StatefulHyphens, StatefulJumpToPositionContainer, StatefulJumpToPositionTrigger, StatefulLetterSpacing, StatefulLineHeight, StatefulNumberField, StatefulOverflowMenu, StatefulOverflowMenuItem, StatefulParagraphIndent, StatefulParagraphSpacing, StatefulPopoverSheet, StatefulPreferencesProvider, StatefulPublisherStyles, StatefulRadioGroup, StatefulSettingsContainer, StatefulSettingsTrigger, StatefulSheetWrapper, StatefulSlider, StatefulSpacingGroup, StatefulSpacingGroupContainer, StatefulSpacingPresets, StatefulSwitch, StatefulTextAlign, StatefulTextGroup, StatefulTextGroupContainer, StatefulTextNormalize, StatefulTocContainer, StatefulTocTrigger, StatefulWordSpacing, StatefulZoom, UnstableStatefulFontWeight, createDefaultPlugin, useDocking, useGridNavigation, useGridTemplate, useLineHeight, useNavigator, usePublication, useReaderTransitions, useSpacingPresets } from '../../chunk-
|
|
3
|
-
|
|
4
|
-
export { useWebPubNavigator } from '../../chunk-
|
|
5
|
-
export { ThI18nProvider, Trans } from '../../chunk-
|
|
6
|
-
|
|
7
|
-
export {
|
|
8
|
-
|
|
9
|
-
export { ThPreferencesProvider, usePreferences, useTheming } from '../../chunk-SMK7A7VF.mjs';
|
|
1
|
+
export { ExperimentalWebPubStatefulReader } from '../../chunk-S4M7ED5Q.mjs';
|
|
2
|
+
export { StatefulActionIcon, StatefulBottomSheet, StatefulCollapsibleActionsBar, StatefulDockedSheet, StatefulDropdown, StatefulFontFamily, StatefulFullScreenSheet, StatefulFullscreenTrigger, StatefulGroupWrapper, StatefulHyphens, StatefulJumpToPositionContainer, StatefulJumpToPositionTrigger, StatefulLetterSpacing, StatefulLineHeight, StatefulNumberField, StatefulOverflowMenu, StatefulOverflowMenuItem, StatefulParagraphIndent, StatefulParagraphSpacing, StatefulPopoverSheet, StatefulPreferencesProvider, StatefulPublisherStyles, StatefulRadioGroup, StatefulSettingsContainer, StatefulSettingsTrigger, StatefulSheetWrapper, StatefulSlider, StatefulSpacingGroup, StatefulSpacingGroupContainer, StatefulSpacingPresets, StatefulSwitch, StatefulTextAlign, StatefulTextGroup, StatefulTextGroupContainer, StatefulTextNormalize, StatefulTocContainer, StatefulTocTrigger, StatefulWordSpacing, StatefulZoom, UnstableStatefulFontWeight, createDefaultPlugin, useDocking, useGridNavigation, useGridTemplate, useLineHeight, useNavigator, usePublication, useReaderTransitions, useSpacingPresets } from '../../chunk-H4J2VY7Z.mjs';
|
|
3
|
+
export { canRenderProgressionFormat, getBestMatchingProgressionFormat, getSupportedProgressionFormats, isActiveElement, isInteractiveElement, isKeyboardTriggered, makeBreakpointsMap } from '../../chunk-47AIIJFO.mjs';
|
|
4
|
+
export { useWebPubNavigator } from '../../chunk-4VHEHMJN.mjs';
|
|
5
|
+
export { ThI18nProvider, Trans } from '../../chunk-72XCX5TD.mjs';
|
|
6
|
+
export { ThReduxPreferencesAdapter, ThStoreProvider, actionsSlice, activateDockPanel, collapseDockPanel, deactivateDockPanel, dockAction, expandDockPanel, handleSpacingSetting, initialSettingsState, initialWebPubSettingsState, makeStore, preferencesSlice, publicationSlice, readerSlice, setActionOpen, setBreakpoint, setColorScheme, setColumnCount, setContrast, setDirection, setDockPanelWidth, setFXL, setFontFamily, setFontLanguage, setFontSize, setFontWeight, setForcedColors, setFullscreen, setHasArrows, setHasDisplayTransformability, setHovering, setHyphens, setImmersive, setL10n, setLetterSpacing, setLineHeight, setLineLength, setLoading, setMonochrome, setOverflow, setPaginatedAffordance, setParagraphIndent, setParagraphSpacing, setPlatformModifier, setPositionsList, setProgressionFormat, setPublicationEnd, setPublicationStart, setPublisherStyles, setRTL, setReaderProfile, setReducedMotion, setReducedTransparency, setRunningHeadFormat, setScroll, setScrollAffordance, setScrollAffordances, setSettingsContainer, setSpacingPreset, setTextAlign, setTextNormalization, setTheme, setTimeline, setTocEntry, setTocTree, setUI, setUserNavigated, setWebPubFontFamily, setWebPubFontWeight, setWebPubHyphens, setWebPubLetterSpacing, setWebPubLineHeight, setWebPubParagraphIndent, setWebPubParagraphSpacing, setWebPubPublisherStyles, setWebPubSpacingPreset, setWebPubTextAlign, setWebPubTextNormalization, setWebPubWordSpacing, setWebPubZoom, setWordSpacing, settingsSlice, themeSlice, toggleActionOpen, toggleImmersive, updateFromPreferences, useAppDispatch, useAppSelector, useAppStore, webPubSettingsSlice } from '../../chunk-K3K7TUWM.mjs';
|
|
7
|
+
export { ThPreferencesProvider, usePreferences, useTheming } from '../../chunk-7NEQAW7J.mjs';
|
|
8
|
+
export { propsToCSSVars } from '../../chunk-XVSFXHYB.mjs';
|
|
10
9
|
import '../../chunk-GFSLVQIG.mjs';
|
|
10
|
+
export { UnstableShortcutMetaKeywords, UnstableShortcutRepresentation, buildShortcut, defaultPlatformModifier, getPlatform, getPlatformModifier, isIOSish, isIpadOS, isMacish, metaKeys } from '../../chunk-5LUMM7FW.mjs';
|
|
11
11
|
import '../../chunk-NQ2ZSGCX.mjs';
|
|
12
|
-
import '../../chunk-
|
|
12
|
+
import '../../chunk-RRDEPGBK.mjs';
|
|
13
|
+
import '../../chunk-NYZBHYW2.mjs';
|
|
13
14
|
import '../../chunk-YZ73DHRU.mjs';
|
|
14
|
-
import { useI18n } from '../../chunk-IYAFKTPL.mjs';
|
|
15
15
|
export { DEFAULT_CONFIG, i18n, initI18n, useI18n } from '../../chunk-IYAFKTPL.mjs';
|
|
16
16
|
import '../../chunk-B3WDMWCT.mjs';
|
|
17
17
|
import '../../chunk-MLEYTQGK.mjs';
|
|
18
|
-
export { canRenderProgressionFormat, getBestMatchingProgressionFormat, getSupportedProgressionFormats, isActiveElement, isInteractiveElement, isKeyboardTriggered, makeBreakpointsMap } from '../../chunk-47AIIJFO.mjs';
|
|
19
|
-
import { propsToCSSVars } from '../../chunk-XVSFXHYB.mjs';
|
|
20
|
-
export { propsToCSSVars } from '../../chunk-XVSFXHYB.mjs';
|
|
21
|
-
import { getPlatformModifier } from '../../chunk-5LUMM7FW.mjs';
|
|
22
|
-
export { UnstableShortcutMetaKeywords, UnstableShortcutRepresentation, buildShortcut, defaultPlatformModifier, getPlatform, getPlatformModifier, isIOSish, isIpadOS, isMacish, metaKeys } from '../../chunk-5LUMM7FW.mjs';
|
|
23
|
-
import { useState, useEffect, useRef, useCallback } from 'react';
|
|
24
|
-
import { I18nProvider } from 'react-aria';
|
|
25
|
-
import { HttpFetcher, Manifest, Publication, ReadingProgression, Feature, Locator } from '@readium/shared';
|
|
26
|
-
import classNames from 'classnames';
|
|
27
|
-
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
28
|
-
|
|
29
|
-
var ExperimentalWebPubStatefulReader = ({
|
|
30
|
-
rawManifest,
|
|
31
|
-
selfHref,
|
|
32
|
-
plugins
|
|
33
|
-
}) => {
|
|
34
|
-
const [pluginsRegistered, setPluginsRegistered] = useState(false);
|
|
35
|
-
useEffect(() => {
|
|
36
|
-
if (plugins && plugins.length > 0) {
|
|
37
|
-
plugins.forEach((plugin) => {
|
|
38
|
-
ThPluginRegistry.register(plugin);
|
|
39
|
-
});
|
|
40
|
-
} else {
|
|
41
|
-
ThPluginRegistry.register(createDefaultPlugin());
|
|
42
|
-
}
|
|
43
|
-
setPluginsRegistered(true);
|
|
44
|
-
}, [plugins]);
|
|
45
|
-
if (!pluginsRegistered) {
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(ThPluginProvider, { children: /* @__PURE__ */ jsx(WebPubStatefulReaderInner, { rawManifest, selfHref }) }) });
|
|
49
|
-
};
|
|
50
|
-
var WebPubStatefulReaderInner = ({ rawManifest, selfHref }) => {
|
|
51
|
-
const { preferences, resolveFontLanguage, getFontMetadata, getFontInjectables } = usePreferences();
|
|
52
|
-
const { t } = useI18n();
|
|
53
|
-
const { getEffectiveSpacingValue } = useSpacingPresets();
|
|
54
|
-
const { injectFontResources, removeFontResources } = useFonts();
|
|
55
|
-
const { isComponentUsed: isFontFamilyUsed } = useSettingsComponentStatus({
|
|
56
|
-
settingsKey: "fontFamily" /* fontFamily */,
|
|
57
|
-
publicationType: "webpub",
|
|
58
|
-
componentType: "text"
|
|
59
|
-
});
|
|
60
|
-
const [publication, setPublication] = useState(null);
|
|
61
|
-
const container = useRef(null);
|
|
62
|
-
const localDataKey = useRef(`${selfHref}-current-location`);
|
|
63
|
-
const textAlign = useAppSelector((state) => state.webPubSettings.textAlign);
|
|
64
|
-
const fontFamily = useAppSelector((state) => state.webPubSettings.fontFamily);
|
|
65
|
-
const fontWeight = useAppSelector((state) => state.webPubSettings.fontWeight);
|
|
66
|
-
const hyphens = useAppSelector((state) => state.webPubSettings.hyphens);
|
|
67
|
-
const letterSpacing = getEffectiveSpacingValue("letterSpacing" /* letterSpacing */);
|
|
68
|
-
const lineHeight = getEffectiveSpacingValue("lineHeight" /* lineHeight */);
|
|
69
|
-
const paragraphIndent = getEffectiveSpacingValue("paragraphIndent" /* paragraphIndent */);
|
|
70
|
-
const paragraphSpacing = getEffectiveSpacingValue("paragraphSpacing" /* paragraphSpacing */);
|
|
71
|
-
const publisherStyles = useAppSelector((state) => state.webPubSettings.publisherStyles);
|
|
72
|
-
const textNormalization = useAppSelector((state) => state.webPubSettings.textNormalization);
|
|
73
|
-
const wordSpacing = getEffectiveSpacingValue("wordSpacing" /* wordSpacing */);
|
|
74
|
-
const theme = "light" /* light */;
|
|
75
|
-
const zoom = useAppSelector((state) => state.webPubSettings.zoom);
|
|
76
|
-
const isImmersive = useAppSelector((state) => state.reader.isImmersive);
|
|
77
|
-
const isHovering = useAppSelector((state) => state.reader.isHovering);
|
|
78
|
-
const layoutUI = preferences.theming.layout.ui?.webPub || "stacked-ui" /* stacked */;
|
|
79
|
-
useTheming({
|
|
80
|
-
theme,
|
|
81
|
-
themeKeys: preferences.theming.themes.keys,
|
|
82
|
-
systemKeys: preferences.theming.themes.systemThemes,
|
|
83
|
-
breakpointsMap: preferences.theming.breakpoints,
|
|
84
|
-
initProps: {
|
|
85
|
-
...propsToCSSVars(preferences.theming.arrow, { prefix: prefixString("arrow") }),
|
|
86
|
-
...propsToCSSVars(preferences.theming.icon, { prefix: prefixString("icon") }),
|
|
87
|
-
...propsToCSSVars(preferences.theming.layout, {
|
|
88
|
-
prefix: prefixString("layout"),
|
|
89
|
-
exclude: ["ui"]
|
|
90
|
-
})
|
|
91
|
-
},
|
|
92
|
-
onBreakpointChange: (breakpoint) => dispatch(setBreakpoint(breakpoint)),
|
|
93
|
-
onColorSchemeChange: (colorScheme) => dispatch(setColorScheme(colorScheme)),
|
|
94
|
-
onContrastChange: (contrast) => dispatch(setContrast(contrast)),
|
|
95
|
-
onForcedColorsChange: (forcedColors) => dispatch(setForcedColors(forcedColors)),
|
|
96
|
-
onMonochromeChange: (isMonochrome) => dispatch(setMonochrome(isMonochrome)),
|
|
97
|
-
onReducedMotionChange: (reducedMotion) => dispatch(setReducedMotion(reducedMotion)),
|
|
98
|
-
onReducedTransparencyChange: (reducedTransparency) => dispatch(setReducedTransparency(reducedTransparency))
|
|
99
|
-
});
|
|
100
|
-
const dispatch = useAppDispatch();
|
|
101
|
-
const onFsChange = useCallback((isFullscreen) => {
|
|
102
|
-
dispatch(setFullscreen(isFullscreen));
|
|
103
|
-
}, [dispatch]);
|
|
104
|
-
const fs = useFullscreen(onFsChange);
|
|
105
|
-
const webPubNavigator = useWebPubNavigator();
|
|
106
|
-
const {
|
|
107
|
-
WebPubNavigatorLoad,
|
|
108
|
-
WebPubNavigatorDestroy,
|
|
109
|
-
currentPositions,
|
|
110
|
-
canGoBackward,
|
|
111
|
-
canGoForward
|
|
112
|
-
} = webPubNavigator;
|
|
113
|
-
const { setLocalData, getLocalData, localData } = useLocalStorage(localDataKey.current);
|
|
114
|
-
const timeline = useTimeline({
|
|
115
|
-
publication,
|
|
116
|
-
currentLocation: localData,
|
|
117
|
-
currentPositions: currentPositions() || [],
|
|
118
|
-
positionsList: void 0,
|
|
119
|
-
onChange: (timeline2) => {
|
|
120
|
-
dispatch(setTimeline(timeline2));
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
const lineHeightOptions = useLineHeight();
|
|
124
|
-
const documentTitleFormat = preferences.metadata?.documentTitle?.format;
|
|
125
|
-
let documentTitle;
|
|
126
|
-
if (documentTitleFormat) {
|
|
127
|
-
if (typeof documentTitleFormat === "object" && "key" in documentTitleFormat) {
|
|
128
|
-
const translatedTitle = t(documentTitleFormat.key);
|
|
129
|
-
documentTitle = translatedTitle !== documentTitleFormat.key ? translatedTitle : documentTitleFormat.fallback;
|
|
130
|
-
} else {
|
|
131
|
-
switch (documentTitleFormat) {
|
|
132
|
-
case "title" /* title */:
|
|
133
|
-
documentTitle = timeline?.title;
|
|
134
|
-
break;
|
|
135
|
-
case "chapter" /* chapter */:
|
|
136
|
-
documentTitle = timeline?.progression?.currentChapter;
|
|
137
|
-
break;
|
|
138
|
-
case "titleAndChapter" /* titleAndChapter */:
|
|
139
|
-
if (timeline?.title && timeline?.progression?.currentChapter) {
|
|
140
|
-
documentTitle = `${timeline.title} \u2013 ${timeline.progression.currentChapter}`;
|
|
141
|
-
}
|
|
142
|
-
break;
|
|
143
|
-
case "none" /* none */:
|
|
144
|
-
documentTitle = void 0;
|
|
145
|
-
break;
|
|
146
|
-
default:
|
|
147
|
-
documentTitle = documentTitleFormat;
|
|
148
|
-
break;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
useDocumentTitle(documentTitle);
|
|
153
|
-
const cache = useRef({
|
|
154
|
-
settings: {
|
|
155
|
-
fontFamily,
|
|
156
|
-
fontWeight,
|
|
157
|
-
hyphens,
|
|
158
|
-
letterSpacing,
|
|
159
|
-
lineHeight,
|
|
160
|
-
paragraphIndent,
|
|
161
|
-
paragraphSpacing,
|
|
162
|
-
publisherStyles,
|
|
163
|
-
textAlign,
|
|
164
|
-
textNormalization,
|
|
165
|
-
wordSpacing,
|
|
166
|
-
zoom
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
const toggleIsImmersive = useCallback(() => {
|
|
170
|
-
dispatch(setHovering(false));
|
|
171
|
-
dispatch(toggleImmersive());
|
|
172
|
-
}, [dispatch]);
|
|
173
|
-
const p = new Peripherals(useAppStore(), preferences.actions, {
|
|
174
|
-
moveTo: () => {
|
|
175
|
-
},
|
|
176
|
-
goProgression: () => {
|
|
177
|
-
},
|
|
178
|
-
toggleAction: (actionKey) => {
|
|
179
|
-
switch (actionKey) {
|
|
180
|
-
case "fullscreen" /* fullscreen */:
|
|
181
|
-
fs.handleFullscreen();
|
|
182
|
-
break;
|
|
183
|
-
case "settings" /* settings */:
|
|
184
|
-
case "toc" /* toc */:
|
|
185
|
-
dispatch(toggleActionOpen({
|
|
186
|
-
key: actionKey
|
|
187
|
-
}));
|
|
188
|
-
break;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
|
-
const listeners = {
|
|
193
|
-
frameLoaded: async function(_wnd) {
|
|
194
|
-
p.observe(window);
|
|
195
|
-
},
|
|
196
|
-
positionChanged: async function(locator) {
|
|
197
|
-
setLocalData(locator);
|
|
198
|
-
if (canGoBackward()) {
|
|
199
|
-
dispatch(setPublicationStart(false));
|
|
200
|
-
} else {
|
|
201
|
-
dispatch(setPublicationStart(true));
|
|
202
|
-
}
|
|
203
|
-
if (canGoForward()) {
|
|
204
|
-
dispatch(setPublicationEnd(false));
|
|
205
|
-
} else {
|
|
206
|
-
dispatch(setPublicationEnd(true));
|
|
207
|
-
}
|
|
208
|
-
},
|
|
209
|
-
tap: function(_e) {
|
|
210
|
-
toggleIsImmersive();
|
|
211
|
-
return true;
|
|
212
|
-
},
|
|
213
|
-
click: function(_e) {
|
|
214
|
-
return false;
|
|
215
|
-
},
|
|
216
|
-
zoom: function(_scale) {
|
|
217
|
-
},
|
|
218
|
-
scroll: function(_delta) {
|
|
219
|
-
},
|
|
220
|
-
customEvent: function(_key, _data) {
|
|
221
|
-
},
|
|
222
|
-
handleLocator: function(locator) {
|
|
223
|
-
const href = locator.href;
|
|
224
|
-
if (href.startsWith("http://") || href.startsWith("https://") || href.startsWith("mailto:") || href.startsWith("tel:")) {
|
|
225
|
-
if (confirm(`Open "${href}" ?`)) window.open(href, "_blank");
|
|
226
|
-
} else {
|
|
227
|
-
console.warn("Unhandled locator", locator);
|
|
228
|
-
}
|
|
229
|
-
return false;
|
|
230
|
-
},
|
|
231
|
-
textSelected: function(_selection) {
|
|
232
|
-
},
|
|
233
|
-
contentProtection: function(_type, _data) {
|
|
234
|
-
},
|
|
235
|
-
contextMenu: function(_data) {
|
|
236
|
-
},
|
|
237
|
-
peripheral: function(_data) {
|
|
238
|
-
}
|
|
239
|
-
};
|
|
240
|
-
useEffect(() => {
|
|
241
|
-
cache.current.settings.fontFamily = fontFamily;
|
|
242
|
-
}, [fontFamily]);
|
|
243
|
-
useEffect(() => {
|
|
244
|
-
cache.current.settings.fontWeight = fontWeight;
|
|
245
|
-
}, [fontWeight]);
|
|
246
|
-
useEffect(() => {
|
|
247
|
-
cache.current.settings.hyphens = hyphens;
|
|
248
|
-
}, [hyphens]);
|
|
249
|
-
useEffect(() => {
|
|
250
|
-
cache.current.settings.letterSpacing = letterSpacing;
|
|
251
|
-
}, [letterSpacing]);
|
|
252
|
-
useEffect(() => {
|
|
253
|
-
cache.current.settings.lineHeight = lineHeight;
|
|
254
|
-
}, [lineHeight]);
|
|
255
|
-
useEffect(() => {
|
|
256
|
-
cache.current.settings.paragraphIndent = paragraphIndent;
|
|
257
|
-
}, [paragraphIndent]);
|
|
258
|
-
useEffect(() => {
|
|
259
|
-
cache.current.settings.paragraphSpacing = paragraphSpacing;
|
|
260
|
-
}, [paragraphSpacing]);
|
|
261
|
-
useEffect(() => {
|
|
262
|
-
cache.current.settings.textAlign = textAlign;
|
|
263
|
-
}, [textAlign]);
|
|
264
|
-
useEffect(() => {
|
|
265
|
-
cache.current.settings.textNormalization = textNormalization;
|
|
266
|
-
}, [textNormalization]);
|
|
267
|
-
useEffect(() => {
|
|
268
|
-
cache.current.settings.wordSpacing = wordSpacing;
|
|
269
|
-
}, [wordSpacing]);
|
|
270
|
-
useEffect(() => {
|
|
271
|
-
cache.current.settings.zoom = zoom;
|
|
272
|
-
}, [zoom]);
|
|
273
|
-
useEffect(() => {
|
|
274
|
-
preferences.direction && dispatch(setDirection(preferences.direction));
|
|
275
|
-
dispatch(setPlatformModifier(getPlatformModifier()));
|
|
276
|
-
}, [preferences.direction, dispatch]);
|
|
277
|
-
useEffect(() => {
|
|
278
|
-
const fetcher = new HttpFetcher(void 0, selfHref);
|
|
279
|
-
const manifest = Manifest.deserialize(rawManifest);
|
|
280
|
-
manifest.setSelfLink(selfHref);
|
|
281
|
-
setPublication(new Publication({
|
|
282
|
-
manifest,
|
|
283
|
-
fetcher
|
|
284
|
-
}));
|
|
285
|
-
dispatch(setReaderProfile("webPub"));
|
|
286
|
-
}, [rawManifest, selfHref, dispatch]);
|
|
287
|
-
useEffect(() => {
|
|
288
|
-
if (!publication) return;
|
|
289
|
-
dispatch(setRTL(publication.metadata.effectiveReadingProgression === ReadingProgression.rtl));
|
|
290
|
-
const resolvedMainLanguage = resolveFontLanguage(publication.metadata.languages?.[0], publication.metadata.effectiveReadingProgression);
|
|
291
|
-
dispatch(setFontLanguage(resolvedMainLanguage));
|
|
292
|
-
const displayTransformability = publication.metadata.accessibility?.feature?.some((feature) => feature && feature.value === Feature.DISPLAY_TRANSFORMABILITY.value);
|
|
293
|
-
dispatch(setHasDisplayTransformability(displayTransformability));
|
|
294
|
-
const initialPosition = getLocalData();
|
|
295
|
-
const webPubPreferences = {
|
|
296
|
-
zoom: cache.current.settings.zoom
|
|
297
|
-
};
|
|
298
|
-
let injectables = void 0;
|
|
299
|
-
if (displayTransformability) {
|
|
300
|
-
webPubPreferences.fontFamily = getFontMetadata(cache.current.settings.fontFamily[resolvedMainLanguage] ?? "")?.fontStack || null;
|
|
301
|
-
webPubPreferences.fontWeight = cache.current.settings.fontWeight;
|
|
302
|
-
webPubPreferences.hyphens = cache.current.settings.hyphens;
|
|
303
|
-
webPubPreferences.letterSpacing = cache.current.settings.letterSpacing;
|
|
304
|
-
webPubPreferences.lineHeight = cache.current.settings.lineHeight === null ? null : lineHeightOptions[cache.current.settings.lineHeight];
|
|
305
|
-
webPubPreferences.paragraphIndent = cache.current.settings.paragraphIndent;
|
|
306
|
-
webPubPreferences.paragraphSpacing = cache.current.settings.paragraphSpacing;
|
|
307
|
-
webPubPreferences.textAlign = cache.current.settings.textAlign;
|
|
308
|
-
webPubPreferences.textNormalization = cache.current.settings.textNormalization;
|
|
309
|
-
webPubPreferences.wordSpacing = cache.current.settings.wordSpacing;
|
|
310
|
-
if (isFontFamilyUsed) {
|
|
311
|
-
const fontResources = getFontInjectables({ language: resolvedMainLanguage });
|
|
312
|
-
if (fontResources) {
|
|
313
|
-
injectFontResources(getFontInjectables(void 0, true));
|
|
314
|
-
injectables = {
|
|
315
|
-
allowedDomains: fontResources.allowedDomains,
|
|
316
|
-
rules: [{
|
|
317
|
-
resources: [/\.xhtml$/, /\.html$/],
|
|
318
|
-
prepend: fontResources.prepend,
|
|
319
|
-
append: fontResources.append
|
|
320
|
-
}]
|
|
321
|
-
};
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
WebPubNavigatorLoad({
|
|
326
|
-
container: container.current,
|
|
327
|
-
publication,
|
|
328
|
-
listeners,
|
|
329
|
-
initialPosition: initialPosition ? new Locator(initialPosition) : void 0,
|
|
330
|
-
preferences: webPubPreferences,
|
|
331
|
-
defaults: {
|
|
332
|
-
experiments: preferences.experiments?.webPub || null
|
|
333
|
-
},
|
|
334
|
-
injectables,
|
|
335
|
-
contentProtection: resolveContentProtectionConfig(preferences.contentProtection, t)
|
|
336
|
-
}, () => {
|
|
337
|
-
p.observe(window);
|
|
338
|
-
});
|
|
339
|
-
dispatch(setLoading(false));
|
|
340
|
-
return () => {
|
|
341
|
-
WebPubNavigatorDestroy(() => p.destroy());
|
|
342
|
-
removeFontResources();
|
|
343
|
-
};
|
|
344
|
-
}, [publication, preferences, isFontFamilyUsed, injectFontResources, removeFontResources]);
|
|
345
|
-
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(I18nProvider, { locale: preferences.locale, children: /* @__PURE__ */ jsx(NavigatorProvider, { navigator: webPubNavigator, children: /* @__PURE__ */ jsx("main", { className: thorium_web_reader_app_default.main, children: /* @__PURE__ */ jsx(StatefulDockingWrapper, { children: /* @__PURE__ */ jsxs(
|
|
346
|
-
"div",
|
|
347
|
-
{
|
|
348
|
-
className: classNames(
|
|
349
|
-
getReaderClassNames({
|
|
350
|
-
isScroll: true,
|
|
351
|
-
isImmersive,
|
|
352
|
-
isHovering,
|
|
353
|
-
layoutUI
|
|
354
|
-
})
|
|
355
|
-
),
|
|
356
|
-
children: [
|
|
357
|
-
/* @__PURE__ */ jsx(
|
|
358
|
-
StatefulReaderHeader,
|
|
359
|
-
{
|
|
360
|
-
actionKeys: preferences.actions.webPubOrder,
|
|
361
|
-
actionsOrder: preferences.actions.webPubOrder,
|
|
362
|
-
layout: layoutUI,
|
|
363
|
-
runningHeadFormatPref: preferences.theming.header?.runningHead?.format?.webPub
|
|
364
|
-
}
|
|
365
|
-
),
|
|
366
|
-
/* @__PURE__ */ jsx("article", { className: thorium_web_reader_app_default.wrapper, "aria-label": t("reader.app.publicationWrapper"), children: /* @__PURE__ */ jsx("div", { id: "thorium-web-container", className: thorium_web_reader_app_default.iframeContainer, ref: container }) }),
|
|
367
|
-
/* @__PURE__ */ jsx(
|
|
368
|
-
StatefulReaderFooter,
|
|
369
|
-
{
|
|
370
|
-
layout: layoutUI,
|
|
371
|
-
progressionFormatPref: preferences.theming.progression?.format?.webPub,
|
|
372
|
-
progressionFormatFallback: "readingOrderIndex" /* readingOrderIndex */
|
|
373
|
-
}
|
|
374
|
-
)
|
|
375
|
-
]
|
|
376
|
-
}
|
|
377
|
-
) }) }) }) }) });
|
|
378
|
-
};
|
|
379
|
-
|
|
380
|
-
export { ExperimentalWebPubStatefulReader };
|
|
381
18
|
//# sourceMappingURL=index.mjs.map
|
|
382
19
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/WebPub/StatefulReader.tsx"],"names":["timeline"],"mappings":"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","file":"index.mjs","sourcesContent":["\"use client\";\n\nimport { useState, useEffect, useRef, useCallback } from \"react\";\n\nimport { ThemeKeyType, useTheming } from \"../../preferences\";\n\nimport readerStyles from \"../assets/styles/thorium-web.reader.app.module.css\";\n\nimport { StatefulReaderProps } from \"../Epub/StatefulReader\";\n\nimport { \n ThActionsKeys, \n ThLayoutUI,\n ThDocumentTitleFormat,\n ThProgressionFormat, \n ThThemeKeys,\n ThLineHeightOptions,\n ThTextAlignOptions,\n ThSpacingSettingsKeys,\n ThSettingsKeys\n} from \"@/preferences/models\";\n\nimport { ThPluginRegistry } from \"../Plugins/PluginRegistry\";\n\nimport { I18nProvider } from \"react-aria\";\nimport { ThPluginProvider } from \"../Plugins/PluginProvider\";\nimport { NavigatorProvider } from \"@/core/Navigator\";\n\nimport {\n BasicTextSelection,\n FrameClickEvent,\n} from \"@readium/navigator-html-injectables\";\nimport { IInjectablesConfig, IWebPubPreferences, TextAlignment, WebPubNavigatorListeners } from \"@readium/navigator\";\nimport { \n Locator, \n Manifest, \n Publication, \n Fetcher, \n HttpFetcher, \n ReadingProgression,\n Feature\n} from \"@readium/shared\";\n\nimport { StatefulDockingWrapper } from \"../Docking/StatefulDockingWrapper\";\nimport { StatefulReaderHeader } from \"../StatefulReaderHeader\";\nimport { StatefulReaderFooter } from \"../StatefulReaderFooter\";\n\nimport { usePreferences } from \"@/preferences/hooks/usePreferences\";\nimport { useSettingsComponentStatus } from \"@/components/Settings/hooks/useSettingsComponentStatus\";\nimport { useWebPubNavigator } from \"@/core/Hooks/WebPub\";\nimport { useFullscreen } from \"@/core/Hooks/useFullscreen\";\nimport { useI18n } from \"@/i18n/useI18n\";\nimport { useTimeline } from \"@/core/Hooks/useTimeline\";\nimport { useLocalStorage } from \"@/core/Hooks/useLocalStorage\";\nimport { useDocumentTitle } from \"@/core/Hooks/useDocumentTitle\";\nimport { useSpacingPresets } from \"../Settings/Spacing/hooks/useSpacingPresets\";\nimport { useLineHeight } from \"../Settings/Spacing/hooks/useLineHeight\";\nimport { useFonts } from \"@/core/Hooks/fonts/useFonts\";\n\nimport { toggleActionOpen } from \"@/lib/actionsReducer\";\nimport { useAppSelector, useAppDispatch, useAppStore } from \"@/lib/hooks\";\nimport { \n setBreakpoint, \n setColorScheme, \n setContrast, \n setForcedColors, \n setMonochrome, \n setReducedMotion, \n setReducedTransparency \n} from \"@/lib/themeReducer\";\nimport { \n setLoading,\n setHovering, \n toggleImmersive, \n setPlatformModifier, \n setDirection, \n setFullscreen,\n setReaderProfile\n} from \"@/lib/readerReducer\";\nimport { \n setRTL, \n setTimeline,\n setPublicationStart,\n setPublicationEnd,\n setHasDisplayTransformability,\n setFontLanguage\n} from \"@/lib/publicationReducer\";\nimport { FontFamilyStateObject } from \"@/lib/settingsReducer\";\n\nimport classNames from \"classnames\";\nimport { createDefaultPlugin } from \"../Plugins/helpers/createDefaultPlugin\";\nimport Peripherals from \"../../helpers/peripherals\";\nimport { getPlatformModifier } from \"@/core/Helpers/keyboardUtilities\";\nimport { propsToCSSVars } from \"@/core/Helpers/propsToCSSVars\";\nimport { getReaderClassNames } from \"../Helpers/getReaderClassNames\";\nimport { prefixString } from \"@/core/Helpers/prefixString\";\nimport { resolveContentProtectionConfig } from \"@/preferences/models/protection\";\n\nexport interface WebPubCSSSettings {\n fontFamily: FontFamilyStateObject;\n fontWeight: number;\n hyphens: boolean | null;\n letterSpacing: number | null;\n lineHeight: ThLineHeightOptions | null;\n paragraphIndent: number | null;\n paragraphSpacing: number | null;\n publisherStyles: boolean;\n textAlign: ThTextAlignOptions | null;\n textNormalization: boolean;\n wordSpacing: number | null;\n zoom: number;\n}\n\nexport interface WebPubStatelessCache {\n settings: WebPubCSSSettings;\n}\n\nexport const ExperimentalWebPubStatefulReader = ({\n rawManifest,\n selfHref,\n plugins\n}: StatefulReaderProps) => {\n const [pluginsRegistered, setPluginsRegistered] = useState(false);\n\n useEffect(() => {\n if (plugins && plugins.length > 0) {\n plugins.forEach(plugin => {\n ThPluginRegistry.register(plugin);\n });\n } else {\n ThPluginRegistry.register(createDefaultPlugin());\n }\n setPluginsRegistered(true);\n }, [plugins]);\n\n if (!pluginsRegistered) {\n return null;\n }\n\n return (\n <>\n <ThPluginProvider>\n <WebPubStatefulReaderInner rawManifest={ rawManifest } selfHref={ selfHref } />\n </ThPluginProvider>\n </>\n );\n};\n\nconst WebPubStatefulReaderInner = ({ rawManifest, selfHref }: { rawManifest: object; selfHref: string }) => {\n const { preferences, resolveFontLanguage, getFontMetadata, getFontInjectables } = usePreferences();\n const { t } = useI18n();\n const { getEffectiveSpacingValue } = useSpacingPresets();\n const { injectFontResources, removeFontResources } = useFonts();\n\n // Check if font family component is being used\n const { isComponentUsed: isFontFamilyUsed } = useSettingsComponentStatus({\n settingsKey: ThSettingsKeys.fontFamily,\n publicationType: \"webpub\",\n componentType: \"text\"\n });\n\n const [publication, setPublication] = useState<Publication | null>(null);\n\n const container = useRef<HTMLDivElement>(null);\n const localDataKey = useRef(`${selfHref}-current-location`);\n\n const textAlign = useAppSelector(state => state.webPubSettings.textAlign);\n const fontFamily = useAppSelector(state => state.webPubSettings.fontFamily);\n const fontWeight = useAppSelector(state => state.webPubSettings.fontWeight);\n const hyphens = useAppSelector(state => state.webPubSettings.hyphens);\n const letterSpacing = getEffectiveSpacingValue(ThSpacingSettingsKeys.letterSpacing);\n const lineHeight = getEffectiveSpacingValue(ThSpacingSettingsKeys.lineHeight);\n const paragraphIndent = getEffectiveSpacingValue(ThSpacingSettingsKeys.paragraphIndent);\n const paragraphSpacing = getEffectiveSpacingValue(ThSpacingSettingsKeys.paragraphSpacing);\n const publisherStyles = useAppSelector(state => state.webPubSettings.publisherStyles);\n const textNormalization = useAppSelector(state => state.webPubSettings.textNormalization);\n const wordSpacing = getEffectiveSpacingValue(ThSpacingSettingsKeys.wordSpacing);\n const theme = ThThemeKeys.light;\n const zoom = useAppSelector(state => state.webPubSettings.zoom);\n const isImmersive = useAppSelector(state => state.reader.isImmersive);\n const isHovering = useAppSelector(state => state.reader.isHovering);\n\n const layoutUI = preferences.theming.layout.ui?.webPub || ThLayoutUI.stacked;\n\n // Init theming (breakpoints, theme, media queries…)\n useTheming<ThemeKeyType>({ \n theme: theme,\n themeKeys: preferences.theming.themes.keys,\n systemKeys: preferences.theming.themes.systemThemes,\n breakpointsMap: preferences.theming.breakpoints,\n initProps: {\n ...propsToCSSVars(preferences.theming.arrow, { prefix: prefixString(\"arrow\") }), \n ...propsToCSSVars(preferences.theming.icon, { prefix: prefixString(\"icon\") }),\n ...propsToCSSVars(preferences.theming.layout, { \n prefix: prefixString(\"layout\"),\n exclude: [\"ui\"]\n })\n },\n onBreakpointChange: (breakpoint) => dispatch(setBreakpoint(breakpoint)),\n onColorSchemeChange: (colorScheme) => dispatch(setColorScheme(colorScheme)),\n onContrastChange: (contrast) => dispatch(setContrast(contrast)),\n onForcedColorsChange: (forcedColors) => dispatch(setForcedColors(forcedColors)),\n onMonochromeChange: (isMonochrome) => dispatch(setMonochrome(isMonochrome)),\n onReducedMotionChange: (reducedMotion) => dispatch(setReducedMotion(reducedMotion)),\n onReducedTransparencyChange: (reducedTransparency) => dispatch(setReducedTransparency(reducedTransparency))\n });\n\n const dispatch = useAppDispatch();\n\n const onFsChange = useCallback((isFullscreen: boolean) => {\n dispatch(setFullscreen(isFullscreen));\n }, [dispatch]);\n const fs = useFullscreen(onFsChange);\n\n const webPubNavigator = useWebPubNavigator();\n const { \n WebPubNavigatorLoad, \n WebPubNavigatorDestroy,\n currentPositions,\n canGoBackward,\n canGoForward,\n } = webPubNavigator;\n\n const { setLocalData, getLocalData, localData } = useLocalStorage(localDataKey.current);\n\n const timeline = useTimeline({\n publication: publication,\n currentLocation: localData,\n currentPositions: currentPositions() || [],\n positionsList: undefined,\n onChange: (timeline) => {\n dispatch(setTimeline(timeline));\n }\n });\n\n const lineHeightOptions = useLineHeight();\n\n const documentTitleFormat = preferences.metadata?.documentTitle?.format;\n\n let documentTitle: string | undefined;\n\n if (documentTitleFormat) {\n if (typeof documentTitleFormat === \"object\" && \"key\" in documentTitleFormat) {\n const translatedTitle = t(documentTitleFormat.key);\n documentTitle = translatedTitle !== documentTitleFormat.key \n ? translatedTitle \n : documentTitleFormat.fallback;\n } else {\n switch (documentTitleFormat) {\n case ThDocumentTitleFormat.title:\n documentTitle = timeline?.title;\n break;\n case ThDocumentTitleFormat.chapter:\n documentTitle = timeline?.progression?.currentChapter;\n break;\n case ThDocumentTitleFormat.titleAndChapter:\n if (timeline?.title && timeline?.progression?.currentChapter) {\n documentTitle = `${ timeline.title } – ${ timeline.progression.currentChapter }`;\n }\n break;\n case ThDocumentTitleFormat.none:\n documentTitle = undefined;\n break;\n default: \n documentTitle = documentTitleFormat;\n break;\n }\n }\n }\n\n useDocumentTitle(documentTitle);\n\n const cache = useRef<WebPubStatelessCache>({\n settings: {\n fontFamily: fontFamily,\n fontWeight: fontWeight,\n hyphens: hyphens,\n letterSpacing: letterSpacing,\n lineHeight: lineHeight,\n paragraphIndent: paragraphIndent,\n paragraphSpacing: paragraphSpacing,\n publisherStyles: publisherStyles,\n textAlign: textAlign,\n textNormalization: textNormalization,\n wordSpacing: wordSpacing,\n zoom: zoom\n }\n });\n\n const toggleIsImmersive = useCallback(() => {\n // If tap/click in iframe, then header/footer no longer hoovering \n dispatch(setHovering(false));\n dispatch(toggleImmersive());\n }, [dispatch]);\n\n const p = new Peripherals(useAppStore(), preferences.actions, {\n moveTo: () => {},\n goProgression: () => {},\n toggleAction: (actionKey) => {\n switch (actionKey) {\n case ThActionsKeys.fullscreen:\n fs.handleFullscreen();\n break;\n case ThActionsKeys.settings:\n case ThActionsKeys.toc:\n dispatch(toggleActionOpen({\n key: actionKey\n }))\n break;\n default:\n break\n }\n }\n });\n\n const listeners: WebPubNavigatorListeners = {\n frameLoaded: async function (_wnd: Window): Promise<void> {\n p.observe(window);\n },\n positionChanged: async function (locator: Locator): Promise<void> {\n setLocalData(locator)\n\n if (canGoBackward()) {\n dispatch(setPublicationStart(false));\n } else {\n dispatch(setPublicationStart(true));\n }\n\n if (canGoForward()) {\n dispatch(setPublicationEnd(false));\n } else {\n dispatch(setPublicationEnd(true));\n }\n },\n tap: function (_e: FrameClickEvent): boolean {\n toggleIsImmersive();\n return true;\n },\n click: function (_e: FrameClickEvent): boolean {\n return false;\n },\n zoom: function (_scale: number): void { },\n scroll: function (_delta: number): void { },\n customEvent: function (_key: string, _data: unknown): void { },\n handleLocator: function (locator: Locator): boolean {\n const href = locator.href;\n\n if (\n href.startsWith(\"http://\") ||\n href.startsWith(\"https://\") ||\n href.startsWith(\"mailto:\") ||\n href.startsWith(\"tel:\")\n ) {\n if (confirm(`Open \"${href}\" ?`)) window.open(href, \"_blank\");\n } else {\n console.warn(\"Unhandled locator\", locator);\n }\n return false;\n },\n textSelected: function (_selection: BasicTextSelection): void {},\n contentProtection: function (_type: string, _data: unknown): void {},\n contextMenu: function (_data: unknown): void {},\n peripheral: function (_data: unknown): void {},\n };\n\n useEffect(() => {\n cache.current.settings.fontFamily = fontFamily;\n }, [fontFamily]);\n useEffect(() => {\n cache.current.settings.fontWeight = fontWeight;\n }, [fontWeight]);\n useEffect(() => {\n cache.current.settings.hyphens = hyphens;\n }, [hyphens]);\n useEffect(() => {\n cache.current.settings.letterSpacing = letterSpacing;\n }, [letterSpacing]);\n useEffect(() => {\n cache.current.settings.lineHeight = lineHeight;\n }, [lineHeight]);\n useEffect(() => {\n cache.current.settings.paragraphIndent = paragraphIndent;\n }, [paragraphIndent]);\n useEffect(() => {\n cache.current.settings.paragraphSpacing = paragraphSpacing;\n }, [paragraphSpacing]);\n useEffect(() => {\n cache.current.settings.textAlign = textAlign;\n }, [textAlign]);\n\n useEffect(() => {\n cache.current.settings.textNormalization = textNormalization;\n }, [textNormalization]);\n useEffect(() => {\n cache.current.settings.wordSpacing = wordSpacing;\n }, [wordSpacing]);\n useEffect(() => {\n cache.current.settings.zoom = zoom;\n }, [zoom]);\n\n useEffect(() => {\n preferences.direction && dispatch(setDirection(preferences.direction));\n dispatch(setPlatformModifier(getPlatformModifier()));\n }, [preferences.direction, dispatch]);\n\n useEffect(() => {\n const fetcher: Fetcher = new HttpFetcher(undefined, selfHref);\n const manifest = Manifest.deserialize(rawManifest)!;\n manifest.setSelfLink(selfHref);\n\n setPublication(new Publication({\n manifest: manifest,\n fetcher: fetcher\n }));\n\n dispatch(setReaderProfile(\"webPub\"));\n }, [rawManifest, selfHref, dispatch]);\n\n useEffect(() => {\n if (!publication) return;\n\n dispatch(setRTL(publication.metadata.effectiveReadingProgression === ReadingProgression.rtl));\n const resolvedMainLanguage = resolveFontLanguage(publication.metadata.languages?.[0], publication.metadata.effectiveReadingProgression);\n dispatch(setFontLanguage(resolvedMainLanguage));\n\n const displayTransformability = publication.metadata.accessibility?.feature?.some(feature => feature && feature.value === Feature.DISPLAY_TRANSFORMABILITY.value);\n dispatch(setHasDisplayTransformability(displayTransformability));\n\n const initialPosition: Locator | null = getLocalData();\n\n const webPubPreferences: IWebPubPreferences = {\n zoom: cache.current.settings.zoom\n };\n\n let injectables: IInjectablesConfig | undefined = undefined;\n\n if (displayTransformability) {\n webPubPreferences.fontFamily = getFontMetadata(cache.current.settings.fontFamily[resolvedMainLanguage] ?? \"\")?.fontStack || null;\n webPubPreferences.fontWeight = cache.current.settings.fontWeight;\n webPubPreferences.hyphens = cache.current.settings.hyphens;\n webPubPreferences.letterSpacing = cache.current.settings.letterSpacing;\n webPubPreferences.lineHeight = cache.current.settings.lineHeight === null \n ? null \n : lineHeightOptions[cache.current.settings.lineHeight];\n webPubPreferences.paragraphIndent = cache.current.settings.paragraphIndent;\n webPubPreferences.paragraphSpacing = cache.current.settings.paragraphSpacing;\n webPubPreferences.textAlign = cache.current.settings.textAlign as TextAlignment | null | undefined;\n webPubPreferences.textNormalization = cache.current.settings.textNormalization;\n webPubPreferences.wordSpacing = cache.current.settings.wordSpacing;\n \n // Only inject font resources if font family component is being used\n if (isFontFamilyUsed) {\n const fontResources = getFontInjectables({ language: resolvedMainLanguage });\n if (fontResources) {\n injectFontResources(getFontInjectables(undefined, true));\n injectables = {\n allowedDomains: fontResources.allowedDomains,\n rules: [{\n resources: [/\\.xhtml$/, /\\.html$/],\n prepend: fontResources.prepend,\n append: fontResources.append\n }]\n };\n }\n }\n }\n \n WebPubNavigatorLoad({\n container: container.current,\n publication: publication,\n listeners: listeners,\n initialPosition: initialPosition ? new Locator(initialPosition) : undefined,\n preferences: webPubPreferences,\n defaults: {\n experiments: preferences.experiments?.webPub || null\n },\n injectables: injectables,\n contentProtection: resolveContentProtectionConfig(preferences.contentProtection, t)\n }, () => {\n p.observe(window);\n });\n\n dispatch(setLoading(false));\n\n return () => {\n WebPubNavigatorDestroy(() => p.destroy());\n removeFontResources();\n };\n }, [publication, preferences, isFontFamilyUsed, injectFontResources, removeFontResources]);\n\n return (\n <>\n <I18nProvider locale={ preferences.locale }>\n <NavigatorProvider navigator={ webPubNavigator }>\n <main className={ readerStyles.main }>\n <StatefulDockingWrapper>\n <div \n className={ \n classNames(\n getReaderClassNames({\n isScroll: true,\n isImmersive,\n isHovering,\n layoutUI\n })\n )\n }\n >\n <StatefulReaderHeader \n actionKeys={ preferences.actions.webPubOrder }\n actionsOrder={ preferences.actions.webPubOrder }\n layout={ layoutUI } \n runningHeadFormatPref={ preferences.theming.header?.runningHead?.format?.webPub }\n />\n\n <article className={ readerStyles.wrapper } aria-label={ t(\"reader.app.publicationWrapper\") }>\n <div id=\"thorium-web-container\" className={ readerStyles.iframeContainer } ref={ container }></div>\n </article>\n\n <StatefulReaderFooter \n layout={ layoutUI } \n progressionFormatPref={ preferences.theming.progression?.format?.webPub }\n progressionFormatFallback={ ThProgressionFormat.readingOrderIndex }\n />\n </div>\n </StatefulDockingWrapper>\n </main>\n </NavigatorProvider>\n </I18nProvider>\n </>\n)};"]}
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { a as ActionStateObject } from '../../actionsReducer-
|
|
2
|
-
import { T as ThDockingKeys } from '../../actions-
|
|
3
|
-
export { C as CollapsiblePref, p as ThActionEntry, t as ThActionsBar, q as ThActionsBarProps, s as ThActionsTriggerVariant,
|
|
4
|
-
import { T as ThActionButtonProps, H as HTMLAttributesWithRef, W as WithRef } from '../../ThSettingsWrapper-
|
|
5
|
-
export { d as THMenuProps, c as ThActionButton, b as ThCollapsibleActionsBar, a as ThCollapsibleActionsBarProps, s as ThDropdown, q as ThDropdownEntry, r as ThDropdownProps, e as ThMenu, g as ThMenuItem, f as ThMenuItemProps, i as ThNumberField, h as ThNumberFieldProps, l as ThRadioGroup, j as ThRadioGroupItems, k as ThRadioGroupProps, t as ThSettingsEntry, u as ThSettingsPrefs, w as ThSettingsWrapper, v as ThSettingsWrapperProps, n as ThSlider, m as ThSliderProps, p as ThSwitch, o as ThSwitchProps } from '../../ThSettingsWrapper-
|
|
1
|
+
import { a as ActionStateObject } from '../../actionsReducer-kc-S130w.mjs';
|
|
2
|
+
import { T as ThDockingKeys } from '../../actions-D2CHvCHu.mjs';
|
|
3
|
+
export { C as CollapsiblePref, p as ThActionEntry, t as ThActionsBar, q as ThActionsBarProps, s as ThActionsTriggerVariant, d as ThCollapsibility, r as ThCollapsibilityVisibility, u as useCollapsibility } from '../../actions-D2CHvCHu.mjs';
|
|
4
|
+
import { T as ThActionButtonProps, H as HTMLAttributesWithRef, W as WithRef } from '../../ThSettingsWrapper-8Kx0SnH4.mjs';
|
|
5
|
+
export { d as THMenuProps, c as ThActionButton, b as ThCollapsibleActionsBar, a as ThCollapsibleActionsBarProps, s as ThDropdown, q as ThDropdownEntry, r as ThDropdownProps, e as ThMenu, g as ThMenuItem, f as ThMenuItemProps, i as ThNumberField, h as ThNumberFieldProps, l as ThRadioGroup, j as ThRadioGroupItems, k as ThRadioGroupProps, t as ThSettingsEntry, u as ThSettingsPrefs, w as ThSettingsWrapper, v as ThSettingsWrapperProps, n as ThSlider, m as ThSliderProps, p as ThSwitch, o as ThSwitchProps } from '../../ThSettingsWrapper-8Kx0SnH4.mjs';
|
|
6
6
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
7
|
-
import { ButtonProps, HeadingProps, PopoverProps, DialogProps, ModalOverlayProps, FormProps, Button, NumberFieldProps, LabelProps, InputProps,
|
|
7
|
+
import { ButtonProps, HeadingProps, PopoverProps, DialogProps, ModalOverlayProps, FormProps, Button, NumberFieldProps, LabelProps, InputProps, FieldErrorProps, TextFieldProps, ValidationResult, SearchFieldProps, LinkProps, TooltipProps } from 'react-aria-components';
|
|
8
8
|
import React__default, { RefObject, ReactNode, HTMLAttributes, ComponentType, SVGProps } from 'react';
|
|
9
9
|
import { SheetRef, Sheet } from 'react-modal-sheet';
|
|
10
10
|
import { AriaOverlayProps, TooltipTriggerProps } from 'react-aria';
|
|
11
11
|
import '@reduxjs/toolkit';
|
|
12
|
-
import '../../
|
|
12
|
+
import '../../immer.d-CoRThNOF.mjs';
|
|
13
|
+
import '../../ui-CamWuqOo.mjs';
|
|
13
14
|
|
|
14
15
|
declare const ThCloseButton: ({ label, ref, compounds, children, ...props }: ThActionButtonProps) => react_jsx_runtime.JSX.Element;
|
|
15
16
|
|
|
@@ -179,9 +180,11 @@ interface ThFormNumberFieldProps extends NumberFieldProps {
|
|
|
179
180
|
label?: WithRef<LabelProps, HTMLLabelElement>;
|
|
180
181
|
input?: WithRef<InputProps, HTMLInputElement>;
|
|
181
182
|
description?: string;
|
|
183
|
+
fieldError?: WithRef<FieldErrorProps, HTMLDivElement>;
|
|
182
184
|
};
|
|
185
|
+
errorMessage?: string;
|
|
183
186
|
}
|
|
184
|
-
declare const ThFormNumberField: ({ ref, label, compounds, children, ...props }: ThFormNumberFieldProps) => react_jsx_runtime.JSX.Element;
|
|
187
|
+
declare const ThFormNumberField: ({ ref, label, compounds, children, errorMessage, ...props }: ThFormNumberFieldProps) => react_jsx_runtime.JSX.Element;
|
|
185
188
|
|
|
186
189
|
interface ThFormTextFieldProps extends TextFieldProps {
|
|
187
190
|
ref?: React.ForwardedRef<HTMLInputElement>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { ThActionButton, ThActionsBar, ThActionsTriggerVariant, ThBackArrow, ThBottomSheet, ThCloseButton, ThCollapsibleActionsBar, ThContainerBody, ThContainerHeader, ThContainerHeaderWithClose, ThContainerHeaderWithPrevious, ThDeleteButton, ThDockedPanel, ThDragIndicatorButton, ThDropdown, ThDropdownButton, ThFooter, ThForm, ThFormNumberField, ThFormSearchField, ThFormTextField, ThGrid, ThHeader, ThHome, ThInteractiveOverlay, ThLibrary, ThLink, ThLoader, ThMenu, ThMenuButton, ThMenuItem, ThModal, ThNavigationButton, ThNumberField, ThPagination, ThPopover, ThProgression, ThRadioGroup, ThRunningHead, ThSettingsResetButton, ThSettingsWrapper, ThSettingsWrapperButton, ThSlider, ThSwitch, ThTypedComponentRenderer, useActions, useFirstFocusable } from '../../chunk-
|
|
1
|
+
export { ThActionButton, ThActionsBar, ThActionsTriggerVariant, ThBackArrow, ThBottomSheet, ThCloseButton, ThCollapsibleActionsBar, ThContainerBody, ThContainerHeader, ThContainerHeaderWithClose, ThContainerHeaderWithPrevious, ThDeleteButton, ThDockedPanel, ThDragIndicatorButton, ThDropdown, ThDropdownButton, ThFooter, ThForm, ThFormNumberField, ThFormSearchField, ThFormTextField, ThGrid, ThHeader, ThHome, ThInteractiveOverlay, ThLibrary, ThLink, ThLoader, ThMenu, ThMenuButton, ThMenuItem, ThModal, ThNavigationButton, ThNumberField, ThPagination, ThPopover, ThProgression, ThRadioGroup, ThRunningHead, ThSettingsResetButton, ThSettingsWrapper, ThSettingsWrapperButton, ThSlider, ThSwitch, ThTypedComponentRenderer, useActions, useFirstFocusable } from '../../chunk-NYZBHYW2.mjs';
|
|
2
2
|
import '../../chunk-YZ73DHRU.mjs';
|
|
3
3
|
export { ThCollapsibilityVisibility, useCollapsibility } from '../../chunk-MLEYTQGK.mjs';
|
|
4
4
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as BreakpointsMap,
|
|
1
|
+
import { B as BreakpointsMap, g as ThProgressionFormat } from '../../ui-CamWuqOo.mjs';
|
|
2
2
|
export { U as UnstableKey, a as UnstableMetaKey, c as UnstableMetaKeys, g as UnstablePShortcut, b as UnstablePlatformModifier, f as UnstableShortcut, d as UnstableShortcutMetaKeywords, e as UnstableShortcutRepresentation, j as buildShortcut, h as defaultPlatformModifier, i as getPlatformModifier, m as metaKeys } from '../../keyboardUtilities-BWAyLS_D.mjs';
|
|
3
3
|
import { b as TimelineProgression } from '../../useTimeline-DyMx_aWY.mjs';
|
|
4
4
|
import '@readium/shared';
|
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
export { B as BreakpointsMap,
|
|
2
|
-
|
|
1
|
+
export { B as BreakpointsMap, a as ThBreakpointsObject, u as useBreakpoints } from '../../ui-CamWuqOo.mjs';
|
|
2
|
+
import { T as ThLineHeightOptions, c as ThTextAlignOptions } from '../../useContrast-D6sjPjxy.mjs';
|
|
3
|
+
export { d as ThColorScheme, e as ThContrast, A as useColorScheme, B as useContrast } from '../../useContrast-D6sjPjxy.mjs';
|
|
3
4
|
import * as React from 'react';
|
|
4
5
|
export { a as TimelineItem, b as TimelineProgression, T as TocItem, U as UnstableTimeline, t as timelineInstance, u as useTimeline } from '../../useTimeline-DyMx_aWY.mjs';
|
|
5
|
-
export { E as EpubNavigatorLoadProps, u as useEpubNavigator } from '../../useEpubNavigator-
|
|
6
|
+
export { E as EpubNavigatorLoadProps, u as useEpubNavigator } from '../../useEpubNavigator-CwHJfoiV.mjs';
|
|
7
|
+
import { F as FontFamilyStateObject, L as LineLengthStateObject } from '../../settingsReducer-C1wwCAMv.mjs';
|
|
6
8
|
export { W as WebPubNavigatorLoadProps, u as useWebPubNavigator } from '../../useWebPubNavigator-Che8r5Wg.mjs';
|
|
9
|
+
import '../../actions-D2CHvCHu.mjs';
|
|
10
|
+
import 'react/jsx-runtime';
|
|
11
|
+
import 'react-aria-components';
|
|
7
12
|
import '@readium/shared';
|
|
8
13
|
import '@readium/navigator';
|
|
14
|
+
import '@reduxjs/toolkit';
|
|
15
|
+
import '../../immer.d-CoRThNOF.mjs';
|
|
9
16
|
|
|
10
17
|
declare const useDocumentTitle: (title?: string) => void;
|
|
11
18
|
|
|
@@ -16,7 +23,7 @@ declare const useFullscreen: (onChange?: (isFullscreen: boolean) => void) => {
|
|
|
16
23
|
handleFullscreen: () => void;
|
|
17
24
|
};
|
|
18
25
|
|
|
19
|
-
declare const useLocalStorage: (key: string) => {
|
|
26
|
+
declare const useLocalStorage: (key: string | null) => {
|
|
20
27
|
setLocalData: (newValue: any) => void;
|
|
21
28
|
getLocalData: () => any;
|
|
22
29
|
clearLocalData: () => void;
|
|
@@ -36,4 +43,46 @@ declare const useReducedMotion: (onChange?: (reducedMotion: boolean) => void) =>
|
|
|
36
43
|
|
|
37
44
|
declare const useReducedTransparency: (onChange?: (reducedTransparency: boolean) => void) => boolean;
|
|
38
45
|
|
|
39
|
-
|
|
46
|
+
interface ReadiumCSSSettings {
|
|
47
|
+
columnCount: string;
|
|
48
|
+
fontFamily: FontFamilyStateObject;
|
|
49
|
+
fontSize: number;
|
|
50
|
+
fontWeight: number;
|
|
51
|
+
hyphens: boolean | null;
|
|
52
|
+
letterSpacing: number | null;
|
|
53
|
+
lineLength: LineLengthStateObject | null;
|
|
54
|
+
lineHeight: ThLineHeightOptions | null;
|
|
55
|
+
paragraphIndent: number | null;
|
|
56
|
+
paragraphSpacing: number | null;
|
|
57
|
+
publisherStyles: boolean;
|
|
58
|
+
scroll: boolean;
|
|
59
|
+
textAlign: ThTextAlignOptions | null;
|
|
60
|
+
textNormalization: boolean;
|
|
61
|
+
theme?: string;
|
|
62
|
+
wordSpacing: number | null;
|
|
63
|
+
}
|
|
64
|
+
interface EPubSettingsCache {
|
|
65
|
+
settings: ReadiumCSSSettings;
|
|
66
|
+
}
|
|
67
|
+
declare const useEpubSettingsCache: (textAlign: ThTextAlignOptions | null, columnCount: string, fontFamily: FontFamilyStateObject, fontSize: number, fontWeight: number, hyphens: boolean | null, letterSpacing: number | null, lineLength: LineLengthStateObject | null, lineHeight: ThLineHeightOptions | null, paragraphIndent: number | null, paragraphSpacing: number | null, publisherStyles: boolean, scroll: boolean, textNormalization: boolean, wordSpacing: number | null, theme: string | undefined) => React.RefObject<EPubSettingsCache>;
|
|
68
|
+
|
|
69
|
+
interface WebPubCSSSettings {
|
|
70
|
+
fontFamily: FontFamilyStateObject;
|
|
71
|
+
fontWeight: number;
|
|
72
|
+
hyphens: boolean | null;
|
|
73
|
+
letterSpacing: number | null;
|
|
74
|
+
lineHeight: ThLineHeightOptions | null;
|
|
75
|
+
paragraphIndent: number | null;
|
|
76
|
+
paragraphSpacing: number | null;
|
|
77
|
+
publisherStyles: boolean;
|
|
78
|
+
textAlign: ThTextAlignOptions | null;
|
|
79
|
+
textNormalization: boolean;
|
|
80
|
+
wordSpacing: number | null;
|
|
81
|
+
zoom: number;
|
|
82
|
+
}
|
|
83
|
+
interface WebPubStatelessCache {
|
|
84
|
+
settings: WebPubCSSSettings;
|
|
85
|
+
}
|
|
86
|
+
declare const useWebPubSettingsCache: (fontFamily: FontFamilyStateObject, fontWeight: number, hyphens: boolean | null, letterSpacing: number | null, lineHeight: ThLineHeightOptions | null, paragraphIndent: number | null, paragraphSpacing: number | null, publisherStyles: boolean, textAlign: ThTextAlignOptions | null, textNormalization: boolean, wordSpacing: number | null, zoom: number) => React.RefObject<WebPubStatelessCache>;
|
|
87
|
+
|
|
88
|
+
export { type EPubSettingsCache, type ReadiumCSSSettings, type WebPubCSSSettings, type WebPubStatelessCache, useDocumentTitle, useEpubSettingsCache, useForcedColors, useFullscreen, useIsClient, useLocalStorage, useMediaQuery, useMonochrome, usePrevious, useReducedMotion, useReducedTransparency, useWebPubSettingsCache };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { timelineInstance, useDocumentTitle, useEpubNavigator, useFullscreen, useIsClient, useLocalStorage, useTimeline, useWebPubNavigator } from '../../chunk-
|
|
1
|
+
export { timelineInstance, useDocumentTitle, useEpubNavigator, useEpubSettingsCache, useFullscreen, useIsClient, useLocalStorage, useTimeline, useWebPubNavigator, useWebPubSettingsCache } from '../../chunk-4VHEHMJN.mjs';
|
|
2
2
|
export { useBreakpoints, useForcedColors, useMonochrome, useReducedMotion, useReducedTransparency } from '../../chunk-GFSLVQIG.mjs';
|
|
3
3
|
export { ThColorScheme, ThContrast, useColorScheme, useContrast, useMediaQuery } from '../../chunk-NQ2ZSGCX.mjs';
|
|
4
4
|
export { usePrevious } from '../../chunk-YZ73DHRU.mjs';
|