@edrlab/thorium-web 1.2.0 → 1.3.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.
Files changed (100) hide show
  1. package/dist/{ThPreferencesAdapter-DrZ5_6Dv.d.mts → ThPreferencesAdapter-D0rzsGRl.d.mts} +50 -13
  2. package/dist/{ThSettingsWrapper-8Kx0SnH4.d.mts → ThSettingsWrapper-BXuRgdqp.d.mts} +42 -4
  3. package/dist/{actions-D2CHvCHu.d.mts → actions-BLAr0oaM.d.mts} +16 -4
  4. package/dist/{actionsReducer-kc-S130w.d.mts → actionsReducer-BhG1wicI.d.mts} +37 -12
  5. package/dist/chunk-3GDQP6AS.mjs +14 -0
  6. package/dist/chunk-3GDQP6AS.mjs.map +1 -0
  7. package/dist/{chunk-72XCX5TD.mjs → chunk-3LDWKC5N.mjs} +13 -8
  8. package/dist/chunk-3LDWKC5N.mjs.map +1 -0
  9. package/dist/{chunk-NYZBHYW2.mjs → chunk-4ODYHZKD.mjs} +343 -38
  10. package/dist/chunk-4ODYHZKD.mjs.map +1 -0
  11. package/dist/{chunk-34MVY33F.mjs → chunk-4TVEDX7L.mjs} +23 -32
  12. package/dist/chunk-4TVEDX7L.mjs.map +1 -0
  13. package/dist/chunk-7CGMWOZN.mjs +20 -0
  14. package/dist/chunk-7CGMWOZN.mjs.map +1 -0
  15. package/dist/{chunk-7NEQAW7J.mjs → chunk-C236BQQB.mjs} +656 -917
  16. package/dist/chunk-C236BQQB.mjs.map +1 -0
  17. package/dist/{chunk-H4J2VY7Z.mjs → chunk-D7MFLHXV.mjs} +2267 -1599
  18. package/dist/chunk-D7MFLHXV.mjs.map +1 -0
  19. package/dist/{chunk-47AIIJFO.mjs → chunk-ITDBOMY5.mjs} +3 -3
  20. package/dist/{chunk-47AIIJFO.mjs.map → chunk-ITDBOMY5.mjs.map} +1 -1
  21. package/dist/{chunk-XVSFXHYB.mjs → chunk-L4XGZAZ5.mjs} +23 -20
  22. package/dist/chunk-L4XGZAZ5.mjs.map +1 -0
  23. package/dist/chunk-OWHP7ONM.mjs +134 -0
  24. package/dist/chunk-OWHP7ONM.mjs.map +1 -0
  25. package/dist/{chunk-S4M7ED5Q.mjs → chunk-RRVLWDT3.mjs} +10 -7
  26. package/dist/chunk-RRVLWDT3.mjs.map +1 -0
  27. package/dist/chunk-T2E6MRVP.mjs +862 -0
  28. package/dist/chunk-T2E6MRVP.mjs.map +1 -0
  29. package/dist/chunk-TEZB4ULX.mjs +57 -0
  30. package/dist/chunk-TEZB4ULX.mjs.map +1 -0
  31. package/dist/chunk-UCTMVCW7.mjs +833 -0
  32. package/dist/chunk-UCTMVCW7.mjs.map +1 -0
  33. package/dist/chunk-WECWPYZB.mjs +1950 -0
  34. package/dist/chunk-WECWPYZB.mjs.map +1 -0
  35. package/dist/{chunk-4VHEHMJN.mjs → chunk-XBZWGRDM.mjs} +228 -94
  36. package/dist/chunk-XBZWGRDM.mjs.map +1 -0
  37. package/dist/{chunk-K3K7TUWM.mjs → chunk-YZ3KCMKY.mjs} +237 -83
  38. package/dist/chunk-YZ3KCMKY.mjs.map +1 -0
  39. package/dist/components/Audio/index.css +1858 -0
  40. package/dist/components/Audio/index.css.map +1 -0
  41. package/dist/components/Audio/index.d.mts +103 -0
  42. package/dist/components/Audio/index.mjs +23 -0
  43. package/dist/components/Audio/index.mjs.map +1 -0
  44. package/dist/components/Epub/index.css +372 -9
  45. package/dist/components/Epub/index.css.map +1 -1
  46. package/dist/components/Epub/index.d.mts +17 -19
  47. package/dist/components/Epub/index.mjs +15 -10
  48. package/dist/components/Misc/index.css +5 -2
  49. package/dist/components/Misc/index.css.map +1 -1
  50. package/dist/components/Misc/index.mjs +4 -132
  51. package/dist/components/Misc/index.mjs.map +1 -1
  52. package/dist/components/Reader/index.css +1030 -184
  53. package/dist/components/Reader/index.css.map +1 -1
  54. package/dist/components/Reader/index.d.mts +16 -16
  55. package/dist/components/Reader/index.mjs +121 -22
  56. package/dist/components/Reader/index.mjs.map +1 -1
  57. package/dist/components/WebPub/index.css +372 -9
  58. package/dist/components/WebPub/index.css.map +1 -1
  59. package/dist/components/WebPub/index.d.mts +16 -16
  60. package/dist/components/WebPub/index.mjs +15 -10
  61. package/dist/core/Components/index.d.mts +64 -15
  62. package/dist/core/Components/index.mjs +2 -1
  63. package/dist/core/Helpers/index.d.mts +2 -2
  64. package/dist/core/Helpers/index.mjs +4 -2
  65. package/dist/core/Hooks/index.d.mts +7 -8
  66. package/dist/core/Hooks/index.mjs +3 -1
  67. package/dist/i18n/index.mjs +4 -5
  68. package/dist/lib/index.d.mts +159 -15
  69. package/dist/lib/index.mjs +4 -2
  70. package/dist/lib-M3PPQDJJ.mjs +6548 -0
  71. package/dist/lib-M3PPQDJJ.mjs.map +1 -0
  72. package/dist/locales/en/thorium-shared.json +84 -0
  73. package/dist/locales/en/thorium-web.json +22 -0
  74. package/dist/locales/et/thorium-shared.json +93 -2
  75. package/dist/locales/fi/thorium-shared.json +68 -0
  76. package/dist/next-lib/index.mjs +2 -0
  77. package/dist/next-lib/index.mjs.map +1 -1
  78. package/dist/preferences/index.d.mts +111 -13
  79. package/dist/preferences/index.mjs +6 -3
  80. package/dist/{settingsReducer-C1wwCAMv.d.mts → settingsReducer-Bu1zeveu.d.mts} +1 -1
  81. package/dist/{ui-CamWuqOo.d.mts → ui-nBv8gfr0.d.mts} +20 -1
  82. package/dist/useAudioNavigator-C5aW4-eT.d.mts +133 -0
  83. package/dist/{useContrast-D6sjPjxy.d.mts → useContrast-2t429O9O.d.mts} +16 -8
  84. package/dist/usePreferences-VaBf46eP.d.mts +230 -0
  85. package/dist/useReaderTransitions-JDzlBFsu.d.mts +530 -0
  86. package/dist/{useTimeline-DyMx_aWY.d.mts → useTimeline-DCZ1qoCO.d.mts} +4 -2
  87. package/package.json +15 -11
  88. package/dist/chunk-34MVY33F.mjs.map +0 -1
  89. package/dist/chunk-4VHEHMJN.mjs.map +0 -1
  90. package/dist/chunk-72XCX5TD.mjs.map +0 -1
  91. package/dist/chunk-7NEQAW7J.mjs.map +0 -1
  92. package/dist/chunk-H4J2VY7Z.mjs.map +0 -1
  93. package/dist/chunk-K3K7TUWM.mjs.map +0 -1
  94. package/dist/chunk-NYZBHYW2.mjs.map +0 -1
  95. package/dist/chunk-S4M7ED5Q.mjs.map +0 -1
  96. package/dist/chunk-XVSFXHYB.mjs.map +0 -1
  97. package/dist/useEpubNavigator-CwHJfoiV.d.mts +0 -42
  98. package/dist/usePreferences-BXFJbval.d.mts +0 -43
  99. package/dist/useReaderTransitions-guT-eA-Q.d.mts +0 -365
  100. package/dist/useWebPubNavigator-Che8r5Wg.d.mts +0 -39
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/WebPub/Hooks/usePreferencesConfig.ts","../src/components/WebPub/Hooks/useInjectablesConfig.ts","../src/components/WebPub/Hooks/useReaderInit.ts","../src/components/WebPub/StatefulReader.tsx"],"names":["useMemo","useState","useRef","useCallback","timeline"],"mappings":"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","file":"chunk-S4M7ED5Q.mjs","sourcesContent":["\"use client\";\n\nimport { useMemo } from \"react\";\n\nimport { IWebPubPreferences, TextAlignment } from \"@readium/navigator\";\nimport { ThLineHeightOptions } from \"@/preferences/models\";\nimport { FontMetadata } from \"@/preferences/services/fonts\";\nimport { WebPubCSSSettings } from \"@/core/Hooks/WebPub/useWebPubSettingsCache\";\n\ninterface UseWebPubPreferencesConfigProps {\n settings: WebPubCSSSettings;\n fontLanguage: string;\n hasDisplayTransformability: boolean;\n getFontMetadata: (fontFamily: string) => FontMetadata;\n lineHeightOptions: Record<ThLineHeightOptions, number | null>;\n}\n\nexport const useWebPubPreferencesConfig = ({\n settings,\n fontLanguage,\n hasDisplayTransformability,\n getFontMetadata,\n lineHeightOptions,\n}: UseWebPubPreferencesConfigProps) => {\n const webPubPreferences = useMemo(() => {\n const preferences: IWebPubPreferences = {\n zoom: settings.zoom\n };\n\n if (hasDisplayTransformability) {\n preferences.fontFamily = getFontMetadata(settings.fontFamily[fontLanguage] ?? \"\")?.fontStack || null;\n preferences.fontWeight = settings.fontWeight;\n preferences.hyphens = settings.hyphens;\n preferences.letterSpacing = settings.letterSpacing;\n preferences.lineHeight = settings.lineHeight === null \n ? null \n : lineHeightOptions[settings.lineHeight];\n preferences.paragraphIndent = settings.paragraphIndent;\n preferences.paragraphSpacing = settings.paragraphSpacing;\n preferences.textAlign = settings.textAlign as TextAlignment | null | undefined;\n preferences.textNormalization = settings.textNormalization;\n preferences.wordSpacing = settings.wordSpacing;\n }\n\n return preferences;\n }, [\n settings,\n fontLanguage,\n hasDisplayTransformability,\n getFontMetadata,\n lineHeightOptions,\n ]);\n\n return { webPubPreferences };\n};\n","\"use client\";\n\nimport { useMemo } from \"react\";\n\nimport { IInjectablesConfig } from \"@readium/navigator\";\nimport { InjectableFontResources } from \"@/preferences/services/fonts\";\n\ninterface UseWebPubInjectablesConfigProps {\n isFontFamilyUsed: boolean;\n fontLanguage: string;\n getFontInjectables: (options?: { language?: string } | { key?: string }, optimize?: boolean) => InjectableFontResources | null;\n}\n\nexport const useWebPubInjectablesConfig = ({\n isFontFamilyUsed,\n fontLanguage,\n getFontInjectables,\n}: UseWebPubInjectablesConfigProps) => {\n const injectables = useMemo(() => {\n let injectablesConfig: IInjectablesConfig | undefined;\n\n if (isFontFamilyUsed) {\n const fontResources = getFontInjectables({ language: fontLanguage });\n if (fontResources) {\n injectablesConfig = {\n allowedDomains: fontResources.allowedDomains,\n rules: [{\n resources: [/\\.xhtml$/, /\\.html$/],\n prepend: fontResources.prepend,\n append: fontResources.append\n }]\n };\n }\n }\n\n return injectablesConfig;\n }, [isFontFamilyUsed, fontLanguage, getFontInjectables]);\n\n return { injectables };\n};\n","\"use client\";\n\nimport { useCallback, useEffect, useState, useRef } from \"react\";\n\nimport { Locator, Publication } from \"@readium/shared\";\nimport { ThLineHeightOptions } from \"@/preferences/models\";\nimport { WebPubNavigatorListeners, IContentProtectionConfig } from \"@readium/navigator\";\nimport { ThPreferences } from \"@/preferences\";\nimport { FontMetadata, InjectableFontResources } from \"@/preferences/services/fonts\";\nimport { WebPubStatelessCache } from \"@/core/Hooks/WebPub/useWebPubSettingsCache\";\n\nimport { useWebPubPreferencesConfig } from \"./usePreferencesConfig\";\nimport { useWebPubInjectablesConfig } from \"./useInjectablesConfig\";\nimport { useWebPubNavigator, WebPubNavigatorLoadProps } from \"@/core/Hooks/WebPub/useWebPubNavigator\";\n\ninterface UseWebPubReaderInitProps {\n container: React.RefObject<HTMLDivElement | null>;\n publication: Publication | null;\n initialPosition: Locator | null;\n listeners: WebPubNavigatorListeners;\n preferences: ThPreferences;\n cache: React.RefObject<WebPubStatelessCache>;\n isFontFamilyUsed: boolean;\n fontLanguage: string;\n hasDisplayTransformability: boolean;\n getFontMetadata: (fontId: string) => FontMetadata;\n injectFontResources: (resources: InjectableFontResources | null) => void;\n removeFontResources: () => void;\n getFontInjectables: (options?: { language?: string } | { key?: string }, optimize?: boolean) => InjectableFontResources | null;\n lineHeightOptions: Record<ThLineHeightOptions, number | null>;\n contentProtectionConfig?: IContentProtectionConfig;\n onNavigatorReady?: () => void;\n onNavigatorLoaded?: () => void;\n onCleanup?: () => void;\n}\n\nexport const useWebPubReaderInit = ({\n container,\n publication,\n initialPosition,\n listeners,\n preferences,\n cache,\n isFontFamilyUsed,\n fontLanguage,\n hasDisplayTransformability,\n getFontMetadata,\n injectFontResources,\n removeFontResources,\n getFontInjectables,\n lineHeightOptions,\n contentProtectionConfig,\n onNavigatorReady,\n onNavigatorLoaded,\n onCleanup,\n}: UseWebPubReaderInitProps) => {\n const [navigatorReady, setNavigatorReady] = useState(false);\n\n const { webPubPreferences } = useWebPubPreferencesConfig({\n settings: cache.current.settings,\n fontLanguage,\n hasDisplayTransformability,\n getFontMetadata,\n lineHeightOptions,\n });\n\n const { injectables } = useWebPubInjectablesConfig({\n isFontFamilyUsed,\n fontLanguage,\n getFontInjectables,\n });\n\n const handleCleanup = useCallback(() => {\n removeFontResources();\n onCleanup?.();\n }, [removeFontResources, onCleanup]);\n\n const { WebPubNavigatorLoad, WebPubNavigatorDestroy } = useWebPubNavigator();\n const isNavigatorLoadedWebPub = useRef(false);\n \n useEffect(() => {\n // Only initialize once, never re-render\n if (!publication || isNavigatorLoadedWebPub.current) return;\n\n // Add container protection\n if (!container.current) {\n console.error(\"Container ref is not available for navigator initialization\");\n return;\n }\n\n const config: WebPubNavigatorLoadProps = {\n container: container.current,\n publication,\n listeners,\n initialPosition: initialPosition ? new Locator(initialPosition) : undefined,\n preferences: webPubPreferences,\n defaults: {\n experiments: preferences.experiments?.webPub || null\n },\n injectables,\n contentProtection: contentProtectionConfig,\n };\n\n isNavigatorLoadedWebPub.current = true;\n \n // Call onNavigatorReady outside of navigator load\n onNavigatorReady?.();\n \n // Pass onNavigatorLoaded as the callback to WebPubNavigatorLoad\n WebPubNavigatorLoad(config, () => {\n // Set navigatorReady to true only after navigator actually loads\n setNavigatorReady(true);\n onNavigatorLoaded?.();\n });\n\n return () => {\n if (isNavigatorLoadedWebPub.current) {\n setNavigatorReady(false);\n WebPubNavigatorDestroy(() => {\n isNavigatorLoadedWebPub.current = false;\n handleCleanup();\n });\n }\n };\n }, []);\n\n // Handle font resource injection\n useEffect(() => {\n if (isFontFamilyUsed) {\n const fontResources = getFontInjectables({ language: fontLanguage });\n if (fontResources) {\n injectFontResources(getFontInjectables(undefined, true));\n }\n }\n }, [isFontFamilyUsed, fontLanguage, getFontInjectables, injectFontResources]);\n\n return {\n navigatorReady,\n };\n};\n","\"use client\";\n\nimport { useState, useRef, useCallback, useMemo, useLayoutEffect } from \"react\";\n\nimport readerStyles from \"../assets/styles/thorium-web.reader.app.module.css\";\n\nimport { StatefulReaderProps } from \"../Reader/StatefulReaderWrapper\";\n\nimport { \n ThActionsKeys, \n ThLayoutUI,\n ThDocumentTitleFormat,\n ThProgressionFormat, \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 { WebPubNavigatorListeners } from \"@readium/navigator\";\nimport { \n Locator, \n Publication\n} from \"@readium/shared\";\n\nimport { StatefulDockingWrapper } from \"../Docking/StatefulDockingWrapper\";\nimport { StatefulReaderHeader } from \"../StatefulReaderHeader\";\nimport { StatefulReaderFooter } from \"../StatefulReaderFooter\";\nimport { PositionStorage } from \"../Reader/StatefulReaderWrapper\";\n\nimport { usePreferences } from \"@/preferences/hooks/usePreferences\";\nimport { useSettingsComponentStatus } from \"@/components/Settings/hooks/useSettingsComponentStatus\";\nimport { useWebPubNavigator } from \"@/core/Hooks/WebPub\";\nimport { useWebPubSettingsCache } from \"@/core/Hooks/WebPub/useWebPubSettingsCache\";\nimport { useWebPubReaderInit } from \"./Hooks/useReaderInit\";\nimport { useFullscreen } from \"@/core/Hooks/useFullscreen\";\nimport { useI18n } from \"@/i18n/useI18n\";\nimport { useTimeline } from \"@/core/Hooks/useTimeline\";\nimport { usePositionStorage } from \"@/hooks/usePositionStorage\";\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 setLoading,\n setHovering, \n toggleImmersive, \n setFullscreen,\n} from \"@/lib/readerReducer\";\nimport { \n setTimeline,\n setPublicationStart,\n setPublicationEnd\n} from \"@/lib/publicationReducer\";\n\nimport classNames from \"classnames\";\nimport { createDefaultPlugin } from \"../Plugins/helpers/createDefaultPlugin\";\nimport Peripherals from \"../../helpers/peripherals\";\nimport { getReaderClassNames } from \"../Helpers/getReaderClassNames\";\nimport { resolveContentProtectionConfig } from \"@/preferences/models/protection\";\n\nexport const ExperimentalWebPubStatefulReader = ({\n publication,\n localDataKey,\n plugins,\n positionStorage\n}: StatefulReaderProps) => {\n const [pluginsRegistered, setPluginsRegistered] = useState(false);\n\n useLayoutEffect(() => {\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 <StatefulReaderInner publication={ publication } localDataKey={ localDataKey } positionStorage={ positionStorage } />\n </ThPluginProvider>\n </>\n );\n};\n\nconst StatefulReaderInner = ({ publication, localDataKey, positionStorage }: { publication: Publication; localDataKey: string | null; positionStorage?: PositionStorage }) => {\n const { preferences, 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 container = useRef<HTMLDivElement>(null);\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 zoom = useAppSelector(state => state.webPubSettings.zoom);\n const fontLanguage = useAppSelector(state => state.publication.fontLanguage);\n const hasDisplayTransformability = useAppSelector(state => state.publication.hasDisplayTransformability);\n const isImmersive = useAppSelector(state => state.reader.isImmersive);\n const isHovering = useAppSelector(state => state.reader.isHovering);\n\n const cache = useWebPubSettingsCache(\n fontFamily,\n fontWeight,\n hyphens,\n letterSpacing,\n lineHeight,\n paragraphIndent,\n paragraphSpacing,\n publisherStyles,\n textAlign,\n textNormalization,\n wordSpacing,\n zoom\n );\n\n const layoutUI = preferences.theming.layout.ui?.webPub || ThLayoutUI.stacked;\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 currentPositions,\n canGoBackward,\n canGoForward,\n } = webPubNavigator;\n\n const { setLocalData, getLocalData, localData } = usePositionStorage(localDataKey, positionStorage);\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 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 appStore = useAppStore();\n\n const p = useMemo(() => new Peripherals(appStore, 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 }), [appStore, preferences.actions, fs, dispatch]);\n\n const listeners: WebPubNavigatorListeners = useMemo(() => ({\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 }), [p, setLocalData, canGoBackward, canGoForward, dispatch, toggleIsImmersive]);\n\n const initialPosition = useMemo(() => getLocalData(), [getLocalData]);\n\n // Initialize reader using the new composite hook\n const { navigatorReady } = useWebPubReaderInit({\n container,\n publication,\n initialPosition,\n listeners,\n preferences,\n cache,\n isFontFamilyUsed,\n fontLanguage,\n hasDisplayTransformability,\n getFontMetadata,\n injectFontResources,\n removeFontResources,\n getFontInjectables,\n lineHeightOptions,\n contentProtectionConfig: resolveContentProtectionConfig(preferences.contentProtection, t),\n onNavigatorReady: () => {\n dispatch(setLoading(false));\n },\n onNavigatorLoaded: () => {\n p.observe(window);\n },\n onCleanup: () => {\n p.destroy();\n },\n });\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 +0,0 @@
1
- {"version":3,"sources":["../src/preferences/models/ui.ts","../src/core/Helpers/propsToCSSVars.ts"],"names":["ThArrowVariant","ThBreakpoints","ThBackLinkVariant","ThDocumentTitleFormat","ThLayoutDirection","ThLayoutUI","ThProgressionFormat","ThRunningHeadFormat"],"mappings":"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","file":"chunk-XVSFXHYB.mjs","sourcesContent":["export type ThBackLinkContent = \n | { \n type: \"img\";\n src: string;\n alt?: string;\n }\n | {\n type: \"svg\";\n content: string; // Raw SVG string\n };\n\nexport interface ThBackLinkPref {\n href: string;\n variant?: ThBackLinkVariant;\n visibility?: \"always\" | \"partially\";\n content?: ThBackLinkContent;\n}\n\nexport interface ThFormatPrefValue<T extends string | Array<string>> {\n variants: T;\n displayInImmersive?: boolean;\n displayInFullscreen?: boolean;\n}\n\nexport interface ThFormatPref<T extends string | Array<string>> {\n default: ThFormatPrefValue<T>;\n breakpoints?: { \n [key in ThBreakpoints]?: ThFormatPrefValue<T>;\n };\n}\n\nexport interface ThPaginatedAffordancePrefValue {\n variant: ThArrowVariant;\n discard?: Array<\"navigation\" | \"immersive\" | \"fullscreen\"> | \"none\";\n hint?: Array<\"immersiveChange\" | \"fullscreenChange\" | \"layoutChange\"> | \"none\";\n}\n\nexport interface ThPaginatedAffordancePref {\n default: Required<ThPaginatedAffordancePrefValue>;\n breakpoints?: {\n [key in ThBreakpoints]?: ThPaginatedAffordancePrefValue;\n };\n}\n\nexport enum ThArrowVariant {\n none = \"none\",\n stacked = \"stacked\",\n layered = \"layered\"\n}\n\nexport enum ThBreakpoints {\n compact = \"compact\",\n medium = \"medium\",\n expanded = \"expanded\",\n large = \"large\",\n xLarge = \"xLarge\"\n}\n\nexport enum ThBackLinkVariant {\n arrow = \"arrow\",\n home = \"home\",\n library = \"library\",\n custom = \"custom\"\n}\n\nexport enum ThDocumentTitleFormat {\n title = \"title\",\n chapter = \"chapter\",\n titleAndChapter = \"titleAndChapter\",\n none = \"none\"\n}\n\nexport enum ThLayoutDirection {\n rtl = \"rtl\",\n ltr = \"ltr\"\n}\n\nexport enum ThLayoutUI {\n stacked = \"stacked-ui\",\n layered = \"layered-ui\"\n}\n\nexport enum ThProgressionFormat {\n positionsPercentOfTotal = \"positionsPercentOfTotal\", // x-y of z (%)\n positionsOfTotal = \"positionsOfTotal\", // x-y of z\n positions = \"positions\", // x-y\n overallProgression = \"overallProgression\", // x%\n positionsLeft = \"positionsLeft\", // x left in chapter\n readingOrderIndex = \"readingOrderIndex\", // x of y\n resourceProgression = \"resourceProgression\", // x%\n progressionOfResource = \"progressionOfResource\", // x% of y\n none = \"none\" // nothing displayed\n}\n\nexport enum ThRunningHeadFormat {\n title = \"title\",\n chapter = \"chapter\",\n // titleAndChapter = \"titleAndChapter\",\n none = \"none\"\n}","\"use client\";\n\ninterface PropsToCSSVarsOptions {\n prefix?: string;\n exclude?: string[];\n}\n\n/** \n * Converts Object properties to CSS custom properties, recursively.\n * @param props - The object containing CSS property values\n * @param options - Configuration options\n * @param options.prefix - Optional prefix for CSS variable names (applies to all levels)\n * @param options.exclude - Array of property names to exclude\n */\nexport const propsToCSSVars = (props: { [x: string]: any; }, { prefix, exclude = [] }: PropsToCSSVarsOptions = {}) => {\n return Object.entries(props)\n .reduce((acc: { [key: string]: any }, [key, value]) => {\n if (exclude.includes(key)) {\n return acc;\n }\n const cssVar = prefix ? `--${prefix}-${key}` : `--${key}`;\n if (typeof value === \"object\" && value !== null) {\n // Keep the same prefix for nested objects\n Object.assign(acc, propsToCSSVars(value, { prefix: prefix ? `${prefix}-${key}` : key }));\n } else if (value != null) {\n const cssValue = typeof value === \"number\" ? `${value}px` : value;\n acc[cssVar] = cssValue;\n } \n return acc;\n }, {});\n}"]}
@@ -1,42 +0,0 @@
1
- import * as _readium_navigator from '@readium/navigator';
2
- import { EpubNavigatorListeners, IEpubPreferences, IEpubDefaults, IInjectablesConfig, IContentProtectionConfig, EpubSettings } from '@readium/navigator';
3
- import { Publication, Locator, Link, Layout } from '@readium/shared';
4
-
5
- type cbb = (ok: boolean) => void;
6
- interface EpubNavigatorLoadProps {
7
- container: HTMLDivElement | null;
8
- publication: Publication;
9
- listeners: EpubNavigatorListeners;
10
- positionsList?: Locator[];
11
- initialPosition?: Locator;
12
- preferences?: IEpubPreferences;
13
- defaults?: IEpubDefaults;
14
- injectables?: IInjectablesConfig;
15
- contentProtection?: IContentProtectionConfig;
16
- }
17
- declare const useEpubNavigator: () => {
18
- EpubNavigatorLoad: (config: EpubNavigatorLoadProps, cb: Function, fxlCallback?: (locator: Locator) => void) => void;
19
- EpubNavigatorDestroy: (cb: Function) => void;
20
- goRight: (animated: boolean, callback: cbb) => void;
21
- goLeft: (animated: boolean, callback: cbb) => void;
22
- goBackward: (animated: boolean, callback: cbb) => void;
23
- goForward: (animated: boolean, callback: cbb) => void;
24
- goLink: (link: Link, animated: boolean, callback: cbb) => void;
25
- go: (locator: Locator, animated: boolean, callback: cbb) => void;
26
- navLayout: () => Layout | undefined;
27
- currentLocator: () => Locator | undefined;
28
- previousLocator: () => Locator | null | undefined;
29
- nextLocator: () => Locator | null | undefined;
30
- currentPositions: () => number[] | null | undefined;
31
- canGoBackward: () => boolean | undefined;
32
- canGoForward: () => boolean | undefined;
33
- isScrollStart: () => boolean | undefined;
34
- isScrollEnd: () => boolean | undefined;
35
- preferencesEditor: _readium_navigator.EpubPreferencesEditor | undefined;
36
- getSetting: <K extends keyof EpubSettings>(settingKey: K) => EpubSettings[K];
37
- submitPreferences: (preferences: IEpubPreferences) => Promise<void>;
38
- getCframes: () => (_readium_navigator.FXLFrameManager | _readium_navigator.FrameManager | undefined)[] | undefined;
39
- onFXLPositionChange: (cb: (locator: Locator) => void) => void;
40
- };
41
-
42
- export { type EpubNavigatorLoadProps as E, useEpubNavigator as u };
@@ -1,43 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { C as CustomizableKeys, D as DefaultKeys, T as ThPreferencesAdapter, a as ThPreferences, W as WeightConfig, V as VariableFontRangeConfig, F as FontCollection } from './ThPreferencesAdapter-DrZ5_6Dv.mjs';
3
- import { ILinkInjectable, IUrlInjectable, IBlobInjectable } from '@readium/navigator';
4
-
5
- type Props<K extends CustomizableKeys = DefaultKeys> = {
6
- adapter?: ThPreferencesAdapter<K>;
7
- initialPreferences?: ThPreferences<K>;
8
- devMode?: boolean;
9
- children: React.ReactNode;
10
- };
11
- declare function ThPreferencesProvider<K extends CustomizableKeys = DefaultKeys>({ adapter, initialPreferences, devMode, children, }: Props<K>): react_jsx_runtime.JSX.Element;
12
-
13
- type FontResource = (ILinkInjectable & IUrlInjectable) | (ILinkInjectable & IBlobInjectable);
14
- interface InjectableFontResources {
15
- allowedDomains: string[];
16
- prepend: FontResource[];
17
- append: FontResource[];
18
- }
19
- interface FontMetadata {
20
- fontStack: string | null;
21
- fontFamily: string | null;
22
- weights: WeightConfig | null;
23
- widths: VariableFontRangeConfig | null;
24
- }
25
-
26
- declare function usePreferences<K extends CustomizableKeys = DefaultKeys>(): {
27
- preferences: ThPreferences<K>;
28
- updatePreferences: (prefs: ThPreferences<K>) => void;
29
- getFontInjectables: (options?: {
30
- language?: string;
31
- } | {
32
- key?: string;
33
- }, optimize?: boolean) => InjectableFontResources | null;
34
- getFontsList: (options?: {
35
- language?: string;
36
- } | {
37
- key?: string;
38
- }) => FontCollection;
39
- getFontMetadata: (fontId: string) => FontMetadata;
40
- resolveFontLanguage: (bcp47Tag: string | undefined, direction: "ltr" | "rtl") => string;
41
- };
42
-
43
- export { ThPreferencesProvider as T, usePreferences as u };
@@ -1,365 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { TooltipProps, Heading, HeadingProps, PopoverProps } from 'react-aria-components';
3
- import { s as ThActionsTriggerVariant, r as ThCollapsibilityVisibility, p as ThActionEntry, c as ThActionsKeys, T as ThDockingKeys, b as ThSheetTypes, a as ThSheetHeaderVariant } from './actions-D2CHvCHu.mjs';
4
- import { T as ThActionButtonProps, f as ThMenuItemProps, a as ThCollapsibleActionsBarProps, t as ThSettingsEntry, W as WithRef, r as ThDropdownProps, h as ThNumberFieldProps, k as ThRadioGroupProps, m as ThSliderProps, o as ThSwitchProps } from './ThSettingsWrapper-8Kx0SnH4.mjs';
5
- import React__default, { RefObject, ReactNode } from 'react';
6
- import { g as ThTextSettingsKeys, b as ThSpacingSettingsKeys, j as ThSettingsGroupPref, a as ThSpacingPresetKeys, T as ThLineHeightOptions } from './useContrast-D6sjPjxy.mjs';
7
- import { PressEvent } from 'react-aria';
8
- import { A as ActionsStateKeys } from './actionsReducer-kc-S130w.mjs';
9
- import { a as ThPreferences, D as DefaultKeys } from './ThPreferencesAdapter-DrZ5_6Dv.mjs';
10
- import { Publication, Locator, Fetcher } from '@readium/shared';
11
- import { ReaderProfile } from './lib/index.mjs';
12
- import { P as ProcessedError } from './errorHandler-CL2YIfQY.mjs';
13
-
14
- interface StatefulActionsMapObject {
15
- Trigger: React.ComponentType<StatefulActionTriggerProps>;
16
- Target?: React.ComponentType<StatefulActionContainerProps>;
17
- }
18
- interface StatefulActionTriggerProps {
19
- variant: ThActionsTriggerVariant;
20
- associatedKey?: ActionsStateKeys;
21
- }
22
- interface StatefulActionContainerProps {
23
- triggerRef: RefObject<HTMLElement | null>;
24
- }
25
-
26
- declare const StatefulFullscreenTrigger: ({ variant }: StatefulActionTriggerProps) => react_jsx_runtime.JSX.Element | null;
27
-
28
- declare const StatefulJumpToPositionContainer: ({ triggerRef }: StatefulActionContainerProps) => react_jsx_runtime.JSX.Element | null;
29
-
30
- declare const StatefulJumpToPositionTrigger: ({ variant }: StatefulActionTriggerProps) => react_jsx_runtime.JSX.Element | null;
31
-
32
- declare const StatefulSettingsContainer: ({ triggerRef }: StatefulActionContainerProps) => react_jsx_runtime.JSX.Element;
33
-
34
- declare const StatefulSettingsTrigger: ({ variant }: StatefulActionTriggerProps) => react_jsx_runtime.JSX.Element;
35
-
36
- declare const StatefulTocContainer: ({ triggerRef }: StatefulActionContainerProps) => react_jsx_runtime.JSX.Element;
37
-
38
- declare const StatefulTocTrigger: ({ variant }: StatefulActionTriggerProps) => react_jsx_runtime.JSX.Element;
39
-
40
- interface StatefulActionIconProps extends ThActionButtonProps {
41
- visibility?: ThCollapsibilityVisibility;
42
- placement?: TooltipProps["placement"];
43
- tooltipLabel?: string;
44
- }
45
- declare const StatefulActionIcon: ({ visibility, placement, tooltipLabel, children, ...props }: StatefulActionIconProps) => react_jsx_runtime.JSX.Element;
46
-
47
- interface StatefulOverflowMenuItemProps extends Omit<ThMenuItemProps, "shortcut"> {
48
- shortcut?: string | null;
49
- }
50
- declare const StatefulOverflowMenuItem: ({ id, label, SVGIcon, shortcut, ...props }: StatefulOverflowMenuItemProps) => react_jsx_runtime.JSX.Element;
51
-
52
- interface StatefulCollapsibleActionsBarProps extends ThCollapsibleActionsBarProps {
53
- items: ThActionEntry<string | ThActionsKeys | ThDockingKeys>[];
54
- overflowMenuClassName?: string;
55
- }
56
- declare const StatefulCollapsibleActionsBar: ({ id, items, overflowMenuClassName, ...props }: StatefulCollapsibleActionsBarProps) => react_jsx_runtime.JSX.Element;
57
-
58
- interface StatefulOverflowMenuProps {
59
- id: string;
60
- items: ThActionEntry<string | ThActionsKeys | ThDockingKeys>[];
61
- triggerRef: RefObject<HTMLElement | null>;
62
- className?: string;
63
- children?: ReactNode;
64
- }
65
- declare const StatefulOverflowMenu: ({ id, className, items, triggerRef }: StatefulOverflowMenuProps) => react_jsx_runtime.JSX.Element | undefined;
66
-
67
- declare const useDocking: <T extends string>(key: T) => {
68
- getDocker: () => ThDockingKeys[];
69
- sheetType: ThSheetTypes;
70
- };
71
-
72
- type ActionComponent = StatefulActionsMapObject;
73
- interface SettingComponent extends ThSettingsEntry {
74
- type?: "text" | "spacing";
75
- props?: any;
76
- }
77
- interface ThPlugin {
78
- id: string;
79
- name: string;
80
- description?: string;
81
- version?: string;
82
- components: {
83
- actions?: Record<string, ActionComponent>;
84
- settings?: Record<string, SettingComponent>;
85
- };
86
- }
87
-
88
- declare const createDefaultPlugin: () => ThPlugin;
89
-
90
- interface StatefulGroupWrapperProps<T extends string = ThTextSettingsKeys | ThSpacingSettingsKeys> {
91
- label: string;
92
- moreLabel: string;
93
- moreTooltip: string;
94
- onPressMore: (e: PressEvent) => void;
95
- componentsMap: Record<string, SettingComponent>;
96
- prefs?: ThSettingsGroupPref<T>;
97
- defaultPrefs: {
98
- main: T[];
99
- subPanel: T[];
100
- };
101
- isDisabled?: boolean;
102
- compounds?: {
103
- /**
104
- * Custom heading. Can be either:
105
- * - A React element that will be rendered directly
106
- * - Props that will be spread onto the default Heading component
107
- */
108
- heading?: React.ReactElement<typeof Heading> | WithRef<HeadingProps, HTMLHeadingElement>;
109
- };
110
- }
111
- declare const StatefulGroupWrapper: <T extends string = ThTextSettingsKeys | ThSpacingSettingsKeys>({ label, moreLabel, moreTooltip, onPressMore, componentsMap, prefs, defaultPrefs, isDisabled, compounds }: StatefulGroupWrapperProps<T>) => react_jsx_runtime.JSX.Element;
112
-
113
- interface StatefulDropdownProps extends Omit<ThDropdownProps, "classNames"> {
114
- standalone?: boolean;
115
- }
116
- declare const StatefulDropdown: ({ standalone, label, className, compounds, ...props }: StatefulDropdownProps) => react_jsx_runtime.JSX.Element;
117
-
118
- interface StatefulNumberFieldProps extends Omit<ThNumberFieldProps, "classNames"> {
119
- standalone?: boolean;
120
- resetLabel?: string;
121
- placeholder?: string;
122
- }
123
- declare const StatefulNumberField: ({ standalone, label, placeholder, value, resetLabel, ...props }: StatefulNumberFieldProps) => react_jsx_runtime.JSX.Element;
124
-
125
- interface StatefulRadioGroupProps extends Omit<ThRadioGroupProps, "classNames"> {
126
- standalone?: boolean;
127
- useGraphicalNavigation?: boolean;
128
- onEscape?: () => void;
129
- }
130
- declare const StatefulRadioGroup: ({ ref, standalone, useGraphicalNavigation, label, items, value, children, onChange, onEscape, ...props }: StatefulRadioGroupProps) => react_jsx_runtime.JSX.Element;
131
-
132
- interface StatefulSliderProps extends Omit<ThSliderProps, "classNames"> {
133
- standalone?: boolean;
134
- placeholder?: string;
135
- resetLabel?: string;
136
- displayTicks?: boolean;
137
- }
138
- declare const StatefulSlider: ({ standalone, label, placeholder, displayTicks, value, resetLabel, ...props }: StatefulSliderProps) => react_jsx_runtime.JSX.Element;
139
-
140
- interface StatefulSwitchProps extends Omit<ThSwitchProps, "classNames"> {
141
- standalone?: boolean;
142
- }
143
- declare const StatefulSwitch: ({ standalone, label, heading, ...props }: StatefulSwitchProps) => react_jsx_runtime.JSX.Element;
144
-
145
- interface useGridNavigationProps {
146
- containerRef: React__default.RefObject<HTMLDivElement | null>;
147
- items: React__default.RefObject<any[]>;
148
- currentValue: any;
149
- onChange: (value: any) => void;
150
- isRTL?: boolean;
151
- onEscape?: () => void;
152
- onFocus?: (value: string) => void;
153
- }
154
- declare const useGridNavigation: ({ containerRef, items, currentValue, onChange, isRTL, onEscape, onFocus }: useGridNavigationProps) => {
155
- onKeyDown: (e: React__default.KeyboardEvent) => void;
156
- };
157
-
158
- declare const useGridTemplate: (ref: React.RefObject<HTMLDivElement | null>, type?: "columns" | "rows") => number | null;
159
-
160
- interface StatefulSettingsItemProps {
161
- standalone?: boolean;
162
- }
163
-
164
- declare const StatefulLetterSpacing: ({ standalone }: StatefulSettingsItemProps) => react_jsx_runtime.JSX.Element;
165
-
166
- declare const StatefulLineHeight: ({ standalone }: StatefulSettingsItemProps) => react_jsx_runtime.JSX.Element;
167
-
168
- declare const StatefulParagraphIndent: ({ standalone }: StatefulSettingsItemProps) => react_jsx_runtime.JSX.Element;
169
-
170
- declare const StatefulParagraphSpacing: ({ standalone }: StatefulSettingsItemProps) => react_jsx_runtime.JSX.Element;
171
-
172
- declare const StatefulSpacingGroup: () => react_jsx_runtime.JSX.Element;
173
- declare const StatefulSpacingGroupContainer: () => react_jsx_runtime.JSX.Element;
174
-
175
- declare const StatefulSpacingPresets: ({ standalone }: StatefulSettingsItemProps) => react_jsx_runtime.JSX.Element | null;
176
-
177
- declare const StatefulWordSpacing: ({ standalone }: StatefulSettingsItemProps) => react_jsx_runtime.JSX.Element;
178
-
179
- /**
180
- * Hook that returns a mapping of line height options to their actual numeric values
181
- * This eliminates code duplication across spacing components
182
- */
183
- declare const useLineHeight: () => {
184
- publisher: null;
185
- small: any;
186
- medium: any;
187
- large: any;
188
- };
189
-
190
- /**
191
- * Hook to determine if preset system should be active
192
- * Only active when component is both registered AND displayed
193
- * This allows us to correctly handle overrides for presets,
194
- * and states for spacing components
195
- */
196
- declare const useSpacingPresets: () => {
197
- currentPreset: ThSpacingPresetKeys;
198
- getPresetValues: (presetKey: ThSpacingPresetKeys) => {
199
- letterSpacing: any;
200
- lineHeight: any;
201
- paragraphIndent: any;
202
- paragraphSpacing: any;
203
- wordSpacing: any;
204
- };
205
- getEffectiveSpacingValue: {
206
- (key: ThSpacingSettingsKeys.letterSpacing): number | null;
207
- (key: ThSpacingSettingsKeys.lineHeight): ThLineHeightOptions | null;
208
- (key: ThSpacingSettingsKeys.paragraphIndent): number | null;
209
- (key: ThSpacingSettingsKeys.paragraphSpacing): number | null;
210
- (key: ThSpacingSettingsKeys.wordSpacing): number | null;
211
- };
212
- getSpacingResetValue: {
213
- (key: ThSpacingSettingsKeys.letterSpacing): number | null;
214
- (key: ThSpacingSettingsKeys.lineHeight): ThLineHeightOptions | null;
215
- (key: ThSpacingSettingsKeys.paragraphIndent): number | null;
216
- (key: ThSpacingSettingsKeys.paragraphSpacing): number | null;
217
- (key: ThSpacingSettingsKeys.wordSpacing): number | null;
218
- };
219
- canBeReset: (key: ThSpacingSettingsKeys) => boolean;
220
- setLetterSpacing: (value: number | null) => void;
221
- setLineHeight: (value: ThLineHeightOptions) => void;
222
- setParagraphIndent: (value: number | null) => void;
223
- setParagraphSpacing: (value: number | null) => void;
224
- setWordSpacing: (value: number | null) => void;
225
- setPublisherStyles: (value: boolean) => void;
226
- };
227
-
228
- declare const StatefulFontFamily: ({ standalone }: StatefulSettingsItemProps & {
229
- publicationLanguage?: string;
230
- }) => react_jsx_runtime.JSX.Element;
231
-
232
- declare const UnstableStatefulFontWeight: ({ standalone }: StatefulSettingsItemProps) => react_jsx_runtime.JSX.Element;
233
-
234
- declare const StatefulHyphens: ({ standalone }: StatefulSettingsItemProps) => react_jsx_runtime.JSX.Element;
235
-
236
- declare const StatefulTextAlign: ({ standalone }: StatefulSettingsItemProps) => react_jsx_runtime.JSX.Element;
237
-
238
- declare const StatefulTextGroup: () => react_jsx_runtime.JSX.Element;
239
- declare const StatefulTextGroupContainer: () => react_jsx_runtime.JSX.Element;
240
-
241
- declare const StatefulTextNormalize: ({ standalone }: StatefulSettingsItemProps) => react_jsx_runtime.JSX.Element;
242
-
243
- declare const StatefulPublisherStyles: ({ standalone }: StatefulSettingsItemProps) => react_jsx_runtime.JSX.Element;
244
-
245
- declare const StatefulZoom: () => react_jsx_runtime.JSX.Element;
246
-
247
- interface StatefulSheet {
248
- id: ActionsStateKeys;
249
- triggerRef: RefObject<HTMLElement | null>;
250
- heading: string;
251
- headerVariant?: ThSheetHeaderVariant;
252
- className: string;
253
- isOpen: boolean;
254
- onOpenChange: (isOpen: boolean) => void;
255
- onClosePress: () => void;
256
- docker?: ThDockingKeys[];
257
- children?: ReactNode;
258
- resetFocus?: unknown;
259
- focusWithinRef?: RefObject<HTMLElement | null>;
260
- focusSelector?: string;
261
- scrollTopOnFocus?: boolean;
262
- dismissEscapeKeyClose?: boolean;
263
- }
264
-
265
- interface StatefulBottomSheetProps extends StatefulSheet {
266
- }
267
- interface ScrimPref {
268
- active: boolean;
269
- override?: string;
270
- }
271
- declare const StatefulBottomSheet: ({ id, heading, headerVariant, className, isOpen, onOpenChange, onClosePress, children, resetFocus, focusWithinRef, focusSelector, scrollTopOnFocus, dismissEscapeKeyClose }: StatefulBottomSheetProps) => react_jsx_runtime.JSX.Element | undefined;
272
-
273
- interface StatefulDockedSheetProps extends StatefulSheet {
274
- flow: ThDockingKeys.start | ThDockingKeys.end | null;
275
- }
276
- declare const StatefulDockedSheet: ({ id, heading, headerVariant, className, isOpen, onClosePress, docker, flow, children, resetFocus, focusSelector, focusWithinRef, scrollTopOnFocus }: StatefulDockedSheetProps) => react_jsx_runtime.JSX.Element | undefined;
277
-
278
- interface StatefulFullScreenSheetProps extends StatefulSheet {
279
- }
280
- declare const StatefulFullScreenSheet: ({ heading, headerVariant, className, isOpen, onOpenChange, onClosePress, children, resetFocus, focusWithinRef, focusSelector, scrollTopOnFocus, dismissEscapeKeyClose }: StatefulFullScreenSheetProps) => react_jsx_runtime.JSX.Element | undefined;
281
-
282
- interface StatefulPopoverSheetProps extends StatefulSheet {
283
- placement?: PopoverProps["placement"];
284
- }
285
- declare const StatefulPopoverSheet: ({ id, triggerRef, heading, headerVariant, className, isOpen, onOpenChange, onClosePress, placement, docker, children, resetFocus, focusWithinRef, focusSelector, scrollTopOnFocus, dismissEscapeKeyClose }: StatefulPopoverSheetProps) => react_jsx_runtime.JSX.Element | undefined;
286
-
287
- declare const StatefulSheetWrapper: ({ sheetType, sheetProps, children }: {
288
- sheetType: ThSheetTypes;
289
- sheetProps: StatefulPopoverSheetProps | StatefulFullScreenSheetProps | StatefulDockedSheetProps | StatefulBottomSheetProps;
290
- children: ReactNode;
291
- }) => react_jsx_runtime.JSX.Element;
292
-
293
- declare const StatefulPreferencesProvider: ({ children, initialPreferences }: {
294
- children: ReactNode;
295
- initialPreferences?: ThPreferences<DefaultKeys>;
296
- }) => react_jsx_runtime.JSX.Element;
297
-
298
- declare const useNavigator: () => any;
299
-
300
- interface PositionStorage {
301
- get: () => Locator | undefined;
302
- set: (locator: Locator) => void | Promise<void>;
303
- }
304
- interface StatefulReaderProps {
305
- publication: Publication;
306
- localDataKey: string | null;
307
- plugins?: ThPlugin[];
308
- positionStorage?: PositionStorage;
309
- }
310
- type ThPluginFactory = () => ThPlugin[] | Promise<ThPlugin[]>;
311
- interface ReaderPlugins {
312
- epub?: ThPluginFactory;
313
- webPub?: ThPluginFactory;
314
- audio?: ThPluginFactory;
315
- }
316
- interface ReaderComponentProps {
317
- profile: "epub" | "webPub" | "audio" | undefined | null;
318
- publication: Publication;
319
- localDataKey: string | null;
320
- positionStorage?: PositionStorage;
321
- plugins?: ReaderPlugins;
322
- }
323
- declare const StatefulReaderWrapper: ({ profile, plugins, ...props }: ReaderComponentProps) => react_jsx_runtime.JSX.Element | null;
324
-
325
- interface UsePublicationOptions {
326
- url: string;
327
- onError?: (error: ProcessedError) => void;
328
- fetcher?: Fetcher;
329
- }
330
- interface UsePublicationReturn {
331
- isLoading: boolean;
332
- error: ProcessedError | null;
333
- publication: Publication | null;
334
- manifest: object | null;
335
- selfLink: string | null;
336
- localDataKey: string | null;
337
- profile: ReaderProfile | null;
338
- isRTL: boolean;
339
- isFXL: boolean;
340
- fontLanguage: string;
341
- hasDisplayTransformability: boolean;
342
- }
343
- declare const usePublication: ({ url, onError, fetcher: customFetcher }: UsePublicationOptions) => UsePublicationReturn;
344
-
345
- interface ReaderTransitions {
346
- isImmersive: boolean;
347
- isFullscreen: boolean;
348
- isScroll: boolean;
349
- hasUserNavigated: boolean;
350
- wasImmersive: boolean;
351
- wasFullscreen: boolean;
352
- wasScroll: boolean;
353
- wasUserNavigated: boolean;
354
- fromImmersive: boolean;
355
- toImmersive: boolean;
356
- fromFullscreen: boolean;
357
- toFullscreen: boolean;
358
- fromScroll: boolean;
359
- toScroll: boolean;
360
- fromUserNavigation: boolean;
361
- toUserNavigation: boolean;
362
- }
363
- declare const useReaderTransitions: () => ReaderTransitions;
364
-
365
- export { StatefulTextAlign as $, type StatefulNumberFieldProps as A, StatefulNumberField as B, type StatefulRadioGroupProps as C, StatefulRadioGroup as D, type StatefulSliderProps as E, StatefulSlider as F, type StatefulSwitchProps as G, StatefulSwitch as H, type useGridNavigationProps as I, useGridNavigation as J, useGridTemplate as K, type StatefulSettingsItemProps as L, StatefulLetterSpacing as M, StatefulLineHeight as N, StatefulParagraphIndent as O, StatefulParagraphSpacing as P, StatefulSpacingGroup as Q, StatefulSpacingGroupContainer as R, type StatefulActionsMapObject as S, type ThPlugin as T, StatefulSpacingPresets as U, StatefulWordSpacing as V, useLineHeight as W, useSpacingPresets as X, StatefulFontFamily as Y, UnstableStatefulFontWeight as Z, StatefulHyphens as _, usePublication as a, StatefulTextGroup as a0, StatefulTextGroupContainer as a1, StatefulTextNormalize as a2, StatefulPublisherStyles as a3, StatefulZoom as a4, type StatefulBottomSheetProps as a5, type ScrimPref as a6, StatefulBottomSheet as a7, type StatefulDockedSheetProps as a8, StatefulDockedSheet as a9, type StatefulFullScreenSheetProps as aa, StatefulFullScreenSheet as ab, type StatefulPopoverSheetProps as ac, StatefulPopoverSheet as ad, StatefulSheetWrapper as ae, type StatefulSheet as af, StatefulPreferencesProvider as ag, type PositionStorage as ah, type StatefulReaderProps as ai, type ThPluginFactory as aj, type ReaderPlugins as ak, type ReaderComponentProps as al, StatefulReaderWrapper as am, useReaderTransitions as b, type StatefulActionTriggerProps as c, type StatefulActionContainerProps as d, StatefulFullscreenTrigger as e, StatefulJumpToPositionContainer as f, StatefulJumpToPositionTrigger as g, StatefulSettingsContainer as h, StatefulSettingsTrigger as i, StatefulTocContainer as j, StatefulTocTrigger as k, type StatefulActionIconProps as l, StatefulActionIcon as m, type StatefulOverflowMenuItemProps as n, StatefulOverflowMenuItem as o, type StatefulCollapsibleActionsBarProps as p, StatefulCollapsibleActionsBar as q, type StatefulOverflowMenuProps as r, StatefulOverflowMenu as s, useDocking as t, useNavigator as u, createDefaultPlugin as v, type StatefulGroupWrapperProps as w, StatefulGroupWrapper as x, type StatefulDropdownProps as y, StatefulDropdown as z };
@@ -1,39 +0,0 @@
1
- import * as _readium_navigator from '@readium/navigator';
2
- import { WebPubNavigatorListeners, IWebPubPreferences, IWebPubDefaults, IInjectablesConfig, IContentProtectionConfig, WebPubSettings } from '@readium/navigator';
3
- import { Publication, Locator, Link } from '@readium/shared';
4
-
5
- type cbb = (ok: boolean) => void;
6
- interface WebPubNavigatorLoadProps {
7
- container: HTMLDivElement | null;
8
- publication: Publication;
9
- listeners: WebPubNavigatorListeners;
10
- initialPosition?: Locator;
11
- preferences?: IWebPubPreferences;
12
- defaults?: IWebPubDefaults;
13
- injectables?: IInjectablesConfig;
14
- contentProtection?: IContentProtectionConfig;
15
- }
16
- declare const useWebPubNavigator: () => {
17
- WebPubNavigatorLoad: (config: WebPubNavigatorLoadProps, cb: Function) => void;
18
- WebPubNavigatorDestroy: (cb: Function) => void;
19
- goRight: (animated: boolean, callback: cbb) => void;
20
- goLeft: (animated: boolean, callback: cbb) => void;
21
- goBackward: (animated: boolean, callback: cbb) => void;
22
- goForward: (animated: boolean, callback: cbb) => void;
23
- goLink: (link: Link, animated: boolean, callback: cbb) => void;
24
- go: (locator: Locator, animated: boolean, callback: cbb) => void;
25
- currentLocator: () => Locator | undefined;
26
- previousLocator: () => Locator | null | undefined;
27
- nextLocator: () => Locator | null | undefined;
28
- currentPositions: () => number[] | null | undefined;
29
- canGoBackward: () => boolean | undefined;
30
- canGoForward: () => boolean | undefined;
31
- isScrollStart: () => boolean | undefined;
32
- isScrollEnd: () => boolean | undefined;
33
- preferencesEditor: _readium_navigator.IPreferencesEditor | undefined;
34
- getSetting: <K extends keyof WebPubSettings>(settingKey: K) => WebPubSettings[K];
35
- submitPreferences: (preferences: IWebPubPreferences) => Promise<void>;
36
- getCframes: () => (_readium_navigator.WebPubFrameManager | undefined)[] | undefined;
37
- };
38
-
39
- export { type WebPubNavigatorLoadProps as W, useWebPubNavigator as u };