@edrlab/thorium-web 1.3.1 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ThPreferencesAdapter-D0rzsGRl.d.mts → ThPreferencesAdapter-_5AePKHa.d.mts} +26 -7
- package/dist/{ThSettingsWrapper-BXuRgdqp.d.mts → ThSettingsWrapper-B_9klYXH.d.mts} +1 -1
- package/dist/{actions-BLAr0oaM.d.mts → actions-CuRRM3rp.d.mts} +5 -2
- package/dist/{actionsReducer-XWTGGNUd.d.mts → actionsReducer-VFR42qgL.d.mts} +1 -1
- package/dist/{chunk-6EHFW43Y.mjs → chunk-2NCN2AG2.mjs} +5 -4
- package/dist/chunk-2NCN2AG2.mjs.map +1 -0
- package/dist/{chunk-L4XGZAZ5.mjs → chunk-2YRT7RNW.mjs} +20 -3
- package/dist/chunk-2YRT7RNW.mjs.map +1 -0
- package/dist/{chunk-5LUMM7FW.mjs → chunk-44PEO3DS.mjs} +2 -2
- package/dist/{chunk-5LUMM7FW.mjs.map → chunk-44PEO3DS.mjs.map} +1 -1
- package/dist/chunk-A575ZW4A.mjs +10 -0
- package/dist/chunk-A575ZW4A.mjs.map +1 -0
- package/dist/chunk-AE6P4KJB.mjs +13 -0
- package/dist/chunk-AE6P4KJB.mjs.map +1 -0
- package/dist/chunk-AQSJDL63.mjs +193 -0
- package/dist/chunk-AQSJDL63.mjs.map +1 -0
- package/dist/{chunk-NKO3K3QS.mjs → chunk-DQDOOTCE.mjs} +5 -5
- package/dist/chunk-DQDOOTCE.mjs.map +1 -0
- package/dist/{chunk-SAUOY37Q.mjs → chunk-E2JEGVVE.mjs} +15 -15
- package/dist/chunk-E2JEGVVE.mjs.map +1 -0
- package/dist/{chunk-DETZMFZ7.mjs → chunk-ETLIGONP.mjs} +39 -33
- package/dist/chunk-ETLIGONP.mjs.map +1 -0
- package/dist/chunk-GNROODJB.mjs +9 -0
- package/dist/chunk-GNROODJB.mjs.map +1 -0
- package/dist/{chunk-6BUN7DEA.mjs → chunk-KGSFTRCH.mjs} +69 -84
- package/dist/chunk-KGSFTRCH.mjs.map +1 -0
- package/dist/{chunk-LP3JFZ4A.mjs → chunk-MSHUPSBI.mjs} +718 -466
- package/dist/chunk-MSHUPSBI.mjs.map +1 -0
- package/dist/chunk-OD75GC5N.mjs +3953 -0
- package/dist/chunk-OD75GC5N.mjs.map +1 -0
- package/dist/{chunk-I4BKU5NN.mjs → chunk-RBEPH5E5.mjs} +100 -30
- package/dist/chunk-RBEPH5E5.mjs.map +1 -0
- package/dist/{chunk-DMZFSOHK.mjs → chunk-SI4FBFHM.mjs} +135 -46
- package/dist/chunk-SI4FBFHM.mjs.map +1 -0
- package/dist/{chunk-A3FZBEUL.mjs → chunk-SZAVAQ6S.mjs} +30 -6
- package/dist/chunk-SZAVAQ6S.mjs.map +1 -0
- package/dist/{chunk-ITDBOMY5.mjs → chunk-VENFFPK2.mjs} +3 -3
- package/dist/{chunk-ITDBOMY5.mjs.map → chunk-VENFFPK2.mjs.map} +1 -1
- package/dist/{chunk-2ORXUOH3.mjs → chunk-WF2UOYO7.mjs} +4 -4
- package/dist/{chunk-2ORXUOH3.mjs.map → chunk-WF2UOYO7.mjs.map} +1 -1
- package/dist/{chunk-EZG6SBSO.mjs → chunk-YEVLT3AV.mjs} +104 -29
- package/dist/chunk-YEVLT3AV.mjs.map +1 -0
- package/dist/components/Audio/index.css +2 -1
- package/dist/components/Audio/index.css.map +1 -1
- package/dist/components/Audio/index.d.mts +16 -15
- package/dist/components/Audio/index.mjs +16 -16
- package/dist/components/Epub/index.css +5 -4
- package/dist/components/Epub/index.css.map +1 -1
- package/dist/components/Epub/index.d.mts +13 -13
- package/dist/components/Epub/index.mjs +17 -17
- package/dist/components/Misc/index.mjs +5 -5
- package/dist/components/Reader/index.css +5 -4
- package/dist/components/Reader/index.css.map +1 -1
- package/dist/components/Reader/index.d.mts +11 -11
- package/dist/components/Reader/index.mjs +34 -30
- package/dist/components/Reader/index.mjs.map +1 -1
- package/dist/components/WebPub/index.css +5 -4
- package/dist/components/WebPub/index.css.map +1 -1
- package/dist/components/WebPub/index.d.mts +13 -13
- package/dist/components/WebPub/index.mjs +17 -17
- package/dist/core/Components/index.d.mts +12 -22
- package/dist/core/Components/index.mjs +2 -2
- package/dist/core/Helpers/index.d.mts +1 -1
- package/dist/core/Helpers/index.mjs +3 -4
- package/dist/core/Hooks/index.d.mts +12 -8
- package/dist/core/Hooks/index.mjs +1 -1
- package/dist/i18n/index.mjs +4 -7
- package/dist/lib/index.d.mts +56 -20
- package/dist/lib/index.mjs +3 -2
- package/dist/locales/da/thorium-shared.json +3 -0
- package/dist/locales/da/thorium-web.json +37 -2
- package/dist/locales/en/thorium-shared.json +24 -2
- package/dist/locales/en/thorium-web.json +2 -2
- package/dist/locales/es/thorium-shared.json +364 -0
- package/dist/locales/es/thorium-web.json +130 -0
- package/dist/locales/et/thorium-shared.json +121 -9
- package/dist/locales/et/thorium-web.json +32 -1
- package/dist/locales/fi/thorium-shared.json +42 -4
- package/dist/locales/fi/thorium-web.json +36 -2
- package/dist/locales/fr/thorium-shared.json +108 -1
- package/dist/locales/fr/thorium-web.json +121 -86
- package/dist/locales/it/thorium-shared.json +108 -1
- package/dist/locales/it/thorium-web.json +15 -2
- package/dist/locales/lt/thorium-web.json +36 -2
- package/dist/locales/pl/thorium-web.json +1 -1
- package/dist/locales/pt-BR/thorium-shared.json +6 -0
- package/dist/locales/pt-BR/thorium-web.json +88 -88
- package/dist/locales/pt-PT/thorium-shared.json +91 -0
- package/dist/locales/pt-PT/thorium-web.json +15 -3
- package/dist/locales/sv/thorium-shared.json +108 -2
- package/dist/locales/sv/thorium-web.json +15 -3
- package/dist/locales/tr/thorium-shared.json +42 -0
- package/dist/next-lib/index.mjs +1 -1
- package/dist/next-lib/index.mjs.map +1 -1
- package/dist/preferences/index.d.mts +59 -13
- package/dist/preferences/index.mjs +7 -7
- package/dist/{settingsReducer-Bu1zeveu.d.mts → settingsReducer-VqBhLq50.d.mts} +14 -2
- package/dist/{ui-nBv8gfr0.d.mts → ui-DnZZhozX.d.mts} +1 -1
- package/dist/{useAudioNavigator-C5aW4-eT.d.mts → useAudioNavigator-CWXyNWq1.d.mts} +3 -1
- package/dist/{useContrast-2t429O9O.d.mts → useContrast-Cbso7N1l.d.mts} +5 -1
- package/dist/{usePreferences-VaBf46eP.d.mts → usePreferences-9ZvbcbLW.d.mts} +6 -8
- package/dist/{useReaderTransitions-IBGdE7qi.d.mts → useReaderTransitions-0hKGCvMm.d.mts} +64 -12
- package/package.json +10 -9
- package/dist/chunk-6BUN7DEA.mjs.map +0 -1
- package/dist/chunk-6EHFW43Y.mjs.map +0 -1
- package/dist/chunk-7CGMWOZN.mjs +0 -20
- package/dist/chunk-7CGMWOZN.mjs.map +0 -1
- package/dist/chunk-A3FZBEUL.mjs.map +0 -1
- package/dist/chunk-B3WDMWCT.mjs +0 -9
- package/dist/chunk-B3WDMWCT.mjs.map +0 -1
- package/dist/chunk-DETZMFZ7.mjs.map +0 -1
- package/dist/chunk-DMZFSOHK.mjs.map +0 -1
- package/dist/chunk-DTPO3J2C.mjs +0 -1732
- package/dist/chunk-DTPO3J2C.mjs.map +0 -1
- package/dist/chunk-EZG6SBSO.mjs.map +0 -1
- package/dist/chunk-GPWW5OML.mjs +0 -1955
- package/dist/chunk-GPWW5OML.mjs.map +0 -1
- package/dist/chunk-I4BKU5NN.mjs.map +0 -1
- package/dist/chunk-L4XGZAZ5.mjs.map +0 -1
- package/dist/chunk-LP3JFZ4A.mjs.map +0 -1
- package/dist/chunk-MLEYTQGK.mjs +0 -60
- package/dist/chunk-MLEYTQGK.mjs.map +0 -1
- package/dist/chunk-NKO3K3QS.mjs.map +0 -1
- package/dist/chunk-SAUOY37Q.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Misc/assets/styles/thorium-web.publicationGrid.module.css","../src/components/Misc/PublicationGrid.tsx","../src/components/Misc/assets/styles/thorium-web.loader.module.css","../src/components/Misc/StatefulLoader.tsx","../src/components/Misc/assets/styles/thorium-web.error.module.css","../src/components/Misc/ErrorDisplay.tsx"],"names":["wrapper","card","cover","image","info","title","author","rendition","loader","jsx","message","jsxs"],"mappings":"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","file":"chunk-2ORXUOH3.mjs","sourcesContent":[".wrapper {\n --th-color-text: #333;\n --th-color-text-secondary: #666;\n --th-color-background: #fff;\n --th-color-primary: #e0e0e0;\n --th-color-secondary: #fafafa;\n\n padding: 1rem;\n width: 100%;\n}\n\n.card {\n display: flex;\n text-decoration: none;\n color: inherit;\n border: 1px solid var(--th-color-primary);\n border-radius: 8px;\n overflow: hidden;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n background: white;\n}\n\n.card:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n}\n\n.cover {\n width: 120px;\n height: 180px;\n flex-shrink: 0;\n margin: 0;\n background-color: var(--th-color-secondary);\n}\n\n.image {\n width: 120px;\n height: 180px;\n object-fit: contain;\n}\n\n.info {\n padding: 1rem;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n}\n\n.title {\n margin: 0 0 0.5rem;\n font-weight: 600;\n font-size: 1.25rem;\n color: var(--th-color-text);\n}\n\n.author {\n margin: 0 0 0.75rem;\n color: var(--th-color-text-secondary);\n font-size: 1rem;\n}\n\n.rendition {\n background: var(--th-color-primary);\n color: var(--th-color-text);\n padding: 0.25rem 0.75rem;\n margin: 0;\n border-radius: 20px;\n font-size: 0.875rem;\n font-weight: 500;\n margin-top: auto;\n align-self: flex-start;\n}","\"use client\";\n\nimport React, { cloneElement, isValidElement } from \"react\";\n\nimport publicationGridStyles from \"./assets/styles/thorium-web.publicationGrid.module.css\";\n\nimport { ThGrid } from \"@/core/Components\";\nimport { Link } from \"react-aria-components\";\n\nimport classNames from \"classnames\";\n\nexport const DefaultImage = ({\n src,\n alt = \"\"\n}: {\n src: string;\n alt?: string;\n}) => (\n <img\n src={ src }\n alt={ alt }\n className={ publicationGridStyles.image }\n loading=\"lazy\"\n />\n);\n\nexport interface Publication {\n title: string;\n author: string;\n cover: string;\n url: string;\n rendition?: string;\n}\n\nexport interface PublicationGridProps {\n publications: Publication[];\n columnWidth?: number;\n gap?: string;\n renderCover?: (publication: Publication) => React.ReactElement<React.ImgHTMLAttributes<HTMLImageElement>>;\n}\n\nexport const PublicationGrid = ({ \n publications,\n columnWidth = 400,\n gap = \"1.5rem\",\n renderCover = (publication) => (\n <DefaultImage\n src={ publication.cover }\n alt=\"\"\n />\n ),\n}: PublicationGridProps) => {\n const renderCoverWithClass = (publication: Publication) => {\n const cover = renderCover(publication);\n \n if (!isValidElement<React.ImgHTMLAttributes<HTMLImageElement>>(cover)) {\n return (\n <DefaultImage\n src={ publication.cover }\n alt=\"\"\n />\n );\n }\n\n return cloneElement(cover, {\n className: classNames(\n publicationGridStyles.image,\n cover.props.className\n )\n });\n };\n\n return (\n <ThGrid\n className={ publicationGridStyles.wrapper }\n items={ publications }\n columnWidth={ columnWidth }\n gap={ gap }\n renderItem={ (publication, index) => (\n <Link\n href={ publication.url }\n key={ index }\n className={ publicationGridStyles.card }\n >\n <figure className={ publicationGridStyles.cover }>\n { renderCoverWithClass(publication) }\n </figure>\n <div className={ publicationGridStyles.info }>\n <h2 className={ publicationGridStyles.title }>\n { publication.title }\n </h2>\n <p className={ publicationGridStyles.author }>\n { publication.author }\n </p>\n { publication.rendition && (\n <p className={ publicationGridStyles.rendition }>\n { publication.rendition }\n </p>\n ) }\n </div>\n </Link>\n ) }\n />\n );\n};",".wrapper {\n width: 100%;\n height: 100dvh;\n height: 100vh;\n}\n\n.loader {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n color: var(--th-theme-text, CanvasText);\n background-color: var(--th-theme-background, Canvas);\n font-weight: bold;\n}\n\n.loader::after {\n content: \"...\";\n overflow: hidden;\n display: inline-block;\n vertical-align: bottom;\n animation: ellipsis-dot 1s infinite 300ms;\n animation-fill-mode: forwards;\n width: 3ch;\n}\n\n@keyframes ellipsis-dot {\n 25% {\n content: \"\";\n }\n 50% {\n content: \".\";\n }\n 75% {\n content: \"..\";\n }\n 100% {\n content: \"...\";\n }\n}","import { ReactNode } from \"react\";\n\nimport readerLoaderStyles from \"./assets/styles/thorium-web.loader.module.css\";\n\nimport { ThLoader } from \"@/core/Components/Reader/ThLoader\";\n\nimport { useI18n } from \"@/i18n/useI18n\";\n\nexport const StatefulLoader = ({ isLoading, children }: { isLoading: boolean, children: ReactNode }) => {\n const { t } = useI18n();\n\n return (\n <>\n <ThLoader \n isLoading={ isLoading } \n loader={ <div className={ readerLoaderStyles.loader }>{ t(\"reader.app.loading\") }</div> } \n className={ readerLoaderStyles.wrapper } \n >\n { children }\n </ThLoader>\n </>\n )\n}",".wrapper {\n --th-color-text: #333;\n --th-color-text-secondary: #666;\n --th-color-background: #fff;\n\n padding: 2rem;\n text-align: center;\n max-width: 600px;\n margin: 0 auto;\n}\n\n.title {\n font-size: 1.5rem;\n font-weight: 600;\n color: var(--th-color-text);\n margin: 0 0 1rem 0;\n}\n\n.message {\n font-size: 1.125rem;\n color: var(--th-color-text-secondary);\n line-height: 1.6;\n margin: 0 0 1.5rem 0;\n}","import { ReactNode } from \"react\";\nimport { ProcessedError } from \"@/helpers/errorHandler\";\nimport { useI18n } from \"@/i18n/useI18n\";\nimport errorStyles from \"./assets/styles/thorium-web.error.module.css\";\n\ninterface ErrorDisplayProps {\n error: ProcessedError;\n title?: string;\n children?: ReactNode;\n}\n\nexport const ErrorDisplay = ({ \n error, \n title,\n children\n}: ErrorDisplayProps) => {\n const { t } = useI18n();\n \n const getUserMessage = () => {\n if (error.isNotFound()) return t(\"reader.app.errors.notFound\");\n if (error.isAccessDenied()) return t(\"reader.app.errors.accessDenied\");\n if (error.isNetwork()) return t(\"reader.app.errors.network\");\n if (error.isServerError()) return t(\"reader.app.errors.serverError\");\n if (error.isClientError()) return t(\"reader.app.errors.clientError\");\n return t(\"reader.app.errors.generic\");\n };\n\n return (\n <div className={ errorStyles.wrapper }>\n <h1 className={ errorStyles.title }>{ title || t(\"reader.app.errors.title\") }</h1>\n <p className={ errorStyles.message }>{ getUserMessage() }</p>\n { children }\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Misc/assets/styles/thorium-web.publicationGrid.module.css","../src/components/Misc/PublicationGrid.tsx","../src/components/Misc/assets/styles/thorium-web.loader.module.css","../src/components/Misc/StatefulLoader.tsx","../src/components/Misc/assets/styles/thorium-web.error.module.css","../src/components/Misc/ErrorDisplay.tsx"],"names":["wrapper","card","cover","image","info","title","author","rendition","loader","jsx","message","jsxs"],"mappings":"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","file":"chunk-WF2UOYO7.mjs","sourcesContent":[".wrapper {\n --th-color-text: #333;\n --th-color-text-secondary: #666;\n --th-color-background: #fff;\n --th-color-primary: #e0e0e0;\n --th-color-secondary: #fafafa;\n\n padding: 1rem;\n width: 100%;\n}\n\n.card {\n display: flex;\n text-decoration: none;\n color: inherit;\n border: 1px solid var(--th-color-primary);\n border-radius: 8px;\n overflow: hidden;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n background: white;\n}\n\n.card:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n}\n\n.cover {\n width: 120px;\n height: 180px;\n flex-shrink: 0;\n margin: 0;\n background-color: var(--th-color-secondary);\n}\n\n.image {\n width: 120px;\n height: 180px;\n object-fit: contain;\n}\n\n.info {\n padding: 1rem;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n}\n\n.title {\n margin: 0 0 0.5rem;\n font-weight: 600;\n font-size: 1.25rem;\n color: var(--th-color-text);\n}\n\n.author {\n margin: 0 0 0.75rem;\n color: var(--th-color-text-secondary);\n font-size: 1rem;\n}\n\n.rendition {\n background: var(--th-color-primary);\n color: var(--th-color-text);\n padding: 0.25rem 0.75rem;\n margin: 0;\n border-radius: 20px;\n font-size: 0.875rem;\n font-weight: 500;\n margin-top: auto;\n align-self: flex-start;\n}","\"use client\";\n\nimport React, { cloneElement, isValidElement } from \"react\";\n\nimport publicationGridStyles from \"./assets/styles/thorium-web.publicationGrid.module.css\";\n\nimport { ThGrid } from \"@/core/Components\";\nimport { Link } from \"react-aria-components\";\n\nimport classNames from \"classnames\";\n\nexport const DefaultImage = ({\n src,\n alt = \"\"\n}: {\n src: string;\n alt?: string;\n}) => (\n <img\n src={ src }\n alt={ alt }\n className={ publicationGridStyles.image }\n loading=\"lazy\"\n />\n);\n\nexport interface Publication {\n title: string;\n author: string;\n cover: string;\n url: string;\n rendition?: string;\n}\n\nexport interface PublicationGridProps {\n publications: Publication[];\n columnWidth?: number;\n gap?: string;\n renderCover?: (publication: Publication) => React.ReactElement<React.ImgHTMLAttributes<HTMLImageElement>>;\n}\n\nexport const PublicationGrid = ({ \n publications,\n columnWidth = 400,\n gap = \"1.5rem\",\n renderCover = (publication) => (\n <DefaultImage\n src={ publication.cover }\n alt=\"\"\n />\n ),\n}: PublicationGridProps) => {\n const renderCoverWithClass = (publication: Publication) => {\n const cover = renderCover(publication);\n \n if (!isValidElement<React.ImgHTMLAttributes<HTMLImageElement>>(cover)) {\n return (\n <DefaultImage\n src={ publication.cover }\n alt=\"\"\n />\n );\n }\n\n return cloneElement(cover, {\n className: classNames(\n publicationGridStyles.image,\n cover.props.className\n )\n });\n };\n\n return (\n <ThGrid\n className={ publicationGridStyles.wrapper }\n items={ publications }\n columnWidth={ columnWidth }\n gap={ gap }\n renderItem={ (publication, index) => (\n <Link\n href={ publication.url }\n key={ index }\n className={ publicationGridStyles.card }\n >\n <figure className={ publicationGridStyles.cover }>\n { renderCoverWithClass(publication) }\n </figure>\n <div className={ publicationGridStyles.info }>\n <h2 className={ publicationGridStyles.title }>\n { publication.title }\n </h2>\n <p className={ publicationGridStyles.author }>\n { publication.author }\n </p>\n { publication.rendition && (\n <p className={ publicationGridStyles.rendition }>\n { publication.rendition }\n </p>\n ) }\n </div>\n </Link>\n ) }\n />\n );\n};",".wrapper {\n width: 100%;\n height: 100dvh;\n height: 100vh;\n}\n\n.loader {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n color: var(--th-theme-text, CanvasText);\n background-color: var(--th-theme-background, Canvas);\n font-weight: bold;\n}\n\n.loader::after {\n content: \"...\";\n overflow: hidden;\n display: inline-block;\n vertical-align: bottom;\n animation: ellipsis-dot 1s infinite 300ms;\n animation-fill-mode: forwards;\n width: 3ch;\n}\n\n@keyframes ellipsis-dot {\n 25% {\n content: \"\";\n }\n 50% {\n content: \".\";\n }\n 75% {\n content: \"..\";\n }\n 100% {\n content: \"...\";\n }\n}","import { ReactNode } from \"react\";\n\nimport readerLoaderStyles from \"./assets/styles/thorium-web.loader.module.css\";\n\nimport { ThLoader } from \"@/core/Components/Reader/ThLoader\";\n\nimport { useI18n } from \"@/i18n/useI18n\";\n\nexport const StatefulLoader = ({ isLoading, children }: { isLoading: boolean, children: ReactNode }) => {\n const { t } = useI18n();\n\n return (\n <>\n <ThLoader \n isLoading={ isLoading } \n loader={ <div className={ readerLoaderStyles.loader }>{ t(\"reader.app.loading\") }</div> } \n className={ readerLoaderStyles.wrapper } \n >\n { children }\n </ThLoader>\n </>\n )\n}",".wrapper {\n --th-color-text: #333;\n --th-color-text-secondary: #666;\n --th-color-background: #fff;\n\n padding: 2rem;\n text-align: center;\n max-width: 600px;\n margin: 0 auto;\n}\n\n.title {\n font-size: 1.5rem;\n font-weight: 600;\n color: var(--th-color-text);\n margin: 0 0 1rem 0;\n}\n\n.message {\n font-size: 1.125rem;\n color: var(--th-color-text-secondary);\n line-height: 1.6;\n margin: 0 0 1.5rem 0;\n}","import { ReactNode } from \"react\";\nimport { ProcessedError } from \"@/helpers/errorHandler\";\nimport { useI18n } from \"@/i18n/useI18n\";\nimport errorStyles from \"./assets/styles/thorium-web.error.module.css\";\n\ninterface ErrorDisplayProps {\n error: ProcessedError;\n title?: string;\n children?: ReactNode;\n}\n\nexport const ErrorDisplay = ({ \n error, \n title,\n children\n}: ErrorDisplayProps) => {\n const { t } = useI18n();\n \n const getUserMessage = () => {\n if (error.isNotFound()) return t(\"reader.app.errors.notFound\");\n if (error.isAccessDenied()) return t(\"reader.app.errors.accessDenied\");\n if (error.isNetwork()) return t(\"reader.app.errors.network\");\n if (error.isServerError()) return t(\"reader.app.errors.serverError\");\n if (error.isClientError()) return t(\"reader.app.errors.clientError\");\n return t(\"reader.app.errors.generic\");\n };\n\n return (\n <div className={ errorStyles.wrapper }>\n <h1 className={ errorStyles.title }>{ title || t(\"reader.app.errors.title\") }</h1>\n <p className={ errorStyles.message }>{ getUserMessage() }</p>\n { children }\n </div>\n );\n};\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { toEntryRef } from './chunk-TEZB4ULX.mjs';
|
|
2
|
-
import { defaultPlatformModifier } from './chunk-
|
|
2
|
+
import { defaultPlatformModifier } from './chunk-44PEO3DS.mjs';
|
|
3
3
|
import { useRef } from 'react';
|
|
4
|
-
import {
|
|
4
|
+
import { Provider } from 'react-redux';
|
|
5
5
|
import { createSlice, configureStore } from '@reduxjs/toolkit';
|
|
6
6
|
import { jsx } from 'react/jsx-runtime';
|
|
7
7
|
|
|
@@ -94,8 +94,10 @@ var initialState2 = {
|
|
|
94
94
|
fontWeight: 400,
|
|
95
95
|
hyphens: null,
|
|
96
96
|
letterSpacing: null,
|
|
97
|
+
ligatures: null,
|
|
97
98
|
lineHeight: "publisher" /* publisher */,
|
|
98
99
|
lineLength: null,
|
|
100
|
+
noRuby: null,
|
|
99
101
|
paragraphIndent: null,
|
|
100
102
|
paragraphSpacing: null,
|
|
101
103
|
publisherStyles: true,
|
|
@@ -163,6 +165,9 @@ var settingsSlice = createSlice({
|
|
|
163
165
|
setHyphens: (state, action) => {
|
|
164
166
|
state.hyphens = action.payload;
|
|
165
167
|
},
|
|
168
|
+
setLigatures: (state, action) => {
|
|
169
|
+
state.ligatures = action.payload;
|
|
170
|
+
},
|
|
166
171
|
setLetterSpacing: (state, action) => {
|
|
167
172
|
handleSpacingSetting(state, action, "letterSpacing" /* letterSpacing */);
|
|
168
173
|
},
|
|
@@ -243,6 +248,9 @@ var settingsSlice = createSlice({
|
|
|
243
248
|
setTextNormalization: (state, action) => {
|
|
244
249
|
state.textNormalization = action.payload;
|
|
245
250
|
},
|
|
251
|
+
setNoRuby: (state, action) => {
|
|
252
|
+
state.noRuby = action.payload;
|
|
253
|
+
},
|
|
246
254
|
setWordSpacing: (state, action) => {
|
|
247
255
|
handleSpacingSetting(state, action, "wordSpacing" /* wordSpacing */);
|
|
248
256
|
}
|
|
@@ -255,6 +263,7 @@ var {
|
|
|
255
263
|
setFontWeight,
|
|
256
264
|
setFontFamily,
|
|
257
265
|
setHyphens,
|
|
266
|
+
setLigatures,
|
|
258
267
|
setLetterSpacing,
|
|
259
268
|
setLineHeight,
|
|
260
269
|
setLineLength,
|
|
@@ -265,6 +274,7 @@ var {
|
|
|
265
274
|
setSpacingPreset,
|
|
266
275
|
setTextAlign,
|
|
267
276
|
setTextNormalization,
|
|
277
|
+
setNoRuby,
|
|
268
278
|
setWordSpacing
|
|
269
279
|
} = settingsSlice.actions;
|
|
270
280
|
var settingsReducer_default = settingsSlice.reducer;
|
|
@@ -281,7 +291,8 @@ var initialState3 = {
|
|
|
281
291
|
prefersReducedTransparency: false,
|
|
282
292
|
prefersContrast: "no-preference" /* none */,
|
|
283
293
|
forcedColors: false,
|
|
284
|
-
breakpoint: void 0
|
|
294
|
+
breakpoint: void 0,
|
|
295
|
+
containerBreakpoint: void 0
|
|
285
296
|
};
|
|
286
297
|
var themeSlice = createSlice({
|
|
287
298
|
name: "theming",
|
|
@@ -313,6 +324,9 @@ var themeSlice = createSlice({
|
|
|
313
324
|
},
|
|
314
325
|
setBreakpoint: (state, action) => {
|
|
315
326
|
state.breakpoint = action.payload;
|
|
327
|
+
},
|
|
328
|
+
setContainerBreakpoint: (state, action) => {
|
|
329
|
+
state.containerBreakpoint = action.payload;
|
|
316
330
|
}
|
|
317
331
|
}
|
|
318
332
|
});
|
|
@@ -325,7 +339,8 @@ var {
|
|
|
325
339
|
setReducedTransparency,
|
|
326
340
|
setContrast,
|
|
327
341
|
setForcedColors,
|
|
328
|
-
setBreakpoint
|
|
342
|
+
setBreakpoint,
|
|
343
|
+
setContainerBreakpoint
|
|
329
344
|
} = themeSlice.actions;
|
|
330
345
|
var themeReducer_default = themeSlice.reducer;
|
|
331
346
|
var initialState4 = {
|
|
@@ -563,6 +578,7 @@ var initialState5 = {
|
|
|
563
578
|
fontLanguage: "default",
|
|
564
579
|
isFXL: false,
|
|
565
580
|
isRTL: false,
|
|
581
|
+
scriptMode: "ltr",
|
|
566
582
|
hasDisplayTransformability: false,
|
|
567
583
|
positionsList: [],
|
|
568
584
|
atPublicationStart: false,
|
|
@@ -583,6 +599,9 @@ var publicationSlice = createSlice({
|
|
|
583
599
|
setRTL: (state, action) => {
|
|
584
600
|
state.isRTL = action.payload;
|
|
585
601
|
},
|
|
602
|
+
setScriptMode: (state, action) => {
|
|
603
|
+
state.scriptMode = action.payload;
|
|
604
|
+
},
|
|
586
605
|
setHasDisplayTransformability: (state, action) => {
|
|
587
606
|
state.hasDisplayTransformability = action.payload;
|
|
588
607
|
},
|
|
@@ -633,6 +652,7 @@ var {
|
|
|
633
652
|
setFontLanguage,
|
|
634
653
|
setFXL,
|
|
635
654
|
setRTL,
|
|
655
|
+
setScriptMode,
|
|
636
656
|
setHasDisplayTransformability,
|
|
637
657
|
setPositionsList,
|
|
638
658
|
setPublicationStart,
|
|
@@ -677,10 +697,6 @@ var mapPaginatedAffordance = (format) => {
|
|
|
677
697
|
};
|
|
678
698
|
var mapPreferencesToState = (prefs) => {
|
|
679
699
|
return {
|
|
680
|
-
l10n: {
|
|
681
|
-
locale: prefs.locale,
|
|
682
|
-
direction: prefs.direction
|
|
683
|
-
},
|
|
684
700
|
progressionFormat: {
|
|
685
701
|
reflow: mapRenditionFormat(
|
|
686
702
|
prefs.theming?.progression?.format?.reflow
|
|
@@ -760,8 +776,6 @@ var mapStateToPreferences = (state, currentPrefs) => {
|
|
|
760
776
|
};
|
|
761
777
|
return {
|
|
762
778
|
...currentPrefs,
|
|
763
|
-
locale: state.l10n?.locale ?? currentPrefs.locale,
|
|
764
|
-
direction: state.l10n?.direction ?? currentPrefs.direction,
|
|
765
779
|
theming: {
|
|
766
780
|
...currentPrefs.theming,
|
|
767
781
|
...state.progressionFormat && {
|
|
@@ -851,9 +865,6 @@ var preferencesSlice = createSlice({
|
|
|
851
865
|
name: "preferences",
|
|
852
866
|
initialState: initialState6,
|
|
853
867
|
reducers: {
|
|
854
|
-
setL10n: (state, action) => {
|
|
855
|
-
state.l10n = action.payload;
|
|
856
|
-
},
|
|
857
868
|
setProgressionFormat: (state, action) => {
|
|
858
869
|
const { key, value, breakpoint } = action.payload;
|
|
859
870
|
state.progressionFormat = {
|
|
@@ -916,7 +927,6 @@ var preferencesSlice = createSlice({
|
|
|
916
927
|
}
|
|
917
928
|
});
|
|
918
929
|
var {
|
|
919
|
-
setL10n,
|
|
920
930
|
setProgressionFormat,
|
|
921
931
|
setRunningHeadFormat,
|
|
922
932
|
setUI,
|
|
@@ -925,12 +935,26 @@ var {
|
|
|
925
935
|
updateFromPreferences
|
|
926
936
|
} = preferencesSlice.actions;
|
|
927
937
|
var preferencesReducer_default = preferencesSlice.reducer;
|
|
928
|
-
var initialState7 = {
|
|
938
|
+
var initialState7 = {};
|
|
939
|
+
var globalPreferencesSlice = createSlice({
|
|
940
|
+
name: "globalPreferences",
|
|
941
|
+
initialState: initialState7,
|
|
942
|
+
reducers: {
|
|
943
|
+
setLocale: (state, action) => {
|
|
944
|
+
state.locale = action.payload;
|
|
945
|
+
}
|
|
946
|
+
}
|
|
947
|
+
});
|
|
948
|
+
var { setLocale } = globalPreferencesSlice.actions;
|
|
949
|
+
var globalPreferencesReducer_default = globalPreferencesSlice.reducer;
|
|
950
|
+
var initialState8 = {
|
|
929
951
|
fontFamily: { default: "publisher" },
|
|
930
952
|
fontWeight: 400,
|
|
931
953
|
hyphens: null,
|
|
932
954
|
letterSpacing: null,
|
|
955
|
+
ligatures: null,
|
|
933
956
|
lineHeight: "publisher" /* publisher */,
|
|
957
|
+
noRuby: null,
|
|
934
958
|
paragraphIndent: null,
|
|
935
959
|
paragraphSpacing: null,
|
|
936
960
|
publisherStyles: true,
|
|
@@ -946,7 +970,7 @@ var initialState7 = {
|
|
|
946
970
|
};
|
|
947
971
|
var webPubSettingsSlice = createSlice({
|
|
948
972
|
name: "webPubSettings",
|
|
949
|
-
initialState:
|
|
973
|
+
initialState: initialState8,
|
|
950
974
|
reducers: {
|
|
951
975
|
setWebPubFontFamily: (state, action) => {
|
|
952
976
|
const { key, value } = action.payload;
|
|
@@ -958,6 +982,9 @@ var webPubSettingsSlice = createSlice({
|
|
|
958
982
|
setWebPubHyphens: (state, action) => {
|
|
959
983
|
state.hyphens = action.payload;
|
|
960
984
|
},
|
|
985
|
+
setWebPubLigatures: (state, action) => {
|
|
986
|
+
state.ligatures = action.payload;
|
|
987
|
+
},
|
|
961
988
|
setWebPubLetterSpacing: (state, action) => {
|
|
962
989
|
handleSpacingSetting(state, action, "letterSpacing" /* letterSpacing */);
|
|
963
990
|
},
|
|
@@ -998,6 +1025,9 @@ var webPubSettingsSlice = createSlice({
|
|
|
998
1025
|
setWebPubTextNormalization: (state, action) => {
|
|
999
1026
|
state.textNormalization = action.payload;
|
|
1000
1027
|
},
|
|
1028
|
+
setWebPubNoRuby: (state, action) => {
|
|
1029
|
+
state.noRuby = action.payload;
|
|
1030
|
+
},
|
|
1001
1031
|
setWebPubWordSpacing: (state, action) => {
|
|
1002
1032
|
handleSpacingSetting(state, action, "wordSpacing" /* wordSpacing */);
|
|
1003
1033
|
},
|
|
@@ -1006,11 +1036,12 @@ var webPubSettingsSlice = createSlice({
|
|
|
1006
1036
|
}
|
|
1007
1037
|
}
|
|
1008
1038
|
});
|
|
1009
|
-
var initialWebPubSettingsState =
|
|
1039
|
+
var initialWebPubSettingsState = initialState8;
|
|
1010
1040
|
var {
|
|
1011
1041
|
setWebPubFontFamily,
|
|
1012
1042
|
setWebPubFontWeight,
|
|
1013
1043
|
setWebPubHyphens,
|
|
1044
|
+
setWebPubLigatures,
|
|
1014
1045
|
setWebPubLetterSpacing,
|
|
1015
1046
|
setWebPubLineHeight,
|
|
1016
1047
|
setWebPubParagraphIndent,
|
|
@@ -1019,11 +1050,12 @@ var {
|
|
|
1019
1050
|
setWebPubSpacingPreset,
|
|
1020
1051
|
setWebPubTextAlign,
|
|
1021
1052
|
setWebPubTextNormalization,
|
|
1053
|
+
setWebPubNoRuby,
|
|
1022
1054
|
setWebPubWordSpacing,
|
|
1023
1055
|
setWebPubZoom
|
|
1024
1056
|
} = webPubSettingsSlice.actions;
|
|
1025
1057
|
var webPubSettingsReducer_default = webPubSettingsSlice.reducer;
|
|
1026
|
-
var
|
|
1058
|
+
var initialState9 = {
|
|
1027
1059
|
volume: 1,
|
|
1028
1060
|
playbackRate: 1,
|
|
1029
1061
|
preservePitch: true,
|
|
@@ -1036,7 +1068,7 @@ var initialState8 = {
|
|
|
1036
1068
|
};
|
|
1037
1069
|
var audioSettingsSlice = createSlice({
|
|
1038
1070
|
name: "audioSettings",
|
|
1039
|
-
initialState:
|
|
1071
|
+
initialState: initialState9,
|
|
1040
1072
|
reducers: {
|
|
1041
1073
|
setVolume: (state, action) => {
|
|
1042
1074
|
state.volume = action.payload;
|
|
@@ -1079,7 +1111,7 @@ var {
|
|
|
1079
1111
|
setEnableMediaSession
|
|
1080
1112
|
} = audioSettingsSlice.actions;
|
|
1081
1113
|
var audioSettingsReducer_default = audioSettingsSlice.reducer;
|
|
1082
|
-
var
|
|
1114
|
+
var initialState10 = {
|
|
1083
1115
|
status: "idle",
|
|
1084
1116
|
isSeeking: false,
|
|
1085
1117
|
isStalled: false,
|
|
@@ -1090,7 +1122,7 @@ var initialState9 = {
|
|
|
1090
1122
|
};
|
|
1091
1123
|
var playerSlice = createSlice({
|
|
1092
1124
|
name: "player",
|
|
1093
|
-
initialState:
|
|
1125
|
+
initialState: initialState10,
|
|
1094
1126
|
reducers: {
|
|
1095
1127
|
setStatus: (state, action) => {
|
|
1096
1128
|
state.status = action.payload;
|
|
@@ -1321,6 +1353,7 @@ var loadState = (storageKey = DEFAULT_STORAGE_KEY) => {
|
|
|
1321
1353
|
settings: void 0,
|
|
1322
1354
|
theming: void 0,
|
|
1323
1355
|
preferences: void 0,
|
|
1356
|
+
globalPreferences: void 0,
|
|
1324
1357
|
webPubSettings: void 0,
|
|
1325
1358
|
audioSettings: void 0
|
|
1326
1359
|
};
|
|
@@ -1344,12 +1377,13 @@ var loadState = (storageKey = DEFAULT_STORAGE_KEY) => {
|
|
|
1344
1377
|
}
|
|
1345
1378
|
}
|
|
1346
1379
|
return state;
|
|
1347
|
-
} catch (
|
|
1380
|
+
} catch (_err) {
|
|
1348
1381
|
return {
|
|
1349
1382
|
actions: void 0,
|
|
1350
1383
|
settings: void 0,
|
|
1351
1384
|
theming: void 0,
|
|
1352
1385
|
preferences: void 0,
|
|
1386
|
+
globalPreferences: void 0,
|
|
1353
1387
|
webPubSettings: void 0
|
|
1354
1388
|
};
|
|
1355
1389
|
}
|
|
@@ -1362,6 +1396,7 @@ var saveState = (state, storageKey, externalReducers = {}) => {
|
|
|
1362
1396
|
if (state.settings) stateToPersist.settings = state.settings;
|
|
1363
1397
|
if (state.theming) stateToPersist.theming = state.theming;
|
|
1364
1398
|
if (state.preferences) stateToPersist.preferences = state.preferences;
|
|
1399
|
+
if (state.globalPreferences) stateToPersist.globalPreferences = state.globalPreferences;
|
|
1365
1400
|
if (state.webPubSettings) stateToPersist.webPubSettings = state.webPubSettings;
|
|
1366
1401
|
if (state.audioSettings) stateToPersist.audioSettings = state.audioSettings;
|
|
1367
1402
|
Object.entries(externalReducers).forEach(([key, config]) => {
|
|
@@ -1383,6 +1418,7 @@ var makeStore = (storageKey, externalReducers = {}) => {
|
|
|
1383
1418
|
actions: actionsReducer_default,
|
|
1384
1419
|
publication: publicationReducer_default,
|
|
1385
1420
|
preferences: preferencesReducer_default,
|
|
1421
|
+
globalPreferences: globalPreferencesReducer_default,
|
|
1386
1422
|
webPubSettings: webPubSettingsReducer_default,
|
|
1387
1423
|
audioSettings: audioSettingsReducer_default,
|
|
1388
1424
|
player: playerReducer_default,
|
|
@@ -1397,6 +1433,7 @@ var makeStore = (storageKey, externalReducers = {}) => {
|
|
|
1397
1433
|
settings: persistedState.settings,
|
|
1398
1434
|
theming: persistedState.theming,
|
|
1399
1435
|
preferences: persistedState.preferences,
|
|
1436
|
+
globalPreferences: persistedState.globalPreferences,
|
|
1400
1437
|
webPubSettings: persistedState.webPubSettings,
|
|
1401
1438
|
audioSettings: persistedState.audioSettings,
|
|
1402
1439
|
// Include persisted state for external reducers that have it
|
|
@@ -1440,7 +1477,10 @@ var ThReduxPreferencesAdapter = class {
|
|
|
1440
1477
|
this.store.subscribe(() => {
|
|
1441
1478
|
const state = this.store.getState();
|
|
1442
1479
|
const prefs = this.mapStateToPreferences(state);
|
|
1443
|
-
|
|
1480
|
+
if (JSON.stringify(prefs) !== JSON.stringify(this.currentPreferences)) {
|
|
1481
|
+
this.currentPreferences = prefs;
|
|
1482
|
+
this.notifyListeners(prefs);
|
|
1483
|
+
}
|
|
1444
1484
|
});
|
|
1445
1485
|
}
|
|
1446
1486
|
getPreferences() {
|
|
@@ -1468,10 +1508,45 @@ var ThReduxPreferencesAdapter = class {
|
|
|
1468
1508
|
this.listeners.forEach((callback) => callback(prefsCopy));
|
|
1469
1509
|
}
|
|
1470
1510
|
};
|
|
1471
|
-
var useAppDispatch = useDispatch;
|
|
1472
|
-
var useAppSelector = useSelector;
|
|
1473
|
-
var useAppStore = useStore;
|
|
1474
1511
|
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1512
|
+
// src/lib/ThReduxGlobalPreferencesAdapter.ts
|
|
1513
|
+
var ThReduxGlobalPreferencesAdapter = class {
|
|
1514
|
+
store;
|
|
1515
|
+
listeners = /* @__PURE__ */ new Set();
|
|
1516
|
+
currentPreferences;
|
|
1517
|
+
constructor(store, initialPreferences = {}) {
|
|
1518
|
+
this.store = store;
|
|
1519
|
+
this.currentPreferences = initialPreferences;
|
|
1520
|
+
this.store.subscribe(() => {
|
|
1521
|
+
const locale = this.store.getState().globalPreferences?.locale;
|
|
1522
|
+
const next = { locale };
|
|
1523
|
+
if (JSON.stringify(next) !== JSON.stringify(this.currentPreferences)) {
|
|
1524
|
+
this.currentPreferences = next;
|
|
1525
|
+
this.notifyListeners(next);
|
|
1526
|
+
}
|
|
1527
|
+
});
|
|
1528
|
+
}
|
|
1529
|
+
getPreferences() {
|
|
1530
|
+
return { ...this.currentPreferences };
|
|
1531
|
+
}
|
|
1532
|
+
setPreferences(prefs) {
|
|
1533
|
+
this.currentPreferences = { ...prefs };
|
|
1534
|
+
this.store.dispatch(setLocale(prefs.locale));
|
|
1535
|
+
this.notifyListeners(this.currentPreferences);
|
|
1536
|
+
}
|
|
1537
|
+
subscribe(callback) {
|
|
1538
|
+
this.listeners.add(callback);
|
|
1539
|
+
callback(this.getPreferences());
|
|
1540
|
+
}
|
|
1541
|
+
unsubscribe(callback) {
|
|
1542
|
+
this.listeners.delete(callback);
|
|
1543
|
+
}
|
|
1544
|
+
notifyListeners(prefs) {
|
|
1545
|
+
const copy = { ...prefs };
|
|
1546
|
+
this.listeners.forEach((cb) => cb(copy));
|
|
1547
|
+
}
|
|
1548
|
+
};
|
|
1549
|
+
|
|
1550
|
+
export { ThReduxGlobalPreferencesAdapter, ThReduxPreferencesAdapter, ThStoreProvider, actionsSlice, activateDockPanel, audioSettingsSlice, collapseDockPanel, deactivateDockPanel, debounce, dockAction, expandDockPanel, globalPreferencesSlice, handleSpacingSetting, initialSettingsState, initialWebPubSettingsState, makeStore, playerSlice, preferencesSlice, publicationSlice, readerSlice, setActionOpen, setAdjacentTimelineItems, setAutoPlay, setBreakpoint, setColorScheme, setColumnCount, setContainerBreakpoint, setContrast, setCoverTheme, setDirection, setDockPanelWidth, setEnableMediaSession, setFXL, setFontFamily, setFontLanguage, setFontSize, setFontWeight, setForcedColors, setFullscreen, setHasArrows, setHasDisplayTransformability, setHovering, setHyphens, setImmersive, setLetterSpacing, setLigatures, setLineHeight, setLineLength, setLoading, setLocale, setMonochrome, setNoRuby, setOverflow, setPaginatedAffordance, setParagraphIndent, setParagraphSpacing, setPlatformModifier, setPlaybackRate, setPollInterval, setPositionsList, setPreservePitch, setProgressionFormat, setPublicationEnd, setPublicationStart, setPublisherStyles, setRTL, setReaderProfile, setReducedMotion, setReducedTransparency, setRemotePlaybackState, setRunningHeadFormat, setScriptMode, setScroll, setScrollAffordance, setScrollAffordances, setSeekableRanges, setSeeking, setSettingsContainer, setSkipBackwardInterval, setSkipForwardInterval, setSkipInterval, setSleepTimerOnFragmentEnd, setSleepTimerOnTrackEnd, setSleepTimerRemainingSeconds, setSpacingPreset, setStalled, setStatus, setTextAlign, setTextNormalization, setTheme, setTimeline, setTocEntry, setTocTree, setTrackReady, setUI, setUserNavigated, setVolume, setWebPubFontFamily, setWebPubFontWeight, setWebPubHyphens, setWebPubLetterSpacing, setWebPubLigatures, setWebPubLineHeight, setWebPubNoRuby, setWebPubParagraphIndent, setWebPubParagraphSpacing, setWebPubPublisherStyles, setWebPubSpacingPreset, setWebPubTextAlign, setWebPubTextNormalization, setWebPubWordSpacing, setWebPubZoom, setWordSpacing, settingsSlice, themeSlice, toggleActionOpen, toggleImmersive, updateFromPreferences, webPubSettingsSlice };
|
|
1551
|
+
//# sourceMappingURL=chunk-YEVLT3AV.mjs.map
|
|
1552
|
+
//# sourceMappingURL=chunk-YEVLT3AV.mjs.map
|