@edrlab/thorium-web 1.0.0-beta.2 → 1.0.0-beta.3

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 (63) hide show
  1. package/LICENSE +1 -1
  2. package/dist/{ThSettingsWrapper-De4qvjsh.d.mts → ThSettingsWrapper-CA2_0nQz.d.mts} +1 -1
  3. package/dist/{actionsReducer-e808e6V_.d.mts → actionsReducer-D4Mphfuv.d.mts} +1 -1
  4. package/dist/chunk-BNPR6V7V.mjs.map +1 -1
  5. package/dist/chunk-IEYR7QV7.mjs.map +1 -1
  6. package/dist/{chunk-O4MBY6P4.mjs → chunk-KQLSID7M.mjs} +52 -20
  7. package/dist/chunk-KQLSID7M.mjs.map +1 -0
  8. package/dist/chunk-MLEYTQGK.mjs.map +1 -1
  9. package/dist/chunk-NA3KMUS4.mjs +417 -0
  10. package/dist/chunk-NA3KMUS4.mjs.map +1 -0
  11. package/dist/{chunk-GHEGQBCW.mjs → chunk-NOV43IG4.mjs} +4 -18
  12. package/dist/chunk-NOV43IG4.mjs.map +1 -0
  13. package/dist/chunk-NQ2ZSGCX.mjs.map +1 -1
  14. package/dist/{chunk-TWGRY5SW.mjs → chunk-RQFPGXWN.mjs} +29 -22
  15. package/dist/chunk-RQFPGXWN.mjs.map +1 -0
  16. package/dist/{chunk-BVSROK7Z.mjs → chunk-SDVDRPT5.mjs} +116 -6
  17. package/dist/chunk-SDVDRPT5.mjs.map +1 -0
  18. package/dist/chunk-TTGURRX3.mjs.map +1 -1
  19. package/dist/{chunk-PGZF5NO2.mjs → chunk-TXILKP4F.mjs} +16 -12
  20. package/dist/chunk-TXILKP4F.mjs.map +1 -0
  21. package/dist/components/Epub/index.d.mts +48 -25
  22. package/dist/components/Epub/index.mjs +877 -407
  23. package/dist/components/Epub/index.mjs.map +1 -1
  24. package/dist/{const-DGYvRLhk.d.mts → const-IAfi9t_g.d.mts} +14 -11
  25. package/dist/core/Components/index.d.mts +52 -6
  26. package/dist/core/Components/index.mjs +2 -2
  27. package/dist/core/Helpers/index.d.mts +3 -9
  28. package/dist/core/Helpers/index.mjs +2 -3
  29. package/dist/core/Hooks/index.d.mts +15 -5
  30. package/dist/core/Hooks/index.mjs +2 -3
  31. package/dist/{enums-DxbWWvn7.d.mts → enums-DqGQ66r1.d.mts} +1 -23
  32. package/dist/lib/index.d.mts +355 -11
  33. package/dist/lib/index.mjs +2 -3
  34. package/dist/{overflowMenu.module-XQRI7RJJ.module.css → overflowMenu.module-FO27A2A3.module.css} +12 -0
  35. package/dist/preferences/index.d.mts +6 -6
  36. package/dist/preferences/index.mjs +2 -3
  37. package/dist/publicationGrid.module-T6ISNRGM.module.css +70 -0
  38. package/dist/{reader-QFK7DGLX.css → reader-NGCQJKLX.css} +74 -36
  39. package/dist/{readerArrowButton.module-NHAUIQXS.module.css → readerArrowButton.module-EFLOIADG.module.css} +4 -0
  40. package/dist/{readerHeader.module-OBKZATSW.module.css → readerHeader.module-K7OLOIJP.module.css} +2 -7
  41. package/dist/{readerLoader.module-U6LLXOVQ.module.css → readerLoader.module-KDBPCQZJ.module.css} +1 -1
  42. package/dist/readerPagination.module-W4IAEOSH.module.css +73 -0
  43. package/dist/readerProgression.module-7PU7L74S.module.css +5 -0
  44. package/dist/{readerSharedUI.module-MCLGNG22.module.css → readerSharedUI.module-Y2VDWFS5.module.css} +1 -5
  45. package/dist/{sheets.module-DDN7GPMG.module.css → sheets.module-NA32WOSZ.module.css} +4 -4
  46. package/dist/{toc.module-XJLXQM7G.module.css → toc.module-KNW5CKIY.module.css} +1 -0
  47. package/dist/{useBreakpoints-I7vHrywa.d.mts → useBreakpoints-BQaiwecQ.d.mts} +1 -1
  48. package/dist/{useEpubNavigator-BrV4MYJy.d.mts → useEpubNavigator-DFRJ_tHa.d.mts} +9 -10
  49. package/dist/{usePreferences-B55XqFto.d.mts → usePreferences-BMyBhq7F.d.mts} +1 -1
  50. package/dist/useTimeline-Bid5B7AQ.d.mts +39 -0
  51. package/package.json +31 -22
  52. package/dist/bookUrlConverter.module-J46O27CR.module.css +0 -63
  53. package/dist/chunk-3QS3WKRC.mjs +0 -29
  54. package/dist/chunk-3QS3WKRC.mjs.map +0 -1
  55. package/dist/chunk-BVSROK7Z.mjs.map +0 -1
  56. package/dist/chunk-GHEGQBCW.mjs.map +0 -1
  57. package/dist/chunk-JS5WI5D4.mjs +0 -600
  58. package/dist/chunk-JS5WI5D4.mjs.map +0 -1
  59. package/dist/chunk-O4MBY6P4.mjs.map +0 -1
  60. package/dist/chunk-PGZF5NO2.mjs.map +0 -1
  61. package/dist/chunk-TWGRY5SW.mjs.map +0 -1
  62. package/dist/index-ClB-1iNN.d.mts +0 -356
  63. package/dist/readerProgression.module-S5R3Y6JI.module.css +0 -11
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/core/Hooks/useIsClient.ts","../src/core/Hooks/useFullscreen.ts","../src/core/Hooks/usePrevious.ts","../src/resources/locales/en.json","../src/core/Hooks/Epub/scrollAffordance.ts","../src/core/Hooks/Epub/useEpubNavigator.ts"],"names":["useState","useEffect","ThScrollActions","useRef","useCallback"],"mappings":"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","file":"chunk-JS5WI5D4.mjs","sourcesContent":["\"use client\";\n\nimport { useLayoutEffect, useState } from \"react\";\n\nexport const useIsClient = () => {\n const [isClient, setIsClient] = useState(false);\n\n useLayoutEffect(() => {\n if (typeof window !== \"undefined\") setIsClient(true);\n }, []);\n\n return isClient;\n}","\"use client\";\n\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useIsClient } from \"./useIsClient\";\n\nexport const useFullscreen = (onChange?: (isFullscreen: boolean) => void) => {\n const [isFullscreen, setIsFullscreen] = useState(false);\n const isClient = useIsClient();\n\n const handleFullscreen = useCallback(() => {\n if (!isClient) return;\n\n if (!document.fullscreenElement) {\n document.documentElement.requestFullscreen();\n } else if (document.exitFullscreen) {\n document.exitFullscreen();\n }\n }, [isClient]);\n\n useEffect(() => {\n const onFSchange = () => {\n const isFs = Boolean(document.fullscreenElement);\n setIsFullscreen(isFs);\n onChange && onChange(isFs);\n }\n document.addEventListener(\"fullscreenchange\", onFSchange);\n\n return () => {\n document.removeEventListener(\"fullscreenchange\", onFSchange);\n }\n }, [onChange]);\n\n return {\n isFullscreen,\n handleFullscreen\n }\n}","\"use client\";\n\nimport { useEffect, useRef } from \"react\";\n\nexport const usePrevious = <T>(value: T): T | null => {\n const ref = useRef<T | null>(null);\n \n useEffect(() => {\n ref.current = value;\n }, [value]); \n\n return ref.current;\n}\n","{\n \"bookUrlConverter\": {\n \"label\": \"Load an EPUB publication from a remote server (it must support byte-range requests):\",\n \"placeholder\": \"https://www.example.org/ebook.epub\",\n \"button\": \"Load\",\n \"error\": \"The URL is invalid. Please check the URL is correct and try again.\"\n },\n \"reader\": {\n \"app\": {\n \"loading\": \"Loading\",\n \"publicationWrapper\": \"You’re now in the publication.\",\n \"docking\": {\n \"dockingLeft\": \"Docked panel left\",\n \"dockingRight\": \"Docked panel right\",\n \"dockingEmpty\": \"Currently empty\",\n \"dockingClosed\": \"Is closed, contains {{ action }}\",\n \"dockingCollapsed\": \"Is Collapsed, contains {{ action }}\"\n },\n \"header\": {\n \"label\": \"Top bar\",\n \"runningHead\": \"Running head\",\n \"runningHeadFallback\": \"...\",\n \"actions\": \"Actions\"\n },\n \"footer\": {\n \"label\": \"Bottom bar\"\n },\n \"progression\": {\n \"wrapper\": \"Current progression\",\n \"of\": \"{{ current }} of {{ reference }}\",\n \"referenceFallback\": \"current chapter\",\n \"pubFallback\": \"the publication\"\n },\n \"docker\": {\n \"wrapper\": \"Docking options\",\n \"dockToLeft\": {\n \"trigger\": \"Dock to the left\",\n \"tooltip\": \"Dock left\"\n },\n \"dockToRight\": {\n \"trigger\": \"Dock to the right\",\n \"tooltip\": \"Dock Right\"\n },\n \"popover\": {\n \"trigger\": \"Display in a window\",\n \"tooltip\": \"Pop over\"\n },\n \"fullscreen\": {\n \"trigger\": \"Display over contents\",\n \"tooltip\": \"Overlay\"\n },\n \"close\": {\n \"trigger\": \"Close\",\n \"tooltip\": \"Close\"\n }\n },\n \"back\": {\n \"trigger\": \"Back\"\n }\n },\n \"navigation\": {\n \"goForward\": \"Go forward\",\n \"goBackward\": \"Go backward\",\n \"scroll\": {\n \"wrapper\": \"Navigate through the publication\",\n \"prevLabel\": \"Previous\",\n \"nextLabel\": \"Next\",\n \"prevA11yLabel\": \"Go to the previous resource\",\n \"nextA11yLabel\": \"Go to the next resource\"\n }\n },\n \"fullscreen\": {\n \"tooltip\": \"Fullscreen\",\n \"trigger\": \"Toggle fullscreen mode\",\n \"close\": \"Exit fullscreen mode\" \n },\n \"toc\": {\n \"tooltip\": \"Table of contents\",\n \"trigger\": \"Table of contents\",\n \"close\": \"Close table of contents\",\n \"heading\": \"Table of contents\",\n \"entries\": \"Entries in the table\",\n \"empty\": \"The table of contents was not provided for this publication.\",\n \"search\": {\n \"label\": \"Search\",\n \"placeholder\": \"Search\",\n \"clear\": \"Clear\"\n }\n },\n \"jumpToPosition\": {\n \"tooltip\": \"Jump to…\",\n \"trigger\": \"Jump to position\",\n \"heading\": \"Jump to position\",\n \"go\": \"Go\",\n \"close\": \"Close jump to position\",\n \"label\": \"Select a position from {{ positionStart }} to {{ positionEnd }}:\"\n },\n \"overflowMenu\": {\n \"active\": {\n \"tooltip\": \"More actions\",\n \"trigger\": \"Toggle menu\"\n },\n \"hint\": {\n \"tooltip\": \"Toggle actions\",\n \"trigger\": \"Display actions\"\n }\n },\n \"layoutStrategy\": {\n \"tooltip\": \"Layout\",\n \"trigger\": \"Layout strategy\",\n \"close\": \"Close layout strategy menu\",\n \"heading\": \"Layout strategy\",\n \"title\": \"Strategy\",\n \"margin\": \"Margin\",\n \"lineLength\": \"Line length\",\n \"columns\": \"Columns\",\n \"minChars\": \"Disable minimal line length\",\n \"maxChars\": \"Disable maximal line length\",\n \"minimalLineLength\": {\n \"title\": \"Minimal line length\",\n \"increase\": \"Increase minimal line length\",\n \"decrease\": \"Decrease maximal line length\"\n },\n \"optimalLineLength\": {\n \"title\": \"Optimal line length\",\n \"increase\": \"Increase optimal line length\",\n \"decrease\": \"Decrease optimal line length\"\n },\n \"maximalLineLength\": {\n \"title\": \"Maximal line length\",\n \"increase\": \"Increase maximal line length\",\n \"decrease\": \"Decrease maximal line length\"\n }\n },\n \"settings\": {\n \"tooltip\": \"Settings\",\n \"trigger\": \"Settings menu\",\n \"close\": \"Close settings menu\",\n \"heading\": \"Display settings\",\n \"themes\": {\n \"title\": \"Themes\",\n \"auto\": \"Auto\",\n \"light\": \"Light\",\n \"sepia\": \"Sepia\",\n \"paper\": \"Paper\",\n \"dark\": \"Dark\",\n \"contrast1\": \"Contrast 1\",\n \"contrast2\": \"Contrast 2\",\n \"contrast3\": \"Contrast 3\"\n },\n \"zoom\": {\n \"title\": \"Zoom\",\n \"increase\": \"Increase zoom\",\n \"decrease\": \"Decrease zoom\"\n },\n \"fontSize\": {\n \"title\": \"Font size\",\n \"increase\": \"Increase font size\",\n \"decrease\": \"Decrease font size\"\n },\n \"fontFamily\": {\n \"title\": \"Font family\",\n \"labels\": {\n \"publisher\": \"Publisher’s font\",\n \"oldStyle\": \"Old style serif\",\n \"modern\": \"Modern serif\",\n \"sans\": \"Sans-serif\",\n \"humanist\": \"Humanist sans-serif\",\n \"monospace\": \"Monospace\" \n }\n },\n \"fontWeight\": {\n \"title\": \"Font weight\",\n \"increase\": \"Increase font weight\",\n \"decrease\": \"Decrease font weight\"\n },\n \"normalizeText\": {\n \"title\": \"Text normalization\",\n \"label\": \"Remove all text formatting\"\n },\n \"align\": {\n \"title\": \"Text alignment\",\n \"publisher\": \"Default\",\n \"left\": \"Left\",\n \"justify\": \"Justify\",\n \"right\": \"Right\"\n },\n \"hyphens\": {\n \"title\": \"Hyphenation\",\n \"label\": \"Enable hyphens\"\n },\n \"text\": {\n \"title\": \"Text\",\n \"advanced\": {\n \"tooltip\": \"More options\",\n \"trigger\": \"More formatting options\"\n }\n },\n \"lineHeight\": {\n \"title\": \"Line height\",\n \"publisher\": \"Default\",\n \"small\": \"Tight\",\n \"medium\": \"Balanced\",\n \"large\": \"Loose\"\n },\n \"paraSpacing\": {\n \"title\": \"Paragraph spacing\",\n \"increase\": \"Increase paragraph spacing\",\n \"decrease\": \"Decrease paragraph spacing\"\n },\n \"paraIndent\": {\n \"title\": \"Paragraph indent\",\n \"increase\": \"Increase paragraph indent\",\n \"decrease\": \"Decrease paragraph indent\"\n },\n \"wordSpacing\": {\n \"title\": \"Word spacing\",\n \"increase\": \"Increase word spacing\",\n \"decrease\": \"Decrease word spacing\"\n },\n \"letterSpacing\": {\n \"title\": \"Letter spacing\",\n \"increase\": \"Increase letter spacing\",\n \"decrease\": \"Decrease letter spacing\"\n },\n \"publisherStyles\": {\n \"label\": \"Use original formatting\"\n },\n \"spacing\": {\n \"title\": \"Spacing\",\n \"advanced\": {\n \"tooltip\": \"More options\",\n \"trigger\": \"More spacing options\"\n }\n },\n \"layout\": {\n \"title\": \"Layout\",\n \"scrolled\": \"Scrollable\",\n \"paginated\": \"Paginated\"\n },\n \"column\": {\n \"title\": \"Columns\",\n \"auto\": \"Auto\",\n \"one\": \"1 col\",\n \"two\": \"2 cols\"\n }\n }\n }\n}","\"use client\";\n\nimport Locale from \"../../../resources/locales/en.json\";\n\nimport { ScrollAffordanceConfig, ThScrollAffordancePref } from \"@/preferences/models/enums\";\n\n// Button posting message from iFrame won’t work since Navigator handles click\n// so the message is never received.\n// Link href is relative to selfhref but https and http links are\n// handled as external links in Reader, opening a new window.\n// Trying a custom scheme to avoid conflicts and progress on scroll for MVP\n// but not particularly happy about that.\n// React Portal has a lots of caveats too but it may at least protect\n// the component from Navigator’s handling, although I’m not 100% sure yet.\nexport const TH_CUSTOM_SCHEME = \"thorium-web:\";\nexport enum ThScrollActions {\n prev = TH_CUSTOM_SCHEME + \"go_prev\",\n next = TH_CUSTOM_SCHEME + \"go_next\"\n}\nconst STYLESHEET_ID = \"scroll-affordance-stylesheet\"\n\nexport class ScrollAffordance {\n private pref: ThScrollAffordancePref;\n private placement: \"top\" | \"bottom\";\n public id: string;\n public className: string;\n private styleSheetContent?: string;\n\n constructor(config: ScrollAffordanceConfig) {\n this.pref = config.pref;\n this.placement = config.placement;\n this.id = `thorium-web-scroll-affordance-wrapper-${config.placement}`;\n this.className = config.className || \"thorium-web-scroll-affordance-wrapper\";\n this.styleSheetContent = config.styleSheetContent;\n }\n\n private createStyleSheet = (cssContent?: string) => {\n const styleSheet = document.createElement(\"style\");\n styleSheet.id = STYLESHEET_ID;\n styleSheet.dataset.readium = \"true\";\n styleSheet.textContent = cssContent || `.thorium-web-scroll-affordance-wrapper {\n --color-text: currentColor;\n\n box-sizing: border-box;\n display: flex;\n width: 100%;\n gap: 20px;\n margin: 0;\n padding: 0;\n }\n .thorium-web-scroll-affordance-wrapper:focus-within {\n /* to get around hidden overflow cutting off focus ring w/o being too noticeable */\n padding: 0 2px;\n }\n #thorium-web-scroll-affordance-wrapper-top {\n /* to get around hidden overflow cutting off focus ring */\n padding-top: 0.25rem;\n margin-bottom: 1.25rem;\n }\n #thorium-web-scroll-affordance-wrapper-bottom {\n margin-top: 1.5rem;\n /* to get around hidden overflow cutting off focus ring */\n padding-bottom: 1.5rem;\n }\n .thorium-web-scroll-affordance-wrapper > a {\n box-sizing: border-box;\n border: 1px solid color-mix(in srgb, var(--color-text) 50%, transparent);\n border-radius: 3px;\n padding: 0.75rem;\n text-decoration: none;\n font-weight: bold;\n flex: 1 1 0;\n text-align: left;\n color: var(--color-text);\n font-size: 1rem;\n font-style: normal;\n font-family: inherit;\n }\n .thorium-web-scroll-affordance-wrapper > a:hover {\n background-color: \"color-mix(in srgb, var(--color-text) 15%, transparent)\";\n border: 1px solid var(--color-text);\n }\n .thorium-web-scroll-affordance-wrapper > a:first-child:not(:last-child) {\n text-align: right;\n }\n .thorium-web-scroll-affordance-wrapper > a.thorium-web-scroll-affordance-button-prev > span:before {\n content: \"←\";\n float: left;\n margin-right: 10px;\n color: \"color-mix(in srgb, var(--color-text) 50%, transparent)\";\n }\n .thorium-web-scroll-affordance-wrapper > a.thorium-web-scroll-affordance-button-prev:hover > span:before,\n .thorium-web-scroll-affordance-wrapper > a.thorium-web-scroll-affordance-button-next:hover > span:after {\n color: var(--color-text);\n }\n .thorium-web-scroll-affordance-wrapper > a.thorium-web-scroll-affordance-button-next > span:after {\n content: \"→\";\n float: right;\n margin-left: 10px;\n color: \"color-mix(in srgb, var(--color-text) 50%, transparent)\";\n }`;\n return styleSheet;\n };\n\n public render = (doc: Document) => {\n if (doc) {\n // Prevent duplicates\n this.destroy(doc);\n\n let wrapper: HTMLElement | null = null;\n\n if (this.pref !== ThScrollAffordancePref.none) {\n let prevAnchor: HTMLAnchorElement | undefined;\n let nextAnchor: HTMLAnchorElement | undefined;\n\n if ((this.pref === ThScrollAffordancePref.both || this.pref === ThScrollAffordancePref.prev)) {\n prevAnchor = doc.createElement(\"a\");\n prevAnchor.className = `thorium-web-scroll-affordance-button-prev`;\n prevAnchor.id = `thorium-web-scroll-affordance-button-prev-${this.placement}`;\n prevAnchor.href = ThScrollActions.prev;\n\n // In practice browsers don’t do anything with this? And since the href\n // is a custom scheme, they wouldn’t be able to preload the document\n // that is handled by navigator anyway. So not sure it hurts or has any benefit…\n prevAnchor.rel = \"prev\";\n prevAnchor.setAttribute(\"aria-label\", Locale.reader.navigation.scroll.prevA11yLabel);\n\n prevAnchor.innerHTML = `<span>${Locale.reader.navigation.scroll.prevLabel}</span>`;\n }\n\n if ((this.pref === ThScrollAffordancePref.both || this.pref === ThScrollAffordancePref.next)) {\n nextAnchor = doc.createElement(\"a\");\n nextAnchor.className = `thorium-web-scroll-affordance-button-next`;\n nextAnchor.id = `<a id=\"thorium-web-scroll-affordance-button-next-${this.placement}`;\n nextAnchor.href = ThScrollActions.next;\n\n // In practice browsers don’t do anything with this? And since the href\n // is a custom scheme, they wouldn’t be able to preload the document\n // that is handled by navigator anyway. So not sure it hurts or has any benefit…\n nextAnchor.rel = \"next\";\n nextAnchor.setAttribute(\"aria-label\", Locale.reader.navigation.scroll.nextA11yLabel);\n\n nextAnchor.innerHTML = `<span>${Locale.reader.navigation.scroll.nextLabel}</span>`\n }\n\n if (prevAnchor || nextAnchor) {\n wrapper = doc.createElement(\"nav\");\n wrapper.id = `thorium-web-scroll-affordance-wrapper-${this.placement}`;\n wrapper.className = this.className || \"thorium-web-scroll-affordance-wrapper\";\n wrapper.dataset.readium = \"true\";\n wrapper.setAttribute(\"aria-label\", Locale.reader.navigation.scroll.wrapper);\n\n if (prevAnchor) wrapper.append(prevAnchor);\n if (nextAnchor) wrapper.append(nextAnchor);\n }\n }\n\n if (wrapper) {\n const styleSheet = this.createStyleSheet(this.styleSheetContent);\n doc.head.append(styleSheet);\n this.placement === \"top\" ? doc.body.prepend(wrapper) : doc.body.append(wrapper);\n }\n }\n }\n\n public destroy = (doc: Document) => {\n if (doc) {\n const stylesheet = doc.getElementById(`#${ STYLESHEET_ID }`);\n if (stylesheet) stylesheet.remove();\n\n const wrapper = doc.getElementById(this.id);\n if (wrapper) {\n wrapper.remove();\n }\n }\n }\n}","\"use client\";\n\nimport { useCallback, useMemo, useRef } from \"react\";\n\nimport { ThScrollAffordancePref, ThScrollBackTo } from \"@/preferences/models/enums\";\nimport { ScrollAffordance } from \"./scrollAffordance\";\n\nimport { \n EPUBLayout, \n Link, \n Locator, \n Publication \n} from \"@readium/shared\";\nimport { \n EpubNavigator, \n EpubNavigatorListeners, \n EpubPreferences, \n EpubSettings, \n FrameManager, \n FXLFrameManager, \n IEpubDefaults, \n IEpubPreferences\n} from \"@readium/navigator\";\n\ntype cbb = (ok: boolean) => void;\n\n// Module scoped, singleton instance of navigator\nlet navigatorInstance: EpubNavigator | null = null;\n\n// Scroll Affordances as mutable, otherwise the callbacks\n// will not work for components mounting before load\n// They should not be part of the hook anyway\n// And their existence is due to the lack of Injection API\nlet scrollAffordanceTop: ScrollAffordance | null = null;\nlet scrollAffordanceBottom: ScrollAffordance | null = null;\n\nexport interface EpubNavigatorLoadProps {\n container: HTMLDivElement | null;\n publication: Publication;\n listeners: EpubNavigatorListeners;\n positionsList?: Locator[];\n initialPosition?: Locator;\n preferences?: IEpubPreferences;\n defaults?: IEpubDefaults;\n scrollAffordances?: {\n top?: ThScrollAffordancePref;\n bottom?: ThScrollAffordancePref;\n }\n}\n\nexport const useEpubNavigator = () => {\n const container = useRef<HTMLDivElement | null>(null);\n const containerParent = useRef<HTMLElement | null>(null);\n const publication = useRef<Publication | null>(null);\n\n // Warning: this is using an internal member that will become private, do not rely on it\n // See https://github.com/edrlab/thorium-web/issues/25\n const mountScroll = useCallback(() => {\n navigatorInstance?._cframes.forEach((frameManager: FrameManager | FXLFrameManager | undefined) => {\n if (frameManager) { \n scrollAffordanceTop?.render(frameManager.window.document);\n scrollAffordanceBottom?.render(frameManager.window.document)\n }\n });\n }, []);\n\n // Warning: this is using an internal member that will become private, do not rely on it\n // See https://github.com/edrlab/thorium-web/issues/25\n const unmountScroll = useCallback(() => {\n navigatorInstance?._cframes.forEach((frameManager: FrameManager | FXLFrameManager | undefined) => {\n if (frameManager) {\n scrollAffordanceTop?.destroy(frameManager.window.document);\n scrollAffordanceBottom?.destroy(frameManager.window.document)\n }\n });\n }, []);\n\n const handleScrollAffordances = useCallback((scroll: boolean) => {\n if (navigatorInstance === null || navigatorInstance.layout === EPUBLayout.fixed) return;\n scroll ? mountScroll() : unmountScroll();\n }, [mountScroll, unmountScroll]);\n\n const submitPreferences = useCallback(async (preferences: IEpubPreferences) => {\n await navigatorInstance?.submitPreferences(new EpubPreferences(preferences));\n }, []);\n\n const getSetting = useCallback(<K extends keyof EpubSettings>(settingKey: K) => {\n return navigatorInstance?.settings[settingKey] as EpubSettings[K];\n }, []);\n\n // Warning: this is using an internal member that will become private, do not rely on it\n // See https://github.com/edrlab/thorium-web/issues/25\n const scrollBackTo = useCallback((position: ThScrollBackTo) => {\n if (position !== ThScrollBackTo.untouched) {\n navigatorInstance?._cframes.forEach((frameManager: FrameManager | FXLFrameManager | undefined) => {\n if (frameManager) {\n const scrollingEl = frameManager.window.document.scrollingElement;\n if (position === ThScrollBackTo.top) {\n scrollingEl?.scrollTo(0, 0);\n } else {\n scrollingEl?.scrollTo(0, scrollingEl.scrollHeight);\n }\n }\n });\n }\n }, []);\n\n // [TMP] Working around positionChanged not firing consistently for FXL\n // We’re observing the FXLFramePoolManager spine div element’s style\n // and checking whether its translate3d has changed.\n // Sure IntersectionObserver should be the obvious one to use here,\n // observing iframes instead of the style attribute on the spine element\n // but there’s additional complexity to handle as a spread = 2 iframes\n // And keeping in sync while the FramePool is re-aligning on resize can be suboptimal\n let FXLPositionChangedCallback: ((locator: Locator) => void) | undefined;\n const FXLPositionChanged = useMemo(() => { \n return new MutationObserver((mutationsList: MutationRecord[]) => {\n for (const mutation of mutationsList) {\n const re = /translate3d\\(([^)]+)\\)/;\n const newVal = (mutation.target as HTMLElement).getAttribute(mutation.attributeName as string);\n const oldVal = mutation.oldValue;\n if (newVal?.split(re)[1] !== oldVal?.split(re)[1]) {\n const locator = navigatorInstance?.currentLocator;\n if (locator) {\n FXLPositionChangedCallback?.(locator);\n }\n }\n }\n });\n }, [FXLPositionChangedCallback]);\n\n const EpubNavigatorLoad = useCallback((config: EpubNavigatorLoadProps, cb: Function) => {\n if (config.container) {\n container.current = config.container;\n containerParent.current = container.current? container.current.parentElement : null;\n \n publication.current = config.publication;\n\n if (config.scrollAffordances) {\n if (config.scrollAffordances.top) {\n scrollAffordanceTop = new ScrollAffordance({ pref: config.scrollAffordances.top, placement: \"top\" })\n }\n if (config.scrollAffordances.bottom) {\n scrollAffordanceBottom = new ScrollAffordance({ pref: config.scrollAffordances.bottom, placement: \"bottom\" })\n }\n }\n\n navigatorInstance = new EpubNavigator(\n config.container, \n config.publication, \n config.listeners, \n config.positionsList, \n config.initialPosition, \n { preferences: config.preferences || {}, defaults: config.defaults || {} }\n );\n\n navigatorInstance.load().then(() => {\n cb();\n\n if (navigatorInstance?.layout === EPUBLayout.fixed) {\n // @ts-ignore\n FXLPositionChanged.observe((navigatorInstance?.pool.spineElement as HTMLElement), {\n attributeFilter: [\"style\"], \n attributeOldValue: true\n });\n }\n });\n }\n }, [FXLPositionChanged]);\n\n const EpubNavigatorDestroy = useCallback((cb: Function) => {\n cb();\n\n if (navigatorInstance?.layout === EPUBLayout.fixed) {\n FXLPositionChanged.disconnect();\n }\n navigatorInstance?.destroy;\n }, [FXLPositionChanged]);\n\n const goRight = useCallback((animated: boolean, callback: cbb) => {\n navigatorInstance?.goRight(animated, callback);\n }, []);\n\n const goLeft = useCallback((animated: boolean, callback: cbb) => {\n navigatorInstance?.goLeft(animated, callback)\n }, []);\n\n const goBackward = useCallback((animated: boolean, callback: cbb) => {\n navigatorInstance?.goBackward(animated, callback);\n }, []);\n\n const goForward = useCallback((animated: boolean, callback: cbb) => {\n navigatorInstance?.goForward(animated, callback);\n }, []);\n\n const goLink = useCallback((link: Link, animated: boolean, callback: cbb) => {\n navigatorInstance?.goLink(link, animated, callback);\n }, []);\n\n const go = useCallback((locator: Locator, animated: boolean, callback: cbb) => {\n navigatorInstance?.go(locator, animated, callback);\n }, []);\n\n const navLayout = useCallback(() => {\n return navigatorInstance?.layout;\n }, []);\n\n const currentLocator = useCallback(() => {\n return navigatorInstance?.currentLocator;\n }, []);\n\n const currentPositions = useCallback(() => {\n return navigatorInstance?.currentPositionNumbers;\n }, []);\n\n // Warning: this is an internal member that will become private, do not rely on it\n // See https://github.com/edrlab/thorium-web/issues/25\n const getCframes = useCallback(() => {\n return navigatorInstance?._cframes;\n }, []);\n\n return { \n EpubNavigatorLoad, \n EpubNavigatorDestroy, \n goRight, \n goLeft, \n goBackward, \n goForward,\n goLink, \n go, \n handleScrollAffordances,\n scrollBackTo, \n navLayout, \n currentLocator,\n currentPositions,\n preferencesEditor: navigatorInstance?.preferencesEditor,\n getSetting,\n submitPreferences,\n getCframes,\n onFXLPositionChange: (cb: (locator: Locator) => void) => {\n FXLPositionChangedCallback = cb;\n }\n }\n}"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../node_modules/.pnpm/debounce@2.2.0/node_modules/debounce/index.js","../src/lib/readerReducer.ts","../src/lib/settingsReducer.ts","../src/lib/themeReducer.ts","../src/lib/actionsReducer.ts","../src/lib/publicationReducer.ts","../src/lib/store.ts","../src/lib/ThStoreProvider.tsx","../src/lib/hooks.ts"],"names":["debounce","initialState","createSlice"],"mappings":"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","file":"chunk-O4MBY6P4.mjs","sourcesContent":["function debounce(function_, wait = 100, options = {}) {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError(`Expected the first parameter to be a function, got \\`${typeof function_}\\`.`);\n\t}\n\n\tif (wait < 0) {\n\t\tthrow new RangeError('`wait` must not be negative.');\n\t}\n\n\t// TODO: Deprecate the boolean parameter at some point.\n\tconst {immediate} = typeof options === 'boolean' ? {immediate: options} : options;\n\n\tlet storedContext;\n\tlet storedArguments;\n\tlet timeoutId;\n\tlet timestamp;\n\tlet result;\n\n\tfunction run() {\n\t\tconst callContext = storedContext;\n\t\tconst callArguments = storedArguments;\n\t\tstoredContext = undefined;\n\t\tstoredArguments = undefined;\n\t\tresult = function_.apply(callContext, callArguments);\n\t\treturn result;\n\t}\n\n\tfunction later() {\n\t\tconst last = Date.now() - timestamp;\n\n\t\tif (last < wait && last >= 0) {\n\t\t\ttimeoutId = setTimeout(later, wait - last);\n\t\t} else {\n\t\t\ttimeoutId = undefined;\n\n\t\t\tif (!immediate) {\n\t\t\t\tresult = run();\n\t\t\t}\n\t\t}\n\t}\n\n\tconst debounced = function (...arguments_) {\n\t\tif (\n\t\t\tstoredContext\n\t\t\t&& this !== storedContext\n\t\t\t&& Object.getPrototypeOf(this) === Object.getPrototypeOf(storedContext)\n\t\t) {\n\t\t\tthrow new Error('Debounced method called with different contexts of the same prototype.');\n\t\t}\n\n\t\tstoredContext = this; // eslint-disable-line unicorn/no-this-assignment\n\t\tstoredArguments = arguments_;\n\t\ttimestamp = Date.now();\n\n\t\tconst callNow = immediate && !timeoutId;\n\n\t\tif (!timeoutId) {\n\t\t\ttimeoutId = setTimeout(later, wait);\n\t\t}\n\n\t\tif (callNow) {\n\t\t\tresult = run();\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tObject.defineProperty(debounced, 'isPending', {\n\t\tget() {\n\t\t\treturn timeoutId !== undefined;\n\t\t},\n\t});\n\n\tdebounced.clear = () => {\n\t\tif (!timeoutId) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout(timeoutId);\n\t\ttimeoutId = undefined;\n\t};\n\n\tdebounced.flush = () => {\n\t\tif (!timeoutId) {\n\t\t\treturn;\n\t\t}\n\n\t\tdebounced.trigger();\n\t};\n\n\tdebounced.trigger = () => {\n\t\tresult = run();\n\n\t\tdebounced.clear();\n\t};\n\n\treturn debounced;\n}\n\n// Adds compatibility for ES modules\nmodule.exports.debounce = debounce;\n\nmodule.exports = debounce;\n","import { createSlice } from \"@reduxjs/toolkit\";\n\nimport { defaultPlatformModifier, UnstablePlatformModifier } from \"@/core/Helpers/keyboardUtilities\";\nimport { ThSettingsContainerKeys, ThLayoutDirection } from \"@/preferences/models/enums\";\n\nexport interface ReaderReducerState {\n direction: ThLayoutDirection;\n isLoading: boolean;\n isImmersive: boolean;\n isHovering: boolean;\n hasArrows: boolean;\n isFullscreen: boolean;\n settingsContainer: ThSettingsContainerKeys;\n platformModifier: UnstablePlatformModifier;\n}\n\nconst initialState: ReaderReducerState = {\n direction: ThLayoutDirection.ltr,\n isLoading: true,\n isImmersive: false,\n isHovering: false,\n hasArrows: true,\n isFullscreen: false,\n settingsContainer: ThSettingsContainerKeys.initial,\n platformModifier: defaultPlatformModifier\n}\n\nexport const readerSlice = createSlice({\n name: \"reader\",\n initialState,\n reducers: {\n setDirection: (state, action) => {\n state.direction = action.payload\n },\n setLoading: (state, action) => {\n state.isLoading = action.payload\n },\n setPlatformModifier: (state, action) => {\n state.platformModifier = action.payload\n },\n setImmersive: (state, action) => {\n state.isImmersive = action.payload\n },\n toggleImmersive: (state) => {\n state.isImmersive = !state.isImmersive;\n },\n setHovering: (state, action) => {\n state.isHovering = action.payload\n },\n setArrows: (state, action) => {\n state.hasArrows = action.payload\n },\n setFullscreen: (state, action) => {\n state.isFullscreen = action.payload\n },\n setSettingsContainer: (state, action) => {\n state.settingsContainer = action.payload\n }\n }\n})\n\n// Action creators are generated for each case reducer function\nexport const { \n setDirection, \n setLoading,\n setPlatformModifier, \n setImmersive, \n toggleImmersive, \n setHovering, \n setArrows, \n setFullscreen, \n setSettingsContainer\n} = readerSlice.actions;\n\nexport default readerSlice.reducer;","import { createSlice } from \"@reduxjs/toolkit\";\n\nimport { ThLineHeightOptions, ThTextAlignOptions, ThLayoutStrategy } from \"@/preferences/models/enums\";\nimport { defaultFontFamilyOptions } from \"@/preferences/models/const\";\n\nexport interface LineLengthStateObject {\n optimal: number;\n min?: {\n chars?: number | null;\n isDisabled?: boolean;\n },\n max?: {\n chars?: number | null;\n isDisabled?: boolean;\n }\n}\n\nexport interface SetLineLengthPayload {\n type: string;\n payload: {\n key: \"optimal\" | \"min\" | \"max\";\n value?: number | null;\n isDisabled?: boolean;\n }\n}\n\nexport interface SettingsReducerState {\n columnCount: string;\n fontFamily: keyof typeof defaultFontFamilyOptions;\n fontSize: number;\n fontWeight: number;\n hyphens: boolean | null;\n layoutStrategy: ThLayoutStrategy;\n letterSpacing: number | null;\n lineHeight: ThLineHeightOptions;\n lineLength: LineLengthStateObject;\n paragraphIndent: number | null;\n paragraphSpacing: number | null;\n publisherStyles: boolean;\n scroll: boolean;\n textAlign: ThTextAlignOptions;\n textNormalization: boolean;\n wordSpacing: number | null;\n}\n\nconst initialState: SettingsReducerState = {\n columnCount: \"auto\",\n fontFamily: \"publisher\",\n fontSize: 1,\n fontWeight: 400,\n hyphens: null,\n layoutStrategy: ThLayoutStrategy.lineLength,\n letterSpacing: null,\n lineHeight: ThLineHeightOptions.publisher,\n lineLength: {\n optimal: 65,\n },\n paragraphIndent: null,\n paragraphSpacing: null,\n publisherStyles: true,\n scroll: false,\n textAlign: ThTextAlignOptions.publisher,\n textNormalization: false,\n wordSpacing: null,\n}\n\nexport const settingsSlice = createSlice({\n name: \"settings\",\n initialState,\n reducers: {\n setColumnCount: (state, action) => {\n state.columnCount = action.payload\n },\n setFontFamily: (state, action) => {\n state.fontFamily = action.payload\n },\n setFontSize: (state, action) => {\n state.fontSize = action.payload\n },\n setFontWeight: (state, action) => {\n state.fontWeight = action.payload\n },\n setHyphens: (state, action) => {\n state.hyphens = action.payload\n },\n setLayoutStrategy: (state, action) => {\n state.layoutStrategy = action.payload\n },\n setLetterSpacing: (state, action) => {\n state.letterSpacing = action.payload\n },\n setLineHeight: (state, action) => {\n state.lineHeight = action.payload\n },\n setLineLength: (state, action: SetLineLengthPayload) => {\n // For min and max, we need to spread and handle isDisabled\n // when it is directly set, or depending on the payload value\n const deriveIsDisabled = (value: number | null | undefined, isDisabled?: boolean): boolean => {\n if (value === null) return true;\n if (isDisabled !== undefined) return isDisabled;\n return false;\n };\n\n switch (action.payload.key) {\n case \"optimal\":\n if (action.payload.value) {\n state.lineLength = {\n ...state.lineLength,\n optimal: action.payload.value\n };\n }\n break;\n \n case \"min\":\n state.lineLength = {\n ...state.lineLength,\n min: {\n ...state.lineLength.min,\n chars: action.payload.value !== undefined \n ? action.payload.value \n : state.lineLength.min?.chars,\n isDisabled: deriveIsDisabled(action.payload.value, action.payload.isDisabled)\n }\n };\n break;\n case \"max\":\n state.lineLength = {\n ...state.lineLength,\n max: {\n ...state.lineLength.max,\n chars: action.payload.value !== undefined \n ? action.payload.value \n : state.lineLength.max?.chars,\n isDisabled: deriveIsDisabled(action.payload.value, action.payload.isDisabled)\n }\n };\n break;\n default:\n break;\n }\n },\n setParagraphIndent: (state, action) => {\n state.paragraphIndent = action.payload\n },\n setParagraphSpacing: (state, action) => {\n state.paragraphSpacing = action.payload\n },\n setPublisherStyles: (state, action) => {\n state.publisherStyles = action.payload\n },\n setScroll: (state, action) => {\n state.scroll = action.payload\n },\n setTextAlign: (state, action) => {\n state.textAlign = action.payload\n },\n setTextNormalization: (state, action) => {\n state.textNormalization = action.payload\n },\n setWordSpacing: (state, action) => {\n state.wordSpacing = action.payload\n }\n }\n})\n\n// Action creators are generated for each case reducer function\nexport const { \n setColumnCount,\n setFontSize,\n setFontWeight, \n setFontFamily,\n setHyphens, \n setLayoutStrategy,\n setLetterSpacing,\n setLineHeight,\n setLineLength,\n setParagraphIndent,\n setParagraphSpacing,\n setPublisherStyles,\n setScroll,\n setTextAlign,\n setTextNormalization, \n setWordSpacing\n} = settingsSlice.actions;\n\nexport default settingsSlice.reducer;","import { createSlice } from \"@reduxjs/toolkit\";\n\nimport { ThColorScheme } from \"@/core/Hooks/useColorScheme\";\nimport { ThContrast } from \"@/core/Hooks/useContrast\";\nimport { ThBreakpoints } from \"@/preferences/models/enums\";\n\nexport interface ThemeStateObject {\n reflow?: string;\n fxl?: string;\n}\n\nexport interface ThemeStateChangePayload {\n type: string;\n payload: {\n key: \"reflow\" | \"fxl\";\n value?: string;\n }\n}\n\nexport interface ThemeReducerState {\n monochrome: boolean;\n colorScheme: ThColorScheme;\n theme: ThemeStateObject;\n prefersReducedMotion: boolean;\n prefersReducedTransparency: boolean;\n prefersContrast: ThContrast;\n forcedColors: boolean;\n breakpoint?: ThBreakpoints;\n}\n\nconst initialState: ThemeReducerState = {\n monochrome: false,\n colorScheme: ThColorScheme.light,\n theme: {\n reflow: \"auto\",\n fxl: \"auto\"\n },\n prefersReducedMotion: false,\n prefersReducedTransparency: false, \n prefersContrast: ThContrast.none,\n forcedColors: false, \n breakpoint: undefined\n}\n\nexport const themeSlice = createSlice({\n name: \"theming\",\n initialState,\n reducers: {\n setMonochrome: (state, action) => {\n state.monochrome = action.payload\n },\n setColorScheme: (state, action) => {\n state.colorScheme = action.payload\n },\n setTheme: (state, action: ThemeStateChangePayload) => {\n state.theme[action.payload.key] = action.payload.value || \"auto\"\n },\n setReducedMotion: (state, action) => {\n state.prefersReducedMotion = action.payload\n },\n setReducedTransparency: (state, action) => {\n state.prefersReducedTransparency = action.payload\n },\n setContrast: (state, action) => {\n state.prefersContrast = action.payload\n },\n setForcedColors: (state, action) => {\n state.forcedColors = action.payload\n },\n setBreakpoint: (state, action) => {\n state.breakpoint = action.payload\n }\n }\n})\n\n// Action creators are generated for each case reducer function\nexport const { \n setMonochrome, \n setColorScheme, \n setTheme, \n setReducedMotion, \n setReducedTransparency, \n setContrast, \n setForcedColors, \n setBreakpoint,\n} = themeSlice.actions;\n\nexport default themeSlice.reducer;","import { createSlice } from \"@reduxjs/toolkit\";\n\nimport { ThDockingKeys } from \"../preferences/models/enums\";\n\nexport type ActionsStateKeys = string;\nexport type OverflowStateKeys = string; \n\nexport interface ActionStateObject {\n isOpen?: boolean | null;\n docking?: ThDockingKeys | null;\n dockedWidth?: number;\n}\n\nexport interface OverflowStateObject {\n isOpen: boolean;\n}\n\nexport interface DockStateObject {\n actionKey: ActionsStateKeys | null;\n active: boolean;\n collapsed: boolean;\n width?: number;\n}\n\nexport interface ActionStateDockPayload {\n type: string;\n payload: {\n key: ActionsStateKeys;\n dockingKey: ThDockingKeys;\n }\n}\n\nexport interface ActionStateOpenPayload {\n type: string;\n payload: {\n key: ActionsStateKeys;\n isOpen: boolean;\n }\n}\n\nexport interface ActionStateTogglePayload {\n type: string;\n payload: {\n key: ActionsStateKeys\n }\n}\n\nexport interface ActionOverflowOpenPayload {\n type: string;\n payload: {\n key: OverflowStateKeys;\n isOpen: boolean;\n }\n}\n\nexport interface ActionStateDockedPayload {\n type: string;\n payload: { \n slot: ThDockingKeys.start | ThDockingKeys.end;\n docked: DockStateObject;\n }\n}\n\nexport interface ActionStateSlotPayload {\n type: string;\n payload: ThDockingKeys.start | ThDockingKeys.end;\n}\n\nexport interface ActionStateSlotWidthPayload {\n type: string;\n payload: { \n key: ThDockingKeys.start | ThDockingKeys.end;\n width: number;\n }\n}\n\nexport interface DockState {\n [ThDockingKeys.start]: DockStateObject;\n [ThDockingKeys.end]: DockStateObject;\n}\n\nexport type ActionsReducerState = {\n keys: {\n [key in ActionsStateKeys]?: ActionStateObject;\n };\n dock: DockState,\n overflow: {\n [key in OverflowStateKeys]?: OverflowStateObject;\n }\n}\n\nconst initialState: ActionsReducerState = {\n dock: {\n [ThDockingKeys.start]: {\n actionKey: null,\n active: false,\n collapsed: false\n },\n [ThDockingKeys.end]: {\n actionKey: null,\n active: false,\n collapsed: false\n }\n },\n keys: {},\n overflow: {}\n}\n\nexport const actionsSlice = createSlice({\n name: \"actions\",\n initialState,\n reducers: {\n dockAction: (state, action: ActionStateDockPayload) => {\n // The user should be able to override the dock slot\n // so we override the previous value, and sync \n // any other action with the same docking key\n switch(action.payload.dockingKey) {\n case ThDockingKeys.start:\n // We need to find if any other action has the same docking key. \n // If it does, we also have to close it so that its transient sheet \n // doesn’t pop over on the screen when it’s replaced\n for (const key in state.keys) {\n if (state.keys[key as ActionsStateKeys]?.docking === action.payload.dockingKey) {\n state.keys[key as ActionsStateKeys] = { \n ...state.keys[key as ActionsStateKeys],\n docking: ThDockingKeys.transient,\n isOpen: false\n };\n }\n }\n\n // We need to populate the docking slot\n state.dock[ThDockingKeys.start] = {\n ...state.dock[ThDockingKeys.start],\n actionKey: action.payload.key\n }\n // And remove it from the other one\n if (state.dock[ThDockingKeys.end].actionKey === action.payload.key) {\n state.dock[ThDockingKeys.end] = {\n ...state.dock[ThDockingKeys.end],\n actionKey: null\n }\n }\n break;\n\n case ThDockingKeys.end:\n // We need to find if any other action has the same docking key. \n // If it does, we also have to close it so that its transient sheet \n // doesn’t pop over on the screen when it’s replaced\n for (const key in state.keys) {\n if (state.keys[key as ActionsStateKeys]?.docking === action.payload.dockingKey) {\n state.keys[key as ActionsStateKeys] = { \n ...state.keys[key as ActionsStateKeys],\n docking: ThDockingKeys.transient,\n isOpen: false\n };\n }\n }\n\n // We need to populate the docking slot\n state.dock[ThDockingKeys.end] = {\n ...state.dock[ThDockingKeys.end],\n actionKey: action.payload.key\n }\n // And remove it from the other one\n if (state.dock[ThDockingKeys.start].actionKey === action.payload.key) {\n state.dock[ThDockingKeys.start] = {\n ...state.dock[ThDockingKeys.start],\n actionKey: null\n }\n }\n break;\n\n // We don’t need to sync another action\n case ThDockingKeys.transient:\n default: \n // We need to empty the docking slot\n if (state.dock[ThDockingKeys.start].actionKey === action.payload.key) {\n state.dock[ThDockingKeys.start] = {\n ...state.dock[ThDockingKeys.start],\n actionKey: null\n }\n }\n if (state.dock[ThDockingKeys.end].actionKey === action.payload.key) {\n state.dock[ThDockingKeys.end] = {\n ...state.dock[ThDockingKeys.end],\n actionKey: null\n }\n } \n break;\n }\n\n state.keys[action.payload.key] = { \n ...state.keys[action.payload.key],\n docking: action.payload.dockingKey \n };\n },\n setActionOpen: (state, action: ActionStateOpenPayload) => { \n // If the action is docked and set Open, we must take care of \n // the dock panel’s collapsibility. Otherwise we end up with bugs \n // i.e. user has to click/tap action icon twice to open, \n const dockingKey = state.keys[action.payload.key]?.docking;\n if (\n !action.payload.isOpen && \n dockingKey && \n dockingKey !== ThDockingKeys.transient &&\n state.dock[dockingKey].actionKey === action.payload.key &&\n state.dock[dockingKey].active &&\n state.dock[dockingKey].collapsed\n ) {\n state.dock[dockingKey] = {\n ...state.dock[dockingKey],\n collapsed: false\n }\n } else {\n state.keys[action.payload.key] = {\n ...state.keys[action.payload.key],\n isOpen: action.payload.isOpen \n };\n }\n },\n toggleActionOpen: (state, action: ActionStateTogglePayload) => {\n const payload = {\n key: action.payload.key,\n isOpen: state.keys[action.payload.key]?.isOpen ? !state.keys[action.payload.key]?.isOpen : true\n };\n actionsSlice.caseReducers.setActionOpen(state, {\n type: \"toggleActionOpen\",\n payload: payload\n });\n },\n setOverflow: (state, action: ActionOverflowOpenPayload) => {\n state.overflow[action.payload.key] = {\n ...state.overflow[action.payload.key],\n isOpen: action.payload.isOpen \n }\n },\n activateDockPanel: (state, action: ActionStateSlotPayload) => {\n state.dock[action.payload] = {\n ...state.dock[action.payload],\n active: true\n }\n },\n deactivateDockPanel: (state, action: ActionStateSlotPayload) => {\n state.dock[action.payload] = {\n ...state.dock[action.payload],\n active: false\n }\n },\n collapseDockPanel: (state, action: ActionStateSlotPayload) => {\n state.dock[action.payload] = {\n ...state.dock[action.payload],\n collapsed: true\n }\n },\n expandDockPanel: (state, action: ActionStateSlotPayload) => {\n state.dock[action.payload] = {\n ...state.dock[action.payload],\n collapsed: false\n }\n },\n setDockPanelWidth: (state, action: ActionStateSlotWidthPayload) => {\n // Copy the value in the action state \n // in case we do something with it later.\n\n const key: ActionsStateKeys | null = state.dock[action.payload.key].actionKey;\n if (key) {\n state.keys[key] = {\n ...state.keys[key],\n dockedWidth: action.payload.width\n }\n }\n\n // We only care if it’s populated.\n if (state.dock[action.payload.key] !== null) {\n state.dock[action.payload.key] = {\n ...state.dock[action.payload.key],\n width: action.payload.width\n }\n }\n }\n }\n})\n\nexport const { \n dockAction, \n setActionOpen, \n toggleActionOpen, \n setOverflow, \n activateDockPanel, \n deactivateDockPanel, \n collapseDockPanel,\n expandDockPanel, \n setDockPanelWidth\n} = actionsSlice.actions;\n\nexport default actionsSlice.reducer;","import { createSlice } from \"@reduxjs/toolkit\";\n\nimport { UnstableProgressionObject } from \"@/components/StatefulReaderProgression\";\nimport { TocItem } from \"@/helpers/createTocTree\";\nimport { Locator } from \"@readium/shared\";\n\nexport interface PublicationReducerState {\n runningHead?: string;\n isFXL: boolean;\n isRTL: boolean;\n progression: UnstableProgressionObject;\n positionsList: Locator[],\n atPublicationStart: boolean;\n atPublicationEnd: boolean;\n tocTree?: TocItem[];\n tocEntry?: string;\n}\n\nconst initialState: PublicationReducerState = {\n runningHead: undefined,\n isFXL: false,\n isRTL: false,\n progression: {},\n positionsList: [],\n atPublicationStart: false,\n atPublicationEnd: false,\n tocTree: undefined, \n tocEntry: undefined\n}\n\nexport const publicationSlice = createSlice({\n name: \"publication\",\n initialState,\n reducers: {\n setRunningHead: (state, action) => {\n state.runningHead = action.payload\n },\n setFXL: (state, action) => {\n state.isFXL = action.payload\n },\n setRTL: (state, action) => {\n state.isRTL = action.payload\n },\n setProgression: (state, action) => {\n state.progression = {...state.progression, ...action.payload }\n },\n setPositionsList: (state, action) => {\n state.positionsList = action.payload\n },\n setPublicationStart: (state, action) => {\n state.atPublicationStart = action.payload\n },\n setPublicationEnd: (state, action) => {\n state.atPublicationEnd = action.payload\n },\n setTocTree: (state, action) => {\n state.tocTree = action.payload;\n },\n setTocEntry: (state, action) => {\n state.tocEntry = action.payload;\n }\n }\n});\n\n// Action creators are generated for each case reducer function\nexport const { \n setRunningHead,\n setFXL,\n setRTL,\n setProgression,\n setPositionsList,\n setPublicationStart,\n setPublicationEnd,\n setTocTree, \n setTocEntry\n} = publicationSlice.actions;\n\nexport default publicationSlice.reducer;","import { ThDockingKeys } from \"@/preferences/models/enums\";\n\nimport { configureStore } from \"@reduxjs/toolkit\";\n\nimport readerReducer from \"@/lib/readerReducer\";\nimport settingsReducer from \"@/lib/settingsReducer\";\nimport themeReducer, { ThemeReducerState } from \"@/lib/themeReducer\";\nimport actionsReducer, { ActionsReducerState } from \"@/lib/actionsReducer\";\nimport publicationReducer from \"./publicationReducer\";\n\nimport debounce from \"debounce\";\n\nconst DEFAULT_STORAGE_KEY = \"thorium-web-state\";\n\n// TMP Migration\n// TODO: Remove this in the next major version\nconst migrateThemeState = (state: ThemeReducerState) => {\n if (typeof state.theme === \"string\") {\n return {\n ...state,\n theme: {\n reflow: state.theme,\n fxl: state.theme\n }\n };\n }\n return state;\n};\n\n\nconst updateActionsState = (state: ActionsReducerState) => {\n const updatedKeys = Object.fromEntries(\n Object.entries(state.keys).map(([key, value]) => [\n key,\n {\n ...value,\n isOpen: value?.docking === ThDockingKeys.transient || value?.docking == null && value?.isOpen === true ? false : value?.isOpen,\n },\n ])\n );\n\n return {\n ...state,\n keys: updatedKeys,\n overflow: {}\n };\n};\n\nconst loadState = (storageKey?: string) => {\n try {\n const resolvedKey = storageKey || DEFAULT_STORAGE_KEY;\n const serializedState = localStorage.getItem(resolvedKey);\n if (serializedState === null) {\n return { actions: undefined, settings: undefined, theming: undefined };\n }\n const deserializedState = JSON.parse(serializedState);\n deserializedState.actions = updateActionsState(deserializedState.actions);\n \n // TMP Migration\n // TODO: Remove this in the next major version\n deserializedState.theming = migrateThemeState(deserializedState.theming);\n\n return deserializedState;\n } catch (err) {\n return { actions: undefined, settings: undefined, theming: undefined };\n }\n};\n\nconst saveState = (state: object, storageKey?: string) => {\n try {\n const resolvedKey = storageKey || DEFAULT_STORAGE_KEY;\n const serializedState = JSON.stringify(state);\n localStorage.setItem(resolvedKey, serializedState);\n } catch (err) {\n console.error(err);\n }\n};\n\nexport const makeStore = (storageKey?: string) => {\n const store = configureStore({\n reducer: {\n reader: readerReducer,\n settings: settingsReducer,\n theming: themeReducer,\n actions: actionsReducer,\n publication: publicationReducer\n },\n preloadedState: {\n actions: loadState(storageKey).actions,\n settings: loadState(storageKey).settings,\n theming: loadState(storageKey).theming\n },\n });\n\n const saveStateDebounced = debounce(() => {\n saveState(store.getState(), storageKey);\n }, 250);\n\n store.subscribe(saveStateDebounced);\n\n return store;\n}\n\n// Infer the type of makeStore\nexport type AppStore = ReturnType<typeof makeStore>;\n// Infer the `RootState` and `AppDispatch` types from the store itself\nexport type RootState = ReturnType<AppStore[\"getState\"]>;\nexport type AppDispatch = AppStore[\"dispatch\"];","\"use client\";\n\nimport { useRef } from \"react\";\nimport { Provider } from \"react-redux\";\nimport { makeStore, AppStore } from \"./store\";\n\nexport function ThStoreProvider({\n storageKey,\n store,\n children\n}: {\n storageKey?: string,\n store?: AppStore,\n children: React.ReactNode\n}) {\n const storeRef = useRef<AppStore | null>(null);\n if (!storeRef.current) {\n storeRef.current = store || makeStore(storageKey);\n }\n\n return <Provider store={ storeRef.current }>{ children }</Provider>\n}\n\nexport default ThStoreProvider;","import { TypedUseSelectorHook, useDispatch, useSelector, useStore } from \"react-redux\";\nimport type { AppDispatch, AppStore, RootState } from \"./store\";\n\n// Use throughout your app instead of plain `useDispatch` and `useSelector`\nexport const useAppDispatch: () => AppDispatch = useDispatch;\nexport const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;\nexport const useAppStore: () => AppStore = useStore;"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/preferences/models/const.ts","../src/preferences/preferences.ts","../src/preferences/defaultPreferences.ts","../src/preferences/ThPreferencesContext.ts","../src/preferences/ThDirectionSetter.tsx","../src/preferences/ThPreferencesProvider.tsx","../src/preferences/helpers/buildThemeObject.ts","../src/preferences/hooks/usePreferences.ts","../src/preferences/hooks/usePreferenceKeys.ts","../src/preferences/hooks/useTheming.ts"],"names":["useEffect"],"mappings":";;;;;;;;;;AAQO,IAAM,uBAA2C,GAAA;AAAA,EACtD,UAAA,EAAA,WAAA;AAAA,EACA,QAAU,EAAA;AACZ;AAEO,IAAM,0BAA0B,CAA8B,YAAA;AAE9D,IAAM,2BAA8B,GAAA;AAAA,EAAA,YAAA;AAAA,EAAA,YAAA;AAAA,EAAA,WAAA;AAAA,EAAA,SAAA;AAAA,EAAA,eAAA;AAM3C;AAEO,IAAM,0BAA6B,GAAA;AAAA,EAAA,YAAA;AAE1C;AAEO,IAAM,8BAAiC,GAAA;AAAA,EAAA,iBAAA;AAAA,EAAA,YAAA;AAAA,EAAA,aAAA;AAAA,EAAA,eAAA;AAAA,EAAA,kBAAA;AAAA,EAAA,iBAAA;AAO9C;AAEO,IAAM,wBAA2B,GAAA;AAAA,EACtC,SAAW,EAAA,IAAA;AAAA,EACX,UAAU,UAAW,CAAA,cAAA;AAAA,EACrB,QAAQ,UAAW,CAAA,YAAA;AAAA,EACnB,MAAM,UAAW,CAAA,UAAA;AAAA,EACjB,UAAU,UAAW,CAAA,cAAA;AAAA,EACrB,WAAW,UAAW,CAAA;AACxB;AAEO,IAAM,eAAiD,GAAA;AAAA,EAC5D,OAAA,EAAA,aAAA;AAAA,EACA,KAAA,EAAO,CAAC,GAAA,EAAK,GAAG,CAAA;AAAA,EAChB,IAAM,EAAA;AACR;AAEO,IAAM,uBAAyD,GAAA;AAAA,EACpE,OAAA,EAAA,QAAA;AAAA,EACA,KAAA,EAAO,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACZ,IAAM,EAAA;AACR;AAEO,IAAM,sBAAwD,GAAA;AAAA,EACnE,OAAA,EAAA,QAAA;AAAA,EACA,KAAA,EAAO,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACZ,IAAM,EAAA;AACR;AAEO,IAAM,kBAAoD,GAAA;AAAA,EAC/D,OAAA,EAAA,aAAA;AAAA,EACA,KAAA,EAAO,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACZ,IAAM,EAAA;AACR;AAEO,IAAM,oBAAsD,GAAA;AAAA,EACjE,OAAA,EAAA,aAAA;AAAA,EACA,KAAA,EAAO,CAAC,CAAA,EAAG,GAAG,CAAA;AAAA,EACd,IAAM,EAAA;AACR;AAEO,IAAM,kBAAqB,GAAA;AAAA,EAChC,uBAA6B,IAAA;AAAA,EAC7B,yBAA8B,GAAA;AAAA,EAC9B,uBAA6B;AAC/B;;;ACsHa,IAAA,iBAAA,GAAoB,CAC/B,MACqB,KAAA;AAErB,EAAA,MAAM,qBAAqB,CACzB,WAAA,EACA,OACA,EAAA,OAAA,EACA,aACA,QACS,KAAA;AAET,IAAA,MAAM,YAAY,IAAI,GAAA;AAAA,MACpB,WAAA,CAAY,OAAQ,CAAA,CAAA,GAAA,KAAO,WAAc,GAAA,GAAA,CAAI,OAAO,CAAK,CAAA,KAAA,CAAA,KAAM,WAAW,CAAA,GAAI,GAAG;AAAA,KACnF;AAGA,IAAM,MAAA,aAAA,GAAgB,MAAO,CAAA,IAAA,CAAK,OAAO,CAAA;AAGzC,IAAA,SAAA,CAAU,QAAQ,CAAO,GAAA,KAAA;AACvB,MAAA,IAAI,CAAC,aAAA,CAAc,QAAS,CAAA,GAAG,CAAG,EAAA;AAChC,QAAA,IAAI,QAAU,EAAA;AAEZ,UAAA,OAAA,CAAQ,GAAG,CAAI,GAAA,QAAA;AAAA;AAEjB,QAAQ,OAAA,CAAA,IAAA,CAAK,QAAS,GAAI,CAAA,KAAA,EAAS,OAAQ,CAA+B,2BAAA,EAAA,OAAQ,SAAU,QAAW,GAAA;AAAA,gBAAA,EAAsB,KAAK,SAAU,CAAA,QAAQ,CAAE,CAAA,CAAA,GAAK,EAAG,CAAE,CAAA,CAAA;AAAA;AAClK,KACD,CAAA;AAAA,GACH;AAGA,EAAA,IAAI,OAAO,OAAS,EAAA;AAClB,IAAA,kBAAA;AAAA,MACE,CAAC,MAAO,CAAA,OAAA,CAAQ,WAAa,EAAA,MAAA,CAAO,QAAQ,QAAQ,CAAA;AAAA,MACpD,OAAO,OAAQ,CAAA,IAAA;AAAA,MACf,SAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KACF;AAAA;AAIF,EAAI,IAAA,MAAA,CAAO,SAAS,MAAQ,EAAA;AAC1B,IAAA,kBAAA;AAAA,MACE,CAAC,OAAO,OAAQ,CAAA,MAAA,CAAO,aAAa,MAAO,CAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA;AAAA,MAClE,MAAA,CAAO,QAAQ,MAAO,CAAA,IAAA;AAAA,MACtB,gBAAA;AAAA,MACA;AAAA;AAAA,KACF;AAAA;AAGF,EAAO,OAAA,MAAA;AACT;AC/NO,IAAM,qBAAqB,iBAAkB,CAAA;AAAA,EAClD,SAAA,EAAA,KAAA;AAAA,EACA,MAAQ,EAAA,IAAA;AAAA,EACR,UAAY,EAAA;AAAA,IACV,iBAAmB,EAAA,EAAA;AAAA;AAAA,IACnB,iBAAmB,EAAA,EAAA;AAAA;AAAA,IACnB,iBAAmB,EAAA,EAAA;AAAA;AAAA,IACnB,UAAY,EAAA,EAAA;AAAA;AAAA,IACZ,cAAA,EAAA,YAAA;AAAA,GACF;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,aAAA,EAAA,MAAA;AAAA,IACA,gBAAA,EAAA,MAAA;AAAA,IACA,MAAA,EAAA,KAAA;AAAA,GACF;AAAA,EACA,OAAS,EAAA;AAAA,IACP,KAAO,EAAA;AAAA,MACL,IAAM,EAAA,EAAA;AAAA;AAAA,MACN,MAAQ,EAAA;AAAA;AAAA,KACV;AAAA,IACA,IAAM,EAAA;AAAA,MACJ,IAAM,EAAA,EAAA;AAAA;AAAA,MACN,aAAe,EAAA;AAAA;AAAA,KACjB;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,EAAI,EAAA;AAAA,QACF,GAAA,EAAA,YAAA;AAAA,OACF;AAAA,MACA,MAAQ,EAAA,CAAA;AAAA;AAAA,MACR,OAAS,EAAA,EAAA;AAAA;AAAA,MACT,QAAU,EAAA;AAAA,QACR,YAAc,EAAA,GAAA;AAAA;AAAA,QACd,KAAO,EAAA;AAAA;AAAA,OACT;AAAA,MACA,WAAa,EAAA;AAAA,QACX,mCAA4B,GAAA;AAAA;AAAA,QAC5B,2BAAwB;AAAA;AAAA;AAC1B,KACF;AAAA,IACA,WAAa,EAAA;AAAA;AAAA,MAEX,2BAAyB,GAAA;AAAA;AAAA,MACzB,yBAAwB,GAAA;AAAA;AAAA,MACxB,6BAA0B,IAAA;AAAA;AAAA,MAC1B,uBAAuB,IAAA;AAAA;AAAA,MACvB,yBAAwB;AAAA;AAAA,KAC1B;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,WAAa,EAAA;AAAA,QACX,MAAA;AAAA,QAAA,OAAA;AAAA,QAAA,OAAA;AAAA,QAAA,OAAA;AAAA,QAAA,MAAA;AAAA,QAAA,WAAA;AAAA,QAAA,WAAA;AAAA,QAAA,WAAA;AAAA,OAQF;AAAA,MACA,QAAU,EAAA;AAAA,QACR,MAAA;AAAA,QAAA,OAAA;AAAA,QAAA,MAAA;AAAA,OAGF;AAAA,MACA,YAAc,EAAA;AAAA,QACZ,KAAA,EAAA,OAAA;AAAA,QACA,IAAA,EAAA,MAAA;AAAA,OACF;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,uBAAqB;AAAA,UACnB,YAAY,OAAQ,CAAA,mBAAA;AAAA;AAAA,UACpB,MAAM,OAAQ,CAAA,aAAA;AAAA;AAAA,UACd,IAAM,EAAA,SAAA;AAAA;AAAA,UACN,OAAS,EAAA,SAAA;AAAA;AAAA,UACT,MAAQ,EAAA,SAAA;AAAA;AAAA,UACR,OAAS,EAAA,SAAA;AAAA;AAAA,UACT,KAAO,EAAA,SAAA;AAAA;AAAA,UACP,SAAS,OAAQ,CAAA,aAAA;AAAA;AAAA,UACjB,MAAQ,EAAA,SAAA;AAAA;AAAA,UACR,QAAU,EAAA,SAAA;AAAA;AAAA,UACV,KAAO,EAAA,SAAA;AAAA;AAAA,UACP,OAAS,EAAA,qBAAA;AAAA;AAAA,UACT,OAAS,EAAA;AAAA;AAAA,SACX;AAAA,QACA,uBAAqB;AAAA,UACnB,YAAY,SAAU,CAAA,mBAAA;AAAA,UACtB,MAAM,SAAU,CAAA,aAAA;AAAA,UAChB,MAAM,SAAU,CAAA,aAAA;AAAA,UAChB,SAAS,SAAU,CAAA,gBAAA;AAAA,UACnB,MAAQ,EAAA,SAAA;AAAA,UACR,OAAS,EAAA,SAAA;AAAA,UACT,KAAO,EAAA,SAAA;AAAA,UACP,SAAS,SAAU,CAAA,aAAA;AAAA,UACnB,QAAQ,SAAU,CAAA,4BAAA;AAAA,UAClB,UAAU,SAAU,CAAA,sBAAA;AAAA,UACpB,KAAO,EAAA,SAAA;AAAA,UACP,OAAS,EAAA,qBAAA;AAAA,UACT,OAAS,EAAA;AAAA,SACX;AAAA,QACA,qBAAoB;AAAA,UAClB,YAAY,SAAU,CAAA,mBAAA;AAAA,UACtB,MAAM,SAAU,CAAA,aAAA;AAAA,UAChB,MAAM,SAAU,CAAA,aAAA;AAAA,UAChB,SAAS,SAAU,CAAA,gBAAA;AAAA,UACnB,MAAQ,EAAA,SAAA;AAAA,UACR,OAAS,EAAA,SAAA;AAAA,UACT,KAAO,EAAA,SAAA;AAAA,UACP,SAAS,SAAU,CAAA,aAAA;AAAA,UACnB,QAAQ,SAAU,CAAA,4BAAA;AAAA,UAClB,UAAU,SAAU,CAAA,sBAAA;AAAA,UACpB,KAAO,EAAA,SAAA;AAAA,UACP,OAAS,EAAA,qBAAA;AAAA,UACT,OAAS,EAAA;AAAA,SACX;AAAA,QACA,uBAAqB;AAAA,UACnB,UAAY,EAAA,SAAA;AAAA,UACZ,IAAM,EAAA,SAAA;AAAA,UACN,MAAM,SAAU,CAAA,aAAA;AAAA,UAChB,SAAS,SAAU,CAAA,gBAAA;AAAA,UACnB,MAAQ,EAAA,SAAA;AAAA,UACR,OAAS,EAAA,SAAA;AAAA,UACT,KAAO,EAAA,SAAA;AAAA,UACP,SAAS,SAAU,CAAA,aAAA;AAAA,UACnB,QAAQ,SAAU,CAAA,4BAAA;AAAA,UAClB,UAAU,SAAU,CAAA,sBAAA;AAAA,UACpB,KAAO,EAAA,SAAA;AAAA,UACP,OAAS,EAAA,qBAAA;AAAA,UACT,OAAS,EAAA;AAAA,SACX;AAAA,QACA,+BAAyB;AAAA,UACvB,UAAY,EAAA,SAAA;AAAA,UACZ,IAAM,EAAA,SAAA;AAAA,UACN,MAAM,SAAU,CAAA,aAAA;AAAA,UAChB,SAAS,SAAU,CAAA,gBAAA;AAAA,UACnB,MAAQ,EAAA,SAAA;AAAA,UACR,OAAS,EAAA,SAAA;AAAA,UACT,KAAO,EAAA,SAAA;AAAA,UACP,SAAS,SAAU,CAAA,aAAA;AAAA,UACnB,QAAQ,SAAU,CAAA,4BAAA;AAAA,UAClB,UAAU,SAAU,CAAA,sBAAA;AAAA,UACpB,KAAO,EAAA,SAAA;AAAA,UACP,OAAS,EAAA,qBAAA;AAAA,UACT,OAAS,EAAA;AAAA,SACX;AAAA,QACA,+BAAyB;AAAA,UACvB,UAAY,EAAA,SAAA;AAAA,UACZ,IAAM,EAAA,SAAA;AAAA,UACN,IAAM,EAAA,SAAA;AAAA,UACN,OAAS,EAAA,SAAA;AAAA,UACT,MAAQ,EAAA,SAAA;AAAA,UACR,OAAS,EAAA,SAAA;AAAA,UACT,KAAO,EAAA,SAAA;AAAA,UACP,SAAS,SAAU,CAAA,aAAA;AAAA,UACnB,QAAQ,SAAU,CAAA,4BAAA;AAAA,UAClB,UAAU,SAAU,CAAA,sBAAA;AAAA,UACpB,KAAO,EAAA,SAAA;AAAA,UACP,OAAS,EAAA,qBAAA;AAAA,UACT,OAAS,EAAA;AAAA,SACX;AAAA,QACA,+BAAyB;AAAA,UACvB,UAAY,EAAA,SAAA;AAAA,UACZ,IAAM,EAAA,SAAA;AAAA,UACN,MAAM,SAAU,CAAA,aAAA;AAAA,UAChB,SAAS,SAAU,CAAA,gBAAA;AAAA,UACnB,MAAQ,EAAA,SAAA;AAAA,UACR,OAAS,EAAA,SAAA;AAAA,UACT,KAAO,EAAA,SAAA;AAAA,UACP,SAAS,SAAU,CAAA,aAAA;AAAA,UACnB,QAAQ,SAAU,CAAA,4BAAA;AAAA,UAClB,UAAU,SAAU,CAAA,sBAAA;AAAA,UACpB,KAAO,EAAA,SAAA;AAAA,UACP,OAAS,EAAA,qBAAA;AAAA,UACT,OAAS,EAAA;AAAA;AACX;AACF;AACF,GACF;AAAA,EACA,SAAW,EAAA;AAAA,IACT,cAAA,EAAA,QAAA;AAAA,IACA,MAAQ,EAAA;AAAA,GACV;AAAA,EACA,OAAS,EAAA;AAAA,IACP,WAAa,EAAA;AAAA,MAAA,UAAA;AAAA,MAAA,KAAA;AAAA,MAAA,YAAA;AAAA,MAAA,gBAAA;AAAA,KAKb;AAAA,IACA,QAAU,EAAA;AAAA,MAAA,UAAA;AAAA,MAAA,KAAA;AAAA,MAAA,YAAA;AAAA,MAAA,gBAAA;AAAA,KAKV;AAAA,IACA,QAAU,EAAA;AAAA;AAAA;AAAA;AAAA,MAIR,2BAAyB,CAAA;AAAA,MACzB,yBAAwB;AAAA,KAC1B;AAAA,IACA,IAAM,EAAA;AAAA,MACJ,6BAA0B;AAAA,QACxB,UAAA,EAAA,WAAA;AAAA,QACA,QAAU,EAAA,IAAA;AAAA;AAAA,QACV,KAAO,EAAA;AAAA,UACL,YAAA,EAAA,SAAA;AAAA,UACA,WAAa,EAAA;AAAA,YACX,CAAsB,SAAA,iBAAA,aAAA;AAAA;AACxB,SACF;AAAA,QACA,MAAQ,EAAA;AAAA,UACN,QAAA,EAAA,MAAA;AAAA,UACA,KAAO,EAAA;AAAA,SACT;AAAA,QACA,OAAS,EAAA;AAAA,UACP,KAAO,EAAA,IAAA;AAAA,UACP,UAAY,EAAA,EAAA;AAAA,UACZ,SAAW,EAAA,EAAA;AAAA,UACX,SAAW,EAAA;AAAA;AACb,OACF;AAAA,MACA,iCAA4B;AAAA,QAC1B,UAAA,EAAA,WAAA;AAAA,QACA,QAAU,EAAA;AAAA,OACZ;AAAA,MACA,mBAAqB;AAAA,QACnB,UAAA,EAAA,WAAA;AAAA,QACA,QAAU,EAAA,IAAA;AAAA;AAAA,QACV,KAAO,EAAA;AAAA,UACL,YAAA,EAAA,SAAA;AAAA,UACA,WAAa,EAAA;AAAA,YACX,CAAsB,SAAA,iBAAA,YAAA;AAAA,YACtB,CAAqB,QAAA,gBAAA,YAAA;AAAA;AACvB,SACF;AAAA,QACA,MAAQ,EAAA;AAAA,UACN,QAAA,EAAA,MAAA;AAAA,UACA,aAAe,EAAA,KAAA;AAAA,UACf,KAAO,EAAA,GAAA;AAAA,UACP,QAAU,EAAA,GAAA;AAAA,UACV,QAAU,EAAA;AAAA;AACZ,OACF;AAAA,MACA,yCAAgC;AAAA,QAC9B,UAAA,EAAA,UAAA;AAAA,QACA,QAAU,EAAA,IAAA;AAAA;AAAA,QACV,KAAO,EAAA;AAAA,UACL,YAAA,EAAA,SAAA;AAAA,UACA,WAAa,EAAA;AAAA,YACX,CAAsB,SAAA,iBAAA,aAAA;AAAA;AACxB,SACF;AAAA,QACA,MAAQ,EAAA;AAAA,UACN,QAAA,EAAA,MAAA;AAAA,SACF;AAAA,QACA,OAAS,EAAA;AAAA,UACP,KAAO,EAAA,IAAA;AAAA,UACP,SAAW,EAAA;AAAA;AACb;AACF;AACF,GACF;AAAA,EACA,OAAS,EAAA;AAAA,IACP,YAAc,EAAA;AAAA,MAAA,kBAAA;AAAA,MAAA,cAAA;AAAA,MAAA,YAAA;AAAA,KAId;AAAA,IACA,IAAM,EAAA;AAAA,MACJ,CAAsB,SAAA,iBAAA,MAAA;AAAA,MACtB,CAAqB,QAAA,gBAAA,MAAA;AAAA,MACrB,CAAuB,UAAA,kBAAA,OAAA;AAAA,MACvB,CAAoB,OAAA,eAAA,MAAA;AAAA,MACpB,CAAqB,QAAA,gBAAA,MAAA;AAAA,KACvB;AAAA,IACA,QAAU,EAAA,IAAA;AAAA,IACV,IAAM,EAAA;AAAA,MACJ,8BAAuB;AAAA,QACrB,UAAA,EAAA,UAAA;AAAA,QACA,QAAU,EAAA;AAAA,OACZ;AAAA,MACA,0BAAqB;AAAA,QACnB,UAAA,EAAA,UAAA;AAAA,QACA,QAAU,EAAA;AAAA,OACZ;AAAA,MACA,sCAA2B;AAAA,QACzB,UAAA,EAAA,UAAA;AAAA,QACA,QAAU,EAAA;AAAA;AACZ;AACF,GACF;AAAA,EACA,QAAU,EAAA;AAAA,IACR,WAAa,EAAA;AAAA,MAAA,MAAA;AAAA,MAAA,WAAA;AAAA,MAAA,OAAA;AAAA,MAAA,cAAA;AAAA,MAAA,QAAA;AAAA,MAAA,SAAA;AAAA,KAOb;AAAA,IACA,QAAU,EAAA;AAAA,MAAA,OAAA;AAAA,MAAA,SAAA;AAAA,KAGV;AAAA,IACA,IAAM,EAAA;AAAA,MACJ,iCAA6B;AAAA,QAC3B,uBAA6B,GAAA;AAAA,QAC7B,yBAA8B,GAAA;AAAA,QAC9B,uBAA6B;AAAA,OAC/B;AAAA,MACA,qBAAuB;AAAA,QACrB,KAAA,EAAO,CAAC,GAAA,EAAK,GAAG,CAAA;AAAA,QAChB,IAAM,EAAA;AAAA;AACR,KACF;AAAA,IACA,IAAM,EAAA;AAAA,MACJ,MAAA,EAAA,UAAA;AAAA,MACA,QAAU,EAAA;AAAA,QAAA,YAAA;AAAA,QAAA,YAAA;AAAA,QAAA,WAAA;AAAA,QAAA,SAAA;AAAA,QAAA,eAAA;AAAA;AAMV,KACF;AAAA,IACA,OAAS,EAAA;AAAA,MACP,MAAA,EAAA,UAAA;AAAA;AACF;AAEJ,CAAC;;;AC7VY,IAAA,oBAAA,GAAuB,cAAkC,kBAAkB;ACDjF,IAAM,oBAAoB,CAAC;AAAA,EAChC,SAAA;AAAA,EACA;AACF,CAGM,KAAA;AAEJ,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,SAAA,EAAoB,QAAA,CAAA,eAAA,CAAgB,GAAM,GAAA,SAAA;AAAA,GAChD,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAO,OAAA,QAAA;AACT,CAAA;ACVO,SAAS,qBAA2D,CAAA;AAAA,EACzE,KAAA;AAAA,EACA;AACF,CAGG,EAAA;AACD,EAAM,MAAA,YAAA,GAAe,QAAQ,MAAM;AACjC,IAAA,OAAO,KAAS,IAAA,kBAAA;AAAA,GAClB,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,uBACG,GAAA,CAAA,oBAAA,CAAqB,QAArB,EAAA,EAA8B,KAAQ,EAAA,YAAA,EACrC,QAAC,kBAAA,GAAA,CAAA,iBAAA,EAAA,EAAkB,SAAY,EAAA,YAAA,CAAa,SACxC,EAAA,QAAA,EACJ,CACF,EAAA,CAAA;AAEJ;;;ACZO,IAAM,mBAAmB,CAAmB;AAAA,EACjD,KAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAA0B,KAAA;AACxB,EAAA,IAAI,CAAC,KAAO,EAAA;AACV,IAAA,OAAO,EAAC;AAAA;AAGV,EAAI,IAAA,KAAA,KAAU,MAAU,IAAA,WAAA,IAAe,YAAc,EAAA;AACnD,IAAQ,KAAA,GAAA,WAAA,KAAA,MAAA,cAAqC,YAAa,CAAA,IAAA,GAAO,YAAa,CAAA,KAAA;AAAA;AAGhF,EAAA,IAAI,aAAa,EAAC;AAElB,EAAM,MAAA,UAAA,GAAa,UAAU,KAAU,CAAA;AACvC,EAAA,IAAI,UAAY,EAAA;AACd,IAAa,UAAA,GAAA;AAAA,MACX,iBAAiB,UAAW,CAAA,UAAA;AAAA,MAC5B,WAAW,UAAW,CAAA,IAAA;AAAA,MACtB,WAAW,UAAW,CAAA,IAAA;AAAA,MACtB,0BAA0B,UAAW,CAAA,MAAA;AAAA,MACrC,oBAAoB,UAAW,CAAA,QAAA;AAAA,MAC/B,cAAc,UAAW,CAAA;AAAA,KAC3B;AAAA,GACK,MAAA;AAEL,IAAA,OAAA,CAAQ,IAAK,CAAA,CAAA,WAAA,EAAc,MAAO,CAAA,KAAK,CAAC,CAA2B,yBAAA,CAAA,CAAA;AACnE,IAAa,UAAA,GAAA;AAAA,MACX,eAAiB,EAAA,IAAA;AAAA,MACjB,SAAW,EAAA,IAAA;AAAA,MACX,SAAW,EAAA,IAAA;AAAA,MACX,wBAA0B,EAAA,IAAA;AAAA,MAC1B,kBAAoB,EAAA,IAAA;AAAA,MACpB,YAAc,EAAA;AAAA,KAChB;AAAA;AAGF,EAAO,OAAA,UAAA;AACT;AClDa,IAAA,cAAA,GAAiB,MAAM,UAAA,CAAW,oBAAoB;;;ACW5D,SAAS,iBAAyD,GAAA;AACvE,EAAA,MAAM,cAAc,cAAe,EAAA;AAGnC,EAAO,OAAA;AAAA,IACL,gBAAA,EAAkB,YAAY,OAAQ,CAAA,WAAA;AAAA,IACtC,aAAA,EAAe,YAAY,OAAQ,CAAA,QAAA;AAAA,IACnC,eAAA,EAAiB,WAAY,CAAA,OAAA,CAAQ,MAAO,CAAA,WAAA;AAAA,IAC5C,YAAA,EAAc,WAAY,CAAA,OAAA,CAAQ,MAAO,CAAA,QAAA;AAAA,IACzC,kBAAA,EAAoB,YAAY,QAAS,CAAA,WAAA;AAAA,IACzC,eAAA,EAAiB,YAAY,QAAS,CAAA,QAAA;AAAA,IACtC,oBAAsB,EAAA,WAAA,CAAY,QAAS,CAAA,IAAA,EAAM,QAA2G,EAAC;AAAA,IAC7J,wBAA0B,EAAA,WAAA,CAAY,QAAS,CAAA,IAAA,EAAM,YAA+G,EAAC;AAAA,IACrK,uBAAyB,EAAA,WAAA,CAAY,QAAS,CAAA,OAAA,EAAS,QAAoH,EAAC;AAAA,IAC5K,2BAA6B,EAAA,WAAA,CAAY,QAAS,CAAA,OAAA,EAAS,YAAwH,EAAC;AAAA;AAAA,IAGpL,iBAAA,EAAmB,CAAmB,GAAoF,KAAA,GAAA;AAAA,IAC1H,cAAA,EAAgB,CAAmB,GAAoF,KAAA,GAAA;AAAA,IACvH,gBAAA,EAAkB,CAAmB,GAAkG,KAAA,GAAA;AAAA,IACvI,aAAA,EAAe,CAAmB,GAAkG,KAAA,GAAA;AAAA,IACpI,mBAAA,EAAqB,CAAmB,GAAyF,KAAA,GAAA;AAAA,IACjI,gBAAA,EAAkB,CAAmB,GAAyF,KAAA,GAAA;AAAA,IAC9H,qBAAA,EAAuB,CAAmB,GAAqG,KAAA,GAAA;AAAA,IAC/I,yBAAA,EAA2B,CAAmB,GAAqG,KAAA,GAAA;AAAA,IACnJ,wBAAA,EAA0B,CAAmB,GAA8G,KAAA,GAAA;AAAA,IAC3J,4BAAA,EAA8B,CAAmB,GAA8G,KAAA;AAAA,GACjK;AACF;ACSO,IAAM,aAAa,CAAmB;AAAA,EAC3C,KAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,qBAAA;AAAA,EACA;AACF,CAA0B,KAAA;AACxB,EAAM,MAAA,WAAA,GAAc,cAAe,CAAA,cAAA,EAAgB,kBAAkB,CAAA;AACrE,EAAM,MAAA,WAAA,GAAc,eAAe,mBAAmB,CAAA;AACtD,EAAM,MAAA,cAAA,GAAiB,OAAO,WAAW,CAAA;AACzC,EAAM,MAAA,QAAA,GAAW,YAAY,gBAAgB,CAAA;AAC7C,EAAM,MAAA,YAAA,GAAe,gBAAgB,oBAAoB,CAAA;AACzD,EAAM,MAAA,UAAA,GAAa,cAAc,kBAAkB,CAAA;AACnD,EAAM,MAAA,aAAA,GAAgB,iBAAiB,qBAAqB,CAAA;AAC5D,EAAM,MAAA,mBAAA,GAAsB,uBAAuB,2BAA2B,CAAA;AAE9E,EAAM,MAAA,cAAA,GAAiB,YAAY,MAAM;AACvC,IAAA,OAAO,cAAe,CAAA,OAAA,KAAA,MAAA,cAAiC,UAAY,EAAA,IAAA,GAAO,UAAY,EAAA,KAAA;AAAA,GACxF,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAM,MAAA,sBAAA,GAAyB,YAAY,MAAM;AAC/C,IAAA,KAAA,IAAS,KAAK,SAAW,EAAA;AACvB,MAAA,QAAA,CAAS,gBAAgB,KAAM,CAAA,WAAA,CAAY,CAAG,EAAA,SAAA,CAAU,CAAC,CAAC,CAAA;AAAA;AAC5D,GACF,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAM,MAAA,mBAAA,GAAsB,WAAY,CAAA,CAAC,CAAe,KAAA;AACtD,IAAA,IAAI,CAAC,CAAG,EAAA;AACN,MAAA;AAAA;AAGF,IAAA,IAAI,MAAM,MAAQ,EAAA;AAChB,MAAA,MAAM,YAAY,cAAe,EAAA;AACjC,MAAA,IAAI,CAAC,SAAW,EAAA;AAId,QAAA;AAAA;AAEF,MAAI,CAAA,GAAA,SAAA;AAAA;AAGN,IAAM,MAAA,WAAA,GAAc,UAAU,CAAM,CAAA;AACpC,IAAA,IAAI,CAAC,WAAa,EAAA;AAIhB,MAAA;AAAA;AAGF,IAAM,MAAA,KAAA,GAAQ,cAAe,CAAA,WAAA,EAAa,OAAO,CAAA;AAEjD,IAAA,KAAA,IAAS,KAAK,KAAO,EAAA;AACnB,MAAA,QAAA,CAAS,gBAAgB,KAAM,CAAA,WAAA,CAAY,CAAG,EAAA,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA;AACxD,GACC,EAAA,CAAC,cAAgB,EAAA,SAAS,CAAC,CAAA;AAG9B,EAAAA,UAAU,MAAM;AACd,IAAuB,sBAAA,EAAA;AAAA,GACzB,EAAG,CAAC,sBAAsB,CAAC,CAAA;AAG3B,EAAAA,UAAU,MAAM;AACd,IAAA,cAAA,CAAe,OAAU,GAAA,WAAA;AACzB,IAAA,mBAAA,CAAoB,KAAK,CAAA;AAAA,GACxB,EAAA,CAAC,mBAAqB,EAAA,KAAA,EAAO,WAAW,CAAC,CAAA;AAE5C,EAAO,OAAA;AAAA,IACL,cAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF;AACF","file":"chunk-PGZF5NO2.mjs","sourcesContent":["\"use client\";\n\nimport fontStacks from \"@readium/css/css/vars/fontStacks.json\";\n\nimport { ThLineHeightOptions, ThSettingsRangeVariant, ThSpacingSettingsKeys, ThTextSettingsKeys } from \"./enums\";\nimport { ThActionsTokens, ThSettingsRangePref } from \"../preferences\";\nimport { ThCollapsibilityVisibility } from \"@/core/Components/Actions/hooks/useCollapsibility\";\n\nexport const defaultActionKeysObject: ThActionsTokens = {\n visibility: ThCollapsibilityVisibility.partially,\n shortcut: null\n};\n\nexport const defaultTextSettingsMain = [ThTextSettingsKeys.fontFamily];\n\nexport const defaultTextSettingsSubpanel = [\n ThTextSettingsKeys.fontFamily,\n ThTextSettingsKeys.fontWeight,\n ThTextSettingsKeys.textAlign,\n ThTextSettingsKeys.hyphens,\n ThTextSettingsKeys.textNormalize\n]\n\nexport const defaultSpacingSettingsMain = [\n ThSpacingSettingsKeys.lineHeight\n];\n\nexport const defaultSpacingSettingsSubpanel = [\n ThSpacingSettingsKeys.publisherStyles,\n ThSpacingSettingsKeys.lineHeight,\n ThSpacingSettingsKeys.wordSpacing,\n ThSpacingSettingsKeys.letterSpacing,\n ThSpacingSettingsKeys.paragraphSpacing,\n ThSpacingSettingsKeys.paragraphIndent\n]\n\nexport const defaultFontFamilyOptions = {\n publisher: null,\n oldStyle: fontStacks.RS__oldStyleTf,\n modern: fontStacks.RS__modernTf,\n sans: fontStacks.RS__sansTf,\n humanist: fontStacks.RS__humanistTf,\n monospace: fontStacks.RS__monospaceTf\n}\n\nexport const defaultFontSize: Required<ThSettingsRangePref> = {\n variant: ThSettingsRangeVariant.numberField,\n range: [0.7, 2.5],\n step: 0.05\n}\n\nexport const defaultParagraphSpacing: Required<ThSettingsRangePref> = {\n variant: ThSettingsRangeVariant.slider,\n range: [0, 3],\n step: 0.5\n}\n\nexport const defaultParagraphIndent: Required<ThSettingsRangePref> = {\n variant: ThSettingsRangeVariant.slider,\n range: [0, 2],\n step: 0.25\n}\n\nexport const defaultWordSpacing: Required<ThSettingsRangePref> = {\n variant: ThSettingsRangeVariant.numberField,\n range: [0, 1],\n step: 0.1\n}\n\nexport const defaultLetterSpacing: Required<ThSettingsRangePref> = {\n variant: ThSettingsRangeVariant.numberField,\n range: [0, 0.5],\n step: 0.05\n}\n\nexport const defaultLineHeights = {\n [ThLineHeightOptions.small]: 1.25,\n [ThLineHeightOptions.medium]: 1.5,\n [ThLineHeightOptions.large]: 1.75\n}","import { UnstableShortcutRepresentation } from \"@/core/Helpers/keyboardUtilities\";\nimport { BreakpointsMap } from \"@/core/Hooks/useBreakpoints\";\nimport { ThemeTokens } from \"@/preferences/hooks/useTheming\";\nimport { \n ThActionsKeys,\n ThDockingKeys,\n ThDockingTypes,\n ThLineHeightOptions, \n ThScrollAffordancePref, \n ThScrollBackTo, \n ThSettingsKeys, \n ThSettingsRangeVariant, \n ThSheetHeaderVariant, \n ThSheetTypes, \n ThSpacingSettingsKeys, \n ThTextSettingsKeys, \n ThThemeKeys, \n ThLayoutDirection, \n ThLayoutStrategy, \n ThLayoutUI\n} from \"./models/enums\";\nimport { ThCollapsibility, ThCollapsibilityVisibility } from \"@/core/Components/Actions/hooks/useCollapsibility\";\nimport { defaultActionKeysObject } from \"./models\";\n\nexport type ThBottomSheetDetent = \"content-height\" | \"full-height\";\n\nexport interface ThActionsSnappedPref {\n scrim?: boolean | string;\n maxWidth?: number | null;\n maxHeight?: number | ThBottomSheetDetent;\n peekHeight?: number | ThBottomSheetDetent;\n minHeight?: number | ThBottomSheetDetent;\n}\n\nexport interface ThActionsDockedPref {\n dockable: ThDockingTypes,\n dragIndicator?: boolean,\n width?: number,\n minWidth?: number,\n maxWidth?: number\n}\n\nexport interface ThActionsTokens {\n visibility: ThCollapsibilityVisibility;\n shortcut: string | null;\n sheet?: {\n defaultSheet: Exclude<ThSheetTypes, ThSheetTypes.dockedStart | ThSheetTypes.dockedEnd>;\n breakpoints: BreakpointsMap<ThSheetTypes>;\n };\n docked?: ThActionsDockedPref;\n snapped?: ThActionsSnappedPref;\n};\n\nexport interface ThActionsPref<T extends string> {\n reflowOrder: T[];\n fxlOrder: T[];\n collapse: ThCollapsibility;\n keys: {\n [key in T]: ThActionsTokens;\n }\n};\n\nexport interface ThDockingPref<T extends string> {\n displayOrder: T[];\n collapse: ThCollapsibility;\n dock: BreakpointsMap<ThDockingTypes> | boolean; \n keys: {\n [key in T]: Pick<ThActionsTokens, \"visibility\" | \"shortcut\">;\n }\n};\n\nexport interface ThSettingsGroupPref<T> {\n main?: T[];\n subPanel?: T[] | null;\n header?: ThSheetHeaderVariant;\n}\n\nexport interface ThSettingsRangePref {\n variant?: ThSettingsRangeVariant;\n range?: [number, number];\n step?: number;\n}\n\nexport type ThSettingsKeyTypes = {\n [ThSettingsKeys.letterSpacing]?: ThSettingsRangePref;\n [ThSettingsKeys.lineHeight]?: {\n [key in Exclude<ThLineHeightOptions, ThLineHeightOptions.publisher>]: number\n };\n [ThSettingsKeys.paragraphIndent]?: ThSettingsRangePref;\n [ThSettingsKeys.paragraphSpacing]?: ThSettingsRangePref;\n [ThSettingsKeys.wordSpacing]?: ThSettingsRangePref;\n [ThSettingsKeys.zoom]?: ThSettingsRangePref;\n}\n\nexport type ThConstraintKeys = Extract<ThSheetTypes, ThSheetTypes.bottomSheet | ThSheetTypes.popover>;\n\n// Simplified type for customizable keys\nexport type CustomKeyType = string;\n\nexport interface CustomizableKeys {\n actionKeys: CustomKeyType;\n themeKeys: CustomKeyType;\n settingsKeys: CustomKeyType;\n textSettingsKeys: CustomKeyType;\n spacingSettingsKeys: CustomKeyType;\n constraintsKeys: CustomKeyType;\n customSettingsKeyTypes: Record<string, unknown>;\n}\n\n// Default keys with standard enum values\nexport interface DefaultKeys {\n actionKeys: ThActionsKeys;\n themeKeys: ThThemeKeys;\n settingsKeys: ThSettingsKeys;\n textSettingsKeys: ThTextSettingsKeys;\n spacingSettingsKeys: ThSpacingSettingsKeys;\n constraintsKeys: ThConstraintKeys;\n customSettingsKeyTypes: ThSettingsKeyTypes;\n}\n\n// Type helper for key arrays and objects\nexport type KeysOf<T, D> = T extends CustomKeyType ? T : D;\n\n// Main preferences interface with simplified generics\nexport interface ThPreferences<T extends Partial<CustomizableKeys> = {}> {\n direction?: ThLayoutDirection;\n locale?: string;\n typography: {\n minimalLineLength?: number | null;\n maximalLineLength?: number | null;\n optimalLineLength: number;\n pageGutter: number;\n layoutStrategy?: ThLayoutStrategy | null;\n };\n scroll: {\n topAffordance: ThScrollAffordancePref;\n bottomAffordance: ThScrollAffordancePref;\n backTo: ThScrollBackTo;\n };\n theming: {\n arrow: {\n size: number;\n offset: number;\n tooltipDelay?: number;\n };\n icon: {\n size: number;\n tooltipOffset: number;\n tooltipDelay?: number;\n };\n layout: {\n ui?: {\n fxl: ThLayoutUI\n };\n radius: number;\n spacing: number;\n defaults: {\n dockingWidth: number;\n scrim: string;\n };\n constraints?: {\n [key in KeysOf<T[\"constraintsKeys\"], ThConstraintKeys>]?: number\n }\n };\n breakpoints: BreakpointsMap<number | null>;\n themes: {\n reflowOrder: Array<KeysOf<T[\"themeKeys\"], ThThemeKeys> | \"auto\">;\n fxlOrder: Array<KeysOf<T[\"themeKeys\"], ThThemeKeys> | \"auto\">;\n systemThemes?: {\n light: KeysOf<T[\"themeKeys\"], ThThemeKeys>;\n dark: KeysOf<T[\"themeKeys\"], ThThemeKeys>;\n };\n keys: {\n [key in KeysOf<T[\"themeKeys\"], ThThemeKeys>]: ThemeTokens;\n };\n };\n };\n actions: ThActionsPref<KeysOf<T[\"actionKeys\"], ThActionsKeys>>;\n shortcuts: {\n representation: UnstableShortcutRepresentation;\n joiner?: string;\n };\n docking: ThDockingPref<ThDockingKeys>;\n settings: {\n reflowOrder: Array<KeysOf<T[\"settingsKeys\"], ThSettingsKeys>>;\n fxlOrder: Array<KeysOf<T[\"settingsKeys\"], ThSettingsKeys>>;\n keys?: T[\"customSettingsKeyTypes\"] | ThSettingsKeyTypes;\n text?: ThSettingsGroupPref<KeysOf<T[\"textSettingsKeys\"], ThTextSettingsKeys>>;\n spacing?: ThSettingsGroupPref<KeysOf<T[\"spacingSettingsKeys\"], ThSpacingSettingsKeys>>;\n };\n}\n\n/**\n * Creates a new preferences object with the provided parameters\n * @param params The preferences object to create\n * @returns A new preferences object\n */\nexport const createPreferences = <T extends Partial<CustomizableKeys>>(\n params: ThPreferences<T>\n): ThPreferences<T> => {\n // Helper function to validate keys against the provided order arrays\n const validateObjectKeys = <K extends string, V>(\n orderArrays: K[][],\n keysObj: Record<string, V>,\n context: string,\n specialCase?: string,\n fallback?: V\n ): void => {\n // Combine all arrays and filter out special cases if needed\n const allOrders = new Set<K>(\n orderArrays.flatMap(arr => specialCase ? arr.filter(k => k !== specialCase) : arr)\n );\n \n // Get available keys\n const availableKeys = Object.keys(keysObj);\n \n // Check that all keys exist and add from fallback if available\n allOrders.forEach(key => {\n if (!availableKeys.includes(key)) {\n if (fallback) {\n // Add the missing key from fallback to the params object\n keysObj[key] = fallback;\n }\n console.warn(`Key \"${ key }\" in ${ context } order arrays not found in ${ context }.keys.${ fallback ? `\\nUsing fallback: ${ JSON.stringify(fallback) }` : \"\" }`);\n }\n });\n };\n \n // Validate actions\n if (params.actions) {\n validateObjectKeys<KeysOf<T[\"actionKeys\"], ThActionsKeys>, ThActionsTokens>(\n [params.actions.reflowOrder, params.actions.fxlOrder],\n params.actions.keys as Record<string, ThActionsTokens>,\n \"actions\",\n undefined,\n defaultActionKeysObject as ThActionsTokens\n );\n }\n \n // Validate themes\n if (params.theming?.themes) {\n validateObjectKeys<KeysOf<T[\"themeKeys\"], ThThemeKeys> | \"auto\", ThemeTokens>(\n [params.theming.themes.reflowOrder, params.theming.themes.fxlOrder],\n params.theming.themes.keys as Record<string, ThemeTokens>,\n \"theming.themes\",\n \"auto\" // Special case for themes\n );\n }\n \n return params;\n};\n\n// Simplified type helpers\nexport type ActionKeyType = ThActionsKeys | CustomKeyType;\nexport type ThemeKeyType = ThThemeKeys | CustomKeyType;\nexport type SettingsKeyType = ThSettingsKeys | CustomKeyType;\nexport type TextSettingsKeyType = ThTextSettingsKeys | CustomKeyType;\nexport type SpacingSettingsKeyType = ThSpacingSettingsKeys | CustomKeyType;","\"use client\";\n\nimport { UnstableShortcutMetaKeywords, UnstableShortcutRepresentation } from \"@/core/Helpers/keyboardUtilities\";\nimport { ThCollapsibilityVisibility } from \"@/core/Components/Actions/hooks/useCollapsibility\";\nimport { \n ThActionsKeys, \n ThBreakpoints, \n ThDockingTypes, \n ThDockingKeys, \n ThScrollAffordancePref, \n ThScrollBackTo, \n ThSettingsKeys, \n ThSheetTypes, \n ThThemeKeys, \n ThLayoutDirection,\n ThLayoutStrategy,\n ThLineHeightOptions,\n ThTextSettingsKeys,\n ThSheetHeaderVariant,\n ThLayoutUI\n} from \"./models/enums\";\nimport { createPreferences } from \"./preferences\";\n\nimport dayMode from \"@readium/css/css/vars/day.json\";\nimport sepiaMode from \"@readium/css/css/vars/sepia.json\";\nimport nightMode from \"@readium/css/css/vars/night.json\";\n\nexport const defaultPreferences = createPreferences({\n direction: ThLayoutDirection.ltr,\n locale: \"en\",\n typography: {\n minimalLineLength: 40, // undefined | null | number of characters. If 2 cols will switch to 1 based on this\n optimalLineLength: 65, // number of characters. If auto layout, picks colCount based on this\n maximalLineLength: 75, // undefined | null | number of characters.\n pageGutter: 20, // body padding in px\n layoutStrategy: ThLayoutStrategy.lineLength\n },\n scroll: {\n topAffordance: ThScrollAffordancePref.none,\n bottomAffordance: ThScrollAffordancePref.both,\n backTo: ThScrollBackTo.top\n },\n theming: {\n arrow: {\n size: 40, // Size of the left and right arrows in px\n offset: 5 // offset of the arrows from the edges in px\n },\n icon: {\n size: 24, // Size of icons in px\n tooltipOffset: 10 // offset of tooltip in px\n },\n layout: {\n ui: {\n fxl: ThLayoutUI.layered\n },\n radius: 5, // border-radius of containers\n spacing: 20, // padding of containers/sheets\n defaults: {\n dockingWidth: 340, // default width of resizable panels\n scrim: \"rgba(0, 0, 0, 0.2)\" // default scrim/underlay bg-color\n },\n constraints: {\n [ThSheetTypes.bottomSheet]: 600, // Max-width of all bottom sheets\n [ThSheetTypes.popover]: 600 // Max-width of all popover sheets\n }\n },\n breakpoints: {\n // See https://m3.material.io/foundations/layout/applying-layout/window-size-classes\n [ThBreakpoints.compact]: 600, // Phone in portrait\n [ThBreakpoints.medium]: 840, // Tablet in portrait, Foldable in portrait (unfolded)\n [ThBreakpoints.expanded]: 1200, // Phone in landscape, Tablet in landscape, Foldable in landscape (unfolded), Desktop\n [ThBreakpoints.large]: 1600, // Desktop\n [ThBreakpoints.xLarge]: null // Desktop Ultra-wide\n },\n themes: {\n reflowOrder: [\n \"auto\", \n ThThemeKeys.light, \n ThThemeKeys.sepia, \n ThThemeKeys.paper, \n ThThemeKeys.dark, \n ThThemeKeys.contrast1, \n ThThemeKeys.contrast2, \n ThThemeKeys.contrast3\n ],\n fxlOrder: [\n \"auto\",\n ThThemeKeys.light,\n ThThemeKeys.dark\n ],\n systemThemes: {\n light: ThThemeKeys.light,\n dark: ThThemeKeys.dark\n },\n keys: {\n [ThThemeKeys.light]: {\n background: dayMode.RS__backgroundColor, // Color of background\n text: dayMode.RS__textColor, // Color of text\n link: \"#0000ee\", // Color of links\n visited: \"#551a8b\", // Color of visited links\n subdue: \"#808080\", // Color of subdued elements\n disable: \"#808080\", // color for :disabled\n hover: \"#d9d9d9\", // color of background for :hover\n onHover: dayMode.RS__textColor, // color of text for :hover\n select: \"#b4d8fe\", // color of selected background\n onSelect: \"inherit\", // color of selected text\n focus: \"#0067f4\", // color of :focus-visible\n elevate: \"0px 0px 2px #808080\", // drop shadow of containers\n immerse: \"0.6\" // opacity of immersive mode\n },\n [ThThemeKeys.sepia]: {\n background: sepiaMode.RS__backgroundColor,\n text: sepiaMode.RS__textColor,\n link: sepiaMode.RS__linkColor,\n visited: sepiaMode.RS__visitedColor,\n subdue: \"#8c8c8c\",\n disable: \"#8c8c8c\",\n hover: \"#edd7ab\",\n onHover: sepiaMode.RS__textColor,\n select: sepiaMode.RS__selectionBackgroundColor,\n onSelect: sepiaMode.RS__selectionTextColor,\n focus: \"#0067f4\",\n elevate: \"0px 0px 2px #8c8c8c\",\n immerse: \"0.5\"\n },\n [ThThemeKeys.dark]: {\n background: nightMode.RS__backgroundColor,\n text: nightMode.RS__textColor,\n link: nightMode.RS__linkColor,\n visited: nightMode.RS__visitedColor,\n subdue: \"#808080\",\n disable: \"#808080\",\n hover: \"#404040\",\n onHover: nightMode.RS__textColor,\n select: nightMode.RS__selectionBackgroundColor,\n onSelect: nightMode.RS__selectionTextColor,\n focus: \"#0067f4\",\n elevate: \"0px 0px 2px #808080\",\n immerse: \"0.4\"\n },\n [ThThemeKeys.paper]: {\n background: \"#e9ddc8\",\n text: \"#000000\",\n link: sepiaMode.RS__linkColor,\n visited: sepiaMode.RS__visitedColor,\n subdue: \"#8c8c8c\",\n disable: \"#8c8c8c\",\n hover: \"#ccb07f\",\n onHover: sepiaMode.RS__textColor,\n select: sepiaMode.RS__selectionBackgroundColor,\n onSelect: sepiaMode.RS__selectionTextColor,\n focus: \"#004099\",\n elevate: \"0px 0px 2px #8c8c8c\",\n immerse: \"0.45\"\n },\n [ThThemeKeys.contrast1]: {\n background: \"#000000\",\n text: \"#ffff00\",\n link: nightMode.RS__linkColor,\n visited: nightMode.RS__visitedColor,\n subdue: \"#808000\",\n disable: \"#808000\",\n hover: \"#404040\",\n onHover: nightMode.RS__textColor,\n select: nightMode.RS__selectionBackgroundColor,\n onSelect: nightMode.RS__selectionTextColor,\n focus: \"#0067f4\",\n elevate: \"0px 0px 2px #808000\",\n immerse: \"0.4\"\n },\n [ThThemeKeys.contrast2]: {\n background: \"#181842\",\n text: \"#ffffff\",\n link: \"#adcfff\",\n visited: \"#7ab2ff\",\n subdue: \"#808080\",\n disable: \"#808080\",\n hover: \"#4444bb\",\n onHover: nightMode.RS__textColor,\n select: nightMode.RS__selectionBackgroundColor,\n onSelect: nightMode.RS__selectionTextColor,\n focus: \"#6BA9FF\",\n elevate: \"0px 0px 2px #808080\",\n immerse: \"0.4\"\n },\n [ThThemeKeys.contrast3]: {\n background: \"#c5e7cd\",\n text: \"#000000\",\n link: sepiaMode.RS__linkColor,\n visited: sepiaMode.RS__visitedColor,\n subdue: \"#8c8c8c\",\n disable: \"#8c8c8c\",\n hover: \"#6fc383\",\n onHover: sepiaMode.RS__textColor,\n select: sepiaMode.RS__selectionBackgroundColor,\n onSelect: sepiaMode.RS__selectionTextColor,\n focus: \"#004099\",\n elevate: \"0px 0px 2px #8c8c8c\",\n immerse: \"0.45\"\n }\n }\n }\n },\n shortcuts: {\n representation: UnstableShortcutRepresentation.symbol,\n joiner: \"+\"\n },\n actions: {\n reflowOrder: [\n ThActionsKeys.settings,\n ThActionsKeys.toc,\n ThActionsKeys.fullscreen,\n ThActionsKeys.jumpToPosition\n ],\n fxlOrder: [\n ThActionsKeys.settings,\n ThActionsKeys.toc,\n ThActionsKeys.fullscreen,\n ThActionsKeys.jumpToPosition\n ],\n collapse: {\n // Number of partially icons to display\n // value \"all\" a keyword for the length of displayOrder above\n // Icons with visibility always are excluded from collapsing\n [ThBreakpoints.compact]: 2,\n [ThBreakpoints.medium]: 3\n }, \n keys: {\n [ThActionsKeys.settings]: {\n visibility: ThCollapsibilityVisibility.partially,\n shortcut: null, // `${ UnstableShortcutMetaKeywords.shift }+${ ShortcutMetaKeywords.alt }+P`,\n sheet: {\n defaultSheet: ThSheetTypes.popover,\n breakpoints: {\n [ThBreakpoints.compact]: ThSheetTypes.bottomSheet\n }\n },\n docked: {\n dockable: ThDockingTypes.none,\n width: 340\n },\n snapped: {\n scrim: true,\n peekHeight: 50,\n minHeight: 30,\n maxHeight: 100\n }\n },\n [ThActionsKeys.fullscreen]: {\n visibility: ThCollapsibilityVisibility.partially,\n shortcut: null\n },\n [ThActionsKeys.toc]: {\n visibility: ThCollapsibilityVisibility.partially,\n shortcut: null, // `${ UnstableShortcutMetaKeywords.shift }+${ ShortcutMetaKeywords.alt }+T`,\n sheet: {\n defaultSheet: ThSheetTypes.popover,\n breakpoints: {\n [ThBreakpoints.compact]: ThSheetTypes.fullscreen,\n [ThBreakpoints.medium]: ThSheetTypes.fullscreen\n }\n },\n docked: {\n dockable: ThDockingTypes.both,\n dragIndicator: false,\n width: 360,\n minWidth: 320,\n maxWidth: 450\n }\n },\n [ThActionsKeys.jumpToPosition]: {\n visibility: ThCollapsibilityVisibility.overflow,\n shortcut: null, // `${ UnstableShortcutMetaKeywords.shift }+${ ShortcutMetaKeywords.alt }+J`,\n sheet: {\n defaultSheet: ThSheetTypes.popover,\n breakpoints: {\n [ThBreakpoints.compact]: ThSheetTypes.bottomSheet\n }\n },\n docked: {\n dockable: ThDockingTypes.none\n },\n snapped: {\n scrim: true,\n minHeight: \"content-height\"\n }\n }\n }\n },\n docking: {\n displayOrder: [\n ThDockingKeys.transient,\n ThDockingKeys.start,\n ThDockingKeys.end\n ],\n dock: {\n [ThBreakpoints.compact]: ThDockingTypes.none,\n [ThBreakpoints.medium]: ThDockingTypes.none,\n [ThBreakpoints.expanded]: ThDockingTypes.start,\n [ThBreakpoints.large]: ThDockingTypes.both,\n [ThBreakpoints.xLarge]: ThDockingTypes.both\n },\n collapse: true,\n keys: {\n [ThDockingKeys.start]: {\n visibility: ThCollapsibilityVisibility.overflow,\n shortcut: null\n },\n [ThDockingKeys.end]: {\n visibility: ThCollapsibilityVisibility.overflow,\n shortcut: null\n },\n [ThDockingKeys.transient]: {\n visibility: ThCollapsibilityVisibility.overflow,\n shortcut: null\n }\n }\n },\n settings: {\n reflowOrder: [\n ThSettingsKeys.zoom,\n ThSettingsKeys.textGroup,\n ThSettingsKeys.theme,\n ThSettingsKeys.spacingGroup,\n ThSettingsKeys.layout,\n ThSettingsKeys.columns\n ],\n fxlOrder: [\n ThSettingsKeys.theme,\n ThSettingsKeys.columns\n ],\n keys: {\n [ThSettingsKeys.lineHeight]: {\n [ThLineHeightOptions.small]: 1.3,\n [ThLineHeightOptions.medium]: 1.5,\n [ThLineHeightOptions.large]: 1.75\n },\n [ThSettingsKeys.zoom]: {\n range: [0.7, 2.5],\n step: 0.05\n }\n },\n text: {\n header: ThSheetHeaderVariant.previous,\n subPanel: [\n ThTextSettingsKeys.fontFamily,\n ThTextSettingsKeys.fontWeight,\n ThTextSettingsKeys.textAlign,\n ThTextSettingsKeys.hyphens,\n ThTextSettingsKeys.textNormalize\n ]\n },\n spacing: {\n header: ThSheetHeaderVariant.previous,\n }\n }\n})","\"use client\";\n\nimport { createContext } from \"react\";\nimport { defaultPreferences } from \"./defaultPreferences\";\nimport { ThPreferences } from \"./preferences\";\n\n// Create a singleton context instance\nexport const ThPreferencesContext = createContext<ThPreferences<any>>(defaultPreferences);","\"use client\";\n\nimport { useEffect } from \"react\";\n\nimport { ThLayoutDirection } from \"./models/enums\";\n\nexport const ThDirectionSetter = ({ \n direction, \n children \n}: { \n direction?: ThLayoutDirection,\n children: React.ReactNode \n}) => {\n \n useEffect(() => {\n if (direction) document.documentElement.dir = direction;\n }, [direction]);\n\n return children;\n};","\"use client\";\n\nimport { useMemo } from \"react\";\nimport { defaultPreferences } from \"./defaultPreferences\";\n\nimport { ThPreferences, CustomizableKeys } from \"./preferences\";\nimport { ThDirectionSetter } from \"./ThDirectionSetter\";\nimport { ThPreferencesContext } from \"./ThPreferencesContext\";\n\nexport function ThPreferencesProvider<T extends Partial<CustomizableKeys>>({\n value,\n children,\n}: {\n value?: ThPreferences<T>;\n children: React.ReactNode;\n}) {\n const contextValue = useMemo(() => {\n return value || defaultPreferences as ThPreferences<T>;\n }, [value]);\n\n return ( \n <ThPreferencesContext.Provider value={ contextValue }>\n <ThDirectionSetter direction={ contextValue.direction }>\n { children }\n </ThDirectionSetter>\n </ThPreferencesContext.Provider>\n );\n}","\"use client\";\n\nimport { ThColorScheme } from \"@/core/Hooks/useColorScheme\";\nimport { ThemeTokens } from \"../hooks/useTheming\";\n\nexport interface buildThemeProps<T extends string> {\n theme?: string;\n themeKeys: { [key in T]?: ThemeTokens },\n systemThemes?: {\n light: T,\n dark: T\n },\n colorScheme?: ThColorScheme;\n}\n\nexport const buildThemeObject = <T extends string>({\n theme,\n themeKeys,\n systemThemes,\n colorScheme\n}: buildThemeProps<T>) => {\n if (!theme) {\n return {};\n }\n\n if (theme === \"auto\" && colorScheme && systemThemes) {\n theme = colorScheme === ThColorScheme.dark ? systemThemes.dark : systemThemes.light;\n }\n\n let themeProps = {};\n\n const themeToken = themeKeys[theme as T];\n if (themeToken) {\n themeProps = {\n backgroundColor: themeToken.background,\n textColor: themeToken.text,\n linkColor: themeToken.link,\n selectionBackgroundColor: themeToken.select,\n selectionTextColor: themeToken.onSelect,\n visitedColor: themeToken.visited\n };\n } else {\n // Fallback if theme doesn't exist\n console.warn(`Theme key \"${String(theme)}\" not found in themeKeys.`);\n themeProps = {\n backgroundColor: null,\n textColor: null,\n linkColor: null,\n selectionBackgroundColor: null,\n selectionTextColor: null,\n visitedColor: null\n };\n }\n\n return themeProps;\n};","\"use client\";\n\nimport { useContext } from \"react\";\nimport { ThPreferencesContext } from \"../ThPreferencesContext\";\n\nexport const usePreferences = () => useContext(ThPreferencesContext);","\"use client\";\n\nimport { CustomizableKeys, CustomKeyType } from \"@/preferences/preferences\";\nimport { usePreferences } from \"./usePreferences\";\nimport { \n ThActionsKeys, \n ThThemeKeys, \n ThSettingsKeys, \n ThTextSettingsKeys, \n ThSpacingSettingsKeys \n} from \"../models/enums\";\n\n/**\n * Hook to safely access and use preference keys with proper type inference\n * This allows components to use the keys as indexes without type errors\n */\nexport function usePreferenceKeys<T extends Partial<CustomizableKeys>>() {\n const preferences = usePreferences();\n \n // Return an object with typed keys for each customizable section\n return {\n reflowActionKeys: preferences.actions.reflowOrder as Array<T[\"actionKeys\"] extends CustomKeyType ? T[\"actionKeys\"] : ThActionsKeys>,\n fxlActionKeys: preferences.actions.fxlOrder as Array<T[\"actionKeys\"] extends CustomKeyType ? T[\"actionKeys\"] : ThActionsKeys>,\n reflowThemeKeys: preferences.theming.themes.reflowOrder as Array<T[\"themeKeys\"] extends CustomKeyType ? T[\"themeKeys\"] | \"auto\" : ThThemeKeys | \"auto\">,\n fxlThemeKeys: preferences.theming.themes.fxlOrder as Array<T[\"themeKeys\"] extends CustomKeyType ? T[\"themeKeys\"] | \"auto\" : ThThemeKeys | \"auto\">,\n reflowSettingsKeys: preferences.settings.reflowOrder as Array<T[\"settingsKeys\"] extends CustomKeyType ? T[\"settingsKeys\"] : ThSettingsKeys>,\n fxlSettingsKeys: preferences.settings.fxlOrder as Array<T[\"settingsKeys\"] extends CustomKeyType ? T[\"settingsKeys\"] : ThSettingsKeys>,\n mainTextSettingsKeys: preferences.settings.text?.main as Array<T[\"textSettingsKeys\"] extends CustomKeyType ? T[\"textSettingsKeys\"] : ThTextSettingsKeys> || [],\n subPanelTextSettingsKeys: preferences.settings.text?.subPanel as Array<T[\"textSettingsKeys\"] extends CustomKeyType ? T[\"textSettingsKeys\"] : ThTextSettingsKeys> || [],\n mainSpacingSettingsKeys: preferences.settings.spacing?.main as Array<T[\"spacingSettingsKeys\"] extends CustomKeyType ? T[\"spacingSettingsKeys\"] : ThSpacingSettingsKeys> || [],\n subPanelSpacingSettingsKeys: preferences.settings.spacing?.subPanel as Array<T[\"spacingSettingsKeys\"] extends CustomKeyType ? T[\"spacingSettingsKeys\"] : ThSpacingSettingsKeys> || [],\n \n // Helper functions that use type assertion with unknown as intermediate step\n asReflowActionKey: <K extends string>(key: K): T[\"actionKeys\"] extends CustomKeyType ? T[\"actionKeys\"] : ThActionsKeys => key as unknown as T[\"actionKeys\"] extends CustomKeyType ? T[\"actionKeys\"] : ThActionsKeys,\n asFxlActionKey: <K extends string>(key: K): T[\"actionKeys\"] extends CustomKeyType ? T[\"actionKeys\"] : ThActionsKeys => key as unknown as T[\"actionKeys\"] extends CustomKeyType ? T[\"actionKeys\"] : ThActionsKeys,\n asReflowThemeKey: <K extends string>(key: K): T[\"themeKeys\"] extends CustomKeyType ? T[\"themeKeys\"] | \"auto\" : ThThemeKeys | \"auto\" => key as unknown as T[\"themeKeys\"] extends CustomKeyType ? T[\"themeKeys\"] | \"auto\" : ThThemeKeys | \"auto\",\n asFxlThemeKey: <K extends string>(key: K): T[\"themeKeys\"] extends CustomKeyType ? T[\"themeKeys\"] | \"auto\" : ThThemeKeys | \"auto\" => key as unknown as T[\"themeKeys\"] extends CustomKeyType ? T[\"themeKeys\"] | \"auto\" : ThThemeKeys | \"auto\",\n asReflowSettingsKey: <K extends string>(key: K): T[\"settingsKeys\"] extends CustomKeyType ? T[\"settingsKeys\"] : ThSettingsKeys => key as unknown as T[\"settingsKeys\"] extends CustomKeyType ? T[\"settingsKeys\"] : ThSettingsKeys,\n asFxlSettingsKey: <K extends string>(key: K): T[\"settingsKeys\"] extends CustomKeyType ? T[\"settingsKeys\"] : ThSettingsKeys => key as unknown as T[\"settingsKeys\"] extends CustomKeyType ? T[\"settingsKeys\"] : ThSettingsKeys,\n asMainTextSettingsKey: <K extends string>(key: K): T[\"textSettingsKeys\"] extends CustomKeyType ? T[\"textSettingsKeys\"] : ThTextSettingsKeys => key as unknown as T[\"textSettingsKeys\"] extends CustomKeyType ? T[\"textSettingsKeys\"] : ThTextSettingsKeys,\n asSubPanelTextSettingsKey: <K extends string>(key: K): T[\"textSettingsKeys\"] extends CustomKeyType ? T[\"textSettingsKeys\"] : ThTextSettingsKeys => key as unknown as T[\"textSettingsKeys\"] extends CustomKeyType ? T[\"textSettingsKeys\"] : ThTextSettingsKeys,\n asMainSpacingSettingsKey: <K extends string>(key: K): T[\"spacingSettingsKeys\"] extends CustomKeyType ? T[\"spacingSettingsKeys\"] : ThSpacingSettingsKeys => key as unknown as T[\"spacingSettingsKeys\"] extends CustomKeyType ? T[\"spacingSettingsKeys\"] : ThSpacingSettingsKeys,\n asSubPanelSpacingSettingsKey: <K extends string>(key: K): T[\"spacingSettingsKeys\"] extends CustomKeyType ? T[\"spacingSettingsKeys\"] : ThSpacingSettingsKeys => key as unknown as T[\"spacingSettingsKeys\"] extends CustomKeyType ? T[\"spacingSettingsKeys\"] : ThSpacingSettingsKeys,\n };\n}","\"use client\";\n\nimport { useCallback, useEffect, useRef } from \"react\";\n\nimport { CSSColor } from \"../CSSValues\";\n\nimport { ThBreakpoints } from \"../models/enums\";\nimport { BreakpointsMap, useBreakpoints } from \"@/core/Hooks/useBreakpoints\";\nimport { useReducedMotion } from \"@/core/Hooks/useReducedMotion\";\nimport { useReducedTransparency } from \"@/core/Hooks/useReducedTransparency\";\nimport { ThColorScheme, useColorScheme } from \"@/core/Hooks/useColorScheme\";\nimport { ThContrast, useContrast } from \"@/core/Hooks/useContrast\";\nimport { useForcedColors } from \"@/core/Hooks/useForcedColors\";\nimport { useMonochrome } from \"@/core/Hooks/useMonochrome\";\n\nimport { propsToCSSVars } from \"@/core/Helpers/propsToCSSVars\";\n\nexport interface ThemeTokens {\n background: CSSColor;\n text: CSSColor;\n link: CSSColor;\n visited: CSSColor;\n subdue: CSSColor;\n disable: CSSColor;\n hover: CSSColor;\n onHover: CSSColor;\n select: CSSColor;\n onSelect: CSSColor;\n focus: CSSColor;\n elevate: string;\n immerse: string;\n};\n\nexport interface useThemingProps<T extends string> {\n theme?: string;\n themeKeys: { [key in T]?: ThemeTokens };\n systemKeys?: {\n light: T;\n dark: T;\n };\n breakpointsMap: BreakpointsMap<number | null>;\n initProps?: Record<string, any>;\n onBreakpointChange?: (breakpoint: ThBreakpoints | null) => void;\n onColorSchemeChange?: (colorScheme: ThColorScheme) => void;\n onContrastChange?: (contrast: ThContrast) => void;\n onForcedColorsChange?: (forcedColors: boolean) => void;\n onMonochromeChange?: (isMonochrome: boolean) => void;\n onReducedMotionChange?: (reducedMotion: boolean) => void;\n onReducedTransparencyChange?: (reducedTransparency: boolean) => void; \n}\n\n// Takes care of the init of theming and side effects on :root/html\n// Reader still has to handle the side effects on Navigator\nexport const useTheming = <T extends string>({\n theme,\n systemKeys,\n themeKeys,\n breakpointsMap,\n initProps,\n onBreakpointChange,\n onColorSchemeChange,\n onContrastChange,\n onForcedColorsChange,\n onMonochromeChange,\n onReducedMotionChange,\n onReducedTransparencyChange,\n}: useThemingProps<T>) => {\n const breakpoints = useBreakpoints(breakpointsMap, onBreakpointChange);\n const colorScheme = useColorScheme(onColorSchemeChange);\n const colorSchemeRef = useRef(colorScheme);\n const contrast = useContrast(onContrastChange);\n const forcedColors = useForcedColors(onForcedColorsChange);\n const monochrome = useMonochrome(onMonochromeChange);\n const reducedMotion = useReducedMotion(onReducedMotionChange);\n const reducedTransparency = useReducedTransparency(onReducedTransparencyChange);\n\n const inferThemeAuto = useCallback(() => {\n return colorSchemeRef.current === ThColorScheme.dark ? systemKeys?.dark : systemKeys?.light;\n }, [systemKeys]);\n\n const initThemingCustomProps = useCallback(() => {\n for (let p in initProps) {\n document.documentElement.style.setProperty(p, initProps[p])\n }\n }, [initProps]);\n\n const setThemeCustomProps = useCallback((t?: string) => {\n if (!t) {\n return;\n }\n\n if (t === \"auto\") {\n const autoTheme = inferThemeAuto();\n if (!autoTheme) {\n // We are not removing properties cos iframes won’t update\n // Removing here would consequently create a theme inconsistency\n // between the iframe and the main window\n return;\n }\n t = autoTheme;\n }\n \n const themeTokens = themeKeys[t as T];\n if (!themeTokens) {\n // We are not removing properties cos iframes won’t update\n // Removing here would consequently create a theme inconsistency\n // between the iframe and the main window\n return;\n }\n \n const props = propsToCSSVars(themeTokens, \"theme\");\n \n for (let p in props) {\n document.documentElement.style.setProperty(p, props[p])\n }\n }, [inferThemeAuto, themeKeys]);\n\n // On mount add custom props to :root/html\n useEffect(() => {\n initThemingCustomProps();\n }, [initThemingCustomProps]);\n\n // Update theme custom props\n useEffect(() => {\n colorSchemeRef.current = colorScheme;\n setThemeCustomProps(theme);\n }, [setThemeCustomProps, theme, colorScheme]);\n\n return {\n inferThemeAuto,\n theme, \n breakpoints,\n colorScheme,\n contrast, \n forcedColors, \n monochrome, \n reducedMotion, \n reducedTransparency\n }\n}"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/preferences/models/enums.ts"],"names":["ThLayoutUI","ThActionsKeys","ThBreakpoints","ThDockingKeys","ThDockingTypes","ThScrollBackTo","ThSettingsKeys","ThTextSettingsKeys","ThScrollAffordancePref","ThSpacingSettingsKeys","ThSettingsContainerKeys","ThSettingsRangeVariant","ThSheetTypes","ThSheetHeaderVariant","ThThemeKeys","ThLayoutDirection","ThLayoutStrategy","ThLayoutOptions","ThTextAlignOptions","ThLineHeightOptions"],"mappings":"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","file":"chunk-TWGRY5SW.mjs","sourcesContent":["\"use client\";\n\nexport enum ThLayoutUI {\n stacked = \"stacked-ui\",\n layered = \"layered-ui\"\n}\n\nexport enum ThActionsKeys {\n fullscreen = \"fullscreen\",\n jumpToPosition = \"jumpToPosition\",\n settings = \"settings\",\n toc = \"toc\"\n}\n\nexport enum ThBreakpoints {\n compact = \"compact\",\n medium = \"medium\",\n expanded = \"expanded\",\n large = \"large\",\n xLarge = \"xLarge\"\n}\n\nexport enum ThDockingKeys {\n start = \"dockingStart\",\n end = \"dockingEnd\",\n transient = \"dockingTransient\"\n}\n\nexport enum ThDockingTypes {\n none = \"none\",\n both = \"both\",\n start = \"start\",\n end = \"end\"\n}\n\nexport enum ThScrollBackTo {\n top = \"top\",\n bottom = \"bottom\",\n untouched = \"untouched\"\n}\n\nexport enum ThSettingsKeys {\n columns = \"columns\",\n fontFamily = \"fontFamily\",\n fontWeight = \"fontWeight\",\n hyphens = \"hyphens\",\n layout = \"layout\",\n letterSpacing = \"letterSpacing\",\n lineHeight = \"lineHeight\",\n paragraphIndent = \"paragraphIndent\",\n paragraphSpacing = \"paragraphSpacing\",\n publisherStyles = \"publisherStyles\",\n spacingGroup = \"spacingGroup\",\n textAlign = \"textAlign\",\n textGroup = \"textGroup\",\n textNormalize = \"textNormalize\",\n theme = \"theme\",\n wordSpacing = \"wordSpacing\",\n zoom = \"zoom\"\n}\n\nexport enum ThTextSettingsKeys {\n fontFamily = \"fontFamily\",\n fontWeight = \"fontWeight\",\n hyphens = \"hyphens\",\n textAlign = \"textAlign\",\n textNormalize = \"textNormalize\"\n}\n\nexport enum ThScrollAffordancePref {\n none = \"none\",\n prev = \"previous\",\n next = \"next\",\n both = \"both\"\n}\n\nexport interface ScrollAffordanceConfig {\n pref: ThScrollAffordancePref;\n placement: \"top\" | \"bottom\";\n className?: string;\n styleSheetContent?: string;\n}\n\nexport enum ThSpacingSettingsKeys {\n letterSpacing = \"letterSpacing\",\n lineHeight = \"lineHeight\",\n paragraphIndent = \"paragraphIndent\",\n paragraphSpacing = \"paragraphSpacing\",\n publisherStyles = \"publisherStyles\",\n wordSpacing = \"wordSpacing\"\n}\n\nexport enum ThSettingsContainerKeys {\n initial = \"initial\",\n text = \"text\",\n spacing = \"spacing\"\n}\n\nexport enum ThSettingsRangeVariant {\n slider = \"slider\",\n numberField = \"numberField\"\n}\n\nexport enum ThSheetTypes {\n popover = \"popover\",\n fullscreen = \"fullscreen\",\n dockedStart = \"docked start\",\n dockedEnd = \"docked end\",\n bottomSheet = \"bottomSheet\"\n}\n\nexport enum ThSheetHeaderVariant {\n close = \"close\",\n previous = \"previous\"\n}\n\nexport enum ThThemeKeys {\n light = \"light\",\n sepia = \"sepia\",\n dark = \"dark\",\n paper = \"paper\",\n contrast1 = \"contrast1\",\n contrast2 = \"contrast2\",\n contrast3 = \"contrast3\"\n}\n\nexport enum ThLayoutDirection {\n rtl = \"rtl\",\n ltr = \"ltr\"\n}\n\nexport enum ThLayoutStrategy {\n margin = \"margin\",\n lineLength = \"lineLength\",\n columns = \"columns\"\n}\n\nexport enum ThLayoutOptions { \n scroll = \"scroll_option\",\n paginated = \"page_option\"\n}\n\nexport enum ThTextAlignOptions {\n publisher = \"publisher\",\n start = \"start\",\n justify = \"justify\"\n}\n\nexport enum ThLineHeightOptions {\n publisher = \"publisher\",\n small = \"small\",\n medium = \"medium\",\n large = \"large\"\n}"]}