@edrlab/thorium-web 1.0.9 → 1.1.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 (66) hide show
  1. package/README.md +2 -0
  2. package/dist/{StatefulReader-DdQrrgZY.d.mts → StatefulReader-BjH7bkU1.d.mts} +1 -25
  3. package/dist/chunk-7CGMWOZN.mjs +20 -0
  4. package/dist/chunk-7CGMWOZN.mjs.map +1 -0
  5. package/dist/{chunk-PVGIY5SC.mjs → chunk-D24O64OP.mjs} +375 -278
  6. package/dist/chunk-D24O64OP.mjs.map +1 -0
  7. package/dist/{chunk-G2SKPGPO.mjs → chunk-FG6BJGVE.mjs} +5 -25
  8. package/dist/chunk-FG6BJGVE.mjs.map +1 -0
  9. package/dist/{chunk-SQHOOSST.mjs → chunk-HE3WFPGE.mjs} +84 -85
  10. package/dist/chunk-HE3WFPGE.mjs.map +1 -0
  11. package/dist/chunk-KKJA56IZ.mjs +27 -0
  12. package/dist/chunk-KKJA56IZ.mjs.map +1 -0
  13. package/dist/{chunk-OXZU5FTD.mjs → chunk-SPAC7T57.mjs} +32 -21
  14. package/dist/chunk-SPAC7T57.mjs.map +1 -0
  15. package/dist/components/Epub/index.css +1282 -0
  16. package/dist/components/Epub/index.css.map +1 -0
  17. package/dist/components/Epub/index.d.mts +1 -1
  18. package/dist/components/Epub/index.mjs +47 -44
  19. package/dist/components/Epub/index.mjs.map +1 -1
  20. package/dist/components/Misc/index.css +102 -0
  21. package/dist/components/Misc/index.css.map +1 -0
  22. package/dist/components/Misc/index.d.mts +28 -0
  23. package/dist/components/Misc/index.mjs +110 -0
  24. package/dist/components/Misc/index.mjs.map +1 -0
  25. package/dist/components/WebPub/index.css +1214 -0
  26. package/dist/components/WebPub/index.css.map +1 -0
  27. package/dist/components/WebPub/index.d.mts +2 -2
  28. package/dist/components/WebPub/index.mjs +28 -25
  29. package/dist/components/WebPub/index.mjs.map +1 -1
  30. package/dist/core/Components/index.mjs +0 -1
  31. package/dist/core/Helpers/index.d.mts +12 -2
  32. package/dist/core/Helpers/index.mjs +1 -2
  33. package/dist/core/Hooks/index.mjs +0 -1
  34. package/dist/i18n/index.mjs +5 -5
  35. package/dist/lib/index.mjs +2 -3
  36. package/dist/locales/et/thorium-web.json +1 -0
  37. package/dist/locales/it/thorium-web.json +1 -0
  38. package/dist/locales/pl/thorium-web.json +26 -13
  39. package/dist/locales/sv/thorium-web.json +37 -37
  40. package/dist/next-lib/index.mjs +0 -2
  41. package/dist/next-lib/index.mjs.map +1 -1
  42. package/dist/preferences/index.mjs +3 -4
  43. package/package.json +38 -34
  44. package/dist/backLink.module-QFOMD4RA.module.css +0 -36
  45. package/dist/chunk-3QS3WKRC.mjs +0 -29
  46. package/dist/chunk-3QS3WKRC.mjs.map +0 -1
  47. package/dist/chunk-G2SKPGPO.mjs.map +0 -1
  48. package/dist/chunk-OXZU5FTD.mjs.map +0 -1
  49. package/dist/chunk-PVGIY5SC.mjs.map +0 -1
  50. package/dist/chunk-SQHOOSST.mjs.map +0 -1
  51. package/dist/chunk-TTGURRX3.mjs +0 -19
  52. package/dist/chunk-TTGURRX3.mjs.map +0 -1
  53. package/dist/docking.module-TDNYZX4H.module.css +0 -40
  54. package/dist/jumpToPosition.module-4C47UYPE.module.css +0 -41
  55. package/dist/overflowMenu.module-QL32ISXF.module.css +0 -68
  56. package/dist/publicationGrid.module-T6ISNRGM.module.css +0 -70
  57. package/dist/reader-NGCQJKLX.css +0 -261
  58. package/dist/readerArrowButton.module-EFLOIADG.module.css +0 -77
  59. package/dist/readerHeader.module-RNGQFLVS.module.css +0 -35
  60. package/dist/readerLoader.module-KDBPCQZJ.module.css +0 -40
  61. package/dist/readerPagination.module-DYBZAQ7H.module.css +0 -76
  62. package/dist/readerProgression.module-7PU7L74S.module.css +0 -5
  63. package/dist/readerSharedUI.module-Y2VDWFS5.module.css +0 -98
  64. package/dist/settings.module-H5MUDFJO.module.css +0 -437
  65. package/dist/sheets.module-LJOLY4MK.module.css +0 -195
  66. package/dist/toc.module-F47C5CDS.module.css +0 -153
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/app/read/app.css","../../../src/app/reset.css","../../../src/components/assets/styles/thorium-web.button.module.css","../../../src/components/Actions/assets/styles/thorium-web.overflow.module.css","../../../src/components/Actions/JumpToPosition/assets/styles/thorium-web.jumpToPosition.module.css","../../../src/components/Sheets/assets/styles/thorium-web.sheets.module.css","../../../src/components/Docking/assets/styles/thorium-web.docking.module.css","../../../src/components/Settings/assets/styles/thorium-web.reader.settings.module.css","../../../src/components/Actions/Toc/assets/styles/thorium-web.toc.module.css","../../../src/components/assets/styles/thorium-web.reader.app.module.css","../../../src/components/assets/styles/thorium-web.reader.header.module.css","../../../src/components/assets/styles/thorium-web.backlink.module.css","../../../src/components/assets/styles/thorium-web.reader.pagination.module.css","../../../src/components/assets/styles/thorium-web.reader.progression.module.css"],"sourcesContent":["html, body {\n min-height: 100%;\n height: 100%;\n margin: 0;\n overflow: hidden;\n touch-action: pan-x pan-y;\n overscroll-behavior-x: none;\n overscroll-behavior-y: none;\n background-color: var(--th-theme-background);\n color: var(--th-theme-text);\n position: relative;\n}","button {\n -webkit-appearance: none;\n appearance: none;\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n font: inherit;\n color: inherit;\n cursor: pointer;\n outline: none;\n -webkit-tap-highlight-color: transparent;\n}\n\ninput {\n font-size: 1rem;\n border-radius: 0;\n text-align: inherit;\n background: none;\n box-shadow: none;\n padding: 0;\n cursor: text;\n border: none;\n color: inherit;\n font: inherit;\n outline: none;\n}\n\n::selection {\n background-color: var(--th-theme-select);\n color: var(--th-theme-onSelect);\n}",".icon,\n.dockerButton,\n.closeButton,\n.backButton {\n box-sizing: border-box;\n padding: calc(var(--th-icon-size, 24px) * (1/4));\n text-align: center;\n border-radius: var(--th-layout-radius);\n line-height: 0;\n}\n\n.backButton {\n box-sizing: content-box;\n height: var(--th-icon-size, 24px);\n border: 2px solid transparent;\n display: flex;\n align-items: center;\n}\n\n.closeButton,\n.backButton {\n margin-inline-start: auto;\n}\n\n.icon svg,\n.dockerButton svg,\n.closeButton svg,\n.backButton svg {\n fill: var(--th-theme-text);\n width: var(--th-icon-size, 24px);\n height: var(--th-icon-size, 24px);\n}\n\n.icon[data-hovered],\n.dockerButton[data-hovered],\n.closeButton[data-hovered],\n.backButton[data-hovered] {\n background-color: var(--th-theme-hover);\n}\n\n.icon[data-focus-visible],\n.dockerButton[data-focus-visible],\n.closeButton[data-focus-visible],\n.backButton[data-focus-visible] {\n outline: 2px solid var(--th-theme-focus);\n}\n\n.backButton[data-disabled] {\n color: var(--th-theme-disable)\n}\n\n.icon[data-disabled] svg,\n.dockerButton[data-disabled] svg,\n.closeButton[data-disabled] svg,\n.backButton[data-disabled] svg {\n fill: var(--th-theme-disable);\n}\n\n.tooltip {\n background-color: var(--th-theme-text);\n color: var(--th-theme-background);\n padding: 5px;\n border-radius: var(--th-layout-radius);\n}\n\n/* Visibility + Immersive */\n\n.alwaysVisible {\n opacity: 1;\n}\n\n:global(.thorium_web_stackedUI.thorium_web_isImmersive:not(.thorium_web_isHovering)) .partiallyVisible {\n opacity: 0;\n}\n\n/* Utils to improve icons’ consistency */\n\n.iconCompSm {\n padding: calc(var(--th-icon-size, 24px) * (1/3));\n}\n\n.iconCompSm svg {\n width: calc(var(--th-icon-size, 24px) * (3/4));\n height: calc(var(--th-icon-size, 24px) * (3/4));\n stroke: var(--th-theme-text);\n}\n\n.iconCompLg {\n padding: calc(var(--th-icon-size, 24px) * (1/6));\n}\n\n.iconCompLg svg {\n width: calc(var(--th-icon-size, 24px) * (4/3));\n height: calc(var(--th-icon-size, 24px) * (4/3));\n}\n\n.iconApplyStroke svg {\n stroke: var(--th-theme-text);\n}",":global(.thorium_web_layeredUI.thorium_web_isImmersive:not(.thorium_web_isHovering)) .hint {\n transform: translateY(calc(var(--th-icon-size, 24px) * 2.5));\n transition-property: transform;\n transition-duration: 200ms; \n transition-timing-function: ease-in-out;\n}\n\n:global(.thorium_web_layeredUI.thorium_web_isReflow.thorium_web_isScroll.thorium_web_isImmersive:not(.thorium_web_isHovering)) .hint {\n outline: 1px solid var(--th-theme-subdue);\n background-color: var(--th-theme-background);\n}\n\n.popover {\n background-color: var(--th-theme-background);\n color: var(--th-theme-text);\n padding: calc(var(--th-layout-spacing) / 2);\n border-radius: var(--th-layout-radius);\n border: 1px solid var(--th-theme-subdue);\n filter: drop-shadow(var(--th-theme-elevate));\n box-sizing: border-box;\n max-width: var(--th-layout-constraints-popover, 500px);\n width: max-content;\n}\n\n.menu {\n outline: none;\n}\n\n.menuItem {\n display: flex;\n align-items: center;\n gap: calc(var(--th-layout-spacing) / 2);\n padding: calc(var(--th-layout-spacing) / 2);\n border-radius: var(--th-layout-radius);\n outline: none;\n}\n\n.menuItem[data-hovered] {\n background-color: var(--th-theme-hover);\n}\n\n.menuItem[data-focus-visible] {\n outline: 2px solid var(--th-theme-focus);\n}\n\n.menuItem[data-disabled] {\n color: var(--th-theme-disable);\n}\n\n.menuItem > svg {\n width: calc(var(--th-icon-size, 24px) / 1.5);\n height: calc(var(--th-icon-size, 24px) / 1.5);\n fill: currentColor;\n}\n\n.menuItemLabel {\n font-size: 1rem;\n}\n\n.menuItemShortcut {\n font-family: monospace;\n font-weight: bold;\n color: var(--th-theme-subdue);\n padding: 5px;\n margin-inline-start: auto;\n border-radius: var(--th-layout-radius);\n border: 1px solid var(--th-theme-subdue);\n}",".wrapper {}\n\n.form {\n display: flex;\n gap: calc(var(--th-layout-spacing) / 2);\n}\n\n.label {\n margin-block: 0 var(--th-layout-spacing);\n display: block;\n}\n\n.input {\n display: block;\n font-weight: bold;\n padding: calc(var(--th-icon-size, 24px) * (1/4)) calc(var(--th-layout-spacing) / 2);\n border-radius: var(--th-layout-radius);\n border: 2px solid var(--th-theme-subdue);\n}\n\n.button {\n box-sizing: content-box;\n border: 2px solid var(--th-theme-subdue);\n padding: calc(var(--th-icon-size, 24px) * (1/4)) calc(var(--th-icon-size, 24px) * (1/2));\n text-align: center;\n border-radius: var(--th-layout-radius);\n margin-inline-start: auto;\n align-self: flex-end;\n}\n\n.button[data-hovered] {\n background-color: var(--th-theme-hover);\n}\n\n.input[data-focus-visible],\n.button[data-focus-visible] {\n outline: 2px solid var(--th-theme-focus);\n}\n\n.numberField[data-disabled],\n.button[data-disabled] {\n color: var(--th-theme-disable);\n} ","/* React Aria modal provides a visual viewport for mobile + keyboard: --visual-viewport-height \n which should explain why it’s being used here while not mentioned anywhere else in the codebase */\n\n.fullscreen {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 10;\n overflow-y: auto;\n scroll-padding-top: calc(var(--th-sheet-sticky-header, 80px) + var(--th-layout-spacing));\n scroll-padding-bottom: var(--th-layout-spacing);\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n max-height: var(--visual-viewport-height, 100dvh);\n background-color: var(--th-theme-background);\n color: var(--th-theme-text);\n align-items: center;\n}\n\n.popover {\n overflow-y: auto;\n scroll-padding-top: calc(var(--th-sheet-sticky-header, 80px) + var(--th-layout-spacing));\n scroll-padding-bottom: var(--th-layout-spacing);\n box-sizing: border-box;\n width: calc(340px + (2 * var(--th-layout-spacing)));\n max-width: var(--th-layout-constraints-popover, 500px);\n max-height: 100%;\n max-height: var(--visual-viewport-height, 100dvh);\n padding: 0;\n background-color: var(--th-theme-background);\n color: var(--th-theme-text);\n border-radius: var(--th-layout-radius);\n border: 1px solid var(--th-theme-subdue);\n filter: drop-shadow(var(--th-theme-elevate));\n}\n\n/* React Modal Sheet handles scroll + sticky header so no need for scroll-padding here */\n.draggable {\n box-sizing: border-box;\n max-width: var(--th-layout-constraints-bottomSheet, 600px);\n left: max(calc((100% - var(--th-layout-constraints-bottomSheet, 600px)) / 2), 0px) !important;\n background-color: var(--th-theme-background) !important;\n color: var(--th-theme-text) !important;\n border: none;\n /* Animating drop-shadow pretty much kills performance, hence why we use a pseudo-element */\n filter: none !important;\n box-shadow: none !important;\n /* M3 = 28dp, see https://m3.material.io/components/bottom-sheets/overview */\n border-top-left-radius: 28px !important;\n border-top-right-radius: 28px !important;\n transition: border-radius 500ms;\n}\n\n.draggable::after {\n content: \"\";\n z-index: -1;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n /* important for performance */\n transform: translateZ(0);\n box-shadow: var(--th-theme-elevate);\n border-top-left-radius: 28px;\n border-top-right-radius: 28px;\n}\n\n.draggableFullHeightDetent {\n height: calc(100% - env(safe-area-inset-top)) !important;\n}\n\n.draggableContentHeightDetent {\n max-height: calc(100% - env(safe-area-inset-top)) !important;\n}\n\n.draggable[data-full-height] {\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n transition: border-radius 500ms;\n}\n\n.draggableBackdrop {\n /* So that React Aria can use it to dismiss the sheet as it’s set to none by React Modal Sheet. */\n pointer-events: auto !important;\n background-color: transparent !important;\n}\n\n.draggableScrim {\n background-color: var(--th-layout-defaults-scrim) !important;\n}\n\n.draggableContainer {\n padding: 0;\n background-color: var(--th-theme-background);\n color: var(--th-theme-text);\n}\n\n.draggableScroller {\n position: relative;\n scroll-padding-bottom: calc(var(--th-layout-spacing) * 4);\n}\n\n.dragIndicator {\n width: calc(var(--th-icon-size, 40px) * 1.5);\n position: absolute;\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.dragIndicator[data-focus-visible] {\n border-radius: var(--th-layout-radius);\n outline: 2px solid var(--th-theme-focus);\n}\n\n.dragIndicator svg {\n fill: var(--th-theme-subdue);\n width: 100%;\n height: auto;\n}\n\n.docked {\n /* We need relative positioning so that RAC FocusScope scrolls properly on tabbing */\n position: relative;\n overflow-y: auto;\n scroll-padding-top: calc(var(--th-sheet-sticky-header, 80px) + var(--th-layout-spacing));\n scroll-padding-bottom: var(--th-layout-spacing);\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n height: 100vh;\n height: 100dvh;\n background-color: var(--th-theme-background);\n color: var(--th-theme-text);\n}\n\n.dockedLeftBorder {\n border-right: 1px solid var(--th-theme-subdue);\n}\n\n.dockedRightBorder {\n border-left: 1px solid var(--th-theme-subdue);\n}\n\n.dialog {\n outline: none;\n}\n\n.header {\n display: flex;\n align-items: center;\n position: sticky;\n top: 0;\n left: 0;\n right: 0;\n z-index: 10;\n padding: calc(var(--th-layout-spacing) / 2) var(--th-layout-spacing);\n background-color: var(--th-theme-background);\n border-bottom: 1px solid var(--th-theme-subdue);\n}\n\n.draggableHeader {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n background-color: var(--th-theme-background);\n border-bottom: 1px solid var(--th-theme-subdue);\n padding: var(--th-layout-spacing) var(--th-layout-spacing) calc(var(--th-layout-spacing) / 2) var(--th-layout-spacing);\n /* Otherwise covers the modal’s */\n border-top-left-radius: 28px !important;\n border-top-right-radius: 28px !important;\n transition: border-radius 500ms;\n}\n\n.draggable[data-full-height] .draggableHeader {\n /* Otherwise covers the modal’s */\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n transition: border-radius 500ms;\n}\n\n.heading {\n font-size: 1.25rem;\n line-height: 1;\n margin: 0;\n padding: 0;\n}\n\n.body {\n padding: var(--th-layout-spacing);\n}",".dockerWrapper {\n margin-inline-start: auto;\n margin-inline-end: calc(var(--th-icon-size, 24px) * (1 / 4) * -1); /* Optical alingment */\n display: flex;\n gap: 2px;\n padding-inline-start: var(--th-layout-spacing);\n}\n\n.docker {\n display: flex;\n gap: 2px;\n}\n\n.resizeHandle {\n position: relative;\n width: 0;\n}\n\n.resizeHandle:focus-visible {\n outline: 2px solid var(--th-theme-focus);\n}\n\n.resizeHandleGrab {\n position: absolute;\n z-index: 1000;\n top: 50%;\n transform: translateY(-50%);\n width: 5px;\n height: 50px;\n border-radius: 5px;\n background-color: var(--th-theme-subdue);\n}\n\n.resizeHandleGrabLeft {\n left: 0;\n}\n\n.resizeHandleGrabRight {\n left: -5px;\n}",".wrapper {}\n\n.group {\n margin: calc(var(--th-layout-spacing) * 2) 0; \n}\n\n.advancedGroup {\n position: relative;\n}\n\n.advancedIcon {\n position: absolute;\n inset-inline-end: 0;\n inset-block-start: 0;\n}\n\n.label {\n display: block;\n font-weight: bold;\n font-size: 1rem;\n margin: 0;\n}\n\n.groupLabel {\n padding-top: calc(var(--th-icon-size, 24px) * (1/3));\n}\n\n.radioWrapper,\n.groupWrapper {\n margin: var(--th-layout-spacing) 0;\n text-align: center;\n border-radius: var(--th-layout-radius);\n}\n\n.numberField .groupWrapper {\n margin-bottom: 0;\n}\n\n.radioWrapper {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(min(100%, 100px), 1fr));\n gap: calc(var(--th-layout-spacing) / 4);\n width: 100%; \n}\n\n.groupWrapper {\n display: flex;\n width: fit-content;\n gap: var(--th-layout-spacing) calc(var(--th-layout-spacing) / 2);\n}\n\n.advancedGroup .radioWrapper {\n margin-bottom: 0;\n}\n\n.groupWrapper[data-focus-within]:has(input[data-focus-visible]) {\n outline: 2px solid var(--th-theme-focus);\n}\n\n.numberFieldWrapper,\n.sliderWrapper {\n display: flex;\n align-items: flex-start;\n max-width: 100%;\n}\n\n.numberFieldWrapper .numberField,\n.sliderWrapper .slider {\n flex: 1 0 auto;\n}\n\n.group:first-of-type {\n margin-top: 0;\n}\n\n.group:last-of-type {\n margin-bottom: 0;\n}\n\n/* Reset button */\n\n.resetButton {\n margin-inline-start: auto;\n}\n\n/* Number field */\n\n.numberField .input {\n background-color: var(--th-theme-background);\n color: var(--th-theme-text);\n font-weight: bold;\n align-self: center;\n max-width: 20ch;\n}\n\n.groupWrapper[data-disabled] .input {\n color: var(--th-theme-disable)\n}\n\n.radio {\n padding: calc(var(--th-layout-spacing) / 2);\n border-radius: var(--th-layout-radius);\n box-sizing: border-box;\n border: 2px solid transparent;\n}\n\n.radio:not(.themeRadio) {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: calc(var(--th-layout-spacing) / 2);\n min-width: 0;\n width: 100%;\n}\n\n.radio:not(.themeRadio) > * {\n width: 100%;\n text-align: center;\n}\n\n/* Text truncation for non-theme radios */\n.radio:not(.themeRadio) span {\n display: -webkit-box;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1.2em;\n max-height: 2.4em; /* 2 lines of text */\n width: 100%;\n box-sizing: border-box;\n white-space: normal;\n}\n\n.radio:not(.themeRadio)[data-selected] {\n border: 2px solid var(--th-theme-subdue);\n}\n\n.radio[data-disabled] {\n color: var(--th-theme-disable);\n}\n\n.radio[data-hovered] {\n background-color: var(--th-theme-hover);\n}\n\n.radio[data-focus-visible] {\n outline: 2px solid var(--th-theme-focus);\n}\n\n.radio svg {\n width: var(--th-icon-size, 32px);\n height: var(--th-icon-size, 32px);\n /* So that it’s the same color as text based on state */\n fill: currentColor;\n}\n\n.themesWrapper {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n grid-auto-flow: row;\n max-width: 100%;\n gap: calc(var(--th-layout-spacing) / 2);\n}\n\n.themeRadio {\n padding-block: calc(var(--th-layout-spacing) / 4);\n padding-inline: calc((var(--th-icon-size, 24px) * 5/6) + (var(--th-layout-spacing) / 4));\n position: relative;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.themeRadio svg {\n width: calc(var(--th-icon-size, 24px) * 5/6);\n height: calc(var(--th-icon-size, 24px) * 5/6);\n position: absolute;\n inset-inline-end: 5px;\n inset-block-end: 5px;\n /* So that it’s the same color as text w/o having to expose a custom prop globally */\n fill: currentColor;\n}\n\n.separator {\n border: none;\n border-top: 1px solid var(--th-theme-subdue);\n}\n\n/* Slider */\n\n.slider {\n display: grid;\n grid-template-areas: \"label output\"\n \"track track\";\n grid-template-columns: 1fr auto;\n gap: calc(var(--th-layout-spacing) / 2);\n color: var(--th-theme-text);\n flex-direction: column;\n max-width: min(calc(100% - (var(--th-layout-spacing) / 2)), 80%);\n}\n\n.sliderLabel {\n grid-area: label;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n}\n\n.sliderOutput {\n grid-area: output;\n}\n\n.slider[data-disabled] .sliderLabel,\n.slider[data-disabled] .sliderOutput {\n color: var(--th-theme-disable);\n}\n\n.sliderTrack {\n grid-area: track;\n position: relative;\n height: 30px;\n width: auto;\n box-sizing: border-box;\n margin-inline: calc(var(--th-layout-spacing) / 2);\n}\n\n.sliderTrack::before {\n content: \"\";\n display: block;\n position: absolute;\n background: var(--th-theme-subdue);\n height: 3px;\n width: 100%;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.sliderThumb {\n width: 1.25rem;\n height: 1.25rem;\n border-radius: 50%;\n background: var(--th-theme-text);\n border: 2px solid var(--th-theme-subdue);\n top: 50%;\n}\n\n.slider[data-disabled] .sliderThumb {\n background: var(--th-theme-disable);\n border: 2px solid var(--th-theme-disable);\n}\n\n.sliderThumb[data-dragging] {\n background: var(--th-theme-subdue);\n}\n\n.sliderThumb[data-focus-visible] {\n outline: 2px solid var(--th-theme-focus);\n border: 2px solid var(--th-theme-focus);\n}\n\n.sliderPlaceholder {\n color: var(--th-theme-subdue); \n}\n\n/* Slider with ticks */\n\n.sliderWithTicks .sliderTrack::before {\n background: \n /* Track line */\n linear-gradient(\n to right,\n var(--th-theme-subdue) 0%,\n var(--th-theme-subdue) 100%\n ) 0 50% / 100% 3px no-repeat,\n\n /* Ticks */\n repeating-linear-gradient(\n to right,\n var(--th-theme-text) 0%,\n var(--th-theme-text) 1px,\n transparent 1px,\n transparent calc((100% - 2px) / var(--th-slider-ticks, 10))\n ) 0 50% / 100% 15px no-repeat;\n height: 15px;\n transform: translateY(-50%);\n position: relative;\n}\n\n/* First and last tick */\n\n.sliderWithTicks .sliderTrack::after {\n content: \"\";\n background: \n /* First tick */\n linear-gradient(\n to right,\n var(--th-theme-subdue) 0%,\n var(--th-theme-subdue) 3px,\n transparent 3px,\n transparent 100%\n ) 0 50% / 100% 20px no-repeat,\n\n /* Last tick */\n linear-gradient(\n to left,\n var(--th-theme-subdue) 0%,\n var(--th-theme-subdue) 3px,\n transparent 3px,\n transparent 100%\n ) 100% 50% / 100% 20px no-repeat;\n position: absolute;\n top: 50%;\n left: 0;\n right: 0;\n height: 20px;\n transform: translateY(-50%);\n pointer-events: none;\n}\n\n/* Dropdown */\n\n.dropdown[data-disabled] {\n color: var(--th-theme-disable);\n}\n\n.dropdownButton {\n margin-top: var(--th-layout-spacing);\n position: relative;\n padding-block: calc(var(--th-layout-spacing) / 2);\n padding-inline: calc(var(--th-layout-spacing) / 2) calc(var(--th-icon-size, 24px) * 6/5);\n border-radius: var(--th-layout-radius);\n box-sizing: border-box;\n border: 1px solid var(--th-theme-subdue);\n max-width: 100%;\n}\n\n.dropdownButton[data-focus-visible] {\n outline: 2px solid var(--th-theme-focus);\n}\n\n.dropdownButton svg {\n width: calc(var(--th-icon-size, 24px) * 5/6);\n height: calc(var(--th-icon-size, 24px) * 5/6);\n position: absolute;\n inset-inline-end: calc(var(--th-layout-spacing) / 4);\n inset-block-start: calc(var(--th-layout-spacing) / 2);\n fill: currentColor;\n}\n\n.dropdownPopover {\n background-color: var(--th-theme-background);\n color: var(--th-theme-text);\n padding: calc(var(--th-layout-spacing) / 2);\n border-radius: var(--th-layout-radius);\n border: 1px solid var(--th-theme-subdue);\n filter: drop-shadow(var(--th-theme-elevate));\n box-sizing: border-box;\n width: max-content;\n /* TMP: Needs to be higher than bottom sheet, which requires hack for Safari iOS */\n z-index: 1000000 !important;\n}\n\n.dropdownListbox {\n display: flex;\n flex-direction: column;\n gap: calc(var(--th-layout-spacing) / 2);\n}\n\n.dropdownListboxItem {\n padding: calc(var(--th-layout-spacing) / 4);\n}\n\n.dropdownListboxItem[data-selected] {\n color: var(--th-theme-subdue);\n}\n\n.dropdownListboxItem[data-focus-visible] {\n outline: 2px solid var(--th-theme-focus);\n}\n\n.dropdownListboxItem[data-disabled] {\n color: var(--th-theme-disable);\n}\n\n/* Switch */\n\n.switch {\n display: flex;\n align-items: center;\n gap: clamp(10px, calc(var(--th-layout-spacing) / 2), 20px);\n color: var(--th-theme-text);\n margin: var(--th-layout-spacing) 0;\n}\n\n.switchIndicator {\n width: 2rem;\n height: 1.143rem;\n border: 2px solid var(--th-theme-subdue);\n background: var(--th-theme-background);\n border-radius: 1.143rem;\n transition: all 200ms;\n flex-shrink: 0;\n}\n\n.switchIndicator::before {\n content: \"\";\n display: block;\n margin: 0.143rem;\n width: 0.857rem;\n height: 0.857rem;\n background: var(--th-theme-subdue);\n border-radius: 16px;\n transition: all 200ms;\n}\n\n.switch[data-selected] .switchIndicator::before {\n background: var(--th-theme-text);\n transform: translateX(100%);\n}\n\n:dir(rtl) .switch[data-selected] .switchIndicator::before {\n background: var(--th-theme-text);\n transform: translateX(-100%);\n}\n\n.switch[data-focus-visible] .switchIndicator {\n outline: 2px solid var(--th-theme-focus);\n}\n\n.switch[data-disabled] {\n color: var(--th-theme-disable);\n}\n\n.switch[data-disabled] .switchIndicator::before {\n background: var(--th-theme-disable) !important;\n}","/* Search */\n.wrapper {}\n\n.search {\n margin-bottom: var(--th-layout-spacing);\n display: grid;\n grid-template-areas: \"label label\"\n \"input button\";\n grid-template-columns: 1fr auto;\n align-items: center;\n width: 100%;\n}\n\n.searchLabel {\n grid-area: label;\n margin-bottom: calc(var(--th-layout-spacing) / 2);\n}\n\n.searchInput {\n grid-area: input;\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n display: block;\n border-radius: var(--th-layout-radius);\n border: 2px solid var(--th-theme-subdue);\n padding: calc(var(--th-icon-size, 24px) * (1/4)) calc(var(--th-layout-spacing) / 2);\n}\n\n.searchInput::-webkit-search-cancel-button,\n.searchInput::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n.searchInput[data-focus-visible] {\n outline: 2px solid var(--th-theme-focus);\n}\n\n.searchIcon,\n.clearButton {\n grid-area: button;\n margin-inline-start: calc(var(--th-icon-size, 24px) * -1.25);\n height: 100%;\n display: flex;\n align-items: center;\n}\n\n.searchIcon svg {\n fill: var(--th-theme-subdue);\n width: var(--th-icon-size, 24px);\n height: var(--th-icon-size, 24px);\n}\n\n.clearButton svg {\n fill: var(--th-theme-text);\n width: var(--th-icon-size, 24px);\n height: var(--th-icon-size, 24px);\n}\n\n.searchIcon[hidden],\n.clearButton[data-disabled] {\n display: none;\n}\n\n.tree {\n background: var(--th-theme-background);\n color: var(--th-theme-text);\n outline: none;\n width: 100%;\n max-height: 100%;\n box-sizing: border-box;\n}\n\n/* React Aria is providing a --tree-item-level as items are not nested */\n.treeItem {\n display: flex;\n padding: calc(var(--th-layout-spacing) / 2);\n padding-inline-start: calc(((var(--tree-item-level) - 1) * var(--th-layout-spacing)) + (var(--th-layout-spacing) / 2));\n border-radius: var(--th-layout-radius);\n border: 2px solid transparent;\n box-sizing: border-box;\n}\n\n.tree:has(.treeItemButton) .treeItem {\n padding-inline-start: calc((var(--tree-item-level) * var(--th-layout-spacing)) + (var(--th-layout-spacing) / 2));\n}\n\n.tree .treeItem:has(.treeItemButton) {\n padding-inline-start: calc(((var(--tree-item-level) - 1) * var(--th-layout-spacing)));\n}\n\n.treeItemText {\n display: flex;\n flex: 1 1 auto;\n}\n\n.treeItemTextTitle {\n text-wrap: balance;\n}\n\n.treeItemTextPosition {\n margin-inline-start: auto;\n padding-inline-start: calc(var(--th-layout-spacing) / 2);\n color: var(--th-theme-subdue);\n font-variant-numeric: lining-nums tabular-nums;\n}\n\n.treeItemButton {\n align-self: flex-start;\n width: calc(var(--th-icon-size, 24px) * 5/6);\n height: calc(var(--th-icon-size, 24px) * 5/6);\n margin-inline-end: calc(var(--th-layout-spacing) / 2);\n flex-shrink: 0;\n}\n\n.treeItem[data-href] {\n cursor: pointer;\n}\n\n/* [data-hover] is only updated on tree items that can be expanded ATM… */\n.treeItem:hover {\n background-color: var(--th-theme-hover);\n}\n\n.treeItem[data-focus-visible] {\n outline: 2px solid var(--th-theme-focus);\n}\n\n.treeItem[data-disabled] {\n color: var(--th-theme-disable);\n}\n\n.treeItem[data-selected] {\n border: 2px solid var(--th-theme-subdue);\n}\n\n.treeItemButton svg {\n flex: none;\n rotate: 0deg;\n transition: rotate 200ms;\n width: 100%;\n height: 100%;\n fill: var(--th-theme-text);\n}\n\n.treeItem[data-expanded] .treeItemButton svg {\n rotate: 90deg;\n}\n\n.empty {\n max-width: 25ch;\n text-align: start;\n text-wrap: balance;\n}","/* For some classNames we need global, as they impact other modules */\n\n.wrapper {\n height: 100%;\n width: 100%;\n margin: 0;\n}\n\n.main {\n width: 100%;\n height: 100%;\n margin: 0;\n}\n\n.shell {\n width: 100%;\n height: 100%;\n margin: 0;\n}\n\n.leftDock {\n height: 100vh;\n height: 100dvh;\n}\n\n.rightDock {\n height: 100vh;\n height: 100dvh;\n}\n\n/* Top and bottom bars */\n\n.bottomBar,\n.topBar {\n box-sizing: border-box;\n gap: 2px;\n touch-action: manipulation;\n background-color: var(--th-theme-background);\n}\n\n.bottomBar {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n/* Stacked UI */\n\n.main :global(.thorium_web_stackedUI) {\n position: relative;\n display: flex;\n flex-direction: column;\n flex: 1 1 0;\n height: 100vh;\n height: 100dvh;\n max-height: 100%;\n background-color: var(--th-theme-background);\n}\n\n:global(.thorium_web_stackedUI) .topBar,\n:global(.thorium_web_stackedUI) .bottomBar {\n flex: 0 0 calc(var(--th-icon-size, 24px) * 2.5);\n height: calc(var(--th-icon-size, 24px) * 2.5);\n}\n\n:global(.thorium_web_stackedUI.thorium_web_isImmersive:not(.thorium_web_isHovering)) .topBar,\n:global(.thorium_web_stackedUI.thorium_web_isImmersive:not(.thorium_web_isHovering)) .bottomBar {\n opacity: var(--th-theme-immerse);\n}\n\n/* Layered UI */\n\n.main :global(.thorium_web_layeredUI) {\n position: relative;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n height: 100vh;\n height: 100dvh;\n max-height: 100%;\n background-color: var(--th-theme-background);\n}\n\n:global(.thorium_web_layeredUI) .topBar,\n:global(.thorium_web_layeredUI) .bottomBar {\n position: absolute;\n left: 0;\n right: 0;\n height: calc(var(--th-icon-size, 24px) * 2.5);\n z-index: 2;\n box-shadow: var(--th-theme-elevate);\n overflow: hidden;\n transition-property: transform, box-shadow;\n transition-duration: 200ms;\n transition-timing-function: ease-in-out;\n transform: translateY(0);\n}\n\n:global(.thorium_web_layeredUI) .topBar {\n top: 0;\n}\n\n:global(.thorium_web_layeredUI) .bottomBar {\n bottom: 0;\n}\n\n:global(.thorium_web_layeredUI.thorium_web_isImmersive:not(.thorium_web_isHovering)) .topBar {\n transform: translateY(calc(var(--th-icon-size, 24px) * -2.5));\n box-shadow: none;\n overflow: unset;\n}\n\n:global(.thorium_web_layeredUI.thorium_web_isImmersive:not(.thorium_web_isHovering)) .bottomBar {\n transform: translateY(calc(var(--th-icon-size, 24px) * 2.5));\n box-shadow: none;\n}\n\n.barOverlay {\n position: absolute;\n left: 0;\n right: 0;\n height: calc(var(--th-icon-size, 24px) * 2.5);\n pointer-events: auto;\n opacity: 0;\n z-index: 1000;\n}\n\n.headerOverlay {\n position: absolute;\n left: 0;\n right: 0;\n height: calc(var(--th-icon-size, 24px) * 2.5);\n pointer-events: auto;\n opacity: 0;\n z-index: 1000;\n top: 0;\n}\n\n.footerOverlay {\n position: absolute;\n left: 0;\n right: 0;\n height: calc(var(--th-icon-size, 24px) * 2.5);\n pointer-events: auto;\n opacity: 0;\n z-index: 1000;\n bottom: 0;\n}\n\n/* iFrame + its container */\n\n.iframeContainer {\n contain: content;\n width: 100%;\n height: 100%;\n margin: 0 auto;\n}\n\n.iframeContainer :global(.readium-navigator-iframe) {\n width: 100%;\n height: 100%;\n border-width: 0;\n}\n\n/* FXL: Loading spinner for resources */\n@keyframes loading {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.iframeContainer :global(div:has(> .readium-navigator-iframe.blank))::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n margin-top: -30px;\n margin-left: -30px;\n width: 50px;\n height: 50px;\n border-radius: 50px;\n border: 5px solid grey;\n border-top-color: black;\n animation: loading 2s linear infinite;\n}\n\n/* Utils */\n\n.srOnly {\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}",".header {\n box-sizing: border-box;\n display: grid;\n grid-template-areas: \"header-start header-center header-end\";\n grid-template-columns: 1fr 3fr 1fr;\n padding: 0.25rem 0.5rem 0;\n}\n\n.backlinkWrapper {\n grid-area: header-start;\n justify-self: start;\n align-self: center;\n}\n\n.header h1 {\n font-size: 1rem;\n color: var(--th-theme-text);\n font-weight: normal;\n grid-area: header-center;\n justify-self: center;\n align-self: center;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; \n transition: opacity 200ms ease-in-out;\n}\n\n.actionsWrapper {\n grid-area: header-end;\n justify-self: end;\n display: flex;\n align-items: center;\n gap: 2px;\n}",".link {\n display: block;\n box-sizing: content-box;\n padding: calc(var(--th-icon-size, 24px) * (1/4));\n text-align: start;\n border-radius: var(--th-layout-radius);\n max-width: 100%;\n height: var(--th-icon-size, 24px);\n}\n\n.link svg {\n fill: var(--th-theme-text);\n max-width: 100%;\n height: 100%;\n}\n\n.link img {\n max-width: 100%;\n height: 100%;\n}\n\n.link[data-hovered] {\n background-color: var(--th-theme-hover);\n}\n\n.link[data-focus-visible] {\n outline: 2px solid var(--th-theme-focus);\n}\n\n.link[data-disabled] {\n color: var(--th-theme-disable)\n}\n\n.link[data-disabled] svg {\n fill: var(--th-theme-disable);\n}",".wrapper {\n box-sizing: border-box;\n display: grid;\n gap: calc(var(--th-layout-spacing) / 2);\n grid-template-areas: \"pagination-start pagination-center pagination-end\";\n grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);\n background-color: var(--th-theme-background);\n color: var(--th-theme-text);\n align-items: center;\n width: 100%;\n max-width: var(--th-layout-constraints-pagination, 100%);\n}\n\n.listItem {\n box-sizing: border-box;\n list-style: none;\n}\n\n.listItem:has(.previousButton) {\n grid-area: pagination-start;\n justify-self: start;\n}\n\n.listItem:has(.progression) {\n grid-area: pagination-center;\n justify-self: center;\n}\n\n.listItem:has(.nextButton) {\n grid-area: pagination-end;\n justify-self: end;\n}\n\n.listItem button {\n box-sizing: border-box;\n padding: calc(var(--th-icon-size, 24px) * (1/4)) calc(var(--th-layout-spacing) / 2);\n gap: calc(var(--th-layout-spacing) / 2);\n max-height: calc(var(--th-icon-size, 24px) * 2);\n max-width: 100%;\n border-radius: var(--th-layout-radius);\n display: flex;\n align-items: center;\n}\n\n.nextButton {\n margin-inline-start: auto;\n text-align: end;\n}\n\n.listItem button[data-hovered] {\n background-color: var(--th-theme-hover);\n}\n\n.listItem button[data-focus-visible] {\n outline: 2px solid var(--th-theme-focus);\n}\n\n.listItem button[data-disabled] {\n color: var(--th-theme-disable);\n}\n\n.listItem button .label {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n white-space: normal;\n -webkit-line-clamp: 1;\n line-clamp: 1;\n}\n\n.listItem button svg {\n flex: none;\n width: var(--th-icon-size, 24px);\n height: var(--th-icon-size, 24px);\n fill: var(--th-theme-text);\n}",".wrapper {\n color: var(--th-theme-text);\n font-variant-numeric: lining-nums tabular-nums;\n text-align: center;\n}"],"mappings":"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","names":["icon","dockerButton","closeButton","backButton","tooltip","alwaysVisible","partiallyVisible","iconCompSm","iconCompLg","iconApplyStroke","hint","popover","menu","menuItem","menuItemLabel","menuItemShortcut","wrapper","form","label","input","button","numberField","fullscreen","popover","draggable","draggableFullHeightDetent","draggableContentHeightDetent","draggableBackdrop","draggableScrim","draggableContainer","draggableScroller","dragIndicator","docked","dockedLeftBorder","dockedRightBorder","dialog","header","draggableHeader","heading","body","dockerWrapper","docker","resizeHandle","resizeHandleGrab","resizeHandleGrabLeft","resizeHandleGrabRight","wrapper","group","advancedGroup","advancedIcon","label","groupLabel","radioWrapper","groupWrapper","numberField","numberFieldWrapper","sliderWrapper","slider","resetButton","input","radio","themeRadio","themesWrapper","separator","sliderLabel","sliderOutput","sliderTrack","sliderThumb","sliderPlaceholder","sliderWithTicks","dropdown","dropdownButton","dropdownPopover","dropdownListbox","dropdownListboxItem","switch","switchIndicator","wrapper","search","searchLabel","searchInput","searchIcon","clearButton","tree","treeItem","treeItemButton","treeItemText","treeItemTextTitle","treeItemTextPosition","empty","wrapper","main","shell","leftDock","rightDock","bottomBar","topBar","barOverlay","headerOverlay","footerOverlay","iframeContainer","loading","srOnly","header","backlinkWrapper","actionsWrapper","link","wrapper","listItem","previousButton","progression","nextButton","label","wrapper"]}
@@ -1,5 +1,5 @@
1
- import { S as StatefulReaderProps } from '../../StatefulReader-DdQrrgZY.mjs';
2
- export { ai as DefaultImage, aj as Publication, al as PublicationGrid, ak as PublicationGridProps, a7 as ScrimPref, e as StatefulActionContainerProps, n as StatefulActionIcon, m as StatefulActionIconProps, d as StatefulActionTriggerProps, c as StatefulActionsMapObject, a8 as StatefulBottomSheet, a6 as StatefulBottomSheetProps, r as StatefulCollapsibleActionsBar, q as StatefulCollapsibleActionsBarProps, aa as StatefulDockedSheet, a9 as StatefulDockedSheetProps, A as StatefulDropdown, z as StatefulDropdownProps, Z as StatefulFontFamily, ac as StatefulFullScreenSheet, ab as StatefulFullScreenSheetProps, f as StatefulFullscreenTrigger, y as StatefulGroupWrapper, x as StatefulGroupWrapperProps, $ as StatefulHyphens, g as StatefulJumpToPositionContainer, h as StatefulJumpToPositionTrigger, N as StatefulLetterSpacing, O as StatefulLineHeight, ah as StatefulLoader, C as StatefulNumberField, B as StatefulNumberFieldProps, t as StatefulOverflowMenu, p as StatefulOverflowMenuItem, o as StatefulOverflowMenuItemProps, s as StatefulOverflowMenuProps, P as StatefulParagraphIndent, Q as StatefulParagraphSpacing, ae as StatefulPopoverSheet, ad as StatefulPopoverSheetProps, am as StatefulPreferencesProvider, a4 as StatefulPublisherStyles, E as StatefulRadioGroup, D as StatefulRadioGroupProps, i as StatefulSettingsContainer, M as StatefulSettingsItemProps, j as StatefulSettingsTrigger, ag as StatefulSheet, af as StatefulSheetWrapper, G as StatefulSlider, F as StatefulSliderProps, R as StatefulSpacingGroup, U as StatefulSpacingGroupContainer, V as StatefulSpacingPresets, I as StatefulSwitch, H as StatefulSwitchProps, a0 as StatefulTextAlign, a1 as StatefulTextGroup, a2 as StatefulTextGroupContainer, a3 as StatefulTextNormalize, k as StatefulTocContainer, l as StatefulTocTrigger, W as StatefulWordSpacing, a5 as StatefulZoom, T as ThPlugin, _ as UnstableStatefulFontWeight, w as createDefaultPlugin, v as useDocking, K as useGridNavigation, J as useGridNavigationProps, L as useGridTemplate, X as useLineHeight, u as useNavigator, a as usePublication, b as useReaderTransitions, Y as useSpacingPresets } from '../../StatefulReader-DdQrrgZY.mjs';
1
+ import { S as StatefulReaderProps } from '../../StatefulReader-BjH7bkU1.mjs';
2
+ export { a7 as ScrimPref, e as StatefulActionContainerProps, n as StatefulActionIcon, m as StatefulActionIconProps, d as StatefulActionTriggerProps, c as StatefulActionsMapObject, a8 as StatefulBottomSheet, a6 as StatefulBottomSheetProps, r as StatefulCollapsibleActionsBar, q as StatefulCollapsibleActionsBarProps, aa as StatefulDockedSheet, a9 as StatefulDockedSheetProps, A as StatefulDropdown, z as StatefulDropdownProps, Z as StatefulFontFamily, ac as StatefulFullScreenSheet, ab as StatefulFullScreenSheetProps, f as StatefulFullscreenTrigger, y as StatefulGroupWrapper, x as StatefulGroupWrapperProps, $ as StatefulHyphens, g as StatefulJumpToPositionContainer, h as StatefulJumpToPositionTrigger, N as StatefulLetterSpacing, O as StatefulLineHeight, C as StatefulNumberField, B as StatefulNumberFieldProps, t as StatefulOverflowMenu, p as StatefulOverflowMenuItem, o as StatefulOverflowMenuItemProps, s as StatefulOverflowMenuProps, P as StatefulParagraphIndent, Q as StatefulParagraphSpacing, ae as StatefulPopoverSheet, ad as StatefulPopoverSheetProps, ah as StatefulPreferencesProvider, a4 as StatefulPublisherStyles, E as StatefulRadioGroup, D as StatefulRadioGroupProps, i as StatefulSettingsContainer, M as StatefulSettingsItemProps, j as StatefulSettingsTrigger, ag as StatefulSheet, af as StatefulSheetWrapper, G as StatefulSlider, F as StatefulSliderProps, R as StatefulSpacingGroup, U as StatefulSpacingGroupContainer, V as StatefulSpacingPresets, I as StatefulSwitch, H as StatefulSwitchProps, a0 as StatefulTextAlign, a1 as StatefulTextGroup, a2 as StatefulTextGroupContainer, a3 as StatefulTextNormalize, k as StatefulTocContainer, l as StatefulTocTrigger, W as StatefulWordSpacing, a5 as StatefulZoom, T as ThPlugin, _ as UnstableStatefulFontWeight, w as createDefaultPlugin, v as useDocking, K as useGridNavigation, J as useGridNavigationProps, L as useGridTemplate, X as useLineHeight, u as useNavigator, a as usePublication, b as useReaderTransitions, Y as useSpacingPresets } from '../../StatefulReader-BjH7bkU1.mjs';
3
3
  export { canRenderProgressionFormat, getBestMatchingProgressionFormat, getPlatform, getSupportedProgressionFormats, isActiveElement, isIOSish, isInteractiveElement, isIpadOS, isKeyboardTriggered, isMacish, makeBreakpointsMap, propsToCSSVars } from '../../core/Helpers/index.mjs';
4
4
  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';
5
5
  export { AppDispatch, AppState, AppStore, L10nObject, LineLengthStateObject, PaginatedAffordanceObject, PaginatedAffordancePayload, PaginatedAffordanceProperties, PreferencesReducerState, PublicationReducerState, ReaderReducerState, RenditionChangePayload, RenditionObject, RenditionProperties, RootState, SetLineLengthPayload, SetSpacingPresetPayload, SetSpacingSettingPayload, SettingsReducerState, SpacingStateKey, SpacingStateObject, ThReduxPreferencesAdapter, ThStoreProvider, ThemeReducerState, ThemeStateChangePayload, ThemeStateObject, UIChangePayload, WebPubSettingsReducerState, handleSpacingSetting, initialSettingsState, initialWebPubSettingsState, makeStore, preferencesSlice, publicationSlice, readerSlice, setBreakpoint, setColorScheme, setColumnCount, setContrast, setDirection, setFXL, setFontFamily, setFontSize, setFontWeight, setForcedColors, setFullscreen, setHasArrows, setHasDisplayTransformability, setHovering, setHyphens, setImmersive, setL10n, setLetterSpacing, setLineHeight, setLineLength, setLoading, setMonochrome, 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, toggleImmersive, updateFromPreferences, useAppDispatch, useAppSelector, useAppStore, webPubSettingsSlice } from '../../lib/index.mjs';
@@ -1,27 +1,26 @@
1
- import { ThPluginRegistry, createDefaultPlugin, ThPluginProvider, useSpacingPresets, useLineHeight, Peripherals, NavigatorProvider, StatefulDockingWrapper, StatefulReaderHeader, StatefulReaderFooter } from '../../chunk-PVGIY5SC.mjs';
2
- export { DefaultImage, PublicationGrid, StatefulActionIcon, StatefulBottomSheet, StatefulCollapsibleActionsBar, StatefulDockedSheet, StatefulDropdown, StatefulFontFamily, StatefulFullScreenSheet, StatefulFullscreenTrigger, StatefulGroupWrapper, StatefulHyphens, StatefulJumpToPositionContainer, StatefulJumpToPositionTrigger, StatefulLetterSpacing, StatefulLineHeight, StatefulLoader, 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-PVGIY5SC.mjs';
1
+ import { ThPluginRegistry, createDefaultPlugin, ThPluginProvider, useSpacingPresets, useLineHeight, Peripherals, NavigatorProvider, thorium_web_reader_app_default, StatefulDockingWrapper, StatefulReaderHeader, StatefulReaderFooter, getReaderClassNames } from '../../chunk-D24O64OP.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-D24O64OP.mjs';
3
+ export { canRenderProgressionFormat, getBestMatchingProgressionFormat, getSupportedProgressionFormats, isActiveElement, isInteractiveElement, isKeyboardTriggered, makeBreakpointsMap } from '../../chunk-VH22EPOM.mjs';
3
4
  import { useFullscreen, useWebPubNavigator, useLocalStorage, useTimeline, useDocumentTitle } from '../../chunk-OWJCESNF.mjs';
4
5
  export { useWebPubNavigator } from '../../chunk-OWJCESNF.mjs';
5
- import { useI18n } from '../../chunk-G2SKPGPO.mjs';
6
- export { DEFAULT_CONFIG, ThI18nProvider, Trans, i18n, initI18n, useI18n } from '../../chunk-G2SKPGPO.mjs';
7
- import { useAppSelector, useAppDispatch, setReducedTransparency, setReducedMotion, setMonochrome, setForcedColors, setContrast, setColorScheme, setBreakpoint, setFullscreen, setTimeline, setHovering, toggleImmersive, useAppStore, toggleActionOpen, setDirection, setPlatformModifier, setReaderProfile, setRTL, setHasDisplayTransformability, setLoading, setPublicationStart, setPublicationEnd } from '../../chunk-SQHOOSST.mjs';
8
- 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, 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-SQHOOSST.mjs';
9
- import { usePreferences, useTheming, defaultFontFamilyOptions } from '../../chunk-OXZU5FTD.mjs';
10
- export { ThPreferencesProvider, usePreferences, useTheming } from '../../chunk-OXZU5FTD.mjs';
6
+ export { DEFAULT_CONFIG, ThI18nProvider, Trans, i18n, initI18n } from '../../chunk-FG6BJGVE.mjs';
7
+ import { useAppSelector, useAppDispatch, setReducedTransparency, setReducedMotion, setMonochrome, setForcedColors, setContrast, setColorScheme, setBreakpoint, setFullscreen, setTimeline, setHovering, toggleImmersive, useAppStore, toggleActionOpen, setDirection, setPlatformModifier, setReaderProfile, setRTL, setHasDisplayTransformability, setLoading, setPublicationStart, setPublicationEnd } from '../../chunk-HE3WFPGE.mjs';
8
+ 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, 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-HE3WFPGE.mjs';
9
+ import { usePreferences, useTheming, prefixString, defaultFontFamilyOptions } from '../../chunk-SPAC7T57.mjs';
10
+ export { ThPreferencesProvider, usePreferences, useTheming } from '../../chunk-SPAC7T57.mjs';
11
+ import { propsToCSSVars } from '../../chunk-7CGMWOZN.mjs';
12
+ export { propsToCSSVars } from '../../chunk-7CGMWOZN.mjs';
11
13
  import '../../chunk-BNPR6V7V.mjs';
14
+ import { getPlatformModifier } from '../../chunk-5LUMM7FW.mjs';
15
+ export { UnstableShortcutMetaKeywords, UnstableShortcutRepresentation, buildShortcut, defaultPlatformModifier, getPlatform, getPlatformModifier, isIOSish, isIpadOS, isMacish, metaKeys } from '../../chunk-5LUMM7FW.mjs';
12
16
  import '../../chunk-NQ2ZSGCX.mjs';
17
+ import { useI18n } from '../../chunk-KKJA56IZ.mjs';
18
+ export { useI18n } from '../../chunk-KKJA56IZ.mjs';
13
19
  import '../../chunk-GZDYMUV7.mjs';
14
20
  import '../../chunk-YZ73DHRU.mjs';
15
21
  import '../../chunk-MLEYTQGK.mjs';
16
- export { canRenderProgressionFormat, getBestMatchingProgressionFormat, getSupportedProgressionFormats, isActiveElement, isInteractiveElement, isKeyboardTriggered, makeBreakpointsMap } from '../../chunk-VH22EPOM.mjs';
17
- import { propsToCSSVars } from '../../chunk-TTGURRX3.mjs';
18
- export { propsToCSSVars } from '../../chunk-TTGURRX3.mjs';
19
- import { getPlatformModifier } from '../../chunk-5LUMM7FW.mjs';
20
- export { UnstableShortcutMetaKeywords, UnstableShortcutRepresentation, buildShortcut, defaultPlatformModifier, getPlatform, getPlatformModifier, isIOSish, isIpadOS, isMacish, metaKeys } from '../../chunk-5LUMM7FW.mjs';
21
22
  import '../../chunk-CVM2ZAPL.mjs';
22
- import '../../chunk-3QS3WKRC.mjs';
23
23
  import { useState, useEffect, useRef, useCallback } from 'react';
24
- import '../../reader-NGCQJKLX.css';
25
24
  import { I18nProvider } from 'react-aria';
26
25
  import { HttpFetcher, Manifest, Publication, ReadingProgression, Feature, Locator } from '@readium/shared';
27
26
  import classNames from 'classnames';
@@ -77,9 +76,12 @@ var WebPubStatefulReaderInner = ({ rawManifest, selfHref }) => {
77
76
  systemKeys: preferences.theming.themes.systemThemes,
78
77
  breakpointsMap: preferences.theming.breakpoints,
79
78
  initProps: {
80
- ...propsToCSSVars(preferences.theming.arrow, "arrow"),
81
- ...propsToCSSVars(preferences.theming.icon, "icon"),
82
- ...propsToCSSVars(preferences.theming.layout, "layout")
79
+ ...propsToCSSVars(preferences.theming.arrow, { prefix: prefixString("arrow") }),
80
+ ...propsToCSSVars(preferences.theming.icon, { prefix: prefixString("icon") }),
81
+ ...propsToCSSVars(preferences.theming.layout, {
82
+ prefix: prefixString("layout"),
83
+ exclude: ["ui"]
84
+ })
83
85
  },
84
86
  onBreakpointChange: (breakpoint) => dispatch(setBreakpoint(breakpoint)),
85
87
  onColorSchemeChange: (colorScheme) => dispatch(setColorScheme(colorScheme)),
@@ -310,15 +312,16 @@ var WebPubStatefulReaderInner = ({ rawManifest, selfHref }) => {
310
312
  });
311
313
  };
312
314
  }, [publication, preferences]);
313
- return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(I18nProvider, { locale: preferences.locale, children: /* @__PURE__ */ jsx(NavigatorProvider, { navigator: webPubNavigator, children: /* @__PURE__ */ jsx("main", { id: "reader-main", children: /* @__PURE__ */ jsx(StatefulDockingWrapper, { children: /* @__PURE__ */ jsxs(
315
+ 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(
314
316
  "div",
315
317
  {
316
- id: "reader-shell",
317
318
  className: classNames(
318
- "isScroll",
319
- isImmersive ? "isImmersive" : "",
320
- isHovering ? "isHovering" : "",
321
- layoutUI
319
+ getReaderClassNames({
320
+ isScroll: true,
321
+ isImmersive,
322
+ isHovering,
323
+ layoutUI
324
+ })
322
325
  ),
323
326
  children: [
324
327
  /* @__PURE__ */ jsx(
@@ -330,7 +333,7 @@ var WebPubStatefulReaderInner = ({ rawManifest, selfHref }) => {
330
333
  runningHeadFormatPref: preferences.theming.header?.runningHead?.format?.webPub
331
334
  }
332
335
  ),
333
- /* @__PURE__ */ jsx("article", { id: "wrapper", "aria-label": t("reader.app.publicationWrapper"), children: /* @__PURE__ */ jsx("div", { id: "container", ref: container }) }),
336
+ /* @__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 }) }),
334
337
  /* @__PURE__ */ jsx(
335
338
  StatefulReaderFooter,
336
339
  {
@@ -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 { defaultFontFamilyOptions, ThemeKeyType, useTheming } from \"../../preferences\";\n\nimport \"../assets/styles/reader.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} from \"@/preferences/models/enums\";\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 { 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 { 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\";\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} from \"@/lib/publicationReducer\";\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\";\n\nexport interface WebPubCSSSettings {\n fontFamily: keyof typeof defaultFontFamilyOptions | null;\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\n const { preferences } = usePreferences();\n const { t } = useI18n();\n const { getEffectiveSpacingValue } = useSpacingPresets();\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, \"arrow\"), \n ...propsToCSSVars(preferences.theming.icon, \"icon\"),\n ...propsToCSSVars(preferences.theming.layout, \"layout\")\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 };\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\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 if (displayTransformability) {\n webPubPreferences.fontFamily = cache.current.settings.fontFamily && defaultFontFamilyOptions[cache.current.settings.fontFamily];\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\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 }, () => {\n p.observe(window);\n });\n\n dispatch(setLoading(false));\n\n return () => {\n WebPubNavigatorDestroy(() => {\n p.destroy();\n });\n };\n }, [publication, preferences]);\n\n return (\n <>\n <I18nProvider locale={ preferences.locale }>\n <NavigatorProvider navigator={ webPubNavigator }>\n <main id=\"reader-main\">\n <StatefulDockingWrapper>\n <div \n id=\"reader-shell\" \n className={ \n classNames(\n \"isScroll\",\n isImmersive ? \"isImmersive\" : \"\",\n isHovering ? \"isHovering\" : \"\",\n layoutUI\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 id=\"wrapper\" aria-label={ t(\"reader.app.publicationWrapper\") }>\n <div id=\"container\" 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":["../../../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 { defaultFontFamilyOptions, 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} from \"@/preferences/models/enums\";\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 { 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 { 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\";\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} from \"@/lib/publicationReducer\";\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\";\n\nexport interface WebPubCSSSettings {\n fontFamily: keyof typeof defaultFontFamilyOptions | null;\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\n const { preferences } = usePreferences();\n const { t } = useI18n();\n const { getEffectiveSpacingValue } = useSpacingPresets();\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 };\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\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 if (displayTransformability) {\n webPubPreferences.fontFamily = cache.current.settings.fontFamily && defaultFontFamilyOptions[cache.current.settings.fontFamily];\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\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 }, () => {\n p.observe(window);\n });\n\n dispatch(setLoading(false));\n\n return () => {\n WebPubNavigatorDestroy(() => {\n p.destroy();\n });\n };\n }, [publication, preferences]);\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)};"]}
@@ -2,6 +2,5 @@ export { ThActionButton, ThActionsBar, ThActionsTriggerVariant, ThBackArrow, ThB
2
2
  import '../../chunk-YZ73DHRU.mjs';
3
3
  export { ThCollapsibilityVisibility, useCollapsibility } from '../../chunk-MLEYTQGK.mjs';
4
4
  import '../../chunk-CVM2ZAPL.mjs';
5
- import '../../chunk-3QS3WKRC.mjs';
6
5
  //# sourceMappingURL=index.mjs.map
7
6
  //# sourceMappingURL=index.mjs.map
@@ -37,10 +37,20 @@ declare const getSupportedProgressionFormats: (timeline?: TimelineProgression) =
37
37
  declare const canRenderProgressionFormat: (format: ThProgressionFormat, supportedFormats: ThProgressionFormat[]) => boolean;
38
38
  declare const getBestMatchingProgressionFormat: (preferredFormats: ThProgressionFormat[], timeline?: TimelineProgression) => ThProgressionFormat | null;
39
39
 
40
- /** Converts Object properties to CSSProperties, recursively. If recursive, the prefix will be ignored for objects */
40
+ interface PropsToCSSVarsOptions {
41
+ prefix?: string;
42
+ exclude?: string[];
43
+ }
44
+ /**
45
+ * Converts Object properties to CSS custom properties, recursively.
46
+ * @param props - The object containing CSS property values
47
+ * @param options - Configuration options
48
+ * @param options.prefix - Optional prefix for CSS variable names (applies to all levels)
49
+ * @param options.exclude - Array of property names to exclude
50
+ */
41
51
  declare const propsToCSSVars: (props: {
42
52
  [x: string]: any;
43
- }, prefix?: string) => {
53
+ }, { prefix, exclude }?: PropsToCSSVarsOptions) => {
44
54
  [key: string]: any;
45
55
  };
46
56
 
@@ -1,7 +1,6 @@
1
1
  export { canRenderProgressionFormat, getBestMatchingProgressionFormat, getSupportedProgressionFormats, isActiveElement, isInteractiveElement, isKeyboardTriggered, makeBreakpointsMap } from '../../chunk-VH22EPOM.mjs';
2
- export { propsToCSSVars } from '../../chunk-TTGURRX3.mjs';
2
+ export { propsToCSSVars } from '../../chunk-7CGMWOZN.mjs';
3
3
  export { UnstableShortcutMetaKeywords, UnstableShortcutRepresentation, buildShortcut, defaultPlatformModifier, getPlatform, getPlatformModifier, isIOSish, isIpadOS, isMacish, metaKeys } from '../../chunk-5LUMM7FW.mjs';
4
4
  import '../../chunk-CVM2ZAPL.mjs';
5
- import '../../chunk-3QS3WKRC.mjs';
6
5
  //# sourceMappingURL=index.mjs.map
7
6
  //# sourceMappingURL=index.mjs.map
@@ -3,6 +3,5 @@ export { useBreakpoints, useForcedColors, useMonochrome, useReducedMotion, useRe
3
3
  export { ThColorScheme, ThContrast, useColorScheme, useContrast, useMediaQuery } from '../../chunk-NQ2ZSGCX.mjs';
4
4
  export { usePrevious } from '../../chunk-YZ73DHRU.mjs';
5
5
  import '../../chunk-CVM2ZAPL.mjs';
6
- import '../../chunk-3QS3WKRC.mjs';
7
6
  //# sourceMappingURL=index.mjs.map
8
7
  //# sourceMappingURL=index.mjs.map
@@ -1,11 +1,11 @@
1
- export { DEFAULT_CONFIG, ThI18nProvider, Trans, i18n, initI18n, useI18n } from '../chunk-G2SKPGPO.mjs';
2
- import '../chunk-OXZU5FTD.mjs';
1
+ export { DEFAULT_CONFIG, ThI18nProvider, Trans, i18n, initI18n } from '../chunk-FG6BJGVE.mjs';
2
+ import '../chunk-SPAC7T57.mjs';
3
+ import '../chunk-7CGMWOZN.mjs';
3
4
  import '../chunk-BNPR6V7V.mjs';
5
+ import '../chunk-5LUMM7FW.mjs';
4
6
  import '../chunk-NQ2ZSGCX.mjs';
7
+ export { useI18n } from '../chunk-KKJA56IZ.mjs';
5
8
  import '../chunk-MLEYTQGK.mjs';
6
- import '../chunk-TTGURRX3.mjs';
7
- import '../chunk-5LUMM7FW.mjs';
8
9
  import '../chunk-CVM2ZAPL.mjs';
9
- import '../chunk-3QS3WKRC.mjs';
10
10
  //# sourceMappingURL=index.mjs.map
11
11
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,6 @@
1
- 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, 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-SQHOOSST.mjs';
2
- import '../chunk-NQ2ZSGCX.mjs';
1
+ 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, 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-HE3WFPGE.mjs';
3
2
  import '../chunk-5LUMM7FW.mjs';
3
+ import '../chunk-NQ2ZSGCX.mjs';
4
4
  import '../chunk-CVM2ZAPL.mjs';
5
- import '../chunk-3QS3WKRC.mjs';
6
5
  //# sourceMappingURL=index.mjs.map
7
6
  //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1 @@
1
+ {}
@@ -12,7 +12,7 @@
12
12
  },
13
13
  "header": {
14
14
  "label": "Górny pasek",
15
- "runningHead": "Nagłówek bieżący",
15
+ "runningHead": "Bieżący nagłówek",
16
16
  "actions": "Akcje",
17
17
  "backLink": {
18
18
  "trigger": "Wróć do biblioteki",
@@ -26,7 +26,8 @@
26
26
  "wrapper": "Aktualny postęp",
27
27
  "of": "{{ current }} z {{ reference }}",
28
28
  "referenceFallback": "bieżący rozdział",
29
- "pubFallback": "publikacja"
29
+ "pubFallback": "publikacja",
30
+ "positionsLeft": "{{ count }} pozostało w {{ reference }}"
30
31
  },
31
32
  "docker": {
32
33
  "wrapper": "Opcje dokowania",
@@ -43,7 +44,7 @@
43
44
  "tooltip": "Wyskakujące okno"
44
45
  },
45
46
  "fullscreen": {
46
- "trigger": "Wyświetl na treści",
47
+ "trigger": "Wyświetlaj zawartość",
47
48
  "tooltip": "Nakładka"
48
49
  },
49
50
  "close": {
@@ -159,17 +160,19 @@
159
160
  "title": "Wybór czcionek",
160
161
  "labels": {
161
162
  "publisher": "Czcionka wydawcy",
162
- "oldStyle": "Old style serif",
163
- "modern": "Modern serif",
164
- "sans": "Sans-serif",
165
- "humanist": "Humanist sans-serif",
163
+ "oldStyle": "Stary styl serif",
164
+ "modern": "",
165
+ "sans": "",
166
+ "humanist": "Humanista sans-serif",
166
167
  "monospace": "O stałej szerokości"
167
168
  }
168
169
  },
169
170
  "fontWeight": {
170
171
  "title": "Grubość kroju",
171
172
  "increase": "Zwiększ grubość kroju",
172
- "decrease": "Zmniejsz grubość kroju"
173
+ "decrease": "Zmniejsz grubość kroju",
174
+ "default": "Normalny",
175
+ "bolder": "Wyraźny"
173
176
  },
174
177
  "normalizeText": {
175
178
  "title": "Normalizacja tekstu",
@@ -194,9 +197,9 @@
194
197
  }
195
198
  },
196
199
  "lineHeight": {
197
- "title": "Interlinia",
200
+ "title": "Wysokość linii",
198
201
  "publisher": "Domyślna",
199
- "small": "Ciasna",
202
+ "small": "wąska",
200
203
  "medium": "Zbalansowana",
201
204
  "large": "Luźna"
202
205
  },
@@ -228,19 +231,29 @@
228
231
  "advanced": {
229
232
  "tooltip": "Więcej opcji",
230
233
  "trigger": "Więcej opcji odstępów"
234
+ },
235
+ "presets": {
236
+ "title": "Ustawienia wstępne",
237
+ "publisher": "Domyślne",
238
+ "tight": "Wąska",
239
+ "balanced": "zrównoważony",
240
+ "loose": "Luźne",
241
+ "accessible": "Dostępność",
242
+ "custom": "Własne"
231
243
  }
232
244
  },
233
245
  "layout": {
234
246
  "title": "Układ",
235
247
  "scrolled": "Ciągły",
236
- "paginated": "Stronicowany"
248
+ "paginated": "Stronicowane"
237
249
  },
238
250
  "column": {
239
251
  "title": "Kolumny",
240
- "auto": "Automatycznie",
252
+ "auto": "",
241
253
  "one": "1 kol",
242
254
  "two": "2 kol"
243
- }
255
+ },
256
+ "reset": "Reset"
244
257
  }
245
258
  }
246
259
  }